PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iSVNPLTg4NTktMSI/Pgo8IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj48aGVhZD48bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIiAvPjxsaW5rIHJlbD0iU0hPUlRDVVQgSUNPTiIgaHJlZj0iL2Zhdmljb24uaWNvIiAvPjxzdHlsZSB0eXBlPSJ0ZXh0L2NzcyI+ClREIHtmb250LWZhbWlseTogVmVyZGFuYSxBcmlhbCxIZWx2ZXRpY2F9CkJPRFkge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYTsgbWFyZ2luLXRvcDogMmVtOyBtYXJnaW4tbGVmdDogMGVtOyBtYXJnaW4tcmlnaHQ6IDBlbX0KSDEge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KSDIge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KSDMge2ZvbnQtZmFtaWx5OiBWZXJkYW5hLEFyaWFsLEhlbHZldGljYX0KQTpsaW5rLCBBOnZpc2l0ZWQsIEE6YWN0aXZlIHsgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmUgfQo8L3N0eWxlPjx0aXRsZT5SZWxlYXNlczwvdGl0bGU+PC9oZWFkPjxib2R5IGJnY29sb3I9IiM4Yjc3NjUiIHRleHQ9IiMwMDAwMDAiIGxpbms9IiNhMDYwNjAiIHZsaW5rPSIjMDAwMDAwIj48dGFibGUgYm9yZGVyPSIwIiB3aWR0aD0iMTAwJSIgY2VsbHBhZGRpbmc9IjUiIGNlbGxzcGFjaW5nPSIwIiBhbGlnbj0iY2VudGVyIj48dHI+PHRkIHdpZHRoPSIxMjAiPjxhIGhyZWY9Imh0dHA6Ly9zd3BhdC5mZmlpLm9yZy8iPjxpbWcgc3JjPSJlcGF0ZW50cy5wbmciIGFsdD0iQWN0aW9uIGFnYWluc3Qgc29mdHdhcmUgcGF0ZW50cyIgLz48L2E+PC90ZD48dGQgd2lkdGg9IjE4MCI+PGEgaHJlZj0iaHR0cDovL3d3dy5nbm9tZS5vcmcvIj48aW1nIHNyYz0iZ25vbWUyLnBuZyIgYWx0PSJHbm9tZTIgTG9nbyIgLz48L2E+PGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvU3RhdHVzIj48aW1nIHNyYz0idzNjLnBuZyIgYWx0PSJXM0MgTG9nbyIgLz48L2E+PGEgaHJlZj0iaHR0cDovL3d3dy5yZWRoYXQuY29tLyI+PGltZyBzcmM9InJlZGhhdC5naWYiIGFsdD0iUmVkIEhhdCBMb2dvIiAvPjwvYT48ZGl2IGFsaWduPSJsZWZ0Ij48YSBocmVmPSJodHRwOi8veG1sc29mdC5vcmcvIj48aW1nIHNyYz0iTGlieG1sMi1Mb2dvLTE4MHgxNjguZ2lmIiBhbHQ9Ik1hZGUgd2l0aCBMaWJ4bWwyIExvZ28iIC8+PC9hPjwvZGl2PjwvdGQ+PHRkPjx0YWJsZSBib3JkZXI9IjAiIHdpZHRoPSI5MCUiIGNlbGxwYWRkaW5nPSIyIiBjZWxsc3BhY2luZz0iMCIgYWxpZ249ImNlbnRlciIgYmdjb2xvcj0iIzAwMDAwMCI+PHRyPjx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIzIiBiZ2NvbG9yPSIjZmZmYWNkIj48dHI+PHRkIGFsaWduPSJjZW50ZXIiPjxoMT5UaGUgWE1MIEMgcGFyc2VyIGFuZCB0b29sa2l0IG9mIEdub21lPC9oMT48aDI+UmVsZWFzZXM8L2gyPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSI0IiBjZWxsc3BhY2luZz0iMCIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPjx0cj48dGQgYmdjb2xvcj0iIzhiNzc2NSI+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIyIiB3aWR0aD0iMTAwJSI+PHRyPjx0ZCB2YWxpZ249InRvcCIgd2lkdGg9IjIwMCIgYmdjb2xvcj0iIzhiNzc2NSI+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjAiIGNlbGxwYWRkaW5nPSIxIiB3aWR0aD0iMTAwJSIgYmdjb2xvcj0iIzAwMDAwMCI+PHRyPjx0ZD48dGFibGUgd2lkdGg9IjEwMCUiIGJvcmRlcj0iMCIgY2VsbHNwYWNpbmc9IjEiIGNlbGxwYWRkaW5nPSIzIj48dHI+PHRkIGNvbHNwYW49IjEiIGJnY29sb3I9IiNlZWNmYTEiIGFsaWduPSJjZW50ZXIiPjxjZW50ZXI+PGI+TWFpbiBNZW51PC9iPjwvY2VudGVyPjwvdGQ+PC90cj48dHI+PHRkIGJnY29sb3I9IiNmZmZhY2QiPjxmb3JtIGFjdGlvbj0ic2VhcmNoLnBocCIgZW5jdHlwZT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiBtZXRob2Q9ImdldCI+PGlucHV0IG5hbWU9InF1ZXJ5IiB0eXBlPSJ0ZXh0IiBzaXplPSIyMCIgdmFsdWU9IiIgLz48aW5wdXQgbmFtZT0ic3VibWl0IiB0eXBlPSJzdWJtaXQiIHZhbHVlPSJTZWFyY2ggLi4uIiAvPjwvZm9ybT48dWw+PGxpPjxhIGhyZWY9ImluZGV4Lmh0bWwiPkhvbWU8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3htbHNvZnQub3JnL3dpa2kiPldpa2k8L2E+PC9saT48bGk+PGEgaHJlZj0iaHRtbC9pbmRleC5odG1sIj5SZWZlcmVuY2UgTWFudWFsPC9hPjwvbGk+PGxpPjxhIGhyZWY9ImludHJvLmh0bWwiPkludHJvZHVjdGlvbjwvYT48L2xpPjxsaT48YSBocmVmPSJGQVEuaHRtbCI+RkFRPC9hPjwvbGk+PGxpPjxhIGhyZWY9ImRvY3MuaHRtbCIgc3R5bGU9ImZvbnQtd2VpZ2h0OmJvbGQiPkRldmVsb3BlciBNZW51PC9hPjwvbGk+PGxpPjxhIGhyZWY9ImJ1Z3MuaHRtbCI+UmVwb3J0aW5nIGJ1Z3MgYW5kIGdldHRpbmcgaGVscDwvYT48L2xpPjxsaT48YSBocmVmPSJoZWxwLmh0bWwiPkhvdyB0byBoZWxwPC9hPjwvbGk+PGxpPjxhIGhyZWY9ImRvd25sb2Fkcy5odG1sIj5Eb3dubG9hZHM8L2E+PC9saT48bGk+PGEgaHJlZj0ibmV3cy5odG1sIj5SZWxlYXNlczwvYT48L2xpPjxsaT48YSBocmVmPSJYTUxpbmZvLmh0bWwiPlhNTDwvYT48L2xpPjxsaT48YSBocmVmPSJYU0xULmh0bWwiPlhTTFQ8L2E+PC9saT48bGk+PGEgaHJlZj0ieG1sZHRkLmh0bWwiPlZhbGlkYXRpb24gJmFtcDsgRFREczwvYT48L2xpPjxsaT48YSBocmVmPSJlbmNvZGluZy5odG1sIj5FbmNvZGluZ3Mgc3VwcG9ydDwvYT48L2xpPjxsaT48YSBocmVmPSJjYXRhbG9nLmh0bWwiPkNhdGFsb2cgc3VwcG9ydDwvYT48L2xpPjxsaT48YSBocmVmPSJuYW1lc3BhY2VzLmh0bWwiPk5hbWVzcGFjZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iY29udHJpYnMuaHRtbCI+Q29udHJpYnV0aW9uczwvYT48L2xpPjxsaT48YSBocmVmPSJleGFtcGxlcy9pbmRleC5odG1sIiBzdHlsZT0iZm9udC13ZWlnaHQ6Ym9sZCI+Q29kZSBFeGFtcGxlczwvYT48L2xpPjxsaT48YSBocmVmPSJodG1sL2luZGV4Lmh0bWwiIHN0eWxlPSJmb250LXdlaWdodDpib2xkIj5BUEkgTWVudTwvYT48L2xpPjxsaT48YSBocmVmPSJndWlkZWxpbmVzLmh0bWwiPlhNTCBHdWlkZWxpbmVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9IkNoYW5nZUxvZy5odG1sIj5SZWNlbnQgQ2hhbmdlczwvYT48L2xpPjwvdWw+PC90ZD48L3RyPjwvdGFibGU+PHRhYmxlIHdpZHRoPSIxMDAlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIxIiBjZWxscGFkZGluZz0iMyI+PHRyPjx0ZCBjb2xzcGFuPSIxIiBiZ2NvbG9yPSIjZWVjZmExIiBhbGlnbj0iY2VudGVyIj48Y2VudGVyPjxiPlJlbGF0ZWQgbGlua3M8L2I+PC9jZW50ZXI+PC90ZD48L3RyPjx0cj48dGQgYmdjb2xvcj0iI2ZmZmFjZCI+PHVsPjxsaT48YSBocmVmPSJodHRwOi8vbWFpbC5nbm9tZS5vcmcvYXJjaGl2ZXMveG1sLyI+TWFpbCBhcmNoaXZlPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly94bWxzb2Z0Lm9yZy9YU0xULyI+WFNMVCBsaWJ4c2x0PC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9waGQuY3MudW5pYm8uaXQvZ2RvbWUyLyI+RE9NIGdkb21lMjwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYy8iPlhNTC1EU2lnIHhtbHNlYzwvYT48L2xpPjxsaT48YSBocmVmPSJmdHA6Ly94bWxzb2Z0Lm9yZy8iPkZUUDwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LnpsYXRrb3ZpYy5jb20vcHJvamVjdHMvbGlieG1sLyI+V2luZG93cyBiaW5hcmllczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vd3d3LmJsYXN0d2F2ZS5vcmcvcGFja2FnZXMucGhwL2xpYnhtbDIiPlNvbGFyaXMgYmluYXJpZXM8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy5leHBsYWluLmNvbS5hdS9vc3MvbGlieG1sMnhzbHQuaHRtbCI+TWFjT3NYIGJpbmFyaWVzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9saWJ4bWxwbHVzcGx1cy5zb3VyY2Vmb3JnZS5uZXQvIj5DKysgYmluZGluZ3M8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3d3dy56ZW5kLmNvbS9waHA1L2FydGljbGVzL3BocDUteG1scGhwLnBocCNIZWFkaW5nNCI+UEhQIGJpbmRpbmdzPC9hPjwvbGk+PGxpPjxhIGhyZWY9Imh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlieG1sMi1wYXMvIj5QYXNjYWwgYmluZGluZ3M8L2E+PC9saT48bGk+PGEgaHJlZj0iaHR0cDovL3J1Ynlmb3JnZS5vcmcvcHJvamVjdHMveG1sLXRvb2xzLyI+UnVieSBiaW5kaW5nczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vdGNseG1sLnNvdXJjZWZvcmdlLm5ldC8iPlRjbCBiaW5kaW5nczwvYT48L2xpPjxsaT48YSBocmVmPSJodHRwOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9bGlieG1sMiI+QnVnIFRyYWNrZXI8L2E+PC9saT48L3VsPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PC90cj48L3RhYmxlPjwvdGQ+PHRkIHZhbGlnbj0idG9wIiBiZ2NvbG9yPSIjOGI3NzY1Ij48dGFibGUgYm9yZGVyPSIwIiBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjEiIHdpZHRoPSIxMDAlIj48dHI+PHRkPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMSIgd2lkdGg9IjEwMCUiIGJnY29sb3I9IiMwMDAwMDAiPjx0cj48dGQ+PHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIxIiB3aWR0aD0iMTAwJSI+PHRyPjx0ZCBiZ2NvbG9yPSIjZmZmYWNkIj48cD5JdGVtcyBub3QgZmluaXNoZWQgYW5kIHdvcmtlZCBvbiwgZ2V0IGluIHRvdWNoIHdpdGggdGhlIGxpc3QgaWYgeW91IHdhbnQKdG8gaGVscCB0aG9zZTwvcD48dWw+PGxpPk1vcmUgdGVzdGluZyBvbiBSZWxheE5HPC9saT4KICA8bGk+RmluaXNoaW5nIHVwIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3htbHNjaGVtYS0xLyI+WE1MCiAgU2NoZW1hczwvYT48L2xpPgo8L3VsPjxwPlRoZSA8YSBocmVmPSJDaGFuZ2VMb2cuaHRtbCI+Y2hhbmdlIGxvZzwvYT4gZGVzY3JpYmVzIHRoZSByZWNlbnRzIGNvbW1pdHMKdG8gdGhlIDxhIGhyZWY9Imh0dHA6Ly9jdnMuZ25vbWUub3JnL3ZpZXdjdnMvbGlieG1sMi8iPkNWUzwvYT4gY29kZSBiYXNlLjwvcD48cD5UaGVyZSBpcyB0aGUgbGlzdCBvZiBwdWJsaWMgcmVsZWFzZXM6PC9wPjxoMz4yLjYuMTk6IEFwciAwMiAyMDA1PC9oMz48dWw+PGxpPiBidWlsZCBmaXhlczogZHJvcCAubGEgZnJvbSBSUE1zLCAtLXdpdGgtbWluaW11bSBidWlsZCBmaXggKFdpbGxpYW0KICAgICAgIEJyYWNrKSwgdXNlIFhNTF9TT0NLTEVOX1QgaW5zdGVhZCBvZiBTT0NLTEVOX1QgYmVjYXVzZSBpdCBicmVha3Mgd2l0aAogICAgICAgQUlYIDUuMyBjb21waWxlciwgZml4ZWQgZWxmZ2NjaGFjay5oIGdlbmVyYXRpb24gYW5kIFBMVCByZWR1Y3Rpb24KICAgICAgIGNvZGUgb24gTGludXgvRUxGL2djYzQ8L2xpPgogIDxsaT4gYnVnIGZpeGVzOiBzY2hlbWFzIHR5cGUgZGVjaW1hbCBmaXh1cHMgKFdpbGxpYW0gQnJhY2spLCB4bW1saW50IHJldHVybgogICAgICAgY29kZSAoR2VycnkgTXVycGh5KSwgc21hbGwgc2NoZW1hcyBmaXhlcyAoTWF0dGhldyBCdXJnZXNzIGFuZAogICAgICAgR1VZIEZhYnJpY2UpLCB3b3JrYXJvdW5kICJEQVY6IiBuYW1lc3BhY2UgYnJva2VuZXNzIGluIGMxNG4gKEFsZWtzZXkKICAgICAgIFNhbmluKSwgc2VnZmF1bHQgaW4gU2NoZW1hcyAoS2FzaW1pZXIgQnVjaGNpayksIFNjaGVtYXMgYXR0cmlidXRlCiAgICAgICB2YWxpZGF0aW9uIChLYXNpbWllciksIFByb3AgcmVsYXRlZCBmdW5jdGlvbnMgYW5kIHhtbE5ld05vZGVFYXROYW1lCiAgICAgICAoUm9iIFJpY2hhcmRzKSwgSFRNTCBzZXJpYWxpemF0aW9uIG9mIG5hbWUgYXR0cmlidXRlIG9uIGEgZWxlbWVudHMsCiAgICAgICBQeXRob24gZXJyb3IgaGFuZGxlcnMgbGVha3MgYW5kIGltcHJvdmVtZW50IChCcmVudCBIZW5kcmlja3MpLCAKICAgICAgIHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgaW4gZW5jb2RpbmcgY29kZSwgUmVsYXgtTkcgdmFsaWRhdGlvbiBidWcsCiAgICAgICBwb3RlbnRpYWwgY3Jhc2ggaWYgZ25vcmFibGVXaGl0ZXNwYWNlIGlzIE5VTEwsIHhtbFNBWFBhcnNlRG9jIGFuZAogICAgICAgeG1sUGFyc2VEb2Mgc2lnbmF0dXJlcywgc3dpdGNoZWQgYmFjayB0byBhc3N1bWluZyBVVEYtOCBpbiBjYXNlIAogICAgICAgbm8gZW5jb2RpbmcgaXMgZ2l2ZW4gYXQgc2VyaWFsaXphdGlvbiB0aW1lPC9saT4KICA8bGk+IGltcHJvdmVtZW50czogbG90IG9mIHdvcmsgb24gU2NoZW1hcyBieSBLYXNpbWllciBCdWNoY2lrIG9uIGZhY2V0cwogICAgICAgY2hlY2tpbmcgYW5kIGFsc28gbWl4ZWQgaGFuZGxpbmcuPC9saT4KICA8bGk+PC9saT4KPC91bD48aDM+Mi42LjE4OiBNYXIgMTMgMjAwNTwvaDM+PHVsPjxsaT4gYnVpbGQgZml4ZXM6IHdhcm5pbmdzIChQZXRlciBCcmVpdGVubG9obmVyKSwgdGVzdGFwaS5jIGdlbmVyYXRpb24sIAogICAgICAgQmFrZWZpbGUgc3VwcG9ydCAoRnJhbmNlc2NvIE1vbnRvcnNpKSwgV2luZG93cyBjb21waWxhdGlvbiAoSm9lbCBSZWVkKSwKICAgICAgIHNvbWUgZ2NjNCBmaXhlcywgSFAtVVggcG9ydGFiaWxpdHkgZml4ZXMgKFJpY2sgSm9uZXMpLjwvbGk+CiAgPGxpPiBidWcgZml4ZXM6IHhtbFNjaGVtYUVsZW1lbnREdW1wIG5hbWVzcGFjZSAoS2FzaW1pZXIgQnVjaGNpayksIHB1c2ggYW5kCiAgICAgICB4bWxyZWFkZXIgc3RvcHBpbmcgb24gbm9uLWZhdGFsIGVycm9ycywgdGhyZWFkIHN1cHBvcnQgZm9yIGRpY3Rpb25uYXJpZXMKICAgICAgIHJlZmVyZW5jZSBjb3VudGluZyAoR2FyeSBDb2FkeSksIGludGVybmFsIHN1YnNldCBhbmQgcHVzaCBwcm9ibGVtLCAKICAgICAgIFVSTCBzYXZlZCBpbiB4bWxDb3B5RG9jLCB2YXJpb3VzIHNjaGVtYXMgYnVnIGZpeGVzIChLYXNpbWllciksIFB5dGhvbgogICAgICAgcGF0aHMgZml4dXAgKFN0ZXBoYW5lIEJpZG91bCksIHhtbEdldE5vZGVQYXRoIGFuZCBuYW1lc3BhY2VzLCAKICAgICAgIHhtbFNldE5zUHJvcCBmaXggKE1pa2UgSG9tbWV5KSwgd2FybmluZyBzaG91bGQgbm90IGNvdW50IGFzIGVycm9yCiAgICAgICAoV2lsbGlhbSBCcmFjayksIHhtbENyZWF0ZVB1c2hQYXJzZXIgZW1wdHkgY2h1bmssIFhJbmNsdWRlIHBhcnNlcgogICAgICAgZmxhZ3MgKFdpbGxpYW0pLCBjbGVhbnVwIEZUUCBhbmQgSFRUUCBjb2RlIHRvIHJldXNlIHRoZSB1cmkgcGFyc2luZwogICAgICAgYW5kIElQdjYgKFdpbGxpYW0pLCB4bWxUZXh0V3JpdGVyU3RhcnRBdHRyaWJ1dGVOUyBmaXggKFJvYiBSaWNoYXJkcyksCiAgICAgICBYTUxMSU5UX0lOREVOVCBiZWluZyBlbXB0eSAoV2lsbGlhbSksIHhtbFdyaXRlciBidWdzIChSb2IgUmljaGFyZHMpLAogICAgICAgbXVsdGl0aHJlYWRpbmcgb24gV2luZG93cyAoUmljaCBTYWx6KSwgeG1sU2VhcmNoTnNCeUhyZWYgZml4IChLYXNpbWllciksCiAgICAgICBQeXRob24gYmluZGluZyBsZWFrIChCcmVudCBIZW5kcmlja3MpLCBhbGlhc2luZyBidWcgZXhwb3NlZCBieSBnY2M0CiAgICAgICBvbiBzMzkwLCB4bWxUZXh0UmVhZGVyTmV4dCBidWcgKFJvYiBSaWNoYXJkcyksIFNjaGVtYXMgZGVjaW1hbCB0eXBlCiAgICAgICBmaXhlcyAoV2lsbGlhbSBCcmFjayksIHhtbEJ5dGVDb25zdW1lZCBzdGF0aWMgYnVmZmVyIChCZW4gTWF1cmVyKS48L2xpPgogIDxsaT4gaW1wcm92ZW1lbnQ6IHNwZWVkdXAgcGFyc2luZyBjb21tZW50cyBhbmQgRFREcywgZGljdGlvbm5hcnkgc3VwcG9ydCBmb3IKICAgICAgIGhhc2ggdGFibGVzLCBTY2hlbWFzIElkZW50aXR5IGNvbnN0cmFpbnRzIChLYXNpbWllciksIHN0cmVhbWluZyBYUGF0aAogICAgICAgc3Vic2V0LCB4bWxUZXh0UmVhZGVyUmVhZFN0cmluZyBhZGRlZCAoQmpvcm4gUmVlc2UpLCBTY2hlbWFzIGNhbm9uaWNhbAogICAgICAgdmFsdWVzIGhhbmRsaW5nIChLYXNpbWllciksIGFkZCB4bWxUZXh0UmVhZGVyQnl0ZUNvbnN1bWVkIChBcm9uCiAgICAgICBTdGFuc3ZpayksIDwvbGk+CiAgPGxpPiBEb2N1bWVudGF0aW9uOiBXaWtpIHN1cHBvcnQgKEpvZWwgUmVlZCkKPC9saT48L3VsPjxoMz4yLjYuMTc6IEphbiAxNiAyMDA1PC9oMz48dWw+PGxpPmJ1aWxkIGZpeGVzOiBXaW5kb3dzLCB3YXJuaW5ncyByZW1vdmFsIChXaWxsaWFtIEJyYWNrKSwgCiAgICAgIG1haW50YWluZXItY2xlYW4gZGVwZW5kZW5jeShXaWxsaWFtKSwgYnVpbGQgaW4gYSBkaWZmZXJlbnQgZGlyZWN0b3J5CiAgICAgIChXaWxsaWFtKSwgZml4aW5nIC0td2l0aC1taW5pbXVtIGNvbmZpZ3VyZSBidWlsZCAoV2lsbGlhbSksIEJlT1MKICAgICAgYnVpbGQgKE1hcmNpbiBLb25pY2tpKSwgUHl0aG9uLTIuNCBkZXRlY3Rpb24gKFdpbGxpYW0pLCBjb21waWxhdGlvbgogICAgICBvbiBBSVggKERhbiBNY05pY2hvbCk8L2xpPgogIDxsaT5idWcgZml4ZXM6IHhtbFRleHRSZWFkZXJIYXNBdHRyaWJ1dGVzIChSb2IgUmljaGFyZHMpLCB4bWxDdHh0UmVhZEZpbGUoKQogICAgICB0byB1c2UgdGhlIGNhdGFsb2cocyksIGxvb3Agb24gb3V0cHV0IChXaWxsaWFtIEJyYWNrKSwgWFBhdGggbWVtb3J5IGxlYWssCiAgICAgIElEIGRlYWxsb2NhdGlvbiBwcm9ibGVtIChTdGV2ZSBTaGVwYXJkKSwgZGVidWdEdW1wTm9kZSBjcmFzaCAoV2lsbGlhbSksCiAgICAgIHdhcm5pbmcgbm90IHVzaW5nIGVycm9yIGNhbGxiYWNrIChXaWxsaWFtKSwgeG1sU3RvcFBhcnNlciBidWcgKFdpbGxpYW0pLAogICAgICBVVEYtMTYgd2l0aCBCT00gb24gRFREcyAoV2lsbGlhbSksIG5hbWVzcGFjZSBidWcgb24gZW1wdHkgZWxlbWVudHMKICAgICAgaW4gcHVzaCBtb2RlIChSb2IgUmljaGFyZHMpLCBsaW5lIGFuZCBjb2wgY29tcHV0YXRpb25zIGZpeHVwcyAoQWxla3NleQogICAgICBTYW5pbiksIHhtbFVSSUVzY2FwZSBmaXggKFdpbGxpYW0pLCB4bWxYUGF0aEVyciBvbiBiYWQgcmFuZ2UgKFdpbGxpYW0pLAogICAgICBwYXR0ZXJucyB3aXRoIHRvbyBtYW55IHN0ZXBzLCBidWcgaW4gUk5HIGNob2ljZSBvcHRpbWl6YXRpb24sIGxpbmUKICAgICAgbnVtYmVyIHNvbWV0aW1lcyBtaXNzaW5nLgogICAgICA8L2xpPgogIDxsaT5pbXByb3ZlbWVudHM6IFhTRCBTY2hlbWFzIChLYXNpbWllciBCdWNoY2lrKSwgcHl0aG9uIGdlbmVyYXRvciAoV2lsbGlhbSksCiAgICAgIHhtbFVURjhTdHJwb3Mgc3BlZWR1cCAoV2lsbGlhbSksIHVuaWNvZGUgUHl0aG9uIHN0cmluZ3MgKFdpbGxpYW0pLAogICAgICBYU0QgZXJyb3IgcmVwb3J0cyAoS2FzaW1pZXIgQnVjaGNpayksIFB5dGhvbiBfX3N0cl9fIGNhbGwgc2VyaWFsaXplKCkuCiAgICAgIDwvbGk+CiAgPGxpPm5ldyBBUElzOiBhZGRlZCB4bWxEaWN0RXhpc3RzKCksIEdldExpbmVOdW1iZXIgYW5kIEdldENvbHVtbk51bWJlcgogICAgICBmb3IgdGhlIHhtbFJlYWRlciAoQWxla3NleSBTYW5pbiksIER5bmFtaWMgU2hhcmVkIExpYnJhcmllcyBBUElzCiAgICAgIChtb3N0bHkgSm9lbCBSZWVkKSwgZXJyb3IgZXh0cmFjdGlvbiBBUEkgZnJvbSByZWdleHBzLCBuZXcgWE1MU2F2ZQogICAgICBvcHRpb24gZm9yIGZvcm1hdCAoUGhpbCBTaGFmZXIpPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbjogc2l0ZSBpbXByb3ZlbWVudCAoSm9obiBGbGVjayksIEZBUSBlbnRyaWVzIChXaWxsaWFtKS48L2xpPgo8L3VsPjxoMz4yLjYuMTY6IE5vdiAxMCAyMDA0PC9oMz48dWw+PGxpPmdlbmVyYWwgaGFyZGVuaW5nIGFuZCBidWcgZml4aW5nIGNyb3NzaW5nIGFsbCB0aGUgQVBJIGJhc2VkIG9uIG5ldwogICAgYXV0b21hdGVkIHJlZ3Jlc3Npb24gdGVzdGluZzwvbGk+CiAgPGxpPmJ1aWxkIGZpeDogSVB2NiBidWlsZCBhbmQgdGVzdCBvbiBBSVggKERvZGppIFNla2V0ZWxpKTwvbGk+CiAgPGxpPmJ1ZyBmaXhlczogcHJvYmxlbSB3aXRoIFhNTDo6TGlieG1sIHJlcG9ydGVkIGJ5IFBldHIgUGFqYXMsICBlbmNvZGluZwogICAgY29udmVyc2lvbiBmdW5jdGlvbnMgcmV0dXJuIHZhbHVlcywgVVRGLTggYnVnIGFmZmVjdGluZyBYUGF0aCByZXBvcnRlZCBieQogICAgTWFya3VzIEJlcnRoZWF1LCBjYXRhbG9nIHByb2JsZW0gd2l0aCBOVUxMIGVudHJpZXMgKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbjogZml4IHRvIHhtbGxpbnQgbWFuIHBhZ2UsIHNvbWUgQVBJIGZ1bmN0aW9uIGRlc2NyaXRwaW9uCiAgICB3ZXJlIHVwZGF0ZWQuPC9saT4KICA8bGk+aW1wcm92ZW1lbnRzOiBEVEQgdmFsaWRhdGlvbiBBUElzIHByb3ZpZGVkIGF0IHRoZSBQeXRob24gbGV2ZWwgKEJyZW50CiAgICBIZW5kcmlja3MpIDwvbGk+CjwvdWw+PGgzPjIuNi4xNTogT2N0IDI3IDIwMDQ8L2gzPjx1bD48bGk+c2VjdXJpdHkgZml4ZXMgb24gdGhlIG5hbm9mdHAgYW5kIG5hbm9odHRwIG1vZHVsZXM8L2xpPgogIDxsaT5idWlsZCBmaXhlczogeG1sbGludCBkZXRlY3Rpb24gYnVnIGluIGNvbmZpZ3VyZSwgYnVpbGRpbmcgb3V0c2lkZSB0aGUKICAgIHNvdXJjZSB0cmVlIChUaG9tYXMgRml0enNpbW1vbnMpPC9saT4KICA8bGk+YnVnIGZpeGVzOiBIVE1MIHBhcnNlciBvbiBicm9rZW4gQVNDSUkgY2hhcnMgaW4gbmFtZXMgKFdpbGxpYW0pLCBQeXRob24KICAgIHBhdGhzIChNYWxjb2xtIFRyZWRpbm5pY2spLCB4bWxIYXNOc1Byb3AgYW5kIGRlZmF1bHQgbmFtZXNwYWNlIChXaWxsaWFtKSwKICAgIHNhdmluZyB0byBweXRob24gZmlsZSBvYmplY3RzIChNYWxjb2xtIFRyZWRpbm5pY2spLCBEVEQgbG9va3VwIGZpeAogICAgKE1hbGNvbG0pLCBzYXZlIGJhY2sgJmx0O2dyb3VwJmd0OyBpbiBjYXRhbG9ncyAoV2lsbGlhbSksIHRyZWUgYnVpbGQKICAgIGZpeGVzIChEViBhbmQgUm9iIFJpY2hhcmRzKSwgU2NoZW1hcyBtZW1vcnkgYnVnLCBzdHJ1Y3R1cmVkIGVycm9yIGhhbmRsZXIKICAgIG9uIFB5dGhvbiA2NGJpdHMsIHRocmVhZCBsb2NhbCBtZW1vcnkgZGVhbGxvY2F0aW9uLCBtZW1vcnkgbGVhayByZXBvcnRlZAogICAgYnkgVm9sa2VyIFJvdGgsIHhtbFZhbGlkYXRlRHRkIGluIHRoZSBwcmVzZW5jZSBvZiBhbiBpbnRlcm5hbCBzdWJzZXQsCiAgICBlbnRpdGllcyBhbmQgX3ByaXZhdGUgcHJvYmxlbSAoV2lsbGlhbSksIHhtbEJ1aWxkUmVsYXRpdmVVUkkgZXJyb3IKICAgIChXaWxsaWFtKS48L2xpPgogIDxsaT5pbXByb3ZlbWVudHM6IGJldHRlciBYSW5jbHVkZSBlcnJvciByZXBvcnRzIChXaWxsaWFtKSwgdHJlZSBkZWJ1Z2dpbmcKICAgIG1vZHVsZSBhbmQgdGVzdHMsIGNvbnZlbmllbmNlIGZ1bmN0aW9ucyBhdCB0aGUgUmVhZGVyIEFQSSAoR3JhaGFtCiAgICBCZW5uZXR0KSwgYWRkIHN1cHBvcnQgZm9yIFBJIGluIHRoZSBIVE1MIHBhcnNlci48L2xpPgo8L3VsPjxoMz4yLjYuMTQ6IFNlcCAyOSAyMDA0PC9oMz48dWw+PGxpPmJ1aWxkIGZpeGVzOiBjb25maWd1cmUgcGF0aHMgZm9yIHhtbGxpbnQgYW5kIHhzbHRwcm9jLCBjb21waWxhdGlvbgogICAgd2l0aG91dCBIVE1MIHBhcnNlciwgY29tcGlsYXRpb24gd2FybmluZyBjbGVhbnVwcyAoV2lsbGlhbSBCcmFjayAmYW1wOwogICAgTWFsY29sbSBUcmVkaW5uaWNrKSwgVk1TIG1ha2VmaWxlIHVwZGF0ZSAoQ3JhaWcgQmVycnkpLDwvbGk+CiAgPGxpPmJ1ZyBmaXhlczogeG1sR2V0VVRGOENoYXIgKFdpbGxpYW0gQnJhY2spLCBRTmFtZSBwcm9wZXJ0aWVzIChLYXNpbWllcgogICAgQnVjaGNpayksIFhJbmNsdWRlIHRlc3RpbmcsIE5vdGF0aW9uIHNlcmlhbGl6YXRpb24sIFVURjhUb0lTTzg4NTl4CiAgICB0cmFuc2NvZGluZyAoTWFyayBJdHpjb3ZpdHopLCBsb3RzIG9mIFhNTCBTY2hlbWFzIGNsZWFudXAgYW5kIGZpeGVzCiAgICAoS2FzaW1pZXIpLCBDaGFuZ2VMb2cgY2xlYW51cCAoU3RlcGFuIEthc2FsKSwgbWVtb3J5IGZpeGVzIChNYXJrIFZha29jKSwKICAgIGhhbmRsaW5nIG9mIGZhaWxlZCByZWFsbG9jKCksIG91dCBvZiBib3VuZCBhcnJheSBhZHJlc3NpbmcgaW4gU2NoZW1hcwogICAgZGF0ZSBoYW5kbGluZywgUHl0aG9uIHNwYWNlL3RhYnMgY2xlYW51cHMgKE1hbGNvbG0gVHJlZGlubmljayksIE5NVE9LRU5TCiAgICBFMjAgdmFsaWRhdGlvbiBmaXggKE1hbGNvbG0pLDwvbGk+CiAgPGxpPmltcHJvdmVtZW50czogYWRkZWQgVzNDIFhNTCBTY2hlbWFzIHRlc3RzdWl0ZSAoS2FzaW1pZXIgQnVjaGNpayksIGFkZAogICAgeG1sU2NoZW1hVmFsaWRhdGVPbmVFbGVtZW50IChLYXNpbWllciksIFB5dGhvbiBleGNlcHRpb24gaGllcmVhcmNoeQogICAgKE1hbGNvbG0gVHJlZGlubmljayksIFB5dGhvbiBsaWJ4bWwyIGRyaXZlciBpbXByb3ZlbWVudCAoTWFsY29sbQogICAgVHJlZGlubmljayksIFNjaGVtYXMgc3VwcG9ydCBmb3IgeHNpOnNjaGVtYUxvY2F0aW9uLAogICAgeHNpOm5vTmFtZXNwYWNlU2NoZW1hTG9jYXRpb24sIHhzaTp0eXBlIChLYXNpbWllciBCdWNoY2lrKTwvbGk+CjwvdWw+PGgzPjIuNi4xMzogQXVnIDMxIDIwMDQ8L2gzPjx1bD48bGk+YnVpbGQgZml4ZXM6IFdpbmRvd3MgYW5kIHpsaWIgKElnb3IgWmxhdGtvdmljKSwgLU8gZmxhZyB3aXRoIGdjYywKICAgIFNvbGFyaXMgY29tcGlsZXIgd2FybmluZywgZml4aW5nIFJQTSBCdWlsZFJlcXVpcmVzLDwvbGk+CiAgPGxpPmZpeGVzOiBEVEQgbG9hZGluZyBvbiBXaW5kb3dzIChJZ29yKSwgU2NoZW1hcyBlcnJvciByZXBvcnRzIEFQSXMKICAgIChLYXNpbWllciBCdWNoY2lrKSwgU2NoZW1hcyB2YWxpZGF0aW9uIGNyYXNoLCB4bWxDaGVja1VURjggKFdpbGxpYW0gQnJhY2sKICAgIGFuZCBKdWxpdXMgTWl0dGVuendlaSksIFNjaGVtYXMgZmFjZXQgY2hlY2sgKEthc2ltaWVyKSwgZGVmYXVsdCBuYW1lc3BhY2UKICAgIHByb2JsZW0gKFdpbGxpYW0pLCBTY2hlbWFzIGhleGJpbmFyeSBlbXB0eSB2YWx1ZXMsIGVuY29kaW5nIGVycm9yIGNvdWxkCiAgICBnZW5yYXRlIGEgc2VyaWFsaXphdGlvbiBsb29wLjwvbGk+CiAgPGxpPkltcHJvdmVtZW50czogU2NoZW1hcyB2YWxpZGl0eSBpbXByb3ZlbWVudHMgKEthc2ltaWVyKSwgYWRkZWQgLS1wYXRoCiAgICBhbmQgLS1sb2FkLXRyYWNlIG9wdGlvbnMgdG8geG1sbGludDwvbGk+CiAgPGxpPmRvY3VtZW50YXRpb246IHR1dG9yaWFsIHVwZGF0ZSAoSm9obiBGbGVjayk8L2xpPgo8L3VsPjxoMz4yLjYuMTI6IEF1ZyAyMiAyMDA0PC9oMz48dWw+PGxpPmJ1aWxkIGZpeGVzOiBmaXggLS13aXRoLW1pbmltdW0sIGVsZmdjY2hhY2suaCBmaXhlcyAoUGV0ZXIKICAgIEJyZWl0ZW5sb2huZXIpLCBwZXJsIHBhdGggbG9va3VwIChXaWxsaWFtKSwgZGlmZiBvbiBTb2xhcmlzIChBbGJlcnQKICAgIENoaW4pLCBzb21lIDY0Yml0cyBjbGVhbnVwcy48L2xpPgogIDxsaT5QeXRob246IGF2b2lkIGEgd2FybmluZyB3aXRoIDIuMyAoV2lsbGlhbSBCcmFjayksIHRhYiBhbmQgc3BhY2UgbWl4ZXMKICAgIChXaWxsaWFtKSwgd3JhcHBlciBnZW5lcmF0b3IgZml4ZXMgKFdpbGxpYW0pLCBDeWd3aW4gc3VwcG9ydCAoR2Vycml0IFAuCiAgICBIYWFzZSksIG5vZGUgd3JhcHBlciBmaXggKE1hcmMtQW50b2luZSBQYXJlbnQpLCBYTUwgU2NoZW1hcyBzdXBwb3J0CiAgICAoVG9ya2VsIEx5bmcpPC9saT4KICA8bGk+U2NoZW1hczogYSBsb3Qgb2YgYnVnIGZpeGVzIGFuZCBpbXByb3ZlbWVudHMgZnJvbSBLYXNpbWllciBCdWNoY2lrPC9saT4KICA8bGk+Zml4ZXM6IFJWVCBmaXhlcyAoV2lsbGlhbSksIFhQYXRoIGNvbnRleHQgcmVzZXRzIGJ1ZyAoV2lsbGlhbSksIG1lbW9yeQogICAgZGVidWcgKFN0ZXZlIEhheSksIGNhdGFsb2cgd2hpdGUgc3BhY2UgaGFuZGxpbmcgKFBldGVyIEJyZWl0ZW5sb2huZXIpLAogICAgeG1sUmVhZGVyIHN0YXRlIGFmdGVyIGF0dHJpYnV0ZSByZWFkaW5nIChXaWxsaWFtKSwgc3RydWN0dXJlZCBlcnJvcgogICAgaGFuZGxlciAoV2lsbGlhbSksIFhJbmNsdWRlIGdlbmVyYXRlZCB4bWw6YmFzZSBmaXh1cCAoV2lsbGlhbSksIFdpbmRvd3MKICAgIG1lbW9yeSByZWFsbG9jYXRpb24gcHJvYmxlbSAoU3RldmUgSGF5KSwgT3V0IG9mIE1lbW9yeSBjb25kaXRpb25zCiAgICBoYW5kbGluZyAoV2lsbGlhbSBhbmQgT2xpdmllciBBbmRyaWV1KSwgaHRtbE5ld0RvYygpIGNoYXJzZXQgYnVnLAogICAgaHRtbFJlYWRNZW1vcnkgaW5pdCAoV2lsbGlhbSksIGEgcG9zdGVyaW9yaSB2YWxpZGF0aW9uIERURCBiYXNlCiAgICAoV2lsbGlhbSksIG5vdGF0aW9ucyBzZXJpYWxpemF0aW9uIG1pc3NpbmcsIHhtbEdldE5vZGVQYXRoIChEb2RqaSksCiAgICB4bWxDaGVja1VURjggKERpZWdvIFRhcnRhcmEpLCBtaXNzaW5nIGxpbmUgbnVtYmVycyBvbiBlbnRpdHkKICAoV2lsbGlhbSk8L2xpPgogIDxsaT5pbXByb3ZlbWVudHM6IERvY0Jvb2sgY2F0YWxvZyBidWlsZCBzY3JpcCAoV2lsbGlhbSksIHhtbGNhdGFsb2cgdG9vbAogICAgKEFsYmVydCBDaGluKSwgeG1sbGludCAtLWMxNG4gb3B0aW9uLCBub19wcm94eSBlbnZpcm9ubWVudCAoTWlrZSBIb21tZXkpLAogICAgeG1sUGFyc2VJbk5vZGVDb250ZXh0KCkgYWRkaXRpb24sIGV4dGVuZCB4bWxsaW50IC0tc2hlbGwsIGFsbG93IFhJbmNsdWRlCiAgICB0byBub3QgZ2VuZXJhdGUgc3RhcnQvZW5kIG5vZGVzLCBleHRlbmQgeG1sbGludCAtLXZlcnNpb24gdG8gaW5jbHVkZSBDVlMKICAgIHRhZyAoV2lsbGlhbSk8L2xpPgogIDxsaT5kb2N1bWVudGF0aW9uOiB3ZWIgcGFnZXMgZml4ZXMsIHZhbGlkaXR5IEFQSSBkb2NzIGZpeGVzIChXaWxsaWFtKQogICAgc2NoZW1hcyBBUEkgZml4IChFcmljIEhhc3psYWtpZXdpY3opLCB4bWxsaW50IG1hbiBwYWdlIChKb2huIEZsZWNrKTwvbGk+CjwvdWw+PGgzPjIuNi4xMTogSnVseSA1IDIwMDQ8L2gzPjx1bD48bGk+U2NoZW1hczogYSBsb3Qgb2YgY2hhbmdlcyBhbmQgaW1wcm92ZW1lbnRzIGJ5IEthc2ltaWVyIEJ1Y2hjaWsgZm9yCiAgICBhdHRyaWJ1dGVzLCBuYW1lc3BhY2VzIGFuZCBzaW1wbGUgdHlwZXMuPC9saT4KICA8bGk+YnVpbGQgZml4ZXM6IC0td2l0aC1taW5pbXVtIChXaWxsaWFtIEJyYWNrKSwgIHNvbWUgZ2NjIGNsZWFudXAKICAgIChXaWxsaWFtKSwgLS13aXRoLXRocmVhZC1hbGxvYyAoV2lsbGlhbSk8L2xpPgogIDxsaT5wb3J0YWJpbGl0eTogV2luZG93cyBiaW5hcnkgcGFja2FnZSBjaGFuZ2UgKElnb3IgWmxhdGtvdmljKSwgQ2F0YWxvZwogICAgcGF0aCBvbiBXaW5kb3dzPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbjogdXBkYXRlIHRvIHRoZSB0dXRvcmlhbCAoSm9obiBGbGVjayksIHhtbGxpbnQgcmV0dXJuIGNvZGUKICAgIChKb2huIEZsZWNrKSwgbWFuIHBhZ2VzIChWaWxsZSBTa3l0dGEpLDwvbGk+CiAgPGxpPmJ1ZyBmaXhlczogQzE0TiBidWcgc2VyaWFsaXppbmcgbmFtZXNwYWNlcyAoQWxla3NleSBTYW5pbiksIHRlc3RTQVgKICAgIHByb3Blcmx5IGluaXRpYWxpemUgdGhlIGxpYnJhcnkgKFdpbGxpYW0pLCBlbXB0eSBub2RlIHNldCBpbiBYUGF0aAogICAgKFdpbGxpYW0pLCB4bWxTY2hlbWFzIGVycm9ycyAoV2lsbGlhbSksIGludmFsaWQgY2hhcnJlZiBwcm9ibGVtIHBvaW50ZWQKICAgIGJ5IE1vcnVzIFdhbHRlciwgWEluY2x1ZGUgeG1sOmJhc2UgZ2VuZXJhdGlvbiAoV2lsbGlhbSksIFJlbGF4LU5HIGJ1ZwogICAgd2l0aCBkaXYgcHJvY2Vzc2luZyAoV2lsbGlhbSksIFhQb2ludGVyIGFuZCB4bWw6YmFzZSBwcm9ibGVtKFdpbGxpYW0pLAogICAgUmVhZGVyIGFuZCBlbnRpdGllcywgeG1sbGludCByZXR1cm4gY29kZSBmb3Igc2NoZW1hcyAoV2lsbGlhbSksIHJlYWRlcgogICAgc3RyZWFtaW5nIHByb2JsZW0gKFN0ZXZlIEJhbGwpLCBEVEQgc2VyaWFsaXphdGlvbiBwcm9ibGVtIChXaWxsaWFtKSwKICAgIGxpYnhtbC5tNCBmaXhlcyAoTWlrZSBIb21tZXkpLCBkbyBub3QgcHJvdmlkZSBkZXN0cnVjdG9ycyBhcyBtZXRob2RzIG9uCiAgICBQeXRob24gY2xhc3NlcywgeG1sUmVhZGVyIGJ1ZmZlciBidWcsIFB5dGhvbiBiaW5kaW5ncyBtZW1vcnkgaW50ZXJmYWNlcwogICAgaW1wcm92ZW1lbnQgKHdpdGggU3TpcGhhbmUgQmlkb3VsKSwgRml4ZWQgdGhlIHB1c2ggcGFyc2VyIHRvIGJlIGJhY2sgdG8KICAgIHN5bmNocm9ub3VzIGJlaGF2aW91ci48L2xpPgogIDxsaT5pbXByb3ZlbWVudDogY3VzdG9tIHBlci10aHJlYWQgSS9PIGVuaGFuY2VtZW50IChSb2IgUmljaGFyZHMpLCByZWdpc3RlcgogICAgbmFtZXNwYWNlIGluIGRlYnVnIHNoZWxsIChTdGVmYW5vIERlYmVuZWRldHRpKSwgUHl0aG9uIGJhc2VkIHJlZ3Jlc3Npb24KICAgIHRlc3QgZm9yIG5vbi1Vbml4IHVzZXJzIChXaWxsaWFtKSwgZHluYW1pY2FsbHkgaW5jcmVhc2UgdGhlIG51bWJlciBvZgogICAgWFBhdGggZXh0ZW5zaW9uIGZ1bmN0aW9ucyBpbiBQeXRob24gYW5kIGZpeCBhIG1lbW9yeSBsZWFrIChNYXJjLUFudG9pbmUKICAgIFBhcmVudCBhbmQgV2lsbGlhbSk8L2xpPgogIDxsaT5wZXJmb3JtYW5jZTogaGFjayBkb25lIHdpdGggQXJqYW4gdmFuIGRlIFZlbiB0byByZWR1Y2UgRUxGIGZvb3RwcmludAogICAgYW5kIGdlbmVyYXRlZCBjb2RlIG9uIExpbnV4LCBwbHVzIHVzZSBnY2MgcnVudGltZSBwcm9maWxpbmcgdG8gb3B0aW1pemUKICAgIHRoZSBjb2RlIGdlbmVyYXRlZCBpbiB0aGUgUlBNIHBhY2thZ2VzLjwvbGk+CjwvdWw+PGgzPjIuNi4xMDogTWF5IDE3IDIwMDQ8L2gzPjx1bD48bGk+V2ViIHBhZ2UgZ2VuZXJhdGVkIGZvciBDaGFuZ2VMb2c8L2xpPgogIDxsaT5idWlsZCBmaXhlczogLS13aXRob3V0LWh0bWwgcHJvYmxlbXMsIG1ha2UgY2hlY2sgd2l0aG91dCBtYWtlIGFsbDwvbGk+CiAgPGxpPnBvcnRhYmlsaXR5OiBwcm9ibGVtIHdpdGggeHBhdGguYyBvbiBXaW5kb3dzIChNU0MgYW5kIEJvcmxhbmQpLCBtZW1jbXAKICAgIHZzLiBzdHJuY21wIG9uIFNvbGFyaXMsIFhQYXRoIHRlc3RzIG9uIFdpbmRvd3MgKE1hcmsgVmFrb2MpLCBDKysgZG8gbm90CiAgICB1c2UgImxpc3QiIGFzIHBhcmFtZXRlciBuYW1lLCBtYWtlIHRlc3RzIHdvcmsgd2l0aCBQeXRob24gMS41IChFZAogIERhdmlzKSw8L2xpPgogIDxsaT5pbXByb3ZlbWVudHM6IG1hZGUgeG1sVGV4dFJlYWRlck1vZGUgcHVibGljLCBzbWFsbCBidWZmZXJzIHJlc2l6aW5nCiAgICAoTW9ydGVuIFdlbGluZGVyKSwgYWRkIC0tbWF4bWVtIG9wdGlvbiB0byB4bWxsaW50LCBhZGQKICAgIHhtbFBvcElucHV0Q2FsbGJhY2soKSBmb3IgTWF0dCBTZXJnZWFudCwgcmVmYWN0b3Jpbmcgb2Ygc2VyaWFsaXphdGlvbgogICAgZXNjYXBpbmcsIGFkZGVkIGVzY2FwaW5nIGN1c3RvbWl6YXRpb248L2xpPgogIDxsaT5idWdmaXhlczogeHNkOmV4dGVuc2lvbiAoVGFpaGVpIEdvaSksIGFzc29ydGVkIHJlZ2V4cCBidWdzIChXaWxsaWFtCiAgICBCcmFjayksIHhtbFJlYWRlciBlbmQgb2Ygc3RyZWFtIHByb2JsZW0sIG5vZGUgZGVyZWdpc3RyYXRpb24gd2l0aCByZWFkZXIsCiAgICBVUkkgZXNjYXBpbmcgYW5kIGZpbGVtYW5lcywgIFhIVE1MMSBmb3JtYXR0aW5nIChOaWNrIFdlbGxuaG9mZXIpLCByZWdleHAKICAgIHRyYW5zaXRpb24gcmVkdWN0aW9uIChXaWxsaWFtKSwgdmFyaW91cyBYU0QgU2NoZW1hcyBmaXhlcyAoS2FzaW1pZXIKICAgIEJ1Y2hjaWspLCBYSW5jbHVkZSBmYWxsYmFjayBwcm9ibGVtIChXaWxsaWFtKSwgd2VpcmQgcHJvYmxlbXMgd2l0aCBEVEQKICAgIChXaWxsaWFtKSwgc3RydWN0dXJlZCBlcnJvciBoYW5kbGVyIGNhbGxiYWNrIGNvbnRleHQgKFdpbGxpYW0pLCByZXZlcnNlCiAgICB4bWxFbmNvZGVTcGVjaWFsQ2hhcnMoKSBiZWhhdmlvdXIgYmFjayB0byBlc2NhcGluZyAnIic8L2xpPgo8L3VsPjxoMz4yLjYuOTogQXByIDE4IDIwMDQ8L2gzPjx1bD48bGk+aW1wbGVtZW50IHhtbDppZCBXb3JraW5nIERyYWZ0LCByZWxheGVkIFhQYXRoIGlkKCkgY2hlY2tpbmc8L2xpPgogIDxsaT5idWdmaXhlczogeG1sQ3R4dFJlc2V0IChCcmVudCBIZW5kcmlja3MpLCBsaW5lIG51bWJlciBhbmQgQ0RBVEEgKERhdmUKICAgIEJlY2tldHQpLCBSZWxheC1ORyBjb21waWxhdGlvbiAoV2lsbGlhbSBCcmFjayksIFJlZ2V4cCBwYXRjaGVzICh3aXRoCiAgICBXaWxsaWFtKSwgeG1sVXJpRXNjYXBlIChNYXJrIFZha29jKSwgYSBSZWxheC1ORyBub3RBbGxvd2VkIHByb2JsZW0gKHdpdGgKICAgIFdpbGxpYW0pLCBSZWxheC1ORyBuYW1lIGNsYXNzZXMgY29tcGFyZXMgKFdpbGxpYW0pLCBYSW5jbHVkZSBkdXBsaWNhdGUKICAgIGZhbGxiYWNrIChXaWxsaWFtKSwgZXh0ZXJuYWwgRFREIGVuY29kaW5nIGRldGVjdGlvbiAoV2lsbGlhbSksIGEgRFRECiAgICB2YWxpZGF0aW9uIGJ1ZyAoV2lsbGlhbSksIHhtbFJlYWRlciBDbG9zZSgpIGZpeCwgcmVjdXNpdmUgZXh0ZW50aW9uCiAgICBzY2hlbWFzPC9saT4KICA8bGk+aW1wcm92ZW1lbnRzOiB1c2UgeG1sUmVhZCogQVBJcyBpbiB0ZXN0IHRvb2xzIChNYXJrIFZha29jKSwgaW5kZW50aW5nCiAgICBzYXZlIG9wdGltaXphdGlvbiwgYmV0dGVyIGhhbmRsZSBJSVMgYnJva2VuIEhUVFAgcmVkaXJlY3QgIGJlaGF2aW91ciAoSWFuCiAgICBIdW1tZWwpLCBIVE1MIHBhcnNlciBmcmFtZXNldCAoSmFtZXMgQnVyc2EpLCBsaWJ4bWwyLXB5dGhvbiBSUE0KICAgIGRlcGVuZGFuY3ksIFhNTCBTY2hlbWFzIHVuaW9uIHN1cHBvcnQgKEthc2ltaWVyIEJ1Y2hjaWspLCB3YXJuaW5nIHJlbW92YWwKICAgIGNsYW51cCAoV2lsbGlhbSksIGtlZXAgQ2hhbmdlTG9nIGNvbXByZXNzZWQgd2hlbiBpbnN0YWxsaW5nIGZyb20gUlBNczwvbGk+CiAgPGxpPmRvY3VtZW50YXRpb246IGV4YW1wbGVzIGFuZCB4bWxEb2NEdW1wTWVtb3J5IGRvY3MgKEpvaG4gRmxlY2spLCBuZXcKICAgIGV4YW1wbGUgKGxvYWQsIHhwYXRoLCBtb2RpZnksIHNhdmUpLCB4bWxDYXRhbG9nRHVtcCgpIGNvbW1lbnRzLDwvbGk+CiAgPGxpPldpbmRvd3M6IEJvcmxhbmQgQysrIGJ1aWxkZXIgKEVyaWMgWnVyY2hlciksIHdvcmsgYXJvdW5kIE1pY3Jvc29mdAogICAgY29tcGlsZXIgTmFOIGhhbmRsaW5nIGJ1ZyAoTWFyayBWYWtvYyk8L2xpPgo8L3VsPjxoMz4yLjYuODogTWFyIDIzIDIwMDQ8L2gzPjx1bD48bGk+Rmlyc3Qgc3RlcCBvZiB0aGUgY2xlYW51cCBvZiB0aGUgc2VyaWFsaXphdGlvbiBjb2RlIGFuZCBBUElzPC9saT4KICA8bGk+WE1MIFNjaGVtYXM6IG1peGVkIGNvbnRlbnQgKEFkYW0gRGlja21laXNzKSwgUU5hbWUgaGFuZGxpbmcgZml4ZXMgKEFkYW0KICAgIERpY2ttZWlzcyksIGFueVVSSSBmb3IgIiIgKEpvaG4gQmVsbW9udGUpPC9saT4KICA8bGk+UHl0aG9uOiBDYW5vbmljYWxpemF0aW9uIEMxNE4gc3VwcG9ydCBhZGRlZCAoQW50aG9ueSBDYXJyaWNvKTwvbGk+CiAgPGxpPnhtbERvY0NvcHlOb2RlKCkgZXh0ZW5zaW9uIChXaWxsaWFtKTwvbGk+CiAgPGxpPlJlbGF4LU5HOiBmaXggd2hlbiBwcm9jZXNzaW5nIFhJbmNsdWRlIHJlc3VsdHMgKFdpbGxpYW0pLCBleHRlcm5hbAogICAgcmVmZXJlbmNlIGluIGludGVybGVhdmUgKFdpbGxpYW0pLCBtaXNzaW5nIGVycm9yIG9uICZsdDtjaG9pY2UmZ3Q7CiAgICBmYWlsdXJlIChXaWxsaWFtKSwgbWVtb3J5IGxlYWsgaW4gc2NoZW1hcyBkYXRhdHlwZSBmYWNldHMuPC9saT4KICA8bGk+eG1sV3JpdGVyOiBwYXRjaCBmb3IgYmV0dGVyIERURCBzdXBwb3J0IChBbGZyZWQgTWlja2F1dHNjaCk8L2xpPgogIDxsaT5idWcgZml4ZXM6IHhtbFhQYXRoTGFuZ0Z1bmN0aW9uIG1lbW9yeSBsZWFrIChNaWtlIEhvbW1leSBhbmQgV2lsbGlhbQogICAgQnJhY2spLCBubyBJRCBlcnJvcnMgaWYgdXNpbmcgSFRNTF9QQVJTRV9OT0VSUk9SLCB4bWxjYXRhbG9nIGZhbGxiYWNrcyB0bwogICAgVVJJIG9uIFNZU1RFTSBsb29rdXAgZmFpbHVyZSwgWEluY2x1ZGUgcGFyc2UgZmxhZ3MgaW5oZXJpdGFuY2UgKFdpbGxpYW0pLAogICAgWEluY2x1ZGUgYW5kIFhQb2ludGVyIGZpeGVzIGZvciBlbnRpdGllcyAoV2lsbGlhbSksIFhNTCBwYXJzZXIgYnVnCiAgICByZXBvcnRlZCBieSBIb2xnZXIgUmF1Y2gsIG5hbm9odHRwIGZkIGxlYWsgKFdpbGxpYW0pLCAgcmVnZXhwcyBjaGFyCiAgICBncm91cHMgJy0nIGhhbmRsaW5nIChXaWxsaWFtKSwgZGljdGlvbm5hcnkgcmVmZXJlbmNlIGNvdW50aW5nIHByb2JsZW1zLAogICAgZG8gbm90IGNsb3NlIHN0ZGVyci48L2xpPgogIDxsaT5wZXJmb3JtYW5jZSBwYXRjaGVzIGZyb20gUGV0ciBQYWphczwvbGk+CiAgPGxpPkRvY3VtZW50YXRpb24gZml4ZXM6IFhNTF9DQVRBTE9HX0ZJTEVTIGluIG1hbiBwYWdlcyAoTWlrZSBIb21tZXkpPC9saT4KICA8bGk+Y29tcGlsYXRpb24gYW5kIHBvcnRhYmlsaXR5IGZpeGVzOiAtLXdpdGhvdXQtdmFsaWQsIGNhdGFsb2cgY2xlYW51cHMKICAgIChQZXRlciBCcmVpdGVubG9obmVyKSwgTWluZ1cgcGF0Y2ggKFJvbGFuZCBTY2h3aW5nZWwpLCBjcm9zcy1jb21waWxhdGlvbgogICAgdG8gV2luZG93cyAoQ2hyaXN0b3BoZSBkZSBWaWVubmUpLCAgLS13aXRoLWh0bWwtZGlyIGZpeHVwIChKdWxpbyBNZXJpbm8KICAgIFZpZGFsKSwgV2luZG93cyBidWlsZCAoRXJpYyBadXJjaGVyKTwvbGk+CjwvdWw+PGgzPjIuNi43OiBGZWIgMjMgMjAwNDwvaDM+PHVsPjxsaT5kb2N1bWVudGF0aW9uOiB0dXRvcmlhbCB1cGRhdGVzIChKb2huIEZsZWNrKSwgYmVuY2htYXJrIHJlc3VsdHM8L2xpPgogIDxsaT54bWxXcml0ZXI6IHVwZGF0ZXMgYW5kIGZpeGVzIChBbGZyZWQgTWlja2F1dHNjaCwgTHVjYXMgQnJhc2lsaW5vKTwvbGk+CiAgPGxpPlhQYXRoIG9wdGltaXphdGlvbiAoUGV0ciBQYWphcyk8L2xpPgogIDxsaT5EVEQgSUQgaGFuZGxpbmcgb3B0aW1pemF0aW9uPC9saT4KICA8bGk+YnVnZml4ZXM6IHhwYXRoIG51bWJlciB3aXRoICAmZ3Q7IDE5IGZyYWN0aW9uYWwgKFdpbGxpYW0gQnJhY2spLCBwdXNoCiAgICBtb2RlIHdpdGggdW5lc2NhcGVkICcmZ3Q7JyBjaGFyYWN0ZXJzLCBmaXggeG1sbGludCAtLXN0cmVhbSAtLXRpbWluZywgZml4CiAgICB4bWxsaW50IC0tbWVtb3J5IC0tc3RyZWFtIG1lbW9yeSB1c2FnZSwgeG1sQXR0clNlcmlhbGl6ZVR4dENvbnRlbnQKICAgIGhhbmRsaW5nIE5VTEwsIHRyeWluZyB0byBmaXggUmVsYXgtTkcvUGVybCBpbnRlcmZhY2UuPC9saT4KICA8bGk+cHl0aG9uOiAyLjMgY29tcGF0aWJpbGl0eSwgd2hpdGVzcGFjZSBmaXhlcyAoTWFsY29sbSBUcmVkaW5uaWNrKTwvbGk+CiAgPGxpPkFkZGVkIHJlbGF4bmcgb3B0aW9uIHRvIHhtbGxpbnQgLS1zaGVsbDwvbGk+CjwvdWw+PGgzPjIuNi42OiBGZWIgMTIgMjAwNDwvaDM+PHVsPjxsaT5uYW5vaHR0cCBhbmQgbmFub2Z0cDogYnVmZmVyIG92ZXJmbG93IGVycm9yIG9uIFVSSSBwYXJzaW5nIChJZ29yIGFuZAogICAgV2lsbGlhbSkgcmVwb3J0ZWQgYnkgWXV1aWNoaSBUZXJhbmlzaGk8L2xpPgogIDxsaT5idWdmaXhlczogbWFrZSB0ZXN0IGFuZCBwYXRoIGlzc3VlcywgeG1sV3JpdGVyIGF0dHJpYnV0ZSBzZXJpYWxpemF0aW9uCiAgICAoV2lsbGlhbSBCcmFjayksIHhtbFdyaXRlciBpbmRlbnRhdGlvbiAoV2lsbGlhbSksIHNjaGVtYXMgdmFsaWRhdGlvbgogICAgKEVyaWMgSGFzemxha2lld2ljeiksIFhJbmNsdWRlIGRpY3Rpb25uYXJpZXMgaXNzdWVzIChXaWxsaWFtIGFuZCBPbGVnCiAgICBQYXJhc2NoZW5rbyksIFhJbmNsdWRlIGVtcHR5IGZhbGxiYWNrIChXaWxsaWFtKSwgSFRNTCB3YXJuaW5ncyAoV2lsbGlhbSksCiAgICBYUG9pbnRlciBpbiBYSW5jbHVkZSAoV2lsbGlhbSksIFB5dGhvbiBuYW1lc3BhY2Ugc2VyaWFsaXphdGlvbiwKICAgIGlzb2xhdDFUb1VURjggYm91bmQgZXJyb3IgKEFsZnJlZCBNaWNrYXV0c2NoKSwgb3V0cHV0IG9mIHBhcmFtZXRlcgogICAgZW50aXRpZXMgaW4gaW50ZXJuYWwgc3Vic2V0IChXaWxsaWFtKSwgaW50ZXJuYWwgc3Vic2V0IGJ1ZyBpbiBwdXNoIG1vZGUsCiAgICAmbHQ7eHM6YWxsJmd0OyBmaXggKEFsZXhleSBTYXJ5dGNoZXYpPC9saT4KICA8bGk+QnVpbGQ6IGZpeCBmb3IgYXV0b21ha2UtMS44IChBbGV4YW5kZXIgV2luc3RvbiksIHdhcm5pbmdzIHJlbW92YWwKICAgIChQaGlsaXAgTHVkbGFtKSwgU09DS0xFTl9UIGRldGVjdGlvbiBmaXhlcyAoRGFuaWVsIFJpY2hhcmQpLCBmaXgKICAgIC0td2l0aC1taW5pbXVtIGNvbmZpZ3VyYXRpb24uPC9saT4KICA8bGk+WEluY2x1ZGU6IGFsbG93IHRoZSAyMDAxIG5hbWVzcGFjZSB3aXRob3V0IHdhcm5pbmcuPC9saT4KICA8bGk+RG9jdW1lbnRhdGlvbjogbWlzc2luZyBleGFtcGxlL2luZGV4Lmh0bWwgKEpvaG4gRmxlY2spLCB2ZXJzaW9uCiAgICBkZXBlbmRhbmNpZXMgKEpvaG4gRmxlY2spPC9saT4KICA8bGk+cmVhZGVyIEFQSTogc3RydWN0dXJlZCBlcnJvciByZXBvcnRpbmcgKFN0ZXZlIEJhbGwpPC9saT4KICA8bGk+V2luZG93cyBjb21waWxhdGlvbjogbWluZ3csIG1zeXMgKE1pa2hhaWwgR3J1c2hpbnNraXkpLCBmdW5jdGlvbgogICAgcHJvdG90eXBlIChDYW1lcm9uIEpvaG5zb24pLCBNU1ZDNiBjb21waWxlciB3YXJuaW5ncywgX1dJTlNPQ0tBUElfCiAgcGF0Y2g8L2xpPgogIDxsaT5QYXJzZXJzOiBhZGRlZCB4bWxCeXRlQ29uc3VtZWQoY3R4dCkgQVBJIHRvIGdldCB0aGUgYnl0ZSBvZmZlc3QgaW4KICAgIGlucHV0LjwvbGk+CjwvdWw+PGgzPjIuNi41OiBKYW4gMjUgMjAwNDwvaDM+PHVsPjxsaT5CdWdmaXhlczogZGljdGlvbm5hcmllcyBmb3Igc2NoZW1hcyAoV2lsbGlhbSBCcmFjayksIHJlZ2V4cCBzZWdmYXVsdAogICAgKFdpbGxpYW0pLCB4czphbGwgcHJvYmxlbSAoV2lsbGlhbSksIGEgbnVtYmVyIG9mIFhQb2ludGVyIGJ1Z2ZpeGVzCiAgICAoV2lsbGlhbSksIHhtbGxpbnQgZXJyb3IgZ28gdG8gc3RkZXJyLCBEVEQgdmFsaWRhdGlvbiBwcm9ibGVtIHdpdGgKICAgIG5hbWVzcGFjZSwgbWVtb3J5IGxlYWsgKFdpbGxpYW0pLCBTQVgxIGNsZWFudXAgYW5kIG1pbmltYWwgb3B0aW9ucyBmaXhlcwogICAgKE1hcmsgVmFkb2MpLCBwYXJzZXIgY29udGV4dCByZXNldCBvbiBlcnJvciAoU2hhdW4gTWNDYW5jZSksIFhQYXRoIHVuaW9uCiAgICBldmFsdWF0aW9uIHByb2JsZW0gKFdpbGxpYW0pICwgeG1sUmVhbGxvY0xvYyB3aXRoIE5VTEwgKEFsZWtzZXkgU2FuaW4pLAogICAgWE1MIFNjaGVtYXMgZG91YmxlIGZyZWUgKFN0ZXZlIEJhbGwpLCBYSW5jbHVkZSB3aXRoIG5vIGhyZWYsIGFyZ3VtZW50CiAgICBjYWxsYmFja3Mgb3JkZXIgZm9yIFhQYXRoIGNhbGxiYWNrcyAoRnJlZGVyaWMgUGV0ZXJzKTwvbGk+CiAgPGxpPkRvY3VtZW50YXRpb246IHB5dGhvbiBzY3JpcHRzIChXaWxsaWFtIEJyYWNrKSwgeHNsdCBzdHlsZXNoZWV0cyAoSm9obgogICAgRmxlY2spLCBkb2MgKFN2ZW4gWmltbWVybWFuKSwgSS9PIGV4YW1wbGUuPC9saT4KICA8bGk+UHl0aG9uIGJpbmRpbmdzOiBmaXhlcyAoV2lsbGlhbSksIGVudW0gc3VwcG9ydCAoU3TpcGhhbmUgQmlkb3VsKSwKICAgIHN0cnVjdHVyZWQgZXJyb3IgcmVwb3J0aW5nIChTdOlwaGFuZSBCaWRvdWwpPC9saT4KICA8bGk+WEluY2x1ZGU6IHZhcmlvdXMgZml4ZXMgZm9yIGNvbmZvcm1hbmNlLCBwcm9ibGVtIHJlbGF0ZWQgdG8gZGljdGlvbm5hcnkKICAgIHJlZmVyZW5jZXMgKFdpbGxpYW0gJmFtcDsgbWUpLCByZWN1cnNpb24gKFdpbGxpYW0pPC9saT4KICA8bGk+eG1sV3JpdGVyOiBpbmRlbnRhdGlvbiAoTHVjYXMgQnJhc2lsaW5vKSwgbWVtb3J5IGxlYWtzIChBbGZyZWQKICAgIE1pY2thdXRzY2gpLDwvbGk+CiAgPGxpPnhtbFNjaGVtYXM6IG5vcm1hbGl6ZWRTdHJpbmcgZGF0YXR5cGUgKEpvaG4gQmVsbW9udGUpPC9saT4KICA8bGk+Y29kZSBjbGVhbnVwIGZvciBzdHJpbmdzIGZ1bmN0aW9ucyAoV2lsbGlhbSk8L2xpPgogIDxsaT5XaW5kb3dzOiBjb21waWxlciBwYXRjaGVzIChNYXJrIFZha29jKTwvbGk+CiAgPGxpPlBhcnNlciBvcHRpbWl6YXRpb25zLCBhIGZldyBuZXcgWFBhdGggYW5kIGRpY3Rpb25uYXJ5IEFQSXMgZm9yIGZ1dHVyZQogICAgWFNMVCBvcHRpbWl6YXRpb25zLjwvbGk+CjwvdWw+PGgzPjIuNi40OiBEZWMgMjQgMjAwMzwvaDM+PHVsPjxsaT5XaW5kb3dzIGJ1aWxkIGZpeGVzIChJZ29yIFpsYXRrb3ZpYyk8L2xpPgogIDxsaT5Tb21lIHNlcmlvdXMgWEluY2x1ZGUgcHJvYmxlbXMgcmVwb3J0ZWQgYnkgT2xlZyBQYXJhc2NoZW5rbyBhbmQ8L2xpPgogIDxsaT5Vbml4IGFuZCBNYWtlZmlsZSBwYWNrYWdpbmcgZml4ZXMgKG1lLCBXaWxsaWFtIEJyYWNrLDwvbGk+CiAgPGxpPkRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzIChKb2huIEZsZWNrLCBXaWxsaWFtIEJyYWNrKSwgZXhhbXBsZSBmaXgKICAgIChMdWNhcyBCcmFzaWxpbm8pPC9saT4KICA8bGk+YnVnZml4ZXM6IHhtbFRleHRSZWFkZXJFeHBhbmQoKSB3aXRoIHhtbFJlYWRlcldhbGtlciwgWFBhdGggaGFuZGxpbmcgb2YKICAgIE5VTEwgc3RyaW5ncyAoV2lsbGlhbSBCcmFjaykgLCBBUEkgYnVpbGRpbmcgcmVhZGVyIG9yIHBhcnNlciBmcm9tCiAgICBmaWxlZGVzY3JpcHRvciBzaG91bGQgbm90IGNsb3NlIGl0LCBjaGFuZ2VkIFhQYXRoIHNvcnRpbmcgdG8gYmUgc3RhYmxlCiAgICBhZ2FpbiAoV2lsbGlhbSBCcmFjayksIHhtbEdldE5vZGVQYXRoKCkgZ2VuZXJhdGluZyAnKG51bGwpJyAoV2lsbGlhbQogICAgQnJhY2spLCBEVEQgdmFsaWRhdGlvbiBhbmQgbmFtZXNwYWNlIGJ1ZyAoV2lsbGlhbSBCcmFjayksIFhNTCBTY2hlbWFzCiAgICBkb3VibGUgaW5jbHVzaW9uIGJlaGF2aW91cjwvbGk+CjwvdWw+PGgzPjIuNi4zOiBEZWMgMTAgMjAwMzwvaDM+PHVsPjxsaT5kb2N1bWVudGF0aW9uIHVwZGF0ZXMgYW5kIGNsZWFudXAgKERWLCBXaWxsaWFtIEJyYWNrLCBKb2huIEZsZWNrKTwvbGk+CiAgPGxpPmFkZGVkIGEgcmVwb3NpdG9yeSBvZiBleGFtcGxlcywgZXhhbXBsZXMgZnJvbSBBbGVrc2V5IFNhbmluLCBEb2RqaQogICAgU2VrZXRlbGksIEFsZnJlZCBNaWNrYXV0c2NoPC9saT4KICA8bGk+V2luZG93cyB1cGRhdGVzOiBNYXJrIFZha29jLCBJZ29yIFpsYXRrb3ZpYywgRXJpYyBadXJjaGVyLCBNaW5ndwogICAgKEtlbm5ldGggSGFsZXkpPC9saT4KICA8bGk+VW5pY29kZSByYW5nZSBjaGVja2luZyAoV2lsbGlhbSBCcmFjayk8L2xpPgogIDxsaT5jb2RlIGNsZWFudXAgKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+UHl0aG9uIGJpbmRpbmdzOiBkb2MgKEpvaG4gRmxlY2spLCAgYnVnIGZpeGVzPC9saT4KICA8bGk+VVRGLTE2IGNsZWFudXAgYW5kIEJPTSBpc3N1ZXMgKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+YnVnIGZpeGVzOiBJRCBhbmQgeG1sUmVhZGVyIHZhbGlkYXRpb24sIFhQYXRoIChXaWxsaWFtIEJyYWNrKSwKICAgIHhtbFdyaXRlciAoQWxmcmVkIE1pY2thdXRzY2gpLCBoYXNoLmggaW5jbHVzaW9uIHByb2JsZW0sIEhUTUwgcGFyc2VyCiAgICAoSmFtZXMgQnVyc2EpLCBhdHRyaWJ1dGUgZGVmYXVsdGluZyBhbmQgdmFsaWRhdGlvbiwgc29tZSBzZXJpYWxpemF0aW9uCiAgICBjbGVhbnVwcywgWE1MX0dFVF9MSU5FIG1hY3JvLCBtZW1vcnkgZGVidWcgd2hlbiB1c2luZyB0aHJlYWRzIChXaWxsaWFtCiAgICBCcmFjayksIHNlcmlhbGl6YXRpb24gb2YgYXR0cmlidXRlcyBhbmQgZW50aXRpZXMgY29udGVudCwgeG1sV3JpdGVyCiAgICAoRGFuaWVsIFNjaHVsbWFuKTwvbGk+CiAgPGxpPlhJbmNsdWRlIGJ1Z2ZpeCwgbmV3IEFQSXMgYW5kIHVwZGF0ZSB0byB0aGUgbGFzdCB2ZXJzaW9uIGluY2x1ZGluZyB0aGUKICAgIG5hbWVzcGFjZSBjaGFuZ2UuPC9saT4KICA8bGk+WE1MIFNjaGVtYXMgaW1wcm92ZW1lbnRzOiBpbmNsdWRlIChSb2JlcnQgU3RlcGFuZWspLCBpbXBvcnQgYW5kCiAgICBuYW1lc3BhY2UgaGFuZGxpbmcsIGZpeGVkIHRoZSByZWdyZXNzaW9uIHRlc3RzIHRyb3VibGVzLCBhZGRlZCBleGFtcGxlcwogICAgYmFzZWQgb24gRXJpYyB2YW4gZGVyIFZsaXN0IGJvb2ssIHJlZ2V4cCBmaXhlczwvbGk+CiAgPGxpPnByZWxpbWluYXJ5IHBhdHRlcm4gc3VwcG9ydCBmb3Igc3RyZWFtaW5nIChuZWVkZWQgZm9yIHNjaGVtYXMKICAgIGNvbnN0cmFpbnRzKSwgYWRkZWQgeG1sVGV4dFJlYWRlclByZXNlcnZlUGF0dGVybigpIHRvIGNvbGxlY3Qgc3ViZG9jdW1lbnQKICAgIHdoZW4gc3RyZWFtaW5nLjwvbGk+CiAgPGxpPnZhcmlvdXMgZml4ZXMgaW4gdGhlIHN0cnVjdHVyZWQgZXJyb3IgaGFuZGxpbmc8L2xpPgo8L3VsPjxoMz4yLjYuMjogTm92IDQgMjAwMzwvaDM+PHVsPjxsaT5YUGF0aCBjb250ZXh0IHVucmVnaXN0cmF0aW9uIGZpeGVzPC9saT4KICA8bGk+dGV4dCBub2RlIGNvYWxlc2NpbmcgZml4ZXMgKE1hcmsgTGlsYmFjayk8L2xpPgogIDxsaT5BUEkgdG8gc2NyZWF0ZSBhIFczQyBTY2hlbWFzIGZyb20gYW4gZXhpc3RpbmcgZG9jdW1lbnQgKFN0ZXZlIEJhbGwpPC9saT4KICA8bGk+QmVPUyBwYXRjaGVzIChNYXJjaW4gJ1NoYXJkJyBLb25pY2tpKTwvbGk+CiAgPGxpPnhtbFN0clZQcmludGYgZnVuY3Rpb24gYWRkZWQgKEFsZWtzZXkgU2FuaW4pPC9saT4KICA8bGk+Y29tcGlsYXRpb24gZml4ZXMgKE1hcmsgVmFrb2MpPC9saT4KICA8bGk+c3RkaW4gcGFyc2luZyBmaXggKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+YSBwb3N0ZXJpb3JpIERURCB2YWxpZGF0aW9uIGZpeGVzPC9saT4KICA8bGk+eG1sUmVhZGVyIGJ1ZyBmaXhlczogV2Fsa2VyIGZpeGVzLCBweXRob24gYmluZGluZ3M8L2xpPgogIDxsaT5maXhlZCB4bWxTdG9wUGFyc2VyKCkgdG8gcmVhbGx5IHN0b3AgdGhlIHBhcnNlciBhbmQgZXJyb3JzPC9saT4KICA8bGk+YWx3YXlzIGdlbmVyYXRlIGxpbmUgbnVtYmVycyB3aGVuIHVzaW5nIHRoZSBuZXcgeG1sUmVhZHh4eAogIGZ1bmN0aW9uczwvbGk+CiAgPGxpPmFkZGVkIFhJbmNsdWRlIHN1cHBvcnQgdG8gdGhlIHhtbFJlYWRlciBpbnRlcmZhY2U8L2xpPgogIDxsaT5pbXBsZW1lbnRlZCBYTUxfUEFSU0VfTk9ORVQgcGFyc2VyIG9wdGlvbjwvbGk+CiAgPGxpPkRvY0Jvb2sgWFNMVCBwcm9jZXNzaW5nIGJ1ZyBmaXhlZDwvbGk+CiAgPGxpPkhUTUwgc2VyaWFsaXphdGlvbiBmb3IgJmx0O3AmZ3Q7IGVsZW1lbnRzIChXaWxsaWFtIEJyYWNrIGFuZCBtZSk8L2xpPgogIDxsaT5YUG9pbnRlciBmYWlsdXJlIGluIFhJbmNsdWRlIGFyZSBub3cgaGFuZGxlZCBhcyByZXNvdXJjZSBlcnJvcnM8L2xpPgogIDxsaT5maXhlZCB4bWxsaW50IC0taHRtbCB0byB1c2UgdGhlIEhUTUwgc2VyaWFsaXplciBvbiBvdXRwdXQgKGFkZGVkCiAgICAtLXhtbG91dCB0byBpbXBsZW1lbnQgdGhlIHByZXZpb3VzIGJlaGF2aW91ciBvZiBzYXZpbmcgaXQgdXNpbmcgdGhlIFhNTAogICAgc2VyaWFsaXplcik8L2xpPgo8L3VsPjxoMz4yLjYuMTogT2N0IDI4IDIwMDM8L2gzPjx1bD48bGk+TW9zdGx5IGJ1Z2ZpeGVzIGFmdGVyIHRoZSBiaWcgMi42LjAgY2hhbmdlczwvbGk+CiAgPGxpPlVuaXggY29tcGlsYXRpb24gcGF0Y2hlczogbGlieG1sLm00IChQYXRyaWNrIFdlbGNoZSksIHdhcm5pbmdzIGNsZWFudXAKICAgIChXaWxsaWFtIEJyYWNrKTwvbGk+CiAgPGxpPldpbmRvd3MgY29tcGlsYXRpb24gcGF0Y2hlcyAoSm9hY2hpbSBCYXVjaCwgU3RlcGhhbmUgQmlkb3VsLCBJZ29yCiAgICBabGF0a292aWMpPC9saT4KICA8bGk+eG1sV3JpdGVyIGJ1Z2ZpeCAoQWxmcmVkIE1pY2thdXRzY2gpPC9saT4KICA8bGk+Y2h2YWxpZC5bY2hdOiBjb3VwbGUgb2YgZml4ZXMgZnJvbSBTdGVwaGFuZSBCaWRvdWw8L2xpPgogIDxsaT5jb250ZXh0IHJlc2V0OiBlcnJvciBzdGF0ZSByZXNldCwgcHVzaCBwYXJzZXIgcmVzZXQgKEdyYWhhbQogIEJlbm5ldHQpPC9saT4KICA8bGk+Y29udGV4dCByZXVzZTogZ2VuZXJhdGUgZXJyb3JzIGlmIGZpbGUgaXMgbm90IHJlYWRhYmxlPC9saT4KICA8bGk+ZGVmYXVsdGVkIGF0dHJpYnV0ZXMgZm9yIGVsZW1lbnQgY29taW5nIGZyb20gaW50ZXJuYWwgZW50aXRpZXMKICAgIChTdGVwaGFuZSBCaWRvdWwpPC9saT4KICA8bGk+UHl0aG9uOiB0YWIgYW5kIHNwYWNlcyBtaXggKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+RXJyb3IgaGFuZGxlciBjb3VsZCBjcmFzaCBpbiBEVEQgdmFsaWRhdGlvbiBpbiAyLjYuMDwvbGk+CiAgPGxpPnhtbFJlYWRlcjogZG8gbm90IHVzZSB0aGUgZG9jdW1lbnQgb3IgZWxlbWVudCBfcHJpdmF0ZSBmaWVsZDwvbGk+CiAgPGxpPnRlc3RTQVguYzogYXZvaWQgYSBwcm9ibGVtIHdpdGggc29tZSBQSXMgKE1hc3NpbW8gTW9yYXJhKTwvbGk+CiAgPGxpPmdlbmVyYWwgYnVnIGZpeGVzOiBtYW5kYXRvcnkgZW5jb2RpbmcgaW4gdGV4dCBkZWNsLCBzZXJpYWxpemluZwogICAgRG9jdW1lbnQgRnJhZ21lbnQgbm9kZXMsIHhtbFNlYXJjaE5zIDIuNi4wIHByb2JsZW0gKEthc2ltaWVyIEJ1Y2hjaWspLAogICAgWFBhdGggZXJyb3JzIG5vdCByZXBvcnRlZCwgIHNsb3cgSFRNTCBwYXJzaW5nIG9mIGxhcmdlIGRvY3VtZW50cy48L2xpPgo8L3VsPjxoMz4yLjYuMDogT2N0IDIwIDIwMDM8L2gzPjx1bD48bGk+TWFqb3IgcmV2aXNpb24gcmVsZWFzZTogc2hvdWxkIGJlIEFQSSBhbmQgQUJJIGNvbXBhdGlibGUgYnV0IGdvdCBhIGxvdAogICAgb2YgY2hhbmdlPC9saT4KICA8bGk+SW5jcmVhc2VkIHRoZSBsaWJyYXJ5IG1vZHVsYXJpdHksIGZhciBtb3JlIG9wdGlvbnMgY2FuIGJlIHN0cmlwcGVkIG91dCwKICAgIGEgLS13aXRoLW1pbmltdW0gY29uZmlndXJhdGlvbiB3aWxsIHdlaWdodCBhcm91bmQgMTYwS0J5dGVzPC9saT4KICA8bGk+VXNlIHBlciBwYXJzZXIgYW5kIHBlciBkb2N1bWVudCBkaWN0aW9ubmFyeSwgYWxsb2NhdGUgbmFtZXMgYW5kIHNtYWxsCiAgICB0ZXh0IG5vZGVzIGZyb20gdGhlIGRpY3Rpb25uYXJ5PC9saT4KICA8bGk+U3dpdGNoIHRvIGEgU0FYMiBsaWtlIHBhcnNlciByZXdyb3RlIG1vc3Qgb2YgdGhlIFhNTCBwYXJzZXIgY29yZSwKICAgIHByb3ZpZGVzIG5hbWVzcGFjZSByZXNvbHV0aW9uIGFuZCBkZWZhdWx0ZWQgYXR0cmlidXRlcywgbWluaW1pemUgbWVtb3J5CiAgICBhbGxvY2F0aW9ucyBhbmQgY29waWVzLCBuYW1lc3BhY2UgY2hlY2tpbmcgYW5kIHNwZWNpZmljIGVycm9yIGhhbmRsaW5nLAogICAgaW1tdXRhYmxlIGJ1ZmZlcnMsIG1ha2UgcHJlZGVmaW5lZCBlbnRpdGllcyBzdGF0aWMgc3RydWN0dXJlcywgZXRjLi4uPC9saT4KICA8bGk+cmV3cm90ZSBhbGwgdGhlIGVycm9yIGhhbmRsaW5nIGluIHRoZSBsaWJyYXJ5LCBhbGwgZXJyb3JzIGNhbiBiZQogICAgaW50ZXJjZXB0ZWQgYXQgYSBzdHJ1Y3R1cmVkIGxldmVsLCB3aXRoIHByZWNpc2UgaW5mb3JtYXRpb24KICBhdmFpbGFibGUuPC9saT4KICA8bGk+TmV3IHNpbXBsZXIgYW5kIG1vcmUgZ2VuZXJpYyBYTUwgYW5kIEhUTUwgcGFyc2VyIEFQSXMsIGFsbG93aW5nIHRvCiAgICBlYXNpbGx5IG1vZGlmeSB0aGUgcGFyc2luZyBvcHRpb25zIGFuZCByZXVzZSBwYXJzZXIgY29udGV4dCBmb3IgbXVsdGlwbGUKICAgIGNvbnNlY3V0aXZlIGRvY3VtZW50cy48L2xpPgogIDxsaT5TaW1pbGFyIG5ldyBBUElzIGZvciB0aGUgeG1sUmVhZGVyLCBmb3Igb3B0aW9ucyBhbmQgcmV1c2UsIHByb3ZpZGVkIG5ldwogICAgZnVuY3Rpb25zIHRvIGFjY2VzcyBjb250ZW50IGFzIGNvbnN0IHN0cmluZ3MsIHVzZSB0aGVtIGZvciBQeXRob24KICBiaW5kaW5nczwvbGk+CiAgPGxpPmEgIGxvdCBvZiBvdGhlciBzbWFsbGVyIEFQSSBpbXByb3ZlbWVudHM6IHhtbFN0clByaW50ZiAoQWxla3NleSBTYW5pbiksCiAgICBXYWxrZXIgaS5lLiByZWFkZXIgb24gYSBkb2N1bWVudCB0cmVlIGJhc2VkIG9uIEFsZnJlZCBNaWNrYXV0c2NoIGNvZGUsCiAgICBtYWtlIHJvb20gaW4gbm9kZXMgZm9yIGxpbmUgbnVtYmVycywgcmVmZXJlbmNlIGNvdW50aW5nIGFuZCBmdXR1cmUgUFNWSQogICAgZXh0ZW5zaW9ucywgZ2VuZXJhdGlvbiBvZiBjaGFyYWN0ZXIgcmFuZ2VzIHRvIGJlIGNoZWNrZWQgd2l0aCBmYXN0ZXIKICAgIGFsZ29yaXRobSAoV2lsbGlhbSksICB4bWxQYXJzZXJNYXhEZXB0aCAoQ3J1dGNoZXIgRHVubmF2YW50KSwgYnVmZmVyCiAgICBhY2Nlc3M8L2xpPgogIDxsaT5OZXcgeG1sV3JpdGVyIEFQSSBwcm92aWRlZCBieSBBbGZyZWQgTWlja2F1dHNjaDwvbGk+CiAgPGxpPlNjaGVtYXM6IGJhc2U2NCBzdXBwb3J0IGJ5IEFudGhvbnkgQ2FycmljbzwvbGk+CiAgPGxpPlBhcnNlciZsdDstJmd0O0hUVFAgaW50ZWdyYXRpb24gZml4LCBwcm9wZXIgcHJvY2Vzc2luZyBvZiB0aGUgTWltZS1UeXBlCiAgICBhbmQgY2hhcnNldCBpbmZvcm1hdGlvbnMgaWYgYXZhaWxhYmxlLjwvbGk+CiAgPGxpPlJlbGF4LU5HOiBidWcgZml4ZXMgaW5jbHVkaW5nIHRoZSBvbmUgcmVwb3J0ZWQgYnkgTWFydGlqbiBGYWFzc2VuIGFuZAogICAgemVyb09yTW9yZSwgYmV0dGVyIGVycm9yIHJlcG9ydGluZy48L2xpPgogIDxsaT5QeXRob24gYmluZGluZ3MgKFN06XBoYW5lIEJpZG91bCksIG5ldmVyIHVzZSBzdGRvdXQgZm9yIGVycm9ycwogIG91dHB1dDwvbGk+CiAgPGxpPlBvcnRhYmlsaXR5OiBhbGwgdGhlIGhlYWRlcnMgaGF2ZSBtYWNyb3MgZm9yIGV4cG9ydCBhbmQgY2FsbGluZwogICAgY29udmVudGlvbiBkZWZpbml0aW9ucyAoSWdvciBabGF0a292aWMpLCBWTVMgdXBkYXRlIChDcmFpZyBBLiBCZXJyeSksCiAgICBXaW5kb3dzOiB0aHJlYWRzIChKZXNzZSBQZWx0b24pLCBCb3JsYW5kIGNvbXBpbGVyIChFcmljIFp1cmNoZXIsICBJZ29yKSwKICAgIE1pbmd3IChJZ29yKSwgdHlwb3MgKE1hcmsgVmFrb2MpLCAgYmV0YSB2ZXJzaW9uIChTdGVwaGFuZSBCaWRvdWwpLAogICAgd2FybmluZyBjbGVhbnVwcyBvbiBBSVggYW5kIE1JUFMgY29tcGlsZXJzIChXaWxsaWFtIEJyYWNrKSwgQmVPUyAoTWFyY2luCiAgICAnU2hhcmQnIEtvbmlja2kpPC9saT4KICA8bGk+RG9jdW1lbnRhdGlvbiBmaXhlcyBhbmQgUkVBRE1FIChXaWxsaWFtIEJyYWNrKSwgc2VhcmNoIGZpeCAoV2lsbGlhbSksCiAgICB0dXRvcmlhbCB1cGRhdGVzIChKb2huIEZsZWNrKSwgbmFtZXNwYWNlIGRvY3MgKFN0ZWZhbiBLb3N0KTwvbGk+CiAgPGxpPkJ1ZyBmaXhlczogeG1sQ2xlYW51cFBhcnNlciAoRGF2ZSBCZWNrZXR0KSwgdGhyZWFkaW5nIHVuaW5pdGlhbGl6ZWQKICAgIG11dGV4ZXMsIEhUTUwgZG9jdHlwZSBsb3dlcmNhc2UsICBTQVgvSU8gKFdpbGxpYW0pLCBjb21wcmVzc2lvbiBkZXRlY3Rpb24KICAgIGFuZCByZXN0b3JlIChXaWxsaWFtKSwgYXR0cmlidXRlIGRlY2xhcmF0aW9uIGluIERURHMgKFdpbGxpYW0pLCBuYW1lc3BhY2UKICAgIG9uIGF0dHJpYnV0ZSBpbiBIVE1MIG91dHB1dCAoV2lsbGlhbSksIGlucHV0IGZpbGVuYW1lIChSb2IgUmljaGFyZHMpLAogICAgbmFtZXNwYWNlIERURCB2YWxpZGF0aW9uLCB4bWxSZXBsYWNlTm9kZSAoQ2hyaXMgUnlsYW5kKSwgSS9PIGNhbGxiYWNrcwogICAgKE1hcmt1cyBLZWltKSwgQ0RBVEEgc2VyaWFsaXphdGlvbiAoU2hhdW4gTWNDYW5jZSksIHhtbFJlYWRlciAoUGV0ZXIKICAgIERlcnIpLCBoaWdoIGNvZGVwb2ludCBjaGFycmVmIGxpa2UgJmFtcDsjeDEwRkZGRjssIGJ1ZmZlciBhY2Nlc3MgaW4gcHVzaAogICAgbW9kZSAoSnVzdGluIEZsZXRjaGVyKSwgVExTIHRocmVhZHMgb24gV2luZG93cyAoSmVzc2UgUGVsdG9uKSwgWFBhdGggYnVnCiAgICAoV2lsbGlhbSksIHhtbENsZWFudXBQYXJzZXIgKE1hcmMgTGl5YW5hZ2UpLCBDREFUQSBvdXRwdXQgKFdpbGxpYW0pLCBIVFRQCiAgICBlcnJvciBoYW5kbGluZy48L2xpPgogIDxsaT54bWxsaW50IG9wdGlvbnM6IC0tZHRkdmFsaWRmcGkgZm9yIFRvYmlhcyBSZWlmLCAtLXNheDEgZm9yIGNvbXBhdAogICAgdGVzdGluZywgIC0tbm9kaWN0IGZvciBidWlsZGluZyB3aXRob3V0IHRyZWUgZGljdGlvbm5hcnksIC0tbm9jZGF0YSB0bwogICAgcmVwbGFjZSBDREFUQSBieSB0ZXh0LCAtLW5zY2xlYW4gdG8gcmVtb3ZlIHN1cnBlcmZsdW91cyAgbmFtZXNwYWNlCiAgICBkZWNsYXJhdGlvbnM8L2xpPgogIDxsaT5hZGRlZCB4bWwyLWNvbmZpZyAtLWxpYnRvb2wtbGlicyBvcHRpb24gZnJvbSBLZXZpbiBQLiBGbGVtaW5nPC9saT4KICA8bGk+YSBsb3Qgb2YgcHJvZmlsaW5nIGFuZCB0dW5pbmcgb2YgdGhlIGNvZGUsIHNwZWVkdXAgcGF0Y2ggZm9yCiAgICB4bWxTZWFyY2hOcygpIGJ5IEx1Y2EgUGFkb3ZhbmkuIFRoZSB4bWxSZWFkZXIgc2hvdWxkIGRvIGZhciBsZXNzCiAgICBhbGxvY2F0aW9uIGFuZCBpdCBzcGVlZCBzaG91bGQgZ2V0IGNsb3NlciB0byBTQVguIENocmlzIEFuZGVyc29uIHdvcmtlZAogICAgb24gc3BlZWRpbmcgYW5kIGNsZWFuaW5nIHVwIHJlcGV0aXRpdmUgY2hlY2tpbmcgY29kZS48L2xpPgogIDxsaT5jbGVhbnVwIG9mICJtYWtlIHRlc3RzIjwvbGk+CiAgPGxpPmxpYnhtbC0yLjAtdW5pbnN0YWxsZWQucGMgZnJvbSBNYWxjb2xtIFRyZWRpbm5pY2s8L2xpPgogIDxsaT5kZWFjdGl2YXRlZCB0aGUgYnJva2VuIGRvY0Jvb2sgU0dNTCBwYXJzZXIgY29kZSBhbmQgcGx1Z2dlZCB0aGUgWE1MCiAgICBwYXJzZXIgaW5zdGVhZC48L2xpPgo8L3VsPjxoMz4yLjUuMTE6IFNlcCA5IDIwMDM8L2gzPjxwPkEgYnVnZml4IG9ubHkgcmVsZWFzZTo8L3A+PHVsPjxsaT5yaXNrIG9mIGNyYXNoIGluIFJlbGF4LU5HPC9saT4KICA8bGk+cmlzayBvZiBjcmFzaCB3aGVuIHVzaW5nIG11bHRpdGhyZWFkZWQgcHJvZ3JhbXM8L2xpPgo8L3VsPjxoMz4yLjUuMTA6IEF1ZyAxNSAyMDAzPC9oMz48cD5BIGJ1Z2ZpeGVzIG9ubHkgcmVsZWFzZTwvcD48dWw+PGxpPldpbmRvd3MgTWFrZWZpbGVzIChXaWxsaWFtIEJyYWNrKTwvbGk+CiAgPGxpPlVURi0xNiBzdXBwb3J0IGZpeGVzIChNYXJrIEl0emNvdml0eik8L2xpPgogIDxsaT5NYWtlZmlsZSBhbmQgcG9ydGFiaWxpdHkgKFdpbGxpYW0gQnJhY2spIGF1dG9tYWtlLCBMaW51eCBhbHBoYSwgTWluZ3cKICAgIG9uIFdpbmRvd3MgKE1pa2hhaWwgR3J1c2hpbnNraXkpPC9saT4KICA8bGk+SFRNTCBwYXJzZXIgKE9saXZlciBTdG9lbmViZXJnKTwvbGk+CiAgPGxpPlhJbmNsdWRlIHBlcmZvcm1hbmNlIHByb2JsZW0gcmVwb3J0ZWQgYnkgS2V2aW4gUnVzY29lPC9saT4KICA8bGk+WE1MIHBhcnNlciBwZXJmb3JtYW5jZSBwcm9ibGVtIHJlcG9ydGVkIGJ5IEdyYW50IEdvb2RhbGU8L2xpPgogIDxsaT54bWxTQVhQYXJzZURURCgpIGJ1ZyBmaXggZnJvbSBNYWxjb2xtIFRyZWRpbm5pY2s8L2xpPgogIDxsaT5hbmQgYSBjb3VwbGUgb3RoZXIgY2xlYW51cDwvbGk+CjwvdWw+PGgzPjIuNS45OiBBdWcgOSAyMDAzPC9oMz48dWw+PGxpPmJ1Z2ZpeGVzOiBJUHY2IHBvcnRhYmlsaXR5LCB4bWxIYXNOc1Byb3AgKE1hcmt1cyBLZWltKSwgV2luZG93cyBidWlsZAogICAgKFdpbGlhbSBCcmFrZSwgSmVzc2UgUGVsdG9uLCBJZ29yKSwgU2NoZW1hcyAoUGV0ZXIgU29iaXNjaCksIHRocmVhZGluZwogICAgKFJvYiBSaWNoYXJkcyksIGhleEJpbmFyeSB0eXBlICgpLCBVVEYtMTYgQk9NIChEb2RqaSBTZWtldGVsaSksCiAgICB4bWxSZWFkZXIsIFJlbGF4LU5HIHNjaGVtYXMgY29tcGlsYXRpb24sIG5hbWVzcGFjZSBoYW5kbGluZywgIEVYU0xUIChTZWFuCiAgICBHcmlmZmluKSwgSFRNTCBwYXJzaW5nIHByb2JsZW0gKFdpbGxpYW0gQnJhY2spLCBEVEQgdmFsaWRhdGlvbiBmb3IgbWl4ZWQKICAgIGNvbnRlbnQgKyBuYW1lc3BhY2VzLCBIVE1MIHNlcmlhbGl6YXRpb24sIGxpYnJhcnkgaW5pdGlhbGl6YXRpb24sCiAgICBwcm9ncmVzc2l2ZSBIVE1MIHBhcnNlcjwvbGk+CiAgPGxpPmJldHRlciBpbnRlcmZhY2VzIGZvciBSZWxheC1ORyBlcnJvciBoYW5kbGluZyAoSm9hY2hpbSBCYXVjaCwgKTwvbGk+CiAgPGxpPmFkZGluZyB4bWxYSW5jbHVkZVByb2Nlc3NUcmVlKCkgZm9yIFhJbmNsdWQnaW5nIGluIGEgc3VidHJlZTwvbGk+CiAgPGxpPmRvYyBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIChKb2huIEZsZWNrKTwvbGk+CiAgPGxpPmNvbmZpZ3VyZSBmbGFnIGZvciAtd2l0aC1mZXhjZXB0aW9ucyB3aGVuIGVtYmVkZGluZyBpbiBDKys8L2xpPgogIDxsaT5jb3VwbGUgb2YgbmV3IFVURi04IGhlbHBlciBmdW5jdGlvbnMgKFdpbGxpYW0gQnJhY2spPC9saT4KICA8bGk+Z2VuZXJhbCBlbmNvZGluZyBjbGVhbnVwICsgSVNPLTg4NTkteCB3aXRob3V0IGljb252IChQZXRlciBKYWNvYmkpPC9saT4KICA8bGk+eG1sVGV4dFJlYWRlciBjbGVhbnVwICsgZW51bSBmb3Igbm9kZSB0eXBlcyAoQmpvcm4gUmVlc2UpPC9saT4KICA8bGk+Z2VuZXJhbCBjb21waWxhdGlvbi93YXJuaW5nIGNsZWFudXAgU29sYXJpcy9IUC1VWC8uLi4gKFdpbGxpYW0KICBCcmFjayk8L2xpPgo8L3VsPjxoMz4yLjUuODogSnVsIDYgMjAwMzwvaDM+PHVsPjxsaT5idWdmaXhlczogWFBhdGgsIFhJbmNsdWRlLCBmaWxlL1VSSSBtYXBwaW5nLCBVVEYtMTYgc2F2ZSAoTWFyawogICAgSXR6Y292aXR6KSwgVVRGLTggY2hlY2tpbmcsIFVSSSBzYXZpbmcsIGVycm9yIHByaW50aW5nIChXaWxsaWFtIEJyYWNrKSwKICAgIFBJIHJlbGF0ZWQgbWVtbGVhaywgY29tcGlsYXRpb24gd2l0aG91dCBzY2hlbWFzIG9yIHdpdGhvdXQgeHBhdGggKEpvZXJnCiAgICBTY2htaXR6LUxpbm5ld2ViZXIvR2FycnkgUGVubmluZ3RvbiksIHhtbFVubGlua05vZGUgcHJvYmxlbSB3aXRoIERURHMsCiAgICBycG0gcHJvYmxlbSBvbiAsIGk4Nl82NCwgcmVtb3ZlZCBhIGZldyBjb21waWxhdGlvbiBwcm9ibGVtcyBmcm9tIDIuNS43LAogICAgeG1sSU9QYXJzZURURCwgYW5kIHhtbFNBWFBhcnNlRFREIChNYWxjb2xtIFRyZWRpbm5pY2spPC9saT4KICA8bGk+cG9ydGFiaWxpdHk6IERKR1BQIChNc0RvcykgLCBPcGVuVk1TIChDcmFpZyBBLiBCZXJyeSk8L2xpPgogIDxsaT5XaWxsaWFtIEJyYWNrIGZpeGVkIG11bHRpdGhyZWFkaW5nIGxvY2sgcHJvYmxlbXM8L2xpPgogIDxsaT5JUHY2IHBhdGNoIGZvciBGVFAgYW5kIEhUVFAgYWNjZXNzZXMgKEFyY2hhbmEgU2hhaC9XaXBybyk8L2xpPgogIDxsaT5XaW5kb3dzIGZpeGVzIChJZ29yIFpsYXRrb3ZpYywgIEVyaWMgWnVyY2hlciksIHRocmVhZGluZyAoU3TpcGhhbmUKICAgIEJpZG91bCk8L2xpPgogIDxsaT5BIGZldyBXM0MgU2NoZW1hcyBTdHJ1Y3R1cmUgaW1wcm92ZW1lbnRzPC9saT4KICA8bGk+VzNDIFNjaGVtYXMgRGF0YXR5cGUgaW1wcm92ZW1lbnRzIChDaGFybGllIEJvemVtYW4pPC9saT4KICA8bGk+UHl0aG9uIGJpbmRpbmdzIGZvciB0aHJlYWQgZ2xvYmFscyAoU3TpcGhhbmUgQmlkb3VsKSwgYW5kIG1ldGhvZC9jbGFzcwogICAgZ2VuZXJhdG9yPC9saT4KICA8bGk+YWRkZWQgLS1ub25ldCBvcHRpb24gdG8geG1sbGludDwvbGk+CiAgPGxpPmRvY3VtZW50YXRpb24gaW1wcm92ZW1lbnRzIChKb2huIEZsZWNrKTwvbGk+CjwvdWw+PGgzPjIuNS43OiBBcHIgMjUgMjAwMzwvaDM+PHVsPjxsaT5SZWxheC1ORzogQ29tcGlsaW5nIHRvIHJlZ2V4cCBhbmQgc3RyZWFtaW5nIHZhbGlkYXRpb24gb24gdG9wIG9mIHRoZQogICAgeG1sUmVhZGVyIGludGVyZmFjZSwgYWRkZWQgdG8geG1sbGludCAtLXN0cmVhbTwvbGk+CiAgPGxpPnhtbFJlYWRlcjogRXhwYW5kKCksIE5leHQoKSBhbmQgRE9NIGFjY2VzcyBnbHVlLCBidWcgZml4ZXM8L2xpPgogIDxsaT5TdXBwb3J0IGZvciBsYXJnZSBmaWxlczogUkdOIHZhbGlkYXRlZCBhIDQuNUdCIGluc3RhbmNlPC9saT4KICA8bGk+VGhyZWFkIHN1cHBvcnQgaXMgbm93IGNvbmZpZ3VyZWQgaW4gYnkgZGVmYXVsdDwvbGk+CiAgPGxpPkZpeGVzOiB1cGRhdGUgb2YgdGhlIFRyaW8gY29kZSAoQmpvcm4pLCBXWFMgRGF0ZSBhbmQgRHVyYXRpb24gZml4ZXMKICAgIChDaGFybGVzIEJvemVtYW4pLCBEVEQgYW5kIG5hbWVzcGFjZXMgKEJyZW50IEhlbmRyaWNrcyksIEhUTUwgcHVzaCBwYXJzZXIKICAgIGFuZCB6ZXJvIGJ5dGVzIGhhbmRsaW5nLCBzb21lIG1pc3NpbmcgV2luZG93cyBmaWxlIHBhdGggY29udmVyc2lvbnMsCiAgICBiZWhhdmlvdXIgb2YgdGhlIHBhcnNlciBhbmQgdmFsaWRhdG9yIGluIHRoZSBwcmVzZW5jZSBvZiAib3V0IG9mIG1lbW9yeSIKICAgIGVycm9yIGNvbmRpdGlvbnM8L2xpPgogIDxsaT5leHRlbmRlZCB0aGUgQVBJIHRvIGJlIGFibGUgdG8gcGx1ZyBhIGdhcmJhZ2UgY29sbGVjdGluZyBtZW1vcnkKICAgIGFsbG9jYXRvciwgYWRkZWQgeG1sTWFsbG9jQXRvbWljKCkgYW5kIG1vZGlmaWVkIHRoZSBhbGxvY2F0aW9ucwogICAgYWNjb3JkaW5nbHkuPC9saT4KICA8bGk+UGVyZm9ybWFuY2VzOiByZW1vdmVkIGV4Y2Vzc2l2ZSBtYWxsb2MoKSBjYWxscywgc3BlZWR1cCBvZiB0aGUgcHVzaCBhbmQKICAgIHhtbFJlYWRlciBpbnRlcmZhY2VzLCByZW1vdmVkIGV4Y2Vzc2l2ZSB0aHJlYWQgbG9ja2luZzwvbGk+CiAgPGxpPkRvY3VtZW50YXRpb246IG1hbiBwYWdlIChKb2huIEZsZWNrKSwgeG1sUmVhZGVyIGRvY3VtZW50YXRpb248L2xpPgogIDxsaT5QeXRob246IGFkZGluZyBiaW5kaW5nIGZvciB4bWxDYXRhbG9nQWRkTG9jYWwgKEJyZW50IE0gSGVuZHJpY2tzKTwvbGk+CjwvdWw+PGgzPjIuNS42OiBBcHIgMSAyMDAzPC9oMz48dWw+PGxpPkZpeGVkIFczQyBYTUwgU2NoZW1hcyBkYXRhdHlwZSwgc2hvdWxkIGJlIGNvbXBsaWFudCBub3cgZXhjZXB0IGZvcgogICAgYmluSGV4IGFuZCBiYXNlNjQgd2hpY2ggYXJlIG5vdCBzdXBwb3J0ZWQgeWV0LjwvbGk+CiAgPGxpPmJ1ZyBmaXhlczogbm9uLUFTQ0lJIElEcywgSFRNTCBvdXRwdXQsIFhJbmNsdWRlIG9uIGxhcmdlIGRvY3MgYW5kCiAgICBYSW5jbHVkZSBlbnRpdGllcyBoYW5kbGluZywgZW5jb2RpbmcgZGV0ZWN0aW9uIG9uIGV4dGVybmFsIHN1YnNldHMsIFhNTAogICAgU2NoZW1hcyBidWdzIGFuZCBtZW1vcnkgbGVha3MsIEhUTUwgcGFyc2VyIChKYW1lcyBCdXJzYSk8L2xpPgogIDxsaT5wb3J0YWJpbGl0eTogcHl0aG9uL3RyaW8gKEFsYmVydCBDaGluKSwgU3VuIGNvbXBpbGVyIHdhcm5pbmdzPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbjogYWRkZWQgLS1yZWxheG5nIG9wdGlvbiB0byB4bWxsaW50IG1hbiBwYWdlIChKb2huKTwvbGk+CiAgPGxpPmltcHJvdmVkIGVycm9yIHJlcG9ydGluZzogeG1sOnNwYWNlLCBzdGFydC9lbmQgdGFnIG1pc21hdGNoZXMsIFJlbGF4IE5HCiAgICBlcnJvcnM8L2xpPgo8L3VsPjxoMz4yLjUuNTogTWFyIDI0IDIwMDM8L2gzPjx1bD48bGk+TG90IG9mIGZpeGVzIG9uIHRoZSBSZWxheCBORyBpbXBsZW1lbnRhdGlvbi4gTW9yZSB0ZXN0aW5nIGluY2x1ZGluZwogICAgRG9jQm9vayBhbmQgVEVJIGV4YW1wbGVzLjwvbGk+CiAgPGxpPkluY3JlYXNlZCB0aGUgc3VwcG9ydCBmb3IgVzNDIFhNTCBTY2hlbWFzIGRhdGF0eXBlPC9saT4KICA8bGk+U2V2ZXJhbCBidWcgZml4ZXMgaW4gdGhlIFVSSSBoYW5kbGluZyBsYXllcjwvbGk+CiAgPGxpPkJ1ZyBmaXhlczogSFRNTCBwYXJzZXIsIHhtbFJlYWRlciwgRFREIHZhbGlkYXRpb24sIFhQYXRoLCBlbmNvZGluZwogICAgY29udmVyc2lvbiwgbGluZSBjb3VudGluZyBpbiB0aGUgcGFyc2VyLjwvbGk+CiAgPGxpPkFkZGVkIHN1cHBvcnQgZm9yICRYTUxMSU5UX0lOREVOVCBlbnZpcm9ubWVudCB2YXJpYWJsZSwgRlRQIGRlbGV0ZTwvbGk+CiAgPGxpPkZpeGVkIHRoZSBSUE0gc3BlYyBmaWxlIG5hbWU8L2xpPgo8L3VsPjxoMz4yLjUuNDogRmViIDIwIDIwMDM8L2gzPjx1bD48bGk+Q29uZm9ybWFuY2UgdGVzdGluZyBhbmQgbG90IG9mIGZpeGVzIG9uIFJlbGF4IE5HIGFuZCBYSW5jbHVkZQogICAgaW1wbGVtZW50YXRpb248L2xpPgogIDxsaT5JbXBsZW1lbnRhdGlvbiBvZiBYUG9pbnRlciBlbGVtZW50KCkgc2NoZW1lPC9saT4KICA8bGk+QnVnIGZpeGVzOiBYTUwgcGFyc2VyLCBYSW5jbHVkZSBlbnRpdGllcyBtZXJnZSwgdmFsaWRpdHkgY2hlY2tpbmcgb24KICAgIG5hbWVzcGFjZXMsCiAgICA8cD4yIHNlcmlhbGl6YXRpb24gYnVncywgbm9kZSBpbmZvIGdlbmVyYXRpb24gcHJvYmxlbXMsIGEgRFREIHJlZ2V4cAogICAgZ2VuZXJhdGlvbiBwcm9ibGVtLjwvcD4KICA8L2xpPgogIDxsaT5Qb3J0YWJpbGl0eTogd2luZG93cyB1cGRhdGVzIGFuZCBwYXRoIGNhbm9uaWNhbGl6YXRpb24gKElnb3IpPC9saT4KICA8bGk+QSBmZXcgdHlwbyBmaXhlcyAoS2phcnRhbiBNYXJhYXMpPC9saT4KICA8bGk+UHl0aG9uIGJpbmRpbmdzIGdlbmVyYXRvciBmaXhlcyAoU3RlcGhhbmUgQmlkb3VsKTwvbGk+CjwvdWw+PGgzPjIuNS4zOiBGZWIgMTAgMjAwMzwvaDM+PHVsPjxsaT5SZWxheE5HIGFuZCBYTUwgU2NoZW1hcyBkYXRhdHlwZXMgaW1wcm92ZW1lbnRzLCBhbmQgYWRkZWQgYSBmaXJzdAogICAgdmVyc2lvbiBvZiBSZWxheE5HIFB5dGhvbiBiaW5kaW5nczwvbGk+CiAgPGxpPkZpeGVzOiBYTGluayAoU2VhbiBDaGl0dGVuZGVuKSwgWEluY2x1ZGUgKFNlYW4gQ2hpdHRlbmRlbiksIEFQSSBmaXggZm9yCiAgICBzZXJpYWxpemluZyBuYW1lc3BhY2Ugbm9kZXMsIGVuY29kaW5nIGNvbnZlcnNpb24gYnVnLCBYSFRNTDEKICBzZXJpYWxpemF0aW9uPC9saT4KICA8bGk+UG9ydGFiaWxpdHkgZml4ZXM6IFdpbmRvd3MgKElnb3IpLCBBTUQgNjRiaXRzIFJQTSBzcGVjIGZpbGU8L2xpPgo8L3VsPjxoMz4yLjUuMjogRmViIDUgMjAwMzwvaDM+PHVsPjxsaT5GaXJzdCBpbXBsZW1lbnRhdGlvbiBvZiBSZWxheE5HLCBhZGRlZCAtLXJlbGF4bmcgZmxhZyB0byB4bWxsaW50PC9saT4KICA8bGk+U2NoZW1hcyBzdXBwb3J0IG5vdyBjb21waWxlZCBpbiBieSBkZWZhdWx0LjwvbGk+CiAgPGxpPkJ1ZyBmaXhlczogRFREIHZhbGlkYXRpb24sIG5hbWVzcGFjZSBjaGVja2luZywgWEluY2x1ZGUgYW5kIGVudGl0aWVzLAogICAgZGVsZWdhdGVVUkkgaW4gWE1MIENhdGFsb2dzLCBIVE1MIHBhcnNlciwgWE1MIHJlYWRlciAoU3TpcGhhbmUgQmlkb3VsKSwKICAgIFhQYXRoIHBhcnNlciBhbmQgZXZhbHVhdGlvbiwgIFVURjhUb1VURjggc2VyaWFsaXphdGlvbiwgWE1MIHJlYWRlciBtZW1vcnkKICAgIGNvbnN1bXB0aW9uLCBIVE1MIHBhcnNlciwgSFRNTCBzZXJpYWxpemF0aW9uIGluIHRoZSBwcmVzZW5jZSBvZgogIG5hbWVzcGFjZXM8L2xpPgogIDxsaT5hZGRlZCBhbiBIVE1MIEFQSSB0byBjaGVjayBlbGVtZW50cyBhbmQgYXR0cmlidXRlcy48L2xpPgogIDxsaT5Eb2N1bWVudGF0aW9uIGltcHJvdmVtZW50LCBQREYgZm9yIHRoZSB0dXRvcmlhbCAoSm9obiBGbGVjayksIGRvYwogICAgcGF0Y2hlcyAoU3RlZmFuIEtvc3QpPC9saT4KICA8bGk+UG9ydGFiaWxpdHkgZml4ZXM6IE5ldEJTRCAoSnVsaW8gTWVyaW5vKSwgV2luZG93cyAoSWdvciBabGF0a292aWMpPC9saT4KICA8bGk+QWRkZWQgcHl0aG9uIGJpbmRpbmdzIGZvciBYUG9pbnRlciwgY29udGV4dHVhbCBlcnJvciByZXBvcnRpbmcKICAgIChTdOlwaGFuZSBCaWRvdWwpPC9saT4KICA8bGk+VVJJL2ZpbGUgZXNjYXBpbmcgcHJvYmxlbXMgKFN0ZWZhbm8gWmFjY2hpcm9saSk8L2xpPgo8L3VsPjxoMz4yLjUuMTogSmFuIDggMjAwMzwvaDM+PHVsPjxsaT5GaXhlcyBhIG1lbW9yeSBsZWFrIGFuZCBjb25maWd1cmF0aW9uL2NvbXBpbGF0aW9uIHByb2JsZW1zIGluIDIuNS4wPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbiB1cGRhdGVzIChKb2huKTwvbGk+CiAgPGxpPmEgY291cGxlIG9mIFhtbFRleHRSZWFkZXIgZml4ZXM8L2xpPgo8L3VsPjxoMz4yLjUuMDogSmFuIDYgMjAwMzwvaDM+PHVsPjxsaT5OZXcgPGEgaHJlZj0ieG1scmVhZGVyLmh0bWwiPlhtbHRleHRSZWFkZXIgaW50ZXJmYWNlPC9hPiBiYXNlZCBvbiBDIwogICAgQVBJICh3aXRoIGhlbHAgb2YgU3TpcGhhbmUgQmlkb3VsKTwvbGk+CiAgPGxpPldpbmRvd3M6IG1vcmUgZXhwb3J0cywgaW5jbHVkaW5nIHRoZSBuZXcgQVBJIChJZ29yKTwvbGk+CiAgPGxpPlhJbmNsdWRlIGZhbGxiYWNrIGZpeDwvbGk+CiAgPGxpPlB5dGhvbjogYmluZGluZ3MgZm9yIHRoZSBuZXcgQVBJLCBwYWNrYWdpbmcgKFN06XBoYW5lIEJpZG91bCksCiAgICBkcnZfbGlieG1sMi5weSBQeXRob24geG1sLnNheCBkcml2ZXIgKFN06XBoYW5lIEJpZG91bCksIGZpeGVzLCBzcGVlZHVwCiAgICBhbmQgaXRlcmF0b3JzIGZvciBQeXRob24tMi4yIChIYW5udSBLcm9zaW5nKTwvbGk+CiAgPGxpPlR1dG9yaWFsIGZpeGVzIChqb2huIEZsZWNrIGFuZCBOaXJhaiBUb2xpYSkgeG1sbGludCBtYW4gdXBkYXRlCiAgKEpvaG4pPC9saT4KICA8bGk+Rml4IGFuIFhNTCBwYXJzZXIgYnVnIHJhaXNlZCBieSBWeWFjaGVzbGF2IFBpbmR5dXJhPC9saT4KICA8bGk+Rml4IGZvciBWTVMgc2VyaWFsaXphdGlvbiAoTmlnZWwgSGFsbCkgYW5kIGNvbmZpZyAoQ3JhaWcgQS4gQmVycnkpPC9saT4KICA8bGk+RW50aXRpZXMgaGFuZGxpbmcgZml4ZXM8L2xpPgogIDxsaT5uZXcgQVBJIHRvIG9wdGlvbmFsbHkgdHJhY2sgbm9kZSBjcmVhdGlvbiBhbmQgZGVsZXRpb24gKEx1a2FzCiAgU2Nocm9lZGVyKTwvbGk+CiAgPGxpPkFkZGVkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBYbWx0ZXh0UmVhZGVyIGludGVyZmFjZSBhbmQgc29tZSA8YSBocmVmPSJndWlkZWxpbmVzLmh0bWwiPlhNTCBndWlkZWxpbmVzPC9hPjwvbGk+CjwvdWw+PGgzPjIuNC4zMDogRGVjIDEyIDIwMDI8L2gzPjx1bD48bGk+Mi40LjI5IGJyb2tlIHRoZSBweXRob24gYmluZGluZ3MsIHJlcmVsZWFzaW5nPC9saT4KICA8bGk+SW1wcm92ZW1lbnQvZml4ZXMgb2YgdGhlIFhNTCBBUEkgZ2VuZXJhdG9yLCBhbmQgY291cGxlIG9mIG1pbm9yIGNvZGUKICAgIGZpeGVzLjwvbGk+CjwvdWw+PGgzPjIuNC4yOTogRGVjIDExIDIwMDI8L2gzPjx1bD48bGk+V2luZG93cyBmaXhlcyAoSWdvcik6IFdpbmRvd3MgQ0UgcG9ydCwgcHRocmVhZCBsaW5raW5nLCBweXRob24gYmluZGluZ3MKICAgIChTdOlwaGFuZSBCaWRvdWwpLCBNaW5ndyAoTWFnbnVzIEhlbm9jaCksIGFuZCBleHBvcnQgbGlzdCB1cGRhdGVzPC9saT4KICA8bGk+Rml4IGZvciBwcmV2IGluIHB5dGhvbiBiaW5kaW5ncyAoRVJESSBHZXJnbyk8L2xpPgogIDxsaT5GaXggZm9yIGVudGl0aWVzIGhhbmRsaW5nIChNYXJjdXMgQ2xhcmtlKTwvbGk+CiAgPGxpPlJlZmFjdG9yZWQgdGhlIFhNTCBhbmQgSFRNTCBkdW1wcyB0byBhIHNpbmdsZSBjb2RlIHBhdGgsIGZpeGVkIFhIVE1MMQogICAgZHVtcDwvbGk+CiAgPGxpPkZpeCBmb3IgVVJJIHBhcnNpbmcgd2hlbiBoYW5kbGluZyBVUk5zIHdpdGggZnJhZ21lbnQgaWRlbnRpZmllcnM8L2xpPgogIDxsaT5GaXggZm9yIEhUVFAgVVJMIGVzY2FwaW5nIHByb2JsZW08L2xpPgogIDxsaT5hZGRlZCBhbiBUZXh0WG1sUmVhZGVyIChDIykgbGlrZSBBUEkgKHdvcmsgaW4gcHJvZ3Jlc3MpPC9saT4KICA8bGk+UmV3cm90ZSB0aGUgQVBJIGluIFhNTCBnZW5lcmF0aW9uIHNjcmlwdCwgaW5jbHVkZXMgYSBDIHBhcnNlciBhbmQgc2F2ZXMKICAgIG1vcmUgaW5mb3JtYXRpb25zIG5lZWRlZCBmb3IgQyMgYmluZGluZ3M8L2xpPgo8L3VsPjxoMz4yLjQuMjg6IE5vdiAyMiAyMDAyPC9oMz48dWw+PGxpPmEgY291cGxlIG9mIHB5dGhvbiBiaW5kaW5nIGZpeGVzPC9saT4KICA8bGk+MiBidWcgZml4ZXMgaW4gdGhlIFhNTCBwdXNoIHBhcnNlcjwvbGk+CiAgPGxpPnBvdGVudGlhbCBtZW1vcnkgbGVhayByZW1vdmVkIChNYXJ0aW4gU3RvaWxvdik8L2xpPgogIDxsaT5maXggdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgZm9yIFVuaXggKERpbWl0cmkgUGFwYWRvcG91bG9zKTwvbGk+CiAgPGxpPmFkZGVkIGVuY29kaW5nIHN1cHBvcnQgZm9yIFhJbmNsdWRlIHBhcnNlPSJ0ZXh0IjwvbGk+CiAgPGxpPmF1dG9kZXRlY3Rpb24gb2YgWEhUTUwxIGFuZCBzcGVjaWZpYyBzZXJpYWxpemF0aW9uIHJ1bGVzIGFkZGVkPC9saT4KICA8bGk+bmFzdHkgdGhyZWFkaW5nIGJ1ZyBmaXhlZCAoV2lsbGlhbSBCcmFjayk8L2xpPgo8L3VsPjxoMz4yLjQuMjc6IE5vdiAxNyAyMDAyPC9oMz48dWw+PGxpPmZpeGVzIGZvciB0aGUgUHl0aG9uIGJpbmRpbmdzPC9saT4KICA8bGk+YSBudW1iZXIgb2YgYnVnIGZpeGVzOiBTR01MIGNhdGFsb2dzLCB4bWxQYXJzZUJhbGFuY2VkQ2h1bmtNZW1vcnkoKSwKICAgIEhUTUwgcGFyc2VyLCAgU2NoZW1hcyAoQ2hhcmxlcyBCb3plbWFuKSwgZG9jdW1lbnQgZnJhZ21lbnQgc3VwcG9ydAogICAgKENocmlzdGlhbiBHbGFobiksIHhtbFJlY29uY2lsaWF0ZU5zIChCcmlhbiBTdGFmZm9yZCksIFhQb2ludGVyLAogICAgeG1sRnJlZU5vZGUoKSwgeG1sU0FYUGFyc2VNZW1vcnkgKFBldGVyIEpvbmVzKSwgeG1sR2V0Tm9kZVBhdGggKFBldHIKICAgIFBhamFzKSwgZW50aXRpZXMgcHJvY2Vzc2luZzwvbGk+CiAgPGxpPmFkZGVkIGdyZXAgdG8geG1sbGludCAtLXNoZWxsPC9saT4KICA8bGk+Vk1TIHVwZGF0ZSBwYXRjaCBmcm9tIENyYWlnIEEuIEJlcnJ5PC9saT4KICA8bGk+Y2xlYW51cCBvZiB0aGUgV2luZG93cyBidWlsZCB3aXRoIHN1cHBvcnQgZm9yIG1vcmUgY29tcGlsZXJzIChJZ29yKSwKICAgIGJldHRlciB0aHJlYWQgc3VwcG9ydCBvbiBXaW5kb3dzPC9saT4KICA8bGk+Y2xlYW51cCBvZiBVbml4IE1ha2VmaWxlcyBhbmQgc3BlYyBmaWxlPC9saT4KICA8bGk+SW1wcm92ZW1lbnRzIHRvIHRoZSBkb2N1bWVudGF0aW9uIChKb2huIEZsZWNrKTwvbGk+CjwvdWw+PGgzPjIuNC4yNjogT2N0IDE4IDIwMDI8L2gzPjx1bD48bGk+UGF0Y2hlcyBmb3IgV2luZG93cyBDRSBwb3J0LCBpbXByb3ZlbWVudHMgb24gV2luZG93cyBwYXRocyBoYW5kbGluZzwvbGk+CiAgPGxpPkZpeGVzIHRvIHRoZSB2YWxpZGF0aW9uICBjb2RlIChEVEQgYW5kIFNjaGVtYXMpLCB4bWxOb2RlR2V0UGF0aCgpICwKICAgIEhUTUwgc2VyaWFsaXphdGlvbiwgTmFtZXNwYWNlIGNvbXBsaWFuY2UsICBhbmQgYSBudW1iZXIgb2Ygc21hbGwKICBwcm9ibGVtczwvbGk+CjwvdWw+PGgzPjIuNC4yNTogU2VwIDI2IDIwMDI8L2gzPjx1bD48bGk+QSBudW1iZXIgb2YgYnVnIGZpeGVzOiBYUGF0aCwgdmFsaWRhdGlvbiwgUHl0aG9uIGJpbmRpbmdzLCBET00gYW5kCiAgICB0cmVlLCB4bWxJL08sICBIdG1sPC9saT4KICA8bGk+U2VyaW91cyByZXdyaXRlIG9mIFhJbmNsdWRlPC9saT4KICA8bGk+TWFkZSBYTUwgU2NoZW1hcyByZWdleHAgcGFydCBvZiB0aGUgZGVmYXVsdCBidWlsZCBhbmQgQVBJcywgc21hbGwgZml4CiAgICBhbmQgaW1wcm92ZW1lbnQgb2YgdGhlIHJlZ2V4cCBjb3JlPC9saT4KICA8bGk+Q2hhbmdlZCB0aGUgdmFsaWRhdGlvbiBjb2RlIHRvIHJldXNlIFhNTCBTY2hlbWFzIHJlZ2V4cCBBUElzPC9saT4KICA8bGk+QmV0dGVyIGhhbmRsaW5nIG9mIFdpbmRvd3MgZmlsZSBwYXRocywgaW1wcm92ZW1lbnQgb2YgTWFrZWZpbGVzIChJZ29yLAogICAgRGFuaWVsIEdlaHJpZ2VyLCBNYXJrIFZha29jKTwvbGk+CiAgPGxpPkltcHJvdmVkIHRoZSBweXRob24gSS9PIGJpbmRpbmdzLCB0aGUgdGVzdHMsIGFkZGVkIHJlc29sdmVyIGFuZCByZWdleHAKICAgIEFQSXM8L2xpPgogIDxsaT5OZXcgbG9nb3MgZnJvbSBNYXJjIExpeWFuYWdlPC9saT4KICA8bGk+VHV0b3JpYWwgaW1wcm92ZW1lbnRzOiBKb2huIEZsZWNrLCBDaHJpc3RvcGhlciBIYXJyaXM8L2xpPgogIDxsaT5NYWtlZmlsZTogRml4ZXMgZm9yIEFNRCB4ODZfNjQgKE1hbmRyYWtlKSwgREVTVERJUiAoQ2hyaXN0b3BoZQogIE1lcmxldCk8L2xpPgogIDxsaT5yZW1vdmFsIG9mIGFsbCBzdGRlcnIvcGVycm9yIHVzZSBmb3IgZXJyb3IgcmVwb3J0aW5nPC9saT4KICA8bGk+QmV0dGVyIGVycm9yIHJlcG9ydGluZzogWFBhdGggYW5kIERURCB2YWxpZGF0aW9uPC9saT4KICA8bGk+dXBkYXRlIG9mIHRoZSB0cmlvIHBvcnRhYmlsaXR5IGxheWVyIChCam9ybiBSZWVzZSk8L2xpPgo8L3VsPjxwPjxzdHJvbmc+Mi40LjI0OiBBdWcgMjIgMjAwMjwvc3Ryb25nPjwvcD48dWw+PGxpPlhQYXRoIGZpeGVzIChXaWxsaWFtKSwgeGY6ZXNjYXBlLXVyaSgpIChXZXNsZXkgVGVycHN0cmEpPC9saT4KICA8bGk+UHl0aG9uIGJpbmRpbmcgZml4ZXM6IG1ha2VmaWxlcyAoV2lsbGlhbSksIGdlbmVyYXRvciwgcnBtIGJ1aWxkLCB4ODYtNjQKICAgIChmY3JvemF0KTwvbGk+CiAgPGxpPkhUTUwgJmx0O3N0eWxlJmd0OyBhbmQgYm9vbGVhbiBhdHRyaWJ1dGVzIHNlcmlhbGl6ZXIgZml4ZXM8L2xpPgogIDxsaT5DMTROIGltcHJvdmVtZW50cyBieSBBbGVrc2V5PC9saT4KICA8bGk+ZG9jIGNsZWFudXBzOiBSaWNrIEpvbmVzPC9saT4KICA8bGk+V2luZG93cyBjb21waWxlciBtYWtlZmlsZSB1cGRhdGVzOiBJZ29yIGFuZCBFbGl6YWJldGggQmFyaGFtPC9saT4KICA8bGk+WEluY2x1ZGU6IGltcGxlbWVudGF0aW9uIG9mIGZhbGxiYWNrIGFuZCB4bWw6YmFzZSBmaXh1cCBhZGRlZDwvbGk+CjwvdWw+PGgzPjIuNC4yMzogSnVseSA2IDIwMDI8L2gzPjx1bD48bGk+cGVyZm9ybWFuY2VzIHBhdGNoZXM6IFBldGVyIEphY29iaTwvbGk+CiAgPGxpPmMxNG4gZml4ZXMsIHRlc3RzdWl0ZSBhbmQgcGVyZm9ybWFuY2VzOiBBbGVrc2V5IFNhbmluPC9saT4KICA8bGk+YWRkZWQgeG1sRG9jRm9ybWF0RHVtcDogQ2hlbWEgQ2Vsb3JpbzwvbGk+CiAgPGxpPm5ldyB0dXRvcmlhbDogSm9obiBGbGVjazwvbGk+CiAgPGxpPm5ldyBoYXNoIGZ1bmN0aW9ucyBhbmQgcGVyZm9ybWFuY2VzOiBTYW5kZXIgVmVzaWssIHBvcnRhYmlsaXR5IGZpeCBmcm9tCiAgICBQZXRlciBKYWNvYmk8L2xpPgogIDxsaT5hIG51bWJlciBvZiBidWcgZml4ZXM6IFhQYXRoIChXaWxsaWFtIEJyYWNrLCBSaWNoYXJkIEppbmtzKSwgWE1MIGFuZAogICAgSFRNTCBwYXJzZXJzLCBJRCBsb29rdXAgZnVuY3Rpb248L2xpPgogIDxsaT5yZW1vdmFsIG9mIGFsbCByZW1haW5pbmcgc3ByaW50ZjogQWxla3NleSBTYW5pbjwvbGk+CjwvdWw+PGgzPjIuNC4yMjogTWF5IDI3IDIwMDI8L2gzPjx1bD48bGk+YSBudW1iZXIgb2YgYnVnIGZpeGVzOiBjb25maWd1cmUgc2NyaXB0cywgYmFzZSBoYW5kbGluZywgcGFyc2VyLCBtZW1vcnkKICAgIHVzYWdlLCBIVE1MIHBhcnNlciwgWFBhdGgsIGRvY3VtZW50YXRpb24gKENocmlzdGlhbiBDb3JuZWxzc2VuKSwKICAgIGluZGVudGF0aW9uLCBVUkkgcGFyc2luZzwvbGk+CiAgPGxpPk9wdGltaXphdGlvbnMgZm9yIFhNTFNlYywgZml4aW5nIGFuZCBtYWtpbmcgcHVibGljIHNvbWUgb2YgdGhlIG5ldHdvcmsKICAgIHByb3RvY29sIGhhbmRsZXJzIChBbGVrc2V5KTwvbGk+CiAgPGxpPnBlcmZvcm1hbmNlIHBhdGNoIGZyb20gR2FyeSBQZW5uaW5ndG9uPC9saT4KICA8bGk+Q2hhcmxlcyBCb3plbWFuIHByb3ZpZGVkIGRhdGUgYW5kIHRpbWUgc3VwcG9ydCBmb3IgWE1MIFNjaGVtYXMKICBkYXRhdHlwZXM8L2xpPgo8L3VsPjxoMz4yLjQuMjE6IEFwciAyOSAyMDAyPC9oMz48cD5UaGlzIHJlbGVhc2UgaXMgYm90aCBhIGJ1ZyBmaXggcmVsZWFzZSBhbmQgYWxzbyBjb250YWlucyB0aGUgZWFybHkgWE1MClNjaGVtYXMgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sc2NoZW1hLTEvIj5zdHJ1Y3R1cmVzPC9hPiBhbmQgPGEgaHJlZj0iaHR0cDovL3d3dy53My5vcmcvVFIveG1sc2NoZW1hLTIvIj5kYXRhdHlwZXM8L2E+IGNvZGUsIGJld2FyZSwgYWxsCmludGVyZmFjZXMgYXJlIGxpa2VseSB0byBjaGFuZ2UsIHRoZXJlIGlzIGh1Z2UgaG9sZXMsIGl0IGlzIGNsZWFybHkgYSB3b3JrIGluCnByb2dyZXNzIGFuZCBkb24ndCBldmVuIHRoaW5rIG9mIHB1dHRpbmcgdGhpcyBjb2RlIGluIGEgcHJvZHVjdGlvbiBzeXN0ZW0sCml0J3MgYWN0dWFsbHkgbm90IGNvbXBpbGVkIGluIGJ5IGRlZmF1bHQuIFRoZSByZWFsIGZpeGVzIGFyZTo8L3A+PHVsPjxsaT5hIGNvdXBsZSBvZiBidWdzIG9yIGxpbWl0YXRpb25zIGludHJvZHVjZWQgaW4gMi40LjIwPC9saT4KICA8bGk+cGF0Y2hlcyBmb3IgQm9ybGFuZCBDKysgYW5kIE1TQyBieSBJZ29yPC9saT4KICA8bGk+c29tZSBmaXhlcyBvbiBYUGF0aCBzdHJpbmdzIGFuZCBjb25mb3JtYW5jZSBwYXRjaGVzIGJ5IFJpY2hhcmQKICBKaW5rczwvbGk+CiAgPGxpPnBhdGNoIGZyb20gQWxla3NleSBmb3IgdGhlIEV4Y0MxNE4gc3BlY2lmaWNhdGlvbjwvbGk+CiAgPGxpPk9TRi8xIGJ1ZyBmaXggYnkgQmpvcm48L2xpPgo8L3VsPjxoMz4yLjQuMjA6IEFwciAxNSAyMDAyPC9oMz48dWw+PGxpPmJ1ZyBmaXhlczogZmlsZSBkZXNjcmlwdG9yIGxlYWssIFhQYXRoLCBIVE1MIG91dHB1dCwgRFREIHZhbGlkYXRpb248L2xpPgogIDxsaT5YUGF0aCBjb25mb3JtYW5jZSB0ZXN0aW5nIGJ5IFJpY2hhcmQgSmlua3M8L2xpPgogIDxsaT5Qb3J0YWJpbGl0eSBmaXhlczogU29sYXJpcywgTVBFL2lYLCBXaW5kb3dzLCBPU0YvMSwgcHl0aG9uIGJpbmRpbmdzLAogICAgbGlieG1sLm00PC9saT4KPC91bD48aDM+Mi40LjE5OiBNYXIgMjUgMjAwMjwvaDM+PHVsPjxsaT5idWcgZml4ZXM6IGhhbGYgYSBkb3plbiBYUGF0aCBidWdzLCBWYWxpZGF0aW9uLCBJU08tTGF0aW4gdG8gVVRGOAogICAgZW5jb2RlcjwvbGk+CiAgPGxpPnBvcnRhYmlsaXR5IGZpeGVzIGluIHRoZSBIVFRQIGNvZGU8L2xpPgogIDxsaT5tZW1vcnkgYWxsb2NhdGlvbiBjaGVja3MgdXNpbmcgdmFsZ3JpbmQsIGFuZCBwcm9maWxpbmcgdGVzdHM8L2xpPgogIDxsaT5yZXZhbXAgb2YgdGhlIFdpbmRvd3MgYnVpbGQgYW5kIE1ha2VmaWxlczwvbGk+CjwvdWw+PGgzPjIuNC4xODogTWFyIDE4IDIwMDI8L2gzPjx1bD48bGk+YnVnIGZpeGVzOiB0cmVlLCBTQVgsIGNhbm9uaWNhbGl6YXRpb24sIHZhbGlkYXRpb24sIHBvcnRhYmlsaXR5LAogIFhQYXRoPC9saT4KICA8bGk+cmVtb3ZlZCB0aGUgLS13aXRoLWJ1ZmZlciBvcHRpb24gaXQgd2FzIGJlY29taW5nIHVubWFpbnRhaW5hYmxlPC9saT4KICA8bGk+c2VyaW91cyBjbGVhbnVwIG9mIHRoZSBQeXRob24gbWFrZWZpbGVzPC9saT4KICA8bGk+c3BlZWR1cCBwYXRjaCB0byBYUGF0aCB2ZXJ5IGVmZmVjdGl2ZSBmb3IgRG9jQm9vayBzdHlsZXNoZWV0czwvbGk+CiAgPGxpPkZpeGVzIGZvciBXaW5kb3dzIGJ1aWxkLCBjbGVhbnVwIG9mIHRoZSBkb2N1bWVudGF0aW9uPC9saT4KPC91bD48aDM+Mi40LjE3OiBNYXIgOCAyMDAyPC9oMz48dWw+PGxpPmEgbG90IG9mIGJ1ZyBmaXhlcywgaW5jbHVkaW5nICJuYW1lc3BhY2Ugbm9kZXMgaGF2ZSBubyBwYXJlbnRzIGluCiAgWFBhdGgiPC9saT4KICA8bGk+Zml4ZWQvaW1wcm92ZWQgdGhlIFB5dGhvbiB3cmFwcGVycywgYWRkZWQgbW9yZSBleGFtcGxlcyBhbmQgbW9yZQogICAgcmVncmVzc2lvbiB0ZXN0cywgWFBhdGggZXh0ZW5zaW9uIGZ1bmN0aW9ucyBjYW4gbm93IHJldHVybiBub2RlLXNldHM8L2xpPgogIDxsaT5hZGRlZCB0aGUgWE1MIENhbm9uaWNhbGl6YXRpb24gc3VwcG9ydCBmcm9tIEFsZWtzZXkgU2FuaW48L2xpPgo8L3VsPjxoMz4yLjQuMTY6IEZlYiAyMCAyMDAyPC9oMz48dWw+PGxpPmEgbG90IG9mIGJ1ZyBmaXhlcywgbW9zdCBvZiB0aGVtIHdlcmUgdHJpZ2dlcmVkIGJ5IHRoZSBYTUwgVGVzdHN1aXRlCiAgICBmcm9tIE9BU0lTIGFuZCBXM0MuIENvbXBsaWFuY2UgaGFzIGJlZW4gc2lnbmlmaWNhbnRseSBpbXByb3ZlZC48L2xpPgogIDxsaT5hIGNvdXBsZSBvZiBwb3J0YWJpbGl0eSBmaXhlcyB0b28uPC9saT4KPC91bD48aDM+Mi40LjE1OiBGZWIgMTEgMjAwMjwvaDM+PHVsPjxsaT5GaXhlZCB0aGUgTWFrZWZpbGVzLCBlc3BlY2lhbGx5IHRoZSBweXRob24gbW9kdWxlIG9uZXM8L2xpPgogIDxsaT5BIGZldyBidWcgZml4ZXMgYW5kIGNsZWFudXA8L2xpPgogIDxsaT5JbmNsdWRlcyBjbGVhbnVwPC9saT4KPC91bD48aDM+Mi40LjE0OiBGZWIgOCAyMDAyPC9oMz48dWw+PGxpPkNoYW5nZSBvZiBMaWNlbnNlIHRvIHRoZSA8YSBocmVmPSJodHRwOi8vd3d3Lm9wZW5zb3VyY2Uub3JnL2xpY2Vuc2VzL21pdC1saWNlbnNlLmh0bWwiPk1JVAogICAgTGljZW5zZTwvYT4gYmFzaWNhbGx5IGZvciBpbnRlZ3JhdGlvbiBpbiBYRnJlZTg2IGNvZGViYXNlLCBhbmQgcmVtb3ZpbmcKICAgIGNvbmZ1c2lvbiBhcm91bmQgdGhlIHByZXZpb3VzIGR1YWwtbGljZW5zaW5nPC9saT4KICA8bGk+YWRkZWQgUHl0aG9uIGJpbmRpbmdzLCBiZXRhIHNvZnR3YXJlIGJ1dCBzaG91bGQgYWxyZWFkeSBiZSBxdWl0ZQogICAgY29tcGxldGU8L2xpPgogIDxsaT5hIGxhcmdlIG51bWJlciBvZiBmaXhlcyBhbmQgY2xlYW51cHMsIGVzcGVjaWFsbHkgZm9yIGFsbCB0cmVlCiAgICBtYW5pcHVsYXRpb25zPC9saT4KICA8bGk+Y2xlYW51cCBvZiB0aGUgaGVhZGVycywgZ2VuZXJhdGlvbiBvZiBhIHJlZmVyZW5jZSBBUEkgZGVmaW5pdGlvbiBpbgogIFhNTDwvbGk+CjwvdWw+PGgzPjIuNC4xMzogSmFuIDE0IDIwMDI8L2gzPjx1bD48bGk+dXBkYXRlIG9mIHRoZSBkb2N1bWVudGF0aW9uOiBKb2huIEZsZWNrIGFuZCBDaGFybGllIEJvemVtYW48L2xpPgogIDxsaT5jbGVhbnVwIG9mIHRpbWluZyBjb2RlIGZyb20gSnVzdGluIEZsZXRjaGVyPC9saT4KICA8bGk+Zml4ZXMgZm9yIFdpbmRvd3MgYW5kIGluaXRpYWwgdGhyZWFkIHN1cHBvcnQgb24gV2luMzI6IElnb3IgYW5kIFNlcmd1ZWkKICAgIE5hcm9qbnlpPC9saT4KICA8bGk+Q3lnd2luIHBhdGNoIGZyb20gUm9iZXJ0IENvbGxpbnM8L2xpPgogIDxsaT5hZGRlZCB4bWxTZXRFbnRpdHlSZWZlcmVuY2VGdW5jKCkgZm9yIEtlaXRoIElzZGFsZSB3b3JrIG9uIHhzbGRiZzwvbGk+CjwvdWw+PGgzPjIuNC4xMjogRGVjIDcgMjAwMTwvaDM+PHVsPjxsaT5hIGZldyBidWcgZml4ZXM6IHRocmVhZCAoR2FyeSBQZW5uaW5ndG9uKSwgeG1sbGludCAoR2VlcnQgS2xvb3N0ZXJtYW4pLAogICAgWE1MIHBhcnNlciAoUm9iaW4gQmVyam9uKSwgWFBvaW50ZXIgKERhbm55IEphbXNoeSksIEkvTyBjbGVhbnVwcwogIChyb2JlcnQpPC9saT4KICA8bGk+RXJpYyBMYXZpZ25lIGNvbnRyaWJ1dGVkIHByb2plY3QgZmlsZXMgZm9yIE1hY09TPC9saT4KICA8bGk+c29tZSBtYWtlZmlsZXMgY2xlYW51cHM8L2xpPgo8L3VsPjxoMz4yLjQuMTE6IE5vdiAyNiAyMDAxPC9oMz48dWw+PGxpPmZpeGVkIGEgY291cGxlIG9mIGVycm9ycyBpbiB0aGUgaW5jbHVkZXMsIGZpeGVkIGEgZmV3IGJ1Z3MsIHNvbWUgY29kZQogICAgY2xlYW51cHM8L2xpPgogIDxsaT54bWxsaW50IG1hbiBwYWdlcyBpbXByb3ZlbWVudCBieSBIZWlrbyBSdXBwPC9saT4KICA8bGk+dXBkYXRlZCBWTVMgYnVpbGQgaW5zdHJ1Y3Rpb25zIGZyb20gSm9obiBBIEZvdGhlcmluZ2hhbTwvbGk+CiAgPGxpPldpbmRvd3MgTWFrZWZpbGVzIHVwZGF0ZXMgZnJvbSBJZ29yPC9saT4KPC91bD48aDM+Mi40LjEwOiBOb3YgMTAgMjAwMTwvaDM+PHVsPjxsaT5VUkkgZXNjYXBpbmcgZml4IChKb2VsIFlvdW5nKTwvbGk+CiAgPGxpPmFkZGVkIHhtbEdldE5vZGVQYXRoKCkgKGZvciBwYXRocyBvciBYUG9pbnRlcnMgZ2VuZXJhdGlvbik8L2xpPgogIDxsaT5GaXhlcyBuYW1lc3BhY2UgaGFuZGxpbmcgcHJvYmxlbXMgd2hlbiB1c2luZyBEVEQgYW5kIHZhbGlkYXRpb248L2xpPgogIDxsaT5pbXByb3ZlbWVudHMgb24geG1sbGludDogTW9ydXMgV2FsdGVyIHBhdGNoZXMgZm9yIC0tZm9ybWF0IGFuZAogICAgLS1lbmNvZGUsIFN0ZWZhbiBLb3N0IGFuZCBIZWlrbyBSdXBwIGltcHJvdmVtZW50cyBvbiB0aGUgLS1zaGVsbDwvbGk+CiAgPGxpPmZpeGVzIGZvciB4bWxjYXRhbG9nIGxpbmtpbmcgcG9pbnRlZCBieSBXZWlxaSBHYW88L2xpPgogIDxsaT5maXhlcyB0byB0aGUgSFRNTCBwYXJzZXI8L2xpPgo8L3VsPjxoMz4yLjQuOTogTm92IDYgMjAwMTwvaDM+PHVsPjxsaT5maXhlcyBtb3JlIGNhdGFsb2cgYnVnczwvbGk+CiAgPGxpPmF2b2lkIGEgY29tcGlsYXRpb24gcHJvYmxlbSwgaW1wcm92ZSB4bWxHZXRMaW5lTm8oKTwvbGk+CjwvdWw+PGgzPjIuNC44OiBOb3YgNCAyMDAxPC9oMz48dWw+PGxpPmZpeGVkIFNHTUwgY2F0YWxvZ3MgYnJva2VuIGluIHByZXZpb3VzIHJlbGVhc2UsIHVwZGF0ZWQgeG1sY2F0YWxvZwogIHRvb2w8L2xpPgogIDxsaT5maXhlZCBhIGNvbXBpbGUgZXJyb3JzIGFuZCBzb21lIGluY2x1ZGVzIHRyb3VibGVzLjwvbGk+CjwvdWw+PGgzPjIuNC43OiBPY3QgMzAgMjAwMTwvaDM+PHVsPjxsaT5leHBvcnRlZCBzb21lIGRlYnVnZ2luZyBpbnRlcmZhY2VzPC9saT4KICA8bGk+c2VyaW91cyByZXdyaXRlIG9mIHRoZSBjYXRhbG9nIGNvZGU8L2xpPgogIDxsaT5pbnRlZ3JhdGVkIEdhcnkgUGVubmluZ3RvbiB0aHJlYWQgc2FmZXR5IHBhdGNoLCBhZGRlZCBjb25maWd1cmUgb3B0aW9uCiAgICBhbmQgcmVncmVzc2lvbiB0ZXN0czwvbGk+CiAgPGxpPnJlbW92ZWQgYW4gSFRNTCBwYXJzZXIgYnVnPC9saT4KICA8bGk+Zml4ZWQgYSBjb3VwbGUgb2YgcG90ZW50aWFsbHkgc2VyaW91cyB2YWxpZGF0aW9uIGJ1Z3M8L2xpPgogIDxsaT5pbnRlZ3JhdGVkIHRoZSBTR01MIERvY0Jvb2sgc3VwcG9ydCBpbiB4bWxsaW50PC9saT4KICA8bGk+Y2hhbmdlZCB0aGUgbmFub2Z0cCBhbm9ueW1vdXMgbG9naW4gcGFzc3dkPC9saT4KICA8bGk+c29tZSBJL08gY2xlYW51cCBhbmQgYSBjb3VwbGUgb2YgaW50ZXJmYWNlcyBmb3IgUGVybCB3cmFwcGVyPC9saT4KICA8bGk+Z2VuZXJhbCBidWcgZml4ZXM8L2xpPgogIDxsaT51cGRhdGVkIHhtbGxpbnQgbWFuIHBhZ2UgYnkgSm9obiBGbGVjazwvbGk+CiAgPGxpPnNvbWUgVk1TIGFuZCBXaW5kb3dzIHVwZGF0ZXM8L2xpPgo8L3VsPjxoMz4yLjQuNjogT2N0IDEwIDIwMDE8L2gzPjx1bD48bGk+YWRkZWQgYW4gdXBkYXRlZCBtYW4gcGFnZXMgYnkgSm9obiBGbGVjazwvbGk+CiAgPGxpPnBvcnRhYmlsaXR5IGFuZCBjb25maWd1cmUgZml4ZXM8L2xpPgogIDxsaT5hbiBpbmZpbml0ZSBsb29wIG9uIHRoZSBIVE1MIHBhcnNlciB3YXMgcmVtb3ZlZCAoV2lsbGlhbSk8L2xpPgogIDxsaT5XaW5kb3dzIG1ha2VmaWxlIHBhdGNoZXMgZnJvbSBJZ29yPC9saT4KICA8bGk+Zml4ZWQgaGFsZiBhIGRvemVuIGJ1Z3MgcmVwb3J0ZWQgZm9yIGxpYnhtbCBvciBsaWJ4c2x0PC9saT4KICA8bGk+dXBkYXRlZCB4bWxjYXRhbG9nIHRvIGJlIGFibGUgdG8gbW9kaWZ5IFNHTUwgc3VwZXIgY2F0YWxvZ3M8L2xpPgo8L3VsPjxoMz4yLjQuNTogU2VwIDE0IDIwMDE8L2gzPjx1bD48bGk+UmVtb3ZlIGEgZmV3IGFubm95aW5nIGJ1Z3MgaW4gMi40LjQ8L2xpPgogIDxsaT5mb3JjZXMgdGhlIEhUTUwgc2VyaWFsaXplciB0byBvdXRwdXQgZGVjaW1hbCBjaGFycmVmcyBzaW5jZSBzb21lCiAgICB2ZXJzaW9uIG9mIE5ldHNjYXBlIGNhbid0IGhhbmRsZSBoZXhhZGVjaW1hbCBvbmVzPC9saT4KPC91bD48aDM+MS44LjE2OiBTZXAgMTQgMjAwMTwvaDM+PHVsPjxsaT5tYWludGVuYW5jZSByZWxlYXNlIG9mIHRoZSBvbGQgbGlieG1sMSBicmFuY2gsIGNvdXBsZSBvZiBidWcgYW5kCiAgICBwb3J0YWJpbGl0eSBmaXhlczwvbGk+CjwvdWw+PGgzPjIuNC40OiBTZXAgMTIgMjAwMTwvaDM+PHVsPjxsaT5hZGRlZCAtLWNvbnZlcnQgdG8geG1sY2F0YWxvZywgYnVnIGZpeGVzIGFuZCBjbGVhbnVwcyBvZiBYTUwKICBDYXRhbG9nPC9saT4KICA8bGk+YSBmZXcgYnVnIGZpeGVzIGFuZCBzb21lIHBvcnRhYmlsaXR5IGNoYW5nZXM8L2xpPgogIDxsaT5zb21lIGRvY3VtZW50YXRpb24gY2xlYW51cHM8L2xpPgo8L3VsPjxoMz4yLjQuMzogIEF1ZyAyMyAyMDAxPC9oMz48dWw+PGxpPlhNTCBDYXRhbG9nIHN1cHBvcnQgc2VlIHRoZSBkb2M8L2xpPgogIDxsaT5OZXcgTmFOL0luZmluaXR5IGZsb2F0aW5nIHBvaW50IGNvZGU8L2xpPgogIDxsaT5BIGZldyBidWcgZml4ZXM8L2xpPgo8L3VsPjxoMz4yLjQuMjogIEF1ZyAxNSAyMDAxPC9oMz48dWw+PGxpPmFkZHMgeG1sTGluZU51bWJlcnNEZWZhdWx0KCkgdG8gY29udHJvbCBsaW5lIG51bWJlciBnZW5lcmF0aW9uPC9saT4KICA8bGk+bG90IG9mIGJ1ZyBmaXhlczwvbGk+CiAgPGxpPnRoZSBNaWNyb3NvZnQgTVNDIHByb2plY3RzIGZpbGVzIHNob3VsZCBub3cgYmUgdXAgdG8gZGF0ZTwvbGk+CiAgPGxpPmluaGVyaXRhbmNlIG9mIG5hbWVzcGFjZXMgZnJvbSBEVEQgZGVmYXVsdGVkIGF0dHJpYnV0ZXM8L2xpPgogIDxsaT5maXhlcyBhIHNlcmlvdXMgcG90ZW50aWFsIHNlY3VyaXR5IGJ1ZzwvbGk+CiAgPGxpPmFkZGVkIGEgLS1mb3JtYXQgb3B0aW9uIHRvIHhtbGxpbnQ8L2xpPgo8L3VsPjxoMz4yLjQuMTogIEp1bHkgMjQgMjAwMTwvaDM+PHVsPjxsaT5wb3NzaWJpbGl0eSB0byBrZWVwIGxpbmUgbnVtYmVycyBpbiB0aGUgdHJlZTwvbGk+CiAgPGxpPnNvbWUgY29tcHV0YXRpb24gTmFOIGZpeGVzPC9saT4KICA8bGk+ZXh0ZW5zaW9uIG9mIHRoZSBYUGF0aCBBUEk8L2xpPgogIDxsaT5jbGVhbnVwIGZvciBhbHBoYSBhbmQgaWE2NCB0YXJnZXRzPC9saT4KICA8bGk+cGF0Y2ggdG8gYWxsb3cgc2F2aW5nIHRocm91Z2ggSFRUUCBQVVQgb3IgUE9TVDwvbGk+CjwvdWw+PGgzPjIuNC4wOiBKdWx5IDEwIDIwMDE8L2gzPjx1bD48bGk+Rml4ZWQgYSBmZXcgYnVncyBpbiBYUGF0aCwgdmFsaWRhdGlvbiwgYW5kIHRyZWUgaGFuZGxpbmcuPC9saT4KICA8bGk+Rml4ZWQgWE1MIEJhc2UgaW1wbGVtZW50YXRpb24sIGFkZGVkIGEgY291cGxlIG9mIGV4YW1wbGVzIHRvIHRoZQogICAgcmVncmVzc2lvbiB0ZXN0czwvbGk+CiAgPGxpPkEgYml0IG9mIGNsZWFudXA8L2xpPgo8L3VsPjxoMz4yLjMuMTQ6IEp1bHkgNSAyMDAxPC9oMz48dWw+PGxpPmZpeGVkIHNvbWUgZW50aXRpZXMgcHJvYmxlbXMgYW5kIHJlZHVjZSBtZW1vcnkgcmVxdWlyZW1lbnQgd2hlbgogICAgc3Vic3RpdHV0aW5nIHRoZW08L2xpPgogIDxsaT5sb3RzIG9mIGltcHJvdmVtZW50cyBpbiB0aGUgWFBhdGggcXVlcmllcyBpbnRlcnByZXRlciBjYW4gYmUKICAgIHN1YnN0YW50aWFsbHkgZmFzdGVyPC9saT4KICA8bGk+TWFrZWZpbGVzIGFuZCBjb25maWd1cmUgY2xlYW51cHM8L2xpPgogIDxsaT5GaXhlcyB0byBYUGF0aCB2YXJpYWJsZSBldmFsLCBhbmQgY29tcGFyZSBvbiBlbXB0eSBub2RlIHNldDwvbGk+CiAgPGxpPkhUTUwgdGFnIGNsb3NpbmcgYnVnIGZpeGVkPC9saT4KICA8bGk+Rml4ZWQgYW4gVVJJIHJlZmVyZW5jZSBjb21wdXRhdGlvbiBwcm9ibGVtIHdoZW4gdmFsaWRhdGluZzwvbGk+CjwvdWw+PGgzPjIuMy4xMzogSnVuZSAyOCAyMDAxPC9oMz48dWw+PGxpPjIuMy4xMiBjb25maWd1cmUuaW4gd2FzIGJyb2tlbiBhcyB3ZWxsIGFzIHRoZSBwdXNoIG1vZGUgWE1MIHBhcnNlcjwvbGk+CiAgPGxpPmEgZmV3IG1vcmUgZml4ZXMgZm9yIGNvbXBpbGF0aW9uIG9uIFdpbmRvd3MgTVNDIGJ5IFlvbiBEZXJlazwvbGk+CjwvdWw+PGgzPjEuOC4xNDogSnVuZSAyOCAyMDAxPC9oMz48dWw+PGxpPlpiaWduaWV3IENoeWxhIGdhdmUgYSBwYXRjaCB0byB1c2UgdGhlIG9sZCBYTUwgcGFyc2VyIGluIHB1c2ggbW9kZTwvbGk+CiAgPGxpPlNtYWxsIE1ha2VmaWxlIGZpeDwvbGk+CjwvdWw+PGgzPjIuMy4xMjogSnVuZSAyNiAyMDAxPC9oMz48dWw+PGxpPmxvdHMgb2YgY2xlYW51cDwvbGk+CiAgPGxpPmEgY291cGxlIG9mIHZhbGlkYXRpb24gZml4PC9saT4KICA8bGk+Zml4ZWQgbGluZSBudW1iZXIgY291bnRpbmc8L2xpPgogIDxsaT5maXhlZCBzZXJpb3VzIHByb2JsZW1zIGluIHRoZSBYSW5jbHVkZSBwcm9jZXNzaW5nPC9saT4KICA8bGk+YWRkZWQgc3VwcG9ydCBmb3IgVVRGOCBCT00gYXQgYmVnaW5uaW5nIG9mIGVudGl0aWVzPC9saT4KICA8bGk+Zml4ZWQgYSBzdHJhbmdlIGdjYyBvcHRpbWl6ZXIgYnVncyBpbiB4cGF0aCBoYW5kbGluZyBvZiBmbG9hdCwgZ2NjLTMuMAogICAgbWlzY29tcGlsZSB1cmkuYyAoV2lsbGlhbSksIFRob21hcyBMZWl0bmVyIHByb3ZpZGVkIGEgZml4IGZvciB0aGUKICAgIG9wdGltaXplciBvbiBUcnU2NDwvbGk+CiAgPGxpPmluY29ycG9yYXRlZCBZb24gRGVyZWsgYW5kIElnb3IgWmxhdGtvdmljICBmaXhlcyBhbmQgaW1wcm92ZW1lbnRzIGZvcgogICAgY29tcGlsYXRpb24gb24gV2luZG93cyBNU0M8L2xpPgogIDxsaT51cGRhdGUgb2YgbGlieG1sLWRvYy5lbCAoRmVsaXggTmF0dGVyKTwvbGk+CiAgPGxpPmZpeGVkIDIgYnVncyBpbiBVUkkgbm9ybWFsaXphdGlvbiBjb2RlPC9saT4KPC91bD48aDM+Mi4zLjExOiBKdW5lIDE3IDIwMDE8L2gzPjx1bD48bGk+dXBkYXRlcyB0byB0cmlvLCBNYWtlZmlsZXMgYW5kIGNvbmZpZ3VyZSBzaG91bGQgZml4IHNvbWUgcG9ydGFiaWxpdHkKICAgIHByb2JsZW1zIChhbHBoYSk8L2xpPgogIDxsaT5maXhlZCBzb21lIEhUTUwgc2VyaWFsaXphdGlvbiBwcm9ibGVtcyAocHJlLCBzY3JpcHQsIGFuZCBibG9jay9pbmxpbmUKICAgIGhhbmRsaW5nKSwgYWRkZWQgZW5jb2RpbmcgYXdhcmUgQVBJcywgY2xlYW51cCBvZiB0aGlzIGNvZGU8L2xpPgogIDxsaT5hZGRlZCB4bWxIYXNOc1Byb3AoKTwvbGk+CiAgPGxpPmltcGxlbWVudGVkIGEgc3BlY2lmaWMgUEkgZm9yIGVuY29kaW5nIHN1cHBvcnQgaW4gdGhlIERvY0Jvb2sgU0dNTAogICAgcGFyc2VyPC9saT4KICA8bGk+c29tZSBYUGF0aCBmaXhlcyAoLUluZmluaXR5LCAvIGFzIGEgZnVuY3Rpb24gcGFyYW1ldGVyIGFuZCBuYW1lc3BhY2VzCiAgICBub2RlIHNlbGVjdGlvbik8L2xpPgogIDxsaT5maXhlZCBhIHBlcmZvcm1hbmNlIHByb2JsZW0gYW5kIGFuIGVycm9yIGluIHRoZSB2YWxpZGF0aW9uIGNvZGU8L2xpPgogIDxsaT5maXhlZCBYSW5jbHVkZSByb3V0aW5lIHRvIGltcGxlbWVudCB0aGUgcmVjdXJzaXZlIGJlaGF2aW91cjwvbGk+CiAgPGxpPmZpeGVkIHhtbEZyZWVOb2RlIHByb2JsZW0gd2hlbiBsaWJ4bWwgaXMgaW5jbHVkZWQgc3RhdGljYWxseSB0d2ljZTwvbGk+CiAgPGxpPmFkZGVkIC0tdmVyc2lvbiB0byB4bWxsaW50IGZvciBidWcgcmVwb3J0czwvbGk+CjwvdWw+PGgzPjIuMy4xMDogSnVuZSAxIDIwMDE8L2gzPjx1bD48bGk+Zml4ZWQgdGhlIFNHTUwgY2F0YWxvZyBzdXBwb3J0PC9saT4KICA8bGk+YSBudW1iZXIgb2YgcmVwb3J0ZWQgYnVncyBnb3QgZml4ZWQsIGluIFhQYXRoLCBpY29udiBkZXRlY3Rpb24sCiAgICBYSW5jbHVkZSBwcm9jZXNzaW5nPC9saT4KICA8bGk+WFBhdGggc3RyaW5nIGZ1bmN0aW9uIHNob3VsZCBub3cgaGFuZGxlIHVuaWNvZGUgY29ycmVjdGx5PC9saT4KPC91bD48aDM+Mi4zLjk6IE1heSAxOSAyMDAxPC9oMz48cD5Mb3RzIG9mIGJ1Z2ZpeGVzLCBhbmQgYWRkZWQgYSBiYXNpYyBTR01MIGNhdGFsb2cgc3VwcG9ydDo8L3A+PHVsPjxsaT5IVE1MIHB1c2ggYnVnZml4ICM1NDg5MSBhbmQgYW5vdGhlciBwYXRjaCBmcm9tIEpvbmFzIEJvcmdzdHL2bTwvbGk+CiAgPGxpPnNvbWUgc2VyaW91cyBzcGVlZCBvcHRpbWl6YXRpb24gYWdhaW48L2xpPgogIDxsaT5zb21lIGRvY3VtZW50YXRpb24gY2xlYW51cHM8L2xpPgogIDxsaT50cnlpbmcgdG8gZ2V0IGJldHRlciBsaW5raW5nIG9uIFNvbGFyaXMgKC1SKTwvbGk+CiAgPGxpPlhQYXRoIEFQSSBjbGVhbnVwIGZyb20gVGhvbWFzIEJyb3llcjwvbGk+CiAgPGxpPlZhbGlkYXRpb24gYnVnIGZpeGVkICM1NDYzMSwgYWRkZWQgYSBwYXRjaCBmcm9tIEdhcnkgUGVubmluZ3RvbiwgZml4ZWQKICAgIHhtbFZhbGlkR2V0VmFsaWRFbGVtZW50cygpPC9saT4KICA8bGk+QWRkZWQgYW4gSU5TVEFMTCBmaWxlPC9saT4KICA8bGk+QXR0cmlidXRlIHJlbW92YWwgYWRkZWQgdG8gQVBJOiAjNTQ0MzM8L2xpPgogIDxsaT5hZGRlZCBhIGJhc2ljIHN1cHBvcnQgZm9yIFNHTUwgY2F0YWxvZ3M8L2xpPgogIDxsaT5maXhlZCB4bWxLZWVwQmxhbmtzRGVmYXVsdCgwKSBBUEk8L2xpPgogIDxsaT5idWdmaXggaW4geG1sTm9kZUdldExhbmcoKTwvbGk+CiAgPGxpPmZpeGVkIGEgc21hbGwgY29uZmlndXJlIHBvcnRhYmlsaXR5IHByb2JsZW08L2xpPgogIDxsaT5maXhlZCBhbiBpbnZlcnNpb24gb2YgU1lTVEVNIGFuZCBQVUJMSUMgaWRlbnRpZmllciBpbiBIVE1MIGRvY3VtZW50PC9saT4KPC91bD48aDM+MS44LjEzOiBNYXkgMTQgMjAwMTwvaDM+PHVsPjxsaT5idWdmaXhlcyByZWxlYXNlIG9mIHRoZSBvbGQgbGlieG1sMSBicmFuY2ggdXNlZCBieSBHbm9tZTwvbGk+CjwvdWw+PGgzPjIuMy44OiBNYXkgMyAyMDAxPC9oMz48dWw+PGxpPkludGVncmF0ZWQgYW4gU0dNTCBEb2NCb29rIHBhcnNlciBmb3IgdGhlIEdub21lIHByb2plY3Q8L2xpPgogIDxsaT5GaXhlZCBhIGZldyB0aGluZ3MgaW4gdGhlIEhUTUwgcGFyc2VyPC9saT4KICA8bGk+Rml4ZWQgc29tZSBYUGF0aCBidWdzIHJhaXNlZCBieSBYU0xUIHVzZSwgdHJpZWQgdG8gZml4IHRoZSBmbG9hdGluZwogICAgcG9pbnQgcG9ydGFiaWxpdHkgaXNzdWU8L2xpPgogIDxsaT5TcGVlZCBpbXByb3ZlbWVudCAoOE0vcyBmb3IgU0FYLCAzTS9zIGZvciBET00sIDEuNU0vcyBmb3IKICAgIERPTSt2YWxpZGF0aW9uIHVzaW5nIHRoZSBYTUwgUkVDIGFzIGlucHV0IGFuZCBhIDcwME1IeiBjZWxlcm9uKS48L2xpPgogIDxsaT5pbmNvcnBvcmF0ZWQgbW9yZSBXaW5kb3dzIGNsZWFudXA8L2xpPgogIDxsaT5hZGRlZCB4bWxTYXZlRm9ybWF0RmlsZSgpPC9saT4KICA8bGk+Zml4ZWQgcHJvYmxlbXMgaW4gY29weWluZyBub2RlcyB3aXRoIGVudGl0aWVzIHJlZmVyZW5jZXMgKGdkb21lKTwvbGk+CiAgPGxpPnJlbW92ZWQgc29tZSB0cm91YmxlcyBzdXJyb3VuZGluZyB0aGUgbmV3IHZhbGlkYXRpb24gbW9kdWxlPC9saT4KPC91bD48aDM+Mi4zLjc6IEFwcmlsIDIyIDIwMDE8L2gzPjx1bD48bGk+bG90cyBvZiBzbWFsbCBidWcgZml4ZXMsIGNvcnJlY3RlZCBYUG9pbnRlcjwvbGk+CiAgPGxpPk5vbiBkZXRlcm1pbmlzdGljIGNvbnRlbnQgbW9kZWwgdmFsaWRhdGlvbiBzdXBwb3J0PC9saT4KICA8bGk+YWRkZWQgeG1sRG9jQ29weU5vZGUgZm9yIGdkb21lMjwvbGk+CiAgPGxpPnJldmFtcGVkIHRoZSB3YXkgdGhlIEhUTUwgcGFyc2VyIGhhbmRsZXMgZW5kIG9mIHRhZ3M8L2xpPgogIDxsaT5YUGF0aDogY29ycmVjdGlvbnMgb2YgbmFtZXNwYWNlcyBzdXBwb3J0IGFuZCBudW1iZXIgZm9ybWF0dGluZzwvbGk+CiAgPGxpPldpbmRvd3M6IElnb3IgWmxhdGtvdmljIHBhdGNoZXMgZm9yIE1TQyBjb21waWxhdGlvbjwvbGk+CiAgPGxpPkhUTUwgb3V0cHV0IGZpeGVzIGZyb20gUCBDIENob3cgYW5kIFdpbGxpYW0gTS4gQnJhY2s8L2xpPgogIDxsaT5JbXByb3ZlZCB2YWxpZGF0aW9uIHNwZWVkIHNlbnNpYmxlIGZvciBEb2NCb29rPC9saT4KICA8bGk+Zml4ZWQgYSBiaWcgYnVnIHdpdGggSUQgZGVjbGFyZWQgaW4gZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzPC9saT4KICA8bGk+cG9ydGFiaWxpdHkgZml4ZXMsIHVwZGF0ZSBvZiBUcmlvIGZyb20gQmpvcm4gUmVlc2U8L2xpPgo8L3VsPjxoMz4yLjMuNjogQXByaWwgOCAyMDAxPC9oMz48dWw+PGxpPkNvZGUgY2xlYW51cCB1c2luZyBleHRyZW1lIGdjYyBjb21waWxlciB3YXJuaW5nIG9wdGlvbnMsIGZvdW5kIGFuZAogICAgY2xlYXJlZCBoYWxmIGEgZG96ZW4gcG90ZW50aWFsIHByb2JsZW08L2xpPgogIDxsaT50aGUgRWF6ZWwgdGVhbSBmb3VuZCBhbiBYTUwgcGFyc2VyIGJ1ZzwvbGk+CiAgPGxpPmNsZWFuZWQgdXAgdGhlIHVzZXIgb2Ygc29tZSBvZiB0aGUgc3RyaW5nIGZvcm1hdHRpbmcgZnVuY3Rpb24uIHVzZWQgdGhlCiAgICB0cmlvIGxpYnJhcnkgY29kZSB0byBwcm92aWRlIHRoZSBvbmUgbmVlZGVkIHdoZW4gdGhlIHBsYXRmb3JtIGlzIG1pc3NpbmcKICAgIHRoZW08L2xpPgogIDxsaT54cGF0aDogcmVtb3ZlZCBhIG1lbW9yeSBsZWFrIGFuZCBmaXhlZCB0aGUgcHJlZGljYXRlIGV2YWx1YXRpb24KICAgIHByb2JsZW0sIGV4dGVuZGVkIHRoZSB0ZXN0c3VpdGUgYW5kIGNsZWFuZWQgdXAgdGhlIHJlc3VsdC4gWFBvaW50ZXIgc2VlbXMKICAgIGJyb2tlbiAuLi48L2xpPgo8L3VsPjxoMz4yLjMuNTogTWFyIDIzIDIwMDE8L2gzPjx1bD48bGk+QmlnZ2VzdCBjaGFuZ2UgaXMgc2VwYXJhdGUgcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBvZiBYUGF0aCBleHByZXNzaW9ucywKICAgIHRoZXJlIGlzIHNvbWUgbmV3IEFQSXMgZm9yIHRoaXMgdG9vPC9saT4KICA8bGk+aW5jbHVkZWQgYSBudW1iZXIgb2YgYnVnIGZpeGVzKFhNTCBwdXNoIHBhcnNlciwgNTE4NzYsIG5vdGF0aW9ucywKICA1MjI5OSk8L2xpPgogIDxsaT5GaXhlZCBzb21lIHBvcnRhYmlsaXR5IGlzc3VlczwvbGk+CjwvdWw+PGgzPjIuMy40OiBNYXIgMTAgMjAwMTwvaDM+PHVsPjxsaT5GaXhlZCBidWdzICM1MTg2MCBhbmQgIzUxODYxPC9saT4KICA8bGk+QWRkZWQgYSBnbG9iYWwgdmFyaWFibGUgeG1sRGVmYXVsdEJ1ZmZlclNpemUgdG8gYWxsb3cgZGVmYXVsdCBidWZmZXIKICAgIHNpemUgdG8gYmUgYXBwbGljYXRpb24gdHVuYWJsZS48L2xpPgogIDxsaT5Tb21lIGNsZWFudXAgaW4gdGhlIHZhbGlkYXRpb24gY29kZSwgc3RpbGwgYSBidWcgbGVmdCBhbmQgdGhpcyBwYXJ0CiAgICBzaG91bGQgcHJvYmFibHkgYmUgcmV3cml0dGVuIHRvIHN1cHBvcnQgYW1iaWd1b3VzIGNvbnRlbnQgbW9kZWwgOi1cPC9saT4KICA8bGk+Rml4IGEgY291cGxlIG9mIHNlcmlvdXMgYnVncyBpbnRyb2R1Y2VkIG9yIHJhaXNlZCBieSBjaGFuZ2VzIGluIDIuMy4zCiAgICBwYXJzZXI8L2xpPgogIDxsaT5GaXhlZCBhbm90aGVyIGJ1ZyBpbiB4bWxOb2RlR2V0Q29udGVudCgpPC9saT4KICA8bGk+Qmpvcm4gZml4ZWQgWFBhdGggbm9kZSBjb2xsZWN0aW9uIGFuZCBOdW1iZXIgZm9ybWF0dGluZzwvbGk+CiAgPGxpPkZpeGVkIGEgbG9vcCByZXBvcnRlZCBpbiB0aGUgSFRNTCBwYXJzaW5nPC9saT4KICA8bGk+Ymxhbmsgc3BhY2UgYXJlIHJlcG9ydGVkIGV2ZW4gaWYgdGhlIER0ZCBjb250ZW50IG1vZGVsIHByb3ZlcyB0aGF0IHRoZXkKICAgIGFyZSBmb3JtYXR0aW5nIHNwYWNlcywgdGhpcyBpcyBmb3IgWE1MIGNvbmZvcm1hbmNlPC9saT4KPC91bD48aDM+Mi4zLjM6IE1hciAxIDIwMDE8L2gzPjx1bD48bGk+c21hbGwgY2hhbmdlIGluIFhQYXRoIGZvciBYU0xUPC9saT4KICA8bGk+ZG9jdW1lbnRhdGlvbiBjbGVhbnVwczwvbGk+CiAgPGxpPmZpeCBpbiB2YWxpZGF0aW9uIGJ5IEdhcnkgUGVubmluZ3RvbjwvbGk+CiAgPGxpPnNlcmlvdXMgcGFyc2luZyBwZXJmb3JtYW5jZXMgaW1wcm92ZW1lbnRzPC9saT4KPC91bD48aDM+Mi4zLjI6IEZlYiAyNCAyMDAxPC9oMz48dWw+PGxpPmNoYXNpbmcgWFBhdGggYnVncywgZm91bmQgYSBidW5jaCwgY29tcGxldGVkIHNvbWUgVE9ETzwvbGk+CiAgPGxpPmZpeGVkIGEgRHRkIHBhcnNpbmcgYnVnPC9saT4KICA8bGk+Zml4ZWQgYSBidWcgaW4geG1sTm9kZUdldENvbnRlbnQ8L2xpPgogIDxsaT5JRC9JRFJFRiBzdXBwb3J0IHBhcnRseSByZXdyaXR0ZW4gYnkgR2FyeSBQZW5uaW5ndG9uPC9saT4KPC91bD48aDM+Mi4zLjE6IEZlYiAxNSAyMDAxPC9oMz48dWw+PGxpPnNvbWUgWFBhdGggYW5kIEhUTUwgYnVnIGZpeGVzIGZvciBYU0xUPC9saT4KICA8bGk+c21hbGwgZXh0ZW5zaW9uIG9mIHRoZSBoYXNoIHRhYmxlIGludGVyZmFjZXMgZm9yIERPTSBnZG9tZTIKICAgIGltcGxlbWVudGF0aW9uPC9saT4KICA8bGk+QSBmZXcgYnVnIGZpeGVzPC9saT4KPC91bD48aDM+Mi4zLjA6IEZlYiA4IDIwMDEgKDIuMi4xMiB3YXMgb24gMjUgSmFuIGJ1dCBJIGRpZG4ndCBrZXB0IHRyYWNrKTwvaDM+PHVsPjxsaT5Mb3RzIG9mIFhQYXRoIGJ1ZyBmaXhlczwvbGk+CiAgPGxpPkFkZCBhIG1vZGUgd2l0aCBEdGQgbG9va3VwIGJ1dCB3aXRob3V0IHZhbGlkYXRpb24gZXJyb3IgcmVwb3J0aW5nIGZvcgogICAgWFNMVDwvbGk+CiAgPGxpPkFkZCBzdXBwb3J0IGZvciB0ZXh0IG5vZGUgd2l0aG91dCBlc2NhcGluZyAoWFNMVCk8L2xpPgogIDxsaT5idWcgZml4ZXMgZm9yIHhtbENoZWNrRmlsZW5hbWU8L2xpPgogIDxsaT52YWxpZGF0aW9uIGNvZGUgYnVnIGZpeGVzIGZyb20gR2FyeSBQZW5uaW5ndG9uPC9saT4KICA8bGk+UGF0Y2ggZnJvbSBQYXVsIEQuIFNtaXRoIGNvcnJlY3RpbmcgVVJJIHBhdGggbm9ybWFsaXphdGlvbjwvbGk+CiAgPGxpPlBhdGNoIHRvIGFsbG93IHNpbXVsdGFuZW91cyBpbnN0YWxsIG9mIGxpYnhtbC1kZXZlbCBhbmQKICBsaWJ4bWwyLWRldmVsPC9saT4KICA8bGk+dGhlIGV4YW1wbGUgTWFrZWZpbGUgaXMgbm93IGZpeGVkPC9saT4KICA8bGk+YWRkZWQgSFRNTCB0byB0aGUgUlBNIHBhY2thZ2VzPC9saT4KICA8bGk+dHJlZSBjb3B5aW5nIGJ1Z2ZpeGVzPC9saT4KICA8bGk+dXBkYXRlcyB0byBXaW5kb3dzIG1ha2VmaWxlczwvbGk+CiAgPGxpPm9wdGltaXphdGlvbiBwYXRjaCBmcm9tIEJqb3JuIFJlZXNlPC9saT4KPC91bD48aDM+Mi4yLjExOiBKYW4gNCAyMDAxPC9oMz48dWw+PGxpPmJ1bmNoIG9mIGJ1ZyBmaXhlcyAobWVtb3J5IEkvTywgeHBhdGgsIGZ0cC9odHRwLCAuLi4pPC9saT4KICA8bGk+YWRkZWQgaHRtbEhhbmRsZU9taXR0ZWRFbGVtKCk8L2xpPgogIDxsaT5BcHBsaWVkIEJqb3JuIFJlZXNlJ3MgSVBWNiBmaXJzdCBwYXRjaDwvbGk+CiAgPGxpPkFwcGxpZWQgUGF1bCBELiBTbWl0aCBwYXRjaGVzIGZvciB2YWxpZGF0aW9uIG9mIFhJbmNsdWRlIHJlc3VsdHM8L2xpPgogIDxsaT5hZGRlZCBYUG9pbnRlciB4bWxucygpIG5ldyBzY2hlbWUgc3VwcG9ydDwvbGk+CjwvdWw+PGgzPjIuMi4xMDogTm92IDI1IDIwMDA8L2gzPjx1bD48bGk+Rml4IHRoZSBXaW5kb3dzIHByb2JsZW1zIG9mIDIuMi44PC9saT4KICA8bGk+aW50ZWdyYXRlIE9wZW5WTVMgcGF0Y2hlczwvbGk+CiAgPGxpPmJldHRlciBoYW5kbGluZyBvZiBzb21lIG5hc3R5IEhUTUwgaW5wdXQ8L2xpPgogIDxsaT5JbXByb3ZlZCB0aGUgWFBvaW50ZXIgaW1wbGVtZW50YXRpb248L2xpPgogIDxsaT5pbnRlZ3JhdGUgYSBudW1iZXIgb2YgcHJvdmlkZWQgcGF0Y2hlczwvbGk+CjwvdWw+PGgzPjIuMi45OiBOb3YgMjUgMjAwMDwvaDM+PHVsPjxsaT5lcnJvbmVvdXMgcmVsZWFzZSA6LSg8L2xpPgo8L3VsPjxoMz4yLjIuODogTm92IDEzIDIwMDA8L2gzPjx1bD48bGk+Rmlyc3QgdmVyc2lvbiBvZiA8YSBocmVmPSJodHRwOi8vd3d3LnczLm9yZy9UUi94aW5jbHVkZSI+WEluY2x1ZGU8L2E+CiAgICBzdXBwb3J0PC9saT4KICA8bGk+UGF0Y2ggaW4gY29uZGl0aW9uYWwgc2VjdGlvbiBoYW5kbGluZzwvbGk+CiAgPGxpPnVwZGF0ZWQgTVMgY29tcGlsZXIgcHJvamVjdDwvbGk+CiAgPGxpPmZpeGVkIHNvbWUgWFBhdGggcHJvYmxlbXM8L2xpPgogIDxsaT5hZGRlZCBhbiBVUkkgZXNjYXBpbmcgZnVuY3Rpb248L2xpPgogIDxsaT5zb21lIG90aGVyIGJ1ZyBmaXhlczwvbGk+CjwvdWw+PGgzPjIuMi43OiBPY3QgMzEgMjAwMDwvaDM+PHVsPjxsaT5hZGRlZCBtZXNzYWdlIHJlZGlyZWN0aW9uPC9saT4KICA8bGk+WFBhdGggaW1wcm92ZW1lbnRzICh0aGFua3MgVE9NICEpPC9saT4KICA8bGk+eG1sSU9QYXJzZURURCgpIGFkZGVkPC9saT4KICA8bGk+dmFyaW91cyBzbWFsbCBmaXhlcyBpbiB0aGUgSFRNTCwgVVJJLCBIVFRQIGFuZCBYUG9pbnRlciBzdXBwb3J0PC9saT4KICA8bGk+c29tZSBjbGVhbnVwIG9mIHRoZSBNYWtlZmlsZSwgYXV0b2NvbmYgYW5kIHRoZSBkaXN0cmlidXRpb24gY29udGVudDwvbGk+CjwvdWw+PGgzPjIuMi42OiBPY3QgMjUgMjAwMDo8L2gzPjx1bD48bGk+QWRkZWQgYW4gaGFzaCB0YWJsZSBtb2R1bGUsIG1pZ3JhdGVkIGEgbnVtYmVyIG9mIGludGVybmFsIHN0cnVjdHVyZSB0bwogICAgdGhvc2U8L2xpPgogIDxsaT5GaXhlZCBhIHBvc3RlcmlvcmkgdmFsaWRhdGlvbiBwcm9ibGVtczwvbGk+CiAgPGxpPkhUVFAgbW9kdWxlIGNsZWFudXBzPC9saT4KICA8bGk+SFRNTCBwYXJzZXIgaW1wcm92ZW1lbnRzICh0YWcgZXJyb3JzLCBzY3JpcHQvc3R5bGUgaGFuZGxpbmcsIGF0dHJpYnV0ZQogICAgbm9ybWFsaXphdGlvbik8L2xpPgogIDxsaT5jb2FsZXNjaW5nIG9mIGFkamFjZW50IHRleHQgbm9kZXM8L2xpPgogIDxsaT5jb3VwbGUgb2YgWFBhdGggYnVnIGZpeGVzLCBleHBvcnRlZCB0aGUgaW50ZXJuYWwgQVBJPC9saT4KPC91bD48aDM+Mi4yLjU6IE9jdCAxNSAyMDAwOjwvaDM+PHVsPjxsaT5YUG9pbnRlciBpbXBsZW1lbnRhdGlvbiBhbmQgdGVzdHN1aXRlPC9saT4KICA8bGk+TG90IG9mIFhQYXRoIGZpeGVzLCBhZGRlZCB2YXJpYWJsZSBhbmQgZnVuY3Rpb25zIHJlZ2lzdHJhdGlvbiwgbW9yZQogICAgdGVzdHM8L2xpPgogIDxsaT5Qb3J0YWJpbGl0eSBmaXhlcywgbG90cyBvZiBlbmhhbmNlbWVudHMgdG93YXJkIGFuIGVhc3kgV2luZG93cyBidWlsZAogICAgYW5kIHJlbGVhc2U8L2xpPgogIDxsaT5MYXRlIHZhbGlkYXRpb24gZml4ZXM8L2xpPgogIDxsaT5JbnRlZ3JhdGVkIGEgbG90IG9mIGNvbnRyaWJ1dGVkIHBhdGNoZXM8L2xpPgogIDxsaT5hZGRlZCBtZW1vcnkgbWFuYWdlbWVudCBkb2NzPC9saT4KICA8bGk+YSBwZXJmb3JtYW5jZSBwcm9ibGVtIHdoZW4gdXNpbmcgbGFyZ2UgYnVmZmVyIHNlZW1zIGZpeGVkPC9saT4KPC91bD48aDM+Mi4yLjQ6IE9jdCAxIDIwMDA6PC9oMz48dWw+PGxpPm1haW4gWFBhdGggcHJvYmxlbSBmaXhlZDwvbGk+CiAgPGxpPkludGVncmF0ZWQgcG9ydGFiaWxpdHkgcGF0Y2hlcyBmb3IgV2luZG93czwvbGk+CiAgPGxpPlNlcmlvdXMgYnVnIGZpeGVzIG9uIHRoZSBVUkkgYW5kIEhUTUwgY29kZTwvbGk+CjwvdWw+PGgzPjIuMi4zOiBTZXAgMTcgMjAwMDwvaDM+PHVsPjxsaT5idWcgZml4ZXM8L2xpPgogIDxsaT5jbGVhbnVwIG9mIGVudGl0eSBoYW5kbGluZyBjb2RlPC9saT4KICA8bGk+b3ZlcmFsbCByZXZpZXcgb2YgYWxsIGxvb3BzIGluIHRoZSBwYXJzZXJzLCBhbGwgc3ByaW50ZiB1c2FnZSBoYXMgYmVlbgogICAgY2hlY2tlZCB0b288L2xpPgogIDxsaT5GYXIgYmV0dGVyIGhhbmRsaW5nIG9mIGxhcmdlcyBEdGQuIFZhbGlkYXRpbmcgYWdhaW5zdCBEb2NCb29rIFhNTCBEdGQKICAgIHdvcmtzIHNtb290aGx5IG5vdy48L2xpPgo8L3VsPjxoMz4xLjguMTA6IFNlcCA2IDIwMDA8L2gzPjx1bD48bGk+YnVnIGZpeCByZWxlYXNlIGZvciBzb21lIEdub21lIHByb2plY3RzPC9saT4KPC91bD48aDM+Mi4yLjI6IEF1Z3VzdCAxMiAyMDAwPC9oMz48dWw+PGxpPm1vc3RseSBidWcgZml4ZXM8L2xpPgogIDxsaT5zdGFydGVkIGFkZGluZyByb3V0aW5lcyB0byBhY2Nlc3MgeG1sIHBhcnNlciBjb250ZXh0IG9wdGlvbnM8L2xpPgo8L3VsPjxoMz4yLjIuMTogSnVseSAyMSAyMDAwPC9oMz48dWw+PGxpPmEgcHVyZWx5IGJ1ZyBmaXhlcyByZWxlYXNlPC9saT4KICA8bGk+Zml4ZWQgYW4gZW5jb2Rpbmcgc3VwcG9ydCBwcm9ibGVtIHdoZW4gcGFyc2luZyBmcm9tIGEgbWVtb3J5IGJsb2NrPC9saT4KICA8bGk+Zml4ZWQgYSBET0NUWVBFIHBhcnNpbmcgcHJvYmxlbTwvbGk+CiAgPGxpPnJlbW92ZWQgYSBidWcgaW4gdGhlIGZ1bmN0aW9uIGFsbG93aW5nIHRvIG92ZXJyaWRlIHRoZSBtZW1vcnkKICAgIGFsbG9jYXRpb24gcm91dGluZXM8L2xpPgo8L3VsPjxoMz4yLjIuMDogSnVseSAxNCAyMDAwPC9oMz48dWw+PGxpPmFwcGxpZWQgYSBsb3Qgb2YgcG9ydGFiaWxpdHkgZml4ZXM8L2xpPgogIDxsaT5iZXR0ZXIgZW5jb2Rpbmcgc3VwcG9ydC9jbGVhbnVwIGFuZCBzYXZpbmcgKGNvbnRlbnQgaXMgbm93IGFsd2F5cwogICAgZW5jb2RlZCBpbiBVVEYtOCk8L2xpPgogIDxsaT50aGUgSFRNTCBwYXJzZXIgbm93IGNvcnJlY3RseSBoYW5kbGVzIGVuY29kaW5nczwvbGk+CiAgPGxpPmFkZGVkIHhtbEhhc1Byb3AoKTwvbGk+CiAgPGxpPmZpeGVkIGEgc2VyaW91cyBwcm9ibGVtIHdpdGggJmFtcDsjMzg7PC9saT4KICA8bGk+cHJvcGFnYXRlZCB0aGUgZml4IHRvIEZUUCBjbGllbnQ8L2xpPgogIDxsaT5jbGVhbnVwLCBidWdmaXhlcywgZXRjIC4uLjwvbGk+CiAgPGxpPkFkZGVkIGEgcGFnZSBhYm91dCA8YSBocmVmPSJlbmNvZGluZy5odG1sIj5saWJ4bWwgSW50ZXJuYXRpb25hbGl6YXRpb24KICAgIHN1cHBvcnQ8L2E+PC9saT4KPC91bD48aDM+MS44Ljk6ICBKdWx5IDkgMjAwMDwvaDM+PHVsPjxsaT5maXhlZCB0aGUgc3BlYyB0aGUgUlBNcyBzaG91bGQgYmUgYmV0dGVyPC9saT4KICA8bGk+Zml4ZWQgYSBzZXJpb3VzIGJ1ZyBpbiB0aGUgRlRQIGltcGxlbWVudGF0aW9uLCByZWxlYXNlZCAxLjguOSB0byBzb2x2ZQogICAgcnBtZmluZCB1c2VycyBwcm9ibGVtPC9saT4KPC91bD48aDM+Mi4xLjE6IEp1bHkgMSAyMDAwPC9oMz48dWw+PGxpPmZpeGVzIGEgY291cGxlIG9mIGJ1Z3MgaW4gdGhlIDIuMS4wIHBhY2thZ2luZzwvbGk+CiAgPGxpPmltcHJvdmVtZW50cyBvbiB0aGUgSFRNTCBwYXJzZXI8L2xpPgo8L3VsPjxoMz4yLjEuMCBhbmQgMS44Ljg6IEp1bmUgMjkgMjAwMDwvaDM+PHVsPjxsaT4xLjguOCBpcyBtb3N0bHkgYSBjb21tb2RpdHkgcGFja2FnZSBmb3IgdXBncmFkaW5nIHRvIGxpYnhtbDIgYWNjb3JkaW5nCiAgICB0byA8YSBocmVmPSJ1cGdyYWRlLmh0bWwiPm5ldyBpbnN0cnVjdGlvbnM8L2E+LiBJdCBmaXhlcyBhIG5hc3R5IHByb2JsZW0KICAgIGFib3V0ICZhbXA7IzM4OyBjaGFycmVmIHBhcnNpbmc8L2xpPgogIDxsaT4yLjEuMCBhbHNvIGVhc2UgdGhlIHVwZ3JhZGUgZnJvbSBsaWJ4bWwgdjEgdG8gdGhlIHJlY2VudCB2ZXJzaW9uLiBpdAogICAgYWxzbyBjb250YWlucyBudW1lcm91cyBmaXhlcyBhbmQgZW5oYW5jZW1lbnRzOgogICAgPHVsPjxsaT5hZGRlZCB4bWxTdG9wUGFyc2VyKCkgdG8gc3RvcCBwYXJzaW5nPC9saT4KICAgICAgPGxpPmltcHJvdmVkIGEgbG90IHBhcnNpbmcgc3BlZWQgd2hlbiB0aGVyZSBpcyBsYXJnZSBDREFUQSBibG9jczwvbGk+CiAgICAgIDxsaT5pbmNsdWRlcyBYUGF0aCBwYXRjaGVzIHByb3ZpZGVkIGJ5IFBpY2RhciBUZWNobm9sb2d5PC9saT4KICAgICAgPGxpPnRyaWVkIHRvIGZpeCBhcyBtdWNoIGFzIHBvc3NpYmxlIERURCB2YWxpZGF0aW9uIGFuZCBuYW1lc3BhY2UKICAgICAgICByZWxhdGVkIHByb2JsZW1zPC9saT4KICAgICAgPGxpPm91dHB1dCB0byBhIGdpdmVuIGVuY29kaW5nIGhhcyBiZWVuIGFkZGVkL3Rlc3RlZDwvbGk+CiAgICAgIDxsaT5sb3Qgb2YgdmFyaW91cyBmaXhlczwvbGk+CiAgICA8L3VsPjwvbGk+CjwvdWw+PGgzPjIuMC4wOiBBcHIgMTIgMjAwMDwvaDM+PHVsPjxsaT5GaXJzdCBwdWJsaWMgcmVsZWFzZSBvZiBsaWJ4bWwyLiBJZiB5b3UgYXJlIHVzaW5nIGxpYnhtbCwgaXQncyBhIGdvb2QKICAgIGlkZWEgdG8gY2hlY2sgdGhlIDEueCB0byAyLnggdXBncmFkZSBpbnN0cnVjdGlvbnMuIE5PVEU6IHdoaWxlIGluaXRpYWxseQogICAgc2NoZWR1bGVkIGZvciBBcHIgMyB0aGUgcmVsZWFzZSBvY2N1cnJlZCBvbmx5IG9uIEFwciAxMiBkdWUgdG8gbWFzc2l2ZQogICAgd29ya2xvYWQuPC9saT4KICA8bGk+VGhlIGluY2x1ZGUgYXJlIG5vdyBsb2NhdGVkIHVuZGVyICRwcmVmaXgvaW5jbHVkZS9saWJ4bWwgKGluc3RlYWQgb2YKICAgICRwcmVmaXgvaW5jbHVkZS9nbm9tZS14bWwpLCB0aGV5IGFsc28gYXJlIHJlZmVyZW5jZWQgYnkKICAgIDxwcmU+I2luY2x1ZGUgJmx0O2xpYnhtbC94eHguaCZndDs8L3ByZT4KICAgIDxwPmluc3RlYWQgb2Y8L3A+CiAgICA8cHJlPiNpbmNsdWRlICJ4eHguaCI8L3ByZT4KICA8L2xpPgogIDxsaT5hIG5ldyBVUkkgbW9kdWxlIGZvciBwYXJzaW5nIFVSSXMgYW5kIGZvbGxvd2luZyBzdHJpY3RseSBSRkMgMjM5NjwvbGk+CiAgPGxpPnRoZSBtZW1vcnkgYWxsb2NhdGlvbiByb3V0aW5lcyB1c2VkIGJ5IGxpYnhtbCBjYW4gbm93IGJlIG92ZXJsb2FkZWQKICAgIGR5bmFtaWNhbGx5IGJ5IHVzaW5nIHhtbE1lbVNldHVwKCk8L2xpPgogIDxsaT5UaGUgcHJldmlvdXNseSBDVlMgb25seSB0b29sIHRlc3RlciBoYXMgYmVlbiByZW5hbWVkCiAgICA8c3Ryb25nPnhtbGxpbnQ8L3N0cm9uZz4gYW5kIGlzIG5vdyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgbGlieG1sMgogICAgcGFja2FnZTwvbGk+CiAgPGxpPlRoZSBJL08gaW50ZXJmYWNlIGhhcyBiZWVuIHJldmFtcGVkLiBUaGVyZSBpcyBub3cgd2F5cyB0byBwbHVnIGluCiAgICBzcGVjaWZpYyBJL08gbW9kdWxlcywgZWl0aGVyIGF0IHRoZSBVUkkgc2NoZW1lIGRldGVjdGlvbiBsZXZlbCB1c2luZwogICAgeG1sUmVnaXN0ZXJJbnB1dENhbGxiYWNrcygpICBvciBieSBwYXNzaW5nIEkvTyBmdW5jdGlvbnMgd2hlbiBjcmVhdGluZyBhCiAgICBwYXJzZXIgY29udGV4dCB1c2luZyB4bWxDcmVhdGVJT1BhcnNlckN0eHQoKTwvbGk+CiAgPGxpPnRoZXJlIGlzIGEgQyBwcmVwcm9jZXNzb3IgbWFjcm8gTElCWE1MX1ZFUlNJT04gcHJvdmlkaW5nIHRoZSB2ZXJzaW9uCiAgICBudW1iZXIgb2YgdGhlIGxpYnhtbCBtb2R1bGUgaW4gdXNlPC9saT4KICA8bGk+YSBudW1iZXIgb2Ygb3B0aW9uYWwgZmVhdHVyZXMgb2YgbGlieG1sIGNhbiBub3cgYmUgZXhjbHVkZWQgYXQKICAgIGNvbmZpZ3VyZSB0aW1lIChGVFAvSFRUUC9IVE1ML1hQYXRoL0RlYnVnKTwvbGk+CjwvdWw+PGgzPjIuMC4wYmV0YTogTWFyIDE0IDIwMDA8L2gzPjx1bD48bGk+VGhpcyBpcyBhIGZpcnN0IEJldGEgcmVsZWFzZSBvZiBsaWJ4bWwgdmVyc2lvbiAyPC9saT4KICA8bGk+SXQncyBhdmFpbGFibGUgb25seSBmcm9tPGEgaHJlZj0iZnRwOi8veG1sc29mdC5vcmcvIj54bWxzb2Z0Lm9yZwogICAgRlRQPC9hPiwgaXQncyBwYWNrYWdlZCBhcyBsaWJ4bWwyLTIuMC4wYmV0YSBhbmQgYXZhaWxhYmxlIGFzIHRhciBhbmQKICBSUE1zPC9saT4KICA8bGk+VGhpcyB2ZXJzaW9uIGlzIG5vdyB0aGUgaGVhZCBpbiB0aGUgR25vbWUgQ1ZTIGJhc2UsIHRoZSBvbGQgb25lIGlzCiAgICBhdmFpbGFibGUgdW5kZXIgdGhlIHRhZyBMSUJfWE1MXzFfWDwvbGk+CiAgPGxpPlRoaXMgaW5jbHVkZXMgYSB2ZXJ5IGxhcmdlIHNldCBvZiBjaGFuZ2VzLiBGcm9tIGEgIHByb2dyYW1tYXRpYyBwb2ludAogICAgb2YgdmlldyBhcHBsaWNhdGlvbnMgc2hvdWxkIG5vdCBoYXZlIHRvIGJlIG1vZGlmaWVkIHRvbyBtdWNoLCBjaGVjayB0aGUKICAgIDxhIGhyZWY9InVwZ3JhZGUuaHRtbCI+dXBncmFkZSBwYWdlPC9hPjwvbGk+CiAgPGxpPlNvbWUgaW50ZXJmYWNlcyBtYXkgY2hhbmdlcyAoZXNwZWNpYWxseSBhIGJpdCBhYm91dCBlbmNvZGluZykuPC9saT4KICA8bGk+dGhlIHVwZGF0ZXMgaW5jbHVkZXM6CiAgICA8dWw+PGxpPmZpeCBJMThOIHN1cHBvcnQuIElTTy1MYXRpbi14L1VURi04L1VURi0xNiAobmVhcmx5KSBzZWVtcyBjb3JyZWN0bHkKICAgICAgICBoYW5kbGVkIG5vdzwvbGk+CiAgICAgIDxsaT5CZXR0ZXIgaGFuZGxpbmcgb2YgZW50aXRpZXMsIGVzcGVjaWFsbHkgd2VsbC1mb3JtZWRuZXNzIGNoZWNraW5nCiAgICAgICAgYW5kIHByb3BlciBQRXJlZiBleHRlbnNpb25zIGluIGV4dGVybmFsIHN1YnNldHM8L2xpPgogICAgICA8bGk+RFREIGNvbmRpdGlvbmFsIHNlY3Rpb25zPC9saT4KICAgICAgPGxpPlZhbGlkYXRpb24gbm93IGNvcnJlY3RseSBoYW5kbGUgZW50aXRpZXMgY29udGVudDwvbGk+CiAgICAgIDxsaT48YSBocmVmPSJodHRwOi8vcnBtZmluZC5uZXQvdG9vbHMvZ2RvbWUvbWVzc2FnZXMvMDAzOS5odG1sIj5jaGFuZ2UKICAgICAgICBzdHJ1Y3R1cmVzIHRvIGFjY29tbW9kYXRlIERPTTwvYT48L2xpPgogICAgPC91bD48L2xpPgogIDxsaT5TZXJpb3VzIHByb2dyZXNzIHdlcmUgbWFkZSB0b3dhcmQgY29tcGxpYW5jZSwgPGEgaHJlZj0iY29uZi9yZXN1bHQuaHRtbCI+aGVyZSBhcmUgdGhlIHJlc3VsdCBvZiB0aGUgdGVzdDwvYT4gYWdhaW5zdCB0aGUKICAgIE9BU0lTIHRlc3RzdWl0ZSAoZXhjZXB0IHRoZSBKYXBhbmVzZSB0ZXN0cyBzaW5jZSBJIGRvbid0IHN1cHBvcnQgdGhhdAogICAgZW5jb2RpbmcgeWV0KS4gVGhpcyBVUkwgaXMgcmVidWlsdCBldmVyeSBjb3VwbGUgb2YgaG91cnMgdXNpbmcgdGhlIENWUwogICAgaGVhZCB2ZXJzaW9uLjwvbGk+CjwvdWw+PGgzPjEuOC43OiBNYXIgNiAyMDAwPC9oMz48dWw+PGxpPlRoaXMgaXMgYSBidWcgZml4IHJlbGVhc2U6PC9saT4KICA8bGk+SXQgaXMgcG9zc2libGUgdG8gZGlzYWJsZSB0aGUgaWdub3JhYmxlIGJsYW5rcyBoZXVyaXN0aWMgdXNlZCBieQogICAgbGlieG1sLTEueCwgYSBuZXcgZnVuY3Rpb24gIHhtbEtlZXBCbGFua3NEZWZhdWx0KDApIHdpbGwgYWxsb3cgdGhpcy4gTm90ZQogICAgdGhhdCBmb3IgYWRoZXJlbmNlIHRvIFhNTCBzcGVjLCB0aGlzIGJlaGF2aW91ciB3aWxsIGJlIGRpc2FibGVkIGJ5CiAgICBkZWZhdWx0IGluIDIueCAuIFRoZSBzYW1lIGZ1bmN0aW9uIHdpbGwgYWxsb3cgdG8ga2VlcCBjb21wYXRpYmlsaXR5IGZvcgogICAgb2xkIGNvZGUuPC9saT4KICA8bGk+QmxhbmtzIGluICZsdDthJmd0OyAgJmx0Oy9hJmd0OyBjb25zdHJ1Y3RzIGFyZSBub3QgaWdub3JlZCBhbnltb3JlLAogICAgYXZvaWRpbmcgaGV1cmlzdGljIGlzIHJlYWxseSB0aGUgUmlnaHQgV2F5IDotXDwvbGk+CiAgPGxpPlRoZSB1bmNoZWNrZWQgdXNlIG9mIHNucHJpbnRmIHdoaWNoIHdhcyBicmVha2luZyBsaWJ4bWwtMS44LjYKICAgIGNvbXBpbGF0aW9uIG9uIHNvbWUgcGxhdGZvcm1zIGhhcyBiZWVuIGZpeGVkPC9saT4KICA8bGk+bmFub2Z0cC5jIG5hbm9odHRwLmM6IEZpeGVkICcjJyBhbmQgJz8nIHN0cmlwcGluZyB3aGVuIHByb2Nlc3NpbmcKICBVUklzPC9saT4KPC91bD48aDM+MS44LjY6IEphbiAzMSAyMDAwPC9oMz48dWw+PGxpPmFkZGVkIGEgbmFub0ZUUCB0cmFuc3BvcnQgbW9kdWxlLCBkZWJ1Z2dlZCB1bnRpbCB0aGUgbmV3IHZlcnNpb24gb2YgPGEgaHJlZj0iaHR0cDovL3JwbWZpbmQubmV0L2xpbnV4L3JwbTJodG1sL3JwbWZpbmQuaHRtbCI+cnBtZmluZDwvYT4gY2FuIHVzZQogICAgaXQgd2l0aG91dCB0cm91YmxlczwvbGk+CjwvdWw+PGgzPjEuOC41OiBKYW4gMjEgMjAwMDwvaDM+PHVsPjxsaT5hZGRpbmcgQVBJcyB0byBwYXJzZSBhIHdlbGwgYmFsYW5jZWQgY2h1bmsgb2YgWE1MIChwcm9kdWN0aW9uIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL1JFQy14bWwjTlQtY29udGVudCI+WzQzXSBjb250ZW50PC9hPiBvZiB0aGUKICAgIFhNTCBzcGVjKTwvbGk+CiAgPGxpPmZpeGVkIGEgaGlkZW91cyBidWcgaW4geG1sR2V0UHJvcCBwb2ludGVkIGJ5IFJ1bmUuRGp1cmh1dXNAZmFzdC5ubzwvbGk+CiAgPGxpPkpvZHkgR29sZGJlcmcgJmx0O2pnb2xkYmVyZ0Bob21lLmNvbSZndDsgcHJvdmlkZWQgYW5vdGhlciBwYXRjaCB0cnlpbmcKICAgIHRvIHNvbHZlIHRoZSB6bGliIGNoZWNrcyBwcm9ibGVtczwvbGk+CiAgPGxpPlRoZSBjdXJyZW50IHN0YXRlIGluIGdub21lIENWUyBiYXNlIGlzIGV4cGVjdGVkIHRvIHNoaXAgYXMgMS44LjUgd2l0aAogICAgZ251bWVyaWMgc29vbjwvbGk+CjwvdWw+PGgzPjEuOC40OiBKYW4gMTMgMjAwMDwvaDM+PHVsPjxsaT5idWcgZml4ZXMsIHJlaW50cm9kdWNlZCB4bWxOZXdHbG9iYWxOcygpLCBmaXhlZCB4bWxOZXdOcygpPC9saT4KICA8bGk+YWxsIGV4aXQoKSBjYWxsIHNob3VsZCBoYXZlIGJlZW4gcmVtb3ZlZCBmcm9tIGxpYnhtbDwvbGk+CiAgPGxpPmZpeGVkIGEgcHJvYmxlbSB3aXRoIElOQ0xVREVfV0lOU09DSyBvbiBXSU4zMiBwbGF0Zm9ybTwvbGk+CiAgPGxpPmFkZGVkIG5ld0RvY0ZyYWdtZW50KCk8L2xpPgo8L3VsPjxoMz4xLjguMzogSmFuIDUgMjAwMDwvaDM+PHVsPjxsaT5hIFB1c2ggaW50ZXJmYWNlIGZvciB0aGUgWE1MIGFuZCBIVE1MIHBhcnNlcnM8L2xpPgogIDxsaT5hIHNoZWxsLWxpa2UgaW50ZXJmYWNlIHRvIHRoZSBkb2N1bWVudCB0cmVlICh0cnkgdGVzdGVyIC0tc2hlbGwgOi0pPC9saT4KICA8bGk+bG90cyBvZiBidWcgZml4ZXMgYW5kIGltcHJvdmVtZW50IGFkZGVkIG92ZXIgWE1hcyBob2xpZGF5czwvbGk+CiAgPGxpPmZpeGVkIHRoZSBEVEQgcGFyc2luZyBjb2RlIHRvIHdvcmsgd2l0aCB0aGUgeGh0bWwgRFREPC9saT4KICA8bGk+YWRkZWQgeG1sUmVtb3ZlUHJvcCgpLCB4bWxSZW1vdmVJRCgpIGFuZCB4bWxSZW1vdmVSZWYoKTwvbGk+CiAgPGxpPkZpeGVkIGJ1Z3MgaW4geG1sTmV3TnMoKTwvbGk+CiAgPGxpPkV4dGVybmFsIGVudGl0eSBsb2FkaW5nIGNvZGUgaGFzIGJlZW4gcmV2YW1wZWQsIG5vdyBpdCB1c2VzCiAgICB4bWxMb2FkRXh0ZXJuYWxFbnRpdHkoKSwgc29tZSBmaXggb24gZW50aXRpZXMgcHJvY2Vzc2luZyB3ZXJlIGFkZGVkPC9saT4KICA8bGk+Y2xlYW5lZCB1cCBXSU4zMiBpbmNsdWRlcyBvZiBzb2NrZXQgc3R1ZmY8L2xpPgo8L3VsPjxoMz4xLjguMjogRGVjIDIxIDE5OTk8L2gzPjx1bD48bGk+SSBnb3QgYW5vdGhlciBwcm9ibGVtIHdpdGggaW5jbHVkZXMgYW5kIEMrKywgSSBob3BlIHRoaXMgaXNzdWUgaXMgZml4ZWQKICAgIGZvciBnb29kIHRoaXMgdGltZTwvbGk+CiAgPGxpPkFkZGVkIGEgZmV3IHRyZWUgbW9kaWZpY2F0aW9uIGZ1bmN0aW9uczogeG1sUmVwbGFjZU5vZGUsCiAgICB4bWxBZGRQcmV2U2libGluZywgeG1sQWRkTmV4dFNpYmxpbmcsIHhtbE5vZGVTZXROYW1lIGFuZAogICAgeG1sRG9jU2V0Um9vdEVsZW1lbnQ8L2xpPgogIDxsaT5UcmllZCB0byBpbXByb3ZlIHRoZSBIVE1MIG91dHB1dCB3aXRoIGhlbHAgZnJvbSA8YSBocmVmPSJtYWlsdG86Y2xhaGV5QHVtaWNoLmVkdSI+Q2hyaXMgTGFoZXk8L2E+PC9saT4KPC91bD48aDM+MS44LjE6IERlYyAxOCAxOTk5PC9oMz48dWw+PGxpPnZhcmlvdXMgcGF0Y2hlcyB0byBhdm9pZCB0cm91YmxlcyB3aGVuIHVzaW5nIGxpYnhtbCB3aXRoIEMrKyBjb21waWxlcnMKICAgIHRoZSAibmFtZXNwYWNlIiBrZXl3b3JkIGFuZCBDIGVzY2FwaW5nIGluIGluY2x1ZGUgZmlsZXM8L2xpPgogIDxsaT5hIHByb2JsZW0gaW4gb25lIG9mIHRoZSBjb3JlIG1hY3JvcyBJU19DSEFSIHdhcyBjb3JyZWN0ZWQ8L2xpPgogIDxsaT5maXhlZCBhIGJ1ZyBpbnRyb2R1Y2VkIGluIDEuOC4wIGJyZWFraW5nIGRlZmF1bHQgbmFtZXNwYWNlIHByb2Nlc3NpbmcsCiAgICBhbmQgbW9yZSBzcGVjaWZpY2FsbHkgdGhlIERpYSBhcHBsaWNhdGlvbjwvbGk+CiAgPGxpPmZpeGVkIGEgcG9zdGVyaW9yaSB2YWxpZGF0aW9uICh2YWxpZGF0aW9uIGFmdGVyIHBhcnNpbmcsIG9yIGJ5IHVzaW5nIGEKICAgIER0ZCBub3Qgc3BlY2lmaWVkIGluIHRoZSBvcmlnaW5hbCBkb2N1bWVudCk8L2xpPgogIDxsaT5maXhlZCBhIGJ1ZyBpbjwvbGk+CjwvdWw+PGgzPjEuOC4wOiBEZWMgMTIgMTk5OTwvaDM+PHVsPjxsaT5jbGVhbnVwLCBlc3BlY2lhbGx5IG1lbW9yeSB3aXNlPC9saT4KICA8bGk+dGhlIHBhcnNlciBzaG91bGQgYmUgbW9yZSByZWxpYWJsZSwgZXNwZWNpYWxseSB0aGUgSFRNTCBvbmUsIGl0IHNob3VsZAogICAgbm90IGNyYXNoLCB3aGF0ZXZlciB0aGUgaW5wdXQgITwvbGk+CiAgPGxpPkludGVncmF0ZWQgdmFyaW91cyBwYXRjaGVzLCBlc3BlY2lhbGx5IGEgc3BlZWR1cCBpbXByb3ZlbWVudCBmb3IgbGFyZ2UKICAgIGRhdGFzZXQgZnJvbSA8YSBocmVmPSJtYWlsdG86Y255Z2FyZEBiZWxsYXRsYW50aWMubmV0Ij5DYXJsIE55Z2FyZDwvYT4sCiAgICBjb25maWd1cmUgd2l0aCAtLXdpdGgtYnVmZmVycyB0byBlbmFibGUgdGhlbS48L2xpPgogIDxsaT5hdHRyaWJ1dGUgbm9ybWFsaXphdGlvbiwgb29wcyBzaG91bGQgaGF2ZSBiZWVuIGFkZGVkIGxvbmcgYWdvICE8L2xpPgogIDxsaT5hdHRyaWJ1dGVzIGRlZmF1bHRlZCBmcm9tIERURHMgc2hvdWxkIGJlIGF2YWlsYWJsZSwgeG1sU2V0UHJvcCgpIG5vdwogICAgZG9lcyBlbnRpdGllcyBlc2NhcGluZyBieSBkZWZhdWx0LjwvbGk+CjwvdWw+PGgzPjEuNy40OiBPY3QgMjUgMTk5OTwvaDM+PHVsPjxsaT5Mb3RzIG9mIEhUTUwgaW1wcm92ZW1lbnQ8L2xpPgogIDxsaT5GaXhlZCBzb21lIGVycm9ycyB3aGVuIHNhdmluZyBib3RoIFhNTCBhbmQgSFRNTDwvbGk+CiAgPGxpPk1vcmUgZXhhbXBsZXMsIHRoZSByZWdyZXNzaW9uIHRlc3RzIHNob3VsZCBub3cgbG9vayBjbGVhbjwvbGk+CiAgPGxpPkZpeGVkIGEgYnVnIHdpdGggY29udGlndW91cyBjaGFycmVmPC9saT4KPC91bD48aDM+MS43LjM6IFNlcCAyOSAxOTk5PC9oMz48dWw+PGxpPnBvcnRhYmlsaXR5IHByb2JsZW1zIGZpeGVkPC9saT4KICA8bGk+c25wcmludGYgd2FzIHVzZWQgdW5jb25kaXRpb25hbGx5LCBsZWFkaW5nIHRvIGxpbmsgcHJvYmxlbXMgb24gc3lzdGVtCiAgICB3ZXJlIGl0J3Mgbm90IGF2YWlsYWJsZSwgZml4ZWQ8L2xpPgo8L3VsPjxoMz4xLjcuMTogU2VwIDI0IDE5OTk8L2gzPjx1bD48bGk+VGhlIGJhc2ljIHR5cGUgZm9yIHN0cmluZ3MgbWFuaXB1bGF0ZWQgYnkgbGlieG1sIGhhcyBiZWVuIHJlbmFtZWQgaW4KICAgIDEuNy4xIGZyb20gPHN0cm9uZz5DSEFSPC9zdHJvbmc+IHRvIDxzdHJvbmc+eG1sQ2hhcjwvc3Ryb25nPi4gVGhlIHJlYXNvbgogICAgaXMgdGhhdCBDSEFSIHdhcyBjb25mbGljdGluZyB3aXRoIGEgcHJlZGVmaW5lZCB0eXBlIG9uIFdpbmRvd3MuIEhvd2V2ZXIKICAgIG9uIG5vbiBXSU4zMiBlbnZpcm9ubWVudCwgY29tcGF0aWJpbGl0eSBpcyBwcm92aWRlZCBieSB0aGUgd2F5IG9mICBhCiAgICA8c3Ryb25nPiNkZWZpbmUgPC9zdHJvbmc+LjwvbGk+CiAgPGxpPkNoYW5nZWQgYW5vdGhlciBlcnJvciA6IHRoZSB1c2Ugb2YgYSBzdHJ1Y3R1cmUgZmllbGQgY2FsbGVkIGVycm5vLCBhbmQKICAgIGxlYWRpbmcgdG8gdHJvdWJsZXMgb24gcGxhdGZvcm1zIHdoZXJlIGl0J3MgYSBtYWNybzwvbGk+CjwvdWw+PGgzPjEuNy4wOiBTZXAgMjMgMTk5OTwvaDM+PHVsPjxsaT5BZGRlZCB0aGUgYWJpbGl0eSB0byBmZXRjaCByZW1vdGUgRFREIG9yIHBhcnNlZCBlbnRpdGllcywgc2VlIHRoZSA8YSBocmVmPSJodG1sL2xpYnhtbC1uYW5vaHR0cC5odG1sIj5uYW5vaHR0cDwvYT4gbW9kdWxlLjwvbGk+CiAgPGxpPkFkZGVkIGFuIGVycm5vIHRvIHJlcG9ydCBlcnJvcnMgYnkgYW5vdGhlciBtZWFuIHRoYW4gYSBzaW1wbGUgcHJpbnRmCiAgICBsaWtlIGNhbGxiYWNrPC9saT4KICA8bGk+RmluaXNoZWQgSUQvSURSRUYgc3VwcG9ydCBhbmQgY2hlY2tpbmcgd2hlbiB2YWxpZGF0aW9uPC9saT4KICA8bGk+U2VyaW91cyBtZW1vcnkgbGVha3MgZml4ZWQgKHRoZXJlIGlzIG5vdyBhIDxhIGhyZWY9Imh0bWwvbGlieG1sLXhtbG1lbW9yeS5odG1sIj5tZW1vcnkgd3JhcHBlcjwvYT4gbW9kdWxlKTwvbGk+CiAgPGxpPkltcHJvdmVtZW50IG9mIDxhIGhyZWY9Imh0dHA6Ly93d3cudzMub3JnL1RSL3hwYXRoIj5YUGF0aDwvYT4KICAgIGltcGxlbWVudGF0aW9uPC9saT4KICA8bGk+QWRkZWQgYW4gSFRNTCBwYXJzZXIgZnJvbnQtZW5kPC9saT4KPC91bD48cD48YSBocmVmPSJidWdzLmh0bWwiPkRhbmllbCBWZWlsbGFyZDwvYT48L3A+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC90ZD48L3RyPjwvdGFibGU+PC9ib2R5PjwvaHRtbD4K