PD9waHAgIAkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCQkJCXJlcXVpcmVfb25jZSgkX1NFUlZFUlsnRE9DVU1FTlRfUk9PVCddIC4gIi9lY2xpcHNlLm9yZy1jb21tb24vc3lzdGVtL2FwcC5jbGFzcy5waHAiKTsJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbmF2LmNsYXNzLnBocCIpOyAJcmVxdWlyZV9vbmNlKCRfU0VSVkVSWydET0NVTUVOVF9ST09UJ10gLiAiL2VjbGlwc2Uub3JnLWNvbW1vbi9zeXN0ZW0vbWVudS5jbGFzcy5waHAiKTsgCSRBcHAgCT0gbmV3IEFwcCgpOwkkTmF2CT0gbmV3IE5hdigpOwkkTWVudSAJPSBuZXcgTWVudSgpOwkJaW5jbHVkZSgkQXBwLT5nZXRQcm9qZWN0Q29tbW9uKCkpOyAgICAjIEFsbCBvbiB0aGUgc2FtZSBsaW5lIHRvIHVuY2x1dHRlciB0aGUgdXNlcidzIGRlc2t0b3AnCgoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCgkjCgkjIHNhbXBsZV8zY29sLnBocAoJIwoJIyBBdXRob3I6IAkJRGVuaXMgUm95CgkjIERhdGU6CQkJMjAwNS0xMS0wNwoJIwoJIyBEZXNjcmlwdGlvbjogVHlwZSB5b3VyIHBhZ2UgY29tbWVudHMgaGVyZSAtIHRoZXNlIGFyZSBub3Qgc2VudCB0byB0aGUgYnJvd3NlcgoJIwoJIwoJIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKCQoJIwoJIyBCZWdpbjogcGFnZS1zcGVjaWZpYyBzZXR0aW5ncy4gIENoYW5nZSB0aGVzZS4gCgkkcGFnZVRpdGxlIAkJPSAiQ29tbWVyY2lhbCBQbHVnLWlucyI7CgkkcGFnZUtleXdvcmRzCT0gInBsdWctaW5zLCBjYXRhbG9ndWUiOwoJJHBhZ2VBdXRob3IJCT0gIk1pa2UgTWlsaW5rb3ZpY2gsIE5vdi4gMjYsIDIwMDUiOwoJCgkjIEFkZCBwYWdlLXNwZWNpZmljIE5hdiBiYXJzIGhlcmUKCSMgRm9ybWF0IGlzIExpbmsgdGV4dCwgbGluayBVUkwgKGNhbiBiZSBodHRwOi8vd3d3LnNvbWVvdGhlcnNpdGUuY29tLyksIHRhcmdldCAoX3NlbGYsIF9ibGFuayksIGxldmVsICgxLCAyIG9yIDMpCgkjICROYXYtPmFkZE5hdlNlcGFyYXRvcigiTXkgUGFnZSBMaW5rcyIsIAkiZG93bmxvYWRzLnBocCIpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIk15IExpbmsiLCAibXlwYWdlLnBocCIsICJfc2VsZiIsIDEpOwoJIyAkTmF2LT5hZGRDdXN0b21OYXYoIkdvb2dsZSIsICJodHRwOi8vd3d3Lmdvb2dsZS5jb20vIiwgIl9ibGFuayIsIDEpOwoKCSMgRW5kOiBwYWdlLXNwZWNpZmljIHNldHRpbmdzCgkjCgkJCgkjIFBhc3RlIHlvdXIgSFRNTCBjb250ZW50IGJldHdlZW4gdGhlIEVPSFRNTCBtYXJrZXJzIQkKCSRodG1sID0gPDw8RU9IVE1MCgoJPGRpdiBpZD0ibWlkY29sdW1uIj4KCQk8aDE+PGEgbmFtZT0idG9wIj48L2E+JHBhZ2VUaXRsZTwvaDE+CgkJPHA+VGhpcyBwYWdlIGNvbnRhaW5zIGxpbmtzIHRvIGVjbGlwc2UtYmFzZWQgY29tbWVyY2lhbCBwcm9qZWN0cyBhbmQgcGx1Zy1pbnMuIAogIAkJVGhlIGxpc3RpbmdzIGhlcmUgYXJlIGludGVuZGVkIHRvIGdldCB5b3Ugc3RhcnRlZCBpbiBmaW5kaW5nIG91dCBtb3JlIGFib3V0IAogIAkJcHJvZHVjdHMgYW5kIHByb2plY3RzIGZyb20gYXJvdW5kIHRoZSBjb21tdW5pdHkuIDwvcD4KICAJCQoJCTxwPkRvbiZyc3F1bzt0IGZvcmdldCB0byBhbHNvIGxvb2sgYXQgdGhlIG1hbnkgPGEgaHJlZj0icGx1Z2luc2l0ZXMucGhwIj5jb21tdW5pdHkgcGx1Zy1pbiBzaXRlczwvYT4KCQl0aGF0IGFyZSBvdXQgdGhlcmUhPC9wPgogIAkJCgkJPHA+V2UmcnNxdW87ZCBsaWtlIHRoZXNlIHBhZ2VzIHRvIGJlIHVzZWZ1bCB0byB5b3UgLSBzbzxiPiA8L2I+cGxlYXNlIAoJCTxhIGhyZWY9Im1haWx0bzpuZXdzQGVjbGlwc2Uub3JnIj5lbWFpbDwvYT4JdXMgeW91ciBwb2ludGVycyBhbmQgY29tbWVudHMhIDwvcD4KCiAgCQk8aDM+PGEgbmFtZT0ibGlzdCI+PC9hPlBsdWctaW4gTGlzdGluZ3M8L2gzPgogIAkJPHA+SGVyZSBpcyBhIHNhbXBsZSBvZiB0aGUgY29tcGFuaWVzIGJ1aWxkaW5nIGVjbGlwc2UtYmFzZWQgcHJvamVjdHMgYW5kIHBsdWctaW5zLiAKCQkoTm90ZTogc29tZSBsaXN0aW5ncyBhcmUgYWxzbyBpbmNsdWRlZCBpbiB0aGUgVGVhbSBBZGFwdG9ycyBzZWN0aW9uLik8L3A+CgkJCjx0YWJsZSBib3JkZXI9MCBjZWxsc3BhY2luZz01IGNlbGxwYWRkaW5nPTIgd2lkdGg9IjEwMCUiID4KICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj4xMCBUZWNobm9sb2d5IC0gVmlzdWFsIFBBRCA8L2I+LSA8YSBocmVmPSJodHRwOi8vd3d3LjEwdGVjaC5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LjEwdGVjaC5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgVmlzdWFsIFBvcnRsZXQgQXBwbGljYXRpb24gRGV2ZWxvcGVyIGZvciBXZWJzcGhlcmUgUG9ydGFsLCBvciAiVmlzdWFsIFBBRCIsCglpcyBhIHJhcGlkIHBvcnRsZXQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgdG9vbC4gSXQgaXMgZGVzaWduZWQgdG8gc2ltcGxpZnkKCUlCTSBXZWJzcGhlcmUgUG9ydGxldCBkZXZlbG9wbWVudCBhbmQgcmVkdWNlIHRoZSBQb3J0bGV0IEFQSSBsZWFybmluZwoJY3VydmUgYnkgcHJvdmlkaW5nIGEgImNsaWNrIGFuZCBnbyIgcmFwaWQgYXBwbGljYXRpb24KCWRldmVsb3BtZW50IGVudmlyb25tZW50LiAgVmlzdWFsIFBBRCBmdWxseSBzdXBwb3J0cyB0aGUgV2Vic3BoZXJlIFBvcnRhbCBTZXJ2ZXIKCWZlYXR1cmVzIHN1Y2ggYXMgYWN0aW9uLWRyaXZlbiwgbW9kZXMsIHN0YXRlIGFuZCBpbnRlci1wb3J0bGV0Cgljb21tdW5pY2F0aW9uLCB3aXRob3V0IGxvc2luZyB0aGUgdGVjaG5pY2FsIGdyYW51bGFyaXR5IG9mIHRoZSBQb3J0YWwgc2VydmVyLgoJVmlzdWFsIFBBRCBpcyBidWlsdCBvbiBFY2xpcHNlIFYyLjAsIHN1cHBvcnRzIHRoZSBXZWJzcGhlcmUgUG9ydGFsIFNlcnZlciBWNCBBUEkgCglhbmQgaXQgaXMgZnVsbHkgdGVzdGVkIG9uIFdTQUQgVjU8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5BY3RpdmUgRW5kcG9pbnRzIC0gQWN0aXZlV2ViZmxvdyBQcm9mZXNzaW9uYWw8L2I+IJYgPGEgaHJlZj0iaHR0cDovL3d3dy5hY3RpdmUtZW5kcG9pbnRzLmNvbS9wcm9kdWN0cyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYWN0aXZlLWVuZHBvaW50cy5jb20vcHJvZHVjdHM8L2E+IAogICAgICA8YnIgLz4KICAgICAgQWN0aXZlV2ViZmxvdyBQcm9mZXNzaW9uYWwgaXMgYW4gaW50ZWdyYXRlZCBzZXQgb2YgaGlnaC1wcm9kdWN0aXZpdHkgdmlzdWFsIAogICAgICBkaWFncmFtbWluZyB0b29scyB0aGF0IGFsbG93IHVzZXJzIHRvIHJhcGlkbHkgY29uc3RydWN0IGJ1c2luZXNzIHByb2Nlc3MgCiAgICAgIGZsb3dzIG9mIGFueSBjb21wbGV4aXR5IHVzaW5nIHRoZSBCdXNpbmVzcyBQcm9jZXNzIEV4ZWN1dGlvbiBMYW5ndWFnZSAoQlBFTCkgCiAgICAgIHN0YW5kYXJkLiBCYXNlZCBvbiB0aGUgRWNsaXBzZSBmcmFtZXdvcmssIEFjdGl2ZVdlYmZsb3cgUHJvZmVzc2lvbmFsIHN1cHBvcnRzIAogICAgICBib3RoIHRvcC1kb3duIGFuZCBib3R0b20tdXAgcHJvY2VzcyBtb2RlbGluZywgcHJvdmlkaW5nIHVzZXJzIHdpdGggZXh0ZW5zaXZlIAogICAgICBmbGV4aWJpbGl0eSBhdCBhbGwgc3RhZ2VzIG9mIHByb2Nlc3MgZGVzaWduLiBBY3RpdmVXZWJmbG93IFByb2Zlc3Npb25hbCAKICAgICAgaW5jbHVkZXMgYW4gZW1iZWRkZWQgY29weSBvZiB0aGUgQWN0aXZlQlBFTCBFbmdpbmUsIGEgY29tbWVyY2lhbCBncmFkZSBCUEVMIAogICAgICBlbmdpbmUgdGVjaG5vbG9neSB0aGF0IHBlcmZvcm1zIHRoZSAiaGVhdnkgbGlmdGluZyIgYmVoaW5kIG1hbnkgb2YgQWN0aXZlV2ViZmxvdyAKICAgICAgUHJvZmVzc2lvbmFsknMgYWR2YW5jZWQgZmVhdHVyZXMuIFByb2Nlc3MgYXJjaGl0ZWN0cyBhbmQgYXBwbGljYXRpb24gZGV2ZWxvcGVycyAKICAgICAgdXNlIEFjdGl2ZVdlYmZsb3cgUHJvZmVzc2lvbmFsIHRvIGNyZWF0ZSBhbmQgdGVzdCBCUEVMIHByb2Nlc3MgY29tcG9zaXRpb25zLCAKICAgICAgYW5kIHRoZW4gZGVwbG95IHRob3NlIHByb2Nlc3NlcyB0byBBY3RpdmVXZWJmbG93IEVudGVycHJpc2Ugc2VydmVycywgc2lnbmlmaWNhbnRseSAKICAgICAgcmVkdWNpbmcgdGhlIHRpbWUgYW5kIGNvbXBsZXhpdHkgcmVxdWlyZWQgdG8gaW1wbGVtZW50IHNlcnZpY2VzLW9yaWVudGVkIAogICAgICBhcHBsaWNhdGlvbnMuIExlYXJuIG1vcmUgYW5kIHJlcXVlc3QgYSBmcmVlIDMwIGRheSB0cmlhbCBvZiBBY3RpdmVXZWJmbG93IAogICAgICBQcm9mZXNzaW9uYWwgYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hY3RpdmUtZW5kcG9pbnRzLmNvbS9wcm90cmlhbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYWN0aXZlLWVuZHBvaW50cy5jb20vcHJvdHJpYWw8L2E+LiAKICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5BY3R1YXRlPC9iPiAtIDxiPkJJUlQ8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hY3R1YXRlLmNvbS9iaXJ0IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5hY3R1YXRlLmNvbS9iaXJ0PC9hPiAKICAgICAgPGJyIC8+CiAgICAgICAgQWN0dWF0ZSBCSVJUIGlzIGZ1bmN0aW9uYWxseSBlcXVpdmFsZW50IHRvIDxhIGhyZWY9Imh0dHA6Ly93d3cuZWNsaXBzZS5vcmcvYmlydC8iIHRhcmdldD0iX3RvcCI+RWNsaXBzZSAKICAgICAgICBCSVJUPC9hPiwgYnV0IGFsc28gcHJvdmlkZXMgc3VwcG9ydCwgbWFpbnRlbmFuY2UgYW5kIGluZGVtbmlmaWNhdGlvbi4gCiAgICAgICAgQWN0dWF0ZSBCSVJUIGluY2x1ZGVzOgogICAgICAgIDxibG9ja3F1b3RlPgogICAgICA8dWw+CiAgICAgICAgPGxpPiBBIG9uZS1idXR0b24gaW5zdGFsbGVyIGZvciBzZXR0aW5nIHVwIHRoZSBBY3R1YXRlIEJJUlQgU0RLIDwvbGk+CiAgICAgICAgPGxpPkEgY29tbWVyY2lhbCBzb2Z0d2FyZSBsaWNlbnNlIHRoYXQgZ3JhbnRzIG9yZ2FuaXphdGlvbnMgY2xlYXIsIHVuYW1iaWd1b3VzIAogICAgICAgICAgcmlnaHRzIHRvIGJ1aWxkIGFwcGxpY2F0aW9ucyB3aXRoIEJJUlQgPC9saT4KICAgICAgICA8bGk+UmVndWxhciBtYWludGVuYW5jZSBvZiBCSVJUIHNvZnR3YXJlIHRoYXQgZGVsaXZlcnMgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+VGVjaG5pY2FsIHN1cHBvcnQgc2VydmljZXMgaW5jbHVkaW5nIGVtYWlsIGFuZCBwaG9uZSBzdXBwb3J0LCByZWxlYXNlIAogICAgICAgICAgYWxlcnRzLCBhcyB3ZWxsIGFzIGFjY2VzcyB0byBkb3dubG9hZHMsIGtub3dsZWRnZSBiYXNlcywgYnVnIGxvZ3MgYW5kIAogICAgICAgICAgZm9ydW1zIDwvbGk+CiAgICAgICAgPGxpPlRyYWluaW5nIGFuZCBhcHBsaWNhdGlvbi1kZXZlbG9wbWVudCBzZXJ2aWNlcyA8L2xpPgogICAgICA8L3VsPgogICAgICA8L2Jsb2NrcXVvdGU+CiAgICAgIEFjdHVhdGUgQklSVCBsaWNlbnNlcyBhcmUgYXZhaWxhYmxlIGluIG11bHRpcGxlIGxldmVscyCWIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWN0dWF0ZS5jb20vYmlydC9wcm9kdWN0cy9pbmRleC5hc3AjU3VwcG9ydEZlYXR1cmVzIiB0YXJnZXQ9Il9ibGFuayI+QmFzaWMsIAogICAgICAgIFNpbHZlciBhbmQgR29sZDwvYT4gliBhbGxvd2luZyB5b3UgdG8gdGFpbG9yIGEgc2VydmljZXMgcGFja2FnZSB0byB5b3VyIAogICAgICAgIHNwZWNpZmljIG5lZWRzLiAKICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QWNjdVJldiBBY2N1QnJpZGdlIGZvciBFY2xpcHNlIFBsdWctSW48L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hY2N1cmV2LmNvbS9hY2N1YnJpZGdlLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFjY3VyZXYuY29tL2FjY3VicmlkZ2UuaHRtbDwvYT4gCiAgICAgIDxiciAvPgoJICBUaGUgQWNjdUJyaWRnZSB0ZWFtIHBsdWctaW4gZm9yIEVjbGlwc2UgdmVyc2lvbiA0LjAgYnJpbmdzIHRoZSBwb3dlciBvZiBBY2N1UmV2J3MgYXdhcmQtd2lubmluZyBTQ00gc3lzdGVtIHRvIEVjbGlwc2UgdXNlcnMuIEVjbGlwc2UgZGV2ZWxvcGVycyBnYWluIGEgdHJhbnNwYXJlbnQsIHN0YWJsZSwgYW5kIGhpZ2hseSBmdW5jdGlvbmFsIGVudmlyb25tZW50IHdpdGggc3RyZWFtLWJhc2VkIHByb2Nlc3MgYXV0b21hdGlvbiBhbmQgcHJpdmF0ZSB3b3Jrc3BhY2VzIGZvciBkb2luZyBjb21wbGV4LCBnbG9iYWxseSBkaXN0cmlidXRlZCBwYXJhbGxlbCBkZXZlbG9wbWVudC4gVGhpcyBpbmNsdWRlcyBwZXJmb3JtaW5nIGNvbW1vbiBvcGVyYXRpb25zIG9uIHdvcmtzcGFjZXMsIHN1Y2ggYXMga2VlcCwgcHJvbW90ZSwgZmlsZSBtb3ZlcywgYW5kIGZpbGUgcmVuYW1lcy4gRnVsbCBpbnRlZ3JhdGlvbiBiZXR3ZWVuIEVjbGlwc2UgYW5kIEFjY3VSZXYgY2hhbmdlIHBhY2thZ2VzIGVuYWJsZXMgZGV2ZWxvcGVycyBhbmQgcmVsZWFzZSBlbmdpbmVlcnMgdG8gdXBkYXRlIGlzc3VlIHN0YXR1cyBpbiBBY2N1UmV2IGZyb20gd2l0aGluIEVjbGlwc2UsIHNpZ25pZmljYW50bHkgaW1wcm92aW5nIHRyYWNlYWJpbGl0eSBhbmQgYWlkaW5nIGNvbXBsaWFuY2UgaW5pdGlhdGl2ZXMgYW5kIElUIGF1ZGl0LWFiaWxpdHkgd2l0aGluIGFuIG9yZ2FuaXphdGlvbi4gCiAgICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QWN1Y29ycCAtIEFDVUNPQk9MLUdUIEVjbGlwc2UgUGx1Zy1pbjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmFjdWNvcnAuY29tL2VjbGlwc2UiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFjdWNvcnAuY29tL2VjbGlwc2U8L2E+IAogICAgICA8YnIgLz4KICAgICAgV2l0aCB0aGUgQUNVQ09CT0wtR1QgRWNsaXBzZSBQbHVnLWluLCBzb2Z0d2FyZSBkZXZlbG9wZXJzIGNhbiB0YWtlIGFkdmFudGFnZSAKICAgICAgb2YgdGhlIGluZGVwZW5kZW50IGFuZCByb3lhbHR5LWZyZWUgRWNsaXBzZSBpbnRlZ3JhdGVkIGRldmVsb3BtZW50IGVudmlyb25tZW50IAogICAgICAoSURFKSB3aGlsZSBtYWludGFpbmluZyBhbmQgZW5oYW5jaW5nIHRoZWlyIG9yZ2FuaXphdGlvbiZyc3F1bztzIGJ1c2luZXNzLWNyaXRpY2FsIAogICAgICBDT0JPTCBhcHBsaWNhdGlvbnMgb24gV2luZG93cywgVU5JWCBhbmQgTGludXguIFRoZSBBY3Vjb3JwIFBsdWctaW4gbWFrZXMgCiAgICAgIGl0IHBvc3NpYmxlIHRvIGNyZWF0ZSBhbiBBQ1VDT0JPTC1HVCBwZXJzcGVjdGl2ZSBmcm9tIHdpdGhpbiBFY2xpcHNlLiBUaGVuLCAKICAgICAgdXNpbmcgdGhpcyBwZXJzcGVjdGl2ZSwgZGV2ZWxvcGVycyBhbmQgc29mdHdhcmUgdGVzdGVycyBjYW4gYWNjZXNzIEFjdWNvcnAmcnNxdW87cyAKICAgICAgQUNVQ09CT0wtR1QgZGV2ZWxvcG1lbnQgc3lzdGVtLXdoaWNoIGluY2x1ZGVzIGEgY29tcGlsZXIsIHRoZSBDT0JPTCBWaXJ0dWFsIAogICAgICBNYWNoaW5lIChydW50aW1lKSwgdGhlIFZpc2lvbiBmaWxlIHN5c3RlbSwgYW5kIGEgc291cmNlLWxldmVsIGludGVyYWN0aXZlIAogICAgICBkZWJ1Z2dlci4gVGhpcyBlbmFibGVzIGRldmVsb3BlcnMgdG8gbW9kZXJuaXplIHRoZWlyIENPQk9MIGJ1c2luZXNzIHN5c3RlbXMsIAogICAgICB3cml0dGVuIGluIEFDVUNPQk9MLUdULCB3aGlsZSBhY2Nlc3NpbmcgdGhlIHJpY2ggdmFyaWV0eSBvZiBwbHVnLWlucyBvZmZlcmVkIAogICAgICBieSBjb250cmlidXRvcnMgdG8gdGhlIEVjbGlwc2UgRm91bmRhdGlvbi4gCiAgICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkFkb2JlIC0gRmxleCBCdWlsZGVyIDI8L2I+LSA8YSBocmVmPSJodHRwOi8vbGFicy5hZG9iZS5jb20vZmxleHByb2R1Y3RsaW5lIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2xhYnMuYWRvYmUuY29tL2ZsZXhwcm9kdWN0bGluZTwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgRmxleCBCdWlsZGVyIDIgRWNsaXBzZSBwbHVnLWluIGVuYWJsZXMgZGV2ZWxvcGVycyB0byBxdWlja2x5IGJ1aWxkIHJpY2ggCiAgICAgIGNsaWVudC1zaWRlIGxvZ2ljIGJhc2VkIG9uIHRoZSBwb3dlcmZ1bCBGbGV4IGZyYW1ld29yayB0aGF0IGludGVncmF0ZXMgd2l0aCAKICAgICAgWE1MLCB3ZWIgc2VydmljZXMsIG9yIEZsZXggRW50ZXJwcmlzZSBTZXJ2aWNlcy4gTGV2ZXJhZ2luZyB0aGUgdWJpcXVpdG91cyAKICAgICAgY3Jvc3MtYnJvd3NlciBGbGFzaCBQbGF5ZXIsIEZsZXggZW5hYmxlcyBkZXZlbG9wZXJzIHRvIGRlcGxveSBhcHBsaWNhdGlvbnMgCiAgICAgIHRoYXQgaGF2ZSB0aGUgcmVzcG9uc2l2ZW5lc3MgYW5kIHJpY2huZXNzIG9mIGRlc2t0b3Agc29mdHdhcmUgYW5kIHJlYWNoIAogICAgICBvZiB0aGUgd2ViLiBEZXZlbG9wZXJzIGNhbiBjcmVhdGUgYSB3aWRlIHJhbmdlIG9mIHJpY2ggdXNlciBleHBlcmllbmNlcywgCiAgICAgIHJhbmdpbmcgZnJvbSBzaW1wbGUgaW50ZXJhY3RpdmUgc2l0ZXMgdG8gZGF0YS1pbnRlbnNpdmUgZW50ZXJwcmlzZSBhcHBsaWNhdGlvbnMuIAogICAgICBFeGFtcGxlcyBvZiByaWNoIEludGVybmV0IGFwcGxpY2F0aW9ucyBidWlsdCBpbiBGbGV4IGluY2x1ZGUgZGF0YSBkYXNoYm9hcmRzIAogICAgICBhbmQgcG9ydGFscywgaW50ZXJhY3RpdmUgcHJvZHVjdCBjb25maWd1cmF0b3JzLCBhbmQgZGF0YS1pbnRlbnNpdmUgYnVzaW5lc3MgCiAgICAgIGFwcGxpY2F0aW9ucy4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QUZUSSAtIERhdGFTY29wZSBKREJDPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly9hZnRpcGx1Z2lucy5jb20vZGF0YXNjb3BlL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vYWZ0aXBsdWdpbnMuY29tL2RhdGFzY29wZS9pbmRleC5odG1sPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIERhdGFTY29wZSBKREJDIGlzIGFuIGV4dGVuc2libGUgcGx1Z2luIGZvciBFY2xpcHNlIGRlc2lnbmVkIHRvIGFsbG93IGVhc3ksIAogICAgICBjb21mb3J0YWJsZSBhbmQgdW5pdmVyc2FsIGFjY2VzcyB0byByZXNvdXJjZXMgd2l0aGluIGRhdGFiYXNlcy4gRWRpdCB0YWJsZSAKICAgICAgZGF0YSB3aXRoIHNwcmVhZHNoZWV0LWxpa2UgZWFzZSwgYW5kIHZpc3VhbGx5IGNyZWF0ZSB2aWV3cyB3aXRoIHRoZSBRdWVyeSAKICAgICAgRWRpdG9yLiBEYXRhU2NvcGUgaXMgaGlnaGx5IGN1c3RvbWl6YWJsZS4gSnVzdCBhYm91dCBldmVyeSBwYXJ0IG9mIHRoZSBEYXRhU2NvcGUgCiAgICAgIEpEQkMgVUkgY2FuIGJlIGF1Z21lbnRlZCBlYXNpbHkgdXNpbmcgc2ltcGxlIEphdmEgY2xhc3Nlcy4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QWdpdGFyPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWdpdGFyLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYWdpdGFyLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICBBZ2l0YXIgU29mdHdhcmUgaW1wcm92ZXMgcXVhbGl0eSBhbmQgcmVkdWNlcyBsaWZlY3lsZSBjb3N0IG9mIEphdmEgYXBwbGljYXRpb25zIAogICAgICBieSBwcm92aWRpbmcgc29sdXRpb25zIGZvciBhdXRvbWF0aW5nIGFuZCBtYW5hZ2luZyBzb2Z0d2FyZSB0ZXN0aW5nIGZvciAKICAgICAgdGhlIGVudGVycHJpc2UgSmF2YSBkZXZlbG9wZXIuIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+QWdpdGF0b3I8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hZ2l0YXIuY29tL3Byb2R1Y3RzLzAwMDAwNy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+QWdpdGF0b3I8L2E+IAogICAgICBpcyB0aGUgZ3JvdW5kLWJyZWFraW5nIHNvZnR3YXJlIHByb2R1Y3QgdGhhdCBoZWxwcyBzb2Z0d2FyZSBkZXZlbG9wbWVudCAKICAgICAgdGVhbXMgaW1wbGVtZW50IERldmVsb3BlciBUZXN0aW5nIChhLmsuYS4gdW5pdCB0ZXN0aW5nKS4gQWdpdGF0b3IgY3JlYXRlcyAKICAgICAgaW5zdGFuY2VzIG9mIHRoZSBjbGFzc2VzIGJlaW5nIGV4ZXJjaXNlZCwgY2FsbGluZyBlYWNoIG1ldGhvZCB3aXRoIGNhcmVmdWxseSAKICAgICAgc2VsZWN0ZWQsIGR5bmFtaWNhbGx5IGNyZWF0ZWQgc2V0cyBvZiBpbnB1dCBkYXRhLCBhbmQgYW5hbHl6aW5nIHRoZSByZXN1bHRzLiAKICAgICAgV2hlbiBvYmplY3RzIGRlcGVuZCBvbiBvdGhlciBvYmplY3RzLCBBZ2l0YXRvciBhbHNvIGF1dG9tYXRpY2FsbHkgY29uc3RydWN0cyAKICAgICAgdGhvc2Ugb2JqZWN0cywgZW5hYmxpbmcgZnVsbCBhbmFseXNpcyBvZiB0aGUgcG9zc2libGUgYmVoYXZpb3JzIG9mIHRoZSBjb2RlLCAKICAgICAgZXZlbiBpZiB0aGV5IGRlcGVuZCBvbiB0aGlyZC1wYXJ0eSBsaWJyYXJpZXMuIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+TWFuYWdlbWVudCBEYXNoYm9hcmQ8L2I+IC0gQXMgZGV2ZWxvcGVycyB1c2UgQWdpdGF0b3IgdG8gY3JlYXRlIHRlc3QgCiAgICAgIGFzc2V0cywgdGhlIDxhIGhyZWY9Imh0dHA6Ly93d3cuYWdpdGFyLmNvbS9wcm9kdWN0cy8wMDAwMDYuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPkFnaXRhciAKICAgICAgTWFuYWdlbWVudCBEYXNoYm9hcmQ8L2E+IHByb3ZpZGVzIGEgY29tcHJlaGVuc2l2ZSB2aWV3IG9mIHRoZSBwcm9qZWN0knMgCiAgICAgIGhlYWx0aCBhbmQgdGhlIHByb2dyZXNzIG9mIHRoZSB0ZWFtknMgRGV2ZWxvcGVyIFRlc3RpbmcgZWZmb3J0cy4gVGhpcyBlbmFibGVzIAogICAgICB0ZWFtcyB0byBzZXQgcHJpb3JpdGllcyBiYXNlZCBvbiByaXNrLCBlc3RhYmxpc2ggdGFyZ2V0cyBmb3IgYm90aCB0aGUgdGVhbSAKICAgICAgYW5kIGluZGl2aWR1YWwgZGV2ZWxvcGVycywgbWVhc3VyZSBwcm9ncmVzcywgYW5kIGNvcnJlY3RseSBhbGxvY2F0ZSByZXNvdXJjZXMuIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QWxkb24gLSBBbGRvbiBBcHBsaWNhdGlvbiBMaWZldGltZSBNYW5hZ2VtZW50IFN1aXRlPC9iPiAKICAgICAgLSA8YSBocmVmPSJodHRwOi8vd3d3LmFsZG9uLmNvbS9wcm9kdWN0cy9lbnRlcnByaXNlc29sdXRpb25zLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFsZG9uLmNvbS9wcm9kdWN0cy9lbnRlcnByaXNlc29sdXRpb25zLmh0bWw8L2E+IAogICAgICA8YnIgLz4KICAgICAgVGhlIEFsZG9uIEFwcGxpY2F0aW9uIExpZmV0aW1lIE1hbmFnZW1lbnQgU3VpdGUgaXMgYW4gZW50ZXJwcmlzZSBzb2Z0d2FyZSAKICAgICAgY29uZmlndXJhdGlvbiBhbmQgY2hhbmdlIG1hbmFnZW1lbnQgc29sdXRpb24gYnVpbHQgdG8gbWFuYWdlIHRoZSBjb21wbGV4aXRpZXMgCiAgICAgIG9mIGFueSBJVCBlbnZpcm9ubWVudC4gVGhyb3VnaCB0aHJlZSBpbnRlZ3JhdGVkIHByb2R1Y3RzLCB0aGUgQWxkb24gTGlmZXRpbWUgCiAgICAgIFN1aXRlIHByb3ZpZGVzIGF1dG9tYXRlZCBkZXZlbG9wbWVudCBwcm9jZXNzIGNvbnRyb2wsIG11bHRpcGxlIHZlcnNpb24gbWFuYWdlbWVudCwgCiAgICAgIGRlcGxveW1lbnQsIGlzc3VlIHRyYWNraW5nIGFuZCBjb2xsYWJvcmF0aW9uLiBJdCBpbmNsdWRlcyBBdXRvbWF0ZWQgRGlzdHJpYnV0aW9uIAogICAgICAmIERlcGxveW1lbnQsIGFuZCBTZXJ2aWNlIERlc2sgJiBJbmNpZGVudCBNYW5hZ2VtZW50IGFuZCBmZWF0dXJlcyBkb3dubG9hZGFibGUgCiAgICAgIHBsdWctaW5zIGZvciBFY2xpcHNlIGFuZCBhbGwgSUJNIFdlYlNwaGVyZSBTdHVkaW8gc3VpdGUgSURFcy4gWW91IGNhbiByZWdpc3RlciAKICAgICAgdG8gZG93bmxvYWQgYSB0cmlhbCB2ZXJzaW9uIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYWxkb24uY29tL2Rvd25sb2FkL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFsZG9uLmNvbS9kb3dubG9hZC9pbmRleC5odG1sPC9hPi4gCiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5BbHRvdmEgLSBYTUxTcHkgMjAwNSA8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hbHRvdmEuY29tL2ZlYXR1cmVzX2VjbGlwc2UuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPiAKICAgICAgaHR0cDovL3d3dy5hbHRvdmEuY29tL2ZlYXR1cmVzX2VjbGlwc2UuaHRtbDwvYT4gPGJyIC8+CiAgICAgIDxiPkVudGVycHJpc2U8L2I+IC0gQWx0b3ZhIFhNTFNweSAyMDA1IEVudGVycHJpc2UgRWRpdGlvbiBpcyB0aGUgaW5kdXN0cnkgCiAgICAgIHN0YW5kYXJkIFhNTCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCBmb3IgbW9kZWxpbmcsIGVkaXRpbmcsIGRlYnVnZ2luZywgYW5kIAogICAgICB0cmFuc2Zvcm1pbmcgYWxsIFhNTCB0ZWNobm9sb2dpZXMsIHRoZW4gYXV0b21hdGljYWxseSBnZW5lcmF0aW5nIHJ1bnRpbWUgCiAgICAgIGNvZGUgaW4gbXVsdGlwbGUgcHJvZ3JhbW1pbmcgbGFuZ3VhZ2VzLiBPcHRpb25hbCBpbnRlZ3JhdGlvbiBvZiBYTUxTcHkgMjAwNSAKICAgICAgd2l0aCBFY2xpcHNlIGFsbG93cyB5b3UgdG8gc2VhbWxlc3NseSBhY2Nlc3MgWE1MU3B5IDIwMDUgdmlld3MgYW5kIFhNTCBkZXZlbG9wbWVudCAKICAgICAgdG9vbHMgZnJvbSB3aXRoaW4gdGhlIHBvcHVsYXIgSURFLiBYTUxTcHkgMjAwNSBFbnRlcnByaXNlIEVkaXRpb24gaXMgdGhlIAogICAgICB1bHRpbWF0ZSBwcm9kdWN0aXZpdHkgZW5oYW5jZXIgZm9yIEoyRUUsIC5ORVQsIEVjbGlwc2UsIGFuZCBkYXRhYmFzZSBkZXZlbG9wZXJzIAogICAgICB0aGF0IG5lZWQgdGhlIGxhdGVzdCBYTUwsIFdlYiBzZXJ2aWNlcyBhbmQgZGF0YWJhc2UgdGVjaG5vbG9naWVzLiA8YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPlByb2Zlc3Npb25hbDwvYj4gLSBBbHRvdmEgWE1MU3B5IDIwMDUgUHJvZmVzc2lvbmFsIEVkaXRpb24gaXMgdGhlIGluZHVzdHJ5IAogICAgICBsZWFkaW5nIFhNTCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCwgcHJvdmlkaW5nIGludHVpdGl2ZSBlZGl0aW5nIHZpZXdzIGFuZCAKICAgICAgcG93ZXJmdWwgWE1MIHV0aWxpdGllcyB0byBtb2RlbCwgZWRpdCwgdHJhbnNmb3JtLCBhbmQgZGVidWcgWE1MIHRlY2hub2xvZ2llcyAKICAgICAgcXVpY2tseSBhbmQgZWFzaWx5LiBYTUxTcHkgMjAwNSBqb2lucyBYTUwgU2NoZW1hIGFuZCBEVEQgY3JlYXRpb24gd2l0aCB0aGUgCiAgICAgIGVkaXRpbmcgb2YgWE1MIGluc3RhbmNlIGRvY3VtZW50cy4gVGhlIG9wdGlvbmFsIGludGVncmF0aW9uIG9mIFhNTFNweSAyMDA1IAogICAgICBQcm9mZXNzaW9uYWwgRWRpdGlvbiB3aXRoIEVjbGlwc2UgYWxsb3dzIHlvdSB0byBzZWFtbGVzc2x5IGFjY2VzcyBYTUxTcHkgCiAgICAgIDIwMDUgZWRpdGluZyB2aWV3cyBhbmQgWE1MIGRldmVsb3BtZW50IHRvb2xzIGZyb20gd2l0aGluIHRoZSBwb3B1bGFyIElERS4gCiAgICAgIEFsdG92YSBYTUxTcHkgMjAwNSBQcm9mZXNzaW9uYWwgRWRpdGlvbiBpcyBmb3IgdGhlIHByb2Zlc3Npb25hbCBkZXZlbG9wZXIgCiAgICAgIHdvcmtpbmcgd2l0aCBYTUwsIFhTTFQsIFhQYXRoLCBYUXVlcnksIGFuZCBYTUwgU2NoZW1hLiA8YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPkhvbWU8L2I+IC0gQWx0b3ZhIFhNTFNweSAyMDA1IEhvbWUgRWRpdGlvbiBpcyBhIHRvdGFsbHkgRlJFRSBlbnRyeSBsZXZlbCAKICAgICAgWE1MIGRldmVsb3BtZW50IHRvb2wgZm9yIGRlc2lnbmluZyBhbmQgZWRpdGluZyBhcHBsaWNhdGlvbnMgaW52b2x2aW5nIFhNTCAKICAgICAgdGVjaG5vbG9naWVzLiBYTUxTcHkgSG9tZSBFZGl0aW9uIGlzIGlkZWFsbHkgc3VpdGVkIGZvciBob2JieWlzdHMsIGVudHJ5IAogICAgICBsZXZlbCBkZXZlbG9wZXJzLCBhbmQgc3R1ZGVudHMuIFhNTFNweSAyMDA1IEhvbWUgRWRpdGlvbiBhbHNvIHN1cHBvcnRzIHNlYW1sZXNzIAogICAgICBpbnRlZ3JhdGlvbiB3aXRoIEVjbGlwc2UsIGFsbG93aW5nIHlvdSB0byBhY2Nlc3MgdGhlIHJpY2ggWE1MIGVkaXRpbmcgY2FwYWJpbGl0aWVzIAogICAgICBvZiBYTUxTcHkgMjAwNSBkaXJlY3RseSB3aXRoaW4gdGhlIEVjbGlwc2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkFtemkhIEluYyAtIEFtemkhIFByb2xvZyArIExvZ2ljIFNlcnZlciA8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hbXppLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPiAKICAgICAgaHR0cDovL3d3dy5hbXppLmNvbTwvYT4gPGJyIC8+CiAgICAgIEFtemkhIFByb2xvZyArIExvZ2ljIFNlcnZlciBpcyBhIGZ1bGwgZGV2ZWxvcG1lbnQgc3lzdGVtIGZvciBidWlsZGluZyBhbmQgCiAgICAgIGRlYnVnZ2luZyBpbnRlbGxpZ2VudCBsb2dpYy1iYXNlcyBmb3IgcnVsZXMsIHJlZ3VsYXRpb25zLCB3b3JrZmxvdywgYWR2aWNlLCAKICAgICAgcHJvYmxlbSBzb2x2aW5nLCBjb25maWd1cmF0aW9uIGFuZCBtb3JlIHdpdGggdGhlIEVjbGlwc2UgSURFLiBMb2dpYy1iYXNlcyAKICAgICAgY2FuIGJlIGVtYmVkZGVkIGluIGFsbW9zdCBhbnkgdG9vbCBvciBsYW5ndWFnZSBpbmNsdWRpbmcgSmF2YSwgQysrLCBWQiwgCiAgICAgIERlbHBoaSwgUHl0aG9uIGFuZCBXZWIgU2VydmVycyB1bmRlciBXaW5kb3dzIGFuZCBVbml4LiBZb3UgY2FuIGRvd25sb2FkIAogICAgICBmcm9tIHRoZSBBbXppISBzaXRlIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYW16aS5jb20vZG93bmxvYWQvaW5kZXguaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5hbXppLmNvbS9kb3dubG9hZC9pbmRleC5odG08L2E+IAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QXJyYXkgVGVjaG5vbG9neTwvYj4gLSA8Yj5BcnJheSBDb25maWd1cmF0aW9uPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXJyYXl0ZWNobm9sb2d5LmNvbS9wYWdlUHJvZHVjdC5hc3AiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFycmF5dGVjaG5vbG9neS5jb20vcGFnZVByb2R1Y3QuYXNwPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEFycmF5IENvbmZpZ3VyYXRpb24gaXMgYSBmdWxsIHN1aXRlIG9mIGFwcGxpY2F0aW9ucyBhbmQgY29tcG9uZW50cyBmb3IgaW1wbGVtZW50YXRpb24gCiAgICAgIG9mIGhpZ2gtZW5kIGxhcmdlIHNjYWxlIGNvbmZpZ3VyYXRpb24gc29sdXRpb25zIGFjcm9zcyBib3RoIGRpcmVjdCBhbmQgaW5kaXJlY3QgCiAgICAgIHNhbGVzIGNoYW5uZWxzLiBJbmNsdWRlZCBpbiBBcnJheSBDb25maWd1cmF0aW9uIGlzIEFycmF5IFN0dWRpbywgYSBtb2RlbGluZyAKICAgICAgZW52aXJvbm1lbnQgYmFzZWQgb24gdGhlIEVjbGlwc2UgcGxhdGZvcm0uIE1vZGVsIGNyZWF0aW9uIGFuZCBlc3BlY2lhbGx5IAogICAgICBtYWludGVuYW5jZSBpcyBhIG1ham9yIHRhc2sgaW4gYW55IGNvbnN0cmFpbnQgc29sdmVyIHJlbGF0ZWQgcHJvamVjdDsgYSAKICAgICAgdGFzayB0aGF0IGlzIHNpbXBsaWZpZWQgc2lnbmlmaWNhbnRseSB3aXRoIHRoZSBpbnRyb2R1Y3Rpb24gb2YgQXJyYXkgU3R1ZGlvIAogICAgICB3aXRoIGl0cyB3aWRlIHNlbGVjdGlvbiBvZiB2YXJpYWJsZSB0eXBlcywgZGVjbGFyYXRpdmUgKGkuZS4gbm90IHByb2NlZHVyYWwpIAogICAgICBsYW5ndWFnZSBhbmQgZXh0ZW5zaXZlIHVzZSBvZiBlYXNpbHkgY29tcHJlaGVuZGlibGUgdHJ1dGggdGFibGVzLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+QVNDLCBJbmMgLSBTV1R3b3JrYmVuY2ggRXNzZW50aWFsIERhdGE8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5zd3R3b3JrYmVuY2guY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5zd3R3b3JrYmVuY2guY29tIAogICAgICA8L2E+PGJyIC8+CiAgICAgIFNXVHdvcmtiZW5jaCBFc3NlbnRpYWwgRGF0YSBpcyBhIGRhdGEtYXdhcmUgY29udHJvbCBmcmFtZXdvcmsgZm9yIEVjbGlwc2UgCiAgICAgIGFwcGxpY2F0aW9ucy4gVGhpcyBsaWJyYXJ5IGJpbmRzIHN0YW5kYXJkIFNXVCBjb250cm9scyB0byBKYXZhQmVhbiBwcm9wZXJ0aWVzIAogICAgICBvbiBwbGFpbiBvbGQgSmF2YSBvYmplY3RzLiBJbiBhZGRpdGlvbiwgaXQgcHJvdmlkZXMgcG93ZXJmdWwgZXh0ZW5zaWJsZSAKICAgICAgZmllbGQtbGV2ZWwgdmFsaWRhdGlvbiBjYXBhYmlsaXRpZXMgdXNpbmcgeW91ciBjaG9pY2Ugb2YgcmVndWxhciBleHByZXNzaW9ucywgCiAgICAgIGVkaXQgbWFza3MsIGFuZCBzdGFuZGFyZCBKYXZhIGNvZGUuIEVzc2VudGlhbCBEYXRhIGFkZHMgYSBwb3dlcmZ1bCB2aXJ0dWFsIAogICAgICB0YWJsZSBjb250cm9sIHRoYXQgbWFrZXMgU1dUJnJzcXVvO3MgdGFibGUgY29udHJvbCB3b3JrIHRoZSB3YXkgZW5kLXVzZXJzIGV4cGVjdC4gCiAgICAgIFNXVHdvcmtiZW5jaCBwcm9qZWN0cyBhcmUgbGljZW5zZWQgdW5kZXIgYW4gT1NJLWFwcHJvdmVkIG9wZW4tc291cmNlIGxpY2Vuc2UgCiAgICAgIGFuZCBvcHRpb25hbGx5IHVuZGVyIGEgY29tbWVyY2lhbCBzb2Z0d2FyZSBsaWNlbnNlLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkF0b3plZCBTb2Z0d2FyZSAtIEludHJhV2ViIGZvciBFY2xpcHNlPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXRvemVkLmNvbS9pbnRyYXdlYi8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmF0b3plZC5jb20vaW50cmF3ZWIvPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEludHJhV2ViIGlzIGEgZnJhbWV3b3JrIGFuZCBjb21wb25lbnQgc2V0IGZvciBidWlsZGluZyB3ZWIgYXBwbGljYXRpb25zIAogICAgICB2aXN1YWxseS4gVGhyb3VnaCBpdHMgSFRNTCByZW5kZXJpbmcgZW5naW5lLCB0aGUgSW50cmFXZWIgdmlzdWFsIGRlc2lnbmVyIAogICAgICBhbGxvd3MgZGV2ZWxvcGVycyB0byBkZXNpZ24gd2ViIGFwcGxpY2F0aW9ucyBpbiB0aGUgc2FtZSB3YXkgYXMgdGhleSB3b3VsZCAKICAgICAgYSBub3JtYWwgZGVza3RvcCBhcHBsaWNhdGlvbi4gVXNpbmcgZHJhZyBhbmQgZHJvcCwgZGV2ZWxvcGVycyBjYW4gY2FuIGRyb3AgCiAgICAgIGNvbnRyb2xzIG9uIGZvcm1zLCBob29rIHVwIGV2ZW50cywgc2V0IHByb3BlcnRpZXMgYW5kIHJ1bi4gVGhlIGNvZGUgYmVoaW5kIAogICAgICB0aGUgYXBwbGljYXRpb24gaXMgcHVyZSBKYXZhIGNvZGUgdGhhdCBpcyBleGVjdXRlZCBvbiB0aGUgc2VydmVyLiBUaGUgcGx1Zy1pbiAKICAgICAgaXMgZnVsbHkgaW50ZWdyYXRlZCB3aXRoIEVjbGlwc2UgYW5kIElCTSBXZWJzcGhlcmUgU3R1ZGlvIEFwcGxpY2F0aW9uIERldmVsb3Blci4gCiAgICAgIFZpZXcgYSBkZW1vIG9uIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXRvemVkLmNvbS9pbnRyYXdlYi9KYXZhL0VjbGlwc2VNb3ZpZS5pd3AiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmF0b3plZC5jb20vaW50cmF3ZWIvSmF2YS9FY2xpcHNlTW92aWUuaXdwPC9hPiAKICAgICAgISA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5hdFNpc3RlbWFzIFMuIEEuIC0gU3RydXRzRXh0ZW5kZWRBcmNoaXRlY3R1cmUgKFNFQSkgPC9iPiAKICAgICAgLSA8YSBocmVmPSJodHRwOi8vd3d3LmF0c2lzdGVtYXMuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5hdHNpc3RlbWFzLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICBTRUEgcGx1Z2luIGZvciBFY2xpcHNlIGFuZCBXZWJTcGhlcmUgU3R1ZGlvIGFsbG93cyB5b3UgdG8gYnVpbGQgU1RSVVRTIGFwcGxpY2F0aW9ucyAKICAgICAgaW4gYW4gZWFzeSBhbmQgbmV3IHdheS4gWW91IHdpbGwgYmUgYWJsZSB0byBhc3NlbWJsZSBhIFN0cnV0cyBhcHBsaWNhdGlvbiAKICAgICAgdXNpbmcgdmlzdWFsbHkgZGVmaW5lZCByZXVzYWJsZSBhbmQgZW5jYXBzdWxhdGVkIHNlcnZlci1zaWRlIGNvbXBvbmVudHMuIAogICAgICBFYWNoIGNvbXBvbmVudCBpcyBkZWZpbmVkIHVzaW5nIGEgdmlzdWFsIGVkaXRvciwgY2FuIGNhbGwgb3RoZXIgY29tcG9uZW50cyAKICAgICAgdGhyb3VnaCBhIGNsZWFybHkgZGVmaW5lZCBpbnRlcmZhY2UgYW5kIHByb21vdGVzIHRoZSB1c2Ugb2YgTVZDIHBhdHRlcm4uIAogICAgICBNb3Jlb3ZlciBTRUEgc3VwcGxpZXMgZXh0cmEgZnVuY3Rpb25hbGl0eSBsaWtlIGF1dG9tYXRpYyBuYXZpZ2F0aW9uIGZsb3cgCiAgICAgIGNvbnRyb2wsIGF1dG9tYXRpYyBIdHRwU2Vzc2lvbiBjbGVhbiB1cCBhbmQgdGhlIGNoYW5jZSBvZiBhc3NvY2lhdGluZyBkaXN0aW5jdCAKICAgICAgYXJlYXMgb2YgYSBwYWdlIHdpdGggaXRzIG93biBjb250cm9sIGNvbXBvbmVudC4gQSBmcmVlIGV2YWx1YXRpb24gdmVyc2lvbiAKICAgICAgY2FuIGJlIGRvd25sb2FkZWQuIEZvciBFY2xpcHNlIDIueCBhbmQgV2ViU3BoZXJlIFN0dWRpbyA1LjAueC4gYXQgPGEgaHJlZj0iaHR0cDovL3d3dy5hdHNpc3RlbWFzLmNvbS9TRUFfZW4uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYXRzaXN0ZW1hcy5jb20vU0VBX2VuLmh0bWw8L2E+IAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QXhpem9uIFRlY2hub2xvZ2llcyAtIFRpZ2VyIFhTTFQgTWFwcGVyIDwvYj4tIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXhpem9uLmNvbS8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmF4aXpvbi5jb20vPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFRpZ2VyIFhTTFQgTWFwcGVyIGlzIGFuIEVjbGlwc2UgcGx1Zy1pbiB0aGF0IGxldHMgeW91IHRvIGNyZWF0ZSBhbiBYU0wgdGVtcGxhdGUgCiAgICAgIHdpdGhvdXQgd3JpdGluZyBhbnkgY29kZS4gRG9uJnJzcXVvO3QgeW91IGhhdmUgdG8gbGVhcm4gWFNMVCBmaXJzdD8gTm90IGV4YWN0bHkuIAogICAgICBXaGVuIHlvdSB1c2UgVGlnZXIsIHlvdSBkb26SdCBuZWVkIHRvIGtub3cgWFNMVCBzeW50YXgsIHN1Y2ggYXMgJiMxNDc7bWF0Y2gmIzE0ODssIAogICAgICAmIzE0Nztmb3ItZWFjaCYjMTQ4OywgJiMxNDc7YXBwbHktdGVtcGxhdGVzJiMxNDg7LiBUaWdlciBpcyBwdXJlbHkgYSBtYXBwZXIsIG5vdCBhbiBlZGl0b3IuIAogICAgICBUaWdlciBkb2VzbpJ0IGhhdmUgc3ludGF4IGNvbnRleHQgc2Vuc2l0aXZlIGtleXdvcmQgaGVscCwgYW5kIGRvZXNuknQgYXNrIAogICAgICB5b3UgdG8gZGVmaW5lICYjMTQ3O21hdGNoJiMxNDg7LiBUaGUgb25seSB0aGluZyB5b3UgbmVlZCB0byBrbm93IGlzIHdoaWNoIGlucHV0IG1hcHMgCiAgICAgIHRvIHdoaWNoIG91dHB1dCwgYW5kIHRoZW4gZHJhZyAmIGRyb3AuIERvIHdoYXQgeW91IGRvIGJlc3QgYW5kIGxlYXZlIHRoZSAKICAgICAgZGlydHkgd29yayB0byBUaWdlci4gVGlnZXIgRGV2ZWxvcGVyIEVkaXRpb24gaXMgRnJlZS4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QXp6dXJyaSBMdGQ8L2I+LiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuYXp6dXJyaS5qcCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYXp6dXJyaS5qcDwvYT4gCiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+Q2xheSBEYXRhYmFzZSBNb2RlbGxpbmc8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5henp1cnJpLmpwL2VuL3NvZnR3YXJlL2NsYXkvaW5kZXguanNwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5henp1cnJpLmpwL2VuL3NvZnR3YXJlL2NsYXkvaW5kZXguanNwPC9hPiAKICAgICAgPGJyIC8+CglUaGUgQ2xheSBEYXRhYmFzZSBNb2RlbGxpbmcgcGx1Zy1pbiBhbGxvd3MgeW91IHRvIHZpc3VhbGx5IGRlc2lnbiBvciByZXZlcnNlIGVuZ2luZWVyIGEgZGF0YWJhc2UgCgltb2RlbCBhbmQgZ2VuZXJhdGUgdGhlIFNRTCAoRERMKSBjb2RlIGFwcHJvcHJpYXRlIGZvciB5b3VyIGRhdGFiYXNlLiBUaGUgQ29yZSBFZGl0aW9uIGlzIGZyZWUgCglvZiBjaGFyZ2UgYW5kIHN1cHBvcnRzIHNldmVyYWwgb3BlbiBzb3VyY2UgZGF0YWJhc2VzOiBIU1FMREIsIE15U3FsLCBQb3N0R3JlLCBGaXJlYmlyZCwgCglBTlNJIFNRTC05MiwgYW5kIFNBUCBEQi4gQ2xheSB2YWxpZGF0ZXMgeW91ciBkYXRhYmFzZSBtb2RlbCBhbmQgZ2VuZXJhdGVzIGEgZGlmZmVyZW50IERETCAKCXNjcmlwdCBkZXBlbmRpbmcgb24gdGhlIHNlbGVjdGVkIFNRTCBkaWFsZWN0LiBDbGF5IGN1cnJlbnRseSBoYXMgc3VwcG9ydCBmb3IgZWRpdGluZyB0aGUgU2NoZW1hcywKCVRhYmxlcywgUHJpbWFyeSBLZXlzLCBVbmlxdWUgS2V5cywgRm9yZWlnbiBLZXlzIGFuZCBJbmRleGVzIG9mIGEgZGF0YWJhc2UgbW9kZWwuIDxiciAvPjxiciAvPgogICAgICA8Yj5UeXBlc2FmZSBFbnVtZXJhdGlvbiBHZW5lcmF0b3I8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5henp1cnJpLmpwL2VuL3NvZnR3YXJlL3R5cGVzYWZlX2VudW0vaW5kZXguanNwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5henp1cnJpLmpwL2VuL3NvZnR3YXJlL3R5cGVzYWZlX2VudW0vaW5kZXguanNwPC9hPiAKICAgICAgPGJyIC8+ClRoZSBUeXBlc2FmZSBFbnVtIEdlbmVyYXRvciBwbHVnLWluIGlzIGEgd2l6YXJkIGZvciBnZW5lcmF0aW5nIEphdmEgc291cmNlIGNvZGUgCmZvciB0aGUgVHlwZXNhZmUgRW51bWVyYXRpb24gZGVzaWduIHBhdHRlcm4uIFRoZSBnZW5lcmF0ZWQgc291cmNlIGNvZGUgaXMgYmFzZWQgCm9uIGEgSkVUIHRlbXBsYXRlIGZpbGUgaW5jbHVkZWQgaW4gdGhlIHBsdWctaW4gYW5kIGNhbiBiZSBjdXN0b21pemVkIGJ5IGVkaXRpbmcgCnRoZSB0ZW1wbGF0ZS4gSkVUIChKYXZhIEVtaXR0ZXIgVGVtcGxhdGVzKSBpcyBhIGdlbmVyaWMgdGVtcGxhdGUgZW5naW5lIHRoYXQgCnVzZXMgYSBKU1AtbGlrZSBzeW50YXggKGFjdHVhbGx5IGEgc3Vic2V0IG9mIHRoZSBKU1Agc3ludGF4KSB0byBnZW5lcmF0ZSBhbnkgCnR5cGUgb2YgdGV4dCBhbmQgaXMgcGFydCBvZiB0aGUgRWNsaXBzZSBNb2RlbGluZyBGcmFtZXdvcmsgKEVNRikgcHJvamVjdC4gPGJyIC8+PGJyIC8+CiAgICAgIDxiPlNvbG9wcm9ncmFtbWluZyBFY2xpcHNlIFBsdWctaW48L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5henp1cnJpLmpwL2VuL3NvZnR3YXJlL3NvbG9wcm9ncmFtbWluZy9pbmRleC5qc3AiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmF6enVycmkuanAvZW4vc29mdHdhcmUvc29sb3Byb2dyYW1taW5nL2luZGV4LmpzcDwvYT4gCiAgICAgIDxiciAvPgoKQ2F0ZWdvcnk6IGVudGVydGFpbm1lbnQuIEZvciBsb25lbHkgUGFpciBQcm9ncmFtbWVycy4gV2hlbiBkZXZlbG9waW5nIAppbiBFY2xpcHNlLCBTb2xvIFByb2dyYW1taW5nIGNhbiBiZSB5b3VyIHZpcnR1YWwgcGFpciBwcm9ncmFtbWluZyAKcGFydG5lci4gVGhlICJCaXJkaWUiIHZpZXcgZ2l2ZXMgeW91IG9jY2FzaW9uYWwgY29tbWVudHMgZnJvbSBpdHMgd2VsbCAKb2YgYWdpbGUgZGV2ZWxvcG1lbnQgd2lzZG9tLiBESVNDTEFJTUVSOiB0aGlzIGlzIG5vdCBhbiBleHBlcnQgc3lzdGVtCm5vciBhIGRpc3RyaWJ1dGVkIHBhaXIgcHJvZ3JhbW1pbmcgdG9vbC4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+QkVBIFN5c3RlbXMsIEluYy4gPC9iPi0gPGJyIC8+PGEgaHJlZj0iaHR0cDovL3d3dy5iZWEuY29tL2ZyYW1ld29yay5qc3A/Q05UPWluZGV4Lmh0bSZhbXA7RlA9L2NvbnRlbnQvcHJvZHVjdHMvd29ya3Nob3Avc3R1ZGlvLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYmVhLmNvbS9mcmFtZXdvcmsuanNwP0NOVD1pbmRleC5odG0mYW1wO0ZQPS9jb250ZW50L3Byb2R1Y3RzL3dvcmtzaG9wL3N0dWRpby88L2E+IAogICAgICA8YnIgLz4KCTxiPkJFQSBXb3Jrc2hvcCBTdHVkaW88L2I+IC0gCgk8YnIgLz48YSBocmVmPSJodHRwOi8vd3d3Lm03LmNvbS9kb3dubG9hZE5pdHJvWC5kbz9zb3VyY2U9YmFubmVyX2VjbGlwc2Uub3JnX3BsdWdpbnBhZ2UiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm03LmNvbS9kb3dubG9hZE5pdHJvWC5kbz9zb3VyY2U9YmFubmVyX2VjbGlwc2Uub3JnX3BsdWdpbnBhZ2U8L2E+Cgk8YnIgLz48YnIgLz5CRUEgV29ya3Nob3AgU3R1ZGlvIG9mZmVycyBwcm9mZXNzaW9uYWwgbGV2ZWwgdG9vbHMgZm9yIHRoZSBlY2xpcHNlIGVudmlyb25tZW50LiBUaGUgQkVBIFdvcmtzaG9wCgkgU3R1ZGlvIGNvbnNpc3RzIG9mOiBCRUEgV29ya3Nob3AgSlNQIEVkaXRvciwgQkVBIFdvcmtzaG9wIGZvciBTdHJ1dHMsIEJFQSBXb3Jrc2hvcCBmb3IgSlNGLCAKCSBIaWJlcm5hdGUgT1JNIGFuZCBmdWxsIEFwcFhSYXkgc3VwcG9ydCBhbmQgYSBmdWxsIEpTUCBhdXRob3JpbmcgZW52aXJvbm1lbnQuCgk8YnIgLz5UaGUgU3R1ZGlvIG9mZmVycyB1bnBhcmFsbGVsZWQgc3VwcG9ydCBmb3IgdGhlIGRldmVsb3BtZW50IG9mIHNvcGhpc3RpY2F0ZWQgd2ViIGFwcGxpY2F0aW9ucyAKCWJhc2VkIG9uIGluZHVzdHJ5IHN0YW5kYXJkIGZyYW1ld29ya3MuIEJFQSBXb3Jrc2hvcCBTdHVkaW8gaW5jbHVkZXMgc29waGlzdGljYXRlZCBXWVNJV1lHIGVkaXRvcnMgCglhbmQgQkVBJ3MgQXBwWFJheSB0ZWNobm9sb2d5LCB3aGljaCBwcm92aWRlcyBhIGRlZXAgbGV2ZWwgb2YgdW5kZXJzdGFuZGluZyBvZiB0aGUgd2ViIGFwcGxpY2F0aW9uIAphcyBhIHdob2xlLCB0aGVyZWJ5IHByb3ZpZGluZyB1bnByZWNlZGVudGVkIGRlcHRoIGFuZCBjYXBhYmlsaXRpZXMgaW4gY29kZSBjb21wbGV0aW5nLCBlcnJvciBjaGVja2luZyAKYW5kIHZhbGlkYXRpb24gdGhhdCByZWFjaGVzIGV2ZXJ5IGxldmVsIG9mIHRoZSBsZXZlbHMgKE1WQykgb2YgeW91ciBhcHBsaWNhdGlvbi4gIEJFQSBXb3Jrc2hvcCBTdHVkaW8gCnByb3ZpZGVzIHRoZSBtb3N0IGFkdmFuY2VkIEphdmEgU2VydmVyIFBhZ2UgKEpTUCkgZWRpdG9yIGF2YWlsYWJsZSBpbiB0aGUgbWFya2V0IHRvZGF5LiBJdCBwcm92aWRlcyBhIApwcm9mZXNzaW9uYWwgSlNQIHNvdXJjZSBlZGl0b3IsIEpTUCBkZWJ1Z2dpbmcsIEFwcFhSYXkgc3VwcG9ydCwgYXMgd2VsbCBhcyBhIFdZU0lXWUcgdmlzdWFsIEpTUCBlZGl0b3IuIApUaGlzIG1ha2VzIGZvciBhIHBvd2VyZnVsIGNvbXBhbmlvbiBmb3IgZGV2ZWxvcGluZyBKU1AgcGFnZXMsIHdoZXRoZXIgZXhpc3Rpbmcgb3IgbmV3LiBCRUEgV29ya3Nob3AgClN0dWRpbyBhbHNvIHByb3ZpZGVzIGZ1bGwgc3VwcG9ydCBmb3IgSlNQIDIuMCB0YWcgZmlsZXMgYW5kIHRoZSBKU1AgMi4wIEV4cHJlc3Npb24gTGFuZ3VhZ2UgKEVMKS4gCgk8YnIgLz48YnIgLz48Yj5CRUEgV29ya3Nob3AgZm9yIEpTRjwvYj4gLSAKCTxiciAvPjxhIGhyZWY9Imh0dHA6Ly93d3cubTcuY29tL2Rvd25sb2FkTml0cm9YLmRvP3NvdXJjZT1iYW5uZXJfZWNsaXBzZS5vcmdfcGx1Z2lucGFnZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubTcuY29tL2Rvd25sb2FkTml0cm9YLmRvP3NvdXJjZT1iYW5uZXJfZWNsaXBzZS5vcmdfcGx1Z2lucGFnZTwvYT4KCTxiciAvPjxiciAvPkJFQSBXb3Jrc2hvcCBmb3IgSlNGIGV4dGVuZHMgaXRzIGNhcGFiaWxpdGllcyBpbnRvIHRoZSByZWFsbSBvZiBKYXZhU2VydmVyIEZhY2VzLiBCRUEgV29ya3Nob3AgCmZvciBKU0YgaXMgaGlnaGx5IHJlZ2FyZGVkIGZvciBvZmZlcmluZyBhIGhpZ2ggZGVncmVlIG9mIGZpZGVsaXR5IGluIGl0cyBkZXNpZ24gdGltZSB2aXN1YWwgCnJlcHJlc2VudGF0aW9uIG9mIGNvbXBsZXggd2ViIHBhZ2VzIC0gdGhlIEJFQSBXb3Jrc2hvcCBmb3IgSlNGIGNvbnRpbnVlcyB0aGUgaGlzdG9yeSBvZiBwcm9mZXNzaW9uYWwgCmV4Y2VsbGVuY2UuIEJFQSBXb3Jrc2hvcCBmb3IgSlNGJ3MgQXBwWFJheSB0ZWNobm9sb2d5IGlzIGV4dGVuZGVkIHRvIEpTRiBhbmQgcHJvdmlkZXMgYSBkZWVwIGxldmVsIG9mIAp1bmRlcnN0YW5kaW5nIGZvciB0aGUgSlNGIGZyYW1ld29yayBhbmQgcHJvdmlkZXMgc29waGlzdGljYXRlZCBjb2RlIGNvbXBsZXRpb24sIGVycm9yIGNoZWNraW5nIGFuZCAKdmFsaWRhdGlvbiB0aGF0IHJlYWNoZXMgZmFyIGludG8gb2YgeW91ciB3ZWIgYXBwbGljYXRpb24uICBJdCBzdXBwb3J0cyBib3RoIHRoZSBBcGFjaGUgTXlGYWNlcyBhbmQgClN1biBSZWZlcmVuY2UgSW1wbGVtZW50YXRpb24uCgk8YnIgLz48YnIgLz48Yj5CRUEgV29ya3Nob3AgZm9yIFN0cnV0czwvYj4gLSAKCTxiciAvPjxhIGhyZWY9Imh0dHA6Ly93d3cubTcuY29tL2Rvd25sb2FkTml0cm9YLmRvP3NvdXJjZT1iYW5uZXJfZWNsaXBzZS5vcmdfcGx1Z2lucGFnZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubTcuY29tL2Rvd25sb2FkTml0cm9YLmRvP3NvdXJjZT1iYW5uZXJfZWNsaXBzZS5vcmdfcGx1Z2lucGFnZTwvYT4KCTxiciAvPjxiciAvPkJFQSBXb3Jrc2hvcCBmb3IgU3RydXRzIHByb3ZpZGVzIHBvd2VyZnVsIGFzc2lzdGFuY2UgZm9yIEpha2FydGEgU3RydXRzIGFuZCBUaWxlcywgYW5kIGhpZ2ggCglxdWFsaXR5IFdZU0lXWUcgZWRpdGluZyBhbmQgcmVuZGVyaW5nLiBWaXN1YWwgQ29uZmlndXJhdGlvbiBlZGl0aW5nLCBsb2NhbGl6YXRpb24gYW5kIHJlc291cmNlIAoJYnVuZGxlIHN1cHBvcnQgYXJlIGp1c3QgYSBmZXcgb2YgdGhlIHByb2Zlc3Npb25hbCBmZWF0dXJlcyBhdmFpbGFibGUgaW4gQkVBIFdvcmtzaG9wIGZvciBTdHJ1dHMuICAKCVRoaXMgYXNzaXN0YW5jZSBpcyBvbmx5IHBvc3NpYmxlIHRocm91Z2ggdGhlIHVzZSBvZiBCRUEncyBBcHBYUmF5IHRlY2hub2xvZ3ksIHdoaWNoIHdpbGwgZGV0ZXJtaW5lIAp0aGUgaGlkZGVuIGNvbm5lY3Rpb25zIGJldHdlZW4gdGhlIHBhcnRzIG9mIHlvdXIgU3RydXRzLWJhc2VkIGFwcGxpY2F0aW9uIGFuZCB3b3JrIHdpdGggdGhvc2UgCmNvbm5lY3Rpb25zIHRvIGluY3JlYXNlIHlvdXIgcHJvZHVjdGl2aXR5IGFuZCByZWR1Y2luZyB0aGUgZXJyb3JzIGluIHlvdXIgYXBwbGljYXRpb25zLgoJICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+R2VuYWR5IEJlcnlvemtpbiAtIFJNSSBQbHVnaW4gPC9iPi0gPGEgaHJlZj0iaHR0cDovL3d3dy5nZW5hZHkubmV0L3JtaS9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5nZW5hZHkubmV0L3JtaS9pbmRleC5odG1sPC9hPiAKICAgICAgPGJyIC8+CgkgIFRoZSBSTUkgcGx1Z2luIGFkZHMgdGhlIGFiaWxpdHkgdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBSTUkgc3R1YnMgb2YgcmVtb3RlIGludGVyZmFjZXMsIGp1c3QgCgkgIGxpa2UgdGhlIEphdmEgZWRpdG9yIGF1dG9tYXRpY2FsbHkgY29tcGlsZXMgLmphdmEgZmlsZXMgaW50byAuY2xhc3MgZmlsZXMuIFRoZSBwbHVnaW4gYWxzbyBoZWxwcyAKCSAgeW91IHRvIHN0YXJ0IHlvdXIgUk1JIGFwcGxpY2F0aW9uIHdpdGggYWxsIHRoZSBjb3JyZWN0IFJNSSBwYXJhbWV0ZXJzLjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPmJkYXVtIGluZHVzdHJpYWwgY29tbXVuaWNhdGlvbnMgLSBLTEVFTiA8L2I+LSA8YSBocmVmPSJodHRwOi8vd3d3LmFvbW9kZWxpbmcub3JnL3Rvb2xzLmh0bSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYW9tb2RlbGluZy5vcmcvdG9vbHMuaHRtPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEtMRUVOIGlzIGEgbW9kZWxpbmcgdG9vbCBmb3IgdGhlIEFPTSBtb2RlbGluZyBsYW5ndWFnZSAoPGEgaHJlZj0iaHR0cDovL3d3dy5hb21vZGVsaW5nLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYW9tb2RlbGluZy5vcmc8L2E+KSwgCiAgICAgIGEgZ2VuZXJhbGl6YXRpb24gb2YgRW50aXR5LVJlbGF0aW9uc2hpcC1Nb2RlbGluZy4gS0xFRU4gY292ZXJzIHRoZSB3aG9sZSAKICAgICAgbW9kZWxpbmcgcHJvY2VzcyBmcm9tIGluZm9ybWFsIGRlc2NyaXB0aW9uIG92ZXIgZGlhZ3JhbSBlZGl0aW5nIGFuZCBhdWRpdGluZyAKICAgICAgdG8gY29kZSBnZW5lcmF0aW9uLiBJdCBzdXBwb3J0cyB0aGUgaW5jbHVzaW9uIG9mIHN1Ym1vZGVscyBhbmQgdGhlIGFwcGxpY2F0aW9uIAogICAgICBhbmQgZGVmaW5pdGlvbiBvZiBkZXNpZ24gcGF0dGVybnMuIFRoZSBjdXJyZW50IHZlcnNpb24gY29tZXMgd2l0aCBzdXBwb3J0IAogICAgICBmb3IgdmFyaW91cyB0eXBlIHN5c3RlbXMgKFhNTCBTY2hlbWEsIEphdmEsIFNRTCksIGFuIFhQYXRoLWxpa2UgY29uc3RyYWludCAKICAgICAgbGFuZ3VhZ2UsIGFuZCB2YXJpb3VzIGNvZGUgZ2VuZXJhdG9ycyAoSmF2YSwgWE1MIFNjaGVtYSwgWE1JLCBTUUwsIEhUTUwpLiAKICAgICAgU3RhdHVzOiBBbHBoYSwgQ29tbWVyY2lhbC4gVXBkYXRlIHNpdGU6IDxhIGhyZWY9Imh0dHA6Ly93d3cuYW9tb2RlbGluZy5vcmcvS0xFRU51cGRhdGUiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmFvbW9kZWxpbmcub3JnL0tMRUVOdXBkYXRlPC9hPiAKICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkJvY2Fsb2NvIFNvZnR3YXJlIExMQyAtIFhNTEJ1ZGR5IDwvYj4tIDxhIGhyZWY9Imh0dHA6Ly93d3cueG1sYnVkZHkuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cueG1sYnVkZHkuY29tLzwvYT4gCiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+WE1MQnVkZHkgMi4wPC9iPiAtIE5ldyB2ZXJzaW9uIHN1cHBvcnRzIERURC1kcml2ZW4gY29udGVudCBhc3Npc3QsIGNvbXBsZXRpb24gCiAgICAgIGFuZCB2YWxpZGF0aW9uIGZvciBEVERzIGFuZCBkb2N1bWVudHMgdXNpbmcgRFREcy4gQXV0by12YWxpZGF0aW9uIGFuZCBhdXRvLWZvcm1hdHRpbmcgCiAgICAgIG9wdGlvbnMgdmFsaWRhdGUgYW5kIGZvcm1hdCB3aGlsZSB5b3UgdHlwZS4gU3ludGF4IGNvbG9yaW5nLCBzeW5jaHJvbml6ZWQgCiAgICAgIG91dGxpbmUgdmlldywgbGluZSBudW1iZXJpbmcsIHdlYiBzY2hlbWEgY2FjaGluZywgZW5jb2Rpbmcgc3VwcG9ydCBhbmQgbXVjaCAKICAgICAgbW9yZS4gPGJyIC8+PGJyIC8+CiAgICAgIDxiPlhNTEJ1ZGR5IFBybyAyLjA8L2I+IC0gUHJvZmVzc2lvbmFsIHVwZ3JhZGUgYWRkcyBjb250ZW50IGFzc2lzdCwgY29tcGxldGlvbiAKICAgICAgICBhbmQgdmFsaWRhdGlvbiBmb3IgZG9jdW1lbnRzIHVzaW5nIFhNTCBTY2hlbWEgYW5kIFJFTEFYIE5HIChYTUwgb3IgY29tcGFjdCAKICAgICAgICBzeW50YXgpLiBHZW5lcmF0ZSBYTUwgaW5zdGFuY2UgZnJvbSBEVEQgb3IgYW55IHNjaGVtYSBsYW5ndWFnZS4gR2VuZXJhdGUgCiAgICAgICAgRFREIG9yIGFueSBzY2hlbWEgbGFuZ3VhZ2UgZnJvbSBYTUwgaW5zdGFuY2UuIENvbnZlcnQgRFREIHRvIG9yIGZyb20gYW55IAogICAgICAgIHNjaGVtYSBsYW5ndWFnZSwgb3IgY29udmVydCBiZXR3ZWVuIHNjaGVtYSBsYW5ndWFnZXMuIEF1dGhvciBYU0xUIDEuMCAKICAgICAgICBvciAyLjAgZG9jdW1lbnRzIHdpdGggY29kZSBhc3Npc3QgYW5kIHZhbGlkYXRpb24sIGFuZCBydW4gWFNMIHRyYW5zZm9ybXMgCiAgICAgICAgZnJvbSBlZGl0b3IuIFhQYXRoIHZpZXcgZm9yIGluc3RhbnQgZXhwcmVzc2lvbiBldmFsdWF0aW9uIGluIHlvdXIgZG9jdW1lbnQgCiAgICAgICAgY29udGV4dC4KICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5Cb3JsYW5kJnJlZzwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmJvcmxhbmQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5ib3JsYW5kLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgICA8Yj5Cb3JsYW5kJnJlZyBUb2dldGhlciZyZWcgRWRpdGlvbiBmb3IgRWNsaXBzZSA2LjI8L2I+PGJyIC8+CgkJQm9ybGFuZCBUb2dldGhlciBFZGl0aW9uIGZvciBFY2xpcHNlIGlzIGFuIGludGVncmF0ZWQgYW5kIGFnaWxlIGRlc2lnbiBlbnZpcm9ubWVudCB0aGF0IAoJCWVscHMgdGVhbXMgYWNjZWxlcmF0ZSB0aGUgZGV2ZWxvcG1lbnQgb2YgaGlnaGVyIHF1YWxpdHkgYXBwbGljYXRpb25zIGNvbWJpbmluZyB0aGUgCgkJb3Blbi1zb3VyY2UgRWNsaXBzZSBwbGF0Zm9ybSB3aXRoIHRoZSBwb3dlciBvZiB0aGUgVW5pZmllZCBNb2RlbGluZyBMYW5ndWFnZSAoVU1MKS4gCgkJVG9nZXRoZXIgRWRpdGlvbiBmb3IgRWNsaXBzZSA2LjIgaW5jbHVkZXMgZnVsbCBzdXBwb3J0IGZvciBJQk0gV2ViU3BoZXJlJnJlZyBTdHVkaW8gCgkJQXBwbGljYXRpb24gRGV2ZWxvcGVyLjxiciAvPjxiciAvPgogICAgICBUb2dldGhlciBFZGl0aW9uIGZvciBFY2xpcHNlIHNwZWVkcyB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlIAogICAgICBieSBpbnRlZ3JhdGluZyB0aGUgRWNsaXBzZSBwbGF0Zm9ybSB3aXRoIGEgZGVzaWduLWNlbnRyaWMgc29sdXRpb24gYnVpbHQgCiAgICAgIHRvIHZpc3VhbGx5IG1vZGVsIHNvZnR3YXJlLCBtZWFzdXJlIHF1YWxpdHksIGFuZCBpbXByb3ZlIHRlYW0gcHJvZHVjdGl2aXR5LiAKICAgICAgQSB2aXN1YWwgYnJpZGdlIGFtb25nIGVuZCB1c2VycywgYXJjaGl0ZWN0cywgYW5kIGRldmVsb3BlcnMsIFRvZ2V0aGVyIEVkaXRpb24gCiAgICAgIGZvciBFY2xpcHNlIGlzIGVuZ2luZWVyZWQgdG8gaW5jcmVhc2UgdGhlIHNwZWVkIG9mIGRldmVsb3BtZW50LCBhdXRvbWF0aW5nIAogICAgICB0ZWRpb3VzIHRhc2tzIHRoYXQgY2FuIGRpc3RyYWN0IGRldmVsb3BlcnMgZnJvbSBjb2RpbmcuIFRvZ2V0aGVyIHRlY2hub2xvZ3kgCiAgICAgIGFsc28gaGVscHMgaWRlbnRpZnkgcGVyZm9ybWFuY2UgaXNzdWVzIGVhcmx5IGluIGRldmVsb3BtZW50LCB3aGVuIHRoZXkgYXJlIAogICAgICBzaW1wbGVyIGFuZCBsZXNzIGNvc3RseSB0byBhZGRyZXNzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHZpc2l0IDxhIGhyZWY9Imh0dHA6Ly93d3cuYm9ybGFuZC5jb20vdXMvcHJvZHVjdHMvdG9nZXRoZXIvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYm9ybGFuZC5jb20vdXMvcHJvZHVjdHMvdG9nZXRoZXIvaW5kZXguaHRtbDwvYT4uIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+Q2Fub28gLSA8L2I+PGEgaHJlZj0iaHR0cDovL3d3dy5jYW5vby5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmNhbm9vLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICA8Yj5WaXN1YWwgRWRpdG9yIGZvciBVbHRyYUxpZ2h0Q2xpZW50PC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuY2Fub28uY29tL3VsYy9wcm9kdWN0cy91bGN2aXN1YWxlZGl0b3IuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuY2Fub28uY29tL3VsYy9wcm9kdWN0cy91bGN2aXN1YWxlZGl0b3IuaHRtbDwvYT4gCiAgICAgIC0gQnVpbGQgUmljaCBJbnRlcm5ldCBBcHBsaWNhdGlvbnMgdmlzdWFsbHkgdXNpbmcgVUxDIFZpc3VhbCBFZGl0b3IgZm9yIAogICAgICBFY2xpcHNlLiBVTEMgVmlzdWFsIEVkaXRvciBpcyBhIGRyYWctYW5kLWRyb3AgdXNlciBpbnRlcmZhY2UgZGVzaWduZXIgZm9yIAogICAgICBVbHRyYUxpZ2h0Q2xpZW50ICg8YSBocmVmPSJodHRwOi8vd3d3LmNhbm9vLmNvbS91bGMvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5jYW5vby5jb20vdWxjLzwvYT4pIAogICAgICBhbmQgRWNsaXBzZSAzLjAuMS4gVWx0cmFMaWdodENsaWVudCBpcyBhIGxpYnJhcnkgdG8gYnVpbGQgUmljaCBJbnRlcm5ldCAKICAgICAgQXBwbGljYXRpb25zIChSSUEpIGluIEphdmEuIFRoZSBlZGl0b3IgaXMgYmFzZWQgb24gRWNsaXBzZSBWaXN1YWwgRWRpdG9yIAogICAgICAxLjAuMSBhbmQgc3VwcG9ydHMgZGlyZWN0IGVkaXRpbmcgb2YgdGV4dCBhbmQgdGl0bGUgcHJvcGVydGllcywgZXZlbnRzIG9uIAogICAgICBVTEMgd2lkZ2V0cy4gVXNlIHRoZSBuZXcgdmlzdWFsIGNsYXNzIHdpemFyZCB0byBlYXNpbHkgY3JlYXRlIHJldXNhYmxlIHVzZXIgCiAgICAgIGludGVyZmFjZSBkaWFsb2cgY29tcG9uZW50czogYW4gYWRkZWQgYmVuZWZpdCBmb3IgcHJvdG90eXBpbmcgYW5kIGxhcmdlLXNjYWxlIAogICAgICBHVUkgZGVzaWduLjxiciAvPgogICAgICA8Yj48YnIgLz4KICAgICAgPGEgaHJlZj0iaHR0cDovL3VsYy1jb21tdW5pdHkuY2Fub28uY29tL3NuaXBzbmFwL3NwYWNlL0NvbnRyaWJ1dGlvbnMvSW50ZWdyYXRpb24rU25pcHBldHMvRWNsaXBzZStJREUrSW50ZWdyYXRpb24iIHRhcmdldD0iX2JsYW5rIj5JREUgCiAgICAgIEludGVncmF0aW9uIHBsdWctaW4gZm9yIFVsdHJhTGlnaHRDbGllbnQ8L2E+PC9iPiAtIERlZGljYXRlZCB3aXphcmRzIGhlbHAgCiAgICAgIGluIGNyZWF0aW5nIG5ldyBVbHRyYUxpZ2h0Q2xpZW50IHByb2plY3RzIGluIEVjbGlwc2UsIGF1dG9tYXRpY2FsbHkgbGlua2luZyAKICAgICAgYWxsIG5lY2Vzc2FyeSBsaWJyYXJpZXMgYW5kIGRlZmluaW5nIGEgY2xlYW4gc3RydWN0dXJlLiBJbiBhZGRpdGlvbiwgdGhpcyAKICAgICAgZnJlZSBwbHVnLWluIHN0cmVhbWxpbmVzIHRoZSBleHBvcnQgcHJvY2VkdXJlIHRvIGRlcGxveSBhIHByb2R1Y3RpdmUgYXBwbGljYXRpb24gCiAgICAgIGFzIGFuIGFwcGxldCBvciB1c2luZyBKYXZhIFdlYiBTdGFydC4gVGhlIHBsdWctaW4gc291cmNlIGNvZGUgYW5kIGRvY3VtZW50YXRpb24gCiAgICAgIGlzIGF2YWlsYWJsZSBhdCB0aGUgVWx0cmFMaWdodENsaWVudCBDb21tdW5pdHkgd2Vic2l0ZSAoPGEgaHJlZj0iaHR0cDovL3VsYy1jb21tdW5pdHkuY2Fub28uY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3VsYy1jb21tdW5pdHkuY2Fub28uY29tPC9hPikgCiAgICAgIC4gPGJyIC8+CiAgICAgIDxiPjxiciAvPgogICAgICA8YSBocmVmPSJodHRwOi8vdWxjLWNvbW11bml0eS5jYW5vby5jb20vc25pcHNuYXAvc3BhY2UvQ29udHJpYnV0aW9ucy9JbnRlZ3JhdGlvbiUyQlNuaXBwZXRzL0VjbGlwc2UlMkJSQ1AlMkJJbnRlZ3JhdGlvbiIgdGFyZ2V0PSJfYmxhbmsiPlJDUCAKICAgICAgSW50ZWdyYXRpb24gcGx1Zy1pbiBmb3IgVWx0cmFMaWdodENsaWVudDwvYT48L2I+IC0gUnVuIFVsdHJhTGlnaHRDbGllbnQgCiAgICAgIChVTEMpIGFwcGxpY2F0aW9ucyB3aXRoaW4gdGhlIEVjbGlwc2UgUmljaCBDbGllbnQgUGxhdGZvcm0gKFJDUCkgdXNpbmcgQ2Fub28mcnNxdW87cyAKICAgICAgUkNQIEludGVncmF0aW9uIHBsdWctaW4uIFRoaXMgZnJlZSBwbHVnLWluIGZvciBFY2xpcHNlIDMuMCBzaG93cyBob3cgVUxDIAogICAgICBhcHBsaWNhdGlvbnMgY2FuIGJlIGludGVncmF0ZWQgaW50byBhbiBFY2xpcHNlIFJDUCBwb3J0YWwuIFRoZSBwbHVnLWluIHNvdXJjZSAKICAgICAgY29kZSBhbmQgZG9jdW1lbnRhdGlvbiBpcyBhdmFpbGFibGUgYXQgdGhlIFVsdHJhTGlnaHRDbGllbnQgQ29tbXVuaXR5IHdlYnNpdGUgCiAgICAgICg8YSBocmVmPSJodHRwOi8vdWxjLWNvbW11bml0eS5jYW5vby5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vdWxjLWNvbW11bml0eS5jYW5vby5jb208L2E+KS48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5DYXBlIENsZWFyIFNvZnR3YXJlPC9iPiAtIDxiPkNhcGUgQ2xlYXIgT3JjaGVzdHJhdG9yPC9iPiAKICAgICAgLSA8YSBocmVmPSJodHRwOi8vd3d3LmNhcGVjbGVhci5jb20vdGVjaG5vbG9neS9icGVsL2luZGV4LnNodG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5jYXBlY2xlYXIuY29tL3RlY2hub2xvZ3kvYnBlbC9pbmRleC5zaHRtbDwvYT4gCiAgICAgIDxiciAvPgogICAgICBDYXBlIENsZWFyIE9yY2hlc3RyYXRvciBpcyBhbSBpbnR1aXRpdmUgRWNsaXBzZS1iYXNlZCBlZGl0b3IgZGVzaWduZWQgdG8gCiAgICAgIHNpbXBsaWZ5IHRoZSBkZXNpZ24sIGRlcGxveW1lbnQsIGFuZCBtYW5hZ2VtZW50IG9mIG9yY2hlc3RyYXRlZCBidXNpbmVzcyAKICAgICAgcHJvY2Vzc2VzIHVzaW5nIHRoZSBCdXNpbmVzcyBQcm9jZXNzIEV4ZWN1dGlvbiBMYW5ndWFnZSAoQlBFTCkgc3RhbmRhcmQuIAogICAgICBDYXBlIENsZWFyIE9yY2hlc3RyYXRvciBwcm92aWRlcyBhIGNvbXByZWhlbnNpdmUgQlBFTCBydW50aW1lLCBhbG9uZyB3aXRoIAogICAgICBleHRlbnNpdmUgZ3JhcGhpY2FsIGRlc2lnbiBhbmQgbWFuYWdlbWVudCBjYXBhYmlsaXRpZXMuIEl0IGluY2x1ZGVzIHdpemFyZHMgCiAgICAgIGZvciBjb21tb24gd29ya2Zsb3dzLCBzdXBwb3J0IGZvciBjb21wbGV4LCBsb25nLXJ1bm5pbmcgcHJvY2Vzc2VzLCB3aXRoIAogICAgICBwZXJzaXN0ZW5jZSBhbmQgcmUtaHlkcmF0aW9uIGFuZCBzdXBwb3J0IGZvciBodW1hbiBpbnRlcmFjdGlvbnMuIEluIGFkZGl0aW9uIAogICAgICBPcmNoZXN0cmF0b3IgaXMgdHJhbnNwb3J0LWluZGVwZW5kZW50IGFuZCBpbmNsdWRlcyBleHRlbnNpdmUgbG9nZ2luZywgYXVkaXRpbmcsIAogICAgICBhZG1pbmlzdHJhdGlvbiBhbmQgaW50ZXJhY3RpdmUgZGVidWcgYW5kIHRlc3Qgc3VwcG9ydC4gSXQgYWxzbyBpbmNsdWRlcyAKICAgICAgYSBXZWItYmFzZWQgQkFNIGNvbnNvbGUgZm9yIHByb2Nlc3MgbWFuYWdlbWVudCBhbmQgaXMgdGlnaHRseSBpbnRlZ3JhdGVkIAogICAgICB3aXRoIHRoZSBDYXBlIENsZWFyIEVTQi4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+Q2F0YWx5c3QgU3lzdGVtcyBDb3JwIC0gT3Blbm1ha2UgLSA8L2I+IDxhIGhyZWY9Imh0dHA6Ly93d3cub3Blbm1ha2UuY29tL2RwL2VjbGlwc2UvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5vcGVubWFrZS5jb20vZHAvZWNsaXBzZS88L2E+IAogICAgICA8YnIgLz4KICAgIE9wZW5tYWtlIGlzIGEgbmV4dCBnZW5lcmF0aW9uIGJ1aWxkIG1hbmFnZW1lbnQgdG9vbCBkZXNpZ25lZCB0byBhdXRvbWF0ZSB0aGUgY3JlYXRpb24gb2YKcmVsaWFibGUgYXBwbGljYXRpb25zLiBGb3IgRWNsaXBzZSB1c2VycywgT3Blbm1ha2UgZWxpbWluYXRlcyB0aGUgbmVlZCB0byBjb2RlIFhNTCBvcgpidWlsZCBzcGVjaWZpYyBKYXZhIENsYXNzZXMgZm9yIEFOVCB3aGlsZSBlbmFibGluZyBhIHNpbmdsZSBidWlsZCBwcm9jZXNzIGZvciB0aGUKZW50ZXJwcmlzZS4gVGhlIHByaW1hcnkgZ29hbCBvZiB0aGUgT3Blbm1ha2UgcGx1Zy1pbiBpcyB0byBhbGxvdyBkZXZlbG9wZXJzIHRvIGNvbnRpbnVlCndvcmtpbmcgd2l0aGluIHRoZWlyIElERSB3aGlsZSBlbmFibGluZyB0aGVpciBvcmdhbml6YXRpb24gdG8gc3RhbmRhcmRpemUgaG93IGFwcGxpY2F0aW9ucwphcmUgYnVpbHQgcmVnYXJkbGVzcyBvZiBwbGF0Zm9ybSwgY29tcGlsZXIgb3IgSURFLjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkNsb3VkIEdhcmRlbiAtIEppZ2xvbyBHVUkgQnVpbGRlciAtIDwvYj4gPGEgaHJlZj0iaHR0cDovL2Nsb3VkZ2FyZGVuLmNvbS9qaWdsb28vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2Nsb3VkZ2FyZGVuLmNvbS9qaWdsb28vPC9hPiAKICAgICAgPGJyIC8+CkppZ2xvbyBpcyBhIEdVSS1CdWlsZGVyIHBsdWdpbiBmb3IgRWNsaXBzZS4gSXQgY2FuIGNyZWF0ZSBib3RoIFNXVCBhbmQgU3dpbmcKR1VJcywgYW5kIHRoZSBTdGFuZGFyZCBFZGl0aW9uIGlzIGZyZWUgZm9yIG5vbi1jb21tZXJjaWFsIHVzZS4gSXQgaGFuZGxlcwptb3N0IHByb3BlcnRpZXMgKGZvbnRzLCBjb2xvcnMsIGltYWdlcywgZXRjKSwgaW5jbHVkaW5nIGFsbCBTd2luZyBhbmQgU1dUCmxheW91dHMsIGFuZCBTd2luZyBCb3JkZXJzLiBJdCBjYW4gYWxzbyBpbXBvcnQgR1VJcyBjcmVhdGVkIHVzaW5nIHRoZQpOZXRiZWFucyBJREUuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+Q29sbGF4YSAtIEJQRUwgRGVzaWduZXI8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5jb2xsYXhhLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuY29sbGF4YS5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgQSBjb21wbGV0ZSBncmFwaGljYWwgZGVzaWduIGVudmlyb25tZW50IGZvciBCUEVMIHByb2Nlc3NlcywgQ29sbGF4YSZyc3F1bztzIEJQRUwgCiAgICAgIERlc2lnbmVyIGZvciBFY2xpcHNlIHByb3ZpZGVzIGEgbW9kZWxpbmcsIGVkaXRpbmcsIHZhbGlkYXRpb24gYW5kIHRlc3RpbmcgCiAgICAgIGVudmlyb25tZW50IGZvciBidWlsZGluZyBwcm9jZXNzZXMgY29uZm9ybWluZyB0byB0aGUgT0FTSVMgV1MtQlBFTCAxLjEgc3BlY2lmaWNhdGlvbi4gCiAgICAgIEFjY2VzcyB0aGUgcHJldmlldyByZWxlYXNlIG9mIHRoZSBDb2xsYXhhIEJQRUwgRGVzaWduZXIgZm9yIEVjbGlwc2UgYXQ6IAogICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmNvbGxheGEuY29tL2RldmVsb3Blci5icGVsei5iZXRhLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmNvbGxheGEuY29tL2RldmVsb3Blci5icGVsei5iZXRhLmh0bWw8L2E+LjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiAKICAgICAgPGI+RGF0YU1pcnJvciAtIERCRWRpdCBmb3IgUG9pbnRiYXNlPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cucG9pbnRiYXNlLmNvbS9wcm9kdWN0cy9lY2xpcHNlLmFzcHgiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnBvaW50YmFzZS5jb20vcHJvZHVjdHMvZWNsaXBzZS5hc3B4PC9hPiAKICAgICAgICA8YnIgLz4KICAgICAgICBEQkVkaXQgZm9yIFBvaW50YmFzZSBpcyBhIHBsdWctaW4gZm9yIEVjbGlwc2UgdGhhdCBhbGxvd3MgSmF2YSBkZXZlbG9wZXJzIAogICAgICAgIHRvIHF1aWNrbHkgYWNjZXNzIFBvaW50QmFzZSBkYXRhYmFzZXMgZnJvbSB0aGUgRWNsaXBzZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gCiAgICAgICAgVGhpcyBwbHVnLWluIGhhcyBtYW55IGlubm92YXRpdmUgZmVhdHVyZXMgdGhhdCBhbGxvdyBKYXZhIHByb2Zlc3Npb25hbHMgCiAgICAgICAgdG8gZWFzaWx5IGRldmVsb3AgUG9pbnRCYXNlIGFwcGxpY2F0aW9ucy4gVGhlc2UgZmVhdHVyZXMgaW5jbHVkZToKICAgICAgICA8YmxvY2txdW90ZT4KICAgICAgPHVsPgogICAgICAgIDxsaT5TUUwgRWRpdG9yOiBUaGUgZnVsbHktZnVuY3Rpb25hbCBTUUwgRWRpdG9yIHdpdGggc3ludGF4IGhpZ2hsaWdodGluZyAKICAgICAgICAgIGFuZCBjb250ZXh0LXNlbnNpdGl2ZSBuYW1lL2tleXdvcmQgY29tcGxldGlvbiBjYXBhYmlsaXRpZXMsIGFsbG93cyBkZXZlbG9wZXJzIAogICAgICAgICAgdG8gcXVpY2tseSB3cml0ZSBhbmQgdGVzdCBzcWwgc3RhdGVtZW50cyBhZ2FpbnN0IHRoZWlyIFBvaW50QmFzZSBkYXRhYmFzZS4gCiAgICAgICAgPC9saT4KICAgICAgICA8bGk+U1FMIEV4ZWN1dGlvbjogRW5hYmxlcyB0aGUgcmFwaWQgZXhlY3V0aW9uIG9mIFBvaW50QmFzZSBzcWwgc3RhdGVtZW50cyAKICAgICAgICAgIGZyb20gd2l0aGluIHRoZSBFY2xpcHNlIElERSwgYWxsb3dpbmcgZGV2ZWxvcGVycyB0byBjaGVjayB0aGUgc3ludGF4IAogICAgICAgICAgYW5kIHNlbWFudGljcyBvZiB0aGUgc3RhdGVtZW50cyBpbiB0aGVpciBKYXZhIHByb2dyYW0uIDwvbGk+CiAgICAgICAgPGxpPlZpc3VhbCBEYXRhYmFzZSBCcm93c2VyIJYgQWxsb3dzIHVzZXJzIHRvIGJyb3dzZSB0aGUgUG9pbnRCYXNlIGRhdGFiYXNlIAogICAgICAgICAgY2F0YWxvZyB0byBzZWUgd2hhdCBvYmplY3RzIGV4aXN0IGluIHRoZWlyIGRhdGFiYXNlIHN5c3RlbS48L2xpPgogICAgICAgIDxsaT5UYWJsZSBDcmVhdGlvbiBEaWFsb2c6IEVuYWJsZXMgdXNlcnMgdG8gcXVpY2tseSBjcmVhdGUgUG9pbnRCYXNlIHRhYmxlcyAKICAgICAgICAgIGZyb20gYSBncmFwaGljYWwgdXNlciBpbnRlcmZhY2UuIDwvbGk+CiAgICAgIDwvdWw+CiAgICAgIDwvYmxvY2txdW90ZT4KICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkRISSBUZWNobm9sb2dpZXM8L2I+IC0gPGI+SlMtU29yY2VyZXI8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5kaGl0ZWNobm9sb2dpZXMuY29tL3Byb2R1Y3RzLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuZGhpdGVjaG5vbG9naWVzLmNvbS9wcm9kdWN0cy88L2E+IAogICAgICA8YnIgLz4KCQlKUy1Tb3JjZXJlciBpcyBhIHNldCBvZiB0b29scyB0aGF0IGluY3JlYXNlcyB0aGUgcHJvZHVjdGl2aXR5IG9mIEphdmFTY3JpcHQgZGV2ZWxvcGVycy4gSXQgaW5jbHVkZXMgYSBwb3dlcmZ1bCBhbmFseXNpcyB0b29sIHRoYXQgaGVscHMgZGV2ZWxvcGVycyBxdWlja2x5IGxvY2F0ZSBhbmQgZml4IHByb2JsZW1zIGluIHRoZWlyIGNvZGUuPGJyIC8+IDxiciAvPiAKCQlKUy1Tb3JjZXJlciBkZXRlY3RzIGFuZCByZXBvcnRzIGVycm9ycyBhdCBjb21waWxlIHRpbWUsIGVsaW1pbmF0aW5nIHRoZSBuZWVkIHRvIGludm9rZSBhIGJyb3dzZXIgc2ltcGx5IHRvIGNhdGNoIHN5bnRheCBhbmQgdHlwb2dyYXBoaWNhbCBlcnJvcnMuICBJdHMgY3Jvc3MtYnJvd3NlciBjb2RlIGdlbmVyYXRvciB0cmFuc2xhdGVzIHN0YW5kYXJkIEphdmFTY3JpcHQgcHJvZ3JhbXMgaW50byBKYXZhU2NyaXB0IHByb2dyYW1zIHRoYXQgd2lsbCBydW4gb24gYWxsIHBvcHVsYXIgYnJvd3NlcnMuICBEZXZlbG9wZXJzIGNhbiB3cml0ZSBjcm9zcy1icm93c2VyIGNvZGUgYnkgbWFraW5nIHVzZSBvZiBhIHN0YW5kYXJkLCB1bmlmaWVkIGludGVyZmFjZSB0byBFQ01BU2NyaXB0LCBXM0MgRE9NLCBhbmQgdGhlIFhNTEh0dHBSZXF1ZXN0IChBSkFYKSBvYmplY3QuICBUaGlzIGVsaW1pbmF0ZXMgdGhlIG5lZWQgdG8gd3JpdGUgZGlzcGFyYXRlLCBicm93c2VyLXNwZWNpZmljIG9iamVjdHMgYW5kIHNob3J0ZW5zIHRoZSBkZXZlbG9wbWVudCBjeWNsZS4gIEpTLVNvcmNlcmVyIHN1cHBvcnRzIE15RWNsaXBzZSBhbmQgdGhlIEVjbGlwc2UgV2ViIFRvb2xzIFBsYXRmb3JtIChXVFApLjxiciAvPiAgCgkJCjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkVtZXJhbGRqYiBMTEMgLSBFbWVyYWxkamI8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5lbWVyYWxkamIuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5lbWVyYWxkamIuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEVtZXJhbGRqYiBpcyBhIE9iamVjdCAvIFJlbGF0aW9uYWwgQ29kZSBHZW5lcmF0b3IgZm9yIE15U1FMIGFuZCBPcmFjbGUgRGF0YWJhc2VzLiAKICAgICAgSXQgdXNlcyBhbiBlYXN5IHRvIHVzZSBYTUwgZmlsZSBkZWZpbml0aW9uIHRvIGdlbmVyYXRlIEphdmEgREFPIHBhdHRlcm4gCiAgICAgIGNsYXNzZXMuIFByb2R1Y3QgVmVyc2lvbjogMS4wIEVjbGlwc2UgVmVyc2lvbnMgU3VwcG9ydGVkOiAyLjEuMiwgMy4wIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkV4YWRlbCwgSW5jLjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmV4YWRlbC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5leGFkZWwuY29tLzwvYT4gCiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+RXhhZGVsIFN0dWRpbyBQcm88L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5leGFkZWwuY29tL3Byb2R1Y3RzX2V4YWRlbHN0dWRpb3Byby5odG0iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmV4YWRlbC5jb20vcHJvZHVjdHNfZXhhZGVsc3R1ZGlvcHJvLmh0bTwvYT4gCiAgICAgIDxiciAvPgogICAgICBFeGFkZWwgU3R1ZGlvIFBybyBpcyBhIGJ1aWxkaW5nIHRvb2wgZm9yIFN0cnV0cyBhbmQgSlNGIFdlYiBhcHBsaWNhdGlvbnMgCiAgICAgIHRoYXQgc2VhbWxlc3NseSBpbnRlZ3JhdGVzIHZpc3VhbCBhbmQgc291cmNlLW9yaWVudGVkIGFwcHJvYWNoZXMgZm9yIHRoZSAKICAgICAgcmFwaWQgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQgb2YgYnVsbGV0LXByb29mZWQgV2ViIGFwcGxpY2F0aW9ucy4gRXhhZGVsIAogICAgICBTdHVkaW8gUHJvIGFsc28gYWxsb3dzIHRoZSBlYXN5IGFkZGl0aW9uIG9mIEhpYmVybmF0ZSBPUk0gYW5kIFNwcmluZyBjYXBhYmlsaXRpZXMgCiAgICAgIHRvIHlvdXIgV2ViIGFwcGxpY2F0aW9ucyBhbmQgc3VwcG9ydHMgVGlsZXMsIEZhY2VsZXRzLCBNeUZhY2VzLCBhbmQgT3JhY2xlIAogICAgICBBREYuIEV4YWRlbCBTdHVkaW8gUHJvJnJzcXVvO3MgZ3JlYXQgY29sbGVjdGlvbiBvZiBzcGVjaWFsaXplZCB3aXphcmRzLCBlZGl0b3JzLCAKICAgICAgYW5kIHZpZXdzIHdpbGwgYWxsb3cgeW91IHRvIGdldCB0aGUgbWF4aW11bSBwcmFjdGljYWwgYmVuZWZpdCBmcm9tIHRoZXNlIAogICAgICBleGNpdGluZyBvcGVuIHNvdXJjZSBhbmQgSmF2YSB0ZWNobm9sb2dpZXMuIE9mIHBhcnRpY3VsYXIgbm90ZSBpbiBFeGFkZWwgCiAgICAgIFN0dWRpbyBQcm8gaXMgdGhlIFdZU0lXWUcgVmlzdWFsIFBhZ2UgRWRpdG9yIGZvciBKU1AgZmlsZXMgYW5kIHRoZSBjb21wcmVoZW5zaXZlIAogICAgICB2aXN1YWwgYW5kIHdpemFyZCBzdXBwb3J0IGZvciBIaWJlcm5hdGUgT1JNIHRoYXQgaW5jbHVkZXMgZm9yd2FyZC1lbmdpbmVlcmluZywgCiAgICAgIHJldmVyc2UtZW5naW5lZXJpbmcsIGFuZCBtZWV0LWluLXRoZS1taWRkbGUgYXBwcm9hY2hlcy4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5FeGFkZWwgU3R1ZGlvPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZXhhZGVsLmNvbS9wcm9kdWN0c19leGFkZWxzdHVkaW8uaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5leGFkZWwuY29tL3Byb2R1Y3RzX2V4YWRlbHN0dWRpby5odG08L2E+IAogICAgICA8YnIgLz4KICAgICAgRXhhZGVsIFN0dWRpbyBpcyBhIGZyZWUgYnVpbGRpbmcgdG9vbCBmb3IgU3RydXRzIGFuZCBKU0YgV2ViIGFwcGxpY2F0aW9ucyAKICAgICAgdGhhdCBzZWFtbGVzc2x5IGludGVncmF0ZXMgdmlzdWFsIGFuZCBzb3VyY2Utb3JpZW50ZWQgYXBwcm9hY2hlcyBmb3IgdGhlIAogICAgICByYXBpZCBkZXZlbG9wbWVudCBhbmQgZGVwbG95bWVudCBvZiBXZWIgYXBwbGljYXRpb25zLiBFeGFkZWwgU3R1ZGlvIGFsc28gCiAgICAgIGFsbG93cyB0aGUgZWFzeSBhZGRpdGlvbiBvZiBIaWJlcm5hdGUgT1JNIGFuZCBTcHJpbmcgY2FwYWJpbGl0aWVzIHRvIHlvdXIgCiAgICAgIFdlYiBhcHBsaWNhdGlvbnMgYW5kIHN1cHBvcnRzIFRpbGVzLCBGYWNlbGV0cywgTXlGYWNlcywgYW5kIE9yYWNsZSBBREYuIAogICAgICBFeGFkZWwgU3R1ZGlvJnJzcXVvO3MgZ3JlYXQgY29sbGVjdGlvbiBvZiBzcGVjaWFsaXplZCB3aXphcmRzLCBlZGl0b3JzLCBhbmQgdmlld3MgCiAgICAgIHdpbGwgYWxsb3cgeW91IHRvIGdldCB0aGUgbWF4aW11bSBwcmFjdGljYWwgYmVuZWZpdCBmcm9tIHRoZXNlIGV4Y2l0aW5nIAogICAgICBvcGVuIHNvdXJjZSBhbmQgSmF2YSB0ZWNobm9sb2dpZXMuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCjx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkZ1aml0c3UgLSBJbnRlcnN0YWdlPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZnN3LmZ1aml0c3UuY29tL2ludGVyc3RhZ2UiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmZzdy5mdWppdHN1LmNvbS9pbnRlcnN0YWdlPC9hPjxiciAvPgogICAgICBGdWppdHN1IHdpbGwgcmVsZWFzZSBhbiBlY2xpcHNlLWJhc2VkIHZlcnNpb24gb2YgQVBXT1JLUywgYW4gSURFIHN1cHBvcnRpbmcgCiAgICAgIEphdmEgYW5kIENPQk9MIGZvciBGdWppdHN1JnJzcXVvO3MgSW50ZXJzdGFnZSBhcHBsaWNhdGlvbiBzZXJ2ZXIuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAo8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5HYXRlc3BhY2UgVGVsZW1hdGljcyAtIFViaXNlcnY8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5nYXRlc3BhY2V0ZWxlbWF0aWNzLmNvbS91c2VyYXJlYS9sb2dpbi8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmdhdGVzcGFjZXRlbGVtYXRpY3MuY29tL3VzZXJhcmVhL2xvZ2luLzwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgVWJpc2VydiBlY2xpcHNlIHBsdWctaW4gaXMgdGhlIGNvbW1lcmNpYWwsIHN1cHBvcnRlZCB2ZXJzaW9uIGlmIHRoZSAKICAgICAgS25vcGZsZXJmaXNoIHBsdWctaW4uIFRoZSBwbHVnLWluIHdpbGwgbWFrZSBPU0dpIGJ1bmRsZSBkZXZlbG9wbWVudCBlYXNpZXIgCiAgICAgIGFuZCBzbW9vdGhlciB0aGFuIGV2ZXIuIFdpemFyZHMgd2lsbCBndWlkZSBhbmQgYXNzaXN0IHRoZSBkZXZlbG9wZXIgYWxsIAogICAgICB0aGUgd2F5IGZyb20gY3JlYXRpbmcgT1NHaSBidW5kbGUgY29kZSBza2VsZXRvbnMgdG8gcGFja2FnaW5nIHRoZSByZXN1bHRpbmcgCiAgICAgIGJ1bmRsZSBKQVIgZmlsZS4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+R2VudWl0ZWMsIExMQyAtIE15RWNsaXBzZSBFbnRlcnByaXNlIFdvcmtiZW5jaDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm15ZWNsaXBzZWlkZS5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm15ZWNsaXBzZWlkZS5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgTXlFY2xpcHNlIEVudGVycHJpc2UgV29ya2JlbmNoIGlzIGEgZnVsbC1mZWF0dXJlZCBKMkVFIElERSB0aGF0IGVuaGFuY2VzIAogICAgICBFY2xpcHNlIHdpdGggbnVtZXJvdXMgaGlnaCBwcm9kdWN0aXZpdHkgZmVhdHVyZXMgZm9yIGVudGVycHJpc2UgSmF2YSBkZXZlbG9wbWVudC4gCiAgICAgIE15RWNsaXBzZSBjaGFsbGVuZ2VzIHRoZSBtaXNjb25jZXB0aW9uIHRoYXQgZW50ZXJwcmlzZSBzb2x1dGlvbnMgaGF2ZSB0byAKICAgICAgYmUgZXhwZW5zaXZlIGJ5IG9mZmVyaW5nIE15RWNsaXBzZSBhcyBhIHN1YnNjcmlwdGlvbiBmb3IgJDI5Ljk1IC8gZGV2ZWxvcGVyIAogICAgICAvIHllYXIgYW5kIGluY2x1ZGVzIGFsbCBzb2Z0d2FyZSB1cGRhdGVzIGFuZCB0ZWNobmljYWwgc3VwcG9ydC48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkd1cm9jayBTb2Z0d2FyZSAtIFNtYXJ0SW5zcGVjdCBFY2xpcHNlIFN1cHBvcnQ8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5ndXJvY2suY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuZ3Vyb2NrLmNvbTwvYT4gCiAgICAgIDxiciAvPgpTbWFydEluc3BlY3QgaXMgYW4gYWR2YW5jZWQgbG9nZ2luZyB0b29sIGZvciBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcKLk5FVCwgSmF2YSBhbmQgRGVscGhpIGFwcGxpY2F0aW9ucy4gSXQgaGVscHMgeW91IHRvIGlkZW50aWZ5IGJ1Z3MsIGZpbmQKc29sdXRpb25zIHRvIGN1c3RvbWVyIHByb2JsZW1zIGFuZCBnaXZlcyB5b3UgYSBjbGVhciB1bmRlcnN0YW5kaW5nIG9mCmhvdyB5b3VyIHNvZnR3YXJlIHdvcmtzIGluIGRpZmZlcmVudCBlbnZpcm9ubWVudHMgYW5kIHVuZGVyIGRpZmZlcmVudApjaXJjdW1zdGFuY2VzLiBTbWFydEluc3BlY3Qgc3VwcG9ydHMgRWNsaXBzZSB3aXRoIGFuIGF1dG9tYXRpY2FsbHkKZ2VuZXJhdGVkIHVzZXIgbGlicmFyeS4gSW50ZWdyYXRpbmcgdGhlIFNtYXJ0SW5zcGVjdCBKYXZhIGxpYnJhcnkgaW50bwpFY2xpcHNlIHRha2VzIGxlc3MgdGhhbiBhIG1pbnV0ZS4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkhld2xldHQtUGFja2FyZCAtIDwvYj48YSBocmVmPSJodHRwOi8vZGV2cmVzb3VyY2UuaHAuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2RldnJlc291cmNlLmhwLmNvbTwvYT48Yj4gCiAgICAgIDxiciAvPgogICAgICBPcGVuQ2FsbCBNZWRpYSBQbGF0Zm9ybSBPY2xldCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudDwvYj4gLSA8YSBocmVmPSJodHRwOi8vZGV2cmVzb3VyY2UuaHAuY29tL2RyYy9vY21wL29jZGUvaW5kZXguanNwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2RldnJlc291cmNlLmhwLmNvbS9kcmMvb2NtcC9vY2RlL2luZGV4LmpzcDwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgSFAgT3BlbkNhbGwgTWVkaWEgUGxhdGZvcm0gKEhQIE9DTVApIE9DbGV0IERldmVsb3BtZW50IEVudmlyb25tZW50IHNpbXBsaWZpZXMgCiAgICAgIHRoZSBkZXZlbG9wbWVudCBvZiB2b2ljZS1iYXNlZCB0ZWxlcGhvbmUgc2VydmljZXMgdGhhdCBydW4gb24gdGhlIEhQIE9wZW5DYWxsIAogICAgICBNZWRpYSBQbGF0Zm9ybSBieSBpbnRlZ3JhdGluZyB0aGUgZXh0ZW5zaWJsZSBFY2xpcHNlIHBsYXRmb3JtIHdpdGggdGhlIEhQIAogICAgICBPQ01QIHNvZnR3YXJlIGRldmVsb3BlciZyc3F1bztzIGtpdC4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPkhleGFtaW5kPC9iPiAtIDxiPkhleGFtaW5kIEFwcGxpY2F0aW9uIE1hbmFnZW1lbnQgU3VpdGU8L2I+IAogICAgICAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuaGV4YW1pbmQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5oZXhhbWluZC5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgSGV4YW1pbmQgQXBwbGljYXRpb24gTWFuYWdlbWVudCBTdWl0ZSBpcyBhIHBsYXRmb3JtIGZvciBtYWtpbmcgY29tcGxleCBzeXN0ZW1zIAogICAgICBhbmQgYXBwbGljYXRpb25zIG1hbmFnZWFibGUuIEFsbCBjb25maWd1cmF0aW9uIGZpbGVzLCB0YWJsZXMsIGFuZCByZWdpc3RyaWVzIAogICAgICBwZXJ0aW5lbnQgdG8gYSBzeXN0ZW0gYXJlIHZpZXdlZCwgZWRpdGVkIGFuZCBtYW5hZ2VkIHRocm91Z2ggYSBzaW5nbGUgYWR2YW5jZWQgCiAgICAgIGdyYXBoaWNhbCBpbnRlcmZhY2Ugb3IgdXNpbmcgdGhlIEhleGFtaW5kIGJhdGNoIGFuZCBzY3JpcHRpbmcgZW5naW5lIC0gYWxsIAogICAgICBkcml2ZW4gYnkgYSBtb2RlbCByYXBpZGx5IGNyZWF0ZWQgd2l0aCBIZXhhbWluZCBNb2RlbGVyLCBhIHNvcGhpc3RpY2F0ZWQgCiAgICAgIEVjbGlwc2UtYmFzZWQgbW9kZWxpbmcgdG9vbCwgcHJvdmlkaW5nIHN0cnVjdHVyZSwgdmFsaWRhdGlvbiwgbG9naWNhbCB2aWV3cyAKICAgICAgYW5kIHdpemFyZCBhdXRob3JpbmcuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5KYW1lcyBIb2xtZXMgLSBTdHJ1dHMgQ29uc29sZTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmphbWVzaG9sbWVzLmNvbS9zdHJ1dHMvY29uc29sZS9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5qYW1lc2hvbG1lcy5jb20vc3RydXRzL2NvbnNvbGUvaW5kZXguaHRtbDwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgU3RydXRzIENvbnNvbGUgaXMgYSBGUkVFIEphdmEgU3dpbmcgYXBwbGljYXRpb24gZm9yIG1hbmFnaW5nIFN0cnV0cy1iYXNlZCAKICAgICAgYXBwbGljYXRpb25zLiBXaXRoIHRoZSBTdHJ1dHMgQ29uc29sZSB5b3UgY2FuIHZpc3VhbGx5IGVkaXQgU3RydXRzLCBUaWxlcyAKICAgICAgYW5kIFZhbGlkYXRvciBjb25maWd1cmF0aW9uIGZpbGVzLiBUaGUgU3RydXRzIENvbnNvbGUgcGx1Z3MgaW50byBFY2xpcHNlIAogICAgICBhcyB3ZWxsIGFzIG90aGVyIG1ham9yIElERXMuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPklCTSAtIEFscGhhd29ya3M8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5hbHBoYXdvcmtzLmlibS5jb20vZWNsaXBzZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuYWxwaGF3b3Jrcy5pYm0uY29tL2VjbGlwc2U8L2E+IAogICAgICA8YnIgLz4KICAgICAgPGk+VmlzaXQgdGhlIEFscGhhd29ya3Mgc2l0ZSBmb3IgbW9yZSBwbHVnaW5zLCB0dXRvcmlhbHMgYW5kIGFydGljbGVzISA8L2k+PGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmFscGhhd29ya3MuaWJtLmNvbS90ZWNoL2F1aW1sP29wZW4mYW1wO1NfVEFDVD0xMDRBSFc2MSZhbXA7U19DTVA9R1ImYW1wO2NhPWRnci1lY2xwc3czMGF3QVVJTUwiIHRhcmdldD0iX2JsYW5rIj48Yj5BYnN0cmFjdCAKICAgICAgVXNlciBJbnRlcmZhY2UgTWFya3VwIExhbmd1YWdlPC9iPjwvYT48YnIgLz4KICAgICAgVGhlIEFic3RyYWN0IFVzZXIgSW50ZXJmYWNlIE1hcmt1cCBMYW5ndWFnZSB0b29sa2l0IGlzIGEgcmFwaWQtZGV2ZWxvcG1lbnQgCiAgICAgIHRvb2wgdG8gYXNzaXN0IGRldmVsb3BlcnMgaW4gd3JpdGluZyBHVUlzIHRvIHJ1biBhcyBlaXRoZXIgU3dpbmcgYXBwbGljYXRpb25zIAogICAgICBvciBvbiB0aGUgV2ViIC0tIHdpdGhvdXQgYW55IGNoYW5nZXMuIFRoaXMgQVVJTUwgdG9vbGtpdCBpbmNsdWRlcyByYXBpZCAKICAgICAgcHJvdG90eXBpbmcgd2l0aCB0aGUgZWNsaXBzZS1iYXNlZCBWaXN1YWwgQnVpbGRlciwgRGF0YUJlYW4gaW1wbGVtZW50YXRpb24sIAogICAgICBidWlsdC1pbiBkYXRhIHZhbGlkYXRpb24sIGJ1aWx0LWluIGludGVybmF0aW9uYWxpemF0aW9uIGFuZCBtb3JlLiBUaGUgQVVJTUwgCiAgICAgIFRvb2xraXQgaW5jbHVkZXMgdGhlIEFVSU1MIFZpc3VhbEJ1aWxkZXIsIHdoaWNoIGlzIGFuIEVjbGlwc2UtYmFzZWQgdmlzdWFsIAogICAgICBwYW5lbCBlZGl0b3IgYnVpbHQgb24gdG9wIG9mIHRoZSBFY2xpcHNlIFZpc3VhbCBFZGl0b3IgUHJvamVjdC48YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPiA8YSBocmVmPSJodHRwOi8vd3d3LmFscGhhd29ya3MuaWJtLmNvbS90ZWNoL2R0amNiP29wZW4mU19UQUNUPTEwNEFIVzYxJlNfQ01QPUdSJmNhPWRnci1lY2xwc3czMGF3ZHRqY2IiIHRhcmdldD0iX2JsYW5rIj4gCiAgICAgIERldmVsb3BtZW50IFRvb2wgZm9yIEphdmEtQ09NIEJyaWRnZTwvYT48L2I+IC0gVGhpcyBFY2xpcHNlIGJhc2VkIERldmVsb3BtZW50IAogICAgICBUb29sIGZvciBKYXZhLUNPTSBCcmlkZ2UgaXMgZm9yIGRldmVsb3BpbmcgYW5kIGVuYWJsaW5nIHRpZ2h0IGNvbW11bmljYXRpb24gCiAgICAgIGJldHdlZW4gSmF2YSBhbmQgQ09NLWJhc2VkIGFwcGxpY2F0aW9ucy4gQW4gYXBwbGljYXRpb24gcnVubmluZyBvbiBNaWNyb3NvZnQgCiAgICAgIFdpbmRvd3Mgc3lzdGVtcyBpcyB0eXBpY2FsbHkgY29uc3RydWN0ZWQgYXMgYSBzZXQgb2YgaW50ZXJjb25uZWN0aW5nIGNvbXBvbmVudHMgCiAgICAgIGVudGlyZWx5IGJhc2VkIG9uIE1pY3Jvc29mdCBDb21wb25lbnQgT2JqZWN0IE1vZGVsIChDT00pIHRlY2hub2xvZ3ksIG9yIAogICAgICBvbiBKYXZhIHRlY2hub2xvZ3kuIE5ldyB1cGRhdGUgZml4ZXMgbWFueSBicmlkZ2UgZ2VuZXJhdGlvbiBjb21waWxhdGlvbiAKICAgICAgZXJyb3JzLiA8YnIgLz4KICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+SUJNIFJhdGlvbmFsIFNvZnR3YXJlIDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vc29mdHdhcmUvcmF0aW9uYWwvIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5pYm0uY29tL3NvZnR3YXJlL3JhdGlvbmFsLzwvYT4gCiAgICAgIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+UmF0aW9uYWwgQXBwbGljYXRpb24gRGV2ZWxvcGVyPC9iPiAoZm9ybWFsbHkgV2ViU3BoZXJlIFN0dWRpbyBBcHBsaWNhdGlvbiAKICAgICAgRGV2ZWxvcGVyKSAtIEEgY29tcHJlaGVuc2l2ZSBJREUgdGhhdCBlbmFibGVzIGRldmVsb3BlcnMgdG8gcXVpY2tseSBkZXNpZ24sIAogICAgICBkZXZlbG9wLCBhbmFseXplLCB0ZXN0LCBwcm9maWxlLCBhbmQgZGVwbG95IFdlYiwgV2ViIHNlcnZpY2VzLCBKYXZhLCBKMkVFLCAKICAgICAgYW5kIHBvcnRhbCBhcHBsaWNhdGlvbnMuIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LTMwNi5pYm0uY29tL3NvZnR3YXJlL2F3ZHRvb2xzL2RldmVsb3Blci9hcHBsaWNhdGlvbi9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy9kZXZlbG9wZXIvYXBwbGljYXRpb24vaW5kZXguaHRtbDwvYT4gCiAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLiAKICAgICAgPHA+PGI+UmF0aW9uYWwgV2ViIERldmVsb3BlcjwvYj4gKGZvcm1hbGx5IFdlYlNwaGVyZSBTdHVkaW8gU2l0ZSBEZXZlbG9wZXIpIAogICAgICAgIC0gQW4gZWFzeS10by1sZWFybiBJREUgdGhhdCBoZWxwcyBkZXZlbG9wZXJzIGJ1aWxkLCB0ZXN0LCBhbmQgZGVwbG95IFdlYiwgCiAgICAgICAgV2ViIHNlcnZpY2VzIGFuZCBKYXZhIGFwcGxpY2F0aW9ucy4gU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvZGV2ZWxvcGVyL3dlYi9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy9kZXZlbG9wZXIvd2ViL2luZGV4Lmh0bWw8L2E+IAogICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLiA8L3A+CiAgICAgIDxwPjxiPlJhdGlvbmFsIFNvZnR3YXJlIEFyY2hpdGVjdDwvYj4gLSBBIGNvbXByZWhlbnNpdmUgZGVzaWduIGFuZCBjb25zdHJ1Y3Rpb24gCiAgICAgICAgdG9vbCBmb3Igc29mdHdhcmUgYXJjaGl0ZWN0cyBhbmQgbW9kZWwtZHJpdmVuIGRldmVsb3BlcnMgZm9yIGNyZWF0aW5nIAogICAgICAgIGFwcGxpY2F0aW9ucyBydW5uaW5nIG9uIHRoZSBKYXZhIHBsYXRmb3JtIG9yIGluIEMrKyB0aGF0IGxldmVyYWdlcyBVTUwgCiAgICAgICAgYW5kIHVuaWZpZXMgYWxsIGFzcGVjdHMgb2Ygc29mdHdhcmUgYXBwbGljYXRpb24gYXJjaGl0ZWN0dXJlLiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy9hcmNoaXRlY3Qvc3dhcmNoaXRlY3QvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvYXJjaGl0ZWN0L3N3YXJjaGl0ZWN0L2luZGV4Lmh0bWw8L2E+IAogICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLiA8L3A+CiAgICAgIDxwPjxiPlJhdGlvbmFsIFNvZnR3YXJlIE1vZGVsZXI8L2I+IC0gQSBVTUwtYmFzZWQgdmlzdWFsIG1vZGVsaW5nIGFuZCBkZXNpZ24gCiAgICAgICAgdG9vbCBmb3IgYXJjaGl0ZWN0cywgc3lzdGVtcyBhbmFseXN0cywgYW5kIGRlc2lnbmVycyB3aG8gbmVlZCB0byBlbnN1cmUgCiAgICAgICAgdGhhdCB0aGVpciBzcGVjaWZpY2F0aW9ucywgYXJjaGl0ZWN0dXJlLCBhbmQgZGVzaWducyBhcmUgY2xlYXJseSBkZWZpbmVkIAogICAgICAgIGFuZCBjb21tdW5pY2F0ZWQgdG8gdGhlaXIgc3Rha2Vob2xkZXJzLiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy9tb2RlbGVyL3N3bW9kZWxlci9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy9tb2RlbGVyL3N3bW9kZWxlci9pbmRleC5odG1sPC9hPiAKICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gPGJyIC8+CiAgICAgICAgPGJyIC8+CiAgICAgICAgPGI+UmF0aW9uYWwgUmVxdWlzaXRlUHJvPC9iPiAtIEEgcG93ZXJmdWwsIGVhc3ktdG8tdXNlLCBhbmQgaW50ZWdyYXRlZCAKICAgICAgICBwcm9kdWN0IGZvciByZXF1aXJlbWVudHMgYW5kIHVzZSBjYXNlIG1hbmFnZW1lbnQgdGhhdCBwcm9tb3RlcyBiZXR0ZXIgCiAgICAgICAgY29tbXVuaWNhdGlvbiwgZW5oYW5jZXMgdGVhbXdvcmssIGFuZCByZWR1Y2VzIHByb2plY3Qgcmlzay4gU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvcmVxcHJvLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvcmVxcHJvLzwvYT4gCiAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uIDxiciAvPgogICAgICAgIDxiciAvPgogICAgICAgIDxiPklCTSBSYXRpb25hbCBGdW5jdGlvbmFsIFRlc3RlciA8L2I+LSBBbiBhZHZhbmNlZCwgYXV0b21hdGVkIGZ1bmN0aW9uYWwgCiAgICAgICAgYW5kIHJlZ3Jlc3Npb24gdGVzdGluZyB0b29sIGZvciB0ZXN0ZXJzIGFuZCBHVUkgZGV2ZWxvcGVycyB3aG8gbmVlZCBzdXBlcmlvciAKICAgICAgICBjb250cm9sIGZvciB0ZXN0aW5nIEphdmEsIFZTLk5FVCBhbmQgV2ViLWJhc2VkIGFwcGxpY2F0aW9ucy4gU2VlIDxhIGhyZWY9Imh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvdGVzdGVyL2Z1bmN0aW9uYWwvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvdGVzdGVyL2Z1bmN0aW9uYWwvaW5kZXguaHRtbCAKICAgICAgICA8L2E+IGZvciBtb3JlIGluZm9ybWF0aW9uLiA8YnIgLz4KICAgICAgICA8YnIgLz4KICAgICAgICA8Yj5JQk0gUmF0aW9uYWwgTWFudWFsIFRlc3RlcjwvYj4gLSBBIG1hbnVhbCB0ZXN0IGF1dGhvcmluZyBhbmQgZXhlY3V0aW9uIAogICAgICAgIHRvb2wgdGhhdCBwcm9tb3RlcyB0ZXN0IHN0ZXAgcmV1c2UgdG8gcmVkdWNlIHRoZSBpbXBhY3Qgb2Ygc29mdHdhcmUgY2hhbmdlIAogICAgICAgIG9uIHRlc3RlcnMgYW5kIGJ1c2luZXNzIGFuYWx5c3RzLiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy90ZXN0ZXIvbWFudWFsL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LTMwNi5pYm0uY29tL3NvZnR3YXJlL2F3ZHRvb2xzL3Rlc3Rlci9tYW51YWwvaW5kZXguaHRtbDwvYT4gCiAgICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uIDxiciAvPgogICAgICAgIDxiciAvPgogICAgICAgIDxiPklCTSBSYXRpb25hbCBQZXJmb3JtYW5jZSBUZXN0ZXI8L2I+IC0gQSBwZXJmb3JtYW5jZSB0ZXN0IGNyZWF0aW9uLCAKICAgICAgICBleGVjdXRpb24gYW5kIGFuYWx5c2lzIHRvb2wgZm9yIHRlYW1zIHZhbGlkYXRpbmcgdGhlIHNjYWxhYmlsaXR5IGFuZCByZWxpYWJpbGl0eSAKICAgICAgICBvZiBjb21wbGV4IGUtYnVzaW5lc3MgYXBwbGljYXRpb25zIGJlZm9yZSBkZXBsb3ltZW50LiBTZWUgPGEgaHJlZj0iaHR0cDovL3d3dy0zMDYuaWJtLmNvbS9zb2Z0d2FyZS9hd2R0b29scy90ZXN0ZXIvcGVyZm9ybWFuY2UvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvYXdkdG9vbHMvdGVzdGVyL3BlcmZvcm1hbmNlL2luZGV4Lmh0bWw8L2E+IAogICAgICAgIGZvciBtb3JlIGluZm9ybWF0aW9uLiA8YnIgLz4KICAgICAgICA8YnIgLz4KICAgICAgICA8Yj5SYXRpb25hbCBDbGVhckNhc2UgPC9iPi0gVGhpcyBwbHVnLWluIHByb3ZpZGVzIFJhdGlvbmFsIENsZWFyQ2FzZSBmdW5jdGlvbmFsaXR5IAogICAgICAgIHRvIEVjbGlwc2UgdXNlcnMgZm9yIGEgdGlnaHRseSBpbnRlZ3JhdGVkIFNDTSBzb2x1dGlvbi4gVGhlIHBsdWctaW4gd29ya3MgCiAgICAgICAgd2l0aCBib3RoIFJhdGlvbmFsIENsZWFyQ2FzZSBMVCBhbmQgZnVsbCBSYXRpb25hbCBDbGVhckNhc2UgaW4gRWNsaXBzZSAKICAgICAgICAyLjAsIDIuMSAmYW1wOyAzLjAsIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIHRoZSBSYXRpb25hbCBEZXZlbG9wZXIgCiAgICAgICAgRG9tYWluIG9uIElCTSBkZXZlbG9wZXJXb3JrcyBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcmF0aW9uYWwvbGlicmFyeS8xMzc2Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcmF0aW9uYWwvbGlicmFyeS8xMzc2Lmh0bWw8L2E+PGJyIC8+CiAgICAgICAgPGJyIC8+CiAgICAgICAgPGI+UmF0aW9uYWwgQ2xlYXJRdWVzdDwvYj4gLSBJQk0gUmF0aW9uYWwmcnNxdW87cyBkZWZlY3QgYW5kIGNoYW5nZSB0cmFja2luZyAKICAgICAgICB0b29sIGZvciBlZmZpY2llbnQgY2FwdHVyaW5nLCB0cmFja2luZywgYW5kIG1hbmFnaW5nIGFueSB0eXBlIG9mIGNoYW5nZS4gCiAgICAgICAgVGhpcyBpbnRlZ3JhdGlvbiBwcm92aWRlcyBSYXRpb25hbCBDbGVhclF1ZXN0IGZ1bmN0aW9uYWxpdHkgd2l0aGluIEVjbGlwc2UgCiAgICAgICAgMi4wLCAyLjEgJmFtcDsgMy4wLCBhbGxvd2luZyB1c2VycyB0byBzZWxlY3QgYW5kIHJ1biBxdWVyaWVzIGZyb20gYSBkYXRhYmFzZSwgCiAgICAgICAgdmlldyByZWNvcmQgZGV0YWlscywgYW5kIHN1Ym1pdCBuZXcgcmVjb3Jkcy4gV2hlbiBjb21iaW5lZCB3aXRoIHRoZSBSYXRpb25hbCAKICAgICAgICBDbGVhckNhc2UgcGx1Z2luLCB0aGUgdHdvIGludGVncmF0aW9ucyBwcm92aWRlIGEgY29tcGxldGUgU0NNIHNvbHV0aW9uIAogICAgICAgIGluIEVjbGlwc2Ugc28gdXNlcnMgZG8gbm90IGhhdmUgdG8gbGVhdmUgdGhlaXIgSURFIHRvIHBlcmZvcm0gdGhlIG1vc3QgCiAgICAgICAgY29tbW9uIFNDTSB0YXNrcy4gVGhlIFJhdGlvbmFsIENsZWFyUXVlc3QgUGx1Zy1pbiBjYW4gYmUgZG93bmxvYWRlZCBmcm9tIAogICAgICAgIHRoZSBSYXRpb25hbCBEZXZlbG9wZXIgRG9tYWluIG9uIElCTSBkZXZlbG9wZXJXb3JrcyBhdCA8YSBocmVmPSJodHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcmF0aW9uYWwvbGlicmFyeS8xMzc2Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyd29ya3MvcmF0aW9uYWwvbGlicmFyeS8xMzc2Lmh0bWw8L2E+IAogICAgICA8L3A+CiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj4gPGI+SUJNIC0gVGl2b2xpIE1vbml0b3JpbmcgV29ya2JlbmNoPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvdGl2b2xpL3Jlc291cmNlLWNlbnRlci9hdmFpbGFiaWxpdHkvY29kZS1tb25pdG9yLXJlc291cmNlLmpzcCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3ctMzA2LmlibS5jb20vc29mdHdhcmUvdGl2b2xpL3Jlc291cmNlLWNlbnRlci9hdmFpbGFiaWxpdHkvY29kZS1tb25pdG9yLXJlc291cmNlLmpzcDwvYT48YnIgLz4KICAgICAgVGhlIElCTSBUaXZvbGkgTW9uaXRvcmluZyBXb3JrYmVuY2ggYWxsb3dzIHlvdSB0byBjcmVhdGUgcmVzb3VyY2UgbW9kZWxzIAogICAgICB0aGF0IGVuYWJsZSBhdXRvbWF0aWMgc3lzdGVtIG1vbml0b3JpbmcsIHByb2JsZW0gZGlhZ25vc2lzIGFuZCBwcm9ibGVtIHJlc29sdXRpb24gCiAgICAgIGZvciB5b3VyIGFwcGxpY2F0aW9ucy4gVGhlIElCTSBUaXZvbGkgTW9uaXRvcmluZyBXb3JrYmVuY2gsIHdoaWNoIGNhbiBiZSAKICAgICAgbGF1bmNoZWQgdmlhIHRoZSBwcm92aWRlZCBFY2xpcHNlIHBsdWctaW4sIGluY2x1ZGVzIHdpemFyZHMgZm9yIGRldmVsb3BpbmcgCiAgICAgIHRoZXNlIG1vZGVscy48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5JTE9HIC0gQnVzaW5lc3MgUnVsZSBTdHVkaW88L2I+IC0gPGEgaHJlZj0iaHR0cDovL2Jyc3R1ZGlvLmlsb2cuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9icnN0dWRpby5pbG9nLmNvbS88L2E+IAogICAgICA8YnIgLz4KICAgICAgSUxPRyBCdXNpbmVzcyBSdWxlIFN0dWRpbyBpcyBhIGNvbXBsZXRlIGJ1c2luZXNzIHJ1bGUgYXV0aG9yaW5nLCB0ZXN0aW5nIAogICAgICBhbmQgZGVidWdnaW5nIGVudmlyb25tZW50IGZvciBFY2xpcHNlLiBCUiBTdHVkaW8gaXMgZnJlZSBhbmQgbWluaW1pemVzIHRyYWluaW5nIAogICAgICBjb3N0cywgbWFraW5nIGl0IGFuIGlkZWFsIGNob2ljZSBmb3IgZGV2ZWxvcG1lbnQgb3IgYWNhZGVtaWMgdXNlLiBXaXRoIEJSIAogICAgICBTdHVkaW8sIHlvdSBmb2N1cyBvbiBsZWFybmluZyBidXNpbmVzcyBydWxlIHRlY2hub2xvZ3kgaW5zdGVhZCBvZiBhbm90aGVyIAogICAgICBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gVXNlIHRoZSBFY2xpcHNlIElERSB0byBlbWJlZCBydWxlcyBpbnRvIHlvdXIgSmF2YS9KMkVFIAogICAgICBhcHBsaWNhdGlvbnMuIFdyaXRlLCBkZWJ1ZyBhbmQgZXhlY3V0ZSBidXNpbmVzcyBydWxlcyBzZXBhcmF0ZWx5IGZyb20gSmF2YSAKICAgICAgY29kZS4gRG93bmxvYWQgSUxPRyBCdXNpbmVzcyBSdWxlIFN0dWRpbyBmb3IgZnJlZSBhdCA8YSBocmVmPSJodHRwOi8vYnJzdHVkaW8uaWxvZy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2Jyc3R1ZGlvLmlsb2cuY29tLzwvYT4gCiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIiBoZWlnaHQ9IjM3Ij48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIiBoZWlnaHQ9IjM3Ij4gPGI+SU5OT09QUkFDVCAtIFc0IEVjbGlwc2UgVmlzdWFsIFdlYiBVSSBCdWlsZGVyPC9iPiAKICAgICAgLSA8YSBocmVmPSJodHRwOi8vd3d3Lnc0dG9vbGtpdC5jb20vaHRtbC9wbHVnaW5kb3dubG9hZCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudzR0b29sa2l0LmNvbS9odG1sL3BsdWdpbmRvd25sb2FkPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFRoZSBXNCBFY2xpcHNlIFZpc3VhbCBXZWIgVUkgQnVpbGRlciBwcm92aWRlcyB0b29scyBmb3IgdmlzdWFsIGRldmVsb3BtZW50IAogICAgICBvZiB3ZWIgVUlzIGZvciBiZWdpbm5lcnMsIGFkdmFuY2VkIGFuZCBleHBlcmllbmNlZCBkZXZlbG9wZXJzLiBSYXBpZGx5IGRldmVsb3AgCiAgICAgIHBvd2VyZnVsIFVJcyBmb3IgSmF2YSBXZWItYXBwbGljYXRpb25zIGJ5IG1hcmtpbmcgYW5kIGRyb3BwaW5nIGNvbXBvbmVudHMgCiAgICAgIGluIGEgdmlzdWFsIGVkaXRvciBhbmQgZ2V0IGEgcHJldmlldyB3aXRoIG9uZSBjbGljay4gRW5qb3kgcG93ZXJmdWwgY29tcG9uZW50cyAKICAgICAgbGlrZSB0cmVldmlld3MsIG1lbnViYXJzLCBkYXRhYm91bmQgdGFibGVzIGFuZCBtb3JlLiBUaGUgVUktY29tcG9uZW50cyBhcmUgCiAgICAgIGJhc2VkIG9uIEphdmEgQmVhbiAmIFNlcnZsZXQgc3RhbmRhcmRzIGFuZCBhY3RpdmVseSBzdXBwb3J0IGFsbCBtYWpvciBicm93c2VycywgCiAgICAgIGV2ZW4gd2l0aCBKYXZhU2NyaXB0IHR1cm5lZCBvZmYuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5pbm5vUSAtIGlRZ2VuIDIuMCwgTW9kZWwgRHJpdmVuIFNvZnR3YXJlIEdlbmVyYXRvciAKICAgICAgPC9iPi0gPGEgaHJlZj0iaHR0cDovL3d3dy5pbm5vcS5jb20vaXFnZW4iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lmlubm9xLmNvbS9pcWdlbjwvYT4gCiAgICAgIDxiciAvPgogICAgICBCYXNlZCBvbiB0aGUgcHJpbmNpcGxlcyBvZiBPTUcmcnNxdW87cyBNb2RlbCBEcml2ZW4gQXJjaGl0ZWN0dXJlIChNREEpLCBpUWdlbiAKICAgICAgZW5hYmxlcyBjdXN0b20gY29kZSBnZW5lcmF0aW9uIGJhc2VkIG9uIFVNTCBtb2RlbHMgY3JlYXRlZCBpbiBsZWFkaW5nIENBU0UgCiAgICAgIHRvb2xzLiBpUWdlbiBpbXBvcnRzIG1vZGVsIGluZm9ybWF0aW9uIGZyb20gdGhlIENBU0UgdG9vbCB2aWEgWE1MLCBhbmQgZ2VuZXJhdGVzIAogICAgICBjb2RlIGFjY29yZGluZyB0byB0ZW1wbGF0ZXMgZGVmaW5lZCBpbiBKYXZhIFNlcnZlciBQYWdlcyAoSlNQKSBzeW50YXguIEF2YWlsYWJsZSAKICAgICAgZm9yIHN0YW5kLWFsb25lIHVzYWdlLCBhcyB3ZWxsIGFzIGludGVncmF0ZWQgd2l0aCB0aGUgRWNsaXBzZSBwbGF0Zm9ybSwgCiAgICAgIGlRZ2VuIGlzIGludGVuZGVkIGZvciB1c2UgYnkgZGV2ZWxvcGVycyB3aG8gcmVxdWlyZSBtYXhpbXVtIGZsZXhpYmlsaXR5IAogICAgICBpbiBkZXRlcm1pbmluZyB0aGVpciBhcmNoaXRlY3R1cmFsIHBhdHRlcm5zLCB3aGljaCBjYW4gdGhlbiBiZSB0dXJuZWQgaW50byAKICAgICAgcmV1c2FibGUgdGVtcGxhdGVzLiBXaXRoIHN1cHBvcnQgZm9yIHRoZSBmdWxsIFVNTCBtZXRhLW1vZGVsLCBpUWdlbiBzdXBwb3J0cyAKICAgICAgY29kZSBnZW5lcmF0aW9uIGZyb20gbW9kZWwgYXJ0aWZhY3RzIHN1Y2ggYXMgY2xhc3MgYW5kIGFjdGl2aXR5IGRpYWdyYW1zIAogICAgICBpbiBYTUkgMS4wLCAxLjEgYW5kIDEuMiBmb3JtYXRzLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPklubm92YXRpb25zIC0gdmlzdWFsIHJ1bGVzPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cudmlzdWFsLXJ1bGVzLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudmlzdWFsLXJ1bGVzLmNvbTwvYT4gCiAgICAgIDxiciAvPgoJICB2aXN1YWwgcnVsZXMgdGhlIEJ1c2luZXNzIFJ1bGVzIE1hbmFnZW1lbnQgU3lzdGVtIGlzIGZ1bGx5IGludGVncmF0ZWQgaW50byBFY2xpcHNlLiBhbmQgdXNlZCB0byBncmFwaGljYWxseSBtb2RlbCBidXNpbmVzcyBydWxlcyBhbmQgZ2VuZXJhdGUgSmF2YSBvciBDb2JvbCAgcHJvZ3JhbSBjb2RlIGFzIHdlbGwgYXMgZG9jdW1lbnRhdGlvbiBvZiB0aGVzZSBydWxlcy4gV2l0aCB0aGUgQlJNUywgYnVzaW5lc3MgbG9naWMgaW4gYXBwbGljYXRpb25zIGJlY29tZXMgdHJhbnNwYXJlbnQgYW5kIGVhc3kgdG8gYWRhcHQgdG8gbmV3IGJ1c2luZXNzIHJlcXVpcmVtZW50cy48YnIgLz4gCgkgIFRoZSBoaWdobGlnaHQgb2YgdGhlIG5ldyB2ZXJzaW9uIDMuMyBpcyB0aGUgY29tcGxldGVseSByZXZpc2FibGUgcnVsZSBwcm9jZXNzaW5nOiB1c2luZyBhZHZhbmNlZCBzdGF0aXN0aWNzIHlvdSBjYW4gdHJhY2UgYmFjayB0aGUgcHJvY2Vzc2luZyBvZiBlYWNoIGluZGl2aWR1YWwgcmVjb3JkIGluIHRoZSBydWxlIG1vZGVsIHN0ZXAtYnktc3RlcC4gRnVydGhlciB0aGUgVGVzdCBEYXRhIEVkaXRvciBub3cgYWxsb3dzIHRvIGNvbnZlbmllbnRseSBzZXQgdXAgcmVmZXJlbmNlIGRhdGEsIGdldCBhbiBvdmVydmlldyBvZiByZXN1bHQgZGF0YSBhbmQgY3JlYXRlIHRlc3QgZGF0YSBmYXN0ZXIgdGhhbiBldmVyLjxiciAvPiAKICAgICAgUGxlYXNlIGZpbmQgYWxsIHJlbGVhc2Ugbm90ZXMgaGVyZTogPGEgaHJlZj0iaHR0cDovL3d3dy52aXN1YWwtcnVsZXMuZGUvZW4vMDJfZG93bmxvYWQvcmVsZWFzZS5odG1sIj5odHRwOi8vd3d3LnZpc3VhbC1ydWxlcy5kZS9lbi8wMl9kb3dubG9hZC9yZWxlYXNlLmh0bWw8L2E+IDxiciAvPgoJICBIZXJlIHlvdSBmaW5kIHRoZSB2aXN1YWwgcnVsZXMgIGZvcnVtOiA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1ydWxlcy5kZS9mb3J1bSI+aHR0cDovL3d3dy52aXN1YWwtcnVsZXMuZGUvZm9ydW08L2E+IDxiciAvPgoJICBQbGVhc2UgcmVnaXN0ZXIgdG8gZG93bmxvYWQgdGhlIGxhdGVzdCB2ZXJzaW9ucyAzLjM6IDxhIGhyZWY9Imh0dHA6Ly93d3cudmlzdWFsLXJ1bGVzLmRlL2VuLzAyX2Rvd25sb2FkL2xpbmtzLmh0bWw+aHR0cDovL3d3dy52aXN1YWwtcnVsZXMuZGUvZW4vMDJfZG93bmxvYWQvbGlua3MuaHRtbDwvYT4uIFRoZSBsaWNlbnNlIGlzIGZyZWUgZm9yIGEgMzAgZGF5cyBldmFsdWF0aW9uIGFzIHdlbGwgYXMgZm9yIG5vbi1jb21tZXJjaWFsIHVzZS48YnIgLz4gCgkgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+ICAKICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+SW5zaVRlY2ggLSBYVFQgU21hcnQgV2ViIENsaWVudDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lmluc2l0ZWNoaW5jLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaW5zaXRlY2hpbmMuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEJ1aWx0IGluIHB1cmUgSmF2YSwgdGhlIFhUVCBTbWFydCBXZWIgQ2xpZW50IHNvbHV0aW9uIGlzIGEgdW5pcXVlIEphdmEgQXBwbGljYXRpb24gCiAgICAgIENvbnN0cnVjdGlvbiBFbnZpcm9ubWVudCB0aGF0IGRlbGl2ZXJzIGJlbmVmaXRzIHRvIGJvdGggYXBwbGljYXRpb24gZGV2ZWxvcGVycyAKICAgICAgYW5kIGVuZC11c2VycyBvZiByaWNoLCBjb21wbGV4LCB3ZWIgYXBwbGljYXRpb25zLiBYVFQgZXh0ZW5kcyB0aGUgRWNsaXBzZSAKICAgICAgcGxhdGZvcm0gdG8gcHJvdmlkZSBhIHBvd2VyZnVsIGRhdGEgYXdhcmUgUkFEIGVudmlyb25tZW50IHNwZWNpZmljYWxseSBjcmVhdGVkIAogICAgICB0byBzaW1wbGlmeSB0aGUgY29tcGxleGl0eSBvZiBkZXZlbG9waW5nIGFuZCBkZXBsb3lpbmcgSmF2YS1iYXNlZCwgZGlzdHJpYnV0ZWQsIAogICAgICByaWNoLCBXZWIgQXBwbGljYXRpb25zIGZvciB0aGUgU09BIEVudGVycHJpc2UuIFVzZXIgaW50ZXJmYWNlcyBjYW4gYmUgc2VhbWxlc3NseSAKICAgICAgZGV2ZWxvcGVkIGFnYWluc3QgYSB3aWRlIHZhcmlldHkgb2YgZGF0YSBzb3VyY2VzIGluY2x1ZGluZyBSREJNUywgV2ViIFNlcnZpY2VzIAogICAgICBhbmQgT2JqZWN0IFBlcnNpc3RlbmNlIExheWVycyBzdWNoIGFzIEpETyBhbmQgSGliZXJuYXRlIChhdmFpbGFibGUgd2l0aCAKICAgICAgdmVyc2lvbiA1LjApLiBYVFQgYWxzbyBlbmhhbmNlcyB0cmFkaXRpb25hbCBVTUwgdG9vbHMgYnkgYXV0b21hdGljYWxseSBnZW5lcmF0aW5nIAogICAgICByaWNoIEdVSXMgZnJvbSBVTUwgbW9kZWxzLiBYVFQgdjUuMCBhbHNvIGluY2x1ZGVzIGZ1bGwgc3VwcG9ydCBmb3IgSUJNIFdlYlNwaGVyZSAKICAgICAgU3R1ZGlvIEFwcGxpY2F0aW9uIERldmVsb3BlciB2NS4xLjIuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPkluc3RhbnRpYXRpb25zIDwvYj4tIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPkVjbGlwc2VQcm8gQXVkaXQ8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb20vZWNsaXBzZXByby9hdWRpdC5odG0iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9lY2xpcHNlcHJvL2F1ZGl0Lmh0bTwvYT4gCiAgICAgIC0gV2l0aCBvdmVyIDcwMCBhdWRpdCBydWxlcyBhbmQgbWV0cmljcywgRWNsaXBzZVBybyBBdWRpdCBpbnRlZ3JhdGVzIHNlYW1sZXNzbHkgCiAgICAgIGludG8gdGhlIEVjbGlwc2UgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQgYW5kIGV4dGVuZHMgdGhlIGJhc2UgZnVuY3Rpb25hbGl0eS4gCiAgICAgIER5bmFtaWMgY29kZSBhdWRpdCBjaGVja3MgaHVuZHJlZHMgb2YgaW5kdXN0cnktc3RhbmRhcmQgcnVsZXMgYW5kIGF1dG9tYXRpY2FsbHkgCiAgICAgIGRldGVjdHMgYW5kIGNvcnJlY3RzIHZpb2xhdGlvbnMgYXMgY29kZSBpcyB3cml0dGVuLiBNZXRyaWNzIGtlZXAgZGV2ZWxvcGVycyAKICAgICAgaW5mb3JtZWQgaW4gcmVhbC10aW1lIG9mIGtleSBjaGFyYWN0ZXJpc3RpY3MgaW4gdGhlaXIgY29kZS4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5FY2xpcHNlUHJvIFRlc3Q8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb20vZWNsaXBzZXByby90ZXN0Lmh0bSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tL2VjbGlwc2Vwcm8vdGVzdC5odG08L2E+IAogICAgICAtIEVjbGlwc2VQcm8gVGVzdCBpbmNsdWRlcyBKVW5pdCB0ZXN0IGNhc2UgZ2VuZXJhdGlvbiBhbmQgY29kZSBjb3ZlcmFnZSAKICAgICAgYW5hbHlzaXMuIEpVbml0IHRlc3QgY2FzZSBnZW5lcmF0aW9uIGFuZCBjb2RlIGNvdmVyYWdlIGFuYWx5c2lzIGF1dG9tYXRlIAogICAgICB0aGUgaW1wb3J0YW50IHRhc2sgb2YgdW5pdCB0ZXN0aW5nIGFuZCBlbnN1cmVzIHRoYXQgc29mdHdhcmUgbWVldHMgaGlnaCAKICAgICAgcXVhbGl0eSBzdGFuZGFyZHMgYmVmb3JlIGl0IG1vdmVzIGludG8gcHJvZHVjdGlvbi4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5XaW5kb3dCdWlsZGVyIFBybzwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS93aW5kb3didWlsZGVycHJvL2RlZmF1bHQuaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb20vd2luZG93YnVpbGRlcnByby9kZWZhdWx0Lmh0bTwvYT4gCiAgICAgIC0gV2luZG93QnVpbGRlciBQcm8gcHJvdmlkZXMgYSByaWNoIEdVSSBkZXNpZ24gZW52aXJvbm1lbnQgZm9yIEVjbGlwc2UgdGhhdCAKICAgICAgaW5jbHVkZXMgaW50ZWxsaWdlbnQgbGF5b3V0IGFzc2lzdCwgZHJhZy1hbmQtZHJvcCwgZGlyZWN0IHByb3BlcnR5IGVkaXRpbmcgCiAgICAgIGFuZCB3aWRnZXQgbW9ycGhpbmcuIFdpbmRvd0J1aWxkZXIgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgaGlnaCBxdWFsaXR5IAogICAgICBKYXZhIGNvZGUgaW4gYSBtdWx0aXR1ZGUgb2Ygc3R5bGVzIGFuZCBjYW4gcmVhZCBjb2RlIGdlbmVyYXRlZCBieSBtb3N0IHBvcHVsYXIgCiAgICAgIEphdmEgR1VJIGJ1aWxkZXJzLiBEZXZlbG9wZXJzIGNhbiBzZWxlY3QgZnJvbSBhIGNvbXBsZXRlIHNldCBvZiBsYXlvdXQgbWFuYWdlcnMgCiAgICAgIGFzIHdlbGwgYXMgU1dULCBKRmFjZSwgQVdUIG9yIFN3aW5nIGNvbnRyb2xzIHRvIGNyZWF0ZSByaWNoIGNsaWVudCBKYXZhIAogICAgICBhcHBsaWNhdGlvbnMuIFRoZSBXaW5kb3dCdWlsZGVyIFBybyBzdWl0ZSBjb250YWlucyBTd2luZyBEZXNpZ25lciBhbmQgU1dUIAogICAgICBEZXNpZ25lci4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5Td2luZyBEZXNpZ25lcjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9zd2luZy1kZXNpZ25lci9kZWZhdWx0Lmh0bSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tL3N3aW5nLWRlc2lnbmVyL2RlZmF1bHQuaHRtPC9hPiAKICAgICAgLSBTd2luZyBEZXNpZ25lciBpcyBhIHBvd2VyZnVsIGFuZCBlYXN5LXRvLXVzZSBHVUkgZGVzaWduZXIgYmFzZWQgb24gU3VuIAogICAgICBTd2luZyB0ZWNobm9sb2d5LiA8YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPlNXVCBEZXNpZ25lcjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9zd3QtZGVzaWduZXIvZGVmYXVsdC5odG0iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9zd3QtZGVzaWduZXIvZGVmYXVsdC5odG08L2E+IAogICAgICAtIFNXVCBEZXNpZ25lciBpcyBhIHBvd2VyZnVsIGFuZCBlYXN5LXRvLXVzZSBHVUkgZGVzaWduZXIgYmFzZWQgb24gRWNsaXBzZSAKICAgICAgU1dUIHRlY2hub2xvZ3kuIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+Q29kZVBybyBBbmFseXRpWDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lmluc3RhbnRpYXRpb25zLmNvbS9jb2RlcHJvL2FuYWx5dGl4L2RlZmF1bHQuaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb20vY29kZXByby9hbmFseXRpeC9kZWZhdWx0Lmh0bTwvYT4gCiAgICAgIC0gQ29kZVBybyBBbmFseXRpWCBlbmFibGVzIEVjbGlwc2UgZGV2ZWxvcGVycyB0byBkZWxpdmVyIGNvbnRpbnVvdXMgcXVhbGl0eSAKICAgICAgaW1wcm92ZW1lbnQgdGhyb3VnaG91dCB0aGUgZW50aXJlIEphdmEgY29kZSBkZXZlbG9wbWVudCBjeWNsZS4gQW5hbHl0aVggCiAgICAgIGRlbGl2ZXJzIGEgcmljaCBzZXQgb2YgZmVhdHVyZXMgdGhhdCBpbmNsdWRlIENvZGUgQXVkaXQsIENvZGUgTWV0cmljcywgSlVpbnQgCiAgICAgIFRlc3QgQ2FzZSBHZW5lcmF0aW9uLCBDb2RlIENvdmVyYWdlIEFuYWx5c2lzLCBEZXBlbmRlbmN5IEFuYWx5c2lzLCBKYXZhZG9jIAogICAgICBSZXBhaXIsIGFuZCBUZWFtIENvbGxhYm9yYXRpb24uIDxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+Q29kZVBybyBQbHVzUGFrPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tL2NvZGVwcm8vcGx1c3Bhay9kZWZhdWx0Lmh0bSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tL2NvZGVwcm8vcGx1c3Bhay9kZWZhdWx0Lmh0bTwvYT4gCiAgICAgIC0gQ29kZVBybyBBbmFseXRpWCBpcyB0aGUgcGVyZmVjdCBjb21wbGVtZW50IHRvIENvZGVQcm8gQW5hbHl0aVggYW5kIGFkZHMgCiAgICAgIHByb2R1Y3Rpdml0eSBlbmhhbmNpbmcgZmVhdHVyZXMgdG8gRWNsaXBzZSBsaWtlIERlc2lnbiBQYXR0ZXJucywgVGFzayBTY2hlZHVsZXIsIAogICAgICBOZXN0ZWQgUHJvamVjdHMsIEVuaGFuY2VkIEJyb3dzZXIgVmlld3MgYW5kIEVuaGFuY2VkIEphdmEgTmF2aWdhdGlvbi4gCiAgICAgIDxiciAvPjxiciAvPgogICAgICA8Yj5SQ1AgRGV2ZWxvcGVyPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW5zdGFudGlhdGlvbnMuY29tL3JjcGRldmVsb3Blci9pbmRleC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5pbnN0YW50aWF0aW9ucy5jb20vcmNwZGV2ZWxvcGVyL2luZGV4Lmh0bWw8L2E+CiAgICAgIC0gUkNQIERldmVsb3BlciBhY2NlbGVyYXRlcyB0aGUgY3JlYXRpb24gb2YgRWNsaXBzZSBSQ1AgYXBwbGljYXRpb25zIGJ5IHByb3ZpZGluZyB0b29scyBmb3IgY29uc3RydWN0aW5nIGFuZCB0ZXN0aW5nIGdyYXBoaWNhbCB1c2VyIGludGVyZmFjZXMgYW5kIHBhY2thZ2luZyByaWNoIGNsaWVudCBhcHBsaWNhdGlvbnMgZm9yIGRlcGxveW1lbnQuIFJDUCBEZXZlbG9wZXIgaGFybmVzc2VzIHRoZSBwb3dlcmZ1bCBzZXJ2aWNlcyBvZiBFY2xpcHNlIFJDUCB0byBwdXQgSmF2YSBiYWNrIG9uIHRoZSBkZXNrdG9wIGJ5IHJlZHVjaW5nIGRldmVsb3BtZW50IHRpbWUsIGluY3JlYXNpbmcgcGVyZm9ybWFuY2UsIGFuZCBhc3N1cmluZyBjb25zaXN0ZW50IGFwcGxpY2F0aW9uIGxvb2stYW5kLWZlZWwuIFJDUCBEZXZlbG9wZXIgaXMgY29tcHJpc2VkIG9mIHRocmVlIGNvbXBvbmVudCBwcm9kdWN0cyBTV1QgRGVzaWduZXIsIFdpbmRvd1Rlc3RlciBhbmQgUkNQIFBhY2thZ2VyLgogICAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPkludGVnaWxpdHkvUmVkSGlsbCAtIFNpbWlhbiBVSTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmludGVnaWxpdHkuY29tL3NpbWlhbnVpLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmludGVnaWxpdHkuY29tL3NpbWlhbnVpLmh0bWw8L2E+IAogICAgICA8YnIgLz4KICAgICAgQmFzZWQgb24gU2ltaWFuIDxhIGhyZWY9Imh0dHA6Ly93d3cucmVkaGlsbGNvbnN1bHRpbmcuY29tLmF1IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5yZWRoaWxsY29uc3VsdGluZy5jb20uYXU8L2E+LCAKICAgICAgdGhlIFNpbWlhbiBwbHVnLWluIGZvciBlY2xpcHNlIGRldGVjdHMgcmVnaW9ucyBvZiBkdXBsaWNhdGVkIGNvZGUgdGhhdCBtaWdodCAKICAgICAgaGF2ZSBiZWVuIHByb2R1Y2VkIGJ5IGxhenkgY3V0LWFuZC1wYXN0ZSBvcGVyYXRpb25zIGZvciBleGFtcGxlLiBTdWNoIHJlZ2lvbnMgCiAgICAgIGFyZSBkYW1hZ2luZyB0byBjb2RlIG1haW50YWluYWJpbGl0eSBhbmQgc2hvdWxkIGJlIHJlZmFjdG9yZWQgb3V0LiBUaGUgcGx1Z2luIAogICAgICBhbGxvd3MgYSB1c2VyIHRvIHJ1biBTaW1pYW4gYWdhaW5zdCB0aGUgZmlsZXMgaW4gaGlzL2hlciBwcm9qZWN0LCBhbmQgbmF2aWdhdGUgCiAgICAgIGRpcmVjdGx5IHRvIHRoZSBkdXBsaWNhdGUgcmVnaW9ucy4gPGJyIC8+CiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPkludGxhbmQgLSBDb2RlQmVhbWVyPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuaW50bGFuZC5jb20vaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaW50bGFuZC5jb20vaW5kZXguaHRtbDwvYT4gCiAgICAgIDxiciAvPgogICAgICBDb2RlQmVhbWVyLCBhIGNvbGxhYm9yYXRpdmUgZGV2ZWxvcG1lbnQgcGx1Zy1pbiBleHRlbmRzIGVjbGlwc2Ugd2l0aCB0ZWFtIAogICAgICBjb2xsYWJvcmF0aW9uIGZlYXR1cmVzIHN1Y2ggYXMgdGFzaywgYnVnIGFuZCBpc3N1ZSBtYW5hZ2VtZW50IGZyb20gd2l0aGluIAogICAgICB0aGUgZWNsaXBzZSBwbGF0Zm9ybS4gRGV2ZWxvcGVycyBjYW4gc3VibWl0IGJ1Z3Mgd2l0aCBzb3VyY2UgY29kZSBsb2NhdGlvbnMsIAogICAgICBhbmQgc2hhcmUgYnVncywgdGFza3MgYW5kIG90aGVyIGlzc3VlcyB3aXRoIG90aGVyIGRldmVsb3BlcnMgaW4gZGlzdHJpYnV0ZWQgCiAgICAgIGVudmlyb25tZW50cy4gQ29kZUJlYW1lciBpcyBhdmFpbGFibGUgZm9yIGZyZWUgdG8gcXVhbGlmaWVkIGVkdWNhdGlvbmFsIAogICAgICBpbnN0aXR1dGlvbnMuIFlvdSZyc3F1bztsbCBmaW5kIG1vcmUgYWJvdXQgdGhlIHBsdWctaW4gYXQgPGEgaHJlZj0iaHR0cDovL2ludGxhbmQuY29tL3Byb2R1Y3RzL2NiLWludGVncmF0aW9ucy5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL2ludGxhbmQuY29tL3Byb2R1Y3RzL2NiLWludGVncmF0aW9ucy5odG1sPC9hPjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5JdmlzIFRlY2hub2xvZ2llcyAtIHhQcm9jZXNzPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuaXZpcy5jb20vcHVibGljL3Byb2R1Y3RzL3hwcm9jZXNzL2luZGV4LmNmbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaXZpcy5jb20vcHVibGljL3Byb2R1Y3RzL3hwcm9jZXNzL2luZGV4LmNmbTwvYT4gCiAgICAgIDxiciAvPgogICAgICB4UHJvY2VzcyBpcyBhIGR5bmFtaWNlIHByb2Nlc3MgbWFuYWdlbWVudCB0b29sIHRoYXQgYnJpbmdzIHRvZ2V0aGVyIHByb2Nlc3MgCiAgICAgIGltcHJvdmVtZW50IGFuZCBwcm9qZWN0IGV4ZWN1dGlvbi4gQnVpbHQgb24gdGhlIEVjbGlwc2UgcGxhdGZvcm0sIHhQcm9jZXNzIAogICAgICBlbmFibGVzIG9yZ2FuaXphdGlvbnMgdG8gb3B0aW1pemUgcGxhbnMsIGltcHJvdmUgcHJvY2Vzc2VzIGFuZCBtYW5hZ2UgcmVzb3VyY2VzIAogICAgICB0aHJvdWdob3V0IHByb2plY3QgZXhlY3V0aW9uLiBBIGZyZWUsIGZ1bGx5IGZ1bmN0aW9uYWwgdmVyc2lvbiBvZiB4UHJvY2VzcyAKICAgICAgU2luZ2xlLVVzZXIgRWRpdGlvbiBpcyBhdmFpbGFibGUgZm9yIGRvd25sb2FkIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cuaXZpcy5jb20vcHVibGljL2Rvd25sb2FkLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuaXZpcy5jb20vcHVibGljL2Rvd25sb2FkLzwvYT4uIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIiBoZWlnaHQ9IjM3Ij48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIiBoZWlnaHQ9IjM3Ij4gPGI+SmFzcGVyQXNzaXN0YW50LmNvbSAtIEphc3BlckFzc2lzdGFudDwvYj4gCiAgICAgIC0gPGEgaHJlZj0iaHR0cDovL3d3dy5qYXNwZXJhc3Npc3RhbnQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5qYXNwZXJhc3Npc3RhbnQuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEphc3BlckFzc2lzdGFudCBpcyBhIHZpc3VhbCByZXBvcnQgZGVzaWduZXIgZm9yIEphc3BlclJlcG9ydHMsIGEgcG9wdWxhciAKICAgICAgb3Blbi1zb3VyY2UgcmVwb3J0aW5nIGVuZ2luZS4gSXQgaXMgYnVpbHQgb24gdG9wIG9mIHRoZSBFY2xpcHNlJnJzcXVvO3MgcGx1Zy1pbiAKICAgICAgYXJjaGl0ZWN0dXJlIGFuZCBpdHMgbWFpbiBnb2FsIGlzIHRvIGhlbHAgeW91IGNyZWF0ZSBKYXNwZXJSZXBvcnRzIHJlcG9ydCAKICAgICAgZGVmaW5pdGlvbiBmaWxlcyB0aHJvdWdoIGFuIGludHVpdGl2ZSBncmFwaGljYWwgaW50ZXJmYWNlLjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPkthZG9taXlhIEFzc29jaWF0ZXMgLSBSRU5FPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cucm9ueHNvZnQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5yb254c29mdC5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgUkVORSAtIFJvbnggRWNsaXBzZSBOb3RlYm9vayBFZGl0b3IgaXMgYSBub3RlYm9vayBwbHVnLWluIHRoYXQgbGV0cyB5b3UgCiAgICAgIHJlY29yZCwgY29sbGVjdCwgc2F2ZSwgb3JnYW5pemUgYW5kIG1hbmFnZSB0ZXh0IGluZm9ybWF0aW9uIGluIGEgbm90ZWJvb2suIAogICAgICBVc2Ugbm90ZWJvb2tzIHRvIG1haW50YWluIHByb2plY3Qgb3IgcGVyc29uYWwgam91cm5hbHMsIG9yIHByb2plY3QgaW5mb3JtYXRpb24gCiAgICAgIHN1Y2ggYXMgbG9ncywgcGxhbnMsIHNwZWNpZmljYXRpb25zIGFuZCBkb2N1bWVudGF0aW9uLiBLZWVwIHlvdXIgbm90ZXMgYW5kIAogICAgICBkb2N1bWVudGF0aW9uIHRvZ2V0aGVyIHdpdGggeW91ciBwcm9ncmFtIHNvdXJjZSBjb2RlLiBVc2UgdGhlIGN1c3RvbWl6YWJsZSAKICAgICAgZXhwb3J0IGZ1bmN0aW9uIHRvIG91dHB1dCBYTUwsIEhUTUwgb3IgRWNsaXBzZSBIZWxwIGZpbGVzLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPktvZGVycyAtIEtvZGVycyBJREUgUGx1Z2luIGZvciBFY2xpcHNlIDwvYj4tIDxhIGhyZWY9Imh0dHA6Ly93d3cua29kZXJzLmNvbS9kb3dubG9hZHMiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmtvZGVycy5jb20vZG93bmxvYWRzPC9hPiAKICAgICAgPGJyIC8+VGhlIEtvZGVycyBQbHVnaW4gZW5hYmxlcyBzb2Z0d2FyZSBkZXZlbG9wZXJzIHRvIHNlYXJjaCBtb3JlIHRoYW4gMjI1IG1pbGxpb24gbGluZXMgb2Ygb3BlbiAKCSAgc291cmNlIGNvZGUgaW5kZXhlZCBhdCBLb2RlcnMuY29tIHdpdGhvdXQgbGVhdmluZyB0aGUgRWNsaXBzZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gIAoJICBCZXRhIDIgaW50cm9kdWNlcyBuZXcgZmVhdHVyZXMgaW5jbHVkaW5nIGxvY2FsaXphdGlvbiBhbmQgdGhlIG5ldyBTbWFydFNlYXJjaCBmZWF0dXJlLiAgCgkgIFRoZSBLb2RlcnMgUGx1Z2luIGlzIGNvbXBhdGlibGUgd2l0aCBFY2xpcHNlIDMuMCBhbmQgYWJvdmUgYW5kIGhhcyBleHRlbmRlZCBzdXBwb3J0IGZvciBKYXZhLCAKCSAgQyBhbmQgQysrLgoJPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+IDxiPkxlZ2FjeUogQ29ycG9yYXRpb24gLSBQRVJDb2JvbDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmxlZ2FjeWouY29tL3ByZXNzL3BlcmNvYm9sMzBfYXZhaWwuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubGVnYWN5ai5jb20vcHJlc3MvcGVyY29ib2wzMF9hdmFpbC5odG1sPC9hPjxiciAvPgogICAgICBBIGNvYm9sIGNvbXBpbGVyIGFuZCBJREUgYmFzZWQgb24gZWNsaXBzZS4gRmVhdHVyZXMgaW5jbHVkZSBDT0JPTCBwcm9ncmFtIAogICAgICB0ZW1wbGF0ZXMsIGluY3JlbWVudGFsIGNvbXBpbGUsIGludGVncmF0ZWQgTGFuZ3VhZ2UgU2Vuc2l0aXZlIEVkaXRpbmcgYW5kIAogICAgICBncmFwaGljYWwgZGVidWdnaW5nLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5MZW1vIFNvZnQgQ29tcGFueSAtIExlbW8gQ29ib2wgRGV2ZWxvcG1lbnQgCiAgICAgIFRvb2w8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5sZW1vc29mdC5jb20vcHJvZF9kZXNjci5waHAiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmxlbW9zb2Z0LmNvbS9wcm9kX2Rlc2NyLnBocDwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgTGVtbyBDb2JvbCBEZXZlbG9wbWVudCBUb29sIHdhcyBjcmVhdGVkIGJ5IENPQk9MIHByb2dyYW1tZXJzLiBUaGUgU3ludGF4IAogICAgICBhbmFseXplciwgc291cmNlIGJyb3dzZXIsIGNvbnRlbnQgYXNzaXN0YW50IGFuZCBvdGhlciB1c2VmdWwgZmVhdHVyZXMgaGVscCAKICAgICAgeW91IHRvIGltcHJvdmUgeW91ciBwZXJmb3JtYW5jZSBhbmQgdGhlIHF1YWxpdHkgb2YgeW91ciBzb3VyY2UgY29kZS4gWW91IAogICAgICBjYW4gZG93bmxvYWQgYSB0cmlhbCB2ZXJzaW9uIGZyb20gPGEgaHJlZj0iaHR0cDovL3d3dy5sZW1vc29mdC5jb20vc3BlY2lhbG9mZmVyLnBocCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubGVtb3NvZnQuY29tL3NwZWNpYWxvZmZlci5waHA8L2E+IAogICAgICAuIEZlZWRiYWNrIHdlbGNvbWUhPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+TTEgR2xvYmFsPC9iPiCWIDxiPkJQaSBTdHVkaW8gKEFscGhhKTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm0xZ2xvYmFsLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubTFnbG9iYWwuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEJQaSBTdHVkaW8gaXMgYSBGUkVFIGJ1c2luZXNzIHByb2Nlc3MgbW9kZWxpbmcgdG9vbCBkZXNpZ25lZCB0byBlbmFibGUgYnVzaW5lc3MgCiAgICAgIGFuYWx5c3RzIGFuZCBJVCBwZXJzb25uZWwgdG8gYWNoaWV2ZSBtb3JlIGVmZmljaWVudCBlbmQtdG8tZW5kIHByb2Nlc3MgbW9kZWxpbmcuIAogICAgICBCUGkgU3R1ZGlvIGlzIHVuaXF1ZSBpbiBpdHMgYWJpbGl0eSB0byBhbGxvdyBjb21wYW5pZXMgdG8gdmlzdWFsbHkgZGVmaW5lIAogICAgICBhbmQgY29uZmlndXJlIGJ1c2luZXNzIHByb2Nlc3NlcyBhbmQgY29ycmVzcG9uZGluZyB1c2VyIGludGVyZmFjZXMgYWNyb3NzIAogICAgICBpbnRlcmFjdGlvbiBjaGFubmVscy4gV2hlbiBjb21wbGV0ZWQsIGl0IHByb3ZpZGVzIGEgYmlyZJJzIGV5ZSB2aWV3IG9mIGEgCiAgICAgIGNvbXBhbnmScyB3b3JrZmxvd3MgYW5kIGludGVyYWN0aW9ucyBhY3Jvc3MgYWxsIGNoYW5uZWxzLCB3aGV0aGVyIGN1c3RvbWVyIAogICAgICBvciBwYXJ0bmVyLCB3YWxrLWluLCBjYWxsLWluLCBjbGljay1pbiBvciBtYWlsLWluLiBUaGUgQWxwaGEgcmVsZWFzZSBpcyAKICAgICAgYmFzZWQgb24gdGhlIEJQTU4gc3RhbmRhcmQgYW5kIGlzIGFuIEVjbGlwc2UgcGx1Zy1pbi4gVGhpcyByZWxlYXNlIGluY2x1ZGVzIAogICAgICBtb2RlbGluZyBwYWxldHRlcyBmb3IgYnVzaW5lc3MgcHJvY2Vzc2VzLCB3ZWIgaW50ZXJmYWNlcyBhbmQgdm9pY2UgaW50ZXJhY3Rpb25zLiAKICAgICAgTW9kZWxpbmcgcGFsZXR0ZXMgZm9yIGFkZGl0aW9uYWwgaW50ZXJhY3Rpb24gY2hhbm5lbHMsIGluY2x1ZGluZyBlbWFpbCBhbmQgCiAgICAgIHdlYiBjb2xsYWJvcmF0aW9uIHdpbGwgYmUgYXZhaWxhYmxlIGluIDIwMDUuIFRoZSBjb21wYW55knMgb2JqZWN0aXZlIGlzIAogICAgICB0byByZWNlaXZlIGZlZWRiYWNrIGZyb20gdGhlIHByb2Nlc3MgY29tbXVuaXR5IHByaW9yIHRvIGl0cyBnZW5lcmFsbHkgYXZhaWxhYmxlIAogICAgICByZWxlYXNlIGluIGVhcmx5IDIwMDUuIERvd25sb2FkIHdpdGhvdXQgY2hhcmdlIGFuZCByZWFkIG91ciCTTW9kZWwgWW91ciAKICAgICAgRW50ZXJwcmlzZZQgd2hpdGVwYXBlciBhdCA8YSBocmVmPSJodHRwOi8vd3d3Lm0xZ2xvYmFsLm9yZyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cubTFnbG9iYWwub3JnPC9hPi48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMjEiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMjEiPiA8Yj5NNyBDb3Jwb3JhdGlvbjwvYj4gLSA8Yj5NNyBOaXRyb1ggZm9yIEpTUCAKICAgICAgYW5kIFN0cnV0cywgRWNsaXBzZSBFZGl0aW9uPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cubTcuY29tL3Byb2R1Y3QuanNwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5tNy5jb20vcHJvZHVjdC5qc3A8L2E+IAogICAgICA8YnIgLz4KICAgICAgTTcgTml0cm9YIHdhcyBjcmVhdGVkIHRvIGNvbXByZWhlbnNpdmVseSBtZWV0IHRoZSBuZWVkcyBvZiBKYXZhIGRldmVsb3BlcnMgCiAgICAgIGJ1aWxkaW5nIEpTUCBhbmQgU3RydXRzLWJhc2VkIGFwcGxpY2F0aW9ucy4gTml0cm9YIHByb3ZpZGVzIGFuIGFycmF5IG9mIAogICAgICBhZHZhbmNlZCBjYXBhYmlsaXRpZXMgaW5jbHVkaW5nIGEgc291cmNlIGFuZCB2aXN1YWwgSlNQIEVkaXRvciwgU3RydXRzIEVkaXRvciAKICAgICAgYW5kIEFwcFhSYXkgdGVjaG5vbG9neSB3aGljaCBwcm92aWRlcyBjb25zaXN0ZW5jeSBhbmQgdmFsaWRhdGlvbiBjaGVja2luZyAKICAgICAgYWNyb3NzIGFsbCBsZXZlbHMgb2YgYSB3ZWIgYXBwbGljYXRpb24uIE5pdHJvWCBlbmhhbmNlcyBwcm9kdWN0aXZpdHkgd2hldGhlciAKICAgICAgYSBkZXZlbG9wZXIgaXMgd29ya2luZyBvbiBKU1AgcGFnZXMsIFN0cnV0cyBhcnRpZmFjdHMgb3IgYnVzaW5lc3MgbG9naWMuIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5NaWNoYWVsIENhbXBiZWxsIEFzc29jaWF0ZXMgTHRkLjwvYj4gLSA8Yj5KQ29kZUJveDwvYj4gCiAgICAgIC0gPGEgaHJlZj0iaHR0cDovL3d3dy5qY29kZWJveC5jb20vZHduX21udS5zaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5qY29kZWJveC5jb20vZHduX21udS5zaHRtPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEpDb2RlQm94IGlzIGEgcG93ZXJmdWwgYXBwbGljYXRpb24vY29tcG9uZW50IGJ1aWxkZXIgdGhhdCBzaW1wbGlmaWVzIHRoZSAKICAgICAgY3JlYXRpb24gb2YgSmF2YSBFbnRlcnByaXNlIChKMkVFKSwgV2ViIGFuZCBXZWIgU2VydmljZXMgYXBwbGljYXRpb25zLiBJdCAKICAgICAgYWxsb3dzIGRldmVsb3BlcnMgdG8gdmlzdWFsbHkgZGVmaW5lIEoyRUUvV2ViIGFwcGxpY2F0aW9ucyBhbmQgdGhlbiB0byBpbW1lZGlhdGVseSAKICAgICAgYnVpbGQsIGFzc2VtYmxlIGFuZCBkZXBsb3kgdGhlIGFwcGxpY2F0aW9uIHRvIHRoZWlyIGFwcGxpY2F0aW9uIHNlcnZlciBmb3IgCiAgICAgIGltbWVkaWF0ZSBmZWVkYmFjay4gVGhlIGNvZGUgcHJvZHVjZWQgYnkgSkNvZGVCb3ggKEphdmEsIFhNTCBldGMuKSBjYW4gZWFzaWx5IAogICAgICBiZSBpbnRlZ3JhdGVkIHdpdGgvbWFpbnRhaW5lZCBpbiB0aGUgZWNsaXBzZSBlbnZpcm9ubWVudC48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiAgPHRyPgogICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPiAKICAgIDx0ZCB3aWR0aD0iMTAwJSI+IDxiPk1vYmlsZSBNZWRpYSAtIEdyYW5kLVJhcGlkIEJyb3dzZXI8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5ncmFuZHJhcGlkLmNvbS9pbmRleC5qc3AiPmh0dHA6Ly93d3cuZ3JhbmRyYXBpZC5jb20vaW5kZXguanNwPC9hPjxiciAvPgogICAgICBHcmFuZC1SYXBpZCBpcyBhIHNtYWxsIGFuZCBmYXN0IGJyb3dzZXIgZm9yIHJpY2ggd2ViIGNvbnRlbnRzLiBUaGUgR3JhbmQtUmFwaWQgCiAgICAgIHdlYiBlbmdpbmUgaXMgYXZhaWxhYmxlIGFzIGFuIEVjbGlwc2UgcGx1Zy1pbi4gSXQgaXMgdGlnaHRseSBpbnRlZ3JhdGVkIHdpdGggCiAgICAgIHRoZSBJREUgYmVpbmcgMTAwJSBTV1QgYmFzZWQuIFN1cHBvcnRzIEhUTUwsIFhIVE1MLCBET00sIENTUywgREhUTUwsIGFuZCAKICAgICAgSmF2YVNjcmlwdCwgYWxsIGluIGxlc3MgdGhhbiA3MDBrLiBHcmFuZC1SYXBpZCBPcGVuIEFQSSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgCiAgICAgIHRvIHRoZSB3ZWIgZW5naW5lIGFzIHdlbGwgYXMgYW4gZXh0cmVtZWx5IHBvd2VyZnVsIGV4dGVuc2lvbiBtZWNoYW5pc20uPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+TW9kZWxpc3RpYyAtIE1vZGVsaXN0aWMgSk1FPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cubW9kZWxpc3RpYy5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm1vZGVsaXN0aWMuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEEgVU1MIGNsYXNzIGRpYWdyYW1taW5nIHBsdWdpbiBkZWRpY2F0ZWQgdG8gSmF2YSBhbmQgaGlnaGx5IGludGVncmF0ZWQgaW50byAKICAgICAgdGhlIEVjbGlwc2UgSkRULiBGb3IgSmF2YSBwcm9ncmFtbWVycyByZXF1aXJpbmcgYWx3YXlzLWluLXN5bmMgZGlhZ3JhbXMgCiAgICAgIHdpdGggYW4gWFAgYXBwcm9hY2guIEl0IG9mZmVycyBhZHZhbmNlZCBmaWx0ZXJpbmcsIG9yZGVyaW5nLCBncm91cGluZyBhbmQgCiAgICAgIGFwcGVhcmFuY2UgY29udHJvbHMsIGVuYWJsaW5nIGNsZWFyIHZpc3VhbGlzYXRpb25zIHR1bmVkIHRvIGRpZmZlcmluZyBKYXZhIAogICAgICB0ZWNobm9sb2dpZXMuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICAgPHRyPgogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4gCiAgICA8dGQgd2lkdGg9IjEwMCUiPiA8Yj5KYW4tRnJpZWRyaWNoIE11dHRlciAtIExvZzRFPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly9sb2c0ZS5qYXllZmVtLmRlLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9sb2c0ZS5qYXllZmVtLmRlLzwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgRlJFRSBMb2c0RSBQbHVnaW4gaGVscHMgeW91IHRvIHNldCB1cCB5b3VyIGxvZ2dlciBlYXNpbHkgaW4gSmF2YSBwcm9qZWN0cy4gCiAgICAgIEl0IGFzc2lzdHMgeW91IGluIHNldmVyYWwgdGFza3M6IGxvZ2dlciBkZWNsYXJhdGlvbiwgbG9nZ2VyIGluc2VydHMgYXQgY2VydGFpbiAKICAgICAgbWV0aG9kIGVudHJpZXMsIHJlcGxhY2VtZW50cyBvZiBTeXN0ZW0ub3V0JnJzcXVvO3MsIG1vZGlmaWNhdGlvbiBvZiBleGlzdGluZyBsb2dnZXIgCiAgICAgIHN0YXRlbWVudHMgYW5kIG1vcmUuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+bXZtc29mdCAtIFNsaW1lIFVNTCAoU2xpbSBNb2RlbGluZyBFbnZpcm9ubWVudCk8L2I+IC0gCiAgICAgIDxhIGhyZWY9Imh0dHA6Ly93d3cubXZtc29mdC5kZS9jb250ZW50L3BsdWdpbnMvc2xpbWUvc2xpbWUuaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5tdm1zb2Z0LmRlL2NvbnRlbnQvcGx1Z2lucy9zbGltZS9zbGltZS5odG08L2E+IAogICAgICA8YnIgLz4KICAgICAgU2xpbWUgVU1MIGlzIGEgc2xpbSwgZmFzdCwgcG93ZXJmdWwgVU1MIHBsdWctaW4gZm9yIGFuYWx5emluZyBleGlzdGluZyBzb3VyY2UgCiAgICAgIGNvZGUsIHJvdW5kdHJpcCBkb2N1bWVudGluZyBhbmQgbW9kZWxpbmcgd2hpY2ggaXMgdGlnaHRseSBpbnRlZ3JhdGVkIGludG8gCiAgICAgIEVjbGlwc2UuIFRoZSBuZXcgcmVsZWFzZSBpbmNsdWRlcyBpbXByb3ZlZCBhdXRvbGF5b3V0LCB3aXphcmRzLCBVc2UgQ2FzZSAKICAgICAgc2hhcGVzLCBkZXRhY2hlZCBjbGFzc2VzLCBhbGwgVU1MIGNvbm5lY3RvcnMsIGltcHJvdmVkIHByaW50IHN1cHBvcnQgYW5kIAogICAgICBoZWxwLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4gCiAgICA8dGQgd2lkdGg9IjEwMCUiPiA8Yj5OZXh0QXBwIC0gRWNob1N0dWRpbzwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm5leHRhcHAuY29tL3Byb2R1Y3RzL2VjaG9zdHVkaW8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm5leHRhcHAuY29tL3Byb2R1Y3RzL2VjaG9zdHVkaW88L2E+IAogICAgICA8YnIgLz4KICAgICAgIEVjaG9TdHVkaW8gaXMgYW4gRWNsaXBzZSAzLjAtYmFzZWQgcmFwaWQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgCiAgICAgICAgdG9vbCBjYXBhYmxlIG9mIGNyZWF0aW5nIHdlYi1iYXNlZCBhcHBsaWNhdGlvbnMgdGhhdCB3b3JrIGFuZCBhY3QgbGlrZSByaWNoCiAgICAgICAgY2xpZW50cy4gQnVpbGRpbmcgdXBvbiB0aGUgcG93ZXIgb2YgdGhlIG9wZW4tc291cmNlIEVjaG8gRnJhbWV3b3JrLAogICAgICAgIEVjaG9TdHVkaW8gb2ZmZXJzIGVhc3ktdG8tdXNlIHRvb2xzIHRoYXQgZW5hYmxlIGRldmVsb3BlcnMgdG8gZGVzaWduCiAgICAgICAgbW9yZSBjb21wZWxsaW5nIHVzZXIgaW50ZXJmYWNlcyBpbiBsZXNzIHRpbWUuCiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4KICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4gCiAgICA8dGQgd2lkdGg9IjEwMCUiPiA8Yj5Ob2tpYTwvYj4gLSA8Yj5Ob2tpYSBNb2JpbGUgU2VydmVyIFNlcnZpY2VzIChOTVNTKSAxLjU8L2I+IAogICAgICAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuZm9ydW0ubm9raWEuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuZm9ydW0ubm9raWEuY29tLzwvYT4gCiAgICAgIDxiciAvPgogICAgICBUaGUgTk1TUyBwcm92aWRlcyBhIEoyU0UvRUUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgYW5kIHRlc3RpbmcgZW52aXJvbm1lbnQgCiAgICAgIGZvciBkZXZlbG9wZXJzIG9mIGFwcGxpY2F0aW9ucyB0aGF0IHVzZSBtb2JpbGUgbWVzc2FnaW5nIChTaG9ydCBNZXNzYWdlIAogICAgICBTZXJ2aWNlIFtTTVNdIGFuZCBNdWx0aW1lZGlhIE1lc3NhZ2luZyBTZXJ2aWNlIFtNTVNdKSwgbG9jYXRpb24sIGFuZCBwcmVzZW5jZSAKICAgICAgc2VydmljZXMuIE5NU1MgMS41IGNvbnNpc3RzIG9mIEphdmEgQVBJcy9saWJyYXJpZXMgdXNlZCBieSBhcHBsaWNhdGlvbnMgCiAgICAgIHRvIGFjY2VzcyB0aGUgb3BlcmF0b3IgaW5mcmFzdHJ1Y3R1cmUgZm9yIHRoZSBtb2JpbGUgc2VydmljZXMsIG5ldHdvcmsgZW11bGF0b3JzIAogICAgICBpbXBsZW1lbnRlZCBhcyBFY2xpcHNlIHBsdWctaW5zIGFuZCBhbGxvd2luZyBmdWxsIHRlc3Rpbmcgb2YgdGhlIGFwcGxpY2F0aW9ucyAKICAgICAgd2l0aG91dCBhY2Nlc3MgdG8gb3BlcmF0b3IgaW5mcmFzdHJ1Y3R1cmUgYW5kIGEgZnVsbCBzYW1wbGUgYXBwbGljYXRpb24gCiAgICAgIG9mIGEgbW9iaWxlIHNlcnZpY2VzIGVuaGFuY2VkIHdlYiBzaXRlIGRlbGl2ZXJlZCBhcyBhbiBFY2xpcHNlIHByb2plY3QuIAogICAgICBUaGUgc29mdHdhcmUgaXMgZnJlZSBidXQgZG93bmxvYWRpbmcgaXQgcmVxdWlyZXMgcmVnaXN0ZXJpbmcgd2l0aCBGb3J1bSAKICAgICAgTm9raWEuIFNlZSA8YSBocmVmPSJodHRwOi8vd3d3LmZvcnVtLm5va2lhLmNvbS9tYWluLzAsLDAzNC03NDEsMDAuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuZm9ydW0ubm9raWEuY29tL21haW4vMCwsMDM0LTc0MSwwMC5odG1sPC9hPiAKICAgICAgZm9yIG1vcmUgaW5mb3JtYXRpb24uPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+IAogICAgPHRkIHdpZHRoPSIxMDAlIj4gPGI+Tm8gTWFnaWMsIEluYyAtIE1hZ2ljRHJhdyBVTUw8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5tYWdpY2RyYXcuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5tYWdpY2RyYXcuY29tPC9hPiAKICAgICAgPGJyIC8+CgkJTWFnaWNEcmF3IGlzIGF3YXJkLXdpbm5pbmcgVU1MIDIuMCBiYXNlZCBhcmNoaXRlY3R1cmUgdG9vbCB3aXRoIHRlYW13b3JrIAoJCXN1cHBvcnQuIERlc2lnbmVkIGZvciBCdXNpbmVzcyBBbmFseXN0cywgU29mdHdhcmUgQW5hbHlzdHMsIFByb2dyYW1tZXJzLCAKCQlRQSBFbmdpbmVlcnMsIGFuZCBEb2N1bWVudGF0aW9uIFdyaXRlcnMsIHRoaXMgZHluYW1pYyBhbmQgdmVyc2F0aWxlIAoJCWRldmVsb3BtZW50IHRvb2wgZmFjaWxpdGF0ZXMgYW5hbHlzaXMgYW5kIGRlc2lnbiBvZiBPYmplY3QgT3JpZW50ZWQgKE9PKSAKCQlzeXN0ZW1zIGFuZCBkYXRhYmFzZXMuIEl0IHByb3ZpZGVzIHRoZSBpbmR1c3RyeSZyc3F1bztzIGJlc3QgY29kZSBlbmdpbmVlcmluZyAKCQltZWNoYW5pc20gKHdpdGggZnVsbCByb3VuZC10cmlwIHN1cHBvcnQgZm9yIEoyRUUsIEMjLCBDKyssIENPUkJBIElETCAKCQlwcm9ncmFtbWluZyBsYW5ndWFnZXMsIC5ORVQsIFhNTCBTY2hlbWEsIFdTREwpLCBhcyB3ZWxsIGFzIGRhdGFiYXNlIAoJCXNjaGVtYSBtb2RlbGluZywgRERMIGdlbmVyYXRpb24gYW5kIHJldmVyc2UgZW5naW5lZXJpbmcgZmFjaWxpdGllcy4KCTxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+T2JqZWN0IEVkZ2UgLSBXZWJsb2dpYyBQbHVnaW4gPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cub2JqZWN0ZWRnZS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5vYmplY3RlZGdlLmNvbS88L2E+IAogICAgICA8YnIgLz4KICAgICAgT2JqZWN0IEVkZ2UmcnNxdW87cyBXZWJsb2dpYyBwbHVnLWluIGlzIGFuIGV4dGVuc2lvbiBvZiB0aGUgZWNsaXBzZS9XU0FEIGVudmlyb25tZW50IAogICAgICB0byBkZXZlbG9wIFdlYmxvZ2ljIGFwcGxpY2F0aW9ucy4gVGhlIHBsdWctaW4gc3VwcG9ydHMgV2VibG9naWMgc2VydmVyIHZlcnNpb25zIAogICAgICBzdGFydGluZyA1LnggdGhyb3VnaCA3LjAuIFVzaW5nIHRoZSBwbHVnLWluIGEgZGV2ZWxvcGVyIGNhbiBkZXZlbG9wIGFwcGxpY2F0aW9ucywgCiAgICAgIHJ1biBhbmQgdGVzdCB1bmRlciB0aGUgRWNsaXBzZSBJREUmcnNxdW87cyBzdGFuZGFyZCBkZXZlbG9wbWVudCBmZWF0dXJlcy4gWW91IAogICAgICBjYW4gZG93bmxvYWQgdGhlIHBsdWctaW4gZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3Lm9iamVjdGVkZ2UuY29tL3NvZnR3YXJlRG93bmxvYWRMb2dpbi5hc3AiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm9iamVjdGVkZ2UuY29tL3NvZnR3YXJlRG93bmxvYWRMb2dpbi5hc3A8L2E+LiAKICAgICAgWW91IGhhdmUgdG8gcmVnaXN0ZXIsIGlmIHlvdSBkbyBub3QgaGF2ZSBhIHVzZXJpZC9wYXNzd29yZCBhbHJlYWR5LiBUaGUgCiAgICAgIGRvd25sb2FkIHNlY3Rpb24gaGFzIGRvY3MgYXMgd2VsbCB0aGUgd2VibG9naWMgcGx1Zy1pbiBmb3IgRWNsaXBzZSBhbmQgV1NBRC4gCiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5PYmplY3QgRm9yZ2UgLSBNYXNjb3QgMjAwMjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm9iamVjdC1mb3JnZS5jb20vU2l0ZV9CYWNrZ3JvdW5kLnNodG1sI2VjbGlwc2UiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm9iamVjdC1mb3JnZS5jb20vU2l0ZV9CYWNrZ3JvdW5kLnNodG1sI2VjbGlwc2U8L2E+IAogICAgICA8YnIgLz4KICAgICAgTUFTQ09UIDIwMDIgaXMgYSBmcmFtZXdvcmsgYW5kIG1ldGhvZG9sb2d5IHRoYXQgYWRkcyBhIG5ldyBkaW1lbnNpb24gdG8gCiAgICAgIGFwcGxpY2F0aW9uIGRlc2lnbiwgaW50ZWdyYXRpb24sIGFuZCBkZXBsb3ltZW50IGFuZCBjb21wbGVtZW50cyBjdXJyZW50IAogICAgICB0ZWNobmlxdWVzLiBGb3IgRWNsaXBzZSB1c2VycyBNQVNDT1QgMjAwMiBpbmNsdWRlcyBhbiBlZGl0b3IgcGx1Z2luIHRoYXQgCiAgICAgIGFsbG93cyB0aGUgbWFuYWdlbWVudCBvZiBib3RoIHNvdXJjZSBjb2RlIGFuZCBNQVNDT1Qgc3BlY2lmaWMgZmlsZXMgd2l0aGluIAogICAgICB0aGUgRWNsaXBzZSBJREUuIEFzIGFuIGV4dGVuc2lvbiBhbmQgZW5oYW5jZW1lbnQgb2YgdGhlIEJyaXRpc2ggTWluaXN0cnkgCiAgICAgIG9mIERlZmVuY2UmcnNxdW87cyBNQVNDT1QgMiBzdGFuZGFyZCwgTUFTQ09UIDIwMDIgYWRkcmVzc2VzIGhvdyBhIHN5c3RlbSBydW5zLCAKICAgICAgbm90IGhvdyBpdCBpcyBidWlsdC4gSXQgcHJvdmlkZXMgYSB3YXkgZm9yIGRlc2lnbmVycyBhbmQgZGV2ZWxvcGVycyB0byBjb25zaWRlciAKICAgICAgYW5kIHNwZWNpZnkgYW4gYXBwbGljYXRpb24mcnNxdW87cyBydW50aW1lIGJlaGF2aW9yIGVhcmx5IGluIHRoZSBkZXNpZ24gY3ljbGUgCiAgICAgIHJhdGhlciB0aGFuIGxhdGVyIGR1cmluZyBpbnRlZ3JhdGlvbiBhbmQgdGVzdGluZy4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gICAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj4gPGI+T2JqZWN0TGVhcm4gLSBMb21ib3o8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5vYmplY3RsZWFybi5jb20vcHJvZHVjdHMvbG9tYm96Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm9iamVjdGxlYXJuLmNvbS9wcm9kdWN0cy9sb21ib3ouaHRtbDwvYT4gCiAgICAgIDxiciAvPgoJTG9tYm96IHBsdWctaW4gaXMgYSBncm91cCBvZiBleHRlbnNpb25zIGZvciB0aGUgRWNsaXBzZSBKRFQgYW5kIGluY2x1ZGVzIAoJZmVhdHVyZXMgc3VjaCBhcyBsYXVuY2hlcnMgZm9yIHBvcHVsYXIgYXBwbGljYXRpb24gc2VydmVycywgIHNjcmlwdGVkIAoJZGVwbG95bWVudCBmb3Igd2ViIGFuZCBFSkIgbW9kdWxlcywgSlNQIHN5bnRheCBjaGVja2luZywgSlNQIGVkaXRvcnMgYW5kIGNvZGUgCglhc3Npc3QsIFhEb2NsZXQgaW50ZWdyYXRpb24gZm9yIEVKQiBkZXZlbG9wbWVudCBhbmQgdmlld3MgYW5kIHdpemFyZHMgZm9yIAoJbWFuYWdpbmcgYSBKMkVFIHByb2plY3QuIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5PYmplY3Rpdml0eSBJbmMuIC0gQXNzaXN0PC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cub2JqZWN0aXZpdHkuY29tL1Byb2R1Y3RzL1Byb2R1Y3RzQXNzaXN0LnNodG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5vYmplY3Rpdml0eS5jb20vUHJvZHVjdHMvUHJvZHVjdHNBc3Npc3Quc2h0bWw8L2E+IAogICAgICA8YnIgLz4KICAgICAgQXNzaXN0IGlzIGFuIE9iamVjdGl2aXR5IGRhdGFiYXNlIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IGFuZCBkYXRhYmFzZSBhZG1pbmlzdHJhdGlvbiAKICAgICAgYW5kIGJyb3dzaW5nIHRvb2wuIEl0IGhhcyBwbHVnLWlucyBmb3IgQysrIGFuZCBKYXZhIGRldmVsb3BlcnMgYW5kIGZvciBkYXRhYmFzZSAKICAgICAgYWRtaW5pc3RyYXRvcnMuIE9iamVjdGl2aXR5IGVuY291cmFnZXMgY3VzdG9tZXJzIGFuZCBwYXJ0bmVycyB0byBkZXZlbG9wIAogICAgICBhbmQgc2hhcmUgb3Igc2VsbCB0aGVpciBvd24gcGx1Zy1pbnMgZm9yIEFzc2lzdC4gT2JqZWN0aXZpdHkvREIgaXMgYSByb2J1c3QgCiAgICAgIGFuZCBoaWdobHkgc2NhbGFibGUgb2JqZWN0IGRhdGFiYXNlLiBPYmplY3Rpdml0eS9EQiBoYXMgQysrLCBKYXZhIGFuZCBTbWFsbHRhbGsgCiAgICAgIGFwcGxpY2F0aW9uIHByb2dyYW1taW5nIGludGVyZmFjZXMuIEl0IGFsc28gc3VwcG9ydHMgU1FMIGFuZCBYTUwuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+ICAgCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IAogICAgICA8Yj5PQyBTeXN0ZW1zIC0gSGl0Y2hoaWtlciBmb3IgRWNsaXBzZTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm9jc3lzdGVtcy5jb20vZWNsaXBzZS8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm9jc3lzdGVtcy5jb20vZWNsaXBzZS88L2E+IAogICAgICAgIDxiciAvPgogICAgICAgIFRyYWNlLCBwcm9maWxlIG9yIGZpbmQgbWVtb3J5IGxlYWtzIGluIGFueSBDL0MrKyBhcHBsaWNhdGlvbi4gSGl0Y2hoaWtlciAKICAgICAgICBpcyBhIGZyZWUgcGx1Zy1pbiBmb3IgRWNsaXBzZSB0aGF0IGxldHMgeW91IGluc3RydW1lbnQgYW55IEMvQysrIGFwcGxpY2F0aW9uIAogICAgICAgIG9uIHRoZSBmbHksIHRyYWNlIGFuZCBwcm9maWxlIHRoZSBhcHBsaWNhdGlvbiBhdCBuZWFyIGZ1bGwgZXhlY3V0aW9uIHNwZWVkLCAKICAgICAgICBhbmQgdmlzdWFsaXplIGFwcGxpY2F0aW9uIGludGVybmFscyB1c2luZyB0aGUgRWNsaXBzZSBXb3JrYmVuY2guIEhpdGNoaGlrZXIgCiAgICAgICAgY2FuIGJlIHVzZWQgdGhyb3VnaG91dCB0aGUgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgbGlmZWN5Y2xlLCBmcm9tIGRldmVsb3BtZW50IAogICAgICAgIGludG8gYWxwaGEsIGJldGEsIHByb2R1Y3Rpb24gdGVzdCwgYW5kIHByb2R1Y3Rpb24uCiAgICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiAKICAgICAgPGI+T21vbmRvIC0gRWNsaXBzZVVNTDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3Lm9tb25kby5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3Lm9tb25kby5jb208L2E+IAogICAgICAgIDxiciAvPgogICAgICAgIDxiciAvPgogICAgICAgIDxiPkVjbGlwc2VVTUwyIFN0dWRpbzwvYj4gb2ZmZXJzIGZ1bGwgc3VwcG9ydCBmb3IgVU1MIGRpYWdyYW1zLCB0ZWFtIHdvcmssIAogICAgICAgIGRhdGFiYXNlIGFuZCBKMmVlIG1vZGVsaW5nLiBEeW5hbWljIGNvbGxhYm9yYXRpb24gdG8gYW55IG90aGVyIHBsdWdpbnMgCiAgICAgICAgYW5kIGFuIEVjbGlwc2UgMy4wLjEgbmF0aXZlIGludGVncmF0aW9uLiA8YnIgLz4KICAgICAgICA8YnIgLz4KICAgICAgICA8Yj5FY2xpcHNlVU1MIEZyZWU8L2I+IGlzIGFuIGFkdmFuY2VkIFVNTCBwbHVnLWluIHVzaW5nIEdFRiBhbmQgRU1GIHRlY2hub2xvZ2llcy4gCiAgICAgICAgQWxsIG1ham9yIGRpYWdyYW1zIGFyZSBhdmFpbGFibGUgd2l0aCBzaW11bHRhbmVvdXMgcm91bmQtdHJpcCBhbmQgcmV2ZXJzZSAKICAgICAgICBlbmdpbmVlcmluZy4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPk9udG9nZW5pY3MgLSA8L2I+PGk+PGI+aHlwZXI8L2I+PC9pPjxiPk1vZGVsPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cueG1sbW9kZWxpbmcuY29tL2h5cGVyTW9kZWwvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cueG1sbW9kZWxpbmcuY29tL2h5cGVyTW9kZWwvaW5kZXguaHRtbDwvYT48aT48YnIgLz4KICAgICAgaHlwZXI8L2k+TW9kZWwgZW5hYmxlcyBiaS1kaXJlY3Rpb25hbCB0cmFuc2Zvcm1hdGlvbiBiZXR3ZWVuIFVNTCBtb2RlbHMgCiAgICAgIGFuZCBYTUwgU2NoZW1hLiBUaGlzIEVjbGlwc2UgcGx1Zy1pbiB3YXMgZGVzaWduZWQgYnkgdGhlIGF1dGhvciBvZiB0aGUgYm9vayAKICAgICAgIk1vZGVsaW5nIFhNTCBBcHBsaWNhdGlvbnMgd2l0aCBVTUwiIChBZGRpc29uLVdlc2xleSkgYW5kIGltcGxlbWVudHMgdGhlIAogICAgICBtb3N0IGNvbXBsZXRlIGFuZCBmbGV4aWJsZSBtYXBwaW5nIGJldHdlZW4gb2JqZWN0LW9yaWVudGVkIG1vZGVscyBhbmQgWE1MIAogICAgICBTY2hlbWFzLiBoeXBlck1vZGVsIHdvcmtzIHdpdGggYW55IG90aGVyIFVNTCB0b29sIHRoYXQgc3VwcG9ydHMgdGhlIFhNSSAKICAgICAgMS4wIGZvcm1hdCBmb3IgbW9kZWwgaW50ZXJjaGFuZ2UgKGFuZCBzb29uIHdpbGwgc3VwcG9ydCBYTUkgMS4yIGFuZCAyLjApLiAKICAgICAgRHluYW1pYyBpbnRlcmFjdGl2ZSBVTUwgY2xhc3MgZGlhZ3JhbXMgYXJlIHByZXNlbnRlZCBpbiBhbiBTVkcgdmlldy4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPm9wdGFkYXRALmNvbTwvYj4gLSA8Yj5ldmEvMyBBcHBsaWNhdGlvbiBCdWlsZGVyPC9iPiAtIAogICAgICA8YSBocmVmPSJodHRwOi8vd3d3Lm9wdGFkYXRhLmNvbS9lbmcvcHJvZHVjdHMuaHRtIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5vcHRhZGF0YS5jb20vZW5nL3Byb2R1Y3RzLmh0bTwvYT4gCiAgICAgIDxiciAvPgogICAgICBldmEvMyBBcHBsaWNhdGlvbiBCdWlsZGVyIGlzIGltcGxlbWVudGVkIG9uIHRvcCBvZiBYTUwgYW5kIGlzIGludGVncmF0ZWQgCiAgICAgIGludG8gdGhlIGVjbGlwc2UgZGV2ZWxvcG1lbnQgZW5pdnJvbm1lbnQgYXMgYSBwbHVnLWluLiBldmEvMyBhc3N1bWVzIHJlc3BvbnNpYmlsaXR5IAogICAgICBmb3IgdGhlIGRlc2lnbiBvZiBTd2luZyBjb21wb25lbnRzIG92ZXIgYW4gaW50ZWdyYXRlZCBHVUkgQnVpbGRlciwgdGhlIGV4ZWN1dGlvbiAKICAgICAgb2YgcHJvY2VkdXJlcyBhbmQgdGhlIGhhbmRsaW5nIG9mIGRpdmVyc2UgcmVsYXRpb25hbCBTUUwgZGF0YWJhc2VzIG92ZXIgCiAgICAgIEpEQkMgaW50ZXJmYWNlcywgZS5nLiBTeWJhc2UgU1FMIEFueXdoZXJlLCBNaWNyb3NvZnQgU1FMU2VydmVyIDIwMDAsIE15U1FMLCAKICAgICAgSUJNIERCMiwgT3JhY2xlLCBQYXJrd2F5IE1pY3JvZm9jdXMsIEhTUUxEQiwgUG9zdGdyZVNRTCwgSkRhdGFTdG9yZS4gSGlnaCAKICAgICAgcGVyZm9ybWFuY2UgZGF0YWJhc2UgZXhwb3J0IGFuZCBpbXBvcnQgZnVuY3Rpb25zIGFyZSBhbHNvIGF2YWlsYWJsZS4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPk9yaW5kYSBTb2Z0d2FyZTwvYj4gLSA8Yj5PcmluZGFCdWlsZCA1LjA8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5vcmluZGFzb2Z0LmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cub3JpbmRhc29mdC5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgT3JpbmRhQnVpbGQgYXV0b21hdGljYWxseSBnZW5lcmF0ZXMgSmF2YSBzb3VyY2UgY29kZSB0byBydW4gUEwvU1FMIHByb2NlZHVyZXMgCiAgICAgIGFuZCBTUUwgc3RhdGVtZW50cyBpbiBPcmFjbGUgZGF0YWJhc2VzLiBWZXJzaW9uIDUuMCBvZiBPcmluZGFCdWlsZCBhbHNvIAogICAgICBjcmVhdGVzIGEgbWF0Y2hpbmcgREFPIEZhY3RvcnkgY2xhc3MgYW5kIEFwYWNoZSBBeGlzIGNvbXBhdGlibGUgV2ViIFNlcnZpY2UgCiAgICAgIDxodHRwOi8vd3d3Lm9yaW5kYXNvZnQuY29tL3B1YmxpYy9QYWdlcy5waHA0P2xvY2F0aW9uPVdlYiUyMFNlcnZpY2VzdHdvPiBjbGFzc2VzIAogICAgICBmb3IgeW91ciBjaG9zZW4gU1FMIHN0YXRlbWVudHMgYW5kIFBML1NRTCBwcm9jZWR1cmVzLiBPcmluZGFCdWlsZCBpcyBmdWxseSAKICAgICAgaW50ZWdyYXRlZCB3aXRoIEVjbGlwc2UgMy4wLiBPcmluZGFCdWlsZCBjb25maWd1cmF0aW9uIGZpbGVzIGFyZSByZWNvZ25pemVkIAogICAgICBhcyBhIGZpbGUgdHlwZSBieSBFY2xpcHNlLiBBcyBPcmluZGFCdWlsZCBnZW5lcmF0ZXMgSmF2YSBzb3VyY2UgZmlsZXMgdGhleSAKICAgICAgYXJlIGF1dG9tYXRpY2FsbHkgYWRkZWQgdG8gdGhlIGN1cnJlbnQgRWNsaXBzZSBwcm9qZWN0LiBTZWU6IDxhIGhyZWY9Imh0dHA6Ly93d3cub3JpbmRhc29mdC5jb20vcHVibGljL2VjZmVhdHVyZXMucGhwNCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cub3JpbmRhc29mdC5jb20vcHVibGljL2VjZmVhdHVyZXMucGhwNDwvYT4gCiAgICA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj4gPGI+UGFyYXNvZnQgLSA8YnIgLz4KICAgICAgSnRlc3QgPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cucGFyYXNvZnQuY29tL2pzcC9wcm9kdWN0cy9ob21lLmpzcD9wcm9kdWN0PUp0ZXN0IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5wYXJhc29mdC5jb20vanNwL3Byb2R1Y3RzL2hvbWUuanNwP3Byb2R1Y3Q9SnRlc3Q8L2E+IAogICAgICA8YnIgLz4KICAgICAgSnRlc3QgYWRkcyBlcnJvciBwcmV2ZW50aW9uIHRlY2hub2xvZ3kgZm9yIEphdmEgdG8gYm90aCB0aGUgV2ViU3BoZXJlIGFuZCAKICAgICAgb3BlbiBzb3VyY2UgRWNsaXBzZSBwbGF0Zm9ybXMsIGFsbG93aW5nIGRldmVsb3BlcnMgd29ya2luZyB3aXRoaW4gV2ViU3BoZXJlIAogICAgICBvciBFY2xpcHNlIHRvIHBlcmZvcm0gYmxhY2stYm94IChmdW5jdGlvbmFsaXR5KSB0ZXN0aW5nLCB3aGl0ZS1ib3ggKGNvbnN0cnVjdGlvbikgCiAgICAgIHRlc3RpbmcsIHJlZ3Jlc3Npb24gdGVzdGluZyBhbmQgc3RhdGljIGFuYWx5c2lzIG9uIHRoZWlyIEphdmEgY29kZSwgaW5jbHVkaW5nIAogICAgICBFbnRlcnByaXNlIEphdmFCZWFucyAoRUpCcyksIERiQywgc2VydmxldHMgYW5kIHByb2plY3QgbWV0cmljcy4gQnkgaW50ZWdyYXRpbmcgCiAgICAgIEp0ZXN0IGludG8gdGhlIGRldmVsb3BtZW50IHByb2Nlc3MsIHVzZXJzIGNhbiBwcmV2ZW50IHNvZnR3YXJlIGVycm9ycywgaW5jcmVhc2UgCiAgICAgIGNvZGUgc3RhYmlsaXR5LCBhbmQgcmVkdWNlIHRlc3RpbmcgdGltZS4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5XZWJLaW5nPC9iPiAtLSA8YSBocmVmPSJodHRwOi8vd3d3LnBhcmFzb2Z0LmNvbS9qc3AvcHJvZHVjdHMvaG9tZS5qc3A/cHJvZHVjdD1XZWJLaW5nIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5wYXJhc29mdC5jb20vanNwL3Byb2R1Y3RzL2hvbWUuanNwP3Byb2R1Y3Q9V2ViS2luZzwvYT4gCiAgICAgIDxiciAvPgogICAgICBXZWJLaW5nIGlzIGEgY29tcHJlaGVuc2l2ZSBXZWIgdmVyaWZpY2F0aW9uIHBsdWctaW4gZm9yIFdlYlNwaGVyZSBhbmQgRWNsaXBzZSAKICAgICAgUGxhdGZvcm1zIHRoYXQgYXV0b21hdGVzIHRoZSBtb3N0IGNyaXRpY2FsIFdlYiB2ZXJpZmljYXRpb24gcHJhY3RpY2VzOiBzdGF0aWMgCiAgICAgIGFuYWx5c2lzLCBmdW5jdGlvbmFsIHRlc3RpbmcsIGFuZCBsb2FkIHRlc3RpbmcuIFdlYktpbmcmcnNxdW87cyBpbnRlZ3JhdGVkIHdpemFyZHMgCiAgICAgIGFuZCBhdXRvbWF0ZWQgdGVjaG5vbG9naWVzIGhlbHAgeW91IHZlcmlmeSBhcHBsaWNhdGlvbiBmdW5jdGlvbmFsaXR5IGFuZCAKICAgICAgcmVsaWFiaWxpdHkgd2l0aGluIFdlYlNwaGVyZSBhbmQgRWNsaXBzZSBQbGF0Zm9ybXMgd2l0aG91dCB3cml0aW5nIGEgc2luZ2xlIAogICAgICBzY3JpcHQsIHBsdXMgaXRzIGZsZXhpYmlsaXR5IGFsbG93cyB5b3UgdG8gYXV0b21hdGljYWxseSB2ZXJpZnkgZXZlbiB0aGUgCiAgICAgIG1vc3Qgc3BlY2lhbGl6ZWQgcmVxdWlyZW1lbnRzLiBZb3UgY2FuIHN0YXJ0IGludGVncmF0ZWQgdGVzdGluZyBpbnN0YW50bHkgCiAgICAgIGFuZCBlYXNpbHksIHRoZW4gZWFzaWx5IGV4dGVuZCBhbmQgY3VzdG9taXplIHRlc3RzIGlmIG5lZWRlZC4gCgk8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5QcmF0b2NpdHkgLSA8L2I+PGEgaHJlZj0iaHR0cDovL3d3dy5wcmF0b2NpdHkuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cucHJhdG9jaXR5LmNvbTwvYT48Yj48YnIgLz4KICAgICAgU3Vuc2hpbmUgUmVwb3J0czwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnByYXRvY2l0eS5jb20vaW5kZXguanNwP21vZD0vc3Vuc2hpbmUvc3Vuc2hpbmUuanNwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5wcmF0b2NpdHkuY29tL2luZGV4LmpzcD9tb2Q9L3N1bnNoaW5lL3N1bnNoaW5lLmpzcDwvYT4gCiAgICAgIDxiciAvPgogICAgICBTdW5zaGluZSBSZXBvcnRzIHByb3ZpZGVzIGEgdmlzdWFsIHJlcG9ydCBkZXNpZ25lciBiYXNlZCBvbiBFY2xpcHNlIGFuZCAKICAgICAgSmFzcGVyUmVwb3J0cy4gSXQgYWxsb3dzIHlvdSB0byBjcmVhdGUsIGVkaXQsIGNvbXBpbGUsIHByZXZpZXcgYW5kIHJ1biB5b3VyIAogICAgICByZXBvcnRzIGluIGEgZmV3IG1pbnV0ZXMuIENyZWF0aW5nIGEgcmVwb3J0IGlzIGFzIGVhc3kgYXMgZHJhZ2dpbmcgYW5kIGRyb3BwaW5nIAogICAgICByZXBvcnQgZWxlbWVudHMgaW4gdGhlIHZpc3VhbCBkZXNpZ25lci48YnIgLz4KICAgICAgPGI+SmZhY2VEYmM8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5wcmF0b2NpdHkuY29tL2luZGV4LmpzcD9tb2Q9L2pmYWNlL2pmYWNlZGJjLmpzcCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cucHJhdG9jaXR5LmNvbS9pbmRleC5qc3A/bW9kPS9qZmFjZS9qZmFjZWRiYy5qc3A8L2E+IAogICAgICA8YnIgLz4KICAgICAgSkZhY2VEYmMgaXMgYSBjcm9zcyBwbGF0Zm9ybSBkYXRhYmFzZSB0b29sLCB3cml0dGVuIGFzIGFuIEVjbGlwc2UgcGx1Z2luLiAKICAgICAgSkZhY2VEYmMgZW5hYmxlcyBtdWx0aXBsZSBzaW11bHRhbmVvdXMgY29ubmVjdGlvbnMgdG8gbWFueSBkaWZmZXJlbnQgZGF0YWJhc2VzLiAKICAgICAgSXQgaGFzIGEgcmljaCBkYXRhYmFzZSBzdHJ1Y3R1cmUgdmlld2VyLCBhbmQgYSByaWNoIFNRTCBlZGl0b3Igd2l0aCBzeW50YXggCiAgICAgIGhpZ2hsaWdodGluZyBhbmQgdGFibGUgbmFtZXMgYXV0by1jb21wbGV0aW5nLgoJPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+UHJvamVjdENhcmRzIC0gUHJvamVjdENhcmRzIEVjbGlwc2UgUGx1Zy1pbjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnByb2plY3RjYXJkcy5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnByb2plY3RjYXJkcy5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgVGhlIHVzZSBvZiBpbmRleCBjYXJkcyB0byBjYXB0dXJlIGFuZCB0cmFjayB1c2VyIHN0b3JpZXMgd2FzIGluaXRpYXRlZCBieSAKICAgICAgdGhlIGVhcmx5IGFkb3B0ZXJzIG9mIEV4dHJlbWUgUHJvZ3JhbW1pbmcuIFRoaXMgYXBwcm9hY2ggdG8gdHJhY2tpbmcgcmVxdWlyZW1lbnRzIAogICAgICBnZW5lcmF0ZXMgY2xhcml0eSBhbmQgZm9jdXMgZm9yIHRoZSBkZXZlbG9wbWVudCB0ZWFtLCBhbmQgaXMgYSBrZXkgY29tcG9uZW50IAogICAgICBvZiBBZ2lsZSBQcm9qZWN0IE1hbmFnZW1lbnQuIFByb2plY3RDYXJkcyBtYWludGFpbnMgdGhlIG1hZ2ljIG9mIGluZGV4IGNhcmRzIAogICAgICBidXQgb3ZlcmNvbWVzIHRoZSBsaW1pdGF0aW9ucyBvZiByZWx5aW5nIG9uIHBoeXNpY2FsIHN0YWNrcyBvZiBjYXJkcy4gSXQgCiAgICAgIGFkZHMgZmVhdHVyZXMgc3VjaCBhcyByZXBvcnRzLCBhIHByb2plY3QgZGFzaC1ib2FyZCwgc2VhcmNoIGFuZCBmaWx0ZXJpbmcgCiAgICAgIGNhcGFiaWxpdGllcyBhbmQgZHJhZy1hbmQtZHJvcCBpdGVyYXRpb24gcGxhbm5pbmcuIEl0IHJ1bnMgZWl0aGVyIGFzIGFuIAogICAgICBFY2xpcHNlIDMuMSBwbHVnLWluIG9yIGFzIGEgc3RhbmQtYWxvbmUgY2xpZW50LiBTaXh0eS1kYXkgZnJlZSB0cmlhbC4gCiAgICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5Qcm9TeXN0PC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cucHJvc3lzdC5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnByb3N5c3QuY29tPC9hPiAKICAgICAgPGh0dHA6Ly93d3cucHJvc3lzdC5jb20vPiA8YnIgLz4KICAgICAgPGI+PGJyIC8+CiAgICAgIEVjbGlwc2UgUGx1Zy1pbnM8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5wcm9zeXN0LmNvbS9zb2x1dGlvbnMvZWNsaXBzZV9wbHVnaW5zLmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnByb3N5c3QuY29tL3NvbHV0aW9ucy9lY2xpcHNlX3BsdWdpbnMuaHRtbDwvYT48YnIgLz4KICAgICAgPGJyIC8+CiAgICAgIDxiPkVjbGlwc2UgT1NHaSBQbHVnLWluPC9iPiAtIFRoZSBPU0dpIFBsdWdpbiBwcm92aWRlcyB0aGUgY29tcGxldGUgcmFuZ2UgCiAgICAgIG9mIGZlYXR1cmVzIGZvciB0aGUgZGV2ZWxvcG1lbnQgYW5kIGRlcGxveW1lbnQgb2YgT1NHaS1idW5kbGVzIGFuZCBhbGxvd3MgCiAgICAgIHRoZSBhZG1pbmlzdHJhdGlvbiBvZiBPU0dpIGZyYW1ld29ya3MgZnJvbSB0aGUgRWNsaXBzZSBkZXZlbG9wbWVudCBlbnZpcm9ubWVudC4gCiAgICAgIDxiciAvPgogICAgICA8Yj5FY2xpcHNlIEpQcm9maWxlciBQbHVnLWluPC9iPiAtIFRoZSBKUHJvZmlsZXIgUGx1Z2luIGhlbHBzIHRvIGV4cGxvcmUgCiAgICAgIHRoZSBwZXJmb3JtYW5jZSBvZiBhIEphdmEgcHJvZ3JhbSBvbiBhIGxvdyBsZXZlbCBhbmQgdG8gb3B0aW1pemUgdGhlIHJlc291cmNlIAogICAgICBjb25zdW1wdGlvbiBvZiBkZXZlbG9wZWQgYXBwbGljYXRpb25zLiA8YnIgLz4KICAgICAgPGI+RWNsaXBzZSBHVUkgQnVpbGRlcjwvYj4gLSBUaGUgR1VJIEJ1aWxkZXIgZW5hYmxlcyB0aGUgZGV2ZWxvcG1lbnQgaW4gCiAgICAgIGEgZHJhZyAmIGRyb3Agc3R5bGUgYnkgYWRkaW5nIGNhcGFiaWxpdGllcyBzdWNoIGFzIG9yZGVyaW5nIG9mIHRoZSBncmFwaGljYWwgCiAgICAgIGNvbXBvbmVudHMsIGJ1aWxkaW5nIHRoZSBhcHBsaWNhdGlvbnMgc3RydWN0dXJlLCBhbmQgZGVmaW5pbmcgdGhlIGJlaGF2aW9yIAogICAgICBvZiBlYWNoIGNvbXBvbmVudC4gRm9yIHRoZSBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCBHVUkgQnVpbGRlciBjYW4gdXNlIGNvbXBvbmVudHMgCiAgICAgIGZyb20gdmFyaW91cyBncmFwaGljIGxpYnJhcmllcywgc3VjaCBhcyBTd2luZywgUEdVSSwgYW5kIG1HVUkuIAoJPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj4gPGI+UHJvc2lsb2cgLSBNYWdpbGxlbTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnByb3NpbG9nLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cucHJvc2lsb2cuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIE1hZ2lsbGVtIGlzIHRoZSBQcm9zaWxvZ5JzIGVudmlyb25tZW50IGZvciBzcGVjaWZ5aW5nLCB2ZXJpZnlpbmcgYW5kIGltcGxlbWVudGluZyAKICAgICAgY29tcGxleCBTeXN0ZW1zIG9uIENoaXAuIEl0IGhhbmRsZXMgc3lzdGVtIGRlc2NyaXB0aW9ucyBib3RoIGF0IHRyYW5zYWN0aW9uYWwgCiAgICAgIGFuZCBSVEwgbGV2ZWxzIGFuZCB0aGVyZWZvcmUsIGZhY2lsaXRhdGVzIHRoZSBTb0MgZWFybHkgYXJjaGl0ZWN0dXJlIGV4cGxvcmF0aW9uIAogICAgICBwaGFzZS4gSXRzIGdyYXBoaWNhbCBmcm9udC1lbmQsIGFsbG93cyB0aGUgZWFzeSBpbnRlZ3JhdGlvbiBvZiBkaWZmZXJlbnQgCiAgICAgIElQIGJsb2NrcywgdGhlIGF1dG9tYXRpYyBpbnRlcmZhY2UgYW5kIGludGVyY29ubmVjdCBnZW5lcmF0aW9uIGJldHdlZW4gSVAmcnNxdW87cyAKICAgICAgYXMgd2VsbCBhcyB0aGUgaW5zZXJ0aW9uIG9mIHZlcmlmaWNhdGlvbiBtb2R1bGVzLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj4gPGI+cHVyZS1zeXN0ZW1zPC9iPiAtIDxiPnB1cmU6OnZhcmlhbnRzPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93ZWIucHVyZS1zeXN0ZW1zLmNvbS9WYXJpYW50X01hbmFnZW1lbnQuNDkuMC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3dlYi5wdXJlLXN5c3RlbXMuY29tL1ZhcmlhbnRfTWFuYWdlbWVudC40OS4wLmh0bWw8L2E+IAogICAgICA8YnIgLz4KICAgICAgVGhlIHB1cmU6OnZhcmlhbnRzIEVjbGlwc2UgcGx1Z2luIHN1cHBvcnRzIGRldmVsb3BtZW50IGFuZCB2YXJpYW50IG1hbmFnZW1lbnQgCiAgICAgIGZvciBzb2Z0d2FyZSBwcm9kdWN0IGxpbmVzIHdpdGggbWFueSBwcm9kdWN0IHZhcmlhbnRzLiBwdXJlOjp2YXJpYW50cyBpcyAKICAgICAgY29tcGxldGVseSBtb2RlbC1iYXNlZC4gSXQgdXNlcyBmZWF0dXJlIG1vZGVscyBmb3IgdmFyaWFiaWxpdHkgYW5kIGNvbW1vbmFsaXR5IAogICAgICBtb2RlbGluZyBhbmQgc3VwcG9ydHMgdGhlIGNyZWF0aW9uLCBtYW5hZ2VtZW50IGFuZCBldmFsdWF0aW9uIG9mIGFsbCBuZWNlc3NhcnkgCiAgICAgIG1vZGVscy4gSXQgaW5jbHVkZXMgYW4gZXh0ZW5zaWJsZSBtb2RlbCB0cmFuc2Zvcm1lciwgd2hpY2ggYWxsb3dzIGRldmVsb3BlcnMgCiAgICAgIHRvIGNyZWF0ZSBwcm9kdWN0IHZhcmlhbnRzIGRpcmVjdGx5IGZyb20gY3VzdG9taXphYmxlIGNvbXBvbmVudHMuPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPlFBIFN5c3RlbXMgLSBRU3R1ZGlvIDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnFhLXN5c3RlbXMuY29tL3Byb2R1Y3RzL3FzdHVkaW9mb3JqYXZhL2VjbGlwc2UvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cucWEtc3lzdGVtcy5jb20vcHJvZHVjdHMvcXN0dWRpb2ZvcmphdmEvZWNsaXBzZS9pbmRleC5odG1sPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFFTdHVkaW8gZm9yIEphdmEgZ2l2ZXMgRWNsaXBzZSB0aGUgYWJpbGl0eSB0byBkZXRlY3Qgc29mdHdhcmUgZGVmZWN0cyBwcmlvciAKICAgICAgdG8gY29tcGlsZSB0aW1lLCBzaWduaWZpY2FudGx5IHJlZHVjZSBjb2RlIHJldmlldyBlZmZvcnQgYnkgYXV0b21hdGluZyBhIAogICAgICBtYWpvciBwb3J0aW9uIG9mIHRoZSBjb2RlIGluc3BlY3Rpb24gcHJvY2VzcyBhbmQgb2JqZWN0aXZlbHkgYXNzZXNzIHRoZSAKICAgICAgcXVhbGl0eSBvZiB0aGUgZGV2ZWxvcGVkIHNvZnR3YXJlLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAgCiAgIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5RdWVzdCBTb2Z0d2FyZSAtIEpQcm9iZSA8L2I+IC0gPGEgaHJlZj0iaHR0cDovL2phdmEucXVlc3QuY29tL2pwcm9iZSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9qYXZhLnF1ZXN0LmNvbS9qcHJvYmU8L2E+IAogICAgICA8YnIgLz4KICAgICAgICBKUHJvYmUgU3VpdGUgcHJvdmlkZXMgZGV2ZWxvcGVycyB3aXRoIHRvb2xzIHRoYXQgd2lsbCBoZWxwIHRoZW0gZGV0ZWN0LCAKICAgICAgICBkaWFnbm9zZSBhbmQgcmVzb2x2ZSBwb29yIHBlcmZvcm1pbmcgY29kZSwgbWVtb3J5IGxlYWtzLCBvYmplY3QgY3ljbGluZywgCiAgICAgICAgdGhyZWFkaW5nIGlzc3VlcyBhbmQgb3ZlcmFsbCBjb2RlIHJlbGF0ZWQgcGVyZm9ybWFuY2UgaXNzdWVzLiBKUHJvYmUgc3VwcG9ydHMgCiAgICAgICAgbWFueSBkaWZmZXJlbnQgYXBwbGljYXRpb25zIHNlcnZlcnMgcnVubmluZyBvbiBMaW51eCwgQUlYLCBXaW5kb3dzLCBTb2xhcmlzLCAKICAgICAgICBIUC1VWCBhbmQgSUJNIE1haW5mcmFtZSBzeXN0ZW1zLiBGcmVlIGV2YWx1YXRpb25zIGFyZSBhdmFpbGFibGUgYXQgdGhlIAogICAgICAgIGxpbmsgYmVsb3cuIFlvdSZyc3F1bztsbCBmaW5kIGluc3RydWN0aW9ucyBmb3IgZWNsaXBzZSAyLjAgaW50ZWdyYXRpb24gYXQgPGEgaHJlZj0iaHR0cDovL2phdmEucXVlc3QuY29tL3N1cHBvcnQvanByb2JlL2lkZS9lY2xpcHNlMjAuc2h0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vamF2YS5xdWVzdC5jb20vc3VwcG9ydC9qcHJvYmUvaWRlL2VjbGlwc2UyMC5zaHRtbDwvYT4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5RTlggLSBRTlggTW9tZW50aWNzIDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnFueC5jb20vcHJvZHVjdHMvcHNfbW9tZW50aWNzLyIgdGFyZ2V0PSJfYmxhbmsiPiAKICAgICAgaHR0cDovL3d3dy5xbnguY29tL3Byb2R1Y3RzL3BzX21vbWVudGljcy88L2E+PGJyIC8+CiAgICAgICAgVGhlIFFOWCBNb21lbnRpY3MgZGV2ZWxvcG1lbnQgc3VpdGUgaXMgYW4gaW50ZWdyYXRlZCB0b29sc2V0IGZvciBlbWJlZGRlZCBkZXZlbG9wbWVudC4KICAgICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPiByZWFsTWV0aG9kcyAtIEZyYW1ld29yayBBcHBsaWNhdGlvbiBHZW5lcmF0b3I8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy5yZWFsbWV0aG9kcy5jb20iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnJlYWxtZXRob2RzLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICBBIGNvbXBsZXRlIE1EQSBjb21wbGlhbnQgSjJFRSBhcHBsaWNhdGlvbiBnZW5lcmF0aW9uIGVudmlyb25tZW50LiBBbGxvd3MgCiAgICAgIHlvdSB0byBpbXBvcnQgYW4gWE1JIGZpbGUgcmVwcmVzZW50YXRpb24gb2YgeW91ciBvYmplY3QgbW9kZWwsIGFuZCB0aGVuIAogICAgICBwcm92aWRlcyBhIGNvbXBsZXRlIHNldCBvZiBvcHRpb25zIHRvIGdlbmVyYXRlIGFueSB0eXBlIG9mIEoyRUUgYXBwbGljYXRpb24uIAogICAgICBBbGwgZ2VuZXJhdGVkIGNvZGUgb3JpZ2luYXRlcyBmcm9tIGEgc2V0IG9mIGN1c3RvbWl6YWJsZSBBcGFjaGUgVmVsb2NpdHkgCiAgICAgIHRlbXBsYXRlcy4gVGhlIHJlc3VsdGluZyBhcHBsaWNhdGlvbiBpcyBzdXBwb3J0ZWQgYnkgdGhlIHJlYWxNZXRob2RzIEZyYW1ld29yay4gCiAgICAgIEFjY2VzcyB0aGUgcGx1Z2luIGF0IDxhIGhyZWY9Imh0dHA6Ly93d3cucmVhbG1ldGhvZHMuY29tL2ZyYW1ld29yay5kb3dubG9hZC5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5yZWFsbWV0aG9kcy5jb20vZnJhbWV3b3JrLmRvd25sb2FkLmh0bWw8L2E+PHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPlJvb3QgUml2ZXIgU3lzdGVtcyAtIFJvb3QgUml2ZXIgRGVsdGEgPC9iPi0gPGEgaHJlZj0iaHR0cDovL3d3dy5ycnN5cy5jb20vcHJvZHVjdHMuaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cucnJzeXMuY29tL3Byb2R1Y3RzLmh0bWw8L2E+IAogICAgICA8YnIgLz4KCSBSb290IFJpdmVyIFN5c3RlbXMgTExDLCBvZmZlcnMgYSBKYXZhIGNsYXNzIGxpYnJhcnkgZm9yIHByb2R1Y2luZyBwcmludGFibGUgCiAgICAgIHJlcG9ydHMuIFJlcG9ydHMgY2FuIGJlIHZpZXdlZCB1c2luZyBhIEdVSSB2aWV3ZXIgb3Igb3V0cHV0IHRvIGEgdmFyaWV0eSAKICAgICAgb2YgZm9ybWF0cywgaW5jbHVkaW5nIFBERiwgUENMLCBhbmQgSFRNTC4gUmVjZW50bHkgc3VwcG9ydCB3YXMgYWRkZWQgZm9yIAogICAgICB0aGUgU1dUIHRvb2xraXQsIGJvdGggZm9yIHZpZXdpbmcgb2YgdGhlIHJlcG9ydHMgd2l0aCBhIEdVSSBhbmQgZm9yIHByb2R1Y2luZyAKICAgICAgcHJpbnRlZCBvdXRwdXQuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5SU1ggUGx1Z2luczwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnJzeHBsdWdpbnMuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5yc3hwbHVnaW5zLmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICBSU1ggUGx1Z2lucyBpcyBkZWRpY2F0ZWQgdG8gcGx1Z2lucyBmb3IgdGhlIElCTSBSYXRpb25hbCBTb2Z0d2FyZSBBcmNoaXRlY3QgCiAgICAgIC8gTW9kZWxsZXIgcHJvZHVjdCBsaW5lLiBSU1hQbHVnaW5zIHByb3ZpZGVzIGNvbW1lcmNpYWwgdHJhbnNmb3JtYXRpb25zLCAKICAgICAgbWFpbmx5IHJlbGF0ZWQgdG8gbGFuZ3VhZ2UgdHJhbnNmb3JtYXRpb25zIChVTUwgdG8gY29kZSkgYW5kIGFic3RyYWN0aW9ucyAKICAgICAgKGNvZGUgdG8gVU1MKS4gUlNYUGx1Z2lucyBhbHNvIHByb3ZpZGVzIGZyZWUgdmVyc2lvbnMgb2Ygc29tZSBvZiB0aGUgbW9yZSAKICAgICAgY29tbW9uIHJvc2UgYWRkaW5zIHN1Y2ggYXMgVk9QQyBhbmQgc3BlbGwgY2hlY2tlci4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5KYXZhIFRvIFVNTCBUcmFuc2Zvcm1hdGlvbjwvYj4gLSBhbGxvd3MgZGV2ZWxvcGVycyB0byBxdWlja2x5IGNyZWF0ZSAKICAgICAgYSBVTUwgTW9kZWwgaW4gUlNNIG9yIFJTQS4gSXQgYWxsb3dzIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxldmVsIG9mIGRldGFpbHMsIAogICAgICBpbmRpY2F0ZXMgbW9kZWwgaXRlbXMgbm8gbG9uZ2VyIHByZXNlbnQgaW4gdGhlIGNvZGUsIGFuZCBzdXBwb3J0cyBpdGVyYXRpdmUgCiAgICAgIGRldmVsb3BtZW50LiA8YnIgLz4KICAgICAgPGI+VU1MIFRvIEphdmEgVHJhbnNmb3JtYXRpb248L2I+IC0gaXMgYSB0cmFuc2Zvcm1hdGlvbiB0byB0YWtlIGEgbW9kZWwgCiAgICAgIGluIFJTTSBvciBSU0EgYW5kIGdlbmVyYXRlIEphdmEgY29kZS4gSXQgcHJvdmlkZXMgYSBKREsgbW9kZWwgZm9yIHVzZSBpbiAKICAgICAgZGVzaWduIG1vZGVscywgYW5kIHN1cHBvcnRzIGl0ZXJhdGl2ZSBkZXZlbG9wbWVudC4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIyMSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIyMSI+PGI+U2VhdmlldyBTb2Z0d2FyZTwvYj4gLSA8Yj5Td2VkZTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnNlYXZpZXdzb2Z0LmNvbS9zZWF2aWV3L2luZGV4LmpzcD9wcm9kdWN0PVN3ZWRlJk1rdElkPTQiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnNlYXZpZXdzb2Z0LmNvbS9zZWF2aWV3L2luZGV4LmpzcD9wcm9kdWN0PVN3ZWRlJk1rdElkPTQ8L2E+IAogICAgICA8YnIgLz4KICAgICAgU3dlZGUgaXMgYW4gaW50ZXJhY3RpdmUgZWRpdG9yIHRoYXQgc2ltcGxpZmllcyBkZXZlbG9wbWVudCBvZiBTV1QgYW5kIEpGYWNlIAogICAgICBhcHBsaWNhdGlvbnMgYnkgYWxsb3dpbmcgeW91IHRvIGRlc2lnbiB5b3VyIHVzZXIgaW50ZXJmYWNlIHdpdGggdGhlIGVkaXRvciAKICAgICAgYW5kIGhhdmUgeW91ciBKYXZhIGFwcGxpY2F0aW9uIHVzZSB0aGUgZGVzaWduIGF0IHJ1bnRpbWUuIFN3ZWRlIHN0b3JlcyB5b3VyIAogICAgICB3aWRnZXQgbGF5b3V0IGluIGEgUmVzb3VyY2VGaWxlIGZyb20gd2hpY2ggeW91ciBhcHBsaWNhdGlvbiBsb2FkcyB0aGUgV2lkZ2V0IAogICAgICBvYmplY3RzIG5lZWRlZCBhdCBydW50aW1lLiBPdGhlciBmZWF0dXJlcyBpbmNsdWRlIGVhc3kgZGF0YSB0cmFuc2ZlciBiZXR3ZWVuIAogICAgICB0aGUgdXNlciBpbnRlcmZhY2UgYW5kIGFwcGxpY2F0aW9uIG9iamVjdHMsIHNpbXBsaWZpZWQgaW1wbGVtZW50YXRpb24gb2YgCiAgICAgIEpGYWNlIFRhYmxlcywgdXNlciBkZWZpbmVkIGNvbnRyb2xzIGFuZCBzaW1wbGlmaWVkIG1lbnUgYW5kIGV2ZW50IGhhbmRsaW5nLiAKICAgICAgU3dlZGUgd29ya3MgZWl0aGVyIGFzIGFuIEVjbGlwc2UgcGx1Zy1pbiBvciBhcyBhIHN0YW5kYWxvbmUgYXBwbGljYXRpb24uIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIiBoZWlnaHQ9IjIxIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIiBoZWlnaHQ9IjIxIj48Yj5TZXJlbmEgU29mdHdhcmUgSW5jLiAtIDwvYj4gPGEgaHJlZj0iaHR0cDovL3d3dy5zZXJlbmEuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5zZXJlbmEuY29tPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5DaGFuZ2VNYW4gRFM8L2I+IC0gQ2hhbmdlTWFuIERTIHNvZnR3YXJlIGNoYW5nZSBtYW5hZ2VtZW50IHN1aXRlIGluY2x1ZGVzIAogICAgICBhIHBsdWctaW4gZm9yIHRoZSBFY2xpcHNlIElERS4gRnVsbHkgaW50ZWdyYXRlZCB3aXRoIHRoZSBFY2xpcHNlIEZyYW1ld29yayAKICAgICAgYW5kIHN1cHBvcnRpbmcgbXVsdGlwbGUgc3RyZWFtIGFuZCBtZXJnZWQgZGV2ZWxvcG1lbnQgcGFyYWRpZ21zLjxiciAvPgogICAgICA8YnIgLz4KICAgICAgPGI+Q2hhbmdlTWFuIERpbWVuc2lvbnM8L2I+IC0gQ2hhbmdlTWFuIERpbWVuc2lvbnMgaXMgZnVsbHkgaW50ZWdyYXRlZCB3aXRoIAogICAgICBFY2xpcHNlIDMueCBhbmQgSUJNIFdlYnNwaGVyZSBTdHVkaW8gQXBwbGljYXRpb24gRGV2ZWxvcGVyIChXU0FEKSA0LjAuIEZvciAKICAgICAgdGhvc2UgZXZhbHVhdGluZyBEaW1lbnNpb25zLCB0aGUgaW50ZWdyYXRpb24gY2FuIGJlIGRvd25sb2FkZWQgYXQgPGEKaHJlZj0iaHR0cDovL3Nvcy5zZXJlbmEuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3Nvcy5zZXJlbmEuY29tPC9hPi4gPGJyIC8+CiAgICAgIDxiciAvPgogICAgICA8Yj5DaGFuZ2VNYW4gVmVyc2lvbiBNYW5hZ2VyPC9iPiAtIENoYW5nZU1hbiBWZXJzaW9uIE1hbmFnZXIgaXMgZnVsbHkgaW50ZWdyYXRlZCAKICAgICAgd2l0aCBFY2xpcHNlIDMueCBhbmQgSUJNIFdlYnNwaGVyZSBTdHVkaW8gQXBwbGljYXRpb24gRGV2ZWxvcGVyIChXU0FEKSA0LjAuIAogICAgICBGb3IgdGhvc2UgZXZhbHVhdGluZyBWZXJzaW9uIE1hbmFnZXIsIHRoZSBpbnRlZ3JhdGlvbiBjYW4gYmUgZG93bmxvYWRlZCAKICAgICAgZnJvbSB0aGUgc3VwcG9ydCBzaXRlIGF0IDxhIGhyZWY9Imh0dHA6Ly9zb3Muc2VyZW5hLmNvbSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly9zb3Muc2VyZW5hLmNvbTwvYT4uIAogICAgICBDaGFuZ2VNYW4gVmVyc2lvbiBNYW5hZ2VyIGlzIGZyb20gdGhlIG1ha2VycyBvZiBQVkNTLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMjEiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMjEiPjxiPlNsaWNrRWRpdCAtIFNsaWNrRWRpdCBQbHVnLUluIGZvciBFY2xpcHNlPC9iPiAKICAgICAgLSA8YSBocmVmPSJodHRwOi8vd3d3LnNsaWNrZWRpdC5jb20vY29udGVudC92aWV3Lzc0LzU5LyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuc2xpY2tlZGl0LmNvbS9jb250ZW50L3ZpZXcvNzQvNTkvPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFRoZSBTbGlja0VkaXQgUGx1Zy1pbiBmb3IgRWNsaXBzZSBlbmFibGVzIGRldmVsb3BlcnMgdG8gdXNlIHRoZSBTbGlja0VkaXQgCiAgICAgIGNvZGUgZWRpdG9yIGFzIHRoZSBkZWZhdWx0IGVkaXRvciB3aXRoaW4gRWNsaXBzZSBvciBhbnkgCiAgICAgIEVjbGlwc2UtYmFzZWQgSURFLiBUaGUgU2xpY2tFZGl0IFBsdWctaW4gcHJvdmlkZXMgYSB3aWRlIHJhbmdlIG9mIGZlYXR1cmVzIAogICAgICBmb3IgYW5hbHl6aW5nLCB3b3JraW5nIHdpdGggYW5kIGltcHJvdmluZyB0aGUgcmVhZGFiaWxpdHkgb2YgY29kZS4gU2VhbWxlc3NseSAKICAgICAgaW50ZWdyYXRpbmcgd2l0aCB0aGUgcHJvamVjdCBhbmQgd29ya3NwYWNlIG1hbmFnZW1lbnQgY2FwYWJpbGl0aWVzLCB0aGUgCiAgICAgIFNsaWNrRWRpdCBQbHVnLWluIGNvbXBsaWVzIHdpdGggdGhlIEVjbGlwc2UgcHJvamVjdCBkYXRhIG1vZGVsLCBkZWJ1ZyBhbmQgCiAgICAgIGJ1aWxkIGZyYW1ld29yay4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4KICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIiBoZWlnaHQ9IjIxIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIiBoZWlnaHQ9IjIxIj48Yj5Tb2Z0d2FyZSAmIFNvbHV0aW9uczwvYj4gLSA8Yj5KaW5kZW50PC9iPiAtIAogICAgICA8YSBocmVmPSJodHRwOi8vd3d3LmppbmRlbnQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5qaW5kZW50LmNvbTwvYT4gCiAgICAgIDxiciAvPgogICAgICBKaW5kZW50IGlzIGEgdmVyeSBwb3dlcmZ1bCBzb3VyY2UgY29kZSBmb3JtYXR0ZXIgZm9yIEphdmEuIEppbmRlbnQgZW1wb3dlcnMgCiAgICAgIHlvdSB0byB0cmFuc2Zvcm0gYW55IGZvcmVpZ24gSmF2YSBzb3VyY2UgY29kZSB0byBtZWV0IHlvdXIgcHJlZmVycmVkIGNvZGluZyAKICAgICAgc3R5bGUgb3IgYW55IGNvbW1vbiBKYXZhIGNvZGUgY29udmVudGlvbi4gRnVydGhlcm1vcmUgSmluZGVudCBjYW4gZ2VuZXJhdGUgCiAgICAgIGFuZCBmb3JtYXQgSmF2YWRvYyBjb21tZW50cyBvbiBkZW1hbmQuIFRoZSBlY2xpcHNlIHBsdWdpbiBmb3IgSmluZGVudCBpcyAKICAgICAgbGljZW5zZWQgdW5kZXIgdGhlIENQTCBhbmQgY2FuIGJlIGRvd25sb2FkZWQgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LmphdmFkdWRlLmNvbS90b29scy8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LmphdmFkdWRlLmNvbS90b29scy88L2E+LjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIyMSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIyMSI+PGI+U3BlY3RydW0gU29mdHdhcmU8L2I+IC0gPGI+U3BlY3RydW1TQ008L2I+IAogICAgICAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuc3BlY3RydW1zY20uY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5zcGVjdHJ1bXNjbS5jb208L2E+IAogICAgICAgPGJyIC8+CgkgIFRoZSBTcGVjdHJ1bVNDTSBwbHVnaW4gZm9yIEVjbGlwc2UgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeSBmdW5jdGlvbmFsaXR5IAogICAgICBmb3IgYXNzb2NpYXRpbmcgcHJvamVjdHMgaW4gdGhlIEVjbGlwc2Ugd29ya3NwYWNlIHdpdGggYSBTcGVjdHJ1bVNDTSByZXBvc2l0b3J5IAogICAgICBhbmQgZGVmaW5lcyB2YXJpb3VzIFNwZWN0cnVtU0NNIHNwZWNpZmljIG9wZXJhdGlvbnMgZm9yIG1hbmFnaW5nIHByb2plY3RzIAogICAgICBzaGFyZWQgd2l0aCBhIFNwZWN0cnVtU0NNIHJlcG9zaXRvcnksIHRodXMgcHJvdmlkaW5nIGEgdGlnaHQgaW50ZWdyYXRpb24gCiAgICAgIHdpdGggdGhlIEVjbGlwc2UgcGxhdGZvcm0uVGhlIHBsdWdpbiBnaXZlcyBkZXZlbG9wZXJzIHVzaW5nIEVjbGlwc2UgZGlyZWN0IAogICAgICBhY2Nlc3MgdG8gYWR2YW5jZWQgc29mdHdhcmUgY29uZmlndXJhdGlvbiBtYW5hZ2VtZW50IGZlYXR1cmVzIGluY2x1ZGluZyAKICAgICAgdmVyc2lvbiBjb250cm9sLCBicmFuY2hpbmcgYW5kIGlzc3VlIHRyYWNraW5nLCBhbGwgZnJvbSB3aXRoaW4gdGhlIEVjbGlwc2UgCiAgICAgIGVudmlyb25tZW50LiBUbyBkb3dubG9hZCB0aGUgRWNsaXBzZSBwbHVnaW4sIGNsaWNrIG9uIHRoZSAiRnJlZSBEb3dubG9hZCIgCiAgICAgIGxpbmsgb24gdGhlIHdlYnNpdGUgYW5kIGNoZWNrIG91dCB0aGUgIklERSBJbnRlZ3JhdGlvbnMiIHNlY3Rpb24gZm9yIGluc3RhbGxhdGlvbiAKICAgICAgaW5zdHJ1Y3Rpb25zLiBBIHVzZXIgZ3VpZGUgaXMgYXZhaWxhYmxlIGZvciB0aGUgcGx1Z2luIHVuZGVyIHRoZSAiV2hpdGVQYXBlcnMgCiAgICAgICYgT3RoZXIgRG9jcyIgc2VjdGlvbiBvbiB0aGUgc2l0ZS4gWW91IG5lZWQgdG8gZG93bmxvYWQgYW5kIGluc3RhbGwgdGhlIAogICAgICBTcGVjdHJ1bVNDTSBwcm9kdWN0IGJlZm9yZSB5b3UgY2FuIHVzZSB0aGUgcGx1Z2luLiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPgogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+U3liYXNlIFdvcmtTcGFjZSA8L2I+LSA8YSBocmVmPSJodHRwOi8vd3d3LlN5YmFzZS5jb20vd29ya3NwYWNlIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5TeWJhc2UuY29tL3dvcmtzcGFjZTwvYT4gCiAgICAgIDxiciAvPgogICAgICBTeWJhc2UgV29ya1NwYWNlLCBhIHVuaWZpZWQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGlzIHRoZSAKICAgICAgZmlyc3QgdG8gYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiB0aGUgdmlzaW9uIG9mIGEgc2VydmljZS1vcmllbnRlZCBhcmNoaXRlY3R1cmUgCiAgICAgIChTT0EpIGFuZCB0aGUgcmVhbGl0eSBvZiB0cmFkaXRpb25hbCBkZXZlbG9wbWVudCB0b29scy4gU3liYXNlIFdvcmtTcGFjZSAKICAgICAgY29tYmluZXMgbW9kZWxpbmcsIGRhdGEgbWFuYWdlbWVudCwgc2VydmljZXMgYXNzZW1ibHkgYW5kIG9yY2hlc3RyYXRpb24sIAogICAgICBKYXZhIGRldmVsb3BtZW50IGFuZCBtb2JpbGl6YXRpb24gaW4gYSBzaW5nbGUgdG9vbC4gRGVzaWduZWQgdG8gc3VwcG9ydCAKICAgICAgdGhlIHByaW5jaXBsZXMgb2Ygc2VydmljZS1vcmllbnRlZCBkZXZlbG9wbWVudCBvZiBhcHBsaWNhdGlvbnMgKFNPREEpLCBTeWJhc2UgCiAgICAgIFdvcmtTcGFjZSBlbmFibGVzIGRldmVsb3BlcnMgdG8gcXVpY2tseSBidWlsZCBhbmQgZGVsaXZlciBhbnkga2luZCBvZiBhcHBsaWNhdGlvbjogCiAgICAgIGZyb20gZXZlbnQtIGFuZCBkYXRhLWRyaXZlbiBhcHBsaWNhdGlvbnMgdG8gV2ViLWJhc2VkLCBjb21wb3NpdGUsIGFuZCBtb2JpbGUgCiAgICAgIGFwcGxpY2F0aW9ucy4gU3liYXNlIFdvcmtTcGFjZSBpcyBidWlsdCB1cG9uIHRoZSBFY2xpcHNlIG9wZW4gc291cmNlIGZyYW1ld29yaywgCiAgICAgIG1ha2luZyBpdCBlYXNpZXIgYW5kIGZhc3RlciBmb3IgZGV2ZWxvcGVycyB0byBidWlsZCBjb21wbGV4IGFwcGxpY2F0aW9ucyAKICAgICAgdGhhdCBsaW5rIGhldGVyb2dlbmVvdXMgaW5mcmFzdHJ1Y3R1cmVzIHN1Y2ggYXMgZGF0YWJhc2VzLCBtZXNzYWdpbmcgc3lzdGVtcywgCiAgICAgIGFuZCBlbnRlcnByaXNlIGFwcGxpY2F0aW9ucy4gCgk8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+PGI+U3luY1JPIFNvZnQgLSAmbHQ7b1h5Z2VuLyZndDsgWE1MIEVkaXRvciA8L2I+PGEgaHJlZj0iaHR0cDovL3d3dy5veHlnZW54bWwuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cub3h5Z2VueG1sLmNvbS88L2E+IAogICAgICA8b1h5Z2VuLz4gPGJyIC8+CgkgIE94eWdlbiBYTUwgRWRpdG9yIGludGVncmF0ZXMgc21vb3RobHkgd2l0aCBFY2xpcHNlIG9mZmVyaW5nIGEgc2ltcGxlIHlldCBwb3dlcmZ1bCBYTUwgZWRpdGluZwoJICBlbnZpcm9ubWVudCAoWE1MIHByb2plY3QsIHBlcnNwZWN0aXZlLCB3aXphcmRzLCBkb2N1bWVudCB0ZW1wbGF0ZXMsIHByZWZlcmVuY2VzLCBoZWxwLCAKCSAgb3V0bGluZXIsIGVkaXRvcnMsIHZpZXdzLCBhY3Rpb25zKS4gVGhlIGludGVsbGlnZW50IGNvbnRlbnQgY29tcGxldGlvbiBkcml2ZW4gYnkgYSBEVEQgb3IgYSAKCSAgc2NoZW1hIG9yIGJ5IHRoZSBkb2N1bWVudCBzdHJ1Y3R1cmUgaXRzZWxmLCB0aGUgZnVsbCBzdXBwb3J0IGZvciBEVEQsIFhNTCBTY2hlbWEsIFJlbGF4IE5HIAoJICBzY2hlbWEgKFJOQyBhbmQgUk5HKSBhbmQgZXZlbiBmb3IgTlJMIHNjaGVtYSBhbmQgdGhlIHBvc3NpYmlsaXR5IHRvIGVkaXQgWFNMVCwgZXZhbHVhdGUgWFBhdGggCgkgIGFuZCBhcHBseSB0cmFuc2Zvcm1hdGlvbnMgb24geW91ciBkb2N1bWVudHMgdXNpbmcgWFNMVCBhbmQgRk9QcyBtYWtlIE94eWdlbiB0aGUgY29tcGxldGUgCgkgIHNvbHV0aW9uIGZvciBYTUwgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+PGI+U3lzdGluZXQgRGV2ZWxvcGVyIGZvciBFY2xpcHNlPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cuc3lzdGluZXQuY29tL3Byb2R1Y3RzL3NkL292ZXJ2aWV3IiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5zeXN0aW5ldC5jb20vcHJvZHVjdHMvc2Qvb3ZlcnZpZXc8L2E+IAogICAgICA8YnIgLz4KICAgICAgQSBmcmVlLCBzdGFuZGFyZHMtY29tcGxpYW50IFNPQVAgV2ViIHNlcnZpY2VzIGRldmVsb3BtZW50IGVudmlyb25tZW50IGZvciAKICAgICAgRWNsaXBzZSwgU3lzdGluZXQgRGV2ZWxvcGVyIHByb3ZpZGVzIGEgc2ltcGxlIHBvaW50LWFuZC1jbGljayBjb2RlIGdlbmVyYXRpb24gCiAgICAgIGV4cGVyaWVuY2UgdGhhdCBjYW4gdHVybiBhbnkgZXhpc3RpbmcgSmF2YSBhcHBsaWNhdGlvbiBpbnRvIGEgV2ViIHNlcnZpY2UgCiAgICAgIGluIGEgbWF0dGVyIG9mIG1pbnV0ZXMuIFN5c3RpbmV0IERldmVsb3BlciBmb3IgRWNsaXBzZSwgNi4wIGV4dGVuZHMgdGhlIAogICAgICBFY2xpcHNlIElERSB0byBzdXBwb3J0IFdlYiBzZXJ2aWNlcyBjcmVhdGlvbiwgZGVidWdnaW5nLCB0ZXN0aW5nIGFuZCBkZXBsb3ltZW50LiAKICAgICAgU3lzdGluZXQgRGV2ZWxvcGVyIGF1dG9tYXRlcyB0aGUgZ2VuZXJhdGlvbiBvZiBXU0RMIGRlc2NyaXB0aW9ucyBhbmQgU09BUCAKICAgICAgaW50ZXJmYWNlcywgaW5jbHVkZXMgaW50ZWdyYXRlZCBkZXBsb3ltZW50LCBkZWJ1Z2dpbmcgYW5kIG1vbml0b3JpbmcgdG9vbHMsIAogICAgICBhbmQgcHJvdmlkZXMgZnVsbCBzdXBwb3J0IGZvciBwdWJsaWNhdGlvbiB0byBVRERJLWJhc2VkIHJlZ2lzdHJpZXMuIFdpdGggCiAgICAgIGZ1bGwgc3VwcG9ydCBmb3IgV1MtU2VjdXJpdHksIFdTLVJlbGlhYmxlTWVzc2FnaW5nLCBXUy1JbnRlcm9wZXJhYmlsaXR5IAogICAgICBhbmQgbW9yZSwgaXRzIHBvc3NpYmxlIHRvIGNyZWF0ZSBoaWdoIHBlcmZvcm1hbmNlLCBzZWN1cmUsIHJlbGlhYmxlIGFuZCAKICAgICAgaGlnaGx5IGludGVyb3BlcmFibGUgc2VydmljZXMuIFN5c3RpbmV0IERldmVsb3BlciBmdWxseSBzdXBwb3J0cyBhbGwgb2YgCiAgICAgIHRoZSByaWNoIGZ1bmN0aW9uYWxpdHkgZm91bmQgaW4gU3lzdGluZXQgU2VydmVyIGZvciBKYXZhLCA2LjAuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5UYXJyYWdvbiBHbWJIIC0gakFDT0IgZGVzaWduZXI8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy50YXJyYWdvbi1zb2Z0d2FyZS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy50YXJyYWdvbi1zb2Z0d2FyZS5jb20vPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIGpBQ09CIGlzIGEgSmF2YSBiYXNlZCByYXBpZCBhcHBsaWNhdGlvbiBkZXZlbG9wbWVudCB0b29sIChSQUQpIHdpdGggYSBydW4gCiAgICAgIHRpbWUgZW52aXJvbm1lbnQgZm9yIHdlYiBiYXNlZCBhcHBsaWNhdGlvbnMgaW4gYSB0aGluIGNsaWVudC1zZXJ2ZXIgZW52aXJvbm1lbnQuIAogICAgICBqQUNPQiBjYW4gdXRpbGl6ZSBleGlzdGluZyBzeXN0ZW1zIGZyb20gbXVsdGlwbGUgZGF0YSBiYXNlcywgaW50ZWdyYXRpbmcgCiAgICAgIHRoZW0gd2l0aCBuZXcgZnVuY3Rpb25hbGl0eS4gV2l0aCB0aGUgRWNsaXBzZSBQbHVnaW4gPGEgaHJlZj0iaHR0cDovL3d3dy50YXJyYWdvbi1zb2Z0d2FyZS5jb20vamFjb2IvY29udHJvbC5waHA/JnRvcGdyb3VwbmFtZT0zJmdyb3VwbmFtZT1KTTAyJnN1Ymdyb3VwbmFtZT1qX2Rlc2lnbmVyIiB0YXJnZXQ9Il9ibGFuayI+akFDT0IgCiAgICAgIGRlc2lnbmVyPC9hPiB5b3UgY2FuIGNyZWF0ZSBhZGRpdGlvbmFsIGJ1c2luZXNzIGZ1bmN0aW9uYWxpdHkgd2l0aGluIGV4aXN0aW5nIAogICAgICBhcHBsaWNhdGlvbnMsIGNyZWF0ZSBuZXcgYXBwbGljYXRpb25zLCBvciB1c2UgdGhlIERlc2lnbmVyIHRvIGJyaW5nIG9sZGVyIAogICAgICBhcHBsaWNhdGlvbnMgdXAgdG8gdGhlIGxhdGVzdCBzdGFuZGFyZHMuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiIGhlaWdodD0iMzciPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiIGhlaWdodD0iMzciPiA8Yj5UYXRhIENvbnN1bHRhbmN5IFNlcnZpY2VzIC0gQXNzZW50PC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cudGNzLmNvbS8wX3Byb2R1Y3RzL2Fzc2VudC9hc3NlbnRfc2VjcGx1c19qYXZhLmh0bSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudGNzLmNvbS8wX3Byb2R1Y3RzL2Fzc2VudC9hc3NlbnRfc2VjcGx1c19qYXZhLmh0bTwvYT4gCiAgICAgIDxiciAvPgogICAgICBBc3NlbnQgcGx1Zy1pbiBmb3IgRWNsaXBzZSBhbmQgV1NBRCBpbnRlZ3JhdGVzIEFzc2VudCBKYXZhIHNvIHRoYXQgc3RhbmRhcmRzIAogICAgICBjaGVja2luZyBjYW4gYmUgcGVyZm9ybWVkIGZyb20gdGhlIHBsYXRmb3JtIGl0c2VsZiAuIFlvdXIgY29kZSBpcyBjb25zdGFudGx5IAogICAgICBpbnNwZWN0ZWQgZm9yIHZpb2xhdGlvbiBvZiBKYXZhIHN0YW5kYXJkcy4gV2l0aGluIHRoZSBFY2xpcHNlIHdvcmtiZW5jaCAKICAgICAgeW91IGFyZSBub3RpZmllZCBvZiBzdGFuZGFyZHMgdmlvbGF0aW9ucyB2aWEgdGhlIHRhc2sgd2luZG93IGFuZCBzb3VyY2UgCiAgICAgIGNvZGUgbWFya2VycyBqdXN0IGFzIHlvdSB3b3VsZCBzZWUgd2l0aCBjb21waWxlciBlcnJvcnMgb3Igd2FybmluZ3MuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPlRlbGVsb2dpYyAtIFNZTkVSR1kgcGx1Zy1pbiBmb3IgRWNsaXBzZTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnRlbGVsb2dpYy5jb20vc3luZXJneSIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudGVsZWxvZ2ljLmNvbS9zeW5lcmd5PC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFRoZSBUZWxlbG9naWMgU1lORVJHWSBwbHVnLWluIGZvciBFY2xpcHNlIHByb3ZpZGVzIHZlcnNpb24gY29udHJvbCBhbmQgY29uZmlndXJhdGlvbiAKICAgICAgbWFuYWdlbWVudC4gUHJvamVjdCB0ZWFtcyBiZW5lZml0IGZyb20gYSBmdWxseSBjdXN0b21pemFibGUgc29sdXRpb24gb2ZmZXJpbmcgCiAgICAgIHJlcXVpcmVtZW50LWRyaXZlbiBkZXZlbG9wbWVudCwgQWdpbGUgcHJvamVjdCBtYW5hZ2VtZW50LCB0YXNrIGFuZCBjaGFuZ2UgCiAgICAgIG1hbmFnZW1lbnQsIGRlZmVjdCB0cmFja2luZyBkaXJlY3RseSBmcm9tIHdpdGhpbiBFY2xpcHNlIDMuMSBhbmQgV1NBRCAvIAogICAgICBSYXRpb25hbCBBcHBsaWNhdGlvbiBEZXZlbG9wZXIgNi4gRGV2ZWxvcGVyIG9wZXJhdGlvbnMgYXJlIHNpbXBsaWZpZWQgYnkgCiAgICAgIGF1dG9tYXRpYyB3b3Jrc3BhY2UgbWFuYWdlbWVudCwgcmVmYWN0b3Igc3VwcG9ydCBhbmQgb25lLWNsaWNrIGNoYW5nZSBkZWxpdmVyeS4gCiAgICAgIFRlYW0gbGVhZGVycyBjYW4gZWZmb3J0bGVzc2x5IGludHJvZHVjZSBmbGV4aWJsZSwgcmVwZWF0YWJsZSBwcm9jZXNzZXMsIAogICAgICBldmVuIGFjcm9zcyBtdWx0aXBsZSBzaXRlcy4gVGhlIHBsdWctaW4gbWF5IGJlIGRvd25sb2FkZWQgZnJvbSA8YSBocmVmPSJodHRwczovL3N1cHBvcnQudGVsZWxvZ2ljLmNvbS9lbi9zeW5lcmd5L2Rvd25sb2FkL2ludGVncmF0aW9uL2ludGVncmF0aW9uLmNmbT92aWQ9MTM2IiB0YXJnZXQ9Il9ibGFuayI+aHR0cHM6Ly9zdXBwb3J0LnRlbGVsb2dpYy5jb20vZW4vc3luZXJneS9kb3dubG9hZC9pbnRlZ3JhdGlvbi9pbnRlZ3JhdGlvbi5jZm0/dmlkPTEzNjwvYT4gCiAgICAgIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+CiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+VGVzdGluZyBUZWNobm9sb2dpZXMgliBUVHdvcmtiZW5jaCA8L2I+LSA8YSBocmVmPSJodHRwOi8vd3d3LnRlc3Rpbmd0ZWNoLmRlL3Byb2R1Y3RzL3R0d2JfaW50cm8ucGhwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy50ZXN0aW5ndGVjaC5kZS9wcm9kdWN0cy90dHdiX2ludHJvLnBocDwvYT4gCiAgICAgIDxiciAvPgogICAgICBUVHdvcmtiZW5jaCwgYnVpbHQgb24gRWNsaXBzZSAzLjEsIGlzIGEgZ3JhcGhpY2FsIHRlc3QgZGV2ZWxvcG1lbnQgYW5kIGV4ZWN1dGlvbiAKICAgICAgZW52aXJvbm1lbnQgYmFzZWQgb24gdGhlIGludGVybmF0aW9uYWwgc3RhbmRhcmRpc2VkIHRlc3QgbGFuZ3VhZ2UgVFRDTi0zLiAKICAgICAgSXQgaW5jbHVkZXMgdGhlIGZ1bGwgcmFuZ2Ugb2YgZmVhdHVyZXMgbmVlZGVkIGZvciB0ZXN0IHNwZWNpZmljYXRpb24sIGV4ZWN1dGlvbiAKICAgICAgYW5kIGFuYWx5c2lzLiBBcGFydCBmcm9tIHRleHQtYmFzZWQgVFRDTi0zIHRlc3Qgc3BlY2lmaWNhdGlvbiwgVFR3b3JrYmVuY2ggCiAgICAgIGFsc28gb2ZmZXJzIHRoZSBvcHRpb24gb2YgZ3JhcGhpYyBkZWZpbml0aW9uIGZvciB0ZXN0IGNhc2VzLiBPbmNlIHRlc3RzIAogICAgICBoYXZlIGJlZW4gZGVmaW5lZCBpbiBUVENOLTMsIFRUd29ya2JlbmNoIGNvbXBpbGVzIHRoZW0gaW4gYW4gZXhlY3V0YWJsZSAKICAgICAgVGVzdCBTdWl0ZS4gVGhlIGNvbXByZWhlbnNpdmUgdGVzdCBtYW5hZ2VtZW50IGFuZCB0ZXN0IGV4ZWN1dGlvbiBlbnZpcm9ubWVudCAKICAgICAgZmVhdHVyZSBhbGxvd3MgdXNlcnMgdG8gYWRtaW5pc3RlciwgZXhlY3V0ZSBhbmQgYW5hbHlzZSB0aGVpciB0ZXN0cy4gVFR3b3JrYmVuY2ggCiAgICAgIHN1cHBvcnRzIHRlc3QgYXV0b21hdGlvbiBtZXRob2RzIHRoYXQgc2lnbmlmaWNhbnRseSByZWR1Y2UgY29zdHMgYnV0IGFsc28gCiAgICAgIGVuc3VyZSBvcHRpbWFsIHF1YWxpdHkgdGhyb3VnaG91dCB0aGUgd2hvbGUgdGVzdCBjeWNsZS4gCgk8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIiBoZWlnaHQ9IjM3Ij48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIiBoZWlnaHQ9IjM3Ij4gPGI+VEhPVUdIVCBJbmMuPC9iPiAtIDxiPkNvY29CYXNlIEVudGVycHJpc2UgCiAgICAgIE8vUjwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnRob3VnaHRpbmMuY29tL2VjbGlwc2UvaW5kZXguaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cudGhvdWdodGluYy5jb20vZWNsaXBzZS9pbmRleC5odG1sPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIENvY29CYXNlIEVudGVycHJpc2UgTy9SIGlzIGEgdmVuZG9yIG5ldXRyYWwgIkR5bmFtaWMgT2JqZWN0IHRvIFJlbGF0aW9uYWwgCiAgICAgIE1hcHBpbmciIHRvb2wsIChpLmUuIG5vIGRhdGFiYXNlIGNvZGUgaW4gdGhlIG9iamVjdCkgdGhhdCBpcyB0aWdodGx5IGludGVncmF0ZWQgCiAgICAgIHdpdGggdGhlIEVjbGlwc2UgSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBUb29sLiBDb2NvQmFzZSBnZW5lcmF0ZXMgSmF2YSBwZXJzaXN0ZW5jZSAKICAgICAgY29kZSBmcm9tIHByZXNldCBlZHRpYWJsZSB0ZW1wbGF0ZXMgaW5jbHVkaW5nIENNUCBhbmQgQk1QIEVudGl0eSBCZWFucywgCiAgICAgIFNlc3Npb24gQmVhbnMsIER5bmFtaWMgVHJhbnNwYXJlbnQgUGVyc2lzdGVuY2UsIGFuZCBzdGFuZC1hbG9uZSBKYXZhIHBlcnNpc3RlbmNlLiAKICAgICAgQ29jb0Jhc2UgaXMgaW50ZWdyYXRlZCB3aXRoIHRoZSBsZWFkaW5nIGFwcGxpY2F0aW9uIHNlcnZlcnMgc3VjaCBhcyBXZWJTcGhlcmUgCiAgICAgIC8gV2VibG9naWMgLyBPcmFjbGU5aUFTIC8gU3liYXNlIGFuZCB0aGUgbGVhZGluZyBVTUwgbW9kZWxpbmcgdG9vbHMgc3VjaCAKICAgICAgYXMgUmF0aW9uYWwgUm9zZSAvIFRvZ2V0aGVyIC8gU3liYXNlIC8gRW1iYXJjYWRlcm8uPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gCiAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSIgaGVpZ2h0PSIzNyI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSIgaGVpZ2h0PSIzNyI+PGI+VGltZVN5czwvYj4gLSA8Yj5MaW51eExpbmsgPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cudGltZXN5cy5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy50aW1lc3lzLmNvbS88L2E+IAogICAgICA8YnIgLz4KICAgICAgTGludXhMaW5rIGlzIGEgd2ViLWJhc2VkIHJlc291cmNlIGZvciBlbWJlZGRlZCBMaW51eCBkZXZlbG9wbWVudCwgZGVsaXZlcmluZyAKICAgICAgY29udGludW91c2x5IHVwZGF0ZWQgc3RyZWFtcyBvZiB2YWxpZGF0ZWQgYW5kIHJlYWR5LXRvLXVzZSBjb21wb25lbnRzLCBpbmZvcm1hdGlvbiwgCiAgICAgIHRvb2xzIGFuZCB0ZWNobm9sb2d5IGFnZ3JlZ2F0ZWQgZnJvbSBsZWFkaW5nIHNlbWljb25kdWN0b3IgY29tcGFuaWVzLCB0aGUgCiAgICAgIG9wZW4gc291cmNlIGNvbW11bml0eSBhbmQgVGltZVN5cy4gTGludXhMaW5rIHByb3ZpZGVzIHRoZSB0b29scyBwcmV2aW91c2x5IAogICAgICBrbm93biBhcyBUaW1lU3Rvcm0gdG9vbHMsIGJ1dCB0aGV5IGFyZSBub3cgYSBwYXJ0IG9mIHRoZSBEZXZlbG9wZXIgU3VpdGUuIAogICAgICBJbiB0aGUgbGF0ZXN0IHZlcnNpb25zLCB3ZZJ2ZSBtYWRlIHRoZSBhYmlsaXR5IHRvIHdvcmsgd2l0aCBSUE0gZmlsZXMgbW9yZSAKICAgICAgcm9idXN0IHNvIHRoYXQgeW91IGNhbiB1c2UgdGhlIHBhY2thZ2VzIGZyb20gdGhlIHJlcG9zaXRvcnkgdG8gYnVpbGQgcm9vdCAKICAgICAgZmlsZXN5c3RlbXMgd2l0aCBncmVhdGVyIGVhc2UuIFdlknZlIGFsc28gYWRkZWQgdGhlIGFiaWxpdHkgdG8gY3JlYXRlIGpmZnMyLCAKICAgICAgY3JhbSBhbmQgaW5pdHJkIGZpbGUgc3lzdGVtIGltYWdlcyBvbiBXaW5kb3dzIG9yIExpbnV4LiA8cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48L3A+PC90ZD4KICA8L3RyPiAKICA8dHI+IAogICAgPHRkIGFsaWduPVJJR0hUIHZhbGlnbj1UT1Agd2lkdGg9IjMlIj48aW1nIHNyYz0iLi4vaW1hZ2VzL0FkYXJyb3cuZ2lmIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGJvcmRlcj0iMCI+PC90ZD4KICAgIDx0ZCB3aWR0aD0iOTclIj48Yj5Ucml0YTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnRyaXRhLmNvbS9pbnRlZ3JhdGlvbnMvZWNsaXBzZS5qc3AiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnRyaXRhLmNvbS9pbnRlZ3JhdGlvbnMvZWNsaXBzZS5qc3A8L2E+IAogICAgICAtIE1hdHQgSm9uZXMgPGJyIC8+CiAgICAgIFRyaXRhIGlzIGEgc291cmNlIGNvZGUgYmVhdXRpZmllciB3aGljaCBsZWFybnMgeW91ciBwZXJzb25hbCBmb3JtYXR0aW5nIAogICAgICBzdHlsZSBieSBleGFtaW5pbmcgZXhhbXBsZXMgb2YgeW91ciBjb2RlLiBGaXJzdCwgdXNlIGEgdGV4dCBlZGl0b3IgdG8gZm9ybWF0IAogICAgICB5b3VyIGV4YW1wbGVzIGFuZCBkZWZpbmUgeW91ciBzdHlsZTsgdGhlbiBydW4gVHJpdGEgd2l0aGluIEVjbGlwc2UuIFRyaXRhIAogICAgICBmb3JtYXRzIEMjLCBDU1MsIEphdmEsIEphdmFzY3JpcHQsIEpTUCwgSFRNTCwgYW5kIFBIUC4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPlZpc3VhbCBQYXJhZGlnbSAtIFNERSBmb3IgRWNsaXBzZTwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy52aXN1YWwtcGFyYWRpZ20uY29tLzwvYT4gCiAgICAgIDxiciAvPgogICAgICA8Yj5TREU8L2I+IC0gU0RFIGlzIGEgVU1MIENBU0UgVG9vbCBpbnRlZ3JhdGlvbiBmb3IgRWNsaXBzZS4gSXQgYWxsb3dzIGRldmVsb3BlcnMgCiAgICAgIHRvIGRyYXcgVU1MIGRpYWdyYW1zIGluc2lkZSBFY2xpcHNlIGFuZCBjcmVhdGVzIGEgdmlzdWFsIGJyaWRnZSBhbW9uZyBhcmNoaXRlY3RzLCAKICAgICAgYW5hbHlzdHMsIGRlc2lnbmVycyBhbmQgZGV2ZWxvcGVycy4gQSBmcmVlIENvbW11bml0eSBFZGl0aW9uIGlzIGF2YWlsYWJsZSAKICAgICAgZm9yIG5vbi1jb21tZXJjaWFsIHVzZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vc2RlZWMucGhwIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy52aXN1YWwtcGFyYWRpZ20uY29tL3NkZWVjLnBocDwvYT4uIAogICAgICBUaGUgcHJvZmVzc2lvbmFsIGVkaXRpb24gaW5jbHVkZXMgYWRkaXRpb25hbCBmZWF0dXJlcyBzdWNoIGFzIHN5bmNocm9uaXppbmcgCiAgICAgIHNvdXJjZSBjb2RlIHdpdGggeW91ciBVTUwgZGlhZ3JhbXMgZHVyaW5nIGJvdGggZm9yd2FyZCBhbmQgcmV2ZXJzZSBlbmdpbmVlcmluZy4gCiAgICAgIFlvdSZyc3F1bztsbCBmaW5kIGluZm9ybWF0aW9uIGFib3V0IHRoZSBQcm9mZXNzaW9uYWwgRWRpdGlvbiBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vRWNsaXBzZUludGVncmF0aW9uL2luZGV4Lmh0bWwiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vRWNsaXBzZUludGVncmF0aW9uL2luZGV4Lmh0bWw8L2E+LiAKICAgICAgPGJyIC8+CiAgICAgIDxiPkRCIFZpc3VhbCBBcmNoaXRlY3Q8L2I+IC0gREIgVmlzdWFsIEFyY2hpdGVjdCAoREItVkEpIGlzIGEgZnVsbCBmZWF0dXJlZCAKICAgICAgT2JqZWN0IFJlbGF0aW9uYWwgTWFwcGluZyAoT1JNKSB0b29sc2V0IHRoYXQgYWN0IGFzIGEgYnJpZGdlIGJldHdlZW4gb2JqZWN0IAogICAgICBtb2RlbCwgZGF0YSBtb2RlbCBhbmQgcmVsYXRpb25hbCBtb2RlbCBieSBhdXRvbWF0aW5nIHRoZSBtYXBwaW5nIGJldHdlZW4gCiAgICAgIHJlbGF0aW9uYWwgcm93cyBpbiBhIGRhdGFiYXNlIGFuZCBvYmplY3QgbW9kZWxzIHdoaWNoIGNhbiBiZSBtYW5pcHVsYXRlZCAKICAgICAgYnkgYSBKYXZhIHByb2dyYW0sIGFuZCBlbmFibGVzIFVNTCBkZXNpZ24gdG8gZGF0YWJhc2UgaW1wbGVtZW50YXRpb24uIEZvciAKICAgICAgbW9yZSBkZXRhaWxzLCB2aXNpdCB0aGUgcHJvZHVjdCBob21lcGFnZSBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vZGJ2YS5waHAiIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vZGJ2YS5waHA8L2E+IAogICAgICBZb3UgY2FuIHJlZ2lzdGVyIHRvIGRvd25sb2FkIGEgZnJlZSB0cmlhbCBhdCA8YSBocmVmPSJodHRwOi8vd3d3LnZpc3VhbC1wYXJhZGlnbS5jb20vZG93bmxvYWQucGhwP3Nob3J0TmFtZT1kYnZhIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy52aXN1YWwtcGFyYWRpZ20uY29tL2Rvd25sb2FkLnBocD9zaG9ydE5hbWU9ZGJ2YTwvYT4uIAogICAgPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+V2ViU3RyZWFtIFN5c3RlbXMgLSBUQ0J1aWxkZXI8L2I+IC08YSBocmVmPSJodHRwOi8vd3d3LndlYnN0cmVhbXN5c3RlbXMuY29tLyIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cud2Vic3RyZWFtc3lzdGVtcy5jb20vIAogICAgICA8L2E+PGJyIC8+CiAgICAgIFRDQnVpbGRlciBpcyBhIEdVSSBkZXZlbG9wbWVudCBmcmFtZXdvcmsgYmFzZWQgb24gRWNsaXBzZSBwbGF0Zm9ybSB0byBkZXNpZ24sIAogICAgICBkZXZlbG9wIGFuZCBkZWJ1ZyBzd2luZyBiYXNlZCByaWNoIGFuZCBpbnRlcmFjdGl2ZSB3ZWIgYXBwbGljYXRpb25zLiBUaGUgCiAgICAgIGFwcGxpY2F0aW9uIGNhbiBiZSBkZXBsb3llZCBzZWFtbGVzc2x5IGFzIHdlYiBvbiBhbnkgYXBwbGljYXRpb24gc2VydmVyIAogICAgICBvciBhcyBzdGFuZGFsb25lIGFwcGxpY2F0aW9uLjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+IAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+V2luZCBSaXZlciAtIFdpbmQgUml2ZXIgV29ya2JlbmNoPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93aW5kcml2ZXIuY29tL3Byb2R1Y3RzL2RldmVsb3BtZW50X3Rvb2xzL2lkZS93aW5kX3JpdmVyX3dvcmtiZW5jaC8iIHRhcmdldD0iX2JsYW5rIj5odHRwOi8vd2luZHJpdmVyLmNvbS9wcm9kdWN0cy9kZXZlbG9wbWVudF90b29scy9pZGUvd2luZF9yaXZlcl93b3JrYmVuY2gvPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIFdpbmQgUml2ZXIgV29ya2JlbmNoIGlzIGFuIG9wZW4sIEVjbGlwc2UtYmFzZWQgZGV2aWNlIHNvZnR3YXJlIGRldmVsb3BtZW50IAogICAgICBlbnZpcm9ubWVudC4gVGhyb3VnaCBpdHMgdW5pcXVlIGNvbWJpbmF0aW9uIG9mIGNhcGFiaWxpdGllcywgaW50ZWdyYXRpb24sIAogICAgICBhbmQgYXZhaWxhYmlsaXR5LCBXb3JrYmVuY2ggZW5hYmxlcyBvcmdhbml6YXRpb25zIHRvIHN0YW5kYXJkaXplIG9uIGEgY29tbW9uIAogICAgICBlbnZpcm9ubWVudCBmb3IgZGV2aWNlIHNvZnR3YXJlIGRldmVsb3BtZW50LCBoZWxwaW5nIGRldmVsb3BlcnMsIHByb2plY3QgCiAgICAgIHRlYW1zLCBhbmQgZW50ZXJwcmlzZXMgaW1wcm92ZSB0aGVpciBlZmZlY3RpdmVuZXNzLiBXaW5kIFJpdmVyIFdvcmtiZW5jaCAKICAgICAgbm90IG9ubHkgb3B0aW1pemVkIHRoZSBkZXZlbG9wbWVudCBwcm9jZXNzIGZvciBhIHNwZWNpZmljIGRldmVsb3BtZW50IHBoYXNlLCAKICAgICAgYnV0IGlzIGFsc28gZmxleGlibGUgYW5kIHNjYWxhYmxlIHRvIHdvcmsgYWNyb3NzIG11bHRpcGxlIHByb2plY3RzLiBJbiBhZGRpdGlvbiAKICAgICAgdG8gc3RhbmRhcmRpemluZyBvbiBvbmUgY29tbW9uIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBkZXZlbG9wbWVudCB0ZWFtcyAKICAgICAgY2FuIG5vdyBzaGFyZSBiZXN0IHByYWN0aWNlcyBhbmQgbW9yZSBlYXNpbHkgc2hpZnQgYW5kIHNoYXJlIHJlc291cmNlcyBiZXR3ZWVuIAogICAgICBwcm9qZWN0cyBhbmQgZGV2ZWxvcGVycy4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPldpcmVsZXhzb2Z0IC0gVmlzdGFNYXggSURFPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cud2lyZWxleHNvZnQuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy53aXJlbGV4c29mdC5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgVmlzdGFNYXggSURFIGJ5IFdpcmVsZXhzb2Z0IGlzIGEgZ3JhcGhpY2FsIGJhc2VkLCAmcXVvdDtkcmFnICZhbXA7IGRyb3AmcXVvdDsgCiAgICAgIGFwcGxpY2F0aW9uIGRldmVsb3BtZW50IGVudmlyb25tZW50IGJhc2VkIG9uIEVjbGlwc2UuIEl0IGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gCiAgICAgIG9mIGRldmVsb3BtZW50IHRvb2xzIGFuZCBoYXMgc3VjaCBub3ZlbCBmZWF0dXJlcyBhcyBhcHBsaWNhdGlvbiBkZXNpZ24gYnkgCiAgICAgICZxdW90O2RyYWcgJmFtcDsgZHJvcCZxdW90OyBmcm9tIGEgcGFsZXR0ZSwgYW4gZXh0ZW5zaXZlIHBhbGV0dGUgcmljaCB3aXRoIAogICAgICBHVUkgYW5kIG5vbi1HVUkgY29tcG9uZW50cywgRXZlbnQgTGlua3MgdG8gYXNzb2NpYXRlIGV2ZW50cyB3aXRoIHRyYW5zaXRpb25zIAogICAgICBiZXR3ZWVuIGFwcGxpY2F0aW9uIGNvbXBvbmVudHMsIGZ1bGwgZ3JhcGhpY2FsIHJlcHJlc2VudGF0aW9ucyBvZiBhbGwgYXBwbGljYXRpb24gCiAgICAgIGNvbXBvbmVudHMsIExvY2FsaXphdGlvbiB3aXRoIGFuIGFkdmFuY2VkICZxdW90O1ByZXZpZXcmcXVvdDsgZmVhdHVyZSwgTU1JIAogICAgICBzaW11bGF0aW9uIGNhcGFiaWxpdGllcywgVU1MLVN0eWxlIHVzZXItZGVmaW5lZCBjb21wb25lbnRzLCBhbmQgbWFueSBtb3JlLiAKICAgICAgQ3VycmVudGx5IGl0IGlzIGF2YWlsYWJsZSBmb3IgbGljZW5zaW5nICh3aXRoIGZyZWUgZW50cnktbGV2ZWwgdmVyc2lvbnMpIAogICAgICBmb3IgU3ltYmlhbiAoU2VyaWVzIDYwICYgVUlRKSwgSjJNRSBhbmQgTWFlbW8gKEJldGEpLiBGb3IgbW9yZSBkZXRhaWxzIHBsZWFzZSAKICAgICAgY29udGFjdCA8YSBocmVmPSJtYWlsdG86aW5mb0B3aXJlbGV4c29mdC5jb20iPmluZm9Ad2lyZWxleHNvZnQuY29tPC9hPjxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+ICAKICAgIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPjxiPnhjZW50cmljIEdtYkggLSBKQVhGcm9udDwvYj4gLSA8YSBocmVmPSJodHRwOi8vd3d3LmpheGZyb250LmNvbS9wYWdlcy9KYXhmcm9udC1FY2xpcHNlLVBsdWdpbi5odG1sIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy5qYXhmcm9udC5jb20vcGFnZXMvSmF4ZnJvbnQtRWNsaXBzZS1QbHVnaW4uaHRtbDwvYT4gCiAgICAgIDxiciAvPgogICAgICBHZW5lcmF0ZSBkeW5hbWljIGFuZCBpbnRlcmFjdGl2ZSBpbnB1dCBmb3JtcyBiYXNlZCBvbiBhIFczQyBYTUwgU2NoZW1hIHdpdGhvdXQgCiAgICAgIGNvZGluZy4gVGhlIGdlbmVyYXRlZCBVSSBjYW4gYmUgYSBKYXZhU3dpbmcgb3IgYSBIVE1MIHN1cmZhY2UuIFRoaXMgcGx1Z2luIAogICAgICBjYW4gYWxzbyBiZSB1c2VkIGFzIGEgR1VJIEJ1aWxkZXIgZm9yIHlvdXIgZW5kIHVzZXIgZnJvbnQgZW5kcy4gT25lIGNhbiAKICAgICAgY2hhbmdlIHRoZSBzdHlsZSBhbmQgdGhlIGJlaGF2aW91ciBmb3IgeW91ciB1c2VyIGludGVyZmFjZXMgdGhyb3VnaCBhbiBvd24gCiAgICAgIFVJIGxhbmd1YWdlIGhlbGQgaW4gWE1MLCBjYWxsZWQgWFVJIChlWHRlbnNpYmxlIFVzZXIgSW50ZXJmYWNlKS4gVGhpcyBYVUkgCiAgICAgIGNhbiBiZSB1c2VkIGZvciB5b3VyIFVJIGNoYW5uZWwgb2YgY2hvaWNlIChKYXZhU3dpbmcsIEhUTUwsIFBERikuIFRoaXMgcGx1Z2luIAogICAgICBpcyBmcmVlIGZvciBwcml2YXRlIHVzYWdlIChub25lIGNvbW1lcmNpYWwpIGFuZCBjYW4gYmUgZG93bmxvYWRlZCBoZXJlOiAKICAgICAgPGEgaHJlZj0iaHR0cDovL3d3dy5qYXhmcm9udC5jb20vcGFnZXMvSmF4ZnJvbnQtRWNsaXBzZS1QbHVnaW4uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuamF4ZnJvbnQuY29tL3BhZ2VzL0pheGZyb250LUVjbGlwc2UtUGx1Z2luLmh0bWw8L2E+PHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+PGI+eG9yZWQ8L2I+IC0gPGI+eG9yZWQ6OlRydVN0dWRpbyBQcm9mZXNzaW9uYWw8L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy54b3JlZC5jb20vIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy54b3JlZC5jb20vPC9hPiAKICAgICAgPGJyIC8+CiAgICAgIEJ1aWx0IG9uIHRvcCBvZiB0aGUgRWNsaXBzZSBQbGF0Zm9ybSwgUEhQIGFuZCBQeXRob24gSURFIGluaGVyaXRzIGEgY29tcHJlaGVuc2l2ZSAKICAgICAgc2V0IG9mIEVjbGlwc2UgZWRpdGluZywgZGVidWdnaW5nIGFuZCBkZXBsb3ltZW50IHRvb2xzIGFuZCBpbnRyb2R1Y2VzIG5ldyAKICAgICAgZmVhdHVyZXMgZm9yIFBIUCBhbmQgUHl0aG9uIGRldmVsb3BlcnMgYXMgRWNsaXBzZS1pbnRlZ3JhdGVkIFdZU0lXWUcgSFRNTCAKICAgICAgRWRpdG9yLiBJdCBzaW1wbGlmaWVzIHByb2plY3QgZGV2ZWxvcG1lbnQgd2l0aCBwaHBEb2N1bWVudG9yLiBUcnVTdHVkaW8gCiAgICAgIFByb2Zlc3Npb25hbCBzdXBwb3J0cyBzZXZlcmFsIGRlYnVnZ2VycyBpbmNsdWRpbmcgREJHIFBIUCBEZWJ1Z2dlciBhbmQgWGRlYnVnIAogICAgICBvdmVyIERCR3AuIDxwIGFsaWduPSJyaWdodCI+PHNtYWxsPjxhIGhyZWY9IiN0b3AiPmdvIHRvIHRvcDwvYT48L3NtYWxsPjwvcD48L3RkPgogIDwvdHI+ICAKICAgIDx0cj4gCiAgICA8dGQgYWxpZ249UklHSFQgdmFsaWduPVRPUCB3aWR0aD0iMyUiPjxpbWcgc3JjPSIuLi9pbWFnZXMvQWRhcnJvdy5naWYiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYm9yZGVyPSIwIj48L3RkPgogICAgPHRkIHdpZHRoPSI5NyUiPiA8Yj5Zb3hvcyCWIEVjbGlwc2UgRGlzdHJpYnV0aW9uPC9iPiAtIDxhIGhyZWY9Imh0dHA6Ly93d3cueW94b3MuY29tIiB0YXJnZXQ9Il9ibGFuayI+aHR0cDovL3d3dy55b3hvcy5jb208L2E+IAogICAgICA8YnIgLz4KICAgICAgWW94b3MgaXMgYSBkaXN0cmlidXRpb24gb2YgdGhlIGxhdGVzdCBFY2xpcHNlIE1pbGVzdG9uZSBCdWlsZCBvciBSZWxlYXNlIAogICAgICBwbHVzIG92ZXIgMTIwIG9mIHRoZSBtb3N0IHBvcHVsYXIgb3Blbi1zb3VyY2UgcGx1Z2lucy4gQWxsIHRoZSBwbHVnaW5zIGFyZSAKICAgICAgdGVzdGVkIG9uIHRoZSBpbmNsdWRlZCB2ZXJzaW9uIG9mIEVjbGlwc2UgYW5kIGFuIGluc3RhbGwgbWFuYWdlciBlbmFibGVzIAogICAgICB0aGUgaW5zdGFsbGF0aW9uIG9mIEVjbGlwc2UgYW5kIHRoZSBvcHRpbWFsIG1peCBvZiBwbHVnaW5zIGFuZCBmZWF0dXJlcyAKICAgICAgd2l0aCBhIHNpbmdsZSBtb3VzZSBjbGljay4gV2l0aCBhIHN1YnNjcmlwdGlvbiwgZGV2ZWxvcGVycyBjYW4ga2VlcCB0aGVpciAKICAgICAgRWNsaXBzZSBlbnZpcm9ubWVudCBjdXJyZW50IHdpdGhvdXQgaW52ZXN0aW5nIGxvdHMgb2YgdGltZSBzZWFyY2hpbmcsIGRvd25sb2FkaW5nIAogICAgICBhbmQgdGVzdGluZyBhbGwgdGhlIHBsdWdpbnMuIFlveG9zIGlzIGFsc28gYXZhaWxhYmxlIGFzIGEgZnJlZSBDb21tdW5pdHkgCiAgICAgIEVkaXRpb24gaW5jbHVkaW5nIEVjbGlwc2UgYW5kIG92ZXIgNjAgcGx1Z2lucy4gPHAgYWxpZ249InJpZ2h0Ij48c21hbGw+PGEgaHJlZj0iI3RvcCI+Z28gdG8gdG9wPC9hPjwvc21hbGw+PC9wPjwvdGQ+CiAgPC90cj4gIAogICAgPHRyPiAKICAgIDx0ZCBhbGlnbj1SSUdIVCB2YWxpZ249VE9QIHdpZHRoPSIzJSI+PGltZyBzcmM9Ii4uL2ltYWdlcy9BZGFycm93LmdpZiIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBib3JkZXI9IjAiPjwvdGQ+CiAgICA8dGQgd2lkdGg9Ijk3JSI+IDxiPnplb3MgaW5mb3JtYXRpY3MgLSB6ZW4gUGxhdGZvcm08L2I+IC0gPGEgaHJlZj0iaHR0cDovL3d3dy56ZW9zLmRlL3Byb2R1Y3RzL3plbi90ZWNobmljYWwtZW4uaHRtbCIgdGFyZ2V0PSJfYmxhbmsiPmh0dHA6Ly93d3cuemVvcy5kZS9wcm9kdWN0cy96ZW4vdGVjaG5pY2FsLWVuLmh0bWw8L2E+IAogICAgICA8YnIgLz4KICAgICAgVGhlIHplbiBQbGF0Zm9ybSBpcyBhIG1vZGVsLWRyaXZlbiBkZXZlbG9wbWVudCBhbmQgcnVudGltZSBzeXN0ZW0gZm9yIHNvZnR3YXJlIAogICAgICBzb2x1dGlvbnMgaW4gSmF2YSBhbmQgSjJFRS4gRGV2ZWxvcG1lbnQgY2FuIGJlIGNhcnJpZWQgb3V0IGFsbW9zdCBleGNsdXNpdmVseSAKICAgICAgd2l0aCBwb2ludC1hbmQtY2xpY2sgdGVjaG5pcXVlcywgZW5hYmxpbmcgcmFwaWQgYXBwbGljYXRpb24gZGV2ZWxvcG1lbnQuIAogICAgICB6ZW4gUGxhdGZvcm0gYWNjb21wbGlzaGVzIHRoaXMgYnkgZW5jYXBzdWxhdGluZyB0aGUgdGVjaG5pY2FsIGludGVyZmFjZXMgCiAgICAgIG9mIHRoZSBKMkVFIHNwZWNpZmljYXRpb24gYW5kIG1ha2luZyB0aGVtIGF2YWlsYWJsZSBvbiBhIHNpbXBsaWZpZWQgYW5kIAogICAgICBmbGV4aWJsZSBhYnN0cmFjdGlvbiBsYXllci4gQXQgaXRzIGNvcmUgaXMgdGhlIHplbiBEZXZlbG9wZXIgZm9yIHRoZSBtb2RlbC1iYXNlZCAKICAgICAgZGV2ZWxvcG1lbnQgb2YgemVuIGFwcGxpY2F0aW9ucywgYSBkYXRhYmFzZS1iYXNlZCByZXBvc2l0b3J5IGZvciBzdG9yaW5nIAogICAgICBhcHBsaWNhdGlvbiBtb2RlbHMgYW5kIHRoZSB6ZW4gRW5naW5lIHJ1bnRpbWUgc3lzdGVtIHdoaWNoIGV4ZWN1dGVzIHRoZSAKICAgICAgYXBwbGljYXRpb24gbW9kZWxzLiA8YnIgLz48cCBhbGlnbj0icmlnaHQiPjxzbWFsbD48YSBocmVmPSIjdG9wIj5nbyB0byB0b3A8L2E+PC9zbWFsbD48YnIgLz48YnIgLz48L3A+PC90ZD4KICA8L3RyPiAgCiAgPC90YWJsZT4JCiAgICA8L2Rpdj4KICAJCTxkaXYgaWQ9InJpZ2h0Y29sdW1uIj4KCQk8ZGl2IGNsYXNzPSJzaWRlaXRlbSI+CgkJCTxoNj5SZWxhdGVkIExpbmtzPC9oNj4KCQkJPHVsPgoJCQkJPGxpPjxhIGhyZWY9InBsdWdpbnNpdGVzLnBocCI+Q29tbXVuaXR5IFBsdWctaW4gU2l0ZXM8L2E+PC9saT4KCQkJCTxsaT48YSBocmVmPSJjb21tZXJjaWFscGx1Z2lucy5waHAiPkNvbW1lcmNpYWwgUHJvamVjdHMgYW5kIFBsdWctaW5zPC9hPjwvbGk+CgkJCQk8bGk+PGEgaHJlZj0ib3NwbHVnaW5zLnBocCI+T3BlbiBTb3VyY2UgUHJvamVjdHMgYW5kIFBsdWctaW5zPC9hPjwvbGk+CgkJCQk8bGk+PGEgaHJlZj0idGVhbS5waHAiPlRlYW0gUmVwb3NpdG9yeSBwcm92aWRlcnM8L2E+PC9saT4KCQkJPC91bD4KCQk8L2Rpdj4KCQk8L2Rpdj4KICAKCgpFT0hUTUw7CgoKCSMgR2VuZXJhdGUgdGhlIHdlYiBwYWdlCgkkQXBwLT5nZW5lcmF0ZVBhZ2UoJHRoZW1lLCAkTWVudSwgJE5hdiwgJHBhZ2VBdXRob3IsICRwYWdlS2V5d29yZHMsICRwYWdlVGl0bGUsICRodG1sKTsKPz4K