PGh0bWw+CjxoZWFkPgo8dGl0bGU+VGhlIEFwYWNoZS9QZXJsIE1vZHVsZSBMaXN0PC90aXRsZT4KPC9oZWFkPgo8Ym9keT4KPGgxPlRoZSBBcGFjaGUvUGVybCBNb2R1bGUgTGlzdDwvaDE+CgpNYWludGFpbmVkIGJ5IDxhIGhyZWY9Im1haWx0bzpkb3VnbUBwb2JveC5jb20iPkRvdWcgTWFjRWFjaGVybjwvYT4sCjxicj48aT4gJFJldmlzaW9uJCAkRGF0ZSQ8L2k+Cgo8aDM+Q29udGVudHM8L2gzPgo8YSBocmVmPSIjaW50cm8iPkludHJvZHVjdGlvbjwvYT48YnI+CjxhIGhyZWY9IiNwYXJ0Ij5QbGF5aW5nIFlvdXIgUGFydDwvYT48YnI+CjxhIGhyZWY9IiNtb2R1bGVzIj5UaGUgQXBhY2hlL1BlcmwgTW9kdWxlczwvYT48YnI+CjxhIGhyZWY9IiN3aGVyZSI+V2hlcmUgQXJlIFRoZSBNb2R1bGVzIEtlcHQ/PC9hPjxicj4KPGEgaHJlZj0iI2NvbnRhY3RzIj5Db250YWN0czwvYT48YnI+CjxhIGhyZWY9IiNpbmZvIj5Nb3JlIEluZm88L2E+PGJyPgo8cD4KPGgzPjxhIG5hbWU9ImludHJvIj5JbnRyb2R1Y3Rpb248L2E+PC9oMz4KVGhlIEFwYWNoZS9QZXJsIG1vZHVsZSBsaXN0IGlzIGhlcmUgZm9yIHRoZSBzYW1lIHJlYXNvbiBhcyB0aGUKbWFpbiA8YSBocmVmPSJodHRwOi8vd3d3LnBlcmwuY29tL0NQQU4vbW9kdWxlcy8wMG1vZGxpc3QubG9uZy5odG1sIj4KUGVybCBtb2R1bGUgbGlzdDwvYT4sIHRvIGNoYW5nZSBkdXBsaWNhdGlvbiBvZiBlZmZvcnQgaW50byBjb29wZXJhdGlvbiAKYW5kIGhlbHAgdG8gc2F2ZSB0aGUgd29ybGQhICBBcGFjaGUvUGVybCBtb2R1bGVzIGFyZSBzb21ld2hhdCBkaWZmZXJlbnQKZnJvbSB0aGUgbWFueSBvdGhlcnMgZm91bmQgb24gQ1BBTi4gIE1vc3QgUGVybCBtb2R1bGVzIGFyZQoiYnVpbGRpbmcgYmxvY2tzIiwgZGV2ZWxvcGVycyB1c2UgdGhlbQp0byBidWlsZCBhcHBsaWNhdGlvbnMgb3IgZXZlbiBtb3JlIGJ1aWxkaW5nIGJsb2Nrcy4gIApJdCBqdXN0IHNvIGhhcHBlbnMKdGhhdCBBcGFjaGUvUGVybCBtb2R1bGVzIGFyZSBlbmNhcHN1bHRlZCBpbnNpZGUgYSBuYW1lc3BhY2UgYW5kIC5wbSBmaWxlLiAgCkhvd2V2ZXIsIHRoaXMgZG9lcyBub3QgbWFrZSB0aGVtIGFsbCBidWlsZGluZyBibG9ja3MsIG1hbnkgYXJlIGp1c3QgbGlrZQphcGFjaGUgbW9kdWxlcyB3cml0dGVuIGluIEMsIHlvdSBpbnN0YWxsLCBlZGl0IHRoZSBzZXJ2ZXIgY29uZmlndXJhdGlvbgpmaWxlcyBhbmQgeW91J3JlIGRvbmUuICAgQmVmb3JlIHlvdSBzdGFydCBhIG5ldyBtb2R1bGUsIGNvbnNpZGVyIHRoaXM6CkFwYWNoZS9QZXJsIG1vZHVsZXMgYXJlIHVzZWxlc3Mgb3V0c2lkZSBvZiBtb2RfcGVybCBhbmQgQXBhY2hlLiAgRG8geW91ciBiZXN0CnRvIGRlc2lnbiBzdWNoIHRoYXQgeW91ciA8Yj5BcGFjaGU6Oio8L2I+IG1vZHVsZSB3aWxsIG1ha2UgZ29vZCB1c2Ugb2YgdGhlIApidWlsZGluZyBibG9ja3MgZm91bmQgb24gQ1BBTiwgcHV0dGluZyB0b2dldGhlciBuZXcgYnVpbGRpbmcgYmxvY2tzIHdoZXJlCmFwcHJvcHJpYXRlIGFuZCBzaW1wbHkgZ2x1ZSB0aGVtIHRvZ2V0aGVyIHdpdGggdGhlIEFwYWNoZQpBUEksIGtlZXBpbmcgdGhlIDxiPkFwYWNoZTo6KjwvYj4gbW9kdWxlcyB2ZXJ5IHNtYWxsLgo8cD4KVGhlc2UgbW9kdWxlcyB3aWxsIGFsc28gc2VydmUgYXMgZ29vZCBleGFtcGxlcywgc2hvd2luZyB5b3Ugd2hlcmUgbW9kdWxlcwpjYW4gc3RlcCBpbiBkdXJpbmcgYSBzdGFnZSBvZiBhIHJlcXVlc3Qgd2l0aCA8Yj5QZXJsKkhhbmRsZXI8L2I+IGNhbGxiYWNrcy4KWW91J2xsIGFsc28gc2VlIGhvdyBhbmQgd2hlbiB0byB1c2UgdGhlIEFwYWNoZSBBUEkgbWV0aG9kcy4KCjxoMz48YSBuYW1lPSJwYXJ0Ij5QbGF5aW5nIFlvdXIgUGFydDwvYT48L2gzPgpBcGFjaGUgYW5kIFBlcmwgYXJlIHdvcmxkLXdpZGUgY29sbGFib3JhdGl2ZSBlZmZvcnRzLCBuYXR1cmFsbHksIHRoZSAKQXBhY2hlL1BlcmwgaW50ZWdyYXRpb24gcHJvamVjdCBpcyB0aGUgc2FtZS48YnI+CllvdSd2ZSBzdGFydGVkIG9uIHRoZSByaWdodCBmb290IHNpbXBseSBieSByZWFkaW5nIHRoaXMgZG9jdW1lbnQsIHRoYW5rcyE8YnI+ClBsZWFzZSBiZSBzdXJlIHlvdSd2ZSByZWFkIHRoZSAKbWFpbiA8YSBocmVmPSJodHRwOi8vd3d3LnBlcmwuY29tL0NQQU4vbW9kdWxlcy8wMG1vZGxpc3QubG9uZy5odG1sIj4KUGVybCBtb2R1bGUgbGlzdDwvYT4sIGFsbCB0aGF0IGlzIHNhaWQgdGhlcmUgaXMgcmVsZXZhbnQgaGVyZSEKPHA+CklmIHlvdSBoYXZlIGFueSBhZGRpdGlvbnMgb3IgY2hhbmdlcyBmb3IgdGhlIGxpc3QsIHBsZWFzZSBzZW5kIHRoZW0gdG8KdGhlIEFwYWNoZS9QZXJsIDxhIGhyZWY9Im1haWx0bzptb2RwZXJsQHBlcmwuYXBhY2hlLm9yZyI+IG1haWxpbmcgbGlzdCA8L2E+Cm9yIHRvIDxhIGhyZWY9Im1haWx0bzpkb3VnbUBwb2JveC5jb20iPm1lPC9hPi4gIAo8cD4KSWYgeW91IHdpc2ggdG8gc2hhcmUgeW91IG1vZHVsZShzKSB0aGUgUGVybCB3YXksIGJ5IHB1dHRpbmcgdGhlbSBvbiBDUEFOLApzZW5kIGEgcmVxdWVzdCB0byA8YSBocmVmPSJtYWlsdG86ZG91Z21AcG9ib3guY29tIj5tZTwvYT4gb3IgCjxhIGhyZWY9Im1haWx0bzptb2R1bGVzQHBlcmwub3JnIj5tb2R1bGVzQHBlcmwub3JnPC9hPiB0byBnZXQgc2V0IHVwIHdpdGggYQpQQVVTRSB1c2VyIGlkIGFuZCBkaXJlY3RvcnkuCjxwPgo8Yj5ISU5UPC9iPjogIEZvciBhIG5pY2Ugc2V0IG9mIHRlbXBsYXRlIGZpbGVzIHRyeSB0aGlzOgo8cHJlPgolIGgyeHMgLUFYIC1uIEFwYWNoZTo6WW91clBhY2thZ2VOYW1lCjwvcHJlPgoKPGgzPjxhIG5hbWU9Im1vZHVsZXMiPlRoZSBBcGFjaGUvUGVybCBtb2R1bGVzPC9hPjwvaDM+CjxwcmU+CkFwYWNoZTo6CgoqIFBlcmxIYW5kbGVyJ3MKQWRkck11bmdlCWJkcGYJTXVuZ2UgZW1haWwgYWRkcmVzc2VzIGluIHdlYnBhZ2VzCU1KRApBdXRvSW5kZXgJUmRjZglMaXN0cyBkaXJlY3RvcnkgY29udGVudAkJCUdPWkVSCkFyY2hpdmUJCWJkcGYJTWFrZSBsaW5rZWQgY29udGVudHMgcGFnZXMgb2YgLnRhciguZ3opIEpQRVRFUlNPTgo8YSBocmVmPSJodHRwOi8vd3d3Lm5vZGV3b3Jrcy5jb20vYXNwLyI+QVNQPC9hPgkJYmRwTwlJbXBsZW1lbnQgQWN0aXZlIFNlcnZlciBQYWdlcwkJQ0hBTUFTCkJCUwkJY2RwTyAJQkJTIGxpa2UgU3lzdGVtIGZvciBBcGFjaGUJCU1LT1NTCkNhbGxIYW5kbGVyCWNkcGYJTWFwIGZpbGVuYW1lcyB0byBzdWJyb3V0aW5lIGNhbGxzCUdLTk9QUwpDYWNoZXQJCWkJT3V0cHV0Q2hhaW4gd2l0aCBjYWNoaW5nCQlNRVJMWU4KQ29tcHJlc3MJYmRwTwlDb21wcmVzcyBjb250ZW50IG9uIHRoZSBmbHkJCUtXSUxMSUFNCkRpcgkJaQlPTyAoc3ViY2xhc3NhYmxlKSBtb2RfZGlyIHJlcGxhY2VtZW50IAlET1VHTQpEaXNwYXRjaCAgICAgICAgYm1wZiAgICBDYWxsIFBlcmxIYW5kbGVycyBhcyBDR0kgc2NyaXB0cyAgICAgICAgR0VPRkYKPGEgaHJlZj0iaHR0cDovL3BlcmwuYXBhY2hlLm9yZy9lbWJwZXJsLyI+RW1icGVybDwvYT4JCVJtY2YJRW1iZWQgUGVybCBpbiBIVE1MCQkJR1JJQ0hURVIKRW1icGVybENoYWluCWJkcE8JRmVlZCBoYW5kbGVyIG91dHB1dCB0byBFbWJwZXJsCQlDSE9MRVQKZVBlcmwJCVJkcHIgIAlGYXN0IGVtdWxhdGVkIEVtYmVkZGVkIFBlcmwgKGVQZXJsKQlSU0UgICAgICAgICAgICAKRmlsdGVyCQlSZHBPCU91dHB1dENoYWluIGxpa2UgZnVuY3Rpb25hbGl0eQkJS1dJTExJQU0KRm9yd2FyZAkJYmRwTwlPdXRwdXRDaGFpbiBsaWtlIGZ1bmN0aW9uYWxpdHkJCU1QQgpGVFAJCWkJRnVsbC1mbGVkZ2VkIEZUUCBwcm94eQkJCVBNS0FORQpHYXRld2F5CQliZHBmCUEgbXVsdGlwbGV4aW5nIGdhdGV3YXkJCQlDQ1dGCkd6aXBDaGFpbglibXBmCUNvbXByZXNzIGZpbGVzIG9uIHRoZSBmbHkJCUFOREsKaU5jb20JCWJkcGYJQW4gZS1jb21tZXJjZSBmcmFtZXdvcmsJCQlGUkFKVUxBQwpMYXllcgkJYmRwZglMYXllciBjb250ZW50IHRyZWUgb3ZlciBvbmUgb3IgbW9yZQlTQU0KTWFnaWNrCQliZHBmCUltYWdlIGNvbnZlcnNpb24gb24tdGhlLWZseQkJTVBCCjxhIGhyZWY9Imh0dHA6Ly93d3cubWFzb25ocS5jb20iPk1hc29uPC9hPgkJYmRwTwlCdWlsZCBzaXRlcyB3LyBtb2R1bGFyIFBlcmwvSFRNTCBibG9ja3MJSlNXQVJUWgpNb2R1bGVEb2MJYmRwZglTZWxmIGRvY3VtZW50YXRpb24gZm9yIEFwYWNoZSBDIG1vZHVsZXMJRE9VR00KTmF2QmFyCQliZHBPCU5hdmlnYXRpb24gYmFyIGdlbmVyYXRvcgkJTVBCCk5OVFBHYXRld2F5CWFkcGYJQSBXZWIgYmFzZWQgTk5UUCAodXNlbmV0KSBpbnRlcmZhY2UJQk9VQkFLRVIKT3V0cHV0Q2hhaW4gICAgIGJtcE8JQ2hhaW4gb3V0cHV0IG9mIHN0YWNrZWQgaGFuZGxlcnMJSkFOUEFaCk9XQQkJYmRwZglSdW5zIE9yYWNsZSBQTC9TUUwgV2ViIFRvb2xraXQgYXBwcwlTVklOVE8KUGFnZUtpdCAgICAgICAgIGFtcE8gICAgQXBwbGljYXRpb24gZnJhbWV3b3JrIHcvIEhUTUw6OlRlbXBsYXRlIFRKTUFUSEVSClBhc3NGaWxlCWJkcGYJU2VuZCBmaWxlIHZpYSBPdXRwdXRDaGFpbgkJQU5ESwpQZXJsUnVuCQlTbXBmCVJ1biB1bmFsdGVyZWQgQ0dJIHNjcmlwdHMJCUFQTUwKUHJldHR5UGVybCAgICAgIFJkcGYgICAgU3ludGF4IGhpZ2hsaWdodGluZyBmb3IgUGVybCBmaWxlcwlSQQpQcmV0dHlUZXh0CWJkcGYJUmUtZm9ybWF0IC50eHQgZmlsZXMgZm9yIGNsaWVudCBkaXNwbGF5CUNIVEhPUk1BTgpSYW5kb21Mb2NhdGlvbgliZHBmCVJhbmRvbSBpbWFnZSBkaXNwbGF5IAkJCVJLT0JFUwpSZWdpc3RyeQlTbXBmCVJ1biB1bmFsdGVyZWQgQ0dJIHNjcmlwdHMgCQlBUE1MClJvYm90UnVsZXMJY2RwZglFbmZvcmNlIHJvYm90IHJ1bGVzIChyb2JvdHMudHh0KQlQQVJLRVIKU2FuZHdpY2gJYm1wZglMYXllcmVkIGRvY3VtZW50IChzYW5kd2ljaCkgbWFrZXIJVktIRVJBClNob3dSZXF1ZXN0CWJkcGYJU2hvdyBwaGFzZXMgYW5kIG1vZHVsZSBwYXJ0aWNpcGF0aW9uCURPVUdNClNpbXBsZVJlcGxhY2UgICBhbXBmICAgIFNpbXBsZSByZXBsYWNlbWVudCB0ZW1wbGF0ZSB0b29sICAgICAgICBHRU9GRgpTU0kJCVJtcE8JSW1wbGVtZW50IHNlcnZlci1zaWRlIGluY2x1ZGVzIGluIFBlcmwJS1dJTExJQU0KU1NJQ2hhaW4JYm1wTwlTU0kgb24gb3RoZXIgbW9kdWxlcyBvdXRwdXQJCUpBTlBBWgpTdGFnZQkJUmRwZglNYW5hZ2UgYSBkb2N1bWVudCBzdGFnaW5nIGRpcmVjdG9yeQlBTkRLClRhckd6aXAJCWMJCQkJCQlaRU5JTgpUaW1lZFJlZGlyZWN0CWJkcGYJUmVkaXJlY3QgdXJscyBmb3IgYSBnaXZlbiB0aW1lIHBlcmlvZAlQRVRFUk0gClVwbG9hZFN2cgliZHBPCUEgbGlnaHR3ZWlnaHQgcHVibGlzaGluZyBzeXN0ZW0JCUFOREsKVmhvc3RTYW5kd2ljaCAgY2RwZiAgICBWaXJ0dWFsIGhvc3QgbGF5ZXJlZCBkb2N1bWVudCBtYWtlciAgICAgTUFSS0MKV0RCCQliZHBmCURhdGFiYXNlIHF1ZXJ5L2VkaXQgdG9vbCB1c2luZyBEQkkJSlJPV0UKV2ViU1FMCQljZHBPCUFkYXB0YXRpb24gb2YgU3liYXNlJ3MgV2ViU1FMCQlHVU5USEVSCgoqIFBlcmxJbml0SGFuZGxlcidzClJlcXVlc3ROb3RlcyAgICBhbXBmICAgIFBhc3MgY29va2llICYgZm9ybSBkYXRhIGFyb3VuZCBwbm90ZXMgICBHRU9GRgoKKiBQZXJsSGVhZGVyUGFyc2VySGFuZGxlcidzCkFnZW50RGVueQljZHBmCURlbnkgYWJ1c2l2ZSBVc2VyLUFnZW50cwkJUk9CSAoKKiBQZXJsQXV0aGVuSGFuZGxlcidzCkF1dGhBbnkJCWJkcGYJQXV0aGVudGljYXRlIHdpdGggYW55IHVzZXJuYW1lL3Bhc3N3b3JkCU1QQgpBdXRoZW5DYWNoZQlibXBmCUNhY2hlIGF1dGhlbnRpY2F0aW9uIGNyZWRlbnRpYWxzCUpCT0ROQVIKQXV0aENvb2tpZQlSZHBPCUF1dGhlbiArIEF1dGh6IHZpYSBjb29raWVzCQlLV0lMTElBTQpBdXRoZW5EQkkJYm1wTwlBdXRoZW50aWNhdGUgdmlhIFBlcmwncyBEQkkJCU1FUkdMCkF1dGhlbkdTUwljZHBmICAgIEdlbmVyaWMgU2VjdXJpdHkgU2VydmljZSAoUkZDIDIwNzgpCURPVUdNCkF1dGhlbklNQVAJYmRwZglBdXRoZW50aWNhdGlvbiB2aWEgYW4gSU1BUCBzZXJ2ZXIJTUlDQgpBdXRoZW5QYXNzd2RTcnYgYmRwZglFeHRlcm5hbCBhdXRoZW50aWNhdGlvbiBzZXJ2ZXIJCUpFRkZICkF1dGhlblBhc3N3ZAliZHBmCUF1dGhlbnRpY2F0ZSBhZ2FpbnN0IC9ldGMvcGFzc3dkCURFUApBdXRoTERBUAliZHBmCUxEQVAgYXV0aGVudGljYXRpb24gbW9kdWxlCQlDRE9OTEVZCkF1dGhQZXJMREFQCWJkcGYJTERBUCBhdXRoZW50aWNhdGlvbiBtb2R1bGUgKFBlckxEQVApCUhFTlJJSwpBdXRoZW5OSVMJYmRwZglOSVMgYXV0aGVudGljYXRpb24JCQlERVAKQXV0aE5JU1BsdXMJYmRwRglOSVMgUGx1cyBhdXRoZW50aWNhdGlvbi9hdXRob3JpemF0aW9uCVZBTEVSSUUKQXV0aGVuUmFkdWlzCWJkcGYJQXV0aGVudGljYXRpb24gdmlhIGEgUmFkaXVzIHNlcnZlcglEQU5JRUwKQXV0aGVuU21iCWJkcGYJQXV0aGVudGljYXRlIGFnYWluc3QgTlQgc2VydmVyCQlQQVJLRVIKQXV0aGVuVVJMCWJkcGYJQXV0aGVudGljYXRlIHZpYSBhbm90aGVyIFVSTAkJSkdST0VOVkVMCkRCSUxvZ2luCWJkcGYJQXV0aGVudGljYXRlIHRvIGJhY2tlbmQgZGF0YWJhc2UgCUpHUk9FTlZFTApEQ0VMb2dpbgliZHBmCU9idGFpbiBhIERDRSBsb2dpbiBjb250ZXh0CQlET1VHTQpQSExvZ2luCQliZHBmCUF1dGhlbnRpY2F0ZSB2aWEgYSBQSCBkYXRhYmFzZQkJSkdST0VOVkVMClRpY2tldEFjY2VzcwliZHBPCVRpY2tldCBiYXNlZCBhY2Nlc3MvYXV0aGVudGljYXRpb24JTVBCCgoqIFBlcmxBdXRoekhhbmRsZXIncwpBdXRoQ29va2llCWJkcGYJQXV0aGVuICsgQXV0aHogdmlhIGNvb2tpZXMJCUVCQVJUTEVZCkF1dGh6QWdlCWJtcGYJQXV0aG9yaXplIGJhc2VkIG9uIGFnZQkJCUFQTUwKQXV0aHpEQ0UJY2RwZglERlMvRENFIEFDTCBiYXNlZCBhY2Nlc3MgY29udHJvbAlET1VHTQpBdXRoekRCSQlibXBPCUdyb3VwIGF1dGhvcml6YXRpb24gdmlhIFBlcmwncyBEQkkJTUVSR0wKQXV0aHpHZW5kZXIJYmRwZglBdXRob3JpemUgYmFzZWQgb24gZ2VuZGVyCQlNUEIKQXV0aHpOSVMJYmRwZglOSVMgYXV0aG9yaXphdGlvbgkJCURFUApBdXRoelBhc3N3ZAliZHBmCUF1dGhvcml6ZSBhZ2FpbnN0IC9ldGMvcGFzc3dkCQlERVAKQXV0aHpTU0wJYmRwZglBdXRob3JpemUgYmFzZWQgb24gY2xpZW50IGNlcnQJCU1QQgpSb2xlQXV0aHoJaQlSb2xlLWJhc2VkIGF1dGhvcml6YXRpb24JCURPVUdNCgoqIFBlcmxBY2Nlc3NIYW5kbGVyJ3MKQWNjZXNzTGltaXROdW0JYm1wZglMaW1pdCB1c2VyIGFjY2VzcyBieSBudW1iZXIgb2YgcmVxdWVzdHMJQVBNTApCbG9ja0FnZW50CWJkcGYJQmxvY2sgYWNjZXNzIGZyb20gY2VydGFpbiBhZ2VudHMJTVBCCkRheUxpbWl0CWJtcGYJTGltaXQgYWNjZXNzIGJhc2VkIG9uIGRheSBvZiB3ZWVrCU1QQgpJUFRocm90dGxlCWNkcGYJTGltaXQgYmFuZHdpdGggY29uc3VtcHRpb24gYnkgSVAJTUVSTFlOClJvYm90TGltaXQJY2RwZglMaW1pdCBhY2Nlc3Mgb2Ygcm9ib3RzCQkJUEFSS0VSClNwZWVkTGltaXQJYmRwZglDb250cm9sIGNsaWVudCByZXF1ZXN0IHJhdGUJCU1QQgoKKiBQZXJsVHlwZUhhbmRsZXIncwpBY2NlcHRMYW5ndWFnZQljZHBmCVNlbmQgZmlsZSB0eXBlIGJhc2VkIG9uIGxhbmd1YWdlIHByZWYJUk9CSApNSU1FCQliZGNmCVBlcmwgaW1wbGVtZW50YXRpb24gb2YgbW9kX21pbWUJCU1QQgpNaW1lREJJCQliZHBmCVR5cGUgbWFwcGluZyBmcm9tIGEgREJJIGRhdGFiYXNlCU1QQgpNaW1lWE1MCQliZHBmCW1pbWUgZW5jb2Rpbmcgc25pZmZlciBmb3IgWE1MIGZpbGVzCU1TRVJHRUFOVAogCiogUGVybFRyYW5zSGFuZGxlcidzICAgIChNYXkgYWxzbyBpbmNsdWRlIGEgUGVybEhhbmRsZXIpCkFkQmxvY2tlcgliZHBmCUJsb2NrIGFkdmVydGlzZW1lbnQgaW1hZ2VzCQlNUEIKQWRkSG9zdFBhdGgJYWRwZiAgICBQcmVwZW5kcyBwYXJ0cyBvZiBob3N0bmFtZSB0byBVUkkgICAgICAgUkpFTktTCkFub25Qcm94eQliZHBmCUFub255bWl6aW5nIHByb3h5CQkJTVBCCkNoZWNrc3VtCWJkcGYJTWFuYWdlIGRvY3VtZW50IGNoZWNrc3VtIHRyZWVzCQlNUEIKRHluYVJQQwkJaQlEeW5hbWljYWxseSB0cmFuc2xhdGUgVVJJcyBpbnRvIFJQQ3MJRE9VR00KTG93ZXJDYXNlR0VUcwliZHBmCUxvd2VyY2FzZSBVUkkncyB3aGVuIG5lZWRlZAkJUExJU1RFUgpNc3FsUHJveHkJYm1wZglUcmFuc2xhdGUgVVJJJ3MgaW50byBtU1FMIHF1ZXJpZXMJQVBNTApQcm94eVBhc3MJYmRwZglQZXJsIGltcGxlbWVudGF0aW9uIG9mIFByb3h5UGFzcwlNSlMKUHJveHlQYXNzVGhydQliZHBPCVNrZWxldG9uIGZvciB2YW5pbGxhIHByb3h5CQlSTUFOR0kKUHJveHlDYWNoZQlpCUNhY2hpbmcgcHJveHkJCQkJRE9VR00KU3RyaXBTZXNzaW9uCWJkcGYJU3RyaXAgc2Vzc2lvbiBpbmZvIGZyb20gVVJJCQlNUEIKVGhyb3R0bGUgICAgICAgIGJkcGYgICAgU3BlZWQtYmFzZWQgY29udGVudCBuZWdvdGlhdGlvbiAgICAgICAgIERPTlMKVHJhbnNMREFQCWJkcGYJVHJhbnNsYXRlIFVSSXMgdG8gTERBUCBxdWVyaWVzCQlDRE9OTEVZCgoqIFBlcmxGaXh1cEhhbmRsZXIncwpIdHRwRXF1aXYJYmRwZglIVE1MIEhUVFAtRVFVSVYgdGFncyB0byBIVFRQIGhlYWRlcnMJUk9CSApSZWZlcmVyQmxvY2sJYmRwZglCbG9jayBiYXNlZCBvbiBNSU1FIHR5cGUgKyBSZWZlcmVyCUNIT0xFVApUaW1laXQJCWJtcGYJQmVuY2htYXJrIFBlcmxIYW5kbGVycwkJCUFQTUwKVXNlcnRyYWNrCWJkcGYJUGVybCB2ZXJzaW9uIG9mIG1vZF91c2VydHJhY2sJCUFCSAoKKiBQZXJsTG9nSGFuZGxlcidzCkRCSUxvZ0NvbmZpZwliZHBmCUN1c3RvbSBmb3JtYXQgbG9nZ2luZyB2aWEgREJJCQlKQk9ETkFSCkRCSUxvZ2dlcgliZHBmCUxvZ2dpbmcgdmlhIERCSQkJCQlBQkgKRHVtcEhlYWRlcnMJYmRwZglXYXRjaCBIVFRQIHRyYW5zYWN0aW9uIHZpYSBoZWFkZXJzCURPVUdNCkxvZ01haWwJCWJkcGYJTG9nIGNlcnRhaW4gcmVxdWVzdHMgdmlhIGVtYWlsCQlNUEIgClRyYWZmaWMJCWJkcGYJTG9ncyBieXRlcyB0cmFuc2ZlcnJlZCwgcGVyLXVzZXIgYmFzaXMgCU1BVVJJQ0UKV2F0Y2hEb2cJYwlMb29rIGZvciBwcm9ibGVtYXRpYyBVUklzCQlET1VHTQoKKiBQZXJsQ2hpbGRJbml0SGFuZGxlcidzClJlc291cmNlCVNtcGYJTGltaXQgcmVzb3VyY2VzIHVzZWQgYnkgaHR0cGQgY2hpbGRyZW4JQVBNTAoKKiBTZXJ2ZXIgQ29uZmlndXJhdGlvbgpDb25maWdMREFQCWkJQ29uZmlnIHZpYSBMREFQIGFuZCAmbHQ7UGVybCZndDsJCU1BUktLCkNvbmZpZ0RCSQlpCUNvbmZpZyB2aWEgREJJIGFuZCAmbHQ7UGVybCZndDsJCU1BUktJTQpNb2R1bGVDb25maWcJU21jTwlJbnRlcmZhY2UgdG8gY29uZmlndXJhdGlvbiBBUEkJCUFQTUwKUGVybFNlY3Rpb25zCVNtcE8JVXRpbGl0aWVzIGZvciAmbHQ7UGVybCZndDsgc2VjdGlvbnMJCUFQTUwKaHR0cGRfY29uZglibXBPCU1ldGhvZHMgdG8gY29uZmlndXJlIGFuZCBydW4gYW4gaHR0cGQJQVBNTApzcmMJCVNtcE8JRmluZGluZyBhbmQgcmVhZGluZyBiaXRzIG9mIHNvdXJjZQlBUE1MCgoqIERhdGFiYXNlCkRCSQkJYm1wTwlQZXJzaXN0ZW50IERCSSBjb25uZWN0aW9uIG1nbXQuCQlNRVJHTApTeWJhc2U6OkRCbGliICAgYm1wTyAgICBQZXJzaXN0ZW50IERCbGliIGNvbm5lY3Rpb24gbWdtdC4JQk1JTExFVApTeWJhc2U6OkNUbGliCWJhcE8JUGVyc2lzdGVudCBDVGxpYiBjb25uZWN0aW9uIG1nbXQuCU1ET1dOSU5HCk15c3FsCQliZHBPCVBlcnNpc3RlbnQgY29ubmVjdGlvbiBtZ210LiBmb3IgTXlzcWwJTkpFTlNFTgoKKiBJbnRlcmZhY2VzIGFuZCBpbnRlZ3JhdGlvbiB3aXRoIEFwYWNoZSBDIHN0cnVjdHVyZXMgYW5kIG1vZHVsZXMKQXBhY2hlCQlTbWNPCUludGVyZmFjZSB0byByZXF1ZXN0X3JlYyBzdHJ1Y3QgKyBBUEkJQVBNTApCYWNraGFuZAliZGNyCUJyaWRnZSBiZXR3ZWVuIG1vZF9iYWNraGFuZCArIG1vZF9wZXJsCURMT1dFCkNtZFBhcm1zCVNtY08JSW50ZXJmYWNlIHRvIEFwYWNoZSBjbWRfcGFybXMgc3RydWN0CUFQTUwKQ29tbWFuZAkJYm1jTwlJbnRlcmZhY2UgdG8gQXBhY2hlIGNvbW1hbmRfcmVjIHN0cnVjdAlBUE1MCkNvbm5lY3Rpb24JU21jTwlJbnRlZmFjZSB0byBBcGFjaGUgY29ubl9yZWMgc3RydWN0CUFQTUwKQ29uc3RhbnRzCVNtY2YJQ29uc3RhbnRzIGRlZmluZWQgaW4gaHR0cGQuaAkJQVBNTApFeHRVdGlscwlTbXBPCVV0aWxzIGZvciBBcGFjaGU6Qy9QZXJsIGdsdWUJCUFQTUwKRmlsZQkJU21jTwlNZXRob2RzIGZvciB3b3JraW5nIHdpdGggZmlsZXMJCUFQTUwgCkhhbmRsZXIJCWJtY08JSW50ZXJmYWNlIHRvIEFwYWNoZSBoYW5kbGVyX3JlYyBzdHJ1Y3QJQVBNTApMb2cJCVNtY08JYXBfbG9nX2Vycm9yIGludGVyZmFjZQkJCUFQTUwKTG9nRmlsZQkJYm1jTwlJbnRlcmZhY2UgdG8gQXBhY2hlJ3MgcGlwZWQgbG9ncywgZXRjLglBUE1MCk1vZHVsZQkJYm1jTwlJbnRlcmZhY2UgdG8gQXBhY2hlIG1vZHVsZSBzdHJ1Y3QJQVBNTApTY29yZWJvYXJkICAgICAgUmRjTyAgICBQZXJsIGludGVyZmFjZSB0byBBcGFjaGUncyBzY29yZWJvYXJkLmggRE9VR00KU2VydmVyCQlTbWNPCUludGVyZmFjZSB0byBBcGFjaGUgc2VydmVyX3JlYyBzdHJ1Y3QJQVBNTApTdWJQcm9jZXNzCWNtY08JSW50ZXJmYWNlIHRvIEFwYWNoZSBzdWJwcm9jZXNzIEFQSQlBUE1MClRhYmxlCQlTbWNPCUludGVyZmFjZSB0byBBcGFjaGUgdGFibGUgc3RydWN0ICsgQVBJIAlBUE1MClVSSQkJU21jTwlVUkkgY29tcG9uZW50IHBhcnNpbmcgYW5kIHVucGFyc2luZwlBUE1MClV0aWwJCVNtY2YJSW50ZXJmYWNlIHRvIEFwYWNoZSdzIHV0aWwqLmMgZnVuY3Rpb25zCUFQTUwKCiogSFRUUCBNZXRob2QgaGFuZGxlcnMKUEFUQ0gJCWJkcGYJSFRUUCBQQVRDSCBtZXRob2QgaGFuZGxlcgkJTVBCClBVVAkJY2RwZglIVFRQIFBVVCBtZXRob2QgaGFuZGxlciAJCVNPUlRJWgpSb2FtaW5nCQliZHBPCVBVVC9HRVQvTU9WRS9ERUxFVEUgKE5ldHNjYXBlIFJvYW1pbmcpCUpXRUlECgoqIFdhdGNoZG9nIGFuZCBNb25pdG9yaW5nIHRvb2xzClNpemVMaW1pdCAgICAgICAgIFNtcGYgICAgR3JhY2VmdWwgZXhpdCBmb3IgbGFyZ2UgY2hpbGRyZW4gICAgICAgIEFQTUwKR1RvcExpbWl0CSAgUmRwbgkgIENoaWxkIGV4aXQgb24gc21hbGwgc2hhcmVkIG9yIGxhcmdlIG1lbSBTVEFTClN0YXR1cyAgICAgICAgICAgIFNtcGYgICAgRW1iZWRkZWQgaW50ZXJwcmV0ZXIgcnVudGltZSBzdGF0dXMgICAgIEFQTUwKVk1vbml0b3IgICAgICAgICAgUmRwbiAgICBWaXN1YWwgU3lzdGVtIGFuZCBQcm9jZXNzZXMgTW9uaXRvciAgICAgU1RBUwpXYXRjaGRvZzo6UnVuQXdheSBSZHBuICAgIFJ1bkF3YXkgcHJvY2Vzc2VzIHdhdGNoZG9nL3Rlcm1pbmF0b3IgICBTVEFTCgoqIERldmVsb3BtZW50IGFuZCBEZWJ1ZyB0b29scwpEQgkJYW1jTwlIb29rIFBlcmwgaW50ZXJhY3RpdmUgREIgaW50byBtb2RfcGVybAlET1VHTQpEZWJ1ZwkJUm1wZgltb2RfcGVybCBkZWJ1Z2dpbmcgdXRpbGl0aWVzCQlBUE1MCkRlYnVnSW5mbyAgICAgICBhbXBPICAgIFBlci1yZXF1ZXN0IGRhdGEgbG9nZ2luZyAgICAgICAgICAgICAgICBHRU9GRgpEUHJvZgkJYm1jZglIb29rIERldmVsOjpEUHJvZiBpbnRvIG1vZF9wZXJsCQlET1VHTQpGYWtlUmVxdWVzdAlhbXBPCUltcGxlbWVudCBBcGFjaGUgbWV0aG9kcyBvZmYtbGluZQlBUE1MCkxlYWsJCWJtY2YJTWVtb3J5IGxlYWsgdHJhY2tpbmcgcm91dGluZXMJCUFQTUwKUGVlawkJYW1jZglEZXZlbDo6UGVlayBmb3IgbW9kX3BlcmwJCUFQTUwKU2F3QW1wZXJzYW5kCWJtcGYJTWFrZSBzdXJlIG5vb25lIGlzIHVzaW5nICQmLCAkJyBvciAkYAlBUE1MClNtYWxsUHJvZglibXBmCUhvb2sgRGV2ZWw6OlNtYWxsUHJvZiBpbnRvIG1vZF9wZXJsCURPVUdNClN0YXRJTkMJCVNtcGYJUmVsb2FkIHJlcXVpcmUnZCBmaWxlcyB3aGVuIHVwZGF0ZWQJQVBNTApTeW1ib2wJCWJtY08JVGhpbmdzIGZvciBzeW1ib2wgdGhpbmdzCQlBUE1MClN5bWR1bXAJCWJtcGYJU3ltYm9sIHRhYmxlIHNuYXBzaG90cyB0byBkaXNrCQlBUE1MCnRlc3QJCVNtcGYJSGFuZHkgcm91dGluZXMgZm9yICdtYWtlIHRlc3QnIHNjcmlwdHMJQVBNTAoKKiBNaXNjCkJ5dGVydW4JCWkJUnVuIFBlcmwgYnl0ZWNvZGUgbW9kdWxlcwkJRE9VR00KQ29va2llCQlhbWNPCUMgdmVyc2lvbiBvZiBDR0k6OkNvb2tpZQkJQVBNTApJY29uCQliZGNPCUFjY2VzcyB0byBBZGRJY29uKiBjb25maWd1cmF0aW9uCURPVUdNCkluY2x1ZGUJCVNtcGYJbW9kX2luY2x1ZGUgKyBBcGFjaGU6OlJlZ2lzdHJ5IGhhbmRsZXIJQVBNTApNbWFwCQliZGNmCVNoYXJlIGRhdGEgdmlhIE1tYXAgbW9kdWxlCQlGTEVUQ0gKTW90ZCAgICAgICAgICAgIGJtcGYgICAgQWRkIE1lc3NhZ2Ugb2YgdGhlIERheSBmdW5jdGlvbmFsaXR5ICAgIENSQU1JUkVaClBhcnNlTG9nCWJkcE8JT08gaW50ZXJmYWNlIHRvIEFwYWNoZSBsb2cgZmlsZXMJQUtJUkEKUmVnaXN0cnlMb2FkZXIJU21wTwlBcGFjaGU6OlJlZ2lzdHJ5IHN0YXJ0dXAgc2NyaXB0IGxvYWRlciAJQVBNTApSZXF1ZXN0CQlhbWNPICAgIENHSS5wbSBmdW5jdGlvbmFsaXR5IHVzaW5nIEFQSSBtZXRob2RzCUFQTUwKU2FmZQkJYW1wTwlBZGFwdGF0aW9uIG9mICJzYWZlY2dpcGVybCIJCUFQTUwKU2Vzc2lvbgkJYm1wTwlNYWludGFpbiBjbGllbnQgJmx0Oy0mZ3Q7IGh0dHBkIHNlc3Npb24vc3RhdGUJSkJBS0VSClNlcnZsZXQJCWFtcE8JSW50ZXJmYWNlIHRvIHRoZSBKYXZhIFNlcnZsZXQgZW5naW5lCUlLTFVGVApTSUcJCVNtcE8JU2lnbmFsIGhhbmRsZXJzIGZvciBtb2RfcGVybAkJQVBNTApTdGF0ZQkJaQlQb3dlcmZ1bCBzdGF0ZSBlbmdpbmUJCQlSU0UKVGVtcEZpbGUJYmRwZglNYW5hZ2UgdGVtcG9yYXJ5IGZpbGVzCQkJVE9NSFVHSEVTClVwbG9hZAkJYW1jTwlGaWxlIHVwbG9hZCBjbGFzcwkJCUFQTUwKCjwvcHJlPgo8aDM+PGEgbmFtZT0id2hlcmUiPldoZXJlIEFyZSBUaGUgTW9kdWxlcyBLZXB0PzwvYT48L2gzPgpNb2R1bGVzIGxpc3RlZCB3aXRoIHRoZSA8Yj5BUE1MPC9iPiBhcyBpcyBjb250YWN0IGFyZSBwYXJ0IG9mIHRoZSAKbW9kX3BlcmwgZGlzdHJpYnV0aW9uIHBhY2thZ2UuICBPdGhlciBtb2R1bGVzIGNhbiBiZSBmb3VuZCBvbiBDUEFOCnRoZSA8YSBocmVmPSJodHRwOi8vd3d3LnBlcmwuY29tL0NQQU4vbW9kdWxlcy9ieS1tb2R1bGUvQXBhY2hlLyI+Cm1vZHVsZXMvYnktbW9kdWxlL0FwYWNoZS88L0E+IGRpcmVjdG9yeS4gIElmIHRoZXkgaGF2ZSBub3QgbWFkZSBpdCAKdG8gQ1BBTiB5ZXQsIHRoZXkgbWlnaHQgYmUgZm91bmQgaW4gdGhlIG1vZF9wZXJsIAo8YSBocmVmPSJodHRwOi8vcGVybC5hcGFjaGUub3JnL3NyYy9jb250cmliLyI+Y29udHJpYjwvYT4KZGlyZWN0b3J5LCB3aGljaCBpcyBhbHNvIHRhcidkIGFuZCBkaXN0cmlidXRlZCB2aWEgQ1BBTiBpbiB0aGUgCjxhIGhyZWY9Imh0dHA6Ly93d3cucGVybC5jb20vQ1BBTi9tb2R1bGVzL2J5LW1vZHVsZS9BcGFjaGUvIj4KbW9kdWxlcy9ieS1tb2R1bGUvQXBhY2hlLzwvQT4gZGlyZWN0b3J5LgpPdGhlcndpc2UsIGZlZWwgZnJlZSB0byBhc2sgdGhlIGNvbnRhY3QgYXV0aG9yIG9yIHRoZSBsaXN0CmhvdyB5b3UgY2FuIGdvIGFib3V0IGdldHRpbmcgeW91ciBoYW5kcyBvbiBhIGNvcHkuCgo8aDM+PGEgbmFtZT0iY29udGFjdHMiPkNvbnRhY3RzPC9hPjwvaDM+CjxwcmU+CkFCSCAgCSAgQXNrIEJq+HJuIEhhbnNlbiAmbHQ7YXNrQG5ldGNldGVyYS5kayZndDsKQUtJUkEJICBBa2lyYSBIYW5nYWkgJmx0O2FraXJhQGRpc2NvdmVyLW5ldC5uZXQmZ3Q7CkFOREsJICBBbmRyZWFzIEv2bmlnICZsdDthLmtvZW5pZ0BmcmFuei53dy5UVS1CZXJsaW4uREUmZ3Q7CkFQTUwJICBUaGUgQXBhY2hlL1BlcmwgTWFpbGluZyBMaXN0ICZsdDttb2RwZXJsQHBlcmwuYXBhY2hlLm9yZyZndDsKQk1JTExFVFQgIEJyaWFuIE1pbGxldHQgJmx0O2JwbUB0ZWNoYXBwLmNvbSZndDsKQk9VQkFLRVIgIEhlZGR5IEJvdWJha2VyICZsdDtib3ViYWtlckBjZW5hLmZyJmd0OwpDQ1dGCSAgQ2hhcmxlcyBDLiBGdSAmYW1wO2x0O2Njd2ZAYmFjY2h1cy5jb20mYW1wO2d0OwpDRE9OTEVZICAgQ2xheXRvbiBEb25sZXkgJmx0O2RvbmxleUB3d2EuY29tJmd0OwpDSEFNQVMJICBKb3NodWEgQ2hhbWFzICZsdDtjaGFtYXNAYWx1bW5pLnN0YW5mb3JkLm9yZyZndDsKQ0hPTEVUCSAgRXJpYyBDaG9sZXQgJmx0O2Nob2xldEBsb2dpbHVuZS5jb20mZ3Q7CkNIVEhPUk1BTiBDaHJpcyBUaG9ybWFuICZsdDtjaHJpc0B0aG9ybWFuLmNvbSZndDsKQ1JBTUlSRVogIENhcmxvcyBSYW1pcmV6ICZsdDtjYXJsb3NAcXVhbnR1bWZ4LmNvbSZndDsKREFOSUVMCSAgRGFuaWVsICZsdDtkYW5pZWwtYXV0aGVucmFkaXVzQGVsZWN0cmljcmFpbi5jb20mZ3Q7CkRFUAkgIERlbWV0cmlvcyBFLiBQYW5lcmFzICZsdDtkZXBAbWVkaWEubWl0LmVkdSZndDsKRExPV0UJICBEYXZpZCBMb3dlICZsdDtkbG93ZUBwb290cG9vdC5jb20mZ3Q7CkRPTlMJICBEb24gU2Nod2FyeiAmbHQ7ZG9uQGRvbnMueG5ldC5jb20mZ3Q7CkRPVUdCICAgICBEb3VnIEJhZ2xleSAmbHQ7ZG91Z0BkZWphbmV3cy5jb20mZ3Q7CkRPVUdNCSAgRG91ZyBNYWNFYWNoZXJuICZsdDtkb3VnbUBwb2JveC5jb20mZ3Q7CkVCQVJUTEVZICBFcmljIEJhcnRsZXkgICZsdDtiYXJ0bGV5QG9zZC5jYy5wdXJkdWUuZWR1Jmd0OwpGTEVUQ0ggICAgTWlrZSBGbGV0Y2hlciAmbHQ7bGVtdXIxQG1pbmRzcHJpbmcuY29tJmd0OwpGUkFKVUxBQyAgRnJhbmNpcyBKLiBMYWNvc3RlICZsdDtmcmFqdWxhY0BpbnN1LmNvbSZndDsKR0VPRkYgICAgIEdlb2ZmcmV5IFlvdW5nICZsdDtnZW9mZkBjcGFuLm9yZyZndDsKR0tOT1BTCSAgR2VyZCBLbm9wcyAmbHQ7Z2VydGlAQklUYXJ0LmNvbSZndDsKR09aRVIJICBQaGlsaXBwZSBNLiBDaGlhc3NvbiAmbHQ7Z296ZXJAZWN0b3BsYXNtLmR5bmRucy5jb20mZ3Q7CkdSSUNIVEVSICBHZXJhbGQgUmljaHRlciAmbHQ7cmljaHRlckBlY29zLmRlJmd0OwpHVU5USEVSICAgR3VudGhlciBCaXJ6bmlla3MgJmx0O2d1bnRoZXJAbmhncmkubmloLmdvdiZndDsKSEVOUklLCSAgSGVucmlrIFN0cm9tICZsdDtoZW5yaWtAY29tcHV0ZXIub3JnJmd0OwpITVVFTExFUiAgSGFubm8gTXVlbGxlciAmbHQ7aG11ZWxsZXJAbWFpbC5rYWJlbC5kZSZndDsKSUtMVUZUCSAgSWFuIEtsdWZ0ICZsdDtpa2x1ZnRAY2lzY28uY29tJmd0OwpKQU5QQVoJICBIb256YSBQYXpkemlvcmEgJmx0O2FkZWx0b25AaW5mb3JtYXRpY3MubXVuaS5jeiZndDsKSkJBS0VSICAgIEplZmZyZXkgQmFrZXIgJmx0O2plZmZAZ29kemlsbGEudGFtdS5lZHUmZ3Q7CkpCT0ROQVIJICBKYXNvbiBCb2RuYXIgJmx0O2pib2RuYXJAdGl2b2xpLmNvbSZndDsKSkdST1YJICBKb2huIEQgR3JvZW52ZWxkICZsdDtqZGcxMTdAZWx2aXMuYXJsLnBzdS5lZHUmZ3Q7CkpFRkZICSAgSmVmZnJleSBIdWx0ZW4gJmx0O2plZmZoQHByZW1pZXIxLm5ldCZndDsKSlJPV0UJICBKZWZmIFJvd2UgJmx0O2Jlb3d1bGZAbGF2YS5uZXQmZ3Q7CkpTV0FSVFoJICBKb25hdGhhbiBTd2FydHogJmx0O3N3YXJ0ekB0cmFuc2JheS5uZXQmZ3Q7CkpXRUlECSAgSm9jaGVuIFdpZWRtYW5uICZsdDtqb2VAaXNwc29mdC5kZSZndDsKS1dJTExJQU0gIEtlbiBXaWxsaWFtcyAgJmx0O2tlbkBmb3J1bS5zd2FydGhtb3JlLmVkdSZndDsKTERTCSAgTGluY29sbiBELiBTdGVpbiAmbHQ7bHN0ZWluQGdlbm9tZS53aS5taXQuZWR1Jmd0OwpNQVJLQwkgIE1hcmsgQ29uc3RhYmxlICZsdDttYXJrY0Bnb2xkY29hc3Qub3JnJmd0OwpNQVJLSU0JICBNYXJrIEEuIEltYnJpYWNvICZsdDttYXJrQGl0cmliZS5uZXQmZ3Q7Ck1BUktLCSAgTWFyayBLZW5uZWR5ICZsdDttdGtAbnkudWJzLmNvbSZndDsKTUFVUklDRQkgIE1hdXJpY2UgQXVicmV5ICZsdDttYXVyaWNlQGhldmFuZXQuY29tJmd0Ck1EQVJXSU4JICBNYXR0aGV3IERhcndpbiAmbHQ7bWF0dGhld0BkYXZpbi5vdHRhd2Eub24uY2EmZ3Q7Ck1ET1JNQU4JICBNaWNoYWVsIEFsYW4gRG9ybWFuICAmbHQ7bWRvcm1hbkBjYWxkZXIubWVkLm1pYW1pLmVkdSZndDsKTURPV05JTkcgIE1hcmsgRG93bmluZyAmbHQ7bWRvd25pbmdAcmRhdGFzeXMuY29tJmd0OwpNRVJHTAkgIEVkbXVuZCBNZXJnbCAmbHQ7RS5NZXJnbEBiYXd1ZS5kZSZndDsKTUVSTFlOCSAgUmFuZGFsIEwuIFNjaHdhcnR6ICZsdDttZXJseW5Ac3RvbmVoZW5nZS5jb20mZ3Q7Ck1KRAkgIE1hcmstSmFzb24gRG9taW51cyAmbHQ7bWpkLXBlcmwtcGF1c2UyQHBsb3Zlci5jb20mZ3Q7Ck1KUyAgICAgICBNaWNoYWVsIFNtaXRoICZsdDttanNAaWlpLmNvLnVrJmd0OwpNS09TUwkgIE1heCBLb3NzYXR6bWF4ICZsdDtrb3NzYXR6QHRoaW5nLmF0Jmd0OwpNSUNCICAJICBNYWxjb2xtIEJlYXR0aWUgJmx0O21iZWF0dGllQHNhYmxlLm94LmFjLnVrJmd0OwpNUEIJICBtb2RfcGVybCBib29rIChEb3VnIGFuZCBMaW5jb2xuKSAmbHQ7Ym9va0Btb2RwZXJsLmNvbSZndDsKTVNFUkdFQU5UIE1hdHQgU2VyZ2VhbnQgJmx0O21hdHRAc2VyZ2VhbnQub3JnJmd0OwpSQSAgICAgICAgUm9tYW4gS29zZW5rbyAmbHQ7cmFAYW1rLmxnLnVhJmd0OwpOSkVOU0VOCSAgTmVpbCBKZW5zZW4gJmx0O25qZW5zZW5AaGFiYW5lcm9zLmNvbSZndDsKUEFSS0VSCSAgTWljaGFlbCBQYXJrZXIgJmx0O3BhcmtlckBhdXN0eC50YW5kZW0uY29tJmd0OwpQRVRFUk0JICBQZXRlciBNYXJzaGFsbCAmbHQ7cGV0ZXJtQHBhZ2VhY3RpdmUuY29tJmd0OwpKUEVURVJTT04gIEpvbmF0aGFuIFBldGVyc29uICZsdDtqb25AYW14c3R1ZGlvcy5jb20mZ3Q7ClBMSVNURVIgICBQZXRlciBMaXN0ZXIgJmx0O3AubGlzdGVyQGNyYW5maWVsZC5hYy51ayZndDsKUE1LQU5FCSAgUGF0cmljayBNaWNoYWVsIEthbmUgJmx0O21vZHVzQHByLmVzLnRvJmd0OwpQVEkJICBQZXRlciBUaWxsZW1hbnMgJmx0O3B0aUBwYW5kb3JhLmJlJmd0OwpSSkVOS1MJICBSb2JlcnQgSmVua3MgJmx0O3JqZW5rc0BjdnNyb290Lm9yZyZndDsKUktPQkVTCSAgUmFuZHkgS29iZXMgJmx0O3JhbmR5QHRoZW9yeS51d2lubmlwZWcuY2EmZ3Q7ClJNQU5HSSAgICBSaWNrIE1hbmdpICZsdDtybWFuZ2lAdGdpeC5jb20mZ3Q7ClJPQkgJICBSb2IgSGFydGlsbCAmbHQ7cm9iaEBpbWRiLmNvbSZndDsKUlNFICAgICAgIFJhbGYgUy4gRW5nZWxzY2hhbGwgJmx0O3JzZUBlbmdlbHNjaGFsbC5jb20mZ3Q7ClNBTQkgIFNpbW9uIE1hdHRoZXdzICZsdDtzYW1AcGVyaXRhcy5jb20mZ3Q7ClNLQU5FICAgICBTdGVwaGVuIEUgS2FuZSAmbHQ7c2VrMTEyQGVsdmlzLmFybC5wc3UuZWR1Jmd0OwpTT1JUSVoJICBTYWx2YWRvciBPcnRpeiAmbHQ7c29ydGl6QG1zZy5jb20ubXgmZ3Q7ClNUQVMgICAgICBTdGFzIEJla21hbiAmbHQ7c3Rhc0BzdGFzb24ub3JnJmd0OwpTVklOVE8JICBTdmFudGUgU/ZybWFyayAmbHQ7c3ZpbnRvQGl0YS5jaGFsbWVycy5zZSZndDsKVEpNQVRIRVIgIFQuSi4gTWF0aGVyICZsdDt0am1hdGhlckB0aG91Z2h0c3RvcmUuY29tJmd0OwpUT01IVUdIRVMgVG9tIEh1Z2hlcyAmbHQ7dG9tQGNvbXB0b24uZGVtb24uY28udWsmZ3Q7ClZBTEVSSUUJICBWYWxlcmllIERlbGFuZSAmbHQ7dmFsZXJpZUBzYXZpbmEuY29tJmd0OwpWS0hFUkEgICAgVml2ZWsgS2hlcmEgJmx0O3ZpdmVrQGtoZXJhLm9yZyZndDsKWkVOSU4JICBCeXJvbiBCcnVtbWVyICZsdDt6ZW5pbkBhcmNoaXZlLnJocHMub3JnJmd0Owo8L3ByZT4KCjxoMz48YSBuYW1lPSJpbmZvIj5Nb3JlIEluZm88L2E+PC9oMz4KU2VlIHRoZSBBcGFjaGUvUGVybCA8YSBocmVmPSJodHRwOi8vcGVybC5hcGFjaGUub3JnLyI+aG9tZXBhZ2U8L2E+Lgo8L2JvZHk+CjwvaHRtbD4K