PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPkFwYWNoZSBSaXZldCBJbnN0YWxsYXRpb248L3RpdGxlPjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InJpdmV0LmNzcyI+PG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43Ni4xIj48bGluayByZWw9ImhvbWUiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJBcGFjaGUgUml2ZXQiPjxsaW5rIHJlbD0idXAiIGhyZWY9ImluZGV4Lmh0bWwiIHRpdGxlPSJBcGFjaGUgUml2ZXQiPjxsaW5rIHJlbD0icHJldiIgaHJlZj0iaW5kZXguaHRtbCIgdGl0bGU9IkFwYWNoZSBSaXZldCI+PGxpbmsgcmVsPSJuZXh0IiBocmVmPSJkaXJlY3RpdmVzLmh0bWwiIHRpdGxlPSJSaXZldCBBcGFjaGUgRGlyZWN0aXZlcyI+PC9oZWFkPjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj48ZGl2IGNsYXNzPSJuYXZoZWFkZXIiPjx0YWJsZSB3aWR0aD0iMTAwJSIgc3VtbWFyeT0iTmF2aWdhdGlvbiBoZWFkZXIiPjx0cj48dGggY29sc3Bhbj0iMyIgYWxpZ249ImNlbnRlciI+QXBhY2hlIFJpdmV0IEluc3RhbGxhdGlvbjwvdGg+PC90cj48dHI+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPqA8L3RkPjx0aCB3aWR0aD0iNjAlIiBhbGlnbj0iY2VudGVyIj6gPC90aD48dGQgd2lkdGg9IjIwJSIgYWxpZ249InJpZ2h0Ij6gPGEgYWNjZXNza2V5PSJuIiBocmVmPSJkaXJlY3RpdmVzLmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPjwvdGQ+PC90cj48L3RhYmxlPjwvZGl2PjxkaXYgY2xhc3M9InNlY3Rpb24iIHRpdGxlPSJBcGFjaGUgUml2ZXQgSW5zdGFsbGF0aW9uIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aHI+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBuYW1lPSJpbnN0YWxsYXRpb24iPjwvYT5BcGFjaGUgUml2ZXQgSW5zdGFsbGF0aW9uPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJwcm9jZWR1cmUiPjxvbCBjbGFzcz0icHJvY2VkdXJlIiB0eXBlPSIxIj48bGkgY2xhc3M9InN0ZXAiIHRpdGxlPSJDaGVjayBEZXBlbmRlbmNpZXMiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+Q2hlY2sgRGVwZW5kZW5jaWVzPC9iPjwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgVG8gaW5zdGFsbCBSaXZldCwgeW91IHdpbGwgbmVlZCBUY2wgOC40IG9yIGdyZWF0ZXIuIFJpdmV0IGNhbiBiZSBjb21waWxlZCB0byB3b3JrIAoJICB3aXRoIGVpdGhlciBBcGFjaGUgMS4zLnh4IG9yIEFwYWNoZSAyLjIueHggc2VydmVyLgoJICBJdCBpcyBrbm93biB0byBydW4gb24gTGludXgsIEZyZWVCU0QsIE9wZW5CU0QsIFNvbGFyaXMgYW5kIEhQVVguIFdpbmRvd3MgTlQgaXMgYWxzbyBwb3NzaWJsZQoJICAtIHBsZWFzZSBzZWUgdGhlIGRpcmVjdGlvbnMgaW4gdGhlIGRpc3RyaWJ1dGlvbi4gIAoJPC9wPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iR2V0IFJpdmV0Ij48cCBjbGFzcz0idGl0bGUiPjxiPkdldCBSaXZldDwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIERvd25sb2FkIHRoZSBzb3VyY2VzIGF0IDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3RjbC5hcGFjaGUub3JnL3JpdmV0L2Rvd25sb2FkLmh0bWwiIHRhcmdldD0iX3RvcCI+aHR0cDovL3RjbC5hcGFjaGUub3JnL3JpdmV0L2Rvd25sb2FkLmh0bWw8L2E+LiAgQ3VycmVudGx5CgkgIHRoZSBvbmx5IHdheSB0byBvYnRhaW4gUml2ZXQuICBJbiB0aGUgZnV0dXJlLCB3ZSBob3BlIHRvIGhhdmUgYSBGcmVlQlNEIHBvcnQsIERlYmlhbiBwYWNrYWdlLCBSUE0ncywgYW5kIHdpbmRvd3MKCSAgYmluYXJpZXMuCgk8L3A+PC9saT48bGkgY2xhc3M9InN0ZXAiIHRpdGxlPSJJbnN0YWxsIFRjbCI+PHAgY2xhc3M9InRpdGxlIj48Yj5JbnN0YWxsIFRjbDwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIElmIHlvdSBkb24ndCBoYXZlIFRjbCBhbHJlYWR5LCB5b3UgbmVlZCBpdCEgIElmIHlvdSBhbHJlYWR5CgkgIGhhdmUgaXQsIHlvdSBzaG91bGQganVzdCBiZSBhYmxlIHRvIHVzZSB5b3VyIHN5c3RlbSBUY2wgYXMKCSAgbG9uZyBhcyBpdCBpcyByZWNlbnQuICBZb3UgY2FuIHRlbGwgUml2ZXQgYnVpbGQgc2NyaXB0cyB3aGVyZSBUY2wgaXMgdmlhCgkgIHRoZSAtLXdpdGgtdGNsIG9wdGlvbiB0byA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5jb25maWd1cmU8L3N0cm9uZz48L3NwYW4+PC9zcGFuPiAoc2VlIGJlbG93KS4KCTwvcD48L2xpPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9IkdldCBhbmQgSW5zdGFsbCBBcGFjaGUgU291cmNlcyI+PHAgY2xhc3M9InRpdGxlIj48Yj5HZXQgYW5kIEluc3RhbGwgQXBhY2hlIFNvdXJjZXM8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgogICAgICAgICAgUml2ZXQgbmVlZHMgc29tZSBBcGFjaGUgaW5jbHVkZSAoLmgpIGZpbGVzIGluIG9yZGVyIHRvIGJ1aWxkLiAgVGhlIGVhc2llc3Qgd2F5IAoJICB0byBnZXQgdGhlbSBpcyB0byBkb3dubG9hZCB0aGUgc291cmNlIGNvZGUgb2YgdGhlIEFwYWNoZSB3ZWIgc2VydmVyLCBhbHRob3VnaCBzb21lIHN5c3RlbXMKCSAgKERlYmlhbiBHTlUvTGludXggZm9yIGV4YW1wbGUpIG1ha2UgaXQgcG9zc2libGUgdG8gaW5zdGFsbCBvbmx5IHRoZSBoZWFkZXJzIGFuZCBvdGhlciAKCSAgZGV2ZWxvcG1lbnQgZmlsZXMuICBJZiB5b3UgaW50ZW5kIHRvIGJ1aWxkIFJpdmV0IHN0YXRpY2FsbHkgKGNvbXBpbGVkIGludG8gdGhlIEFwYWNoZSB3ZWIKCSAgc2VydmVyIGluc3RlYWQgb2YgbG9hZGVkIGR5bmFtaWNhbGx5KSwgeW91IGRlZmluaXRlbHkgbmVlZCB0aGUgc291cmNlcy4gIAoJICAgIFdlIHJlY29tbWVuZCB0aGF0IHlvdSBidWlsZCBSaXZldCBhcyBhIGxvYWRhYmxlIHNoYXJlZCBsaWJyYXJ5LCBmb3IgbWF4aW11bSBmbGV4aWJpbGl0eSwKCSAgICBtZWFuaW5nIHRoYXQgeW91IGFsc28gYnVpbGQgQXBhY2hlIHRvIGJlIGFibGUgdG8gbG9hZCBtb2R1bGVzLiBPdGhlciB0aGFuIHRoYXQsIAoJICAgIHRoZSBkZWZhdWx0IEFwYWNoZSBpbnN0YWxsIGlzIGZpbmUuICBXZSB3aWxsIHRlbGwgUml2ZXQgd2hlcmUgaXQgaXMgbG9jYXRlZCB2aWEgdGhlIAoJICAgIC0td2l0aC1hcHhzIG9wdGlvbiB0byA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5jb25maWd1cmU8L3N0cm9uZz48L3NwYW4+PC9zcGFuPiAoc2VlIGJlbG93KS4KCTwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KICAgICAgICAgIFRoZSBzb3VyY2UgY29kZSBmb3IgdGhlIEFwYWNoZSB3ZWIgc2VydmVyIG1heSBiZSBmb3VuZCBieQogICAgICAgICAgZm9sbG93aW5nIHRoZSBsaW5rcyBoZXJlOiA8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIgdGFyZ2V0PSJfdG9wIj5odHRwOi8vaHR0cGQuYXBhY2hlLm9yZy88L2E+LgoJPC9wPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iVW5jb21wcmVzcyBTb3VyY2VzIj48cCBjbGFzcz0idGl0bGUiPjxiPlVuY29tcHJlc3MgU291cmNlczwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIFdlIHdpbGwgYXNzdW1lIHRoYXQgeW91IGhhdmUgQXBhY2hlIGluc3RhbGxlZCBhdCB0aGlzIHBvaW50LgoJICBZb3UgbXVzdCB1bmNvbXByZXNzIHRoZSBSaXZldCBzb3VyY2VzIGluIHRoZSBkaXJlY3Rvcnkgd2hlcmUgeW91CgkgIHdpc2ggdG8gY29tcGlsZSB0aGVtLgoKCSAgPC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPmd1bnppcCByaXZldC1YLlguWC50YXIuZ3oKdGFyIC14dmYgcml2ZXQtWC5YLlgudGFyLmd6PC9wcmU+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgoJPC9wPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iQnVpbGRpbmcgUml2ZXQiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+QnVpbGRpbmcgUml2ZXQ8L2I+PC9wPjxvbCB0eXBlPSJhIiBjbGFzcz0ic3Vic3RlcHMiPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9IlN0ZXAgNi5hIj48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICAgIE9uIExpbnV4IG9yIFVuaXggc3lzdGVtcywgUml2ZXQgdXNlcyB0aGUgc3RhbmRhcmQgPHNwYW4gc3R5bGU9ImZvbnQtZmFtaWx5Om1vbm9zcGFjZSI+PHNwYW4gY2xhc3M9ImNvbW1hbmQiPjxzdHJvbmc+Li9jb25maWd1cmUgOyBtYWtlIDsgbWFrZSBpbnN0YWxsPC9zdHJvbmc+PC9zcGFuPjwvc3Bhbj4gdGVjaG5pcXVlLgoJICAgIDwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICAgIFRoZXJlIGFyZSBzZXZlcmFsIHJpdmV0IHNwZWNpZmljIG9wdGlvbnMgdG8gY29uZmlndXJlIHRoYXQgbWlnaHQgYmUgdXNlZnVsIChvciBuZWVkZWQpOgoJICAgICAgPC9wPjxkaXYgY2xhc3M9InZhcmlhYmxlbGlzdCI+PGRsPjxkdD48c3BhbiBjbGFzcz0idGVybSI+LS13aXRoLXRjbDwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyAgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkgICAgICBUaGlzIHBvaW50cyB0byB0aGUgZGlyZWN0b3J5IHdoZXJlIHRoZQoJCSAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dGNsQ29uZmlnLnNoPC9jb2RlPiBmaWxlIGlzIGxvY2F0ZWQuCgkJICAgIDwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLXdpdGgtdGNsc2g8L3NwYW4+PC9kdD48ZGQ+PGRpdiBzdHlsZT0icGFkZGluZzo0IDsgbWFyZ2luLXRvcDozIDsgIG1hcmdpbi1ib3R0b206MyA7IHdpZHRoOjc1JSI+PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxLjVleCA7IHBhZGRpbmcgLjVleCI+VGhpcyBwb2ludHMgdG8gdGhlIGxvY2F0aW9uIG9mIHRoZQoJCSAgICAgIDxjb2RlIGNsYXNzPSJmaWxlbmFtZSI+dGNsc2g8L2NvZGU+IGV4ZWN1dGFibGUuPC9kaXY+PC9kaXY+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPi0td2l0aC1hcHhzPC9zcGFuPjwvZHQ+PGRkPjxkaXYgc3R5bGU9InBhZGRpbmc6NCA7IG1hcmdpbi10b3A6MyA7ICBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPlRoZSBsb2NhdGlvbiBvZiB0aGUgPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5hcHhzPC9jb2RlPgoJCSAgICAgIHByb2dyYW0gdGhhdCBwcm92aWRlcyBpbmZvcm1hdGlvbiBhYm91dCB0aGUKCQkgICAgICBjb25maWd1cmF0aW9uIGFuZCBjb21waWxhdGlvbiBvcHRpb25zIG9mIEFwYWNoZSBtb2R1bGVzLjwvZGl2PjwvZGl2PjwvZGQ+PGR0PjxzcGFuIGNsYXNzPSJ0ZXJtIj4tLXdpdGgtYXBhY2hlLXZlcnNpb249WzF8Ml08L3NwYW4+PC9kdD48ZGQ+PGRpdiBzdHlsZT0icGFkZGluZzo0IDsgbWFyZ2luLXRvcDozIDsgIG1hcmdpbi1ib3R0b206MyA7IHdpZHRoOjc1JSI+PGRpdiBzdHlsZT0ibWFyZ2luLWJvdHRvbToxLjVleCA7IHBhZGRpbmcgLjVleCI+CgkJCVRoaXMgb3B0aW9uIHRlbGxzIHRoZSBidWlsZCBzY3JpcHRzIHdoZXRoZXIgeW91IHdhbnQgdG8gYnVpbGQgUml2ZXQgZm9yIHRoZQoJCQlBcGFjaGUgMS54IG9yIEFwYWNoZSAyLnggc2VydmVyLgoJCSAgICA8L2Rpdj48L2Rpdj48L2RkPjxkdD48c3BhbiBjbGFzcz0idGVybSI+LS13aXRoLWFwYWNoZS1pbmNsdWRlWz1ESVJdPC9zcGFuPjwvZHQ+PGRkPjxkaXYgc3R5bGU9InBhZGRpbmc6NCA7IG1hcmdpbi10b3A6MyA7ICBtYXJnaW4tYm90dG9tOjMgOyB3aWR0aDo3NSUiPjxkaXYgc3R5bGU9Im1hcmdpbi1ib3R0b206MS41ZXggOyBwYWRkaW5nIC41ZXgiPgoJCQkgICAgTG9jYXRlcyB0aGUgQXBhY2hlIGluY2x1ZGUgZmlsZXMgb24geW91ciBjb21wdXRlciwgaWYgdGhleSdyZSBub3QgaW4gc3RhbmRhcmQgZGlyZWN0b3J5LiAKCQkgICAgPC9kaXY+PC9kaXY+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPi0tZW5hYmxlLXZlcnNpb24tZGlzcGxheT1beWVzfG5vXTwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyAgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkJVGhpcyBvcHRpb24gZW5hYmxlcyBSaXZldCB0byBkaXNwbGF5IGl0cyB2ZXJzaW9uIGluIHRoZSBsb2dmaWxlcyB3aGVuIEFwYWNoZSBpcyBzdGFydGVkLiAKCQkJVGhlIGRlZmF1bHQgaXMgdG8ga2VlcCBSaXZldCB2ZXJzaW9uIGhpZGRlbi4KCQkgICAgPC9kaXY+PC9kaXY+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InRlcm0iPi0td2l0aC1yaXZldC10YXJnZXQtZGlyPURJUjwvc3Bhbj48L2R0PjxkZD48ZGl2IHN0eWxlPSJwYWRkaW5nOjQgOyBtYXJnaW4tdG9wOjMgOyAgbWFyZ2luLWJvdHRvbTozIDsgd2lkdGg6NzUlIj48ZGl2IHN0eWxlPSJtYXJnaW4tYm90dG9tOjEuNWV4IDsgcGFkZGluZyAuNWV4Ij4KCQkJICAgIFRoaXMgb3B0aW9uIHRlbGxzIHRoZSBpbnN0YWxsIHNjcmlwdCB3aGVyZSBSaXZldCdzIFRjbCBwYWNrYWdlcyBoYXZlIHRvIGJlIGNvcGllZC4gCgkJCTwvZGl2PjwvZGl2PjwvZGQ+PC9kbD48L2Rpdj48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgICA8L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkJRXhhbXBsZTogY29uZmlndXJpbmcgdGhlIGJ1aWxkIHN5c3RlbSB0byBjb21waWxlIFJpdmV0IGZvciBhbiBhcGFjaGUgMi54IHNlcnZlciwgdXNpbmcgdGNsOC41IGFuZAoJCXNwZWNpZnlpbmcgYSBjdXN0b20gbmFtZSBmb3IgdGhlIGFweHMgcHJvZ3JhbS4gCgkgICAgPC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgouL2NvbmZpZ3VyZSAtLXdpdGgtdGNsPS91c3IvbGliL3RjbDguNS8gLS13aXRoLXRjbHNoPS91c3IvYmluL3RjbHNoOC41IFwKCSAgICAtLXdpdGgtYXB4cz0vdXNyL2Jpbi9hcHhzMiAtLXdpdGgtYXBhY2hlPS91c3IgLS13aXRoLWFwYWNoZS12ZXJzaW9uPTIKCTwvcHJlPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iUnVuIG1ha2UiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+UnVuIG1ha2U8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgoJICAgICAgQXQgdGhpcyBwb2ludCwgeW91IGFyZSByZWFkeSB0byBydW4gbWFrZSwgd2hpY2ggc2hvdWxkCgkgICAgICBydW4gdG8gY29tcGxldGlvbiB3aXRob3V0IGFueSBlcnJvcnMgKGEgd2FybmluZyBvciB0d28KCSAgICAgIGlzIG9rLCBnZW5lcmFsbHkpLgoJICAgIDwvcD48L2xpPjxsaSBjbGFzcz0ic3RlcCIgdGl0bGU9Ikluc3RhbGwiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+SW5zdGFsbDwvYj48L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgICAgICBOb3csIHlvdSBhcmUgcmVhZHkgdG8gcnVuIHRoZSA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5tYWtlCgkJaW5zdGFsbDwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IHRvIGluc3RhbGwgdGhlIHJlc3VsdGluZyBmaWxlcy4KCQlUaGlzIHNob3VsZCBjb3B5IHRoZSBzaGFyZWQgb2JqZWN0IChsaWtlCgkJPGNvZGUgY2xhc3M9ImZpbGVuYW1lIj5tb2Rfcml2ZXQuc288L2NvZGU+LCBpZiBvbmUgd2FzCgkJc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQsIGludG8gQXBhY2hlJ3MKCQk8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmxpYmV4ZWM8L2NvZGU+IGRpcmVjdG9yeSwgYXMgd2VsbCBhcwoJCWluc3RhbGwgc29tZSBzdXBwb3J0IHNjcmlwdHMgYW5kIHZhcmlvdXMgY29kZS4KCSAgICA8L3A+PC9saT48L29sPjwvbGk+PGxpIGNsYXNzPSJzdGVwIiB0aXRsZT0iQXBhY2hlIENvbmZpZ3VyYXRpb24gRmlsZXMiPjxwIGNsYXNzPSJ0aXRsZSI+PGI+QXBhY2hlIENvbmZpZ3VyYXRpb24gRmlsZXM8L2I+PC9wPjxwIHN0eWxlPSJ3aWR0aDo5MCUiPgoJICBSaXZldCBpcyByZWxhdGl2ZWx5IGVhc3kgdG8gY29uZmlndXJlIC0gd2Ugc3RhcnQgb2ZmIGJ5CgkgIGFkZGluZyB0aGUgbW9kdWxlIGl0c2VsZjoKCTwvcD48cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOiNjY2M7IG1hcmdpbjogMmV4OyBtYXJnaW4tcmlnaHQ6IDEwJTsgICAgICAgcGFkZGluZzogMWV4OyBib3JkZXI6IGRhc2hlZCBibGFjayAxcHggOyB3aGl0ZS1zcGFjZTogcHJlOyAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOTAlOyIgY2xhc3M9InByb2dyYW1saXN0aW5nIj5Mb2FkTW9kdWxlIHJpdmV0X21vZHVsZQk8ZW0gY2xhc3M9InJlcGxhY2VhYmxlIj48Y29kZT4vdXNyL2xpYi9hcGFjaGUyL21vZHVsZXMvbW9kX3JpdmV0LnNvPC9jb2RlPjwvZW0+Cgk8L3ByZT48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgVGhpcyB0ZWxscyBBcGFjaGUgdG8gbG9hZCB0aGUgUml2ZXQgc2hhcmVkIG9iamVjdCwgd2hlcmV2ZXIKCSAgaXQgaGFwcGVucyB0byByZXNpZGUgb24geW91ciBmaWxlIHN5c3RlbS4gIE5vdyB3ZSBoYXZlIHRvCgkgIHRlbGwgQXBhY2hlIHdoYXQga2luZCBvZiBmaWxlcyBhcmUgIlJpdmV0IiBmaWxlcyBhbmQgaG93IHRvCgkgIHByb2Nlc3MgdGhlbToKCTwvcD48cHJlIHN0eWxlPSJiYWNrZ3JvdW5kOiNjY2M7IG1hcmdpbjogMmV4OyBtYXJnaW4tcmlnaHQ6IDEwJTsgICAgICAgcGFkZGluZzogMWV4OyBib3JkZXI6IGRhc2hlZCBibGFjayAxcHggOyB3aGl0ZS1zcGFjZTogcHJlOyAgICAgIGZvbnQtZmFtaWx5OiBtb25vc3BhY2U7IGZvbnQtc2l6ZTogOTAlOyIgY2xhc3M9InByb2dyYW1saXN0aW5nIj5BZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcml2ZXQgLnJ2dApBZGRUeXBlIGFwcGxpY2F0aW9uL3gtcml2ZXQtdGNsIC50Y2w8L3ByZT48cCBzdHlsZT0id2lkdGg6OTAlIj4KCSAgVGhlc2UgdGVsbCBBcGFjaGUgdG8gcHJvY2VzcyBmaWxlcyB3aXRoIHRoZQoJICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi5ydnQ8L2NvZGU+IGFuZCA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPi50Y2w8L2NvZGU+CgkgIGV4dGVuc2lvbnMgYXMgUml2ZXQgZmlsZXMuCgk8L3A+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIFRoZSBjaGFyYWN0ZXJzIGVuY29kaW5nIGNhbiBiZSBjaGFuZ2VkIHVzaW5nIHRoZSA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5oZWFkZXIgdHlwZTwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IGNvbW1hbmQsCgkgIGJ1dCB5b3UgY2FuIGFsc28gY2hhbmdlIHRoZSBkZWZhdWx0IGNoYXJzZXQgZm9yIHRoZSB3aG9sZSBzaXRlOgoJPC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkFkZFR5cGUgJ2FwcGxpY2F0aW9uL3gtaHR0cGQtcml2ZXQ7Y2hhcnNldD11dGYtOCcgcnZ0PC9wcmU+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgICBBbGwgdGhlIHBhZ2VzIGdlbmVyYXRlZCBieSBSaXZldCBvbiB0aGlzIHNpdGUgd2lsbCBiZSBzZW50IHdpdGggYSAKCSAgICA8c3BhbiBzdHlsZT0iZm9udC1mYW1pbHk6bW9ub3NwYWNlIj48c3BhbiBjbGFzcz0iY29tbWFuZCI+PHN0cm9uZz5Db250ZW50LVR5cGU6J3RleHQvaHRtbDtjaGFyc2V0PXV0Zi04Jzwvc3Ryb25nPjwvc3Bhbj48L3NwYW4+IGhlYWRlci4KCTwvcD48cCBzdHlsZT0id2lkdGg6OTAlIj5Zb3UgbWF5IGFsc28gd2lzaCB0byB1c2UgUml2ZXQgZmlsZXMgYXMgaW5kZXggZmlsZXMgZm9yCglkaXJlY3Rvcmllcy4gIEluIHRoYXQgY2FzZSwgeW91IHdvdWxkIGRvIHRoZSBmb2xsb3dpbmc6PC9wPjxwcmUgc3R5bGU9ImJhY2tncm91bmQ6I2NjYzsgbWFyZ2luOiAyZXg7IG1hcmdpbi1yaWdodDogMTAlOyAgICAgICBwYWRkaW5nOiAxZXg7IGJvcmRlcjogZGFzaGVkIGJsYWNrIDFweCA7IHdoaXRlLXNwYWNlOiBwcmU7ICAgICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsgZm9udC1zaXplOiA5MCU7IiBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPkRpcmVjdG9yeUluZGV4IGluZGV4Lmh0bWwgaW5kZXguaHRtIGluZGV4LnNodG1sIGluZGV4LmNnaSBpbmRleC50Y2wgaW5kZXgucnZ0PC9wcmU+PHAgc3R5bGU9IndpZHRoOjkwJSI+CgkgIEZvciBvdGhlciBkaXJlY3RpdmVzIHRoYXQgUml2ZXQgcHJvdmlkZXMgZm9yIEFwYWNoZQoJICBjb25maWd1cmF0aW9uLCBwbGVhc2Ugc2VlIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSJkaXJlY3RpdmVzLmh0bWwiIHRpdGxlPSJSaXZldCBBcGFjaGUgRGlyZWN0aXZlcyI+dGhlIHNlY3Rpb24gY2FsbGVkICYjODIyMDtSaXZldCBBcGFjaGUgRGlyZWN0aXZlcyYjODIyMTs8L2E+LgoJPC9wPjwvbGk+PC9vbD48L2Rpdj48L2Rpdj48ZGl2IGNsYXNzPSJuYXZmb290ZXIiPjxocj48dGFibGUgd2lkdGg9IjEwMCUiIHN1bW1hcnk9Ik5hdmlnYXRpb24gZm9vdGVyIj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0Ij48YSBhY2Nlc3NrZXk9InAiIGhyZWY9ImluZGV4Lmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPqA8L3RkPjx0ZCB3aWR0aD0iMjAlIiBhbGlnbj0iY2VudGVyIj6gPC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0Ij6gPGEgYWNjZXNza2V5PSJuIiBocmVmPSJkaXJlY3RpdmVzLmh0bWwiPjxpbWcgc3JjPSJpbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPjwvdGQ+PC90cj48dHI+PHRkIHdpZHRoPSI0MCUiIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+QXBhY2hlIFJpdmV0oDwvdGQ+PHRkIHdpZHRoPSIyMCUiIGFsaWduPSJjZW50ZXIiPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iaW5kZXguaHRtbCI+PGltZyBzcmM9ImltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PC90ZD48dGQgd2lkdGg9IjQwJSIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+oFJpdmV0IEFwYWNoZSBEaXJlY3RpdmVzPC90ZD48L3RyPjwvdGFibGU+PC9kaXY+PC9ib2R5PjwvaHRtbD4K