ZGlmZiAtLWdpdCBhL2NtYWtlc2NyaXB0cy90ZXN0Y2xlYW4uY21ha2UgYi9jbWFrZXNjcmlwdHMvdGVzdGNsZWFuLmNtYWtlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMzU3Nzg3Li4wMDAwMDAwCi0tLSBhL2NtYWtlc2NyaXB0cy90ZXN0Y2xlYW4uY21ha2UKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1maWxlKEdMT0IgRklMRVMKLSAgdGVzdG91dCoKLSAgKl9HUkFZXyouYm1wCi0gICpfR1JBWV8qLnBuZwotICAqX0dSQVlfKi5wcG0KLSAgKl9HUkFZXyouanBnCi0gICpfR1JBWS55dXYKLSAgKl80MjBfKi5ibXAKLSAgKl80MjBfKi5wbmcKLSAgKl80MjBfKi5wcG0KLSAgKl80MjBfKi5qcGcKLSAgKl80MjAueXV2Ci0gICpfNDIyXyouYm1wCi0gICpfNDIyXyoucG5nCi0gICpfNDIyXyoucHBtCi0gICpfNDIyXyouanBnCi0gICpfNDIyLnl1dgotICAqXzQ0NF8qLmJtcAotICAqXzQ0NF8qLnBuZwotICAqXzQ0NF8qLnBwbQotICAqXzQ0NF8qLmpwZwotICAqXzQ0NC55dXYKLSAgKl80NDBfKi5ibXAKLSAgKl80NDBfKi5wbmcKLSAgKl80NDBfKi5wcG0KLSAgKl80NDBfKi5qcGcKLSAgKl80NDAueXV2KQotCi1pZihOT1QgRklMRVMgU1RSRVFVQUwgIiIpCi0gIG1lc3NhZ2UoU1RBVFVTICJSZW1vdmluZyB0ZXN0IGZpbGVzIikKLSAgZmlsZShSRU1PVkUgJHtGSUxFU30pCi1lbHNlKCkKLSAgbWVzc2FnZShTVEFUVVMgIk5vIGZpbGVzIHRvIHJlbW92ZSIpCi1lbmRpZigpCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9hbm5vdGF0ZWQuaHRtbCBiL2RvYy9odG1sL2Fubm90YXRlZC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMGIwZTFlLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Fubm90YXRlZC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTA0ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9OSIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiLz4KLTx0aXRsZT5UdXJib0pQRUc6IERhdGEgU3RydWN0dXJlczwvdGl0bGU+Ci08bGluayBocmVmPSJ0YWJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianF1ZXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImR5bnNlY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxsaW5rIGhyZWY9InNlYXJjaC9zZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2gvc2VhcmNoLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IHNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCk7IH0pOwotPC9zY3JpcHQ+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KLTxsaW5rIGhyZWY9ImRveHlnZW4tZXh0cmEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9InRvcCI+PCEtLSBkbyBub3QgcmVtb3ZlIHRoaXMgZGl2LCBpdCBpcyBjbG9zZWQgYnkgZG94eWdlbiEgLS0+Ci08ZGl2IGlkPSJ0aXRsZWFyZWEiPgotPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Ci0gPHRib2R5PgotIDx0ciBzdHlsZT0iaGVpZ2h0OiA1NnB4OyI+Ci0gIDx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAwLjVlbTsiPgotICAgPGRpdiBpZD0icHJvamVjdG5hbWUiPlR1cmJvSlBFRwotICAgJiMxNjA7PHNwYW4gaWQ9InByb2plY3RudW1iZXIiPjEuNTwvc3Bhbj4KLSAgIDwvZGl2PgotICA8L3RkPgotIDwvdHI+Ci0gPC90Ym9keT4KLTwvdGFibGU+Ci08L2Rpdj4KLTwhLS0gZW5kIGhlYWRlciBwYXJ0IC0tPgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjguMy4xIC0tPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdmFyIHNlYXJjaEJveCA9IG5ldyBTZWFyY2hCb3goInNlYXJjaEJveCIsICJzZWFyY2giLGZhbHNlLCdTZWFyY2gnKTsKLTwvc2NyaXB0PgotICA8ZGl2IGlkPSJuYXZyb3cxIiBjbGFzcz0idGFicyI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj48c3Bhbj5NYWluJiMxNjA7UGFnZTwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJtb2R1bGVzLmh0bWwiPjxzcGFuPk1vZHVsZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT4KLSAgICAgICAgPGRpdiBpZD0iTVNlYXJjaEJveCIgY2xhc3M9Ik1TZWFyY2hCb3hJbmFjdGl2ZSI+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsZWZ0Ij4KLSAgICAgICAgICA8aW1nIGlkPSJNU2VhcmNoU2VsZWN0IiBzcmM9InNlYXJjaC9tYWdfc2VsLnBuZyIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICAgICAgICAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgICAgICAgICAgIGFsdD0iIi8+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJNU2VhcmNoRmllbGQiIHZhbHVlPSJTZWFyY2giIGFjY2Vzc2tleT0iUyIKLSAgICAgICAgICAgICAgIG9uZm9jdXM9InNlYXJjaEJveC5PblNlYXJjaEZpZWxkRm9jdXModHJ1ZSkiIAotICAgICAgICAgICAgICAgb25ibHVyPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKGZhbHNlKSIgCi0gICAgICAgICAgICAgICBvbmtleXVwPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZENoYW5nZShldmVudCkiLz4KLSAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4KLSAgICAgICAgICAgIDxhIGlkPSJNU2VhcmNoQ2xvc2UiIGhyZWY9ImphdmFzY3JpcHQ6c2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpIj48aW1nIGlkPSJNU2VhcmNoQ2xvc2VJbWciIGJvcmRlcj0iMCIgc3JjPSJzZWFyY2gvY2xvc2UucG5nIiBhbHQ9IiIvPjwvYT4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLSAgPGRpdiBpZD0ibmF2cm93MiIgY2xhc3M9InRhYnMyIj4KLSAgICA8dWwgY2xhc3M9InRhYmxpc3QiPgotICAgICAgPGxpIGNsYXNzPSJjdXJyZW50Ij48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPjxzcGFuPkRhdGEmIzE2MDtGaWVsZHM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci08L2Rpdj48IS0tIHRvcCAtLT4KLTwhLS0gd2luZG93IHNob3dpbmcgdGhlIGZpbHRlciBvcHRpb25zIC0tPgotPGRpdiBpZD0iTVNlYXJjaFNlbGVjdFdpbmRvdyIKLSAgICAgb25tb3VzZW92ZXI9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RTaG93KCkiCi0gICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgIG9ua2V5ZG93bj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEtleShldmVudCkiPgotPGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgwKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5BbGw8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgxKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5EYXRhIFN0cnVjdHVyZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgyKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5GdW5jdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgzKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5WYXJpYWJsZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg0KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5UeXBlZGVmczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDUpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDYpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0b3I8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg3KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5Hcm91cHM8L2E+PC9kaXY+Ci0KLTwhLS0gaWZyYW1lIHNob3dpbmcgdGhlIHNlYXJjaCByZXN1bHRzIChjbG9zZWQgYnkgZGVmYXVsdCkgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoUmVzdWx0c1dpbmRvdyI+Ci08aWZyYW1lIHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiBmcmFtZWJvcmRlcj0iMCIgCi0gICAgICAgIG5hbWU9Ik1TZWFyY2hSZXN1bHRzIiBpZD0iTVNlYXJjaFJlc3VsdHMiPgotPC9pZnJhbWU+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBjbGFzcz0iaGVhZGVydGl0bGUiPgotPGRpdiBjbGFzcz0idGl0bGUiPkRhdGEgU3RydWN0dXJlczwvZGl2PiAgPC9kaXY+Ci08L2Rpdj48IS0taGVhZGVyLS0+Ci08ZGl2IGNsYXNzPSJjb250ZW50cyI+Ci08ZGl2IGNsYXNzPSJ0ZXh0YmxvY2siPkhlcmUgYXJlIHRoZSBkYXRhIHN0cnVjdHVyZXMgd2l0aCBicmllZiBkZXNjcmlwdGlvbnM6PC9kaXY+PGRpdiBjbGFzcz0iZGlyZWN0b3J5Ij4KLTx0YWJsZSBjbGFzcz0iZGlyZWN0b3J5Ij4KLTx0ciBpZD0icm93XzBfIiBjbGFzcz0iZXZlbiI+PHRkIGNsYXNzPSJlbnRyeSI+PGltZyBzcmM9ImZ0djJub2RlLnBuZyIgYWx0PSJvIiB3aWR0aD0iMTYiIGhlaWdodD0iMjIiIC8+PGltZyBzcmM9ImZ0djJjbC5wbmciIGFsdD0iQyIgd2lkdGg9IjI0IiBoZWlnaHQ9IjIyIiAvPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCIgdGFyZ2V0PSJfc2VsZiI+dGpyZWdpb248L2E+PC90ZD48dGQgY2xhc3M9ImRlc2MiPkNyb3BwaW5nIHJlZ2lvbjwvdGQ+PC90cj4KLTx0ciBpZD0icm93XzFfIj48dGQgY2xhc3M9ImVudHJ5Ij48aW1nIHNyYz0iZnR2Mm5vZGUucG5nIiBhbHQ9Im8iIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMiIgLz48aW1nIHNyYz0iZnR2MmNsLnBuZyIgYWx0PSJDIiB3aWR0aD0iMjQiIGhlaWdodD0iMjIiIC8+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCIgdGFyZ2V0PSJfc2VsZiI+dGpzY2FsaW5nZmFjdG9yPC9hPjwvdGQ+PHRkIGNsYXNzPSJkZXNjIj5TY2FsaW5nIGZhY3RvcjwvdGQ+PC90cj4KLTx0ciBpZD0icm93XzJfIiBjbGFzcz0iZXZlbiI+PHRkIGNsYXNzPSJlbnRyeSI+PGltZyBzcmM9ImZ0djJsYXN0bm9kZS5wbmciIGFsdD0iXCIgd2lkdGg9IjE2IiBoZWlnaHQ9IjIyIiAvPjxpbWcgc3JjPSJmdHYyY2wucG5nIiBhbHQ9IkMiIHdpZHRoPSIyNCIgaGVpZ2h0PSIyMiIgLz48YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiIHRhcmdldD0iX3NlbGYiPnRqdHJhbnNmb3JtPC9hPjwvdGQ+PHRkIGNsYXNzPSJkZXNjIj5Mb3NzbGVzcyB0cmFuc2Zvcm08L3RkPjwvdHI+Ci08L3RhYmxlPgotPC9kaXY+PCEtLSBkaXJlY3RvcnkgLS0+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2JjX3MucG5nIGIvZG9jL2h0bWwvYmNfcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNGIyOWEuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvYmNfcy5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9iZHduLnBuZyBiL2RvYy9odG1sL2Jkd24ucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NDBhMGI5Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Jkd24ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvY2xhc3Nlcy5odG1sIGIvZG9jL2h0bWwvY2xhc3Nlcy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzVlOTZkLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2NsYXNzZXMuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPTkiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIi8+Ci08dGl0bGU+VHVyYm9KUEVHOiBEYXRhIFN0cnVjdHVyZSBJbmRleDwvdGl0bGU+Ci08bGluayBocmVmPSJ0YWJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianF1ZXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImR5bnNlY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxsaW5rIGhyZWY9InNlYXJjaC9zZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2gvc2VhcmNoLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IHNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCk7IH0pOwotPC9zY3JpcHQ+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KLTxsaW5rIGhyZWY9ImRveHlnZW4tZXh0cmEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9InRvcCI+PCEtLSBkbyBub3QgcmVtb3ZlIHRoaXMgZGl2LCBpdCBpcyBjbG9zZWQgYnkgZG94eWdlbiEgLS0+Ci08ZGl2IGlkPSJ0aXRsZWFyZWEiPgotPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Ci0gPHRib2R5PgotIDx0ciBzdHlsZT0iaGVpZ2h0OiA1NnB4OyI+Ci0gIDx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAwLjVlbTsiPgotICAgPGRpdiBpZD0icHJvamVjdG5hbWUiPlR1cmJvSlBFRwotICAgJiMxNjA7PHNwYW4gaWQ9InByb2plY3RudW1iZXIiPjEuNTwvc3Bhbj4KLSAgIDwvZGl2PgotICA8L3RkPgotIDwvdHI+Ci0gPC90Ym9keT4KLTwvdGFibGU+Ci08L2Rpdj4KLTwhLS0gZW5kIGhlYWRlciBwYXJ0IC0tPgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjguMy4xIC0tPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdmFyIHNlYXJjaEJveCA9IG5ldyBTZWFyY2hCb3goInNlYXJjaEJveCIsICJzZWFyY2giLGZhbHNlLCdTZWFyY2gnKTsKLTwvc2NyaXB0PgotICA8ZGl2IGlkPSJuYXZyb3cxIiBjbGFzcz0idGFicyI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj48c3Bhbj5NYWluJiMxNjA7UGFnZTwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJtb2R1bGVzLmh0bWwiPjxzcGFuPk1vZHVsZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT4KLSAgICAgICAgPGRpdiBpZD0iTVNlYXJjaEJveCIgY2xhc3M9Ik1TZWFyY2hCb3hJbmFjdGl2ZSI+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsZWZ0Ij4KLSAgICAgICAgICA8aW1nIGlkPSJNU2VhcmNoU2VsZWN0IiBzcmM9InNlYXJjaC9tYWdfc2VsLnBuZyIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICAgICAgICAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgICAgICAgICAgIGFsdD0iIi8+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJNU2VhcmNoRmllbGQiIHZhbHVlPSJTZWFyY2giIGFjY2Vzc2tleT0iUyIKLSAgICAgICAgICAgICAgIG9uZm9jdXM9InNlYXJjaEJveC5PblNlYXJjaEZpZWxkRm9jdXModHJ1ZSkiIAotICAgICAgICAgICAgICAgb25ibHVyPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKGZhbHNlKSIgCi0gICAgICAgICAgICAgICBvbmtleXVwPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZENoYW5nZShldmVudCkiLz4KLSAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4KLSAgICAgICAgICAgIDxhIGlkPSJNU2VhcmNoQ2xvc2UiIGhyZWY9ImphdmFzY3JpcHQ6c2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpIj48aW1nIGlkPSJNU2VhcmNoQ2xvc2VJbWciIGJvcmRlcj0iMCIgc3JjPSJzZWFyY2gvY2xvc2UucG5nIiBhbHQ9IiIvPjwvYT4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLSAgPGRpdiBpZD0ibmF2cm93MiIgY2xhc3M9InRhYnMyIj4KLSAgICA8dWwgY2xhc3M9InRhYmxpc3QiPgotICAgICAgPGxpPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iY3VycmVudCI+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPjxzcGFuPkRhdGEmIzE2MDtGaWVsZHM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci08L2Rpdj48IS0tIHRvcCAtLT4KLTwhLS0gd2luZG93IHNob3dpbmcgdGhlIGZpbHRlciBvcHRpb25zIC0tPgotPGRpdiBpZD0iTVNlYXJjaFNlbGVjdFdpbmRvdyIKLSAgICAgb25tb3VzZW92ZXI9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RTaG93KCkiCi0gICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgIG9ua2V5ZG93bj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEtleShldmVudCkiPgotPGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgwKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5BbGw8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgxKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5EYXRhIFN0cnVjdHVyZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgyKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5GdW5jdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgzKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5WYXJpYWJsZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg0KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5UeXBlZGVmczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDUpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDYpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0b3I8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg3KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5Hcm91cHM8L2E+PC9kaXY+Ci0KLTwhLS0gaWZyYW1lIHNob3dpbmcgdGhlIHNlYXJjaCByZXN1bHRzIChjbG9zZWQgYnkgZGVmYXVsdCkgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoUmVzdWx0c1dpbmRvdyI+Ci08aWZyYW1lIHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiBmcmFtZWJvcmRlcj0iMCIgCi0gICAgICAgIG5hbWU9Ik1TZWFyY2hSZXN1bHRzIiBpZD0iTVNlYXJjaFJlc3VsdHMiPgotPC9pZnJhbWU+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBjbGFzcz0iaGVhZGVydGl0bGUiPgotPGRpdiBjbGFzcz0idGl0bGUiPkRhdGEgU3RydWN0dXJlIEluZGV4PC9kaXY+ICA8L2Rpdj4KLTwvZGl2PjwhLS1oZWFkZXItLT4KLTxkaXYgY2xhc3M9ImNvbnRlbnRzIj4KLTxkaXYgY2xhc3M9InFpbmRleCI+PGEgY2xhc3M9InFpbmRleCIgaHJlZj0iI2xldHRlcl9UIj5UPC9hPjwvZGl2PgotPHRhYmxlIHN0eWxlPSJtYXJnaW46IDEwcHg7IHdoaXRlLXNwYWNlOiBub3dyYXA7IiBhbGlnbj0iY2VudGVyIiB3aWR0aD0iOTUlIiBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Ci08dHI+PHRkIHJvd3NwYW49IjIiIHZhbGlnbj0iYm90dG9tIj48YSBuYW1lPSJsZXR0ZXJfVCI+PC9hPjx0YWJsZSBib3JkZXI9IjAiIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+PHRyPjx0ZD48ZGl2IGNsYXNzPSJhaCI+JiMxNjA7JiMxNjA7VCYjMTYwOyYjMTYwOzwvZGl2PjwvdGQ+PC90cj48L3RhYmxlPgotPC90ZD48dGQgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwiPnRqc2NhbGluZ2ZhY3RvcjwvYT4mIzE2MDsmIzE2MDsmIzE2MDs8L3RkPjx0ZCB2YWxpZ249InRvcCI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sIj50anRyYW5zZm9ybTwvYT4mIzE2MDsmIzE2MDsmIzE2MDs8L3RkPjx0ZD48L3RkPjwvdHI+Ci08dHI+PHRkPjwvdGQ+PHRkPjwvdGQ+PHRkPjwvdGQ+PC90cj4KLTx0cj48dGQgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCI+dGpyZWdpb248L2E+JiMxNjA7JiMxNjA7JiMxNjA7PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48dGQ+PC90ZD48L3RyPgotPHRyPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjx0ZD48L3RkPjwvdHI+Ci08L3RhYmxlPgotPGRpdiBjbGFzcz0icWluZGV4Ij48YSBjbGFzcz0icWluZGV4IiBocmVmPSIjbGV0dGVyX1QiPlQ8L2E+PC9kaXY+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Nsb3NlZC5wbmcgYi9kb2MvaHRtbC9jbG9zZWQucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OGNjMmM5Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Nsb3NlZC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9kb3h5Z2VuLWV4dHJhLmNzcyBiL2RvYy9odG1sL2RveHlnZW4tZXh0cmEuY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWJiY2MyLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2RveHlnZW4tZXh0cmEuY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi1jb2RlIHsKLQljb2xvcjogIzQ2NjVBMjsgCi19CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9kb3h5Z2VuLmNzcyBiL2RvYy9odG1sL2RveHlnZW4uY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWJhZmYyLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2RveHlnZW4uY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMTE4NCArMCwwIEBACi0vKiBUaGUgc3RhbmRhcmQgQ1NTIGZvciBkb3h5Z2VuIDEuOC4zLjEgKi8KLQotYm9keSwgdGFibGUsIGRpdiwgcCwgZGwgewotCWZvbnQ6IDQwMCAxNHB4LzE5cHggUm9ib3RvLHNhbnMtc2VyaWY7Ci19Ci0KLS8qIEBncm91cCBIZWFkaW5nIExldmVscyAqLwotCi1oMS5ncm91cGhlYWRlciB7Ci0JZm9udC1zaXplOiAxNTAlOwotfQotCi0udGl0bGUgewotCWZvbnQtc2l6ZTogMTUwJTsKLQlmb250LXdlaWdodDogYm9sZDsKLQltYXJnaW46IDEwcHggMnB4OwotfQotCi1oMi5ncm91cGhlYWRlciB7Ci0JYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICM4NzlFQ0I7Ci0JY29sb3I6ICMzNTRDN0I7Ci0JZm9udC1zaXplOiAxNTAlOwotCWZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0JbWFyZ2luLXRvcDogMS43NWVtOwotCXBhZGRpbmctdG9wOiA4cHg7Ci0JcGFkZGluZy1ib3R0b206IDRweDsKLQl3aWR0aDogMTAwJTsKLX0KLQotaDMuZ3JvdXBoZWFkZXIgewotCWZvbnQtc2l6ZTogMTAwJTsKLX0KLQotaDEsIGgyLCBoMywgaDQsIGg1LCBoNiB7Ci0JLXdlYmtpdC10cmFuc2l0aW9uOiB0ZXh0LXNoYWRvdyAwLjVzIGxpbmVhcjsKLQktbW96LXRyYW5zaXRpb246IHRleHQtc2hhZG93IDAuNXMgbGluZWFyOwotCS1tcy10cmFuc2l0aW9uOiB0ZXh0LXNoYWRvdyAwLjVzIGxpbmVhcjsKLQktby10cmFuc2l0aW9uOiB0ZXh0LXNoYWRvdyAwLjVzIGxpbmVhcjsKLQl0cmFuc2l0aW9uOiB0ZXh0LXNoYWRvdyAwLjVzIGxpbmVhcjsKLQltYXJnaW4tcmlnaHQ6IDE1cHg7Ci19Ci0KLWgxLmdsb3csIGgyLmdsb3csIGgzLmdsb3csIGg0Lmdsb3csIGg1Lmdsb3csIGg2Lmdsb3cgewotCXRleHQtc2hhZG93OiAwIDAgMTVweCBjeWFuOwotfQotCi1kdCB7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWRpdi5tdWx0aWNvbCB7Ci0JLW1vei1jb2x1bW4tZ2FwOiAxZW07Ci0JLXdlYmtpdC1jb2x1bW4tZ2FwOiAxZW07Ci0JLW1vei1jb2x1bW4tY291bnQ6IDM7Ci0JLXdlYmtpdC1jb2x1bW4tY291bnQ6IDM7Ci19Ci0KLXAuc3RhcnRsaSwgcC5zdGFydGRkLCBwLnN0YXJ0dGQgewotCW1hcmdpbi10b3A6IDJweDsKLX0KLQotcC5lbmRsaSB7Ci0JbWFyZ2luLWJvdHRvbTogMHB4OwotfQotCi1wLmVuZGRkIHsKLQltYXJnaW4tYm90dG9tOiA0cHg7Ci19Ci0KLXAuZW5kdGQgewotCW1hcmdpbi1ib3R0b206IDJweDsKLX0KLQotLyogQGVuZCAqLwotCi1jYXB0aW9uIHsKLQlmb250LXdlaWdodDogYm9sZDsKLX0KLQotc3Bhbi5sZWdlbmQgewotICAgICAgICBmb250LXNpemU6IDcwJTsKLSAgICAgICAgdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi1oMy52ZXJzaW9uIHsKLSAgICAgICAgZm9udC1zaXplOiA5MCU7Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotZGl2LnFpbmRleCwgZGl2Lm5hdnRhYnsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRUJFRkY2OwotCWJvcmRlcjogMXB4IHNvbGlkICNBM0I0RDc7Ci0JdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi1kaXYucWluZGV4LCBkaXYubmF2cGF0aCB7Ci0Jd2lkdGg6IDEwMCU7Ci0JbGluZS1oZWlnaHQ6IDE0MCU7Ci19Ci0KLWRpdi5uYXZ0YWIgewotCW1hcmdpbi1yaWdodDogMTVweDsKLX0KLQotLyogQGdyb3VwIExpbmsgU3R5bGluZyAqLwotCi1hIHsKLQljb2xvcjogIzNENTc4QzsKLQlmb250LXdlaWdodDogbm9ybWFsOwotCXRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotLmNvbnRlbnRzIGE6dmlzaXRlZCB7Ci0JY29sb3I6ICM0NjY1QTI7Ci19Ci0KLWE6aG92ZXIgewotCXRleHQtZGVjb3JhdGlvbjogdW5kZXJsaW5lOwotfQotCi1hLnFpbmRleCB7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWEucWluZGV4SEwgewotCWZvbnQtd2VpZ2h0OiBib2xkOwotCWJhY2tncm91bmQtY29sb3I6ICM5Q0FGRDQ7Ci0JY29sb3I6ICNmZmZmZmY7Ci0JYm9yZGVyOiAxcHggZG91YmxlICM4NjlEQ0E7Ci19Ci0KLS5jb250ZW50cyBhLnFpbmRleEhMOnZpc2l0ZWQgewotICAgICAgICBjb2xvcjogI2ZmZmZmZjsKLX0KLQotYS5lbCB7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWEuZWxSZWYgewotfQotCi1hLmNvZGUsIGEuY29kZTp2aXNpdGVkIHsKLQljb2xvcjogIzQ2NjVBMjsgCi19Ci0KLWEuY29kZVJlZiwgYS5jb2RlUmVmOnZpc2l0ZWQgewotCWNvbG9yOiAjNDY2NUEyOyAKLX0KLQotLyogQGVuZCAqLwotCi1kbC5lbCB7Ci0JbWFyZ2luLWxlZnQ6IC0xY207Ci19Ci0KLXByZS5mcmFnbWVudCB7Ci0gICAgICAgIGJvcmRlcjogMXB4IHNvbGlkICNDNENGRTU7Ci0gICAgICAgIGJhY2tncm91bmQtY29sb3I6ICNGQkZDRkQ7Ci0gICAgICAgIHBhZGRpbmc6IDRweCA2cHg7Ci0gICAgICAgIG1hcmdpbjogNHB4IDhweCA0cHggMnB4OwotICAgICAgICBvdmVyZmxvdzogYXV0bzsKLSAgICAgICAgd29yZC13cmFwOiBicmVhay13b3JkOwotICAgICAgICBmb250LXNpemU6ICA5cHQ7Ci0gICAgICAgIGxpbmUtaGVpZ2h0OiAxMjUlOwotICAgICAgICBmb250LWZhbWlseTogbW9ub3NwYWNlLCBmaXhlZDsKLSAgICAgICAgZm9udC1zaXplOiAxMDUlOwotfQotCi1kaXYuZnJhZ21lbnQgewotICAgICAgICBwYWRkaW5nOiA0cHg7Ci0gICAgICAgIG1hcmdpbjogNHB4OwotCWJhY2tncm91bmQtY29sb3I6ICNGQkZDRkQ7Ci0JYm9yZGVyOiAxcHggc29saWQgI0M0Q0ZFNTsKLX0KLQotZGl2LmxpbmUgewotCWZvbnQtZmFtaWx5OiBtb25vc3BhY2UsIGZpeGVkOwotICAgICAgICBmb250LXNpemU6IDEzcHg7Ci0JbWluLWhlaWdodDogMTNweDsKLQlsaW5lLWhlaWdodDogMS4wOwotCXRleHQtd3JhcDogdW5yZXN0cmljdGVkOwotCXdoaXRlLXNwYWNlOiAtbW96LXByZS13cmFwOyAvKiBNb3ogKi8KLQl3aGl0ZS1zcGFjZTogLXByZS13cmFwOyAgICAgLyogT3BlcmEgNC02ICovCi0Jd2hpdGUtc3BhY2U6IC1vLXByZS13cmFwOyAgIC8qIE9wZXJhIDcgKi8KLQl3aGl0ZS1zcGFjZTogcHJlLXdyYXA7ICAgICAgLyogQ1NTMyAgKi8KLQl3b3JkLXdyYXA6IGJyZWFrLXdvcmQ7ICAgICAgLyogSUUgNS41KyAqLwotCXRleHQtaW5kZW50OiAtNTNweDsKLQlwYWRkaW5nLWxlZnQ6IDUzcHg7Ci0JcGFkZGluZy1ib3R0b206IDBweDsKLQltYXJnaW46IDBweDsKLQktd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwotCS1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKLQktbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7Ci0JLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7Ci0JLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKLQktby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwotCXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKLX0KLQotZGl2LmxpbmUuZ2xvdyB7Ci0JYmFja2dyb3VuZC1jb2xvcjogY3lhbjsKLQlib3gtc2hhZG93OiAwIDAgMTBweCBjeWFuOwotfQotCi0KLXNwYW4ubGluZW5vIHsKLQlwYWRkaW5nLXJpZ2h0OiA0cHg7Ci0JdGV4dC1hbGlnbjogcmlnaHQ7Ci0JYm9yZGVyLXJpZ2h0OiAycHggc29saWQgIzBGMDsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRThFOEU4OwotICAgICAgICB3aGl0ZS1zcGFjZTogcHJlOwotfQotc3Bhbi5saW5lbm8gYSB7Ci0JYmFja2dyb3VuZC1jb2xvcjogI0Q4RDhEODsKLX0KLQotc3Bhbi5saW5lbm8gYTpob3ZlciB7Ci0JYmFja2dyb3VuZC1jb2xvcjogI0M4QzhDODsKLX0KLQotZGl2LmFoIHsKLQliYWNrZ3JvdW5kLWNvbG9yOiBibGFjazsKLQlmb250LXdlaWdodDogYm9sZDsKLQljb2xvcjogI2ZmZmZmZjsKLQltYXJnaW4tYm90dG9tOiAzcHg7Ci0JbWFyZ2luLXRvcDogM3B4OwotCXBhZGRpbmc6IDAuMmVtOwotCWJvcmRlcjogc29saWQgdGhpbiAjMzMzOwotCWJvcmRlci1yYWRpdXM6IDAuNWVtOwotCS13ZWJraXQtYm9yZGVyLXJhZGl1czogLjVlbTsKLQktbW96LWJvcmRlci1yYWRpdXM6IC41ZW07Ci0JYm94LXNoYWRvdzogMnB4IDJweCAzcHggIzk5OTsKLQktd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggM3B4ICM5OTk7Ci0JLW1vei1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTUpIDJweCAycHggMnB4OwotCWJhY2tncm91bmQtaW1hZ2U6IC13ZWJraXQtZ3JhZGllbnQobGluZWFyLCBsZWZ0IHRvcCwgbGVmdCBib3R0b20sIGZyb20oI2VlZSksIHRvKCMwMDApLGNvbG9yLXN0b3AoMC4zLCAjNDQ0KSk7Ci0JYmFja2dyb3VuZC1pbWFnZTogLW1vei1saW5lYXItZ3JhZGllbnQoY2VudGVyIHRvcCwgI2VlZSAwJSwgIzQ0NCA0MCUsICMwMDApOwotfQotCi1kaXYuZ3JvdXBIZWFkZXIgewotCW1hcmdpbi1sZWZ0OiAxNnB4OwotCW1hcmdpbi10b3A6IDEycHg7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci19Ci0KLWRpdi5ncm91cFRleHQgewotCW1hcmdpbi1sZWZ0OiAxNnB4OwotCWZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotYm9keSB7Ci0JYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7Ci0JY29sb3I6IGJsYWNrOwotICAgICAgICBtYXJnaW46IDA7Ci19Ci0KLWRpdi5jb250ZW50cyB7Ci0JbWFyZ2luLXRvcDogMTBweDsKLQltYXJnaW4tbGVmdDogMTJweDsKLQltYXJnaW4tcmlnaHQ6IDhweDsKLX0KLQotdGQuaW5kZXhrZXkgewotCWJhY2tncm91bmQtY29sb3I6ICNFQkVGRjY7Ci0JZm9udC13ZWlnaHQ6IGJvbGQ7Ci0JYm9yZGVyOiAxcHggc29saWQgI0M0Q0ZFNTsKLQltYXJnaW46IDJweCAwcHggMnB4IDA7Ci0JcGFkZGluZzogMnB4IDEwcHg7Ci0gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgICAgIHZlcnRpY2FsLWFsaWduOiB0b3A7Ci19Ci0KLXRkLmluZGV4dmFsdWUgewotCWJhY2tncm91bmQtY29sb3I6ICNFQkVGRjY7Ci0JYm9yZGVyOiAxcHggc29saWQgI0M0Q0ZFNTsKLQlwYWRkaW5nOiAycHggMTBweDsKLQltYXJnaW46IDJweCAwcHg7Ci19Ci0KLXRyLm1lbWxpc3QgewotCWJhY2tncm91bmQtY29sb3I6ICNFRUYxRjc7Ci19Ci0KLXAuZm9ybXVsYURzcCB7Ci0JdGV4dC1hbGlnbjogY2VudGVyOwotfQotCi1pbWcuZm9ybXVsYURzcCB7Ci0JCi19Ci0KLWltZy5mb3JtdWxhSW5sIHsKLQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotfQotCi1kaXYuY2VudGVyIHsKLQl0ZXh0LWFsaWduOiBjZW50ZXI7Ci0gICAgICAgIG1hcmdpbi10b3A6IDBweDsKLSAgICAgICAgbWFyZ2luLWJvdHRvbTogMHB4OwotICAgICAgICBwYWRkaW5nOiAwcHg7Ci19Ci0KLWRpdi5jZW50ZXIgaW1nIHsKLQlib3JkZXI6IDBweDsKLX0KLQotYWRkcmVzcy5mb290ZXIgewotCXRleHQtYWxpZ246IHJpZ2h0OwotCXBhZGRpbmctcmlnaHQ6IDEycHg7Ci19Ci0KLWltZy5mb290ZXIgewotCWJvcmRlcjogMHB4OwotCXZlcnRpY2FsLWFsaWduOiBtaWRkbGU7Ci19Ci0KLS8qIEBncm91cCBDb2RlIENvbG9yaXphdGlvbiAqLwotCi1zcGFuLmtleXdvcmQgewotCWNvbG9yOiAjMDA4MDAwCi19Ci0KLXNwYW4ua2V5d29yZHR5cGUgewotCWNvbG9yOiAjNjA0MDIwCi19Ci0KLXNwYW4ua2V5d29yZGZsb3cgewotCWNvbG9yOiAjZTA4MDAwCi19Ci0KLXNwYW4uY29tbWVudCB7Ci0JY29sb3I6ICM4MDAwMDAKLX0KLQotc3Bhbi5wcmVwcm9jZXNzb3IgewotCWNvbG9yOiAjODA2MDIwCi19Ci0KLXNwYW4uc3RyaW5nbGl0ZXJhbCB7Ci0JY29sb3I6ICMwMDIwODAKLX0KLQotc3Bhbi5jaGFybGl0ZXJhbCB7Ci0JY29sb3I6ICMwMDgwODAKLX0KLQotc3Bhbi52aGRsZGlnaXQgeyAKLQljb2xvcjogI2ZmMDBmZiAKLX0KLQotc3Bhbi52aGRsY2hhciB7IAotCWNvbG9yOiAjMDAwMDAwIAotfQotCi1zcGFuLnZoZGxrZXl3b3JkIHsgCi0JY29sb3I6ICM3MDAwNzAgCi19Ci0KLXNwYW4udmhkbGxvZ2ljIHsgCi0JY29sb3I6ICNmZjAwMDAgCi19Ci0KLWJsb2NrcXVvdGUgewotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjdGOEZCOwotICAgICAgICBib3JkZXItbGVmdDogMnB4IHNvbGlkICM5Q0FGRDQ7Ci0gICAgICAgIG1hcmdpbjogMCAyNHB4IDAgNHB4OwotICAgICAgICBwYWRkaW5nOiAwIDEycHggMCAxNnB4OwotfQotCi0vKiBAZW5kICovCi0KLS8qCi0uc2VhcmNoIHsKLQljb2xvcjogIzAwMzM5OTsKLQlmb250LXdlaWdodDogYm9sZDsKLX0KLQotZm9ybS5zZWFyY2ggewotCW1hcmdpbi1ib3R0b206IDBweDsKLQltYXJnaW4tdG9wOiAwcHg7Ci19Ci0KLWlucHV0LnNlYXJjaCB7Ci0JZm9udC1zaXplOiA3NSU7Ci0JY29sb3I6ICMwMDAwODA7Ci0JZm9udC13ZWlnaHQ6IG5vcm1hbDsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjZThlZWYyOwotfQotKi8KLQotdGQudGlueSB7Ci0JZm9udC1zaXplOiA3NSU7Ci19Ci0KLS5kaXJ0YWIgewotCXBhZGRpbmc6IDRweDsKLQlib3JkZXItY29sbGFwc2U6IGNvbGxhcHNlOwotCWJvcmRlcjogMXB4IHNvbGlkICNBM0I0RDc7Ci19Ci0KLXRoLmRpcnRhYiB7Ci0JYmFja2dyb3VuZDogI0VCRUZGNjsKLQlmb250LXdlaWdodDogYm9sZDsKLX0KLQotaHIgewotCWhlaWdodDogMHB4OwotCWJvcmRlcjogbm9uZTsKLQlib3JkZXItdG9wOiAxcHggc29saWQgIzRBNkFBQTsKLX0KLQotaHIuZm9vdGVyIHsKLQloZWlnaHQ6IDFweDsKLX0KLQotLyogQGdyb3VwIE1lbWJlciBEZXNjcmlwdGlvbnMgKi8KLQotdGFibGUubWVtYmVyZGVjbHMgewotCWJvcmRlci1zcGFjaW5nOiAwcHg7Ci0JcGFkZGluZzogMHB4OwotfQotCi0ubWVtYmVyZGVjbHMgdGQsIC5maWVsZHRhYmxlIHRyIHsKLQktd2Via2l0LXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JLXdlYmtpdC10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwotCS1tb3otdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKLQktbW96LXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7Ci0JLW1zLXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JLW1zLXRyYW5zaXRpb24tZHVyYXRpb246IDAuNXM7Ci0JLW8tdHJhbnNpdGlvbi1wcm9wZXJ0eTogYmFja2dyb3VuZC1jb2xvciwgYm94LXNoYWRvdzsKLQktby10cmFuc2l0aW9uLWR1cmF0aW9uOiAwLjVzOwotCXRyYW5zaXRpb24tcHJvcGVydHk6IGJhY2tncm91bmQtY29sb3IsIGJveC1zaGFkb3c7Ci0JdHJhbnNpdGlvbi1kdXJhdGlvbjogMC41czsKLX0KLQotLm1lbWJlcmRlY2xzIHRkLmdsb3csIC5maWVsZHRhYmxlIHRyLmdsb3cgewotCWJhY2tncm91bmQtY29sb3I6IGN5YW47Ci0JYm94LXNoYWRvdzogMCAwIDE1cHggY3lhbjsKLX0KLQotLm1kZXNjTGVmdCwgLm1kZXNjUmlnaHQsCi0ubWVtSXRlbUxlZnQsIC5tZW1JdGVtUmlnaHQsCi0ubWVtVGVtcGxJdGVtTGVmdCwgLm1lbVRlbXBsSXRlbVJpZ2h0LCAubWVtVGVtcGxQYXJhbXMgewotCWJhY2tncm91bmQtY29sb3I6ICNGOUZBRkM7Ci0JYm9yZGVyOiBub25lOwotCW1hcmdpbjogNHB4OwotCXBhZGRpbmc6IDFweCAwIDAgOHB4OwotfQotCi0ubWRlc2NMZWZ0LCAubWRlc2NSaWdodCB7Ci0JcGFkZGluZzogMHB4IDhweCA0cHggOHB4OwotCWNvbG9yOiAjNTU1OwotfQotCi0ubWVtU2VwYXJhdG9yIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNERUU0RjA7Ci0gICAgICAgIGxpbmUtaGVpZ2h0OiAxcHg7Ci0gICAgICAgIG1hcmdpbjogMHB4OwotICAgICAgICBwYWRkaW5nOiAwcHg7Ci19Ci0KLS5tZW1JdGVtTGVmdCwgLm1lbVRlbXBsSXRlbUxlZnQgewotICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0ubWVtSXRlbVJpZ2h0IHsKLQl3aWR0aDogMTAwJTsKLX0KLQotLm1lbVRlbXBsUGFyYW1zIHsKLQljb2xvcjogIzQ2NjVBMjsKLSAgICAgICAgd2hpdGUtc3BhY2U6IG5vd3JhcDsKLQlmb250LXNpemU6IDgwJTsKLX0KLQotLyogQGVuZCAqLwotCi0vKiBAZ3JvdXAgTWVtYmVyIERldGFpbHMgKi8KLQotLyogU3R5bGVzIGZvciBkZXRhaWxlZCBtZW1iZXIgZG9jdW1lbnRhdGlvbiAqLwotCi0ubWVtdGVtcGxhdGUgewotCWZvbnQtc2l6ZTogODAlOwotCWNvbG9yOiAjNDY2NUEyOwotCWZvbnQtd2VpZ2h0OiBub3JtYWw7Ci0JbWFyZ2luLWxlZnQ6IDlweDsKLX0KLQotLm1lbW5hdiB7Ci0JYmFja2dyb3VuZC1jb2xvcjogI0VCRUZGNjsKLQlib3JkZXI6IDFweCBzb2xpZCAjQTNCNEQ3OwotCXRleHQtYWxpZ246IGNlbnRlcjsKLQltYXJnaW46IDJweDsKLQltYXJnaW4tcmlnaHQ6IDE1cHg7Ci0JcGFkZGluZzogMnB4OwotfQotCi0ubWVtcGFnZSB7Ci0Jd2lkdGg6IDEwMCU7Ci19Ci0KLS5tZW1pdGVtIHsKLQlwYWRkaW5nOiAwOwotCW1hcmdpbi1ib3R0b206IDEwcHg7Ci0JbWFyZ2luLXJpZ2h0OiA1cHg7Ci0gICAgICAgIC13ZWJraXQtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKLSAgICAgICAgLW1vei10cmFuc2l0aW9uOiBib3gtc2hhZG93IDAuNXMgbGluZWFyOwotICAgICAgICAtbXMtdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKLSAgICAgICAgLW8tdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKLSAgICAgICAgdHJhbnNpdGlvbjogYm94LXNoYWRvdyAwLjVzIGxpbmVhcjsKLSAgICAgICAgZGlzcGxheTogdGFibGUgIWltcG9ydGFudDsKLSAgICAgICAgd2lkdGg6IDEwMCU7Ci19Ci0KLS5tZW1pdGVtLmdsb3cgewotICAgICAgICAgYm94LXNoYWRvdzogMCAwIDE1cHggY3lhbjsKLX0KLQotLm1lbW5hbWUgewotICAgICAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICAgICAgbWFyZ2luLWxlZnQ6IDZweDsKLX0KLQotLm1lbW5hbWUgdGQgewotCXZlcnRpY2FsLWFsaWduOiBib3R0b207Ci19Ci0KLS5tZW1wcm90bywgZGwucmVmbGlzdCBkdCB7Ci0gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQThCOEQ5OwotICAgICAgICBib3JkZXItbGVmdDogMXB4IHNvbGlkICNBOEI4RDk7Ci0gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBOEI4RDk7Ci0gICAgICAgIHBhZGRpbmc6IDZweCAwcHggNnB4IDBweDsKLSAgICAgICAgY29sb3I6ICMyNTM1NTU7Ci0gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgICB0ZXh0LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnbmF2X2YucG5nJyk7Ci0gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRTJFOEYyOwotICAgICAgICAvKiBvcGVyYSBzcGVjaWZpYyBtYXJrdXAgKi8KLSAgICAgICAgYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKLSAgICAgICAgYm9yZGVyLXRvcC1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAgICAgYm9yZGVyLXRvcC1sZWZ0LXJhZGl1czogNHB4OwotICAgICAgICAvKiBmaXJlZm94IHNwZWNpZmljIG1hcmt1cCAqLwotICAgICAgICAtbW96LWJveC1zaGFkb3c6IHJnYmEoMCwgMCwgMCwgMC4xNSkgNXB4IDVweCA1cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtdG9wbGVmdDogNHB4OwotICAgICAgICAvKiB3ZWJraXQgc3BlY2lmaWMgbWFya3VwICovCi0gICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLQotfQotCi0ubWVtZG9jLCBkbC5yZWZsaXN0IGRkIHsKLSAgICAgICAgYm9yZGVyLWJvdHRvbTogMXB4IHNvbGlkICNBOEI4RDk7ICAgICAgCi0gICAgICAgIGJvcmRlci1sZWZ0OiAxcHggc29saWQgI0E4QjhEOTsgICAgICAKLSAgICAgICAgYm9yZGVyLXJpZ2h0OiAxcHggc29saWQgI0E4QjhEOTsgCi0gICAgICAgIHBhZGRpbmc6IDZweCAxMHB4IDJweCAxMHB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkJGQ0ZEOwotICAgICAgICBib3JkZXItdG9wLXdpZHRoOiAwOwotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOnVybCgnbmF2X2cucG5nJyk7Ci0gICAgICAgIGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRkZGRkZGOwotICAgICAgICAvKiBvcGVyYSBzcGVjaWZpYyBtYXJrdXAgKi8KLSAgICAgICAgYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwotICAgICAgICBib3JkZXItYm90dG9tLXJpZ2h0LXJhZGl1czogNHB4OwotICAgICAgICBib3gtc2hhZG93OiA1cHggNXB4IDVweCByZ2JhKDAsIDAsIDAsIDAuMTUpOwotICAgICAgICAvKiBmaXJlZm94IHNwZWNpZmljIG1hcmt1cCAqLwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tbGVmdDogNHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXMtYm90dG9tcmlnaHQ6IDRweDsKLSAgICAgICAgLW1vei1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTUpIDVweCA1cHggNXB4OwotICAgICAgICAvKiB3ZWJraXQgc3BlY2lmaWMgbWFya3VwICovCi0gICAgICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci1ib3R0b20tcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgICAgIC13ZWJraXQtYm94LXNoYWRvdzogNXB4IDVweCA1cHggcmdiYSgwLCAwLCAwLCAwLjE1KTsKLX0KLQotZGwucmVmbGlzdCBkdCB7Ci0gICAgICAgIHBhZGRpbmc6IDVweDsKLX0KLQotZGwucmVmbGlzdCBkZCB7Ci0gICAgICAgIG1hcmdpbjogMHB4IDBweCAxMHB4IDBweDsKLSAgICAgICAgcGFkZGluZzogNXB4OwotfQotCi0ucGFyYW1rZXkgewotCXRleHQtYWxpZ246IHJpZ2h0OwotfQotCi0ucGFyYW10eXBlIHsKLQl3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotCi0ucGFyYW1uYW1lIHsKLQljb2xvcjogIzYwMjAyMDsKLQl3aGl0ZS1zcGFjZTogbm93cmFwOwotfQotLnBhcmFtbmFtZSBlbSB7Ci0JZm9udC1zdHlsZTogbm9ybWFsOwotfQotLnBhcmFtbmFtZSBjb2RlIHsKLSAgICAgICAgbGluZS1oZWlnaHQ6IDE0cHg7Ci19Ci0KLS5wYXJhbXMsIC5yZXR2YWwsIC5leGNlcHRpb24sIC50cGFyYW1zIHsKLSAgICAgICAgbWFyZ2luLWxlZnQ6IDBweDsKLSAgICAgICAgcGFkZGluZy1sZWZ0OiAwcHg7Ci19ICAgICAgIAotCi0ucGFyYW1zIC5wYXJhbW5hbWUsIC5yZXR2YWwgLnBhcmFtbmFtZSB7Ci0gICAgICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotICAgICAgICAKLS5wYXJhbXMgLnBhcmFtdHlwZSB7Ci0gICAgICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLSAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0gICAgICAgCi0gICAgICAgIAotLnBhcmFtcyAucGFyYW1kaXIgewotICAgICAgICBmb250LWZhbWlseTogImNvdXJpZXIgbmV3Iixjb3VyaWVyLG1vbm9zcGFjZTsKLSAgICAgICAgdmVydGljYWwtYWxpZ246IHRvcDsKLX0KLQotdGFibGUubWxhYmVscyB7Ci0JYm9yZGVyLXNwYWNpbmc6IDBweDsKLX0KLQotdGQubWxhYmVscy1sZWZ0IHsKLQl3aWR0aDogMTAwJTsKLQlwYWRkaW5nOiAwcHg7Ci19Ci0KLXRkLm1sYWJlbHMtcmlnaHQgewotCXZlcnRpY2FsLWFsaWduOiBib3R0b207Ci0JcGFkZGluZzogMHB4OwotCXdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0KLXNwYW4ubWxhYmVscyB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiA4cHg7Ci19Ci0KLXNwYW4ubWxhYmVsIHsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogIzcyOERDMTsKLSAgICAgICAgYm9yZGVyLXRvcDoxcHggc29saWQgIzUzNzNCNDsKLSAgICAgICAgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM1MzczQjQ7Ci0gICAgICAgIGJvcmRlci1yaWdodDoxcHggc29saWQgI0M0Q0ZFNTsKLSAgICAgICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgI0M0Q0ZFNTsKLQl0ZXh0LXNoYWRvdzogbm9uZTsKLQljb2xvcjogd2hpdGU7Ci0JbWFyZ2luLXJpZ2h0OiA0cHg7Ci0JcGFkZGluZzogMnB4IDNweDsKLQlib3JkZXItcmFkaXVzOiAzcHg7Ci0JZm9udC1zaXplOiA3cHQ7Ci0Jd2hpdGUtc3BhY2U6IG5vd3JhcDsKLQl2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwotfQotCi0KLQotLyogQGVuZCAqLwotCi0vKiB0aGVzZSBhcmUgZm9yIHRyZWUgdmlldyB3aGVuIG5vdCB1c2VkIGFzIG1haW4gaW5kZXggKi8KLQotZGl2LmRpcmVjdG9yeSB7Ci0gICAgICAgIG1hcmdpbjogMTBweCAwcHg7Ci0gICAgICAgIGJvcmRlci10b3A6IDFweCBzb2xpZCAjQThCOEQ5OwotICAgICAgICBib3JkZXItYm90dG9tOiAxcHggc29saWQgI0E4QjhEOTsKLSAgICAgICAgd2lkdGg6IDEwMCU7Ci19Ci0KLS5kaXJlY3RvcnkgdGFibGUgewotICAgICAgICBib3JkZXItY29sbGFwc2U6Y29sbGFwc2U7Ci19Ci0KLS5kaXJlY3RvcnkgdGQgewotICAgICAgICBtYXJnaW46IDBweDsKLSAgICAgICAgcGFkZGluZzogMHB4OwotCXZlcnRpY2FsLWFsaWduOiB0b3A7Ci19Ci0KLS5kaXJlY3RvcnkgdGQuZW50cnkgewotICAgICAgICB3aGl0ZS1zcGFjZTogbm93cmFwOwotICAgICAgICBwYWRkaW5nLXJpZ2h0OiA2cHg7Ci19Ci0KLS5kaXJlY3RvcnkgdGQuZW50cnkgYSB7Ci0gICAgICAgIG91dGxpbmU6bm9uZTsKLX0KLQotLmRpcmVjdG9yeSB0ZC5lbnRyeSBhIGltZyB7Ci0gICAgICAgIGJvcmRlcjogbm9uZTsKLX0KLQotLmRpcmVjdG9yeSB0ZC5kZXNjIHsKLSAgICAgICAgd2lkdGg6IDEwMCU7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogNnB4OwotCXBhZGRpbmctcmlnaHQ6IDZweDsKLQlwYWRkaW5nLXRvcDogM3B4OwotCWJvcmRlci1sZWZ0OiAxcHggc29saWQgcmdiYSgwLDAsMCwwLjA1KTsKLX0KLQotLmRpcmVjdG9yeSB0ci5ldmVuIHsKLQlwYWRkaW5nLWxlZnQ6IDZweDsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRjdGOEZCOwotfQotCi0uZGlyZWN0b3J5IGltZyB7Ci0JdmVydGljYWwtYWxpZ246IC0zMCU7Ci19Ci0KLS5kaXJlY3RvcnkgLmxldmVscyB7Ci0gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgICAgIHdpZHRoOiAxMDAlOwotICAgICAgICB0ZXh0LWFsaWduOiByaWdodDsKLSAgICAgICAgZm9udC1zaXplOiA5cHQ7Ci19Ci0KLS5kaXJlY3RvcnkgLmxldmVscyBzcGFuIHsKLSAgICAgICAgY3Vyc29yOiBwb2ludGVyOwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDJweDsKLSAgICAgICAgcGFkZGluZy1yaWdodDogMnB4OwotCWNvbG9yOiAjM0Q1NzhDOwotfQotCi1kaXYuZHluaGVhZGVyIHsKLSAgICAgICAgbWFyZ2luLXRvcDogOHB4OwotCS13ZWJraXQtdG91Y2gtY2FsbG91dDogbm9uZTsKLQktd2Via2l0LXVzZXItc2VsZWN0OiBub25lOwotCS1raHRtbC11c2VyLXNlbGVjdDogbm9uZTsKLQktbW96LXVzZXItc2VsZWN0OiBub25lOwotCS1tcy11c2VyLXNlbGVjdDogbm9uZTsKLQl1c2VyLXNlbGVjdDogbm9uZTsKLX0KLQotYWRkcmVzcyB7Ci0JZm9udC1zdHlsZTogbm9ybWFsOwotCWNvbG9yOiAjMkEzRDYxOwotfQotCi10YWJsZS5kb3h0YWJsZSB7Ci0JYm9yZGVyLWNvbGxhcHNlOmNvbGxhcHNlOwotICAgICAgICBtYXJnaW4tdG9wOiA0cHg7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206IDRweDsKLX0KLQotdGFibGUuZG94dGFibGUgdGQsIHRhYmxlLmRveHRhYmxlIHRoIHsKLQlib3JkZXI6IDFweCBzb2xpZCAjMkQ0MDY4OwotCXBhZGRpbmc6IDNweCA3cHggMnB4OwotfQotCi10YWJsZS5kb3h0YWJsZSB0aCB7Ci0JYmFja2dyb3VuZC1jb2xvcjogIzM3NEY3RjsKLQljb2xvcjogI0ZGRkZGRjsKLQlmb250LXNpemU6IDExMCU7Ci0JcGFkZGluZy1ib3R0b206IDRweDsKLQlwYWRkaW5nLXRvcDogNXB4OwotfQotCi10YWJsZS5maWVsZHRhYmxlIHsKLSAgICAgICAgLyp3aWR0aDogMTAwJTsqLwotICAgICAgICBtYXJnaW4tYm90dG9tOiAxMHB4OwotICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjQThCOEQ5OwotICAgICAgICBib3JkZXItc3BhY2luZzogMHB4OwotICAgICAgICAtbW96LWJvcmRlci1yYWRpdXM6IDRweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgICAgIGJvcmRlci1yYWRpdXM6IDRweDsKLSAgICAgICAgLW1vei1ib3gtc2hhZG93OiByZ2JhKDAsIDAsIDAsIDAuMTUpIDJweCAycHggMnB4OwotICAgICAgICAtd2Via2l0LWJveC1zaGFkb3c6IDJweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci0gICAgICAgIGJveC1zaGFkb3c6IDJweCAycHggMnB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci19Ci0KLS5maWVsZHRhYmxlIHRkLCAuZmllbGR0YWJsZSB0aCB7Ci0gICAgICAgIHBhZGRpbmc6IDNweCA3cHggMnB4OwotfQotCi0uZmllbGR0YWJsZSB0ZC5maWVsZHR5cGUsIC5maWVsZHRhYmxlIHRkLmZpZWxkbmFtZSB7Ci0gICAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7Ci0gICAgICAgIGJvcmRlci1yaWdodDogMXB4IHNvbGlkICNBOEI4RDk7Ci0gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQThCOEQ5OwotICAgICAgICB2ZXJ0aWNhbC1hbGlnbjogdG9wOwotfQotCi0uZmllbGR0YWJsZSB0ZC5maWVsZG5hbWUgewotICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwotfQotCi0uZmllbGR0YWJsZSB0ZC5maWVsZGRvYyB7Ci0gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQThCOEQ5OwotICAgICAgICAvKndpZHRoOiAxMDAlOyovCi19Ci0KLS5maWVsZHRhYmxlIHRkLmZpZWxkZG9jIHA6Zmlyc3QtY2hpbGQgewotICAgICAgICBtYXJnaW4tdG9wOiAycHg7Ci19ICAgICAgIAotICAgICAgICAKLS5maWVsZHRhYmxlIHRkLmZpZWxkZG9jIHA6bGFzdC1jaGlsZCB7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206IDJweDsKLX0KLQotLmZpZWxkdGFibGUgdHI6bGFzdC1jaGlsZCB0ZCB7Ci0gICAgICAgIGJvcmRlci1ib3R0b206IG5vbmU7Ci19Ci0KLS5maWVsZHRhYmxlIHRoIHsKLSAgICAgICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ25hdl9mLnBuZycpOwotICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKLSAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogI0UyRThGMjsKLSAgICAgICAgZm9udC1zaXplOiA5MCU7Ci0gICAgICAgIGNvbG9yOiAjMjUzNTU1OwotICAgICAgICBwYWRkaW5nLWJvdHRvbTogNHB4OwotICAgICAgICBwYWRkaW5nLXRvcDogNXB4OwotICAgICAgICB0ZXh0LWFsaWduOmxlZnQ7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3BsZWZ0OiA0cHg7Ci0gICAgICAgIC1tb3otYm9yZGVyLXJhZGl1cy10b3ByaWdodDogNHB4OwotICAgICAgICAtd2Via2l0LWJvcmRlci10b3AtbGVmdC1yYWRpdXM6IDRweDsKLSAgICAgICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwotICAgICAgICBib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAgICAgIGJvcmRlci10b3AtcmlnaHQtcmFkaXVzOiA0cHg7Ci0gICAgICAgIGJvcmRlci1ib3R0b206IDFweCBzb2xpZCAjQThCOEQ5OwotfQotCi0KLS50YWJzZWFyY2ggewotCXRvcDogMHB4OwotCWxlZnQ6IDEwcHg7Ci0JaGVpZ2h0OiAzNnB4OwotCWJhY2tncm91bmQtaW1hZ2U6IHVybCgndGFiX2IucG5nJyk7Ci0Jei1pbmRleDogMTAxOwotCW92ZXJmbG93OiBoaWRkZW47Ci0JZm9udC1zaXplOiAxM3B4OwotfQotCi0ubmF2cGF0aCB1bAotewotCWZvbnQtc2l6ZTogMTFweDsKLQliYWNrZ3JvdW5kLWltYWdlOnVybCgndGFiX2IucG5nJyk7Ci0JYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ci0JYmFja2dyb3VuZC1wb3NpdGlvbjogMCAtNXB4OwotCWhlaWdodDozMHB4OwotCWxpbmUtaGVpZ2h0OjMwcHg7Ci0JY29sb3I6IzhBQTBDQzsKLQlib3JkZXI6c29saWQgMXB4ICNDMkNERTQ7Ci0Jb3ZlcmZsb3c6aGlkZGVuOwotCW1hcmdpbjowcHg7Ci0JcGFkZGluZzowcHg7Ci19Ci0KLS5uYXZwYXRoIGxpCi17Ci0JbGlzdC1zdHlsZS10eXBlOm5vbmU7Ci0JZmxvYXQ6bGVmdDsKLQlwYWRkaW5nLWxlZnQ6MTBweDsKLQlwYWRkaW5nLXJpZ2h0OjE1cHg7Ci0JYmFja2dyb3VuZC1pbWFnZTp1cmwoJ2JjX3MucG5nJyk7Ci0JYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OwotCWJhY2tncm91bmQtcG9zaXRpb246cmlnaHQ7Ci0JY29sb3I6IzM2NEQ3QzsKLX0KLQotLm5hdnBhdGggbGkubmF2ZWxlbSBhCi17Ci0JaGVpZ2h0OjMycHg7Ci0JZGlzcGxheTpibG9jazsKLQl0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0Jb3V0bGluZTogbm9uZTsKLQljb2xvcjogIzI4M0E1RDsKLQlmb250LWZhbWlseTogJ0x1Y2lkYSBHcmFuZGUnLEdlbmV2YSxIZWx2ZXRpY2EsQXJpYWwsc2Fucy1zZXJpZjsKLQl0ZXh0LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgyNTUsIDI1NSwgMjU1LCAwLjkpOwotCXRleHQtZGVjb3JhdGlvbjogbm9uZTsgICAgICAgIAotfQotCi0ubmF2cGF0aCBsaS5uYXZlbGVtIGE6aG92ZXIKLXsKLQljb2xvcjojNjg4NEJEOwotfQotCi0ubmF2cGF0aCBsaS5mb290ZXIKLXsKLSAgICAgICAgbGlzdC1zdHlsZS10eXBlOm5vbmU7Ci0gICAgICAgIGZsb2F0OnJpZ2h0OwotICAgICAgICBwYWRkaW5nLWxlZnQ6MTBweDsKLSAgICAgICAgcGFkZGluZy1yaWdodDoxNXB4OwotICAgICAgICBiYWNrZ3JvdW5kLWltYWdlOm5vbmU7Ci0gICAgICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsKLSAgICAgICAgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodDsKLSAgICAgICAgY29sb3I6IzM2NEQ3QzsKLSAgICAgICAgZm9udC1zaXplOiA4cHQ7Ci19Ci0KLQotZGl2LnN1bW1hcnkKLXsKLQlmbG9hdDogcmlnaHQ7Ci0JZm9udC1zaXplOiA4cHQ7Ci0JcGFkZGluZy1yaWdodDogNXB4OwotCXdpZHRoOiA1MCU7Ci0JdGV4dC1hbGlnbjogcmlnaHQ7Ci19ICAgICAgIAotCi1kaXYuc3VtbWFyeSBhCi17Ci0Jd2hpdGUtc3BhY2U6IG5vd3JhcDsKLX0KLQotZGl2LmluZ3JvdXBzCi17Ci0JZm9udC1zaXplOiA4cHQ7Ci0Jd2lkdGg6IDUwJTsKLQl0ZXh0LWFsaWduOiBsZWZ0OwotfQotCi1kaXYuaW5ncm91cHMgYQotewotCXdoaXRlLXNwYWNlOiBub3dyYXA7Ci19Ci0KLWRpdi5oZWFkZXIKLXsKLSAgICAgICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ25hdl9oLnBuZycpOwotICAgICAgICBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKLQliYWNrZ3JvdW5kLWNvbG9yOiAjRjlGQUZDOwotCW1hcmdpbjogIDBweDsKLQlib3JkZXItYm90dG9tOiAxcHggc29saWQgI0M0Q0ZFNTsKLX0KLQotZGl2LmhlYWRlcnRpdGxlCi17Ci0JcGFkZGluZzogNXB4IDVweCA1cHggMTBweDsKLX0KLQotZGwKLXsKLSAgICAgICAgcGFkZGluZzogMCAwIDAgMTBweDsKLX0KLQotLyogZGwubm90ZSwgZGwud2FybmluZywgZGwuYXR0ZW50aW9uLCBkbC5wcmUsIGRsLnBvc3QsIGRsLmludmFyaWFudCwgZGwuZGVwcmVjYXRlZCwgZGwudG9kbywgZGwudGVzdCwgZGwuYnVnICovCi1kbC5zZWN0aW9uCi17Ci0JbWFyZ2luLWxlZnQ6IDBweDsKLQlwYWRkaW5nLWxlZnQ6IDBweDsKLX0KLQotZGwubm90ZQotewotICAgICAgICBtYXJnaW4tbGVmdDotN3B4OwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKLSAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOwotICAgICAgICBib3JkZXItY29sb3I6ICNEMEMwMDA7Ci19Ci0KLWRsLndhcm5pbmcsIGRsLmF0dGVudGlvbgotewotICAgICAgICBtYXJnaW4tbGVmdDotN3B4OwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKLSAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOwotICAgICAgICBib3JkZXItY29sb3I6ICNGRjAwMDA7Ci19Ci0KLWRsLnByZSwgZGwucG9zdCwgZGwuaW52YXJpYW50Ci17Ci0gICAgICAgIG1hcmdpbi1sZWZ0Oi03cHg7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogM3B4OwotICAgICAgICBib3JkZXItbGVmdDo0cHggc29saWQ7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogIzAwRDAwMDsKLX0KLQotZGwuZGVwcmVjYXRlZAotewotICAgICAgICBtYXJnaW4tbGVmdDotN3B4OwotICAgICAgICBwYWRkaW5nLWxlZnQ6IDNweDsKLSAgICAgICAgYm9yZGVyLWxlZnQ6NHB4IHNvbGlkOwotICAgICAgICBib3JkZXItY29sb3I6ICM1MDUwNTA7Ci19Ci0KLWRsLnRvZG8KLXsKLSAgICAgICAgbWFyZ2luLWxlZnQ6LTdweDsKLSAgICAgICAgcGFkZGluZy1sZWZ0OiAzcHg7Ci0gICAgICAgIGJvcmRlci1sZWZ0OjRweCBzb2xpZDsKLSAgICAgICAgYm9yZGVyLWNvbG9yOiAjMDBDMEUwOwotfQotCi1kbC50ZXN0Ci17Ci0gICAgICAgIG1hcmdpbi1sZWZ0Oi03cHg7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogM3B4OwotICAgICAgICBib3JkZXItbGVmdDo0cHggc29saWQ7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogIzMwMzBFMDsKLX0KLQotZGwuYnVnCi17Ci0gICAgICAgIG1hcmdpbi1sZWZ0Oi03cHg7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogM3B4OwotICAgICAgICBib3JkZXItbGVmdDo0cHggc29saWQ7Ci0gICAgICAgIGJvcmRlci1jb2xvcjogI0MwODA1MDsKLX0KLQotZGwuc2VjdGlvbiBkZCB7Ci0JbWFyZ2luLWJvdHRvbTogNnB4OwotfQotCi0KLSNwcm9qZWN0bG9nbwotewotCXRleHQtYWxpZ246IGNlbnRlcjsKLQl2ZXJ0aWNhbC1hbGlnbjogYm90dG9tOwotCWJvcmRlci1jb2xsYXBzZTogc2VwYXJhdGU7Ci19Ci0gCi0jcHJvamVjdGxvZ28gaW1nCi17IAotCWJvcmRlcjogMHB4IG5vbmU7Ci19Ci0gCi0jcHJvamVjdG5hbWUKLXsKLQlmb250OiAzMDAlIFRhaG9tYSwgQXJpYWwsc2Fucy1zZXJpZjsKLQltYXJnaW46IDBweDsKLQlwYWRkaW5nOiAycHggMHB4OwotfQotICAgIAotI3Byb2plY3RicmllZgotewotCWZvbnQ6IDEyMCUgVGFob21hLCBBcmlhbCxzYW5zLXNlcmlmOwotCW1hcmdpbjogMHB4OwotCXBhZGRpbmc6IDBweDsKLX0KLQotI3Byb2plY3RudW1iZXIKLXsKLQlmb250OiA1MCUgVGFob21hLCBBcmlhbCxzYW5zLXNlcmlmOwotCW1hcmdpbjogMHB4OwotCXBhZGRpbmc6IDBweDsKLX0KLQotI3RpdGxlYXJlYQotewotCXBhZGRpbmc6IDBweDsKLQltYXJnaW46IDBweDsKLQl3aWR0aDogMTAwJTsKLQlib3JkZXItYm90dG9tOiAxcHggc29saWQgIzUzNzNCNDsKLX0KLQotLmltYWdlCi17Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLmRvdGdyYXBoCi17Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLm1zY2dyYXBoCi17Ci0gICAgICAgIHRleHQtYWxpZ246IGNlbnRlcjsKLX0KLQotLmNhcHRpb24KLXsKLQlmb250LXdlaWdodDogYm9sZDsKLX0KLQotZGl2Lnpvb20KLXsKLQlib3JkZXI6IDFweCBzb2xpZCAjOTBBNUNFOwotfQotCi1kbC5jaXRlbGlzdCB7Ci0gICAgICAgIG1hcmdpbi1ib3R0b206NTBweDsKLX0KLQotZGwuY2l0ZWxpc3QgZHQgewotICAgICAgICBjb2xvcjojMzM0OTc1OwotICAgICAgICBmbG9hdDpsZWZ0OwotICAgICAgICBmb250LXdlaWdodDpib2xkOwotICAgICAgICBtYXJnaW4tcmlnaHQ6MTBweDsKLSAgICAgICAgcGFkZGluZzo1cHg7Ci19Ci0KLWRsLmNpdGVsaXN0IGRkIHsKLSAgICAgICAgbWFyZ2luOjJweCAwOwotICAgICAgICBwYWRkaW5nOjVweCAwOwotfQotCi1kaXYudG9jIHsKLSAgICAgICAgcGFkZGluZzogMTRweCAyNXB4OwotICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjRGNkZBOwotICAgICAgICBib3JkZXI6IDFweCBzb2xpZCAjRDhERkVFOwotICAgICAgICBib3JkZXItcmFkaXVzOiA3cHggN3B4IDdweCA3cHg7Ci0gICAgICAgIGZsb2F0OiByaWdodDsKLSAgICAgICAgaGVpZ2h0OiBhdXRvOwotICAgICAgICBtYXJnaW46IDAgMjBweCAxMHB4IDEwcHg7Ci0gICAgICAgIHdpZHRoOiAyMDBweDsKLX0KLQotZGl2LnRvYyBsaSB7Ci0gICAgICAgIGJhY2tncm91bmQ6IHVybCgiYmR3bi5wbmciKSBuby1yZXBlYXQgc2Nyb2xsIDAgNXB4IHRyYW5zcGFyZW50OwotICAgICAgICBmb250OiAxMHB4LzEuMiBWZXJkYW5hLERlamFWdSBTYW5zLEdlbmV2YSxzYW5zLXNlcmlmOwotICAgICAgICBtYXJnaW4tdG9wOiA1cHg7Ci0gICAgICAgIHBhZGRpbmctbGVmdDogMTBweDsKLSAgICAgICAgcGFkZGluZy10b3A6IDJweDsKLX0KLQotZGl2LnRvYyBoMyB7Ci0gICAgICAgIGZvbnQ6IGJvbGQgMTJweC8xLjIgQXJpYWwsRnJlZVNhbnMsc2Fucy1zZXJpZjsKLQljb2xvcjogIzQ2NjVBMjsKLSAgICAgICAgYm9yZGVyLWJvdHRvbTogMCBub25lOwotICAgICAgICBtYXJnaW46IDA7Ci19Ci0KLWRpdi50b2MgdWwgewotICAgICAgICBsaXN0LXN0eWxlOiBub25lIG91dHNpZGUgbm9uZTsKLSAgICAgICAgYm9yZGVyOiBtZWRpdW0gbm9uZTsKLSAgICAgICAgcGFkZGluZzogMHB4OwotfSAgICAgICAKLQotZGl2LnRvYyBsaS5sZXZlbDEgewotICAgICAgICBtYXJnaW4tbGVmdDogMHB4OwotfQotCi1kaXYudG9jIGxpLmxldmVsMiB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAxNXB4OwotfQotCi1kaXYudG9jIGxpLmxldmVsMyB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiAzMHB4OwotfQotCi1kaXYudG9jIGxpLmxldmVsNCB7Ci0gICAgICAgIG1hcmdpbi1sZWZ0OiA0NXB4OwotfQotCi0uaW5oZXJpdF9oZWFkZXIgewotICAgICAgICBmb250LXdlaWdodDogYm9sZDsKLSAgICAgICAgY29sb3I6IGdyYXk7Ci0gICAgICAgIGN1cnNvcjogcG9pbnRlcjsKLQktd2Via2l0LXRvdWNoLWNhbGxvdXQ6IG5vbmU7Ci0JLXdlYmtpdC11c2VyLXNlbGVjdDogbm9uZTsKLQkta2h0bWwtdXNlci1zZWxlY3Q6IG5vbmU7Ci0JLW1vei11c2VyLXNlbGVjdDogbm9uZTsKLQktbXMtdXNlci1zZWxlY3Q6IG5vbmU7Ci0JdXNlci1zZWxlY3Q6IG5vbmU7Ci19Ci0KLS5pbmhlcml0X2hlYWRlciB0ZCB7Ci0gICAgICAgIHBhZGRpbmc6IDZweCAwcHggMnB4IDVweDsKLX0KLQotLmluaGVyaXQgewotICAgICAgICBkaXNwbGF5OiBub25lOwotfQotCi10ci5oZWFkaW5nIGgyIHsKLSAgICAgICAgbWFyZ2luLXRvcDogMTJweDsKLSAgICAgICAgbWFyZ2luLWJvdHRvbTogNHB4OwotfQotCi1AbWVkaWEgcHJpbnQKLXsKLSAgI3RvcCB7IGRpc3BsYXk6IG5vbmU7IH0KLSAgI3NpZGUtbmF2IHsgZGlzcGxheTogbm9uZTsgfQotICAjbmF2LXBhdGggeyBkaXNwbGF5OiBub25lOyB9Ci0gIGJvZHkgeyBvdmVyZmxvdzp2aXNpYmxlOyB9Ci0gIGgxLCBoMiwgaDMsIGg0LCBoNSwgaDYgeyBwYWdlLWJyZWFrLWFmdGVyOiBhdm9pZDsgfQotICAuc3VtbWFyeSB7IGRpc3BsYXk6IG5vbmU7IH0KLSAgLm1lbWl0ZW0geyBwYWdlLWJyZWFrLWluc2lkZTogYXZvaWQ7IH0KLSAgI2RvYy1jb250ZW50Ci0gIHsKLSAgICBtYXJnaW4tbGVmdDowICFpbXBvcnRhbnQ7Ci0gICAgaGVpZ2h0OmF1dG8gIWltcG9ydGFudDsKLSAgICB3aWR0aDphdXRvICFpbXBvcnRhbnQ7Ci0gICAgb3ZlcmZsb3c6aW5oZXJpdDsKLSAgICBkaXNwbGF5OmlubGluZTsKLSAgfQotfQotCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9kb3h5Z2VuLnBuZyBiL2RvYy9odG1sL2RveHlnZW4ucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmYxN2Q4Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2RveHlnZW4ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZHluc2VjdGlvbnMuanMgYi9kb2MvaHRtbC9keW5zZWN0aW9ucy5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQwOTJjNy4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9keW5zZWN0aW9ucy5qcworKysgL2Rldi9udWxsCkBAIC0xLDk3ICswLDAgQEAKLWZ1bmN0aW9uIHRvZ2dsZVZpc2liaWxpdHkobGlua09iaikKLXsKLSB2YXIgYmFzZSA9ICQobGlua09iaikuYXR0cignaWQnKTsKLSB2YXIgc3VtbWFyeSA9ICQoJyMnK2Jhc2UrJy1zdW1tYXJ5Jyk7Ci0gdmFyIGNvbnRlbnQgPSAkKCcjJytiYXNlKyctY29udGVudCcpOwotIHZhciB0cmlnZ2VyID0gJCgnIycrYmFzZSsnLXRyaWdnZXInKTsKLSB2YXIgc3JjPSQodHJpZ2dlcikuYXR0cignc3JjJyk7Ci0gaWYgKGNvbnRlbnQuaXMoJzp2aXNpYmxlJyk9PT10cnVlKSB7Ci0gICBjb250ZW50LmhpZGUoKTsKLSAgIHN1bW1hcnkuc2hvdygpOwotICAgJChsaW5rT2JqKS5hZGRDbGFzcygnY2xvc2VkJykucmVtb3ZlQ2xhc3MoJ29wZW5lZCcpOwotICAgJCh0cmlnZ2VyKS5hdHRyKCdzcmMnLHNyYy5zdWJzdHJpbmcoMCxzcmMubGVuZ3RoLTgpKydjbG9zZWQucG5nJyk7Ci0gfSBlbHNlIHsKLSAgIGNvbnRlbnQuc2hvdygpOwotICAgc3VtbWFyeS5oaWRlKCk7Ci0gICAkKGxpbmtPYmopLnJlbW92ZUNsYXNzKCdjbG9zZWQnKS5hZGRDbGFzcygnb3BlbmVkJyk7Ci0gICAkKHRyaWdnZXIpLmF0dHIoJ3NyYycsc3JjLnN1YnN0cmluZygwLHNyYy5sZW5ndGgtMTApKydvcGVuLnBuZycpOwotIH0gCi0gcmV0dXJuIGZhbHNlOwotfQotCi1mdW5jdGlvbiB1cGRhdGVTdHJpcGVzKCkKLXsKLSAgJCgndGFibGUuZGlyZWN0b3J5IHRyJykuCi0gICAgICAgcmVtb3ZlQ2xhc3MoJ2V2ZW4nKS5maWx0ZXIoJzp2aXNpYmxlOmV2ZW4nKS5hZGRDbGFzcygnZXZlbicpOwotfQotZnVuY3Rpb24gdG9nZ2xlTGV2ZWwobGV2ZWwpCi17Ci0gICQoJ3RhYmxlLmRpcmVjdG9yeSB0cicpLmVhY2goZnVuY3Rpb24oKXsgCi0gICAgdmFyIGwgPSB0aGlzLmlkLnNwbGl0KCdfJykubGVuZ3RoLTE7Ci0gICAgdmFyIGkgPSAkKCcjaW1nJyt0aGlzLmlkLnN1YnN0cmluZygzKSk7Ci0gICAgdmFyIGEgPSAkKCcjYXJyJyt0aGlzLmlkLnN1YnN0cmluZygzKSk7Ci0gICAgaWYgKGw8bGV2ZWwrMSkgewotICAgICAgaS5hdHRyKCdzcmMnLCdmdHYyZm9sZGVyb3Blbi5wbmcnKTsKLSAgICAgIGEuYXR0cignc3JjJywnZnR2Mm1ub2RlLnBuZycpOwotICAgICAgJCh0aGlzKS5zaG93KCk7Ci0gICAgfSBlbHNlIGlmIChsPT1sZXZlbCsxKSB7Ci0gICAgICBpLmF0dHIoJ3NyYycsJ2Z0djJmb2xkZXJjbG9zZWQucG5nJyk7Ci0gICAgICBhLmF0dHIoJ3NyYycsJ2Z0djJwbm9kZS5wbmcnKTsKLSAgICAgICQodGhpcykuc2hvdygpOwotICAgIH0gZWxzZSB7Ci0gICAgICAkKHRoaXMpLmhpZGUoKTsKLSAgICB9Ci0gIH0pOwotICB1cGRhdGVTdHJpcGVzKCk7Ci19Ci0KLWZ1bmN0aW9uIHRvZ2dsZUZvbGRlcihpZCkKLXsKLSAgLy9UaGUgY2xpY2tlZCByb3cKLSAgdmFyIGN1cnJlbnRSb3cgPSAkKCcjcm93XycraWQpOwotICB2YXIgY3VycmVudFJvd0ltYWdlcyA9IGN1cnJlbnRSb3cuZmluZCgiaW1nIik7Ci0KLSAgLy9BbGwgcm93cyBhZnRlciB0aGUgY2xpY2tlZCByb3cKLSAgdmFyIHJvd3MgPSBjdXJyZW50Um93Lm5leHRBbGwoInRyIik7Ci0KLSAgLy9Pbmx5IG1hdGNoIGVsZW1lbnRzIEFGVEVSIHRoaXMgb25lIChjYW4ndCBoaWRlIGVsZW1lbnRzIGJlZm9yZSkKLSAgdmFyIGNoaWxkUm93cyA9IHJvd3MuZmlsdGVyKGZ1bmN0aW9uKCkgewotICAgIHZhciByZSA9IG5ldyBSZWdFeHAoJ15yb3dfJytpZCsnXFxkK18kJywgImkiKTsgLy9vbmx5IG9uZSBzdWIKLSAgICByZXR1cm4gdGhpcy5pZC5tYXRjaChyZSk7Ci0gIH0pOwotCi0gIC8vRmlyc3Qgcm93IGlzIHZpc2libGUgd2UgYXJlIEhJRElORwotICBpZiAoY2hpbGRSb3dzLmZpbHRlcignOmZpcnN0JykuaXMoJzp2aXNpYmxlJyk9PT10cnVlKSB7Ci0gICAgY3VycmVudFJvd0ltYWdlcy5maWx0ZXIoIltpZF49YXJyXSIpLmF0dHIoJ3NyYycsICdmdHYycG5vZGUucG5nJyk7Ci0gICAgY3VycmVudFJvd0ltYWdlcy5maWx0ZXIoIltpZF49aW1nXSIpLmF0dHIoJ3NyYycsICdmdHYyZm9sZGVyY2xvc2VkLnBuZycpOwotICAgIHJvd3MuZmlsdGVyKCJbaWRePXJvd18iK2lkKyJdIikuaGlkZSgpOwotICB9IGVsc2UgeyAvL1dlIGFyZSBTSE9XSU5HCi0gICAgLy9BbGwgc3ViIGltYWdlcwotICAgIHZhciBjaGlsZEltYWdlcyA9IGNoaWxkUm93cy5maW5kKCJpbWciKTsKLSAgICB2YXIgY2hpbGRJbWcgPSBjaGlsZEltYWdlcy5maWx0ZXIoIltpZF49aW1nXSIpOwotICAgIHZhciBjaGlsZEFyciA9IGNoaWxkSW1hZ2VzLmZpbHRlcigiW2lkXj1hcnJdIik7Ci0KLSAgICBjdXJyZW50Um93LmZpbmQoIltpZF49YXJyXSIpLmF0dHIoJ3NyYycsICdmdHYybW5vZGUucG5nJyk7IC8vb3BlbiByb3cKLSAgICBjdXJyZW50Um93LmZpbmQoIltpZF49aW1nXSIpLmF0dHIoJ3NyYycsICdmdHYyZm9sZGVyb3Blbi5wbmcnKTsgLy9vcGVuIHJvdwotICAgIGNoaWxkSW1nLmF0dHIoJ3NyYycsJ2Z0djJmb2xkZXJjbG9zZWQucG5nJyk7IC8vY2hpbGRyZW4gY2xvc2VkCi0gICAgY2hpbGRBcnIuYXR0cignc3JjJywnZnR2MnBub2RlLnBuZycpOyAvL2NoaWxkcmVuIGNsb3NlZAotICAgIGNoaWxkUm93cy5zaG93KCk7IC8vc2hvdyBhbGwgY2hpbGRyZW4KLSAgfQotICB1cGRhdGVTdHJpcGVzKCk7Ci19Ci0KLQotZnVuY3Rpb24gdG9nZ2xlSW5oZXJpdChpZCkKLXsKLSAgdmFyIHJvd3MgPSAkKCd0ci5pbmhlcml0LicraWQpOwotICB2YXIgaW1nID0gJCgndHIuaW5oZXJpdF9oZWFkZXIuJytpZCsnIGltZycpOwotICB2YXIgc3JjID0gJChpbWcpLmF0dHIoJ3NyYycpOwotICBpZiAocm93cy5maWx0ZXIoJzpmaXJzdCcpLmlzKCc6dmlzaWJsZScpPT09dHJ1ZSkgewotICAgIHJvd3MuY3NzKCdkaXNwbGF5Jywnbm9uZScpOwotICAgICQoaW1nKS5hdHRyKCdzcmMnLHNyYy5zdWJzdHJpbmcoMCxzcmMubGVuZ3RoLTgpKydjbG9zZWQucG5nJyk7Ci0gIH0gZWxzZSB7Ci0gICAgcm93cy5jc3MoJ2Rpc3BsYXknLCd0YWJsZS1yb3cnKTsgLy8gdXNpbmcgc2hvdygpIGNhdXNlcyBqdW1wIGluIGZpcmVmb3gKLSAgICAkKGltZykuYXR0cignc3JjJyxzcmMuc3Vic3RyaW5nKDAsc3JjLmxlbmd0aC0xMCkrJ29wZW4ucG5nJyk7Ci0gIH0KLX0KLQpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2MmJsYW5rLnBuZyBiL2RvYy9odG1sL2Z0djJibGFuay5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYzYwNWIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvZnR2MmJsYW5rLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z0djJjbC5wbmcgYi9kb2MvaHRtbC9mdHYyY2wucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzJmNjU3Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Z0djJjbC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9mdHYyZG9jLnBuZyBiL2RvYy9odG1sL2Z0djJkb2MucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2VkYWJmLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Z0djJkb2MucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2MmZvbGRlcmNsb3NlZC5wbmcgYi9kb2MvaHRtbC9mdHYyZm9sZGVyY2xvc2VkLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmI4YWIzNS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYyZm9sZGVyY2xvc2VkLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z0djJmb2xkZXJvcGVuLnBuZyBiL2RvYy9odG1sL2Z0djJmb2xkZXJvcGVuLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZjN2Y2Ny4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYyZm9sZGVyb3Blbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9mdHYybGFzdG5vZGUucG5nIGIvZG9jL2h0bWwvZnR2Mmxhc3Rub2RlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNjNjA1Yi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYybGFzdG5vZGUucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2MmxpbmsucG5nIGIvZG9jL2h0bWwvZnR2MmxpbmsucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2VkYWJmLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Z0djJsaW5rLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z0djJtbGFzdG5vZGUucG5nIGIvZG9jL2h0bWwvZnR2Mm1sYXN0bm9kZS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiNjNmNmQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvZnR2Mm1sYXN0bm9kZS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9mdHYybW5vZGUucG5nIGIvZG9jL2h0bWwvZnR2Mm1ub2RlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGI2M2Y2ZC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYybW5vZGUucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2Mm1vLnBuZyBiL2RvYy9odG1sL2Z0djJtby5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZmI4MGYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvZnR2Mm1vLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z0djJub2RlLnBuZyBiL2RvYy9odG1sL2Z0djJub2RlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjNjNjA1Yi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYybm9kZS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9mdHYybnMucG5nIGIvZG9jL2h0bWwvZnR2Mm5zLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJlM2Q3MS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYybnMucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2MnBsYXN0bm9kZS5wbmcgYi9kb2MvaHRtbC9mdHYycGxhc3Rub2RlLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlZTIyZi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYycGxhc3Rub2RlLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z0djJwbm9kZS5wbmcgYi9kb2MvaHRtbC9mdHYycG5vZGUucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmVlMjJmLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Z0djJwbm9kZS5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9mdHYyc3BsaXRiYXIucG5nIGIvZG9jL2h0bWwvZnR2MnNwbGl0YmFyLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU4OTVmMi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9mdHYyc3BsaXRiYXIucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvZnR2MnZlcnRsaW5lLnBuZyBiL2RvYy9odG1sL2Z0djJ2ZXJ0bGluZS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzYzYwNWIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvZnR2MnZlcnRsaW5lLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z1bmN0aW9ucy5odG1sIGIvZG9jL2h0bWwvZnVuY3Rpb25zLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMxZDc4ZjUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvZnVuY3Rpb25zLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSIvPgotPHRpdGxlPlR1cmJvSlBFRzogRGF0YSBGaWVsZHM8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+PHNwYW4+TWFpbiYjMTYwO1BhZ2U8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpIGNsYXNzPSJjdXJyZW50Ij48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+Ci0gICAgICAgIDxkaXYgaWQ9Ik1TZWFyY2hCb3giIGNsYXNzPSJNU2VhcmNoQm94SW5hY3RpdmUiPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGVmdCI+Ci0gICAgICAgICAgPGltZyBpZD0iTVNlYXJjaFNlbGVjdCIgc3JjPSJzZWFyY2gvbWFnX3NlbC5wbmciCi0gICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgICAgICAgICAgICBhbHQ9IiIvPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iTVNlYXJjaEZpZWxkIiB2YWx1ZT0iU2VhcmNoIiBhY2Nlc3NrZXk9IlMiCi0gICAgICAgICAgICAgICBvbmZvY3VzPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKHRydWUpIiAKLSAgICAgICAgICAgICAgIG9uYmx1cj0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRGb2N1cyhmYWxzZSkiIAotICAgICAgICAgICAgICAgb25rZXl1cD0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRDaGFuZ2UoZXZlbnQpIi8+Ci0gICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Ci0gICAgICAgICAgICA8YSBpZD0iTVNlYXJjaENsb3NlIiBocmVmPSJqYXZhc2NyaXB0OnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKSI+PGltZyBpZD0iTVNlYXJjaENsb3NlSW1nIiBib3JkZXI9IjAiIHNyYz0ic2VhcmNoL2Nsb3NlLnBuZyIgYWx0PSIiLz48L2E+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci0gIDxkaXYgaWQ9Im5hdnJvdzIiIGNsYXNzPSJ0YWJzMiI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7RmllbGRzPC9zcGFuPjwvYT48L2xpPgotICAgIDwvdWw+Ci0gIDwvZGl2PgotICA8ZGl2IGlkPSJuYXZyb3czIiBjbGFzcz0idGFiczIiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj48c3Bhbj5BbGw8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+PHNwYW4+VmFyaWFibGVzPC9zcGFuPjwvYT48L2xpPgotICAgIDwvdWw+Ci0gIDwvZGl2PgotPC9kaXY+PCEtLSB0b3AgLS0+Ci08IS0tIHdpbmRvdyBzaG93aW5nIHRoZSBmaWx0ZXIgb3B0aW9ucyAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hTZWxlY3RXaW5kb3ciCi0gICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICBvbm1vdXNlb3V0PSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0SGlkZSgpIgotICAgICBvbmtleWRvd249InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RLZXkoZXZlbnQpIj4KLTxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+QWxsPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RGF0YSBTdHJ1Y3R1cmVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RnVuY3Rpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VmFyaWFibGVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VHlwZWRlZnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg1KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg2KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdG9yPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+R3JvdXBzPC9hPjwvZGl2PgotCi08IS0tIGlmcmFtZSBzaG93aW5nIHRoZSBzZWFyY2ggcmVzdWx0cyAoY2xvc2VkIGJ5IGRlZmF1bHQpIC0tPgotPGRpdiBpZD0iTVNlYXJjaFJlc3VsdHNXaW5kb3ciPgotPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6dm9pZCgwKSIgZnJhbWVib3JkZXI9IjAiIAotICAgICAgICBuYW1lPSJNU2VhcmNoUmVzdWx0cyIgaWQ9Ik1TZWFyY2hSZXN1bHRzIj4KLTwvaWZyYW1lPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImNvbnRlbnRzIj4KLTxkaXYgY2xhc3M9InRleHRibG9jayI+SGVyZSBpcyBhIGxpc3Qgb2YgYWxsIGRvY3VtZW50ZWQgc3RydWN0IGFuZCB1bmlvbiBmaWVsZHMgd2l0aCBsaW5rcyB0byB0aGUgc3RydWN0L3VuaW9uIGRvY3VtZW50YXRpb24gZm9yIGVhY2ggZmllbGQ6PC9kaXY+PHVsPgotPGxpPmN1c3RvbUZpbHRlcgotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYTQzZWUxYmNkZDJhOGQ3MjQ5YTc1Njc3NGY3ODc5M2MxIj50anRyYW5zZm9ybTwvYT4KLTwvbGk+Ci08bGk+ZGF0YQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj50anRyYW5zZm9ybTwvYT4KLTwvbGk+Ci08bGk+ZGVub20KLTogPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCNhZWZiY2RmM2U5ZTYyMjc0YjJkMzEyYzY5NWYxMzNjZTMiPnRqc2NhbGluZ2ZhY3RvcjwvYT4KLTwvbGk+Ci08bGk+aAotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwjYWVjZWZjNDVhMjZmNGQ4YjYwZGQ0ZDgyNWMxNzEwMTE1Ij50anJlZ2lvbjwvYT4KLTwvbGk+Ci08bGk+bnVtCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwjYTliMDExZTU3Zjk4MWVlMjMwODNlMmMxYWE1ZTY0MGVjIj50anNjYWxpbmdmYWN0b3I8L2E+Ci08L2xpPgotPGxpPm9wCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgiPnRqdHJhbnNmb3JtPC9hPgotPC9saT4KLTxsaT5vcHRpb25zCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhYzBlNzQ2NTViYWE0NDAyMjA5YTIxZTFhZTQ4MWM4ZjYiPnRqdHJhbnNmb3JtPC9hPgotPC9saT4KLTxsaT5yCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhYzMyNGU1ZTQ0MmFiZWM4YTk2MWU1YmYyMTlkYjEyY2YiPnRqdHJhbnNmb3JtPC9hPgotPC9saT4KLTxsaT53Ci06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCNhYjZlYjczY2VlZjU4NGZjMjNjOGM4MDk3OTI2ZGNlNDIiPnRqcmVnaW9uPC9hPgotPC9saT4KLTxsaT54Ci06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCNhNGI2YTM3YTkzOTk3MDkxYjI2YTc1ODMxZmEyOTFhZDkiPnRqcmVnaW9uPC9hPgotPC9saT4KLTxsaT55Ci06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCNhN2IzZTBjMjRjZmU4N2FjYzgwZTMzNGNhZmRjZjIyYzIiPnRqcmVnaW9uPC9hPgotPC9saT4KLTwvdWw+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2Z1bmN0aW9uc192YXJzLmh0bWwgYi9kb2MvaHRtbC9mdW5jdGlvbnNfdmFycy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzczZWFjLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2Z1bmN0aW9uc192YXJzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxMzQgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSIvPgotPHRpdGxlPlR1cmJvSlBFRzogRGF0YSBGaWVsZHMgLSBWYXJpYWJsZXM8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+PHNwYW4+TWFpbiYjMTYwO1BhZ2U8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpIGNsYXNzPSJjdXJyZW50Ij48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+Ci0gICAgICAgIDxkaXYgaWQ9Ik1TZWFyY2hCb3giIGNsYXNzPSJNU2VhcmNoQm94SW5hY3RpdmUiPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGVmdCI+Ci0gICAgICAgICAgPGltZyBpZD0iTVNlYXJjaFNlbGVjdCIgc3JjPSJzZWFyY2gvbWFnX3NlbC5wbmciCi0gICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgICAgICAgICAgICBhbHQ9IiIvPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iTVNlYXJjaEZpZWxkIiB2YWx1ZT0iU2VhcmNoIiBhY2Nlc3NrZXk9IlMiCi0gICAgICAgICAgICAgICBvbmZvY3VzPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKHRydWUpIiAKLSAgICAgICAgICAgICAgIG9uYmx1cj0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRGb2N1cyhmYWxzZSkiIAotICAgICAgICAgICAgICAgb25rZXl1cD0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRDaGFuZ2UoZXZlbnQpIi8+Ci0gICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Ci0gICAgICAgICAgICA8YSBpZD0iTVNlYXJjaENsb3NlIiBocmVmPSJqYXZhc2NyaXB0OnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKSI+PGltZyBpZD0iTVNlYXJjaENsb3NlSW1nIiBib3JkZXI9IjAiIHNyYz0ic2VhcmNoL2Nsb3NlLnBuZyIgYWx0PSIiLz48L2E+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci0gIDxkaXYgaWQ9Im5hdnJvdzIiIGNsYXNzPSJ0YWJzMiI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImZ1bmN0aW9ucy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7RmllbGRzPC9zcGFuPjwvYT48L2xpPgotICAgIDwvdWw+Ci0gIDwvZGl2PgotICA8ZGl2IGlkPSJuYXZyb3czIiBjbGFzcz0idGFiczIiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPjxzcGFuPkFsbDwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iY3VycmVudCI+PGEgaHJlZj0iZnVuY3Rpb25zX3ZhcnMuaHRtbCI+PHNwYW4+VmFyaWFibGVzPC9zcGFuPjwvYT48L2xpPgotICAgIDwvdWw+Ci0gIDwvZGl2PgotPC9kaXY+PCEtLSB0b3AgLS0+Ci08IS0tIHdpbmRvdyBzaG93aW5nIHRoZSBmaWx0ZXIgb3B0aW9ucyAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hTZWxlY3RXaW5kb3ciCi0gICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICBvbm1vdXNlb3V0PSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0SGlkZSgpIgotICAgICBvbmtleWRvd249InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RLZXkoZXZlbnQpIj4KLTxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+QWxsPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RGF0YSBTdHJ1Y3R1cmVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RnVuY3Rpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VmFyaWFibGVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VHlwZWRlZnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg1KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg2KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdG9yPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+R3JvdXBzPC9hPjwvZGl2PgotCi08IS0tIGlmcmFtZSBzaG93aW5nIHRoZSBzZWFyY2ggcmVzdWx0cyAoY2xvc2VkIGJ5IGRlZmF1bHQpIC0tPgotPGRpdiBpZD0iTVNlYXJjaFJlc3VsdHNXaW5kb3ciPgotPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6dm9pZCgwKSIgZnJhbWVib3JkZXI9IjAiIAotICAgICAgICBuYW1lPSJNU2VhcmNoUmVzdWx0cyIgaWQ9Ik1TZWFyY2hSZXN1bHRzIj4KLTwvaWZyYW1lPgotPC9kaXY+Ci0KLTxkaXYgY2xhc3M9ImNvbnRlbnRzIj4KLSYjMTYwOzx1bD4KLTxsaT5jdXN0b21GaWx0ZXIKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2E0M2VlMWJjZGQyYThkNzI0OWE3NTY3NzRmNzg3OTNjMSI+dGp0cmFuc2Zvcm08L2E+Ci08L2xpPgotPGxpPmRhdGEKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2E2ODhmZThmMWE4ZWNjMTJhNTM4ZDllNTYxY2YzMzhlMyI+dGp0cmFuc2Zvcm08L2E+Ci08L2xpPgotPGxpPmRlbm9tCi06IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwjYWVmYmNkZjNlOWU2MjI3NGIyZDMxMmM2OTVmMTMzY2UzIj50anNjYWxpbmdmYWN0b3I8L2E+Ci08L2xpPgotPGxpPmgKLTogPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sI2FlY2VmYzQ1YTI2ZjRkOGI2MGRkNGQ4MjVjMTcxMDExNSI+dGpyZWdpb248L2E+Ci08L2xpPgotPGxpPm51bQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sI2E5YjAxMWU1N2Y5ODFlZTIzMDgzZTJjMWFhNWU2NDBlYyI+dGpzY2FsaW5nZmFjdG9yPC9hPgotPC9saT4KLTxsaT5vcAotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYTI1MjVhYWI0YmE2OTc4YTFjMjczZjc0ZmVmNTBlNDk4Ij50anRyYW5zZm9ybTwvYT4KLTwvbGk+Ci08bGk+b3B0aW9ucwotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYWMwZTc0NjU1YmFhNDQwMjIwOWEyMWUxYWU0ODFjOGY2Ij50anRyYW5zZm9ybTwvYT4KLTwvbGk+Ci08bGk+cgotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYWMzMjRlNWU0NDJhYmVjOGE5NjFlNWJmMjE5ZGIxMmNmIj50anRyYW5zZm9ybTwvYT4KLTwvbGk+Ci08bGk+dwotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwjYWI2ZWI3M2NlZWY1ODRmYzIzYzhjODA5NzkyNmRjZTQyIj50anJlZ2lvbjwvYT4KLTwvbGk+Ci08bGk+eAotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwjYTRiNmEzN2E5Mzk5NzA5MWIyNmE3NTgzMWZhMjkxYWQ5Ij50anJlZ2lvbjwvYT4KLTwvbGk+Ci08bGk+eQotOiA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwjYTdiM2UwYzI0Y2ZlODdhY2M4MGUzMzRjYWZkY2YyMmMyIj50anJlZ2lvbjwvYT4KLTwvbGk+Ci08L3VsPgotPC9kaXY+PCEtLSBjb250ZW50cyAtLT4KLTwhLS0gc3RhcnQgZm9vdGVyIHBhcnQgLS0+Ci08aHIgY2xhc3M9ImZvb3RlciIvPjxhZGRyZXNzIGNsYXNzPSJmb290ZXIiPjxzbWFsbD4KLUdlbmVyYXRlZCBieSAmIzE2MDs8YSBocmVmPSJodHRwOi8vd3d3LmRveHlnZW4ub3JnL2luZGV4Lmh0bWwiPgotPGltZyBjbGFzcz0iZm9vdGVyIiBzcmM9ImRveHlnZW4ucG5nIiBhbHQ9ImRveHlnZW4iLz4KLTwvYT4gMS44LjMuMQotPC9zbWFsbD48L2FkZHJlc3M+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCBiL2RvYy9odG1sL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YjhkMzA2Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ0NiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPTkiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIi8+Ci08dGl0bGU+VHVyYm9KUEVHOiBUdXJib0pQRUc8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+PHNwYW4+TWFpbiYjMTYwO1BhZ2U8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT4KLSAgICAgICAgPGRpdiBpZD0iTVNlYXJjaEJveCIgY2xhc3M9Ik1TZWFyY2hCb3hJbmFjdGl2ZSI+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsZWZ0Ij4KLSAgICAgICAgICA8aW1nIGlkPSJNU2VhcmNoU2VsZWN0IiBzcmM9InNlYXJjaC9tYWdfc2VsLnBuZyIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICAgICAgICAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgICAgICAgICAgIGFsdD0iIi8+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJNU2VhcmNoRmllbGQiIHZhbHVlPSJTZWFyY2giIGFjY2Vzc2tleT0iUyIKLSAgICAgICAgICAgICAgIG9uZm9jdXM9InNlYXJjaEJveC5PblNlYXJjaEZpZWxkRm9jdXModHJ1ZSkiIAotICAgICAgICAgICAgICAgb25ibHVyPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKGZhbHNlKSIgCi0gICAgICAgICAgICAgICBvbmtleXVwPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZENoYW5nZShldmVudCkiLz4KLSAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4KLSAgICAgICAgICAgIDxhIGlkPSJNU2VhcmNoQ2xvc2UiIGhyZWY9ImphdmFzY3JpcHQ6c2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpIj48aW1nIGlkPSJNU2VhcmNoQ2xvc2VJbWciIGJvcmRlcj0iMCIgc3JjPSJzZWFyY2gvY2xvc2UucG5nIiBhbHQ9IiIvPjwvYT4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLTwvZGl2PjwhLS0gdG9wIC0tPgotPCEtLSB3aW5kb3cgc2hvd2luZyB0aGUgZmlsdGVyIG9wdGlvbnMgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoU2VsZWN0V2luZG93IgotICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgb25rZXlkb3duPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0S2V5KGV2ZW50KSI+Ci08YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkFsbDwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDEpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkRhdGEgU3RydWN0dXJlczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDIpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkZ1bmN0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDMpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPlZhcmlhYmxlczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDQpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPlR5cGVkZWZzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RW51bWVyYXRpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RW51bWVyYXRvcjwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDcpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkdyb3VwczwvYT48L2Rpdj4KLQotPCEtLSBpZnJhbWUgc2hvd2luZyB0aGUgc2VhcmNoIHJlc3VsdHMgKGNsb3NlZCBieSBkZWZhdWx0KSAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hSZXN1bHRzV2luZG93Ij4KLTxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGZyYW1lYm9yZGVyPSIwIiAKLSAgICAgICAgbmFtZT0iTVNlYXJjaFJlc3VsdHMiIGlkPSJNU2VhcmNoUmVzdWx0cyI+Ci08L2lmcmFtZT4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJoZWFkZXIiPgotICA8ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KLTxhIGhyZWY9IiNuZXN0ZWQtY2xhc3NlcyI+RGF0YSBTdHJ1Y3R1cmVzPC9hPiAmIzEyNDsKLTxhIGhyZWY9IiNkZWZpbmUtbWVtYmVycyI+TWFjcm9zPC9hPiAmIzEyNDsKLTxhIGhyZWY9IiN0eXBlZGVmLW1lbWJlcnMiPlR5cGVkZWZzPC9hPiAmIzEyNDsKLTxhIGhyZWY9IiNlbnVtLW1lbWJlcnMiPkVudW1lcmF0aW9uczwvYT4gJiMxMjQ7Ci08YSBocmVmPSIjZnVuYy1tZW1iZXJzIj5GdW5jdGlvbnM8L2E+ICYjMTI0OwotPGEgaHJlZj0iI3Zhci1tZW1iZXJzIj5WYXJpYWJsZXM8L2E+ICA8L2Rpdj4KLSAgPGRpdiBjbGFzcz0iaGVhZGVydGl0bGUiPgotPGRpdiBjbGFzcz0idGl0bGUiPlR1cmJvSlBFRzwvZGl2PiAgPC9kaXY+Ci08L2Rpdj48IS0taGVhZGVyLS0+Ci08ZGl2IGNsYXNzPSJjb250ZW50cyI+Ci0KLTxwPlR1cmJvSlBFRyBBUEkuICAKLTxhIGhyZWY9IiNkZXRhaWxzIj5Nb3JlLi4uPC9hPjwvcD4KLTx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0ibmVzdGVkLWNsYXNzZXMiPjwvYT4KLURhdGEgU3RydWN0dXJlczwvaDI+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RydWN0ICYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sIj50anNjYWxpbmdmYWN0b3I8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5TY2FsaW5nIGZhY3Rvci4gIDxhIGhyZWY9InN0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sI2RldGFpbHMiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjoiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdHJ1Y3QgJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCI+dGpyZWdpb248L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Dcm9wcGluZyByZWdpb24uICA8YSBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sI2RldGFpbHMiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjoiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5zdHJ1Y3QgJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCI+dGp0cmFuc2Zvcm08L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Mb3NzbGVzcyB0cmFuc2Zvcm0uICA8YSBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2RldGFpbHMiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjoiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08L3RhYmxlPjx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0iZGVmaW5lLW1lbWJlcnMiPjwvYT4KLU1hY3JvczwvaDI+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhNWVmM2QxNjkxNjJjZTc3Y2UzNDhlMjkyYTBiNzQ3N2MiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj5USl9OVU1TQU1QPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBudW1iZXIgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9ucy4gIDxhIGhyZWY9IiNnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2E1ZWYzZDE2OTE2MmNlNzdjZTM0OGUyOTJhMGI3NDc3YyI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTcwMTBhNDQwMmY1NGE0NWJhODIyYWQ4Njc1YTQ2NTVlIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4jZGVmaW5lJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhNzAxMGE0NDAyZjU0YTQ1YmE4MjJhZDg2NzVhNDY1NWUiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIG51bWJlciBvZiBwaXhlbCBmb3JtYXRzLiAgPGEgaHJlZj0iI2dhNzAxMGE0NDAyZjU0YTQ1YmE4MjJhZDg2NzVhNDY1NWUiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTcwMTBhNDQwMmY1NGE0NWJhODIyYWQ4Njc1YTQ2NTVlIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhMzlmNTdhNmZiMDJkOWNmMzJlN2I2ODkwMDk5YjVhNzEiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTM5ZjU3YTZmYjAyZDljZjMyZTdiNjg5MDA5OWI1YTcxIj5USl9OVU1DUzwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EzOWY1N2E2ZmIwMmQ5Y2YzMmU3YjY4OTAwOTliNWE3MSI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgbnVtYmVyIG9mIEpQRUcgY29sb3JzcGFjZXMuICA8YSBocmVmPSIjZ2EzOWY1N2E2ZmIwMmQ5Y2YzMmU3YjY4OTAwOTliNWE3MSI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMzlmNTdhNmZiMDJkOWNmMzJlN2I2ODkwMDk5YjVhNzEiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzJlY2Y0ZWJlNmViNzAyZDNjNmY1Y2EyNzQ1NWUxZWMiPlRKRkxBR19CT1RUT01VUDwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgdW5jb21wcmVzc2VkIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZSBpcyBzdG9yZWQgaW4gYm90dG9tLXVwIChXaW5kb3dzLCBPcGVuR0wpIG9yZGVyLCBub3QgdG9wLWRvd24gKFgxMSkgb3JkZXIuICA8YSBocmVmPSIjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNzJlY2Y0ZWJlNmViNzAyZDNjNmY1Y2EyNzQ1NWUxZWMiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E0ZWU0NTA2YzgxMTc3YTA2Zjc3ZTI1MDRhMjJlZmQyZCI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNGVlNDUwNmM4MTE3N2EwNmY3N2UyNTA0YTIyZWZkMmQiPlRKRkxBR19GQVNUVVBTQU1QTEU8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhNGVlNDUwNmM4MTE3N2EwNmY3N2UyNTA0YTIyZWZkMmQiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+V2hlbiBkZWNvbXByZXNzaW5nIGFuIGltYWdlIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcsIHVzZSB0aGUgZmFzdGVzdCBjaHJvbWluYW5jZSB1cHNhbXBsaW5nIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMuICA8YSBocmVmPSIjZ2E0ZWU0NTA2YzgxMTc3YTA2Zjc3ZTI1MDRhMjJlZmQyZCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNGVlNDUwNmM4MTE3N2EwNmY3N2UyNTA0YTIyZWZkMmQiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E4ODA4ZDQwM2M2OGI2MmFhYTU4YTRjMWU1OGU5ODk2MyI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiPlRKRkxBR19OT1JFQUxMT0M8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RGlzYWJsZSBidWZmZXIgKHJlKWFsbG9jYXRpb24uICA8YSBocmVmPSIjZ2E4ODA4ZDQwM2M2OGI2MmFhYTU4YTRjMWU1OGU5ODk2MyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2FhYmNlMjM1ZGI4MGQzZjY5OGIyN2YzNmNiZDQ1M2RhMiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYWJjZTIzNWRiODBkM2Y2OThiMjdmMzZjYmQ0NTNkYTIiPlRKRkxBR19GQVNURENUPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYWFiY2UyMzVkYjgwZDNmNjk4YjI3ZjM2Y2JkNDUzZGEyIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlVzZSB0aGUgZmFzdGVzdCBEQ1QvSURDVCBhbGdvcml0aG0gYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIGNvZGVjLiAgPGEgaHJlZj0iI2dhYWJjZTIzNWRiODBkM2Y2OThiMjdmMzZjYmQ0NTNkYTIiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYWFiY2UyMzVkYjgwZDNmNjk4YjI3ZjM2Y2JkNDUzZGEyIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhY2IyMzNjZmQ3MjJkNjZkMWNjYmY0OGE3ZGU4MWYwZTAiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWNiMjMzY2ZkNzIyZDY2ZDFjY2JmNDhhN2RlODFmMGUwIj5USkZMQUdfQUNDVVJBVEVEQ1Q8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhY2IyMzNjZmQ3MjJkNjZkMWNjYmY0OGE3ZGU4MWYwZTAiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VXNlIHRoZSBtb3N0IGFjY3VyYXRlIERDVC9JRENUIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMuICA8YSBocmVmPSIjZ2FjYjIzM2NmZDcyMmQ2NmQxY2NiZjQ4YTdkZTgxZjBlMCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhY2IyMzNjZmQ3MjJkNjZkMWNjYmY0OGE3ZGU4MWYwZTAiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EwZjZkYmQxOGFkZjM4YjdkNDZhYzU0N2YwZjRkNTYyYyI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGY2ZGJkMThhZGYzOGI3ZDQ2YWM1NDdmMGY0ZDU2MmMiPlRKX05VTVhPUDwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EwZjZkYmQxOGFkZjM4YjdkNDZhYzU0N2YwZjRkNTYyYyI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgbnVtYmVyIG9mIHRyYW5zZm9ybSBvcGVyYXRpb25zLiAgPGEgaHJlZj0iI2dhMGY2ZGJkMThhZGYzOGI3ZDQ2YWM1NDdmMGY0ZDU2MmMiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTBmNmRiZDE4YWRmMzhiN2Q0NmFjNTQ3ZjBmNGQ1NjJjIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhNTBlMDNjYjVlZDExNTMzMGUyMTI0MTc0Mjk2MDBiMDAiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIj5USlhPUFRfUEVSRkVDVDwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E1MGUwM2NiNWVkMTE1MzMwZTIxMjQxNzQyOTYwMGIwMCI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGlzIG9wdGlvbiB3aWxsIGNhdXNlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSIgdGl0bGU9Ikxvc3NsZXNzbHkgdHJhbnNmb3JtIGEgSlBFRyBpbWFnZSBpbnRvIGFub3RoZXIgSlBFRyBpbWFnZS4iPnRqVHJhbnNmb3JtKCk8L2E+IHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgdHJhbnNmb3JtIGlzIG5vdCBwZXJmZWN0LiAgPGEgaHJlZj0iI2dhNTBlMDNjYjVlZDExNTMzMGUyMTI0MTc0Mjk2MDBiMDAiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhMzE5ODI2YjdlYjE1ODNjMDU5NWJiZTdiOTU0Mjg3MDkiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTMxOTgyNmI3ZWIxNTgzYzA1OTViYmU3Yjk1NDI4NzA5Ij5USlhPUFRfVFJJTTwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EzMTk4MjZiN2ViMTU4M2MwNTk1YmJlN2I5NTQyODcwOSI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGlzIG9wdGlvbiB3aWxsIGNhdXNlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSIgdGl0bGU9Ikxvc3NsZXNzbHkgdHJhbnNmb3JtIGEgSlBFRyBpbWFnZSBpbnRvIGFub3RoZXIgSlBFRyBpbWFnZS4iPnRqVHJhbnNmb3JtKCk8L2E+IHRvIGRpc2NhcmQgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyB0aGF0IGNhbm5vdCBiZSB0cmFuc2Zvcm1lZC4gIDxhIGhyZWY9IiNnYTMxOTgyNmI3ZWIxNTgzYzA1OTViYmU3Yjk1NDI4NzA5Ij5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2EzMTk4MjZiN2ViMTU4M2MwNTk1YmJlN2I5NTQyODcwOSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTljNzcxYTc1N2ZjMTI5NGFkZDYxMTkwNmI4OWFiMmQyIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj4jZGVmaW5lJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5Yzc3MWE3NTdmYzEyOTRhZGQ2MTE5MDZiODlhYjJkMiI+VEpYT1BUX0NST1A8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhOWM3NzFhNzU3ZmMxMjk0YWRkNjExOTA2Yjg5YWIyZDIiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhpcyBvcHRpb24gd2lsbCBlbmFibGUgbG9zc2xlc3MgY3JvcHBpbmcuICA8YSBocmVmPSIjZ2E5Yzc3MWE3NTdmYzEyOTRhZGQ2MTE5MDZiODlhYjJkMiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhOWM3NzFhNzU3ZmMxMjk0YWRkNjExOTA2Yjg5YWIyZDIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EzYWNlZTdiNDhhZGUxYjk5ZTU1ODg3MzYwMDdjMjU4OSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhM2FjZWU3YjQ4YWRlMWI5OWU1NTg4NzM2MDA3YzI1ODkiPlRKWE9QVF9HUkFZPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTNhY2VlN2I0OGFkZTFiOTllNTU4ODczNjAwN2MyNTg5Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoaXMgb3B0aW9uIHdpbGwgZGlzY2FyZCB0aGUgY29sb3IgZGF0YSBpbiB0aGUgaW5wdXQgaW1hZ2UgYW5kIHByb2R1Y2UgYSBncmF5c2NhbGUgb3V0cHV0IGltYWdlLiAgPGEgaHJlZj0iI2dhM2FjZWU3YjQ4YWRlMWI5OWU1NTg4NzM2MDA3YzI1ODkiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTNhY2VlN2I0OGFkZTFiOTllNTU4ODczNjAwN2MyNTg5Ij48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZmJmOTkyYmJmNmUwMDY3MDU4ODYzMzM3MDNmZmFiMzEiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWZiZjk5MmJiZjZlMDA2NzA1ODg2MzMzNzAzZmZhYjMxIj5USlhPUFRfTk9PVVRQVVQ8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhZmJmOTkyYmJmNmUwMDY3MDU4ODYzMzM3MDNmZmFiMzEiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhpcyBvcHRpb24gd2lsbCBwcmV2ZW50IDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSIgdGl0bGU9Ikxvc3NsZXNzbHkgdHJhbnNmb3JtIGEgSlBFRyBpbWFnZSBpbnRvIGFub3RoZXIgSlBFRyBpbWFnZS4iPnRqVHJhbnNmb3JtKCk8L2E+IGZyb20gb3V0cHV0dGluZyBhIEpQRUcgaW1hZ2UgZm9yIHRoaXMgcGFydGljdWxhciB0cmFuc2Zvcm0gKHRoaXMgY2FuIGJlIHVzZWQgaW4gY29uanVuY3Rpb24gd2l0aCBhIGN1c3RvbSBmaWx0ZXIgdG8gY2FwdHVyZSB0aGUgdHJhbnNmb3JtZWQgRENUIGNvZWZmaWNpZW50cyB3aXRob3V0IHRyYW5zY29kaW5nIHRoZW0uKSAgPGEgaHJlZj0iI2dhZmJmOTkyYmJmNmUwMDY3MDU4ODYzMzM3MDNmZmFiMzEiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYWZiZjk5MmJiZjZlMDA2NzA1ODg2MzMzNzAzZmZhYjMxIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPiNkZWZpbmUmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTBhYmE5NTU0NzMzMTVlNDA1Mjk1ZDk3OGYwYzE2NTExIj5USlBBRDwvYT4od2lkdGgpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UGFkIHRoZSBnaXZlbiB3aWR0aCB0byB0aGUgbmVhcmVzdCAzMi1iaXQgYm91bmRhcnkuICA8YSBocmVmPSIjZ2EwYWJhOTU1NDczMzE1ZTQwNTI5NWQ5NzhmMGMxNjUxMSI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E4NDg3OGJiNjU0MDQyMDQ3NDNhYTE4Y2FjMDI3ODFkZiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+I2RlZmluZSYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODQ4NzhiYjY1NDA0MjA0NzQzYWExOGNhYzAyNzgxZGYiPlRKU0NBTEVEPC9hPihkaW1lbnNpb24sIHNjYWxpbmdGYWN0b3IpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhODQ4NzhiYjY1NDA0MjA0NzQzYWExOGNhYzAyNzgxZGYiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29tcHV0ZSB0aGUgc2NhbGVkIHZhbHVlIG9mIDxjb2RlPmRpbWVuc2lvbjwvY29kZT4gdXNpbmcgdGhlIGdpdmVuIHNjYWxpbmcgZmFjdG9yLiAgPGEgaHJlZj0iI2dhODQ4NzhiYjY1NDA0MjA0NzQzYWExOGNhYzAyNzgxZGYiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTg0ODc4YmI2NTQwNDIwNDc0M2FhMThjYWMwMjc4MWRmIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPC90YWJsZT48dGFibGUgY2xhc3M9Im1lbWJlcmRlY2xzIj4KLTx0ciBjbGFzcz0iaGVhZGluZyI+PHRkIGNvbHNwYW49IjIiPjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPjxhIG5hbWU9InR5cGVkZWYtbWVtYmVycyI+PC9hPgotVHlwZWRlZnM8L2gyPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYWEyOWYzMTg5YzQxYmUxMmVjNWRlZTdjYWVjMzE4YTMxIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj50eXBlZGVmIHN0cnVjdCA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiPnRqdHJhbnNmb3JtPC9hPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYTI5ZjMxODljNDFiZTEyZWM1ZGVlN2NhZWMzMThhMzEiPnRqdHJhbnNmb3JtPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYWEyOWYzMTg5YzQxYmUxMmVjNWRlZTdjYWVjMzE4YTMxIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkxvc3NsZXNzIHRyYW5zZm9ybS4gIDxhIGhyZWY9IiNnYWEyOWYzMTg5YzQxYmUxMmVjNWRlZTdjYWVjMzE4YTMxIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2FhMjlmMzE4OWM0MWJlMTJlYzVkZWU3Y2FlYzMxOGEzMSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj50eXBlZGVmIHZvaWQgKiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlR1cmJvSlBFRyBpbnN0YW5jZSBoYW5kbGUuICA8YSBocmVmPSIjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08L3RhYmxlPjx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0iZW51bS1tZW1iZXJzIj48L2E+Ci1FbnVtZXJhdGlvbnM8L2gyPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5lbnVtICYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPlRKU0FNUDwvYT4geyA8YnIvPgotJiMxNjA7JiMxNjA7PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGFmYjhkYTRmNDQxOTc4MzdiZGVjMGE0ZjU5M2RhY2FlMyI+VEpTQU1QXzQ0NDwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGExMzYxMzA5MDJjYzU3OGYxMWYzMjQyOWI1OTM2ODQwNCI+VEpTQU1QXzQyMjwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGE2MzA4NWRiZjY4M2NmZTM5ZTUxM2NkYjYzNDNlMzczNyI+VEpTQU1QXzQyMDwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGEzZjFjOTUwNDg0MmRkYzdhNDhkMGY2OTA3NTRiNjI0OCI+VEpTQU1QX0dSQVk8L2E+LCAKLTxici8+Ci0mIzE2MDsmIzE2MDs8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YWNjZjc0MGU2ZjNhYTZiYTIwYmE5MjJjYWQxM2NiOTc0Ij5USlNBTVBfNDQwPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YTI4ZWM2MjU3NWU1ZWEyOTVjM2ZkZTMwMDFkYzYyOGUyIj5USlNBTVBfNDExPC9hPgotPGJyLz4KLSB9PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9ucy4gIDxhIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmEiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmVudW0gJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYSI+VEpQRjwvYT4geyA8YnIvPgotJiMxNjA7JiMxNjA7PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWE3Y2U5MzIzMGJmZjQ0OTUxOGNlMzg3YzE3ZTZlZDM3YyI+VEpQRl9SR0I8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhYjEwNjI0NDM3ZmI4ZWY0OTVhMGIxNTNlNjU3NDk4MzkiPlRKUEZfQkdSPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTgzOTczYmViYjdlMmRjNmZhOGJhZTg5ZmYzZjQyZTAxIj5USlBGX1JHQlg8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhMmExZmJmNTY5Y2E3OTg5N2VhZTg4NmUzMzc2Y2E0YzgiPlRKUEZfQkdSWDwvYT4sIAotPGJyLz4KLSYjMTYwOyYjMTYwOzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhZjY2MDNiMjcxNDdkZTQ3ZTIxMmU3NWRhYzAyN2IyYWYiPlRKUEZfWEJHUjwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFkYWU5OTY5MDVlZmNmYTNiNDJhMGJiM2JlYTdmOWQ4NCI+VEpQRl9YUkdCPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTU0MzFiNTRiMDE1MzM3NzA1ZjEzMTE4MDczNzExYTFhIj5USlBGX0dSQVk8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhODhkMmU4OGZhYjY3ZjY1MDNjZjk3MmUxNDg1MWNjMTIiPlRKUEZfUkdCQTwvYT4sIAotPGJyLz4KLSYjMTYwOyYjMTYwOzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhYzAzN2ZmMTg0NWNmOWI3NGJiODFhMzY1OWMyYjlmYjQiPlRKUEZfQkdSQTwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWExYmExYTdmMTYzMWRiZWFhNDlhMGE4NWZjNGE0MDA4MSI+VEpQRl9BQkdSPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYWU4Zjg0NmVkOWQ5ZGU5OWI2ZTFkZmU0NDg4NDg3NjVjIj5USlBGX0FSR0I8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhN2Y1MTAwZWM0NGM5MTk5NGUyNDNmMWNmNTU1NTNmOGIiPlRKUEZfQ01ZSzwvYT4KLTxici8+Ci0gfTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlBpeGVsIGZvcm1hdHMuICA8YSBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5lbnVtICYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjAiPlRKQ1M8L2E+IHsgPGJyLz4KLSYjMTYwOyYjMTYwOzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNjc3Y2I3Y2NiODVjNDAzOGFjNDE5NjRhMmUwOWU1NTUiPlRKQ1NfUkdCPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYTczODliOGY2NWJiMzg3ZmZlZGNlM2VmZDBkNzhlYzc1Ij5USkNTX1lDYkNyPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYWIzZTdkNmE4N2Y2OTVlNDViODFjMWI1MjYyYjVhNTBhIj5USkNTX0dSQVk8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNmM4YjYzNjE1MmFjODE5NWI4Njk1ODdkYjMxNWVlNTMiPlRKQ1NfQ01ZSzwvYT4sIAotPGJyLz4KLSYjMTYwOyYjMTYwOzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNTM4MzllMGZlODY3Yjc2YjU4ZDE2YjBhMWE3YzU5OGUiPlRKQ1NfWUNDSzwvYT4KLTxici8+Ci0gfTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkpQRUcgY29sb3JzcGFjZXMuICA8YSBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMCI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5lbnVtICYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYiPlRKWE9QPC9hPiB7IDxici8+Ci0mIzE2MDsmIzE2MDs8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YWFkODhjMDM2NmNkM2Y3ZDBlYWM5ZDdhM2ZhMWMyYzI3Ij5USlhPUF9OT05FPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YWEwZGY2OTc3NmNhYTMwZjBmYTI4ZTI2MzMyZDMxMWNlIj5USlhPUF9IRkxJUDwvYT4sIAotPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmEzMjRlZGRmYmVjNTNiN2U2OTFmNjFlNTY5MjlkMGQ1ZCI+VEpYT1BfVkZMSVA8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzEwNjBhZWQxOTlmODg2YWZkZDQxN2Y4MDQ5OWMzMmQiPlRKWE9QX1RSQU5TUE9TRTwvYT4sIAotPGJyLz4KLSYjMTYwOyYjMTYwOzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhZjNiMTRkNDg4YWVhNmVjZTllNWIzZGY3M2E3NGQ2YTQiPlRKWE9QX1RSQU5TVkVSU0U8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhNDNiMmJiYjIzYmM0YmQ1NDg0MjJkNDNmYmU5YWYxMjgiPlRKWE9QX1JPVDkwPC9hPiwgCi08YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTE0MDk1MmViOGRkMDMwMGFjY2ZjYzIyNzI2ZDY5NjkyIj5USlhPUF9ST1QxODA8L2E+LCAKLTxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzA2NGVlNWRmYjdmMDMyZGYzMzI4MTg1ODc1NjdhMDgiPlRKWE9QX1JPVDI3MDwvYT4KLTxici8+Ci0gfTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRyYW5zZm9ybSBvcGVyYXRpb25zIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPiAgPGEgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08L3RhYmxlPjx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0iZnVuYy1tZW1iZXJzIj48L2E+Ci1GdW5jdGlvbnM8L2gyPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTNkMTBjNDdmYmU0YTI0ODlhMmIzMGM5MzE1NTFkMDFhIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gRExMQ0FMTCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhM2QxMGM0N2ZiZTRhMjQ4OWEyYjMwYzkzMTU1MWQwMWEiPnRqSW5pdENvbXByZXNzPC9hPiAodm9pZCk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EzZDEwYzQ3ZmJlNGEyNDg5YTJiMzBjOTMxNTUxZDAxYSI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5DcmVhdGUgYSBUdXJib0pQRUcgY29tcHJlc3NvciBpbnN0YW5jZS4gIDxhIGhyZWY9IiNnYTNkMTBjNDdmYmU0YTI0ODlhMmIzMGM5MzE1NTFkMDFhIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2EzZDEwYzQ3ZmJlNGEyNDg5YTJiMzBjOTMxNTUxZDAxYSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYWYzOGYyZWQ0NGJkYzg4ZTczMGUwOGI2MzJmYTZlODhlIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgaW50IERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWYzOGYyZWQ0NGJkYzg4ZTczMGUwOGI2MzJmYTZlODhlIj50akNvbXByZXNzMjwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IGhhbmRsZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc3JjQnVmLCBpbnQgd2lkdGgsIGludCBwaXRjaCwgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBjaGFyICoqanBlZ0J1ZiwgdW5zaWduZWQgbG9uZyAqanBlZ1NpemUsIGludCBqcGVnU3Vic2FtcCwgaW50IGpwZWdRdWFsLCBpbnQgZmxhZ3MpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhZjM4ZjJlZDQ0YmRjODhlNzMwZTA4YjYzMmZhNmU4OGUiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q29tcHJlc3MgYW4gUkdCLCBncmF5c2NhbGUsIG9yIENNWUsgaW1hZ2UgaW50byBhIEpQRUcgaW1hZ2UuICA8YSBocmVmPSIjZ2FmMzhmMmVkNDRiZGM4OGU3MzBlMDhiNjMyZmE2ZTg4ZSI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhZjM4ZjJlZDQ0YmRjODhlNzMwZTA4YjYzMmZhNmU4OGUiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCI+dGpDb21wcmVzc0Zyb21ZVVY8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiBoYW5kbGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyY0J1ZiwgaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgaGVpZ2h0LCBpbnQgc3Vic2FtcCwgdW5zaWduZWQgY2hhciAqKmpwZWdCdWYsIHVuc2lnbmVkIGxvbmcgKmpwZWdTaXplLCBpbnQganBlZ1F1YWwsIGludCBmbGFncyk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db21wcmVzcyBhIFlVViBwbGFuYXIgaW1hZ2UgaW50byBhIEpQRUcgaW1hZ2UuICA8YSBocmVmPSIjZ2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNmY2ZGUzNzVkNmVjMDAyMGZhYmE2MjdlMzdlNWEwNjAiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EwYjg0YzY4MmQ4YWNjZjA5N2Q3YTc0M2M5NjVkMzQ2NCI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EwYjg0YzY4MmQ4YWNjZjA5N2Q3YTc0M2M5NjVkMzQ2NCI+dGpDb21wcmVzc0Zyb21ZVVZQbGFuZXM8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiBoYW5kbGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipzcmNQbGFuZXMsIGludCB3aWR0aCwgY29uc3QgaW50ICpzdHJpZGVzLCBpbnQgaGVpZ2h0LCBpbnQgc3Vic2FtcCwgdW5zaWduZWQgY2hhciAqKmpwZWdCdWYsIHVuc2lnbmVkIGxvbmcgKmpwZWdTaXplLCBpbnQganBlZ1F1YWwsIGludCBmbGFncyk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EwYjg0YzY4MmQ4YWNjZjA5N2Q3YTc0M2M5NjVkMzQ2NCI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Db21wcmVzcyBhIHNldCBvZiBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGludG8gYSBKUEVHIGltYWdlLiAgPGEgaHJlZj0iI2dhMGI4NGM2ODJkOGFjY2YwOTdkN2E3NDNjOTY1ZDM0NjQiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTBiODRjNjgyZDhhY2NmMDk3ZDdhNzQzYzk2NWQzNDY0Ij48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhY2NjNWJjYTdmMTJmY2RjYzMwMmU2ZTFjNmQ0YjMxMWIiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCB1bnNpZ25lZCBsb25nIERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWNjYzViY2E3ZjEyZmNkY2MzMDJlNmUxYzZkNGIzMTFiIj50akJ1ZlNpemU8L2E+IChpbnQgd2lkdGgsIGludCBoZWlnaHQsIGludCBqcGVnU3Vic2FtcCk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2FjY2M1YmNhN2YxMmZjZGNjMzAyZTZlMWM2ZDRiMzExYiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRyBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiAgPGEgaHJlZj0iI2dhY2NjNWJjYTdmMTJmY2RjYzMwMmU2ZTFjNmQ0YjMxMWIiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYWNjYzViY2E3ZjEyZmNkY2MzMDJlNmUxYzZkNGIzMTFiIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZjQ1MTY2NGE2MmMxZjZjN2NjNWE2NDAxZjMyOTA4YzkiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCB1bnNpZ25lZCBsb25nIERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWY0NTE2NjRhNjJjMWY2YzdjYzVhNjQwMWYzMjkwOGM5Ij50akJ1ZlNpemVZVVYyPC9hPiAoaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgaGVpZ2h0LCBpbnQgc3Vic2FtcCk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2FmNDUxNjY0YTYyYzFmNmM3Y2M1YTY0MDFmMzI5MDhjOSI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBwbGFuYXIgaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIDxhIGhyZWY9IiNnYWY0NTE2NjRhNjJjMWY2YzdjYzVhNjQwMWYzMjkwOGM5Ij5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2FmNDUxNjY0YTYyYzFmNmM3Y2M1YTY0MDFmMzI5MDhjOSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTZmOThkOTc3YmZhOWQxNjdjOTcxNzJlODc2YmE2MWUyIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgdW5zaWduZWQgbG9uZyBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMiI+dGpQbGFuZVNpemVZVVY8L2E+IChpbnQgY29tcG9uZW50SUQsIGludCB3aWR0aCwgaW50IHN0cmlkZSwgaW50IGhlaWdodCwgaW50IHN1YnNhbXApPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhNmY5OGQ5NzdiZmE5ZDE2N2M5NzE3MmU4NzZiYTYxZTIiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gIDxhIGhyZWY9IiNnYTZmOThkOTc3YmZhOWQxNjdjOTcxNzJlODc2YmE2MWUyIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMiI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTYzZmI2NmJiMWUzNmM3NDAwOGM0NjM0MzYwYmVjYmIxIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgaW50JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2M2ZiNjZiYjFlMzZjNzQwMDhjNDYzNDM2MGJlY2JiMSI+dGpQbGFuZVdpZHRoPC9hPiAoaW50IGNvbXBvbmVudElELCBpbnQgd2lkdGgsIGludCBzdWJzYW1wKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTYzZmI2NmJiMWUzNmM3NDAwOGM0NjM0MzYwYmVjYmIxIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBwbGFuZSB3aWR0aCBvZiBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiAgPGEgaHJlZj0iI2dhNjNmYjY2YmIxZTM2Yzc0MDA4YzQ2MzQzNjBiZWNiYjEiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTYzZmI2NmJiMWUzNmM3NDAwOGM0NjM0MzYwYmVjYmIxIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhMWEyMDk2OTZjNmE4MDc0OGYyMGUxMzRiM2M2NDc4OWYiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCBpbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFhMjA5Njk2YzZhODA3NDhmMjBlMTM0YjNjNjQ3ODlmIj50alBsYW5lSGVpZ2h0PC9hPiAoaW50IGNvbXBvbmVudElELCBpbnQgaGVpZ2h0LCBpbnQgc3Vic2FtcCk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2ExYTIwOTY5NmM2YTgwNzQ4ZjIwZTEzNGIzYzY0Nzg5ZiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgcGxhbmUgaGVpZ2h0IG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuICA8YSBocmVmPSIjZ2ExYTIwOTY5NmM2YTgwNzQ4ZjIwZTEzNGIzYzY0Nzg5ZiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMWEyMDk2OTZjNmE4MDc0OGYyMGUxMzRiM2M2NDc4OWYiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2FhYmUwNWFjZDczNDk5MDA1M2FkMTI5NGI1ZWYyMzlhYSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FhYmUwNWFjZDczNDk5MDA1M2FkMTI5NGI1ZWYyMzlhYSI+dGpFbmNvZGVZVVYzPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gaGFuZGxlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzcmNCdWYsIGludCB3aWR0aCwgaW50IHBpdGNoLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIHVuc2lnbmVkIGNoYXIgKmRzdEJ1ZiwgaW50IHBhZCwgaW50IHN1YnNhbXAsIGludCBmbGFncyk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2FhYmUwNWFjZDczNDk5MDA1M2FkMTI5NGI1ZWYyMzlhYSI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5FbmNvZGUgYW4gUkdCIG9yIGdyYXlzY2FsZSBpbWFnZSBpbnRvIGEgWVVWIHBsYW5hciBpbWFnZS4gIDxhIGhyZWY9IiNnYWFiZTA1YWNkNzM0OTkwMDUzYWQxMjk0YjVlZjIzOWFhIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2FhYmUwNWFjZDczNDk5MDA1M2FkMTI5NGI1ZWYyMzlhYSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYThhNjVlZDNiZDEyZGY1N2MyMTlkNDZhZmJjOTAwOGYxIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgaW50IERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYThhNjVlZDNiZDEyZGY1N2MyMTlkNDZhZmJjOTAwOGYxIj50akVuY29kZVlVVlBsYW5lczwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IGhhbmRsZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc3JjQnVmLCBpbnQgd2lkdGgsIGludCBwaXRjaCwgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCB1bnNpZ25lZCBjaGFyICoqZHN0UGxhbmVzLCBpbnQgKnN0cmlkZXMsIGludCBzdWJzYW1wLCBpbnQgZmxhZ3MpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhOGE2NWVkM2JkMTJkZjU3YzIxOWQ0NmFmYmM5MDA4ZjEiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RW5jb2RlIGFuIFJHQiBvciBncmF5c2NhbGUgaW1hZ2UgaW50byBzZXBhcmF0ZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzLiAgPGEgaHJlZj0iI2dhOGE2NWVkM2JkMTJkZjU3YzIxOWQ0NmFmYmM5MDA4ZjEiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYThhNjVlZDNiZDEyZGY1N2MyMTlkNDZhZmJjOTAwOGYxIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZTU0MDgxNzlkMDQxZTJhMmY3MTk5YzgyODNjZjY0OWUiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FlNTQwODE3OWQwNDFlMmEyZjcxOTljODI4M2NmNjQ5ZSI+dGpJbml0RGVjb21wcmVzczwvYT4gKHZvaWQpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhZTU0MDgxNzlkMDQxZTJhMmY3MTk5YzgyODNjZjY0OWUiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+Q3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBpbnN0YW5jZS4gIDxhIGhyZWY9IiNnYWU1NDA4MTc5ZDA0MWUyYTJmNzE5OWM4MjgzY2Y2NDllIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2FlNTQwODE3OWQwNDFlMmEyZjcxOTljODI4M2NmNjQ5ZSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTNmY2VkNDU1ZTUwNGU4ZmY0ZmJhZDI4YmE5NGEzMDIwIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgaW50IERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTNmY2VkNDU1ZTUwNGU4ZmY0ZmJhZDI4YmE5NGEzMDIwIj50akRlY29tcHJlc3NIZWFkZXIzPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gaGFuZGxlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpqcGVnQnVmLCB1bnNpZ25lZCBsb25nIGpwZWdTaXplLCBpbnQgKndpZHRoLCBpbnQgKmhlaWdodCwgaW50ICpqcGVnU3Vic2FtcCwgaW50ICpqcGVnQ29sb3JzcGFjZSk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EzZmNlZDQ1NWU1MDRlOGZmNGZiYWQyOGJhOTRhMzAyMCI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5SZXRyaWV2ZSBpbmZvcm1hdGlvbiBhYm91dCBhIEpQRUcgaW1hZ2Ugd2l0aG91dCBkZWNvbXByZXNzaW5nIGl0LiAgPGEgaHJlZj0iI2dhM2ZjZWQ0NTVlNTA0ZThmZjRmYmFkMjhiYTk0YTMwMjAiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTNmY2VkNDU1ZTUwNGU4ZmY0ZmJhZDI4YmE5NGEzMDIwIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhNjQ0OTA0NGI5YWY0MDI5OTljY2Y1MmY0MDEzMzNiZTgiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sIj50anNjYWxpbmdmYWN0b3I8L2E+ICpETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2NDQ5MDQ0YjlhZjQwMjk5OWNjZjUyZjQwMTMzM2JlOCI+dGpHZXRTY2FsaW5nRmFjdG9yczwvYT4gKGludCAqbnVtc2NhbGluZ2ZhY3RvcnMpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhNjQ0OTA0NGI5YWY0MDI5OTljY2Y1MmY0MDEzMzNiZTgiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJucyBhIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMgdGhhdCB0aGUgSlBFRyBkZWNvbXByZXNzb3IgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBUdXJib0pQRUcgc3VwcG9ydHMuICA8YSBocmVmPSIjZ2E2NDQ5MDQ0YjlhZjQwMjk5OWNjZjUyZjQwMTMzM2JlOCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNjQ0OTA0NGI5YWY0MDI5OTljY2Y1MmY0MDEzMzNiZTgiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2FkODAyNmE0MTdlMTZhNzYzMTNiYzBhNmM5ZThiMmJhMiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkODAyNmE0MTdlMTZhNzYzMTNiYzBhNmM5ZThiMmJhMiI+dGpEZWNvbXByZXNzMjwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IGhhbmRsZSwgY29uc3QgdW5zaWduZWQgY2hhciAqanBlZ0J1ZiwgdW5zaWduZWQgbG9uZyBqcGVnU2l6ZSwgdW5zaWduZWQgY2hhciAqZHN0QnVmLCBpbnQgd2lkdGgsIGludCBwaXRjaCwgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCBpbnQgZmxhZ3MpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhZDgwMjZhNDE3ZTE2YTc2MzEzYmMwYTZjOWU4YjJiYTIiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RGVjb21wcmVzcyBhIEpQRUcgaW1hZ2UgdG8gYW4gUkdCLCBncmF5c2NhbGUsIG9yIENNWUsgaW1hZ2UuICA8YSBocmVmPSIjZ2FkODAyNmE0MTdlMTZhNzYzMTNiYzBhNmM5ZThiMmJhMiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhZDgwMjZhNDE3ZTE2YTc2MzEzYmMwYTZjOWU4YjJiYTIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EzOWUwODkwNjUyOGRiNWE3NjQ2NzBlYTQ4ZDM0NGIwOSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzOWUwODkwNjUyOGRiNWE3NjQ2NzBlYTQ4ZDM0NGIwOSI+dGpEZWNvbXByZXNzVG9ZVVYyPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gaGFuZGxlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpqcGVnQnVmLCB1bnNpZ25lZCBsb25nIGpwZWdTaXplLCB1bnNpZ25lZCBjaGFyICpkc3RCdWYsIGludCB3aWR0aCwgaW50IHBhZCwgaW50IGhlaWdodCwgaW50IGZsYWdzKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTM5ZTA4OTA2NTI4ZGI1YTc2NDY3MGVhNDhkMzQ0YjA5Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlY29tcHJlc3MgYSBKUEVHIGltYWdlIHRvIGEgWVVWIHBsYW5hciBpbWFnZS4gIDxhIGhyZWY9IiNnYTM5ZTA4OTA2NTI4ZGI1YTc2NDY3MGVhNDhkMzQ0YjA5Ij5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6Z2EzOWUwODkwNjUyOGRiNWE3NjQ2NzBlYTQ4ZDM0NGIwOSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTpnYTM4ZDBlZjkwNjkyNjYzYjNmZmI1YjE2ZGEyNTQxNTEyIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5ETExFWFBPUlQgaW50IERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTM4ZDBlZjkwNjkyNjYzYjNmZmI1YjE2ZGEyNTQxNTEyIj50akRlY29tcHJlc3NUb1lVVlBsYW5lczwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IGhhbmRsZSwgY29uc3QgdW5zaWduZWQgY2hhciAqanBlZ0J1ZiwgdW5zaWduZWQgbG9uZyBqcGVnU2l6ZSwgdW5zaWduZWQgY2hhciAqKmRzdFBsYW5lcywgaW50IHdpZHRoLCBpbnQgKnN0cmlkZXMsIGludCBoZWlnaHQsIGludCBmbGFncyk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2EzOGQwZWY5MDY5MjY2M2IzZmZiNWIxNmRhMjU0MTUxMiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWNvbXByZXNzIGEgSlBFRyBpbWFnZSBpbnRvIHNlcGFyYXRlIFksIFUgKENiKSwgYW5kIFYgKENyKSBpbWFnZSBwbGFuZXMuICA8YSBocmVmPSIjZ2EzOGQwZWY5MDY5MjY2M2IzZmZiNWIxNmRhMjU0MTUxMiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMzhkMGVmOTA2OTI2NjNiM2ZmYjViMTZkYTI1NDE1MTIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EwNzdjNjEwMjdiODc1YWZlY2Q1YTE2MTNiZjE4YjNjMSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EwNzdjNjEwMjdiODc1YWZlY2Q1YTE2MTNiZjE4YjNjMSI+dGpEZWNvZGVZVVY8L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiBoYW5kbGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnNyY0J1ZiwgaW50IHBhZCwgaW50IHN1YnNhbXAsIHVuc2lnbmVkIGNoYXIgKmRzdEJ1ZiwgaW50IHdpZHRoLCBpbnQgcGl0Y2gsIGludCBoZWlnaHQsIGludCBwaXhlbEZvcm1hdCwgaW50IGZsYWdzKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTA3N2M2MTAyN2I4NzVhZmVjZDVhMTYxM2JmMThiM2MxIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlY29kZSBhIFlVViBwbGFuYXIgaW1hZ2UgaW50byBhbiBSR0Igb3IgZ3JheXNjYWxlIGltYWdlLiAgPGEgaHJlZj0iI2dhMDc3YzYxMDI3Yjg3NWFmZWNkNWExNjEzYmYxOGIzYzEiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTA3N2M2MTAyN2I4NzVhZmVjZDVhMTYxM2JmMThiM2MxIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZjQyZjE5YjdhNDk2ZWIxOGJkYzg0ZmU2MWVlNmQzZTIiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjQyZjE5YjdhNDk2ZWIxOGJkYzg0ZmU2MWVlNmQzZTIiPnRqRGVjb2RlWVVWUGxhbmVzPC9hPiAoPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gaGFuZGxlLCBjb25zdCB1bnNpZ25lZCBjaGFyICoqc3JjUGxhbmVzLCBjb25zdCBpbnQgKnN0cmlkZXMsIGludCBzdWJzYW1wLCB1bnNpZ25lZCBjaGFyICpkc3RCdWYsIGludCB3aWR0aCwgaW50IHBpdGNoLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGludCBmbGFncyk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2FmNDJmMTliN2E0OTZlYjE4YmRjODRmZTYxZWU2ZDNlMiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZWNvZGUgYSBzZXQgb2YgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBpbnRvIGFuIFJHQiBvciBncmF5c2NhbGUgaW1hZ2UuICA8YSBocmVmPSIjZ2FmNDJmMTliN2E0OTZlYjE4YmRjODRmZTYxZWU2ZDNlMiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhZjQyZjE5YjdhNDk2ZWIxOGJkYzg0ZmU2MWVlNmQzZTIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2EzMTU1Yjc3NWJmYmFjOWRiYmE4NjliOTVhMDM2NzkwMiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTMxNTViNzc1YmZiYWM5ZGJiYTg2OWI5NWEwMzY3OTAyIj50akluaXRUcmFuc2Zvcm08L2E+ICh2b2lkKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTMxNTViNzc1YmZiYWM5ZGJiYTg2OWI5NWEwMzY3OTAyIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkNyZWF0ZSBhIG5ldyBUdXJib0pQRUcgdHJhbnNmb3JtZXIgaW5zdGFuY2UuICA8YSBocmVmPSIjZ2EzMTU1Yjc3NWJmYmFjOWRiYmE4NjliOTVhMDM2NzkwMiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhMzE1NWI3NzViZmJhYzlkYmJhODY5Yjk1YTAzNjc5MDIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIGludCBETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSI+dGpUcmFuc2Zvcm08L2E+ICg8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiBoYW5kbGUsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmpwZWdCdWYsIHVuc2lnbmVkIGxvbmcganBlZ1NpemUsIGludCBuLCB1bnNpZ25lZCBjaGFyICoqZHN0QnVmcywgdW5zaWduZWQgbG9uZyAqZHN0U2l6ZXMsIDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCI+dGp0cmFuc2Zvcm08L2E+ICp0cmFuc2Zvcm1zLCBpbnQgZmxhZ3MpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+TG9zc2xlc3NseSB0cmFuc2Zvcm0gYSBKUEVHIGltYWdlIGludG8gYW5vdGhlciBKUEVHIGltYWdlLiAgPGEgaHJlZj0iI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYWQwMmNkNDJiNjlmMTkzYTA2MjNhOWM4MDE3ODhkZjNhIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhNjc0YWRlZTkxN2I5NWFkNGE4OTZmMWJhMzllMTI1NDAiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNjc0YWRlZTkxN2I5NWFkNGE4OTZmMWJhMzllMTI1NDAiPnRqRGVzdHJveTwvYT4gKDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IGhhbmRsZSk8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E2NzRhZGVlOTE3Yjk1YWQ0YTg5NmYxYmEzOWUxMjU0MCI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5EZXN0cm95IGEgVHVyYm9KUEVHIGNvbXByZXNzb3IsIGRlY29tcHJlc3Nvciwgb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2UuICA8YSBocmVmPSIjZ2E2NzRhZGVlOTE3Yjk1YWQ0YTg5NmYxYmEzOWUxMjU0MCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhNjc0YWRlZTkxN2I5NWFkNGE4OTZmMWJhMzllMTI1NDAiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E1YzkyMzRiZGE2ZDk5M2NkYWZmZGQ4OWJmODFhMDBmZiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+RExMRVhQT1JUIHVuc2lnbmVkIGNoYXIgKkRMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmIj50akFsbG9jPC9hPiAoaW50IGJ5dGVzKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFsbG9jYXRlIGFuIGltYWdlIGJ1ZmZlciBmb3IgdXNlIHdpdGggVHVyYm9KUEVHLiAgPGEgaHJlZj0iI2dhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhOGM0YTEyMzFkYzA2YTQ1MDUxNGM4MzVmNjQ3MWYxMzciPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCB2b2lkIERMTENBTEwmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYThjNGExMjMxZGMwNmE0NTA1MTRjODM1ZjY0NzFmMTM3Ij50akZyZWU8L2E+ICh1bnNpZ25lZCBjaGFyICpidWZmZXIpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhOGM0YTEyMzFkYzA2YTQ1MDUxNGM4MzVmNjQ3MWYxMzciPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+RnJlZSBhbiBpbWFnZSBidWZmZXIgcHJldmlvdXNseSBhbGxvY2F0ZWQgYnkgVHVyYm9KUEVHLiAgPGEgaHJlZj0iI2dhOGM0YTEyMzFkYzA2YTQ1MDUxNGM4MzVmNjQ3MWYxMzciPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYThjNGExMjMxZGMwNmE0NTA1MTRjODM1ZjY0NzFmMTM3Ij48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPkRMTEVYUE9SVCBjaGFyICpETExDQUxMJiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiI+dGpHZXRFcnJvclN0cjwvYT4gKHZvaWQpPC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmdhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+UmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuICA8YSBocmVmPSIjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08L3RhYmxlPjx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0idmFyLW1lbWJlcnMiPjwvYT4KLVZhcmlhYmxlczwvaDI+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnN0YXRpYyBjb25zdCBpbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTllNjFlN2NkNDdhMTVhMTczMjgzYmE5NGU3ODEzMDhjIj50ak1DVVdpZHRoPC9hPiBbPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj5USl9OVU1TQU1QPC9hPl08L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E5ZTYxZTdjZDQ3YTE1YTE3MzI4M2JhOTRlNzgxMzA4YyI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5NQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICA8YSBocmVmPSIjZ2E5ZTYxZTdjZDQ3YTE1YTE3MzI4M2JhOTRlNzgxMzA4YyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2FiZDI0N2JiOWZlY2IzOTNlY2E1NzM2NmZlYjgzMjdiZiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RhdGljIGNvbnN0IGludCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYmQyNDdiYjlmZWNiMzkzZWNhNTczNjZmZWI4MzI3YmYiPnRqTUNVSGVpZ2h0PC9hPiBbPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj5USl9OVU1TQU1QPC9hPl08L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2FiZDI0N2JiOWZlY2IzOTNlY2E1NzM2NmZlYjgzMjdiZiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5NQ1UgYmxvY2sgaGVpZ2h0IChpbiBwaXhlbHMpIGZvciBhIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiAgPGEgaHJlZj0iI2dhYmQyNDdiYjlmZWNiMzkzZWNhNTczNjZmZWI4MzI3YmYiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYWJkMjQ3YmI5ZmVjYjM5M2VjYTU3MzY2ZmViODMyN2JmIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZGQ5YjQ0Njc0MmFjOGEzOTIzZjc5OTJjNzk4OGZlYTgiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnN0YXRpYyBjb25zdCBpbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWRkOWI0NDY3NDJhYzhhMzkyM2Y3OTkyYzc5ODhmZWE4Ij50alJlZE9mZnNldDwvYT4gWzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYWRkOWI0NDY3NDJhYzhhMzkyM2Y3OTkyYzc5ODhmZWE4Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlJlZCBvZmZzZXQgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuICA8YSBocmVmPSIjZ2FkZDliNDQ2NzQyYWM4YTM5MjNmNzk5MmM3OTg4ZmVhOCI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhZGQ5YjQ0Njc0MmFjOGEzOTIzZjc5OTJjNzk4OGZlYTgiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E4MmQ2ZTM1ZGE0NDExMTJhNDExZGE0MTkyM2MwYmEyZiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RhdGljIGNvbnN0IGludCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODJkNmUzNWRhNDQxMTEyYTQxMWRhNDE5MjNjMGJhMmYiPnRqR3JlZW5PZmZzZXQ8L2E+IFs8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzAxMGE0NDAyZjU0YTQ1YmE4MjJhZDg2NzVhNDY1NWUiPlRKX05VTVBGPC9hPl08L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6Z2E4MmQ2ZTM1ZGE0NDExMTJhNDExZGE0MTkyM2MwYmEyZiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5HcmVlbiBvZmZzZXQgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuICA8YSBocmVmPSIjZ2E4MmQ2ZTM1ZGE0NDExMTJhNDExZGE0MTkyM2MwYmEyZiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhODJkNmUzNWRhNDQxMTEyYTQxMWRhNDE5MjNjMGJhMmYiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06Z2E4NGUyZTM1ZDNmMDgwMjVmOTc2ZWMxZWM1MzY5M2RlYSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+c3RhdGljIGNvbnN0IGludCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODRlMmUzNWQzZjA4MDI1Zjk3NmVjMWVjNTM2OTNkZWEiPnRqQmx1ZU9mZnNldDwvYT4gWzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYTg0ZTJlMzVkM2YwODAyNWY5NzZlYzFlYzUzNjkzZGVhIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkJsdWUgb2Zmc2V0IChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiAgPGEgaHJlZj0iI2dhODRlMmUzNWQzZjA4MDI1Zjk3NmVjMWVjNTM2OTNkZWEiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjpnYTg0ZTJlMzVkM2YwODAyNWY5NzZlYzFlYzUzNjkzZGVhIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmdhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPnN0YXRpYyBjb25zdCBpbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIj50alBpeGVsU2l6ZTwvYT4gWzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzpnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuICA8YSBocmVmPSIjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmdhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08L3RhYmxlPgotPGEgbmFtZT0iZGV0YWlscyIgaWQ9ImRldGFpbHMiPjwvYT48aDIgY2xhc3M9Imdyb3VwaGVhZGVyIj5EZXRhaWxlZCBEZXNjcmlwdGlvbjwvaDI+Ci08cD5UdXJib0pQRUcgQVBJLiA8L3A+Ci08cD5UaGlzIEFQSSBwcm92aWRlcyBhbiBpbnRlcmZhY2UgZm9yIGdlbmVyYXRpbmcsIGRlY29kaW5nLCBhbmQgdHJhbnNmb3JtaW5nIHBsYW5hciBZVVYgYW5kIEpQRUcgaW1hZ2VzIGluIG1lbW9yeS48L3A+Ci08cD48YSBjbGFzcz0iYW5jaG9yIiBpZD0iWVVWbm90ZXMiPjwvYT48L3A+Ci08aDI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvaDI+Ci08cD5UZWNobmljYWxseSwgdGhlIEpQRUcgZm9ybWF0IHVzZXMgdGhlIFlDYkNyIGNvbG9yc3BhY2UgKHdoaWNoIGlzIHRlY2huaWNhbGx5IG5vdCBhIGNvbG9yc3BhY2UgYnV0IGEgY29sb3IgdHJhbnNmb3JtKSwgYnV0IHBlciB0aGUgY29udmVudGlvbiBvZiB0aGUgZGlnaXRhbCB2aWRlbyBjb21tdW5pdHksIHRoZSBUdXJib0pQRUcgQVBJIHVzZXMgIllVViIgdG8gcmVmZXIgdG8gYW4gaW1hZ2UgZm9ybWF0IGNvbnNpc3Rpbmcgb2YgWSwgQ2IsIGFuZCBDciBpbWFnZSBwbGFuZXMuPC9wPgotPHA+RWFjaCBwbGFuZSBpcyBzaW1wbHkgYSAyRCBhcnJheSBvZiBieXRlcywgZWFjaCBieXRlIHJlcHJlc2VudGluZyB0aGUgdmFsdWUgb2Ygb25lIG9mIHRoZSBjb21wb25lbnRzIChZLCBDYiwgb3IgQ3IpIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbiBpbiB0aGUgaW1hZ2UuIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGVhY2ggcGxhbmUgYXJlIGRldGVybWluZWQgYnkgdGhlIGltYWdlIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gVGhlIGx1bWluYW5jZSBwbGFuZSB3aWR0aCBpcyB0aGUgaW1hZ2Ugd2lkdGggcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoZSBob3Jpem9udGFsIHN1YnNhbXBsaW5nIGZhY3RvciAoMiBpbiB0aGUgY2FzZSBvZiA0OjI6MCBhbmQgNDoyOjIsIDQgaW4gdGhlIGNhc2Ugb2YgNDoxOjEsIDEgaW4gdGhlIGNhc2Ugb2YgNDo0OjQgb3IgZ3JheXNjYWxlLikgU2ltaWxhcmx5LCB0aGUgbHVtaW5hbmNlIHBsYW5lIGhlaWdodCBpcyB0aGUgaW1hZ2UgaGVpZ2h0IHBhZGRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiB0aGUgdmVydGljYWwgc3Vic2FtcGxpbmcgZmFjdG9yICgyIGluIHRoZSBjYXNlIG9mIDQ6MjowIG9yIDQ6NDowLCAxIGluIHRoZSBjYXNlIG9mIDQ6NDo0IG9yIGdyYXlzY2FsZS4pIFRoaXMgaXMgaXJyZXNwZWN0aXZlIG9mIGFueSBhZGRpdGlvbmFsIHBhZGRpbmcgdGhhdCBtYXkgYmUgc3BlY2lmaWVkIGFzIGFuIGFyZ3VtZW50IHRvIHRoZSB2YXJpb3VzIFlVViBmdW5jdGlvbnMuIFRoZSBjaHJvbWluYW5jZSBwbGFuZSB3aWR0aCBpcyBlcXVhbCB0byB0aGUgbHVtaW5hbmNlIHBsYW5lIHdpZHRoIGRpdmlkZWQgYnkgdGhlIGhvcml6b250YWwgc3Vic2FtcGxpbmcgZmFjdG9yLCBhbmQgdGhlIGNocm9taW5hbmNlIHBsYW5lIGhlaWdodCBpcyBlcXVhbCB0byB0aGUgbHVtaW5hbmNlIHBsYW5lIGhlaWdodCBkaXZpZGVkIGJ5IHRoZSB2ZXJ0aWNhbCBzdWJzYW1wbGluZyBmYWN0b3IuPC9wPgotPHA+Rm9yIGV4YW1wbGUsIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgMzUgeCAzNSBwaXhlbHMgYW5kIDQ6MjoyIHN1YnNhbXBsaW5nIGlzIHVzZWQsIHRoZW4gdGhlIGx1bWluYW5jZSBwbGFuZSB3b3VsZCBiZSAzNiB4IDM1IGJ5dGVzLCBhbmQgZWFjaCBvZiB0aGUgY2hyb21pbmFuY2UgcGxhbmVzIHdvdWxkIGJlIDE4IHggMzUgYnl0ZXMuIElmIHlvdSBzcGVjaWZ5IGEgbGluZSBwYWRkaW5nIG9mIDQgYnl0ZXMgb24gdG9wIG9mIHRoaXMsIHRoZW4gdGhlIGx1bWluYW5jZSBwbGFuZSB3b3VsZCBiZSAzNiB4IDM1IGJ5dGVzLCBhbmQgZWFjaCBvZiB0aGUgY2hyb21pbmFuY2UgcGxhbmVzIHdvdWxkIGJlIDIwIHggMzUgYnl0ZXMuIDwvcD4KLTxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPk1hY3JvIERlZmluaXRpb24gRG9jdW1lbnRhdGlvbjwvaDI+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2EzOWY1N2E2ZmIwMmQ5Y2YzMmU3YjY4OTAwOTliNWE3MSI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj4jZGVmaW5lIFRKX05VTUNTPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgbnVtYmVyIG9mIEpQRUcgY29sb3JzcGFjZXMuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTcwMTBhNDQwMmY1NGE0NWJhODIyYWQ4Njc1YTQ2NTVlIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPiNkZWZpbmUgVEpfTlVNUEY8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlRoZSBudW1iZXIgb2YgcGl4ZWwgZm9ybWF0cy4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNWVmM2QxNjkxNjJjZTc3Y2UzNDhlMjkyYTBiNzQ3N2MiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSl9OVU1TQU1QPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgbnVtYmVyIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIG9wdGlvbnMuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTBmNmRiZDE4YWRmMzhiN2Q0NmFjNTQ3ZjBmNGQ1NjJjIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPiNkZWZpbmUgVEpfTlVNWE9QPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgbnVtYmVyIG9mIHRyYW5zZm9ybSBvcGVyYXRpb25zLiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2FjYjIzM2NmZDcyMmQ2NmQxY2NiZjQ4YTdkZTgxZjBlMCI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj4jZGVmaW5lIFRKRkxBR19BQ0NVUkFURURDVDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VXNlIHRoZSBtb3N0IGFjY3VyYXRlIERDVC9JRENUIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMuIDwvcD4KLTxwPlRoZSBkZWZhdWx0IGlmIHRoaXMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkIGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiBGb3IgZXhhbXBsZSwgdGhlIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBmb3IgbGlianBlZ1stdHVyYm9dIHVzZXMgdGhlIGZhc3QgYWxnb3JpdGhtIGJ5IGRlZmF1bHQgd2hlbiBjb21wcmVzc2luZywgYmVjYXVzZSB0aGlzIGhhcyBiZWVuIHNob3duIHRvIGhhdmUgb25seSBhIHZlcnkgc2xpZ2h0IGVmZmVjdCBvbiBhY2N1cmFjeSwgYnV0IGl0IHVzZXMgdGhlIGFjY3VyYXRlIGFsZ29yaXRobSB3aGVuIGRlY29tcHJlc3NpbmcsIGJlY2F1c2UgdGhpcyBoYXMgYmVlbiBzaG93biB0byBoYXZlIGEgbGFyZ2VyIGVmZmVjdC4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNzJlY2Y0ZWJlNmViNzAyZDNjNmY1Y2EyNzQ1NWUxZWMiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSkZMQUdfQk9UVE9NVVA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlRoZSB1bmNvbXByZXNzZWQgc291cmNlL2Rlc3RpbmF0aW9uIGltYWdlIGlzIHN0b3JlZCBpbiBib3R0b20tdXAgKFdpbmRvd3MsIE9wZW5HTCkgb3JkZXIsIG5vdCB0b3AtZG93biAoWDExKSBvcmRlci4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhYWJjZTIzNWRiODBkM2Y2OThiMjdmMzZjYmQ0NTNkYTIiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSkZMQUdfRkFTVERDVDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VXNlIHRoZSBmYXN0ZXN0IERDVC9JRENUIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMuIDwvcD4KLTxwPlRoZSBkZWZhdWx0IGlmIHRoaXMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkIGlzIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiBGb3IgZXhhbXBsZSwgdGhlIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBmb3IgbGlianBlZ1stdHVyYm9dIHVzZXMgdGhlIGZhc3QgYWxnb3JpdGhtIGJ5IGRlZmF1bHQgd2hlbiBjb21wcmVzc2luZywgYmVjYXVzZSB0aGlzIGhhcyBiZWVuIHNob3duIHRvIGhhdmUgb25seSBhIHZlcnkgc2xpZ2h0IGVmZmVjdCBvbiBhY2N1cmFjeSwgYnV0IGl0IHVzZXMgdGhlIGFjY3VyYXRlIGFsZ29yaXRobSB3aGVuIGRlY29tcHJlc3NpbmcsIGJlY2F1c2UgdGhpcyBoYXMgYmVlbiBzaG93biB0byBoYXZlIGEgbGFyZ2VyIGVmZmVjdC4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNGVlNDUwNmM4MTE3N2EwNmY3N2UyNTA0YTIyZWZkMmQiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSkZMQUdfRkFTVFVQU0FNUExFPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5XaGVuIGRlY29tcHJlc3NpbmcgYW4gaW1hZ2UgdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyBjaHJvbWluYW5jZSBzdWJzYW1wbGluZywgdXNlIHRoZSBmYXN0ZXN0IGNocm9taW5hbmNlIHVwc2FtcGxpbmcgYWxnb3JpdGhtIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBjb2RlYy4gPC9wPgotPHA+VGhlIGRlZmF1bHQgaXMgdG8gdXNlIHNtb290aCB1cHNhbXBsaW5nLCB3aGljaCBjcmVhdGVzIGEgc21vb3RoIHRyYW5zaXRpb24gYmV0d2VlbiBuZWlnaGJvcmluZyBjaHJvbWluYW5jZSBjb21wb25lbnRzIGluIG9yZGVyIHRvIHJlZHVjZSB1cHNhbXBsaW5nIGFydGlmYWN0cyBpbiB0aGUgZGVjb21wcmVzc2VkIGltYWdlLiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2E4ODA4ZDQwM2M2OGI2MmFhYTU4YTRjMWU1OGU5ODk2MyI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj4jZGVmaW5lIFRKRkxBR19OT1JFQUxMT0M8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkRpc2FibGUgYnVmZmVyIChyZSlhbGxvY2F0aW9uLiA8L3A+Ci08cD5JZiBwYXNzZWQgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWYzOGYyZWQ0NGJkYzg4ZTczMGUwOGI2MzJmYTZlODhlIiB0aXRsZT0iQ29tcHJlc3MgYW4gUkdCLCBncmF5c2NhbGUsIG9yIENNWUsgaW1hZ2UgaW50byBhIEpQRUcgaW1hZ2UuIj50akNvbXByZXNzMigpPC9hPiBvciA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPiwgdGhpcyBmbGFnIHdpbGwgY2F1c2UgdGhvc2UgZnVuY3Rpb25zIHRvIGdlbmVyYXRlIGFuIGVycm9yIGlmIHRoZSBKUEVHIGltYWdlIGJ1ZmZlciBpcyBpbnZhbGlkIG9yIHRvbyBzbWFsbCByYXRoZXIgdGhhbiBhdHRlbXB0aW5nIHRvIGFsbG9jYXRlIG9yIHJlYWxsb2NhdGUgdGhhdCBidWZmZXIuIFRoaXMgcmVwcm9kdWNlcyB0aGUgYmVoYXZpb3Igb2YgZWFybGllciB2ZXJzaW9ucyBvZiBUdXJib0pQRUcuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTBhYmE5NTU0NzMzMTVlNDA1Mjk1ZDk3OGYwYzE2NTExIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPiNkZWZpbmUgVEpQQUQ8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5QYWQgdGhlIGdpdmVuIHdpZHRoIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeS4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhODQ4NzhiYjY1NDA0MjA0NzQzYWExOGNhYzAyNzgxZGYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSlNDQUxFRDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kaW1lbnNpb24sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zY2FsaW5nRmFjdG9yJiMxNjA7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD48dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5Db21wdXRlIHRoZSBzY2FsZWQgdmFsdWUgb2YgPGNvZGU+ZGltZW5zaW9uPC9jb2RlPiB1c2luZyB0aGUgZ2l2ZW4gc2NhbGluZyBmYWN0b3IuIDwvcD4KLTxwPlRoaXMgbWFjcm8gcGVyZm9ybXMgdGhlIGludGVnZXIgZXF1aXZhbGVudCBvZiA8Y29kZT5jZWlsKGRpbWVuc2lvbiAqIHNjYWxpbmdGYWN0b3IpPC9jb2RlPi4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhOWM3NzFhNzU3ZmMxMjk0YWRkNjExOTA2Yjg5YWIyZDIiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSlhPUFRfQ1JPUDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhpcyBvcHRpb24gd2lsbCBlbmFibGUgbG9zc2xlc3MgY3JvcHBpbmcuIDwvcD4KLTxwPlNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhM2FjZWU3YjQ4YWRlMWI5OWU1NTg4NzM2MDA3YzI1ODkiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSlhPUFRfR1JBWTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhpcyBvcHRpb24gd2lsbCBkaXNjYXJkIHRoZSBjb2xvciBkYXRhIGluIHRoZSBpbnB1dCBpbWFnZSBhbmQgcHJvZHVjZSBhIGdyYXlzY2FsZSBvdXRwdXQgaW1hZ2UuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWZiZjk5MmJiZjZlMDA2NzA1ODg2MzMzNzAzZmZhYjMxIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPiNkZWZpbmUgVEpYT1BUX05PT1VUUFVUPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGlzIG9wdGlvbiB3aWxsIHByZXZlbnQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQwMmNkNDJiNjlmMTkzYTA2MjNhOWM4MDE3ODhkZjNhIiB0aXRsZT0iTG9zc2xlc3NseSB0cmFuc2Zvcm0gYSBKUEVHIGltYWdlIGludG8gYW5vdGhlciBKUEVHIGltYWdlLiI+dGpUcmFuc2Zvcm0oKTwvYT4gZnJvbSBvdXRwdXR0aW5nIGEgSlBFRyBpbWFnZSBmb3IgdGhpcyBwYXJ0aWN1bGFyIHRyYW5zZm9ybSAodGhpcyBjYW4gYmUgdXNlZCBpbiBjb25qdW5jdGlvbiB3aXRoIGEgY3VzdG9tIGZpbHRlciB0byBjYXB0dXJlIHRoZSB0cmFuc2Zvcm1lZCBEQ1QgY29lZmZpY2llbnRzIHdpdGhvdXQgdHJhbnNjb2RpbmcgdGhlbS4pIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPiNkZWZpbmUgVEpYT1BUX1BFUkZFQ1Q8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlRoaXMgb3B0aW9uIHdpbGwgY2F1c2UgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQwMmNkNDJiNjlmMTkzYTA2MjNhOWM4MDE3ODhkZjNhIiB0aXRsZT0iTG9zc2xlc3NseSB0cmFuc2Zvcm0gYSBKUEVHIGltYWdlIGludG8gYW5vdGhlciBKUEVHIGltYWdlLiI+dGpUcmFuc2Zvcm0oKTwvYT4gdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB0cmFuc2Zvcm0gaXMgbm90IHBlcmZlY3QuIDwvcD4KLTxwPkxvc3NsZXNzIHRyYW5zZm9ybXMgb3BlcmF0ZSBvbiBNQ1UgYmxvY2tzLCB3aG9zZSBzaXplIGRlcGVuZHMgb24gdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiIHRpdGxlPSJNQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVVdpZHRoPC9hPiBhbmQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWJkMjQ3YmI5ZmVjYjM5M2VjYTU3MzY2ZmViODMyN2JmIiB0aXRsZT0iTUNVIGJsb2NrIGhlaWdodCAoaW4gcGl4ZWxzKSBmb3IgYSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4iPnRqTUNVSGVpZ2h0PC9hPi4pIElmIHRoZSBpbWFnZSdzIHdpZHRoIG9yIGhlaWdodCBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIHNpemUsIHRoZW4gdGhlcmUgd2lsbCBiZSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlIHJpZ2h0IGFuZC9vciBib3R0b20gZWRnZXMuIEl0IGlzIG5vdCBwb3NzaWJsZSB0byBtb3ZlIHRoZXNlIHBhcnRpYWwgTUNVIGJsb2NrcyB0byB0aGUgdG9wIG9yIGxlZnQgb2YgdGhlIGltYWdlLCBzbyBhbnkgdHJhbnNmb3JtIHRoYXQgd291bGQgcmVxdWlyZSB0aGF0IGlzICJpbXBlcmZlY3QuIiBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGFueSBwYXJ0aWFsIE1DVSBibG9ja3MgdGhhdCBjYW5ub3QgYmUgdHJhbnNmb3JtZWQgd2lsbCBiZSBsZWZ0IGluIHBsYWNlLCB3aGljaCB3aWxsIGNyZWF0ZSBvZGQtbG9va2luZyBzdHJpcHMgb24gdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIG9mIHRoZSBpbWFnZS4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhMzE5ODI2YjdlYjE1ODNjMDU5NWJiZTdiOTU0Mjg3MDkiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+I2RlZmluZSBUSlhPUFRfVFJJTTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhpcyBvcHRpb24gd2lsbCBjYXVzZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPiB0byBkaXNjYXJkIGFueSBwYXJ0aWFsIE1DVSBibG9ja3MgdGhhdCBjYW5ub3QgYmUgdHJhbnNmb3JtZWQuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPlR5cGVkZWYgRG9jdW1lbnRhdGlvbjwvaDI+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj50eXBlZGVmIHZvaWQqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UdXJib0pQRUcgaW5zdGFuY2UgaGFuZGxlLiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2FhMjlmMzE4OWM0MWJlMTJlYzVkZWU3Y2FlYzMxOGEzMSI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj50eXBlZGVmIHN0cnVjdCA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiPnRqdHJhbnNmb3JtPC9hPiAgPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sIj50anRyYW5zZm9ybTwvYT48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkxvc3NsZXNzIHRyYW5zZm9ybS4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGgyIGNsYXNzPSJncm91cGhlYWRlciI+RW51bWVyYXRpb24gVHlwZSBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmVudW0gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwIj5USkNTPC9hPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+SlBFRyBjb2xvcnNwYWNlcy4gPC9wPgotPHRhYmxlIGNsYXNzPSJmaWVsZHRhYmxlIj4KLTx0cj48dGggY29sc3Bhbj0iMiI+RW51bWVyYXRvcjwvdGg+PC90cj48dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNjc3Y2I3Y2NiODVjNDAzOGFjNDE5NjRhMmUwOWU1NTUiPjwvYT5USkNTX1JHQjwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPlJHQiBjb2xvcnNwYWNlLiA8L3A+Ci08cD5XaGVuIGNvbXByZXNzaW5nIHRoZSBKUEVHIGltYWdlLCB0aGUgUiwgRywgYW5kIEIgY29tcG9uZW50cyBpbiB0aGUgc291cmNlIGltYWdlIGFyZSByZW9yZGVyZWQgaW50byBpbWFnZSBwbGFuZXMsIGJ1dCBubyBjb2xvcnNwYWNlIGNvbnZlcnNpb24gb3Igc3Vic2FtcGxpbmcgaXMgcGVyZm9ybWVkLiBSR0IgSlBFRyBpbWFnZXMgY2FuIGJlIGRlY29tcHJlc3NlZCB0byBhbnkgb2YgdGhlIGV4dGVuZGVkIFJHQiBwaXhlbCBmb3JtYXRzIG9yIGdyYXlzY2FsZSwgYnV0IHRoZXkgY2Fubm90IGJlIGRlY29tcHJlc3NlZCB0byBZVVYgaW1hZ2VzLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNzM4OWI4ZjY1YmIzODdmZmVkY2UzZWZkMGQ3OGVjNzUiPjwvYT5USkNTX1lDYkNyPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+WUNiQ3IgY29sb3JzcGFjZS4gPC9wPgotPHA+WUNiQ3IgaXMgbm90IGFuIGFic29sdXRlIGNvbG9yc3BhY2UgYnV0IHJhdGhlciBhIG1hdGhlbWF0aWNhbCB0cmFuc2Zvcm1hdGlvbiBvZiBSR0IgZGVzaWduZWQgc29sZWx5IGZvciBzdG9yYWdlIGFuZCB0cmFuc21pc3Npb24uIFlDYkNyIGltYWdlcyBtdXN0IGJlIGNvbnZlcnRlZCB0byBSR0IgYmVmb3JlIHRoZXkgY2FuIGFjdHVhbGx5IGJlIGRpc3BsYXllZC4gSW4gdGhlIFlDYkNyIGNvbG9yc3BhY2UsIHRoZSBZIChsdW1pbmFuY2UpIGNvbXBvbmVudCByZXByZXNlbnRzIHRoZSBibGFjayAmYW1wOyB3aGl0ZSBwb3J0aW9uIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSwgYW5kIHRoZSBDYiBhbmQgQ3IgKGNocm9taW5hbmNlKSBjb21wb25lbnRzIHJlcHJlc2VudCB0aGUgY29sb3IgcG9ydGlvbiBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UuIE9yaWdpbmFsbHksIHRoZSBhbmFsb2cgZXF1aXZhbGVudCBvZiB0aGlzIHRyYW5zZm9ybWF0aW9uIGFsbG93ZWQgdGhlIHNhbWUgc2lnbmFsIHRvIGRyaXZlIGJvdGggYmxhY2sgJmFtcDsgd2hpdGUgYW5kIGNvbG9yIHRlbGV2aXNpb25zLCBidXQgSlBFRyBpbWFnZXMgdXNlIFlDYkNyIHByaW1hcmlseSBiZWNhdXNlIGl0IGFsbG93cyB0aGUgY29sb3IgZGF0YSB0byBiZSBvcHRpb25hbGx5IHN1YnNhbXBsZWQgZm9yIHRoZSBwdXJwb3NlcyBvZiByZWR1Y2luZyBiYW5kd2lkdGggb3IgZGlzayBzcGFjZS4gWUNiQ3IgaXMgdGhlIG1vc3QgY29tbW9uIEpQRUcgY29sb3JzcGFjZSwgYW5kIFlDYkNyIEpQRUcgaW1hZ2VzIGNhbiBiZSBjb21wcmVzc2VkIGZyb20gYW5kIGRlY29tcHJlc3NlZCB0byBhbnkgb2YgdGhlIGV4dGVuZGVkIFJHQiBwaXhlbCBmb3JtYXRzIG9yIGdyYXlzY2FsZSwgb3IgdGhleSBjYW4gYmUgZGVjb21wcmVzc2VkIHRvIFlVViBwbGFuYXIgaW1hZ2VzLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhYjNlN2Q2YTg3ZjY5NWU0NWI4MWMxYjUyNjJiNWE1MGEiPjwvYT5USkNTX0dSQVk8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5HcmF5c2NhbGUgY29sb3JzcGFjZS4gPC9wPgotPHA+VGhlIEpQRUcgaW1hZ2UgcmV0YWlucyBvbmx5IHRoZSBsdW1pbmFuY2UgZGF0YSAoWSBjb21wb25lbnQpLCBhbmQgYW55IGNvbG9yIGRhdGEgZnJvbSB0aGUgc291cmNlIGltYWdlIGlzIGRpc2NhcmRlZC4gR3JheXNjYWxlIEpQRUcgaW1hZ2VzIGNhbiBiZSBjb21wcmVzc2VkIGZyb20gYW5kIGRlY29tcHJlc3NlZCB0byBhbnkgb2YgdGhlIGV4dGVuZGVkIFJHQiBwaXhlbCBmb3JtYXRzIG9yIGdyYXlzY2FsZSwgb3IgdGhleSBjYW4gYmUgZGVjb21wcmVzc2VkIHRvIFlVViBwbGFuYXIgaW1hZ2VzLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNmM4YjYzNjE1MmFjODE5NWI4Njk1ODdkYjMxNWVlNTMiPjwvYT5USkNTX0NNWUs8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5DTVlLIGNvbG9yc3BhY2UuIDwvcD4KLTxwPldoZW4gY29tcHJlc3NpbmcgdGhlIEpQRUcgaW1hZ2UsIHRoZSBDLCBNLCBZLCBhbmQgSyBjb21wb25lbnRzIGluIHRoZSBzb3VyY2UgaW1hZ2UgYXJlIHJlb3JkZXJlZCBpbnRvIGltYWdlIHBsYW5lcywgYnV0IG5vIGNvbG9yc3BhY2UgY29udmVyc2lvbiBvciBzdWJzYW1wbGluZyBpcyBwZXJmb3JtZWQuIENNWUsgSlBFRyBpbWFnZXMgY2FuIG9ubHkgYmUgZGVjb21wcmVzc2VkIHRvIENNWUsgcGl4ZWxzLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNTM4MzllMGZlODY3Yjc2YjU4ZDE2YjBhMWE3YzU5OGUiPjwvYT5USkNTX1lDQ0s8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5ZQ0NLIGNvbG9yc3BhY2UuIDwvcD4KLTxwPllDQ0sgKEFLQSAiWUNiQ3JLIikgaXMgbm90IGFuIGFic29sdXRlIGNvbG9yc3BhY2UgYnV0IHJhdGhlciBhIG1hdGhlbWF0aWNhbCB0cmFuc2Zvcm1hdGlvbiBvZiBDTVlLIGRlc2lnbmVkIHNvbGVseSBmb3Igc3RvcmFnZSBhbmQgdHJhbnNtaXNzaW9uLiBJdCBpcyB0byBDTVlLIGFzIFlDYkNyIGlzIHRvIFJHQi4gQ01ZSyBwaXhlbHMgY2FuIGJlIHJldmVyc2libHkgdHJhbnNmb3JtZWQgaW50byBZQ0NLLCBhbmQgYXMgd2l0aCBZQ2JDciwgdGhlIGNocm9taW5hbmNlIGNvbXBvbmVudHMgaW4gdGhlIFlDQ0sgcGl4ZWxzIGNhbiBiZSBzdWJzYW1wbGVkIHdpdGhvdXQgaW5jdXJyaW5nIG1ham9yIHBlcmNlcHR1YWwgbG9zcy4gWUNDSyBKUEVHIGltYWdlcyBjYW4gb25seSBiZSBjb21wcmVzc2VkIGZyb20gYW5kIGRlY29tcHJlc3NlZCB0byBDTVlLIHBpeGVscy4gPC9wPgotPC90ZD48L3RyPgotPC90YWJsZT4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmVudW0gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj5USlBGPC9hPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+UGl4ZWwgZm9ybWF0cy4gPC9wPgotPHRhYmxlIGNsYXNzPSJmaWVsZHRhYmxlIj4KLTx0cj48dGggY29sc3Bhbj0iMiI+RW51bWVyYXRvcjwvdGg+PC90cj48dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhN2NlOTMyMzBiZmY0NDk1MThjZTM4N2MxN2U2ZWQzN2MiPjwvYT5USlBGX1JHQjwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPlJHQiBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUgc3RvcmVkIGluIDMtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBieXRlIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFiMTA2MjQ0MzdmYjhlZjQ5NWEwYjE1M2U2NTc0OTgzOSI+PC9hPlRKUEZfQkdSPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+QkdSIHBpeGVsIGZvcm1hdC4gPC9wPgotPHA+VGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gdGhlIGltYWdlIGFyZSBzdG9yZWQgaW4gMy1ieXRlIHBpeGVscyBpbiB0aGUgb3JkZXIgQiwgRywgUiBmcm9tIGxvd2VzdCB0byBoaWdoZXN0IGJ5dGUgYWRkcmVzcyB3aXRoaW4gZWFjaCBwaXhlbC4gPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTgzOTczYmViYjdlMmRjNmZhOGJhZTg5ZmYzZjQyZTAxIj48L2E+VEpQRl9SR0JYPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+UkdCWCBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUgc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBieXRlIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuIFRoZSBYIGNvbXBvbmVudCBpcyBpZ25vcmVkIHdoZW4gY29tcHJlc3NpbmcgYW5kIHVuZGVmaW5lZCB3aGVuIGRlY29tcHJlc3NpbmcuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWEyYTFmYmY1NjljYTc5ODk3ZWFlODg2ZTMzNzZjYTRjOCI+PC9hPlRKUEZfQkdSWDwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPkJHUlggcGl4ZWwgZm9ybWF0LiA8L3A+Ci08cD5UaGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBpbiB0aGUgaW1hZ2UgYXJlIHN0b3JlZCBpbiA0LWJ5dGUgcGl4ZWxzIGluIHRoZSBvcmRlciBCLCBHLCBSIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgYnl0ZSBhZGRyZXNzIHdpdGhpbiBlYWNoIHBpeGVsLiBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhZjY2MDNiMjcxNDdkZTQ3ZTIxMmU3NWRhYzAyN2IyYWYiPjwvYT5USlBGX1hCR1I8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5YQkdSIHBpeGVsIGZvcm1hdC4gPC9wPgotPHA+VGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gdGhlIGltYWdlIGFyZSBzdG9yZWQgaW4gNC1ieXRlIHBpeGVscyBpbiB0aGUgb3JkZXIgUiwgRywgQiBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0IGJ5dGUgYWRkcmVzcyB3aXRoaW4gZWFjaCBwaXhlbC4gVGhlIFggY29tcG9uZW50IGlzIGlnbm9yZWQgd2hlbiBjb21wcmVzc2luZyBhbmQgdW5kZWZpbmVkIHdoZW4gZGVjb21wcmVzc2luZy4gPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYWRhZTk5NjkwNWVmY2ZhM2I0MmEwYmIzYmVhN2Y5ZDg0Ij48L2E+VEpQRl9YUkdCPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+WFJHQiBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUgc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIEIsIEcsIFIgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBieXRlIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuIFRoZSBYIGNvbXBvbmVudCBpcyBpZ25vcmVkIHdoZW4gY29tcHJlc3NpbmcgYW5kIHVuZGVmaW5lZCB3aGVuIGRlY29tcHJlc3NpbmcuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWE1NDMxYjU0YjAxNTMzNzcwNWYxMzExODA3MzcxMWExYSI+PC9hPlRKUEZfR1JBWTwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPkdyYXlzY2FsZSBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPkVhY2ggMS1ieXRlIHBpeGVsIHJlcHJlc2VudHMgYSBsdW1pbmFuY2UgKGJyaWdodG5lc3MpIGxldmVsIGZyb20gMCB0byAyNTUuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWE4OGQyZTg4ZmFiNjdmNjUwM2NmOTcyZTE0ODUxY2MxMiI+PC9hPlRKUEZfUkdCQTwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPlJHQkEgcGl4ZWwgZm9ybWF0LiA8L3A+Ci08cD5UaGlzIGlzIHRoZSBzYW1lIGFzIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhODM5NzNiZWJiN2UyZGM2ZmE4YmFlODlmZjNmNDJlMDEiPlRKUEZfUkdCWDwvYT4sIGV4Y2VwdCB0aGF0IHdoZW4gZGVjb21wcmVzc2luZywgdGhlIFggY29tcG9uZW50IGlzIGd1YXJhbnRlZWQgdG8gYmUgMHhGRiwgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGFzIGFuIG9wYXF1ZSBhbHBoYSBjaGFubmVsLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhYzAzN2ZmMTg0NWNmOWI3NGJiODFhMzY1OWMyYjlmYjQiPjwvYT5USlBGX0JHUkE8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5CR1JBIHBpeGVsIGZvcm1hdC4gPC9wPgotPHA+VGhpcyBpcyB0aGUgc2FtZSBhcyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTJhMWZiZjU2OWNhNzk4OTdlYWU4ODZlMzM3NmNhNGM4Ij5USlBGX0JHUlg8L2E+LCBleGNlcHQgdGhhdCB3aGVuIGRlY29tcHJlc3NpbmcsIHRoZSBYIGNvbXBvbmVudCBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZSBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC4gPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTFiYTFhN2YxNjMxZGJlYWE0OWEwYTg1ZmM0YTQwMDgxIj48L2E+VEpQRl9BQkdSPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+QUJHUiBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoaXMgaXMgdGhlIHNhbWUgYXMgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFmNjYwM2IyNzE0N2RlNDdlMjEyZTc1ZGFjMDI3YjJhZiI+VEpQRl9YQkdSPC9hPiwgZXhjZXB0IHRoYXQgd2hlbiBkZWNvbXByZXNzaW5nLCB0aGUgWCBjb21wb25lbnQgaXMgZ3VhcmFudGVlZCB0byBiZSAweEZGLCB3aGljaCBjYW4gYmUgaW50ZXJwcmV0ZWQgYXMgYW4gb3BhcXVlIGFscGhhIGNoYW5uZWwuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFlOGY4NDZlZDlkOWRlOTliNmUxZGZlNDQ4ODQ4NzY1YyI+PC9hPlRKUEZfQVJHQjwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPkFSR0IgcGl4ZWwgZm9ybWF0LiA8L3A+Ci08cD5UaGlzIGlzIHRoZSBzYW1lIGFzIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhZGFlOTk2OTA1ZWZjZmEzYjQyYTBiYjNiZWE3ZjlkODQiPlRKUEZfWFJHQjwvYT4sIGV4Y2VwdCB0aGF0IHdoZW4gZGVjb21wcmVzc2luZywgdGhlIFggY29tcG9uZW50IGlzIGd1YXJhbnRlZWQgdG8gYmUgMHhGRiwgd2hpY2ggY2FuIGJlIGludGVycHJldGVkIGFzIGFuIG9wYXF1ZSBhbHBoYSBjaGFubmVsLiA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhN2Y1MTAwZWM0NGM5MTk5NGUyNDNmMWNmNTU1NTNmOGIiPjwvYT5USlBGX0NNWUs8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5DTVlLIHBpeGVsIGZvcm1hdC4gPC9wPgotPHA+VW5saWtlIFJHQiwgd2hpY2ggaXMgYW4gYWRkaXRpdmUgY29sb3IgbW9kZWwgdXNlZCBwcmltYXJpbHkgZm9yIGRpc3BsYXksIENNWUsgKEN5YW4vTWFnZW50YS9ZZWxsb3cvS2V5KSBpcyBhIHN1YnRyYWN0aXZlIGNvbG9yIG1vZGVsIHVzZWQgcHJpbWFyaWx5IGZvciBwcmludGluZy4gSW4gdGhlIENNWUsgY29sb3IgbW9kZWwsIHRoZSB2YWx1ZSBvZiBlYWNoIGNvbG9yIGNvbXBvbmVudCB0eXBpY2FsbHkgY29ycmVzcG9uZHMgdG8gYW4gYW1vdW50IG9mIGN5YW4sIG1hZ2VudGEsIHllbGxvdywgb3IgYmxhY2sgaW5rIHRoYXQgaXMgYXBwbGllZCB0byBhIHdoaXRlIGJhY2tncm91bmQuIEluIG9yZGVyIHRvIGNvbnZlcnQgYmV0d2VlbiBDTVlLIGFuZCBSR0IsIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYSBjb2xvciBtYW5hZ2VtZW50IHN5c3RlbSAoQ01TLikgQSBDTVMgd2lsbCBhdHRlbXB0IHRvIG1hcCBjb2xvcnMgd2l0aGluIHRoZSBwcmludGVyJ3MgZ2FtdXQgdG8gcGVyY2VwdHVhbGx5IHNpbWlsYXIgY29sb3JzIGluIHRoZSBkaXNwbGF5J3MgZ2FtdXQgYW5kIHZpY2UgdmVyc2EsIGJ1dCB0aGUgbWFwcGluZyBpcyB0eXBpY2FsbHkgbm90IDE6MSBvciByZXZlcnNpYmxlLCBub3IgY2FuIGl0IGJlIGRlZmluZWQgd2l0aCBhIHNpbXBsZSBmb3JtdWxhLiBUaHVzLCBzdWNoIGEgY29udmVyc2lvbiBpcyBvdXQgb2Ygc2NvcGUgZm9yIGEgY29kZWMgbGlicmFyeS4gSG93ZXZlciwgdGhlIFR1cmJvSlBFRyBBUEkgYWxsb3dzIGZvciBjb21wcmVzc2luZyBDTVlLIHBpeGVscyBpbnRvIGEgWUNDSyBKUEVHIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE1MzgzOWUwZmU4NjdiNzZiNThkMTZiMGExYTdjNTk4ZSIgdGl0bGU9IllDQ0sgY29sb3JzcGFjZS4iPlRKQ1NfWUNDSzwvYT4pIGFuZCBkZWNvbXByZXNzaW5nIFlDQ0sgSlBFRyBpbWFnZXMgaW50byBDTVlLIHBpeGVscy4gPC9wPgotPC90ZD48L3RyPgotPC90YWJsZT4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmVudW0gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5USlNBTVA8L2E+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zLiA8L3A+Ci08cD5XaGVuIHBpeGVscyBhcmUgY29udmVydGVkIGZyb20gUkdCIHRvIFlDYkNyIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE3Mzg5YjhmNjViYjM4N2ZmZWRjZTNlZmQwZDc4ZWM3NSIgdGl0bGU9IllDYkNyIGNvbG9yc3BhY2UuIj5USkNTX1lDYkNyPC9hPikgb3IgZnJvbSBDTVlLIHRvIFlDQ0sgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYTUzODM5ZTBmZTg2N2I3NmI1OGQxNmIwYTFhN2M1OThlIiB0aXRsZT0iWUNDSyBjb2xvcnNwYWNlLiI+VEpDU19ZQ0NLPC9hPikgYXMgcGFydCBvZiB0aGUgSlBFRyBjb21wcmVzc2lvbiBwcm9jZXNzLCBzb21lIG9mIHRoZSBDYiBhbmQgQ3IgKGNocm9taW5hbmNlKSBjb21wb25lbnRzIGNhbiBiZSBkaXNjYXJkZWQgb3IgYXZlcmFnZWQgdG9nZXRoZXIgdG8gcHJvZHVjZSBhIHNtYWxsZXIgaW1hZ2Ugd2l0aCBsaXR0bGUgcGVyY2VwdGlibGUgbG9zcyBvZiBpbWFnZSBjbGFyaXR5ICh0aGUgaHVtYW4gZXllIGlzIG1vcmUgc2Vuc2l0aXZlIHRvIHNtYWxsIGNoYW5nZXMgaW4gYnJpZ2h0bmVzcyB0aGFuIHRvIHNtYWxsIGNoYW5nZXMgaW4gY29sb3IuKSBUaGlzIGlzIGNhbGxlZCAiY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmciLiA8L3A+Ci08dGFibGUgY2xhc3M9ImZpZWxkdGFibGUiPgotPHRyPjx0aCBjb2xzcGFuPSIyIj5FbnVtZXJhdG9yPC90aD48L3RyPjx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGFmYjhkYTRmNDQxOTc4MzdiZGVjMGE0ZjU5M2RhY2FlMyI+PC9hPlRKU0FNUF80NDQ8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD40OjQ6NCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyAobm8gY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcpLiA8L3A+Ci08cD5UaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZSBjaHJvbWluYW5jZSBjb21wb25lbnQgZm9yIGV2ZXJ5IHBpeGVsIGluIHRoZSBzb3VyY2UgaW1hZ2UuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGExMzYxMzA5MDJjYzU3OGYxMWYzMjQyOWI1OTM2ODQwNCI+PC9hPlRKU0FNUF80MjI8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD40OjI6MiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gPC9wPgotPHA+VGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBvbmUgY2hyb21pbmFuY2UgY29tcG9uZW50IGZvciBldmVyeSAyeDEgYmxvY2sgb2YgcGl4ZWxzIGluIHRoZSBzb3VyY2UgaW1hZ2UuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGE2MzA4NWRiZjY4M2NmZTM5ZTUxM2NkYjYzNDNlMzczNyI+PC9hPlRKU0FNUF80MjA8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD40OjI6MCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gPC9wPgotPHA+VGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBvbmUgY2hyb21pbmFuY2UgY29tcG9uZW50IGZvciBldmVyeSAyeDIgYmxvY2sgb2YgcGl4ZWxzIGluIHRoZSBzb3VyY2UgaW1hZ2UuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGEzZjFjOTUwNDg0MmRkYzdhNDhkMGY2OTA3NTRiNjI0OCI+PC9hPlRKU0FNUF9HUkFZPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+R3JheXNjYWxlLiA8L3A+Ci08cD5UaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG5vIGNocm9taW5hbmNlIGNvbXBvbmVudHMuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGFjY2Y3NDBlNmYzYWE2YmEyMGJhOTIyY2FkMTNjYjk3NCI+PC9hPlRKU0FNUF80NDA8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD40OjQ6MCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gPC9wPgotPHA+VGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBvbmUgY2hyb21pbmFuY2UgY29tcG9uZW50IGZvciBldmVyeSAxeDIgYmxvY2sgb2YgcGl4ZWxzIGluIHRoZSBzb3VyY2UgaW1hZ2UuPC9wPgotPGRsIGNsYXNzPSJzZWN0aW9uIG5vdGUiPjxkdD5Ob3RlPC9kdD48ZGQ+NDo0OjAgc3Vic2FtcGxpbmcgaXMgbm90IGZ1bGx5IGFjY2VsZXJhdGVkIGluIGxpYmpwZWctdHVyYm8uIDwvZGQ+PC9kbD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGEyOGVjNjI1NzVlNWVhMjk1YzNmZGUzMDAxZGM2MjhlMiI+PC9hPlRKU0FNUF80MTE8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD40OjE6MSBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gPC9wPgotPHA+VGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBvbmUgY2hyb21pbmFuY2UgY29tcG9uZW50IGZvciBldmVyeSA0eDEgYmxvY2sgb2YgcGl4ZWxzIGluIHRoZSBzb3VyY2UgaW1hZ2UuIEpQRUcgaW1hZ2VzIGNvbXByZXNzZWQgd2l0aCA0OjE6MSBzdWJzYW1wbGluZyB3aWxsIGJlIGFsbW9zdCBleGFjdGx5IHRoZSBzYW1lIHNpemUgYXMgdGhvc2UgY29tcHJlc3NlZCB3aXRoIDQ6MjowIHN1YnNhbXBsaW5nLCBhbmQgaW4gdGhlIGFnZ3JlZ2F0ZSwgYm90aCBzdWJzYW1wbGluZyBtZXRob2RzIHByb2R1Y2UgYXBwcm94aW1hdGVseSB0aGUgc2FtZSBwZXJjZXB0dWFsIHF1YWxpdHkuIEhvd2V2ZXIsIDQ6MToxIGlzIGJldHRlciBhYmxlIHRvIHJlcHJvZHVjZSBzaGFycCBob3Jpem9udGFsIGZlYXR1cmVzLjwvcD4KLTxkbCBjbGFzcz0ic2VjdGlvbiBub3RlIj48ZHQ+Tm90ZTwvZHQ+PGRkPjQ6MToxIHN1YnNhbXBsaW5nIGlzIG5vdCBmdWxseSBhY2NlbGVyYXRlZCBpbiBsaWJqcGVnLXR1cmJvLiA8L2RkPjwvZGw+Ci08L3RkPjwvdHI+Ci08L3RhYmxlPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+ZW51bSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYiPlRKWE9QPC9hPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VHJhbnNmb3JtIG9wZXJhdGlvbnMgZm9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSIgdGl0bGU9Ikxvc3NsZXNzbHkgdHJhbnNmb3JtIGEgSlBFRyBpbWFnZSBpbnRvIGFub3RoZXIgSlBFRyBpbWFnZS4iPnRqVHJhbnNmb3JtKCk8L2E+IDwvcD4KLTx0YWJsZSBjbGFzcz0iZmllbGR0YWJsZSI+Ci08dHI+PHRoIGNvbHNwYW49IjIiPkVudW1lcmF0b3I8L3RoPjwvdHI+PHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YWFkODhjMDM2NmNkM2Y3ZDBlYWM5ZDdhM2ZhMWMyYzI3Ij48L2E+VEpYT1BfTk9ORTwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPkRvIG5vdCB0cmFuc2Zvcm0gdGhlIHBvc2l0aW9uIG9mIHRoZSBpbWFnZSBwaXhlbHMuIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmFhMGRmNjk3NzZjYWEzMGYwZmEyOGUyNjMzMmQzMTFjZSI+PC9hPlRKWE9QX0hGTElQPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+RmxpcCAobWlycm9yKSBpbWFnZSBob3Jpem9udGFsbHkuIDwvcD4KLTxwPlRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdCBpZiB0aGVyZSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBvbiB0aGUgcmlnaHQgZWRnZSAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E1MGUwM2NiNWVkMTE1MzMwZTIxMjQxNzQyOTYwMGIwMCIgdGl0bGU9IlRoaXMgb3B0aW9uIHdpbGwgY2F1c2UgdGpUcmFuc2Zvcm0oKSB0byByZXR1cm4gYW4gZXJyb3IgaWYgdGhlIHRyYW5zZm9ybSBpcyBub3QgcGVyZmVjdC4iPlRKWE9QVF9QRVJGRUNUPC9hPi4pIDwvcD4KLTwvdGQ+PC90cj4KLTx0cj48dGQgY2xhc3M9ImZpZWxkbmFtZSI+PGVtPjxhIGNsYXNzPSJhbmNob3IiIGlkPSJnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmEzMjRlZGRmYmVjNTNiN2U2OTFmNjFlNTY5MjlkMGQ1ZCI+PC9hPlRKWE9QX1ZGTElQPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+RmxpcCAobWlycm9yKSBpbWFnZSB2ZXJ0aWNhbGx5LiA8L3A+Ci08cD5UaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlIGFueSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlIGJvdHRvbSBlZGdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIiB0aXRsZT0iVGhpcyBvcHRpb24gd2lsbCBjYXVzZSB0alRyYW5zZm9ybSgpIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgdHJhbnNmb3JtIGlzIG5vdCBwZXJmZWN0LiI+VEpYT1BUX1BFUkZFQ1Q8L2E+LikgPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTMxMDYwYWVkMTk5Zjg4NmFmZGQ0MTdmODA0OTljMzJkIj48L2E+VEpYT1BfVFJBTlNQT1NFPC9lbT4mbmJzcDs8L3RkPjx0ZCBjbGFzcz0iZmllbGRkb2MiPgotPHA+VHJhbnNwb3NlIGltYWdlIChmbGlwL21pcnJvciBhbG9uZyB1cHBlciBsZWZ0IHRvIGxvd2VyIHJpZ2h0IGF4aXMuKSBUaGlzIHRyYW5zZm9ybSBpcyBhbHdheXMgcGVyZmVjdC4gPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YWYzYjE0ZDQ4OGFlYTZlY2U5ZTViM2RmNzNhNzRkNmE0Ij48L2E+VEpYT1BfVFJBTlNWRVJTRTwvZW0+Jm5ic3A7PC90ZD48dGQgY2xhc3M9ImZpZWxkZG9jIj4KLTxwPlRyYW5zdmVyc2UgdHJhbnNwb3NlIGltYWdlIChmbGlwL21pcnJvciBhbG9uZyB1cHBlciByaWdodCB0byBsb3dlciBsZWZ0IGF4aXMuKSBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlIGFueSBwYXJ0aWFsIE1DVSBibG9ja3MgaW4gdGhlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIiB0aXRsZT0iVGhpcyBvcHRpb24gd2lsbCBjYXVzZSB0alRyYW5zZm9ybSgpIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgdHJhbnNmb3JtIGlzIG5vdCBwZXJmZWN0LiI+VEpYT1BUX1BFUkZFQ1Q8L2E+LikgPC9wPgotPC90ZD48L3RyPgotPHRyPjx0ZCBjbGFzcz0iZmllbGRuYW1lIj48ZW0+PGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTQzYjJiYmIyM2JjNGJkNTQ4NDIyZDQzZmJlOWFmMTI4Ij48L2E+VEpYT1BfUk9UOTA8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5Sb3RhdGUgaW1hZ2UgY2xvY2t3aXNlIGJ5IDkwIGRlZ3JlZXMuIDwvcD4KLTxwPlRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdCBpZiB0aGVyZSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBvbiB0aGUgYm90dG9tIGVkZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNTBlMDNjYjVlZDExNTMzMGUyMTI0MTc0Mjk2MDBiMDAiIHRpdGxlPSJUaGlzIG9wdGlvbiB3aWxsIGNhdXNlIHRqVHJhbnNmb3JtKCkgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB0cmFuc2Zvcm0gaXMgbm90IHBlcmZlY3QuIj5USlhPUFRfUEVSRkVDVDwvYT4uKSA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMTQwOTUyZWI4ZGQwMzAwYWNjZmNjMjI3MjZkNjk2OTIiPjwvYT5USlhPUF9ST1QxODA8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5Sb3RhdGUgaW1hZ2UgMTgwIGRlZ3JlZXMuIDwvcD4KLTxwPlRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdCBpZiB0aGVyZSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBpbiB0aGUgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNTBlMDNjYjVlZDExNTMzMGUyMTI0MTc0Mjk2MDBiMDAiIHRpdGxlPSJUaGlzIG9wdGlvbiB3aWxsIGNhdXNlIHRqVHJhbnNmb3JtKCkgdG8gcmV0dXJuIGFuIGVycm9yIGlmIHRoZSB0cmFuc2Zvcm0gaXMgbm90IHBlcmZlY3QuIj5USlhPUFRfUEVSRkVDVDwvYT4uKSA8L3A+Ci08L3RkPjwvdHI+Ci08dHI+PHRkIGNsYXNzPSJmaWVsZG5hbWUiPjxlbT48YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzA2NGVlNWRmYjdmMDMyZGYzMzI4MTg1ODc1NjdhMDgiPjwvYT5USlhPUF9ST1QyNzA8L2VtPiZuYnNwOzwvdGQ+PHRkIGNsYXNzPSJmaWVsZGRvYyI+Ci08cD5Sb3RhdGUgaW1hZ2UgY291bnRlci1jbG9ja3dpc2UgYnkgOTAgZGVncmVlcy4gPC9wPgotPHA+VGhpcyB0cmFuc2Zvcm0gaXMgaW1wZXJmZWN0IGlmIHRoZXJlIGFyZSBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIG9uIHRoZSByaWdodCBlZGdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTUwZTAzY2I1ZWQxMTUzMzBlMjEyNDE3NDI5NjAwYjAwIiB0aXRsZT0iVGhpcyBvcHRpb24gd2lsbCBjYXVzZSB0alRyYW5zZm9ybSgpIHRvIHJldHVybiBhbiBlcnJvciBpZiB0aGUgdHJhbnNmb3JtIGlzIG5vdCBwZXJmZWN0LiI+VEpYT1BUX1BFUkZFQ1Q8L2E+LikgPC9wPgotPC90ZD48L3RyPgotPC90YWJsZT4KLQotPC9kaXY+Ci08L2Rpdj4KLTxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPkZ1bmN0aW9uIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIHVuc2lnbmVkIGNoYXIqIERMTENBTEwgdGpBbGxvYyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmJ5dGVzPC9lbT48L3RkPjx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5BbGxvY2F0ZSBhbiBpbWFnZSBidWZmZXIgZm9yIHVzZSB3aXRoIFR1cmJvSlBFRy4gPC9wPgotPHA+WW91IHNob3VsZCBhbHdheXMgdXNlIHRoaXMgZnVuY3Rpb24gdG8gYWxsb2NhdGUgdGhlIEpQRUcgZGVzdGluYXRpb24gYnVmZmVyKHMpIGZvciA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjM4ZjJlZDQ0YmRjODhlNzMwZTA4YjYzMmZhNmU4OGUiIHRpdGxlPSJDb21wcmVzcyBhbiBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBpbWFnZSBpbnRvIGEgSlBFRyBpbWFnZS4iPnRqQ29tcHJlc3MyKCk8L2E+IGFuZCA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPiB1bmxlc3MgeW91IGFyZSBkaXNhYmxpbmcgYXV0b21hdGljIGJ1ZmZlciAocmUpYWxsb2NhdGlvbiAoYnkgc2V0dGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiIHRpdGxlPSJEaXNhYmxlIGJ1ZmZlciAocmUpYWxsb2NhdGlvbi4iPlRKRkxBR19OT1JFQUxMT0M8L2E+Lik8L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+Ynl0ZXM8L3RkPjx0ZD50aGUgbnVtYmVyIG9mIGJ5dGVzIHRvIGFsbG9jYXRlPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+YSBwb2ludGVyIHRvIGEgbmV3bHktYWxsb2NhdGVkIGJ1ZmZlciB3aXRoIHRoZSBzcGVjaWZpZWQgbnVtYmVyIG9mIGJ5dGVzLjwvZGQ+PC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiBzZWUiPjxkdD5TZWUgQWxzbzwvZHQ+PGRkPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E4YzRhMTIzMWRjMDZhNDUwNTE0YzgzNWY2NDcxZjEzNyIgdGl0bGU9IkZyZWUgYW4gaW1hZ2UgYnVmZmVyIHByZXZpb3VzbHkgYWxsb2NhdGVkIGJ5IFR1cmJvSlBFRy4iPnRqRnJlZSgpPC9hPiA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2FjY2M1YmNhN2YxMmZjZGNjMzAyZTZlMWM2ZDRiMzExYiI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgdW5zaWduZWQgbG9uZyBETExDQUxMIHRqQnVmU2l6ZSA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ1N1YnNhbXA8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIEpQRUcgaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gPC9wPgotPHA+VGhlIG51bWJlciBvZiBieXRlcyByZXR1cm5lZCBieSB0aGlzIGZ1bmN0aW9uIGlzIGxhcmdlciB0aGFuIHRoZSBzaXplIG9mIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlLiBUaGUgcmVhc29uIGZvciB0aGlzIGlzIHRoYXQgdGhlIEpQRUcgZm9ybWF0IHVzZXMgMTYtYml0IGNvZWZmaWNpZW50cywgYW5kIGl0IGlzIHRodXMgcG9zc2libGUgZm9yIGEgdmVyeSBoaWdoLXF1YWxpdHkgSlBFRyBpbWFnZSB3aXRoIHZlcnkgaGlnaC1mcmVxdWVuY3kgY29udGVudCB0byBleHBhbmQgcmF0aGVyIHRoYW4gY29tcHJlc3Mgd2hlbiBjb252ZXJ0ZWQgdG8gdGhlIEpQRUcgZm9ybWF0LiBTdWNoIGltYWdlcyByZXByZXNlbnQgYSB2ZXJ5IHJhcmUgY29ybmVyIGNhc2UsIGJ1dCBzaW5jZSB0aGVyZSBpcyBubyB3YXkgdG8gcHJlZGljdCB0aGUgc2l6ZSBvZiBhIEpQRUcgaW1hZ2UgcHJpb3IgdG8gY29tcHJlc3Npb24sIHRoZSBjb3JuZXIgY2FzZSBoYXMgdG8gYmUgaGFuZGxlZC48L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5oZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIGltYWdlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1N1YnNhbXA8L3RkPjx0ZD50aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdG8gYmUgdXNlZCB3aGVuIGdlbmVyYXRpbmcgdGhlIEpQRUcgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPkNocm9taW5hbmNlIHN1YnNhbXBsaW5nIG9wdGlvbnM8L2E+Lik8L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD50aGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIHRoZSBpbWFnZSwgb3IgLTEgaWYgdGhlIGFyZ3VtZW50cyBhcmUgb3V0IG9mIGJvdW5kcy4gPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhZjQ1MTY2NGE2MmMxZjZjN2NjNWE2NDAxZjMyOTA4YzkiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIHVuc2lnbmVkIGxvbmcgRExMQ0FMTCB0akJ1ZlNpemVZVVYyIDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+d2lkdGg8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5wYWQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5zdWJzYW1wPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hciBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLiA8L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5wYWQ8L3RkPjx0ZD50aGUgd2lkdGggb2YgZWFjaCBsaW5lIGluIGVhY2ggcGxhbmUgb2YgdGhlIGltYWdlIGlzIHBhZGRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiB0aGlzIG51bWJlciBvZiBieXRlcyAobXVzdCBiZSBhIHBvd2VyIG9mIDIuKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhlaWdodDwvdGQ+PHRkPmhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+bGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4gdGhlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+dGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgdGhlIGltYWdlLCBvciAtMSBpZiB0aGUgYXJndW1lbnRzIGFyZSBvdXQgb2YgYm91bmRzLiA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2FmMzhmMmVkNDRiZGM4OGU3MzBlMDhiNjMyZmE2ZTg4ZSI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgaW50IERMTENBTEwgdGpDb21wcmVzczIgPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhhbmRsZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+Y29uc3QgdW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnNyY0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGl0Y2g8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5waXhlbEZvcm1hdDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnQnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBsb25nIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ1NpemU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU3Vic2FtcDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmpwZWdRdWFsPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZmxhZ3M8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+Q29tcHJlc3MgYW4gUkdCLCBncmF5c2NhbGUsIG9yIENNWUsgaW1hZ2UgaW50byBhIEpQRUcgaW1hZ2UuIDwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oYW5kbGU8L3RkPjx0ZD5hIGhhbmRsZSB0byBhIFR1cmJvSlBFRyBjb21wcmVzc29yIG9yIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3JjQnVmPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgY29udGFpbmluZyBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBwaXhlbHMgdG8gYmUgY29tcHJlc3NlZDwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPndpZHRoPC90ZD48dGQ+d2lkdGggKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBpbWFnZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpdGNoPC90ZD48dGQ+Ynl0ZXMgcGVyIGxpbmUgaW4gdGhlIHNvdXJjZSBpbWFnZS4gTm9ybWFsbHksIHRoaXMgc2hvdWxkIGJlIDxjb2RlPndpZHRoICogPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIiB0aXRsZT0iUGl4ZWwgc2l6ZSAoaW4gYnl0ZXMpIGZvciBhIGdpdmVuIHBpeGVsIGZvcm1hdC4iPnRqUGl4ZWxTaXplPC9hPltwaXhlbEZvcm1hdF08L2NvZGU+IGlmIHRoZSBpbWFnZSBpcyB1bnBhZGRlZCwgb3IgPGNvZGU+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTBhYmE5NTU0NzMzMTVlNDA1Mjk1ZDk3OGYwYzE2NTExIiB0aXRsZT0iUGFkIHRoZSBnaXZlbiB3aWR0aCB0byB0aGUgbmVhcmVzdCAzMi1iaXQgYm91bmRhcnkuIj5USlBBRDwvYT4od2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XSk8L2NvZGU+IGlmIGVhY2ggbGluZSBvZiB0aGUgaW1hZ2UgaXMgcGFkZGVkIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeSwgYXMgaXMgdGhlIGNhc2UgZm9yIFdpbmRvd3MgYml0bWFwcy4gWW91IGNhbiBhbHNvIGJlIGNsZXZlciBhbmQgdXNlIHRoaXMgcGFyYW1ldGVyIHRvIHNraXAgbGluZXMsIGV0Yy4gU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gPGNvZGU+d2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4uPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGVpZ2h0PC90ZD48dGQ+aGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBzb3VyY2UgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5waXhlbEZvcm1hdDwvdGQ+PHRkPnBpeGVsIGZvcm1hdCBvZiB0aGUgc291cmNlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj5QaXhlbCBmb3JtYXRzPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ0J1ZjwvdGQ+PHRkPmFkZHJlc3Mgb2YgYSBwb2ludGVyIHRvIGFuIGltYWdlIGJ1ZmZlciB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgSlBFRyBpbWFnZS4gVHVyYm9KUEVHIGhhcyB0aGUgYWJpbGl0eSB0byByZWFsbG9jYXRlIHRoZSBKUEVHIGJ1ZmZlciB0byBhY2NvbW1vZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZS4gVGh1cywgeW91IGNhbiBjaG9vc2UgdG86PG9sIHR5cGU9IjEiPgotPGxpPnByZS1hbGxvY2F0ZSB0aGUgSlBFRyBidWZmZXIgd2l0aCBhbiBhcmJpdHJhcnkgc2l6ZSB1c2luZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiIHRpdGxlPSJBbGxvY2F0ZSBhbiBpbWFnZSBidWZmZXIgZm9yIHVzZSB3aXRoIFR1cmJvSlBFRy4iPnRqQWxsb2MoKTwvYT4gYW5kIGxldCBUdXJib0pQRUcgZ3JvdyB0aGUgYnVmZmVyIGFzIG5lZWRlZCw8L2xpPgotPGxpPnNldCA8Y29kZT4qanBlZ0J1ZjwvY29kZT4gdG8gTlVMTCB0byB0ZWxsIFR1cmJvSlBFRyB0byBhbGxvY2F0ZSB0aGUgYnVmZmVyIGZvciB5b3UsIG9yPC9saT4KLTxsaT5wcmUtYWxsb2NhdGUgdGhlIGJ1ZmZlciB0byBhICJ3b3JzdCBjYXNlIiBzaXplIGRldGVybWluZWQgYnkgY2FsbGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhY2NjNWJjYTdmMTJmY2RjYzMwMmU2ZTFjNmQ0YjMxMWIiIHRpdGxlPSJUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRyBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLi4uIj50akJ1ZlNpemUoKTwvYT4uIFRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgbmV2ZXIgaGFzIHRvIGJlIHJlLWFsbG9jYXRlZCAoc2V0dGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiIHRpdGxlPSJEaXNhYmxlIGJ1ZmZlciAocmUpYWxsb2NhdGlvbi4iPlRKRkxBR19OT1JFQUxMT0M8L2E+IGd1YXJhbnRlZXMgdGhpcy4pPC9saT4KLTwvb2w+Ci1JZiB5b3UgY2hvb3NlIG9wdGlvbiAxLCA8Y29kZT4qanBlZ1NpemU8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gdGhlIHNpemUgb2YgeW91ciBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gSW4gYW55IGNhc2UsIHVubGVzcyB5b3UgaGF2ZSBzZXQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg4MDhkNDAzYzY4YjYyYWFhNThhNGMxZTU4ZTk4OTYzIiB0aXRsZT0iRGlzYWJsZSBidWZmZXIgKHJlKWFsbG9jYXRpb24uIj5USkZMQUdfTk9SRUFMTE9DPC9hPiwgeW91IHNob3VsZCBhbHdheXMgY2hlY2sgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHVwb24gcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgYXMgaXQgbWF5IGhhdmUgY2hhbmdlZC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnU2l6ZTwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gdW5zaWduZWQgbG9uZyB2YXJpYWJsZSB0aGF0IGhvbGRzIHRoZSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIGJ1ZmZlci4gSWYgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHBvaW50cyB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLCB0aGVuIDxjb2RlPipqcGVnU2l6ZTwvY29kZT4gc2hvdWxkIGJlIHNldCB0byB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiBVcG9uIHJldHVybiwgPGNvZGU+KmpwZWdTaXplPC9jb2RlPiB3aWxsIGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzLikgSWYgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHBvaW50cyB0byBhIEpQRUcgaW1hZ2UgYnVmZmVyIHRoYXQgaXMgYmVpbmcgcmV1c2VkIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIG9uZSBvZiB0aGUgSlBFRyBjb21wcmVzc2lvbiBmdW5jdGlvbnMsIHRoZW4gPGNvZGU+KmpwZWdTaXplPC9jb2RlPiBpcyBpZ25vcmVkLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdTdWJzYW1wPC90ZD48dGQ+dGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBKUEVHIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1F1YWw8L3RkPjx0ZD50aGUgaW1hZ2UgcXVhbGl0eSBvZiB0aGUgZ2VuZXJhdGVkIEpQRUcgaW1hZ2UgKDEgPSB3b3JzdCwgMTAwID0gYmVzdCk8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5mbGFnczwvdGQ+PHRkPnRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzJlY2Y0ZWJlNmViNzAyZDNjNmY1Y2EyNzQ1NWUxZWMiPmZsYWdzPC9hPjwvdGQ+PC90cj4KLSAgPC90YWJsZT4KLSAgPC9kZD4KLTwvZGw+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPjAgaWYgc3VjY2Vzc2Z1bCwgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiIHRpdGxlPSJSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoeSB0aGUgbGFzdCBjb21tYW5kIGZhaWxlZC4iPnRqR2V0RXJyb3JTdHIoKTwvYT4uKSA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgaW50IERMTENBTEwgdGpDb21wcmVzc0Zyb21ZVVYgPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhhbmRsZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+Y29uc3QgdW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnNyY0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGFkPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3Vic2FtcDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnQnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBsb25nIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ1NpemU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnUXVhbDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmZsYWdzPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkNvbXByZXNzIGEgWVVWIHBsYW5hciBpbWFnZSBpbnRvIGEgSlBFRyBpbWFnZS4gPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIGNvbXByZXNzb3Igb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zcmNCdWY8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGltYWdlIGJ1ZmZlciBjb250YWluaW5nIGEgWVVWIHBsYW5hciBpbWFnZSB0byBiZSBjb21wcmVzc2VkLiBUaGUgc2l6ZSBvZiB0aGlzIGJ1ZmZlciBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlIHJldHVybmVkIGJ5IDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FmNDUxNjY0YTYyYzFmNmM3Y2M1YTY0MDFmMzI5MDhjOSIgdGl0bGU9IlRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hciBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLi4uIj50akJ1ZlNpemVZVVYyKCk8L2E+IGZvciB0aGUgZ2l2ZW4gaW1hZ2Ugd2lkdGgsIGhlaWdodCwgcGFkZGluZywgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiBUaGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBzaG91bGQgYmUgc3RvcmVkIHNlcXVlbnRpYWxseSBpbiB0aGUgc291cmNlIGJ1ZmZlciAocmVmZXIgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4uKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPndpZHRoPC90ZD48dGQ+d2lkdGggKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBpbWFnZS4gSWYgdGhlIHdpZHRoIGlzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBNQ1UgYmxvY2sgd2lkdGggKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiIHRpdGxlPSJNQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVVdpZHRoPC9hPiksIHRoZW4gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBjb3B5IHdpbGwgYmUgcGVyZm9ybWVkIHdpdGhpbiBUdXJib0pQRUcuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGFkPC90ZD48dGQ+dGhlIGxpbmUgcGFkZGluZyB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UuIEZvciBpbnN0YW5jZSwgaWYgZWFjaCBsaW5lIGluIGVhY2ggcGxhbmUgb2YgdGhlIFlVViBpbWFnZSBpcyBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgNCBieXRlcywgdGhlbiA8Y29kZT5wYWQ8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gNC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5oZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBpbWFnZS4gSWYgdGhlIGhlaWdodCBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgTUNVIGJsb2NrIGhlaWdodCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FiZDI0N2JiOWZlY2IzOTNlY2E1NzM2NmZlYjgzMjdiZiIgdGl0bGU9Ik1DVSBibG9jayBoZWlnaHQgKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVUhlaWdodDwvYT4pLCB0aGVuIGFuIGludGVybWVkaWF0ZSBidWZmZXIgY29weSB3aWxsIGJlIHBlcmZvcm1lZCB3aXRoaW4gVHVyYm9KUEVHLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnN1YnNhbXA8L3RkPjx0ZD50aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgc291cmNlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ0J1ZjwvdGQ+PHRkPmFkZHJlc3Mgb2YgYSBwb2ludGVyIHRvIGFuIGltYWdlIGJ1ZmZlciB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgSlBFRyBpbWFnZS4gVHVyYm9KUEVHIGhhcyB0aGUgYWJpbGl0eSB0byByZWFsbG9jYXRlIHRoZSBKUEVHIGJ1ZmZlciB0byBhY2NvbW1vZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZS4gVGh1cywgeW91IGNhbiBjaG9vc2UgdG86PG9sIHR5cGU9IjEiPgotPGxpPnByZS1hbGxvY2F0ZSB0aGUgSlBFRyBidWZmZXIgd2l0aCBhbiBhcmJpdHJhcnkgc2l6ZSB1c2luZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiIHRpdGxlPSJBbGxvY2F0ZSBhbiBpbWFnZSBidWZmZXIgZm9yIHVzZSB3aXRoIFR1cmJvSlBFRy4iPnRqQWxsb2MoKTwvYT4gYW5kIGxldCBUdXJib0pQRUcgZ3JvdyB0aGUgYnVmZmVyIGFzIG5lZWRlZCw8L2xpPgotPGxpPnNldCA8Y29kZT4qanBlZ0J1ZjwvY29kZT4gdG8gTlVMTCB0byB0ZWxsIFR1cmJvSlBFRyB0byBhbGxvY2F0ZSB0aGUgYnVmZmVyIGZvciB5b3UsIG9yPC9saT4KLTxsaT5wcmUtYWxsb2NhdGUgdGhlIGJ1ZmZlciB0byBhICJ3b3JzdCBjYXNlIiBzaXplIGRldGVybWluZWQgYnkgY2FsbGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhY2NjNWJjYTdmMTJmY2RjYzMwMmU2ZTFjNmQ0YjMxMWIiIHRpdGxlPSJUaGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRyBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLi4uIj50akJ1ZlNpemUoKTwvYT4uIFRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgbmV2ZXIgaGFzIHRvIGJlIHJlLWFsbG9jYXRlZCAoc2V0dGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiIHRpdGxlPSJEaXNhYmxlIGJ1ZmZlciAocmUpYWxsb2NhdGlvbi4iPlRKRkxBR19OT1JFQUxMT0M8L2E+IGd1YXJhbnRlZXMgdGhpcy4pPC9saT4KLTwvb2w+Ci1JZiB5b3UgY2hvb3NlIG9wdGlvbiAxLCA8Y29kZT4qanBlZ1NpemU8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gdGhlIHNpemUgb2YgeW91ciBwcmUtYWxsb2NhdGVkIGJ1ZmZlci4gSW4gYW55IGNhc2UsIHVubGVzcyB5b3UgaGF2ZSBzZXQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg4MDhkNDAzYzY4YjYyYWFhNThhNGMxZTU4ZTk4OTYzIiB0aXRsZT0iRGlzYWJsZSBidWZmZXIgKHJlKWFsbG9jYXRpb24uIj5USkZMQUdfTk9SRUFMTE9DPC9hPiwgeW91IHNob3VsZCBhbHdheXMgY2hlY2sgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHVwb24gcmV0dXJuIGZyb20gdGhpcyBmdW5jdGlvbiwgYXMgaXQgbWF5IGhhdmUgY2hhbmdlZC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnU2l6ZTwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gdW5zaWduZWQgbG9uZyB2YXJpYWJsZSB0aGF0IGhvbGRzIHRoZSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIGJ1ZmZlci4gSWYgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHBvaW50cyB0byBhIHByZS1hbGxvY2F0ZWQgYnVmZmVyLCB0aGVuIDxjb2RlPipqcGVnU2l6ZTwvY29kZT4gc2hvdWxkIGJlIHNldCB0byB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyLiBVcG9uIHJldHVybiwgPGNvZGU+KmpwZWdTaXplPC9jb2RlPiB3aWxsIGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzLikgSWYgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHBvaW50cyB0byBhIEpQRUcgaW1hZ2UgYnVmZmVyIHRoYXQgaXMgYmVpbmcgcmV1c2VkIGZyb20gYSBwcmV2aW91cyBjYWxsIHRvIG9uZSBvZiB0aGUgSlBFRyBjb21wcmVzc2lvbiBmdW5jdGlvbnMsIHRoZW4gPGNvZGU+KmpwZWdTaXplPC9jb2RlPiBpcyBpZ25vcmVkLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdRdWFsPC90ZD48dGQ+dGhlIGltYWdlIHF1YWxpdHkgb2YgdGhlIGdlbmVyYXRlZCBKUEVHIGltYWdlICgxID0gd29yc3QsIDEwMCA9IGJlc3QpPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZmxhZ3M8L3RkPjx0ZD50aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTcyZWNmNGViZTZlYjcwMmQzYzZmNWNhMjc0NTVlMWVjIj5mbGFnczwvYT48L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD4wIGlmIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhMGI4NGM2ODJkOGFjY2YwOTdkN2E3NDNjOTY1ZDM0NjQiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCBETExDQUxMIHRqQ29tcHJlc3NGcm9tWVVWUGxhbmVzIDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oYW5kbGU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmNvbnN0IHVuc2lnbmVkIGNoYXIgKiomIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3JjUGxhbmVzPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+d2lkdGg8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmNvbnN0IGludCAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnN0cmlkZXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5zdWJzYW1wPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBjaGFyICoqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmpwZWdCdWY8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnVuc2lnbmVkIGxvbmcgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU2l6ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmpwZWdRdWFsPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZmxhZ3M8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+Q29tcHJlc3MgYSBzZXQgb2YgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBpbnRvIGEgSlBFRyBpbWFnZS4gPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIGNvbXByZXNzb3Igb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zcmNQbGFuZXM8L3RkPjx0ZD5hbiBhcnJheSBvZiBwb2ludGVycyB0byBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIChvciBqdXN0IGEgWSBwbGFuZSwgaWYgY29tcHJlc3NpbmcgYSBncmF5c2NhbGUgaW1hZ2UpIHRoYXQgY29udGFpbiBhIFlVViBpbWFnZSB0byBiZSBjb21wcmVzc2VkLiBUaGVzZSBwbGFuZXMgY2FuIGJlIGNvbnRpZ3VvdXMgb3Igbm9uLWNvbnRpZ3VvdXMgaW4gbWVtb3J5LiBUaGUgc2l6ZSBvZiBlYWNoIHBsYW5lIHNob3VsZCBtYXRjaCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTZmOThkOTc3YmZhOWQxNjdjOTcxNzJlODc2YmE2MWUyIiB0aXRsZT0iVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4uLiI+dGpQbGFuZVNpemVZVVYoKTwvYT4gZm9yIHRoZSBnaXZlbiBpbWFnZSB3aWR0aCwgaGVpZ2h0LCBzdHJpZGVzLCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIFJlZmVyIHRvIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjWVVWbm90ZXMiPllVViBJbWFnZSBGb3JtYXQgTm90ZXM8L2E+IGZvciBtb3JlIGRldGFpbHMuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgc291cmNlIGltYWdlLiBJZiB0aGUgd2lkdGggaXMgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIE1DVSBibG9jayB3aWR0aCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5ZTYxZTdjZDQ3YTE1YTE3MzI4M2JhOTRlNzgxMzA4YyIgdGl0bGU9Ik1DVSBibG9jayB3aWR0aCAoaW4gcGl4ZWxzKSBmb3IgYSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4iPnRqTUNVV2lkdGg8L2E+KSwgdGhlbiBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIGNvcHkgd2lsbCBiZSBwZXJmb3JtZWQgd2l0aGluIFR1cmJvSlBFRy48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdHJpZGVzPC90ZD48dGQ+YW4gYXJyYXkgb2YgaW50ZWdlcnMsIGVhY2ggc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBsaW5lIGluIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lIG9mIHRoZSBZVVYgc291cmNlIGltYWdlLiBTZXR0aW5nIHRoZSBzdHJpZGUgZm9yIGFueSBwbGFuZSB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHBsYW5lIHdpZHRoIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4uKSBJZiA8Y29kZT5zdHJpZGVzPC9jb2RlPiBpcyBOVUxMLCB0aGVuIHRoZSBzdHJpZGVzIGZvciBhbGwgcGxhbmVzIHdpbGwgYmUgc2V0IHRvIHRoZWlyIHJlc3BlY3RpdmUgcGxhbmUgd2lkdGhzLiBZb3UgY2FuIGFkanVzdCB0aGUgc3RyaWRlcyBpbiBvcmRlciB0byBzcGVjaWZ5IGFuIGFyYml0cmFyeSBhbW91bnQgb2YgbGluZSBwYWRkaW5nIGluIGVhY2ggcGxhbmUgb3IgdG8gY3JlYXRlIGEgSlBFRyBpbWFnZSBmcm9tIGEgc3VicmVnaW9uIG9mIGEgbGFyZ2VyIFlVViBwbGFuYXIgaW1hZ2UuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGVpZ2h0PC90ZD48dGQ+aGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBzb3VyY2UgaW1hZ2UuIElmIHRoZSBoZWlnaHQgaXMgbm90IGFuIGV2ZW4gbXVsdGlwbGUgb2YgdGhlIE1DVSBibG9jayBoZWlnaHQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYmQyNDdiYjlmZWNiMzkzZWNhNTczNjZmZWI4MzI3YmYiIHRpdGxlPSJNQ1UgYmxvY2sgaGVpZ2h0IChpbiBwaXhlbHMpIGZvciBhIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiI+dGpNQ1VIZWlnaHQ8L2E+KSwgdGhlbiBhbiBpbnRlcm1lZGlhdGUgYnVmZmVyIGNvcHkgd2lsbCBiZSBwZXJmb3JtZWQgd2l0aGluIFR1cmJvSlBFRy48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+dGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIHNvdXJjZSBpbWFnZSAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NCI+Q2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9uczwvYT4uKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdCdWY8L3RkPjx0ZD5hZGRyZXNzIG9mIGEgcG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIEpQRUcgaW1hZ2UuIFR1cmJvSlBFRyBoYXMgdGhlIGFiaWxpdHkgdG8gcmVhbGxvY2F0ZSB0aGUgSlBFRyBidWZmZXIgdG8gYWNjb21tb2RhdGUgdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UuIFRodXMsIHlvdSBjYW4gY2hvb3NlIHRvOjxvbCB0eXBlPSIxIj4KLTxsaT5wcmUtYWxsb2NhdGUgdGhlIEpQRUcgYnVmZmVyIHdpdGggYW4gYXJiaXRyYXJ5IHNpemUgdXNpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmIiB0aXRsZT0iQWxsb2NhdGUgYW4gaW1hZ2UgYnVmZmVyIGZvciB1c2Ugd2l0aCBUdXJib0pQRUcuIj50akFsbG9jKCk8L2E+IGFuZCBsZXQgVHVyYm9KUEVHIGdyb3cgdGhlIGJ1ZmZlciBhcyBuZWVkZWQsPC9saT4KLTxsaT5zZXQgPGNvZGU+KmpwZWdCdWY8L2NvZGU+IHRvIE5VTEwgdG8gdGVsbCBUdXJib0pQRUcgdG8gYWxsb2NhdGUgdGhlIGJ1ZmZlciBmb3IgeW91LCBvcjwvbGk+Ci08bGk+cHJlLWFsbG9jYXRlIHRoZSBidWZmZXIgdG8gYSAid29yc3QgY2FzZSIgc2l6ZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWNjYzViY2E3ZjEyZmNkY2MzMDJlNmUxYzZkNGIzMTFiIiB0aXRsZT0iVGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIEpQRUcgaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4uLiI+dGpCdWZTaXplKCk8L2E+LiBUaGlzIHNob3VsZCBlbnN1cmUgdGhhdCB0aGUgYnVmZmVyIG5ldmVyIGhhcyB0byBiZSByZS1hbGxvY2F0ZWQgKHNldHRpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg4MDhkNDAzYzY4YjYyYWFhNThhNGMxZTU4ZTk4OTYzIiB0aXRsZT0iRGlzYWJsZSBidWZmZXIgKHJlKWFsbG9jYXRpb24uIj5USkZMQUdfTk9SRUFMTE9DPC9hPiBndWFyYW50ZWVzIHRoaXMuKTwvbGk+Ci08L29sPgotSWYgeW91IGNob29zZSBvcHRpb24gMSwgPGNvZGU+KmpwZWdTaXplPC9jb2RlPiBzaG91bGQgYmUgc2V0IHRvIHRoZSBzaXplIG9mIHlvdXIgcHJlLWFsbG9jYXRlZCBidWZmZXIuIEluIGFueSBjYXNlLCB1bmxlc3MgeW91IGhhdmUgc2V0IDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E4ODA4ZDQwM2M2OGI2MmFhYTU4YTRjMWU1OGU5ODk2MyIgdGl0bGU9IkRpc2FibGUgYnVmZmVyIChyZSlhbGxvY2F0aW9uLiI+VEpGTEFHX05PUkVBTExPQzwvYT4sIHlvdSBzaG91bGQgYWx3YXlzIGNoZWNrIDxjb2RlPipqcGVnQnVmPC9jb2RlPiB1cG9uIHJldHVybiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFzIGl0IG1heSBoYXZlIGNoYW5nZWQuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1NpemU8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIHVuc2lnbmVkIGxvbmcgdmFyaWFibGUgdGhhdCBob2xkcyB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSBidWZmZXIuIElmIDxjb2RlPipqcGVnQnVmPC9jb2RlPiBwb2ludHMgdG8gYSBwcmUtYWxsb2NhdGVkIGJ1ZmZlciwgdGhlbiA8Y29kZT4qanBlZ1NpemU8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4gVXBvbiByZXR1cm4sIDxjb2RlPipqcGVnU2l6ZTwvY29kZT4gd2lsbCBjb250YWluIHRoZSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcy4pIElmIDxjb2RlPipqcGVnQnVmPC9jb2RlPiBwb2ludHMgdG8gYSBKUEVHIGltYWdlIGJ1ZmZlciB0aGF0IGlzIGJlaW5nIHJldXNlZCBmcm9tIGEgcHJldmlvdXMgY2FsbCB0byBvbmUgb2YgdGhlIEpQRUcgY29tcHJlc3Npb24gZnVuY3Rpb25zLCB0aGVuIDxjb2RlPipqcGVnU2l6ZTwvY29kZT4gaXMgaWdub3JlZC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnUXVhbDwvdGQ+PHRkPnRoZSBpbWFnZSBxdWFsaXR5IG9mIHRoZSBnZW5lcmF0ZWQgSlBFRyBpbWFnZSAoMSA9IHdvcnN0LCAxMDAgPSBiZXN0KTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTA3N2M2MTAyN2I4NzVhZmVjZDVhMTYxM2JmMThiM2MxIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCB0akRlY29kZVlVViA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3JjQnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGFkPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3Vic2FtcDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmRzdEJ1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGl0Y2g8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5waXhlbEZvcm1hdDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmZsYWdzPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkRlY29kZSBhIFlVViBwbGFuYXIgaW1hZ2UgaW50byBhbiBSR0Igb3IgZ3JheXNjYWxlIGltYWdlLiA8L3A+Ci08cD5UaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFjY2VsZXJhdGVkIGNvbG9yIGNvbnZlcnNpb24gcm91dGluZXMgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUgYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRyBkZWNvbXByZXNzaW9uIHByb2Nlc3MuPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBvciB0cmFuc2Zvcm1lciBpbnN0YW5jZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnNyY0J1ZjwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gaW1hZ2UgYnVmZmVyIGNvbnRhaW5pbmcgYSBZVVYgcGxhbmFyIGltYWdlIHRvIGJlIGRlY29kZWQuIFRoZSBzaXplIG9mIHRoaXMgYnVmZmVyIHNob3VsZCBtYXRjaCB0aGUgdmFsdWUgcmV0dXJuZWQgYnkgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWY0NTE2NjRhNjJjMWY2YzdjYzVhNjQwMWYzMjkwOGM5IiB0aXRsZT0iVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgcGxhbmFyIGltYWdlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuLi4iPnRqQnVmU2l6ZVlVVjIoKTwvYT4gZm9yIHRoZSBnaXZlbiBpbWFnZSB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nLCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIFRoZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIHNob3VsZCBiZSBzdG9yZWQgc2VxdWVudGlhbGx5IGluIHRoZSBzb3VyY2UgYnVmZmVyIChyZWZlciB0byA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI1lVVm5vdGVzIj5ZVVYgSW1hZ2UgRm9ybWF0IE5vdGVzPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGFkPC90ZD48dGQ+VXNlIHRoaXMgcGFyYW1ldGVyIHRvIHNwZWNpZnkgdGhhdCB0aGUgd2lkdGggb2YgZWFjaCBsaW5lIGluIGVhY2ggcGxhbmUgb2YgdGhlIFlVViBzb3VyY2UgaW1hZ2UgaXMgcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YgMi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3Vic2FtcDwvdGQ+PHRkPnRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYgc291cmNlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZHN0QnVmPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRlY29kZWQgaW1hZ2UuIFRoaXMgYnVmZmVyIHNob3VsZCBub3JtYWxseSBiZSA8Y29kZT5waXRjaCAqIGhlaWdodDwvY29kZT4gYnl0ZXMgaW4gc2l6ZSwgYnV0IHRoZSA8Y29kZT5kc3RCdWY8L2NvZGU+IHBvaW50ZXIgY2FuIGFsc28gYmUgdXNlZCB0byBkZWNvZGUgaW50byBhIHNwZWNpZmljIHJlZ2lvbiBvZiBhIGxhcmdlciBidWZmZXIuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBpbWFnZXM8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5waXRjaDwvdGQ+PHRkPmJ5dGVzIHBlciBsaW5lIGluIHRoZSBkZXN0aW5hdGlvbiBpbWFnZS4gTm9ybWFsbHksIHRoaXMgc2hvdWxkIGJlIDxjb2RlPndpZHRoICogPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIiB0aXRsZT0iUGl4ZWwgc2l6ZSAoaW4gYnl0ZXMpIGZvciBhIGdpdmVuIHBpeGVsIGZvcm1hdC4iPnRqUGl4ZWxTaXplPC9hPltwaXhlbEZvcm1hdF08L2NvZGU+IGlmIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBpcyB1bnBhZGRlZCwgb3IgPGNvZGU+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTBhYmE5NTU0NzMzMTVlNDA1Mjk1ZDk3OGYwYzE2NTExIiB0aXRsZT0iUGFkIHRoZSBnaXZlbiB3aWR0aCB0byB0aGUgbmVhcmVzdCAzMi1iaXQgYm91bmRhcnkuIj5USlBBRDwvYT4od2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XSk8L2NvZGU+IGlmIGVhY2ggbGluZSBvZiB0aGUgZGVzdGluYXRpb24gaW1hZ2Ugc2hvdWxkIGJlIHBhZGRlZCB0byB0aGUgbmVhcmVzdCAzMi1iaXQgYm91bmRhcnksIGFzIGlzIHRoZSBjYXNlIGZvciBXaW5kb3dzIGJpdG1hcHMuIFlvdSBjYW4gYWxzbyBiZSBjbGV2ZXIgYW5kIHVzZSB0aGUgcGl0Y2ggcGFyYW1ldGVyIHRvIHNraXAgbGluZXMsIGV0Yy4gU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gPGNvZGU+d2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4uPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGVpZ2h0PC90ZD48dGQ+aGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGltYWdlczwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpeGVsRm9ybWF0PC90ZD48dGQ+cGl4ZWwgZm9ybWF0IG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYSI+UGl4ZWwgZm9ybWF0czwvYT4uKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWY0MmYxOWI3YTQ5NmViMThiZGM4NGZlNjFlZTZkM2UyIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCB0akRlY29kZVlVVlBsYW5lcyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyICoqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnNyY1BsYW5lczwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+Y29uc3QgaW50IComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3RyaWRlczwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnN1YnNhbXA8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnVuc2lnbmVkIGNoYXIgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5kc3RCdWY8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT53aWR0aDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnBpdGNoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGl4ZWxGb3JtYXQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5mbGFnczwvZW0+JiMxNjA7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD48dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5EZWNvZGUgYSBzZXQgb2YgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBpbnRvIGFuIFJHQiBvciBncmF5c2NhbGUgaW1hZ2UuIDwvcD4KLTxwPlRoaXMgZnVuY3Rpb24gdXNlcyB0aGUgYWNjZWxlcmF0ZWQgY29sb3IgY29udmVyc2lvbiByb3V0aW5lcyBpbiB0aGUgdW5kZXJseWluZyBjb2RlYyBidXQgZG9lcyBub3QgZXhlY3V0ZSBhbnkgb2YgdGhlIG90aGVyIHN0ZXBzIGluIHRoZSBKUEVHIGRlY29tcHJlc3Npb24gcHJvY2Vzcy48L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGFuZGxlPC90ZD48dGQ+YSBoYW5kbGUgdG8gYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIG9yIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3JjUGxhbmVzPC90ZD48dGQ+YW4gYXJyYXkgb2YgcG9pbnRlcnMgdG8gWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyAob3IganVzdCBhIFkgcGxhbmUsIGlmIGRlY29kaW5nIGEgZ3JheXNjYWxlIGltYWdlKSB0aGF0IGNvbnRhaW4gYSBZVVYgaW1hZ2UgdG8gYmUgZGVjb2RlZC4gVGhlc2UgcGxhbmVzIGNhbiBiZSBjb250aWd1b3VzIG9yIG5vbi1jb250aWd1b3VzIGluIG1lbW9yeS4gVGhlIHNpemUgb2YgZWFjaCBwbGFuZSBzaG91bGQgbWF0Y2ggdGhlIHZhbHVlIHJldHVybmVkIGJ5IDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMiIgdGl0bGU9IlRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuLi4iPnRqUGxhbmVTaXplWVVWKCk8L2E+IGZvciB0aGUgZ2l2ZW4gaW1hZ2Ugd2lkdGgsIGhlaWdodCwgc3RyaWRlcywgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiBSZWZlciB0byA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI1lVVm5vdGVzIj5ZVVYgSW1hZ2UgRm9ybWF0IE5vdGVzPC9hPiBmb3IgbW9yZSBkZXRhaWxzLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnN0cmlkZXM8L3RkPjx0ZD5hbiBhcnJheSBvZiBpbnRlZ2VycywgZWFjaCBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMgcGVyIGxpbmUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcGxhbmUgb2YgdGhlIFlVViBzb3VyY2UgaW1hZ2UuIFNldHRpbmcgdGhlIHN0cmlkZSBmb3IgYW55IHBsYW5lIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgcGxhbmUgd2lkdGggKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI1lVVm5vdGVzIj5ZVVYgSW1hZ2UgRm9ybWF0IE5vdGVzPC9hPi4pIElmIDxjb2RlPnN0cmlkZXM8L2NvZGU+IGlzIE5VTEwsIHRoZW4gdGhlIHN0cmlkZXMgZm9yIGFsbCBwbGFuZXMgd2lsbCBiZSBzZXQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwbGFuZSB3aWR0aHMuIFlvdSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIHNwZWNpZnkgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBsaW5lIHBhZGRpbmcgaW4gZWFjaCBwbGFuZSBvciB0byBkZWNvZGUgYSBzdWJyZWdpb24gb2YgYSBsYXJnZXIgWVVWIHBsYW5hciBpbWFnZS48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+dGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVViBzb3VyY2UgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPkNocm9taW5hbmNlIHN1YnNhbXBsaW5nIG9wdGlvbnM8L2E+Lik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kc3RCdWY8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGltYWdlIGJ1ZmZlciB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZGVjb2RlZCBpbWFnZS4gVGhpcyBidWZmZXIgc2hvdWxkIG5vcm1hbGx5IGJlIDxjb2RlPnBpdGNoICogaGVpZ2h0PC9jb2RlPiBieXRlcyBpbiBzaXplLCBidXQgdGhlIDxjb2RlPmRzdEJ1ZjwvY29kZT4gcG9pbnRlciBjYW4gYWxzbyBiZSB1c2VkIHRvIGRlY29kZSBpbnRvIGEgc3BlY2lmaWMgcmVnaW9uIG9mIGEgbGFyZ2VyIGJ1ZmZlci48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj53aWR0aDwvdGQ+PHRkPndpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGltYWdlczwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpdGNoPC90ZD48dGQ+Ynl0ZXMgcGVyIGxpbmUgaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlLiBOb3JtYWxseSwgdGhpcyBzaG91bGQgYmUgPGNvZGU+d2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4gaWYgdGhlIGRlc3RpbmF0aW9uIGltYWdlIGlzIHVucGFkZGVkLCBvciA8Y29kZT48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiIHRpdGxlPSJQYWQgdGhlIGdpdmVuIHdpZHRoIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeS4iPlRKUEFEPC9hPih3aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdKTwvY29kZT4gaWYgZWFjaCBsaW5lIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBzaG91bGQgYmUgcGFkZGVkIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeSwgYXMgaXMgdGhlIGNhc2UgZm9yIFdpbmRvd3MgYml0bWFwcy4gWW91IGNhbiBhbHNvIGJlIGNsZXZlciBhbmQgdXNlIHRoZSBwaXRjaCBwYXJhbWV0ZXIgdG8gc2tpcCBsaW5lcywgZXRjLiBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDAgaXMgdGhlIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0byA8Y29kZT53aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdPC9jb2RlPi48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5oZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBhbmQgZGVzdGluYXRpb24gaW1hZ2VzPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGl4ZWxGb3JtYXQ8L3RkPjx0ZD5waXhlbCBmb3JtYXQgb2YgdGhlIGRlc3RpbmF0aW9uIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhIj5QaXhlbCBmb3JtYXRzPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZmxhZ3M8L3RkPjx0ZD50aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTcyZWNmNGViZTZlYjcwMmQzYzZmNWNhMjc0NTVlMWVjIj5mbGFnczwvYT48L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD4wIGlmIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhZDgwMjZhNDE3ZTE2YTc2MzEzYmMwYTZjOWU4YjJiYTIiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCBETExDQUxMIHRqRGVjb21wcmVzczIgPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhhbmRsZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+Y29uc3QgdW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmpwZWdCdWY8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnVuc2lnbmVkIGxvbmcmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ1NpemU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnVuc2lnbmVkIGNoYXIgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5kc3RCdWY8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT53aWR0aDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnBpdGNoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGl4ZWxGb3JtYXQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5mbGFnczwvZW0+JiMxNjA7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD48dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5EZWNvbXByZXNzIGEgSlBFRyBpbWFnZSB0byBhbiBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBpbWFnZS4gPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBvciB0cmFuc2Zvcm1lciBpbnN0YW5jZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdCdWY8L3RkPjx0ZD5wb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIEpQRUcgaW1hZ2UgdG8gZGVjb21wcmVzczwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdTaXplPC90ZD48dGQ+c2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gYnl0ZXMpPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZHN0QnVmPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4gVGhpcyBidWZmZXIgc2hvdWxkIG5vcm1hbGx5IGJlIDxjb2RlPnBpdGNoICogc2NhbGVkSGVpZ2h0PC9jb2RlPiBieXRlcyBpbiBzaXplLCB3aGVyZSA8Y29kZT5zY2FsZWRIZWlnaHQ8L2NvZGU+IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg0ODc4YmI2NTQwNDIwNDc0M2FhMThjYWMwMjc4MWRmIiB0aXRsZT0iQ29tcHV0ZSB0aGUgc2NhbGVkIHZhbHVlIG9mIGRpbWVuc2lvbiB1c2luZyB0aGUgZ2l2ZW4gc2NhbGluZyBmYWN0b3IuIj5USlNDQUxFRCgpPC9hPiB3aXRoIHRoZSBKUEVHIGltYWdlIGhlaWdodCBhbmQgb25lIG9mIHRoZSBzY2FsaW5nIGZhY3RvcnMgcmV0dXJuZWQgYnkgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTY0NDkwNDRiOWFmNDAyOTk5Y2NmNTJmNDAxMzMzYmU4IiB0aXRsZT0iUmV0dXJucyBhIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMgdGhhdCB0aGUgSlBFRyBkZWNvbXByZXNzb3IgaW4gdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBUdXIuLi4iPnRqR2V0U2NhbGluZ0ZhY3RvcnMoKTwvYT4uIFRoZSA8Y29kZT5kc3RCdWY8L2NvZGU+IHBvaW50ZXIgbWF5IGFsc28gYmUgdXNlZCB0byBkZWNvbXByZXNzIGludG8gYSBzcGVjaWZpYyByZWdpb24gb2YgYSBsYXJnZXIgYnVmZmVyLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPndpZHRoPC90ZD48dGQ+ZGVzaXJlZCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVzdGluYXRpb24gaW1hZ2UuIElmIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdCB3aXRoaW4gdGhlIGRlc2lyZWQgd2lkdGguIElmIDxjb2RlPndpZHRoPC9jb2RlPiBpcyBzZXQgdG8gMCwgdGhlbiBvbmx5IHRoZSBoZWlnaHQgd2lsbCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpdGNoPC90ZD48dGQ+Ynl0ZXMgcGVyIGxpbmUgaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlLiBOb3JtYWxseSwgdGhpcyBpcyA8Y29kZT5zY2FsZWRXaWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdPC9jb2RlPiBpZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIGlzIHVucGFkZGVkLCBlbHNlIDxjb2RlPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EwYWJhOTU1NDczMzE1ZTQwNTI5NWQ5NzhmMGMxNjUxMSIgdGl0bGU9IlBhZCB0aGUgZ2l2ZW4gd2lkdGggdG8gdGhlIG5lYXJlc3QgMzItYml0IGJvdW5kYXJ5LiI+VEpQQUQ8L2E+KHNjYWxlZFdpZHRoICogPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIiB0aXRsZT0iUGl4ZWwgc2l6ZSAoaW4gYnl0ZXMpIGZvciBhIGdpdmVuIHBpeGVsIGZvcm1hdC4iPnRqUGl4ZWxTaXplPC9hPltwaXhlbEZvcm1hdF0pPC9jb2RlPiBpZiBlYWNoIGxpbmUgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSBpcyBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgMzItYml0IGJvdW5kYXJ5LCBhcyBpcyB0aGUgY2FzZSBmb3IgV2luZG93cyBiaXRtYXBzLiAoTk9URTogPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg0ODc4YmI2NTQwNDIwNDc0M2FhMThjYWMwMjc4MWRmIiB0aXRsZT0iQ29tcHV0ZSB0aGUgc2NhbGVkIHZhbHVlIG9mIGRpbWVuc2lvbiB1c2luZyB0aGUgZ2l2ZW4gc2NhbGluZyBmYWN0b3IuIj5USlNDQUxFRCgpPC9hPiB3aXRoIHRoZSBKUEVHIGltYWdlIHdpZHRoIGFuZCBvbmUgb2YgdGhlIHNjYWxpbmcgZmFjdG9ycyByZXR1cm5lZCBieSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNjQ0OTA0NGI5YWY0MDI5OTljY2Y1MmY0MDEzMzNiZTgiIHRpdGxlPSJSZXR1cm5zIGEgbGlzdCBvZiBmcmFjdGlvbmFsIHNjYWxpbmcgZmFjdG9ycyB0aGF0IHRoZSBKUEVHIGRlY29tcHJlc3NvciBpbiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIFR1ci4uLiI+dGpHZXRTY2FsaW5nRmFjdG9ycygpPC9hPi4pIFlvdSBjYW4gYWxzbyBiZSBjbGV2ZXIgYW5kIHVzZSB0aGUgcGl0Y2ggcGFyYW1ldGVyIHRvIHNraXAgbGluZXMsIGV0Yy4gU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gPGNvZGU+c2NhbGVkV2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4uPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGVpZ2h0PC90ZD48dGQ+ZGVzaXJlZCBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIGRlc3RpbmF0aW9uIGltYWdlLiBJZiB0aGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcgaW1hZ2UgYmVpbmcgZGVjb21wcmVzc2VkLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZSBKUEVHIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0IHdpdGhpbiB0aGUgZGVzaXJlZCBoZWlnaHQuIElmIDxjb2RlPmhlaWdodDwvY29kZT4gaXMgc2V0IHRvIDAsIHRoZW4gb25seSB0aGUgd2lkdGggd2lsbCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpeGVsRm9ybWF0PC90ZD48dGQ+cGl4ZWwgZm9ybWF0IG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYSI+UGl4ZWwgZm9ybWF0czwvYT4uKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTNmY2VkNDU1ZTUwNGU4ZmY0ZmJhZDI4YmE5NGEzMDIwIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCB0akRlY29tcHJlc3NIZWFkZXIzIDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzU4ZDI2MzRlY2I0OTQ5ZGU3ODE1Y2JhNjIxZjU3NjMiPnRqaGFuZGxlPC9hPiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oYW5kbGU8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmNvbnN0IHVuc2lnbmVkIGNoYXIgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnQnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBsb25nJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmpwZWdTaXplPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT53aWR0aDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50IComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQgKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU3Vic2FtcDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50IComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ0NvbG9yc3BhY2U8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+UmV0cmlldmUgaW5mb3JtYXRpb24gYWJvdXQgYSBKUEVHIGltYWdlIHdpdGhvdXQgZGVjb21wcmVzc2luZyBpdC4gPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBvciB0cmFuc2Zvcm1lciBpbnN0YW5jZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdCdWY8L3RkPjx0ZD5wb2ludGVyIHRvIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1NpemU8L3RkPjx0ZD5zaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcyk8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj53aWR0aDwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gaW50ZWdlciB2YXJpYWJsZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIEpQRUcgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGludGVnZXIgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgSlBFRyBpbWFnZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmpwZWdTdWJzYW1wPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbnRlZ2VyIHZhcmlhYmxlIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIHdoZW4gdGhlIEpQRUcgaW1hZ2Ugd2FzIGNvbXByZXNzZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPkNocm9taW5hbmNlIHN1YnNhbXBsaW5nIG9wdGlvbnM8L2E+Lik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnQ29sb3JzcGFjZTwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gaW50ZWdlciB2YXJpYWJsZSB0aGF0IHdpbGwgcmVjZWl2ZSBvbmUgb2YgdGhlIEpQRUcgY29sb3JzcGFjZSBjb25zdGFudHMsIGluZGljYXRpbmcgdGhlIGNvbG9yc3BhY2Ugb2YgdGhlIEpQRUcgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjAiPkpQRUcgY29sb3JzcGFjZXM8L2E+Lik8L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD4wIGlmIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhMzllMDg5MDY1MjhkYjVhNzY0NjcwZWE0OGQzNDRiMDkiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCBETExDQUxMIHRqRGVjb21wcmVzc1RvWVVWMiA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgbG9uZyYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU2l6ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmRzdEJ1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGFkPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGVpZ2h0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZmxhZ3M8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+RGVjb21wcmVzcyBhIEpQRUcgaW1hZ2UgdG8gYSBZVVYgcGxhbmFyIGltYWdlLiA8L3A+Ci08cD5UaGlzIGZ1bmN0aW9uIHBlcmZvcm1zIEpQRUcgZGVjb21wcmVzc2lvbiBidXQgbGVhdmVzIG91dCB0aGUgY29sb3IgY29udmVyc2lvbiBzdGVwLCBzbyBhIHBsYW5hciBZVVYgaW1hZ2UgaXMgZ2VuZXJhdGVkIGluc3RlYWQgb2YgYW4gUkdCIGltYWdlLjwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oYW5kbGU8L3RkPjx0ZD5hIGhhbmRsZSB0byBhIFR1cmJvSlBFRyBkZWNvbXByZXNzb3Igb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnQnVmPC90ZD48dGQ+cG9pbnRlciB0byBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBKUEVHIGltYWdlIHRvIGRlY29tcHJlc3M8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5qcGVnU2l6ZTwvdGQ+PHRkPnNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmRzdEJ1ZjwvdGQ+PHRkPnBvaW50ZXIgdG8gYW4gaW1hZ2UgYnVmZmVyIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBZVVYgaW1hZ2UuIFVzZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjQ1MTY2NGE2MmMxZjZjN2NjNWE2NDAxZjMyOTA4YzkiIHRpdGxlPSJUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBwbGFuYXIgaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4uLiI+dGpCdWZTaXplWVVWMigpPC9hPiB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHNpemUgZm9yIHRoaXMgYnVmZmVyIGJhc2VkIG9uIHRoZSBpbWFnZSB3aWR0aCwgaGVpZ2h0LCBwYWRkaW5nLCBhbmQgbGV2ZWwgb2Ygc3Vic2FtcGxpbmcuIFRoZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIHdpbGwgYmUgc3RvcmVkIHNlcXVlbnRpYWxseSBpbiB0aGUgYnVmZmVyIChyZWZlciB0byA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI1lVVm5vdGVzIj5ZVVYgSW1hZ2UgRm9ybWF0IE5vdGVzPC9hPi4pPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD5kZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuIElmIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdCB3aXRoaW4gdGhlIGRlc2lyZWQgd2lkdGguIElmIDxjb2RlPndpZHRoPC9jb2RlPiBpcyBzZXQgdG8gMCwgdGhlbiBvbmx5IHRoZSBoZWlnaHQgd2lsbCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLiBJZiB0aGUgc2NhbGVkIHdpZHRoIGlzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBNQ1UgYmxvY2sgd2lkdGggKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiIHRpdGxlPSJNQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVVdpZHRoPC9hPiksIHRoZW4gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBjb3B5IHdpbGwgYmUgcGVyZm9ybWVkIHdpdGhpbiBUdXJib0pQRUcuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGFkPC90ZD48dGQ+dGhlIHdpZHRoIG9mIGVhY2ggbGluZSBpbiBlYWNoIHBsYW5lIG9mIHRoZSBZVVYgaW1hZ2Ugd2lsbCBiZSBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgdGhpcyBudW1iZXIgb2YgYnl0ZXMgKG11c3QgYmUgYSBwb3dlciBvZiAyLikgVG8gZ2VuZXJhdGUgaW1hZ2VzIHN1aXRhYmxlIGZvciBYIFZpZGVvLCA8Y29kZT5wYWQ8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gNC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5kZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiBJZiB0aGlzIGlzIGRpZmZlcmVudCB0aGFuIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcgaW1hZ2UgYmVpbmcgZGVjb21wcmVzc2VkLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZSBKUEVHIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0IHdpdGhpbiB0aGUgZGVzaXJlZCBoZWlnaHQuIElmIDxjb2RlPmhlaWdodDwvY29kZT4gaXMgc2V0IHRvIDAsIHRoZW4gb25seSB0aGUgd2lkdGggd2lsbCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLiBJZiB0aGUgc2NhbGVkIGhlaWdodCBpcyBub3QgYW4gZXZlbiBtdWx0aXBsZSBvZiB0aGUgTUNVIGJsb2NrIGhlaWdodCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FiZDI0N2JiOWZlY2IzOTNlY2E1NzM2NmZlYjgzMjdiZiIgdGl0bGU9Ik1DVSBibG9jayBoZWlnaHQgKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVUhlaWdodDwvYT4pLCB0aGVuIGFuIGludGVybWVkaWF0ZSBidWZmZXIgY29weSB3aWxsIGJlIHBlcmZvcm1lZCB3aXRoaW4gVHVyYm9KUEVHLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTM4ZDBlZjkwNjkyNjYzYjNmZmI1YjE2ZGEyNTQxNTEyIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCB0akRlY29tcHJlc3NUb1lVVlBsYW5lcyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgbG9uZyYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU2l6ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5kc3RQbGFuZXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT53aWR0aDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50IComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3RyaWRlczwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhlaWdodDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmZsYWdzPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkRlY29tcHJlc3MgYSBKUEVHIGltYWdlIGludG8gc2VwYXJhdGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcy4gPC9wPgotPHA+VGhpcyBmdW5jdGlvbiBwZXJmb3JtcyBKUEVHIGRlY29tcHJlc3Npb24gYnV0IGxlYXZlcyBvdXQgdGhlIGNvbG9yIGNvbnZlcnNpb24gc3RlcCwgc28gYSBwbGFuYXIgWVVWIGltYWdlIGlzIGdlbmVyYXRlZCBpbnN0ZWFkIG9mIGFuIFJHQiBpbWFnZS48L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGFuZGxlPC90ZD48dGQ+YSBoYW5kbGUgdG8gYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIG9yIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ0J1ZjwvdGQ+PHRkPnBvaW50ZXIgdG8gYSBidWZmZXIgY29udGFpbmluZyB0aGUgSlBFRyBpbWFnZSB0byBkZWNvbXByZXNzPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1NpemU8L3RkPjx0ZD5zaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcyk8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kc3RQbGFuZXM8L3RkPjx0ZD5hbiBhcnJheSBvZiBwb2ludGVycyB0byBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIChvciBqdXN0IGEgWSBwbGFuZSwgaWYgZGVjb21wcmVzc2luZyBhIGdyYXlzY2FsZSBpbWFnZSkgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIFlVViBpbWFnZS4gVGhlc2UgcGxhbmVzIGNhbiBiZSBjb250aWd1b3VzIG9yIG5vbi1jb250aWd1b3VzIGluIG1lbW9yeS4gVXNlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMiIgdGl0bGU9IlRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuLi4iPnRqUGxhbmVTaXplWVVWKCk8L2E+IHRvIGRldGVybWluZSB0aGUgYXBwcm9wcmlhdGUgc2l6ZSBmb3IgZWFjaCBwbGFuZSBiYXNlZCBvbiB0aGUgc2NhbGVkIGltYWdlIHdpZHRoLCBzY2FsZWQgaW1hZ2UgaGVpZ2h0LCBzdHJpZGVzLCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIFJlZmVyIHRvIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjWVVWbm90ZXMiPllVViBJbWFnZSBGb3JtYXQgTm90ZXM8L2E+IGZvciBtb3JlIGRldGFpbHMuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD5kZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuIElmIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdCB3aXRoaW4gdGhlIGRlc2lyZWQgd2lkdGguIElmIDxjb2RlPndpZHRoPC9jb2RlPiBpcyBzZXQgdG8gMCwgdGhlbiBvbmx5IHRoZSBoZWlnaHQgd2lsbCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLiBJZiB0aGUgc2NhbGVkIHdpZHRoIGlzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBNQ1UgYmxvY2sgd2lkdGggKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWU2MWU3Y2Q0N2ExNWExNzMyODNiYTk0ZTc4MTMwOGMiIHRpdGxlPSJNQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIj50ak1DVVdpZHRoPC9hPiksIHRoZW4gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBjb3B5IHdpbGwgYmUgcGVyZm9ybWVkIHdpdGhpbiBUdXJib0pQRUcuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3RyaWRlczwvdGQ+PHRkPmFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgb3V0cHV0IGltYWdlLiBTZXR0aW5nIHRoZSBzdHJpZGUgZm9yIGFueSBwbGFuZSB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHNjYWxlZCBwbGFuZSB3aWR0aCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjWVVWbm90ZXMiPllVViBJbWFnZSBGb3JtYXQgTm90ZXM8L2E+LikgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgTlVMTCwgdGhlbiB0aGUgc3RyaWRlcyBmb3IgYWxsIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIHNjYWxlZCBwbGFuZSB3aWR0aHMuIFlvdSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZyB0byBlYWNoIHBsYW5lIG9yIHRvIGRlY29tcHJlc3MgdGhlIEpQRUcgaW1hZ2UgaW50byBhIHN1YnJlZ2lvbiBvZiBhIGxhcmdlciBZVVYgcGxhbmFyIGltYWdlLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhlaWdodDwvdGQ+PHRkPmRlc2lyZWQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuIElmIHRoaXMgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGhlaWdodCBvZiB0aGUgSlBFRyBpbWFnZSBiZWluZyBkZWNvbXByZXNzZWQsIHRoZW4gVHVyYm9KUEVHIHdpbGwgdXNlIHNjYWxpbmcgaW4gdGhlIEpQRUcgZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQgd2l0aGluIHRoZSBkZXNpcmVkIGhlaWdodC4gSWYgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpcyBzZXQgdG8gMCwgdGhlbiBvbmx5IHRoZSB3aWR0aCB3aWxsIGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuIElmIHRoZSBzY2FsZWQgaGVpZ2h0IGlzIG5vdCBhbiBldmVuIG11bHRpcGxlIG9mIHRoZSBNQ1UgYmxvY2sgaGVpZ2h0IChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWJkMjQ3YmI5ZmVjYjM5M2VjYTU3MzY2ZmViODMyN2JmIiB0aXRsZT0iTUNVIGJsb2NrIGhlaWdodCAoaW4gcGl4ZWxzKSBmb3IgYSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4iPnRqTUNVSGVpZ2h0PC9hPiksIHRoZW4gYW4gaW50ZXJtZWRpYXRlIGJ1ZmZlciBjb3B5IHdpbGwgYmUgcGVyZm9ybWVkIHdpdGhpbiBUdXJib0pQRUcuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZmxhZ3M8L3RkPjx0ZD50aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTcyZWNmNGViZTZlYjcwMmQzYzZmNWNhMjc0NTVlMWVjIj5mbGFnczwvYT48L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD4wIGlmIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNjc0YWRlZTkxN2I5NWFkNGE4OTZmMWJhMzllMTI1NDAiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCBETExDQUxMIHRqRGVzdHJveSA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT48L3RkPjx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5EZXN0cm95IGEgVHVyYm9KUEVHIGNvbXByZXNzb3IsIGRlY29tcHJlc3Nvciwgb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2UuIDwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oYW5kbGU8L3RkPjx0ZD5hIGhhbmRsZSB0byBhIFR1cmJvSlBFRyBjb21wcmVzc29yLCBkZWNvbXByZXNzb3Igb3IgdHJhbnNmb3JtZXIgaW5zdGFuY2U8L3RkPjwvdHI+Ci0gIDwvdGFibGU+Ci0gIDwvZGQ+Ci08L2RsPgotPGRsIGNsYXNzPSJzZWN0aW9uIHJldHVybiI+PGR0PlJldHVybnM8L2R0PjxkZD4wIGlmIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhYWJlMDVhY2Q3MzQ5OTAwNTNhZDEyOTRiNWVmMjM5YWEiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCBETExDQUxMIHRqRW5jb2RlWVVWMyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3JjQnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+d2lkdGg8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5waXRjaDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhlaWdodDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnBpeGVsRm9ybWF0PC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZHN0QnVmPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGFkPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3Vic2FtcDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmZsYWdzPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkVuY29kZSBhbiBSR0Igb3IgZ3JheXNjYWxlIGltYWdlIGludG8gYSBZVVYgcGxhbmFyIGltYWdlLiA8L3A+Ci08cD5UaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFjY2VsZXJhdGVkIGNvbG9yIGNvbnZlcnNpb24gcm91dGluZXMgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUgYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRyBjb21wcmVzc2lvbiBwcm9jZXNzLjwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oYW5kbGU8L3RkPjx0ZD5hIGhhbmRsZSB0byBhIFR1cmJvSlBFRyBjb21wcmVzc29yIG9yIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3JjQnVmPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgY29udGFpbmluZyBSR0Igb3IgZ3JheXNjYWxlIHBpeGVscyB0byBiZSBlbmNvZGVkPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgc291cmNlIGltYWdlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGl0Y2g8L3RkPjx0ZD5ieXRlcyBwZXIgbGluZSBpbiB0aGUgc291cmNlIGltYWdlLiBOb3JtYWxseSwgdGhpcyBzaG91bGQgYmUgPGNvZGU+d2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4gaWYgdGhlIGltYWdlIGlzIHVucGFkZGVkLCBvciA8Y29kZT48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiIHRpdGxlPSJQYWQgdGhlIGdpdmVuIHdpZHRoIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeS4iPlRKUEFEPC9hPih3aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdKTwvY29kZT4gaWYgZWFjaCBsaW5lIG9mIHRoZSBpbWFnZSBpcyBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgMzItYml0IGJvdW5kYXJ5LCBhcyBpcyB0aGUgY2FzZSBmb3IgV2luZG93cyBiaXRtYXBzLiBZb3UgY2FuIGFsc28gYmUgY2xldmVyIGFuZCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc2tpcCBsaW5lcywgZXRjLiBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDAgaXMgdGhlIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0byA8Y29kZT53aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdPC9jb2RlPi48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5oZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBpbWFnZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpeGVsRm9ybWF0PC90ZD48dGQ+cGl4ZWwgZm9ybWF0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmEiPlBpeGVsIGZvcm1hdHM8L2E+Lik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kc3RCdWY8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGltYWdlIGJ1ZmZlciB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgWVVWIGltYWdlLiBVc2UgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWY0NTE2NjRhNjJjMWY2YzdjYzVhNjQwMWYzMjkwOGM5IiB0aXRsZT0iVGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgcGxhbmFyIGltYWdlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuLi4iPnRqQnVmU2l6ZVlVVjIoKTwvYT4gdG8gZGV0ZXJtaW5lIHRoZSBhcHByb3ByaWF0ZSBzaXplIGZvciB0aGlzIGJ1ZmZlciBiYXNlZCBvbiB0aGUgaW1hZ2Ugd2lkdGgsIGhlaWdodCwgcGFkZGluZywgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiBUaGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyB3aWxsIGJlIHN0b3JlZCBzZXF1ZW50aWFsbHkgaW4gdGhlIGJ1ZmZlciAocmVmZXIgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4uKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBhZDwvdGQ+PHRkPnRoZSB3aWR0aCBvZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgWVVWIGltYWdlIHdpbGwgYmUgcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YgMi4pIFRvIGdlbmVyYXRlIGltYWdlcyBzdWl0YWJsZSBmb3IgWCBWaWRlbywgPGNvZGU+cGFkPC9jb2RlPiBzaG91bGQgYmUgc2V0IHRvIDQuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3Vic2FtcDwvdGQ+PHRkPnRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB0byBiZSB1c2VkIHdoZW4gZ2VuZXJhdGluZyB0aGUgWVVWIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pIFRvIGdlbmVyYXRlIGltYWdlcyBzdWl0YWJsZSBmb3IgWCBWaWRlbywgPGNvZGU+c3Vic2FtcDwvY29kZT4gc2hvdWxkIGJlIHNldCB0byA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YTYzMDg1ZGJmNjgzY2ZlMzllNTEzY2RiNjM0M2UzNzM3Ij5USlNBTVBfNDIwPC9hPi4gVGhpcyBwcm9kdWNlcyBhbiBpbWFnZSBjb21wYXRpYmxlIHdpdGggdGhlIEk0MjAgKEFLQSAiWVVWNDIwUCIpIGZvcm1hdC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5mbGFnczwvdGQ+PHRkPnRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzJlY2Y0ZWJlNmViNzAyZDNjNmY1Y2EyNzQ1NWUxZWMiPmZsYWdzPC9hPjwvdGQ+PC90cj4KLSAgPC90YWJsZT4KLSAgPC9kZD4KLTwvZGw+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPjAgaWYgc3VjY2Vzc2Z1bCwgb3IgLTEgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiIHRpdGxlPSJSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoeSB0aGUgbGFzdCBjb21tYW5kIGZhaWxlZC4iPnRqR2V0RXJyb3JTdHIoKTwvYT4uKSA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2E4YTY1ZWQzYmQxMmRmNTdjMjE5ZDQ2YWZiYzkwMDhmMSI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgaW50IERMTENBTEwgdGpFbmNvZGVZVVZQbGFuZXMgPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhhbmRsZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+Y29uc3QgdW5zaWduZWQgY2hhciAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnNyY0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+cGl0Y2g8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5waXhlbEZvcm1hdDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgY2hhciAqKiYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5kc3RQbGFuZXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnN0cmlkZXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5zdWJzYW1wPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZmxhZ3M8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+RW5jb2RlIGFuIFJHQiBvciBncmF5c2NhbGUgaW1hZ2UgaW50byBzZXBhcmF0ZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzLiA8L3A+Ci08cD5UaGlzIGZ1bmN0aW9uIHVzZXMgdGhlIGFjY2VsZXJhdGVkIGNvbG9yIGNvbnZlcnNpb24gcm91dGluZXMgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUgYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRyBjb21wcmVzc2lvbiBwcm9jZXNzLjwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oYW5kbGU8L3RkPjx0ZD5hIGhhbmRsZSB0byBhIFR1cmJvSlBFRyBjb21wcmVzc29yIG9yIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+c3JjQnVmPC90ZD48dGQ+cG9pbnRlciB0byBhbiBpbWFnZSBidWZmZXIgY29udGFpbmluZyBSR0Igb3IgZ3JheXNjYWxlIHBpeGVscyB0byBiZSBlbmNvZGVkPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+d2lkdGg8L3RkPjx0ZD53aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgc291cmNlIGltYWdlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+cGl0Y2g8L3RkPjx0ZD5ieXRlcyBwZXIgbGluZSBpbiB0aGUgc291cmNlIGltYWdlLiBOb3JtYWxseSwgdGhpcyBzaG91bGQgYmUgPGNvZGU+d2lkdGggKiA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMiIHRpdGxlPSJQaXhlbCBzaXplIChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiI+dGpQaXhlbFNpemU8L2E+W3BpeGVsRm9ybWF0XTwvY29kZT4gaWYgdGhlIGltYWdlIGlzIHVucGFkZGVkLCBvciA8Y29kZT48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEiIHRpdGxlPSJQYWQgdGhlIGdpdmVuIHdpZHRoIHRvIHRoZSBuZWFyZXN0IDMyLWJpdCBib3VuZGFyeS4iPlRKUEFEPC9hPih3aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdKTwvY29kZT4gaWYgZWFjaCBsaW5lIG9mIHRoZSBpbWFnZSBpcyBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgMzItYml0IGJvdW5kYXJ5LCBhcyBpcyB0aGUgY2FzZSBmb3IgV2luZG93cyBiaXRtYXBzLiBZb3UgY2FuIGFsc28gYmUgY2xldmVyIGFuZCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc2tpcCBsaW5lcywgZXRjLiBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDAgaXMgdGhlIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0byA8Y29kZT53aWR0aCAqIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YyIgdGl0bGU9IlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIj50alBpeGVsU2l6ZTwvYT5bcGl4ZWxGb3JtYXRdPC9jb2RlPi48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5oZWlnaHQ8L3RkPjx0ZD5oZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIHNvdXJjZSBpbWFnZTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBpeGVsRm9ybWF0PC90ZD48dGQ+cGl4ZWwgZm9ybWF0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmEiPlBpeGVsIGZvcm1hdHM8L2E+Lik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kc3RQbGFuZXM8L3RkPjx0ZD5hbiBhcnJheSBvZiBwb2ludGVycyB0byBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIChvciBqdXN0IGEgWSBwbGFuZSwgaWYgZ2VuZXJhdGluZyBhIGdyYXlzY2FsZSBpbWFnZSkgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGVuY29kZWQgaW1hZ2UuIFRoZXNlIHBsYW5lcyBjYW4gYmUgY29udGlndW91cyBvciBub24tY29udGlndW91cyBpbiBtZW1vcnkuIFVzZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNmY5OGQ5NzdiZmE5ZDE2N2M5NzE3MmU4NzZiYTYxZTIiIHRpdGxlPSJUaGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLi4uIj50alBsYW5lU2l6ZVlVVigpPC9hPiB0byBkZXRlcm1pbmUgdGhlIGFwcHJvcHJpYXRlIHNpemUgZm9yIGVhY2ggcGxhbmUgYmFzZWQgb24gdGhlIGltYWdlIHdpZHRoLCBoZWlnaHQsIHN0cmlkZXMsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gUmVmZXIgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4gZm9yIG1vcmUgZGV0YWlscy48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdHJpZGVzPC90ZD48dGQ+YW4gYXJyYXkgb2YgaW50ZWdlcnMsIGVhY2ggc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBsaW5lIGluIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lIG9mIHRoZSBvdXRwdXQgaW1hZ2UuIFNldHRpbmcgdGhlIHN0cmlkZSBmb3IgYW55IHBsYW5lIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgcGxhbmUgd2lkdGggKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI1lVVm5vdGVzIj5ZVVYgSW1hZ2UgRm9ybWF0IE5vdGVzPC9hPi4pIElmIDxjb2RlPnN0cmlkZXM8L2NvZGU+IGlzIE5VTEwsIHRoZW4gdGhlIHN0cmlkZXMgZm9yIGFsbCBwbGFuZXMgd2lsbCBiZSBzZXQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwbGFuZSB3aWR0aHMuIFlvdSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZyB0byBlYWNoIHBsYW5lIG9yIHRvIGVuY29kZSBhbiBSR0Igb3IgZ3JheXNjYWxlIGltYWdlIGludG8gYSBzdWJyZWdpb24gb2YgYSBsYXJnZXIgWVVWIHBsYW5hciBpbWFnZS48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+dGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHRvIGJlIHVzZWQgd2hlbiBnZW5lcmF0aW5nIHRoZSBZVVYgaW1hZ2UgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzQiPkNocm9taW5hbmNlIHN1YnNhbXBsaW5nIG9wdGlvbnM8L2E+LikgVG8gZ2VuZXJhdGUgaW1hZ2VzIHN1aXRhYmxlIGZvciBYIFZpZGVvLCA8Y29kZT5zdWJzYW1wPC9jb2RlPiBzaG91bGQgYmUgc2V0IHRvIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzRhNjMwODVkYmY2ODNjZmUzOWU1MTNjZGI2MzQzZTM3MzciPlRKU0FNUF80MjA8L2E+LiBUaGlzIHByb2R1Y2VzIGFuIGltYWdlIGNvbXBhdGlibGUgd2l0aCB0aGUgSTQyMCAoQUtBICJZVVY0MjBQIikgZm9ybWF0LjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYThjNGExMjMxZGMwNmE0NTA1MTRjODM1ZjY0NzFmMTM3Ij48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCB2b2lkIERMTENBTEwgdGpGcmVlIDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj51bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+YnVmZmVyPC9lbT48L3RkPjx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5GcmVlIGFuIGltYWdlIGJ1ZmZlciBwcmV2aW91c2x5IGFsbG9jYXRlZCBieSBUdXJib0pQRUcuIDwvcD4KLTxwPllvdSBzaG91bGQgYWx3YXlzIHVzZSB0aGlzIGZ1bmN0aW9uIHRvIGZyZWUgSlBFRyBkZXN0aW5hdGlvbiBidWZmZXIocykgdGhhdCB3ZXJlIGF1dG9tYXRpY2FsbHkgKHJlKWFsbG9jYXRlZCBieSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjM4ZjJlZDQ0YmRjODhlNzMwZTA4YjYzMmZhNmU4OGUiIHRpdGxlPSJDb21wcmVzcyBhbiBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBpbWFnZSBpbnRvIGEgSlBFRyBpbWFnZS4iPnRqQ29tcHJlc3MyKCk8L2E+IG9yIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYSIgdGl0bGU9Ikxvc3NsZXNzbHkgdHJhbnNmb3JtIGEgSlBFRyBpbWFnZSBpbnRvIGFub3RoZXIgSlBFRyBpbWFnZS4iPnRqVHJhbnNmb3JtKCk8L2E+IG9yIHRoYXQgd2VyZSBtYW51YWxseSBhbGxvY2F0ZWQgdXNpbmcgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmIiB0aXRsZT0iQWxsb2NhdGUgYW4gaW1hZ2UgYnVmZmVyIGZvciB1c2Ugd2l0aCBUdXJib0pQRUcuIj50akFsbG9jKCk8L2E+LjwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5idWZmZXI8L3RkPjx0ZD5hZGRyZXNzIG9mIHRoZSBidWZmZXIgdG8gZnJlZTwvdGQ+PC90cj4KLSAgPC90YWJsZT4KLSAgPC9kZD4KLTwvZGw+Ci08ZGwgY2xhc3M9InNlY3Rpb24gc2VlIj48ZHQ+U2VlIEFsc288L2R0PjxkZD48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiIHRpdGxlPSJBbGxvY2F0ZSBhbiBpbWFnZSBidWZmZXIgZm9yIHVzZSB3aXRoIFR1cmJvSlBFRy4iPnRqQWxsb2MoKTwvYT4gPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGNoYXIqIERMTENBTEwgdGpHZXRFcnJvclN0ciA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dm9pZCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjwvdGQ+PHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiA8L3A+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPmEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoeSB0aGUgbGFzdCBjb21tYW5kIGZhaWxlZC4gPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNjQ0OTA0NGI5YWY0MDI5OTljY2Y1MmY0MDEzMzNiZTgiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwiPnRqc2NhbGluZ2ZhY3RvcjwvYT4qIERMTENBTEwgdGpHZXRTY2FsaW5nRmFjdG9ycyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50IComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+bnVtc2NhbGluZ2ZhY3RvcnM8L2VtPjwvdGQ+PHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlJldHVybnMgYSBsaXN0IG9mIGZyYWN0aW9uYWwgc2NhbGluZyBmYWN0b3JzIHRoYXQgdGhlIEpQRUcgZGVjb21wcmVzc29yIGluIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgVHVyYm9KUEVHIHN1cHBvcnRzLiA8L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+bnVtc2NhbGluZ2ZhY3RvcnM8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGludGVnZXIgdmFyaWFibGUgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiB0aGUgbGlzdDwvdGQ+PC90cj4KLSAgPC90YWJsZT4KLSAgPC9kZD4KLTwvZGw+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPmEgcG9pbnRlciB0byBhIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMsIG9yIE5VTEwgaWYgYW4gZXJyb3IgaXMgZW5jb3VudGVyZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiIHRpdGxlPSJSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoeSB0aGUgbGFzdCBjb21tYW5kIGZhaWxlZC4iPnRqR2V0RXJyb3JTdHIoKTwvYT4uKSA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2EzZDEwYzQ3ZmJlNGEyNDg5YTJiMzBjOTMxNTUxZDAxYSI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gRExMQ0FMTCB0akluaXRDb21wcmVzcyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dm9pZCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjwvdGQ+PHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkNyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlLiA8L3A+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPmEgaGFuZGxlIHRvIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlLCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhZTU0MDgxNzlkMDQxZTJhMmY3MTk5YzgyODNjZjY0OWUiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MyI+dGpoYW5kbGU8L2E+IERMTENBTEwgdGpJbml0RGVjb21wcmVzcyA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dm9pZCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjwvdGQ+PHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkNyZWF0ZSBhIFR1cmJvSlBFRyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuIDwvcD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+YSBoYW5kbGUgdG8gdGhlIG5ld2x5LWNyZWF0ZWQgaW5zdGFuY2UsIG9yIE5VTEwgaWYgYW4gZXJyb3Igb2NjdXJyZWQgKHNlZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYiIHRpdGxlPSJSZXR1cm5zIGEgZGVzY3JpcHRpdmUgZXJyb3IgbWVzc2FnZSBleHBsYWluaW5nIHdoeSB0aGUgbGFzdCBjb21tYW5kIGZhaWxlZC4iPnRqR2V0RXJyb3JTdHIoKTwvYT4uKSA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2EzMTU1Yjc3NWJmYmFjOWRiYmE4NjliOTVhMDM2NzkwMiI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4gRExMQ0FMTCB0akluaXRUcmFuc2Zvcm0gPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnZvaWQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48L3RkPjx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5DcmVhdGUgYSBuZXcgVHVyYm9KUEVHIHRyYW5zZm9ybWVyIGluc3RhbmNlLiA8L3A+Ci08ZGwgY2xhc3M9InNlY3Rpb24gcmV0dXJuIj48ZHQ+UmV0dXJuczwvZHQ+PGRkPmEgaGFuZGxlIHRvIHRoZSBuZXdseS1jcmVhdGVkIGluc3RhbmNlLCBvciBOVUxMIGlmIGFuIGVycm9yIG9jY3VycmVkIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTlhZjc5YzkwOGVjMTMxYjFhZThkNTJmZTQwMzc1YWJmIiB0aXRsZT0iUmV0dXJucyBhIGRlc2NyaXB0aXZlIGVycm9yIG1lc3NhZ2UgZXhwbGFpbmluZyB3aHkgdGhlIGxhc3QgY29tbWFuZCBmYWlsZWQuIj50akdldEVycm9yU3RyKCk8L2E+LikgPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhMWEyMDk2OTZjNmE4MDc0OGYyMGUxMzRiM2M2NDc4OWYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCB0alBsYW5lSGVpZ2h0IDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+Y29tcG9uZW50SUQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5oZWlnaHQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5zdWJzYW1wPC9lbT4mIzE2MDs8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkPik8L3RkPgotICAgICAgICAgIDx0ZD48L3RkPjx0ZD48L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlRoZSBwbGFuZSBoZWlnaHQgb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gPC9wPgotPHA+UmVmZXIgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgcGxhbmUgaGVpZ2h0LjwvcD4KLTxkbCBjbGFzcz0icGFyYW1zIj48ZHQ+UGFyYW1ldGVyczwvZHQ+PGRkPgotICA8dGFibGUgY2xhc3M9InBhcmFtcyI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5jb21wb25lbnRJRDwvdGQ+PHRkPklEIG51bWJlciBvZiB0aGUgaW1hZ2UgcGxhbmUgKDAgPSBZLCAxID0gVS9DYiwgMiA9IFYvQ3IpPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+aGVpZ2h0PC90ZD48dGQ+aGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+bGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4gdGhlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+dGhlIHBsYW5lIGhlaWdodCBvZiBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLCBvciAtMSBpZiB0aGUgYXJndW1lbnRzIGFyZSBvdXQgb2YgYm91bmRzLiA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMiI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5ETExFWFBPUlQgdW5zaWduZWQgbG9uZyBETExDQUxMIHRqUGxhbmVTaXplWVVWIDwvdGQ+Ci0gICAgICAgICAgPHRkPig8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+Y29tcG9uZW50SUQ8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT53aWR0aDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnN0cmlkZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmhlaWdodDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnN1YnNhbXA8L2VtPiYjMTYwOzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQ+KTwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+PHRkPjwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmNvbXBvbmVudElEPC90ZD48dGQ+SUQgbnVtYmVyIG9mIHRoZSBpbWFnZSBwbGFuZSAoMCA9IFksIDEgPSBVL0NiLCAyID0gVi9Dcik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj53aWR0aDwvdGQ+PHRkPndpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuIE5PVEU6IHRoaXMgaXMgdGhlIHdpZHRoIG9mIHRoZSB3aG9sZSBpbWFnZSwgbm90IHRoZSBwbGFuZSB3aWR0aC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdHJpZGU8L3RkPjx0ZD5ieXRlcyBwZXIgbGluZSBpbiB0aGUgaW1hZ2UgcGxhbmUuIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gdGhlIHBsYW5lIHdpZHRoLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhlaWdodDwvdGQ+PHRkPmhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiBOT1RFOiB0aGlzIGlzIHRoZSBoZWlnaHQgb2YgdGhlIHdob2xlIGltYWdlLCBub3QgdGhlIHBsYW5lIGhlaWdodC48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+bGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4gdGhlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+dGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgdGhlIFlVViBpbWFnZSBwbGFuZSwgb3IgLTEgaWYgdGhlIGFyZ3VtZW50cyBhcmUgb3V0IG9mIGJvdW5kcy4gPC9kZD48L2RsPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhNjNmYjY2YmIxZTM2Yzc0MDA4YzQ2MzQzNjBiZWNiYjEiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+RExMRVhQT1JUIGludCB0alBsYW5lV2lkdGggPC90ZD4KLSAgICAgICAgICA8dGQ+KDwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5jb21wb25lbnRJRDwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPndpZHRoPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5pbnQmIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+c3Vic2FtcDwvZW0+JiMxNjA7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD48dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgcGxhbmUgd2lkdGggb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4gPC9wPgotPHA+UmVmZXIgdG8gPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNZVVZub3RlcyI+WVVWIEltYWdlIEZvcm1hdCBOb3RlczwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgcGxhbmUgd2lkdGguPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmNvbXBvbmVudElEPC90ZD48dGQ+SUQgbnVtYmVyIG9mIHRoZSBpbWFnZSBwbGFuZSAoMCA9IFksIDEgPSBVL0NiLCAyID0gVi9Dcik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj53aWR0aDwvdGQ+PHRkPndpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2U8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5zdWJzYW1wPC90ZD48dGQ+bGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4gdGhlIGltYWdlIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0Ij5DaHJvbWluYW5jZSBzdWJzYW1wbGluZyBvcHRpb25zPC9hPi4pPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+dGhlIHBsYW5lIHdpZHRoIG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMsIG9yIC0xIGlmIHRoZSBhcmd1bWVudHMgYXJlIG91dCBvZiBib3VuZHMuIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWQwMmNkNDJiNjlmMTkzYTA2MjNhOWM4MDE3ODhkZjNhIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPkRMTEVYUE9SVCBpbnQgRExMQ0FMTCB0alRyYW5zZm9ybSA8L3RkPgotICAgICAgICAgIDx0ZD4oPC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTc1OGQyNjM0ZWNiNDk0OWRlNzgxNWNiYTYyMWY1NzYzIj50amhhbmRsZTwvYT4mIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+aGFuZGxlPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj5jb25zdCB1bnNpZ25lZCBjaGFyIComIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+anBlZ0J1ZjwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgbG9uZyYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5qcGVnU2l6ZTwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+aW50JiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPm48L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPnVuc2lnbmVkIGNoYXIgKiomIzE2MDs8L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1uYW1lIj48ZW0+ZHN0QnVmczwvZW0+LCA8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbWtleSI+PC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtdHlwZSI+dW5zaWduZWQgbG9uZyAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPmRzdFNpemVzPC9lbT4sIDwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFta2V5Ij48L3RkPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW10eXBlIj48YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiPnRqdHJhbnNmb3JtPC9hPiAqJiMxNjA7PC90ZD4KLSAgICAgICAgICA8dGQgY2xhc3M9InBhcmFtbmFtZSI+PGVtPnRyYW5zZm9ybXM8L2VtPiwgPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0icGFyYW1rZXkiPjwvdGQ+Ci0gICAgICAgICAgPHRkPjwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbXR5cGUiPmludCYjMTYwOzwvdGQ+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJwYXJhbW5hbWUiPjxlbT5mbGFnczwvZW0+JiMxNjA7PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZD48L3RkPgotICAgICAgICAgIDx0ZD4pPC90ZD4KLSAgICAgICAgICA8dGQ+PC90ZD48dGQ+PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5Mb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIDwvcD4KLTxwPkxvc3NsZXNzIHRyYW5zZm9ybXMgd29yayBieSBtb3ZpbmcgdGhlIHJhdyBEQ1QgY29lZmZpY2llbnRzIGZyb20gb25lIEpQRUcgaW1hZ2Ugc3RydWN0dXJlIHRvIGFub3RoZXIgd2l0aG91dCBhbHRlcmluZyB0aGUgdmFsdWVzIG9mIHRoZSBjb2VmZmljaWVudHMuIFdoaWxlIHRoaXMgaXMgdHlwaWNhbGx5IGZhc3RlciB0aGFuIGRlY29tcHJlc3NpbmcgdGhlIGltYWdlLCB0cmFuc2Zvcm1pbmcgaXQsIGFuZCByZS1jb21wcmVzc2luZyBpdCwgbG9zc2xlc3MgdHJhbnNmb3JtcyBhcmUgbm90IGZyZWUuIEVhY2ggbG9zc2xlc3MgdHJhbnNmb3JtIHJlcXVpcmVzIHJlYWRpbmcgYW5kIHBlcmZvcm1pbmcgSHVmZm1hbiBkZWNvZGluZyBvbiBhbGwgb2YgdGhlIGNvZWZmaWNpZW50cyBpbiB0aGUgc291cmNlIGltYWdlLCByZWdhcmRsZXNzIG9mIHRoZSBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZS4gVGh1cywgdGhpcyBmdW5jdGlvbiBwcm92aWRlcyBhIG1lYW5zIG9mIGdlbmVyYXRpbmcgbXVsdGlwbGUgdHJhbnNmb3JtZWQgaW1hZ2VzIGZyb20gdGhlIHNhbWUgc291cmNlIG9yIGFwcGx5aW5nIG11bHRpcGxlIHRyYW5zZm9ybWF0aW9ucyBzaW11bHRhbmVvdXNseSwgaW4gb3JkZXIgdG8gZWxpbWluYXRlIHRoZSBuZWVkIHRvIHJlYWQgdGhlIHNvdXJjZSBjb2VmZmljaWVudHMgbXVsdGlwbGUgdGltZXMuPC9wPgotPGRsIGNsYXNzPSJwYXJhbXMiPjxkdD5QYXJhbWV0ZXJzPC9kdD48ZGQ+Ci0gIDx0YWJsZSBjbGFzcz0icGFyYW1zIj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmhhbmRsZTwvdGQ+PHRkPmEgaGFuZGxlIHRvIGEgVHVyYm9KUEVHIHRyYW5zZm9ybWVyIGluc3RhbmNlPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ0J1ZjwvdGQ+PHRkPnBvaW50ZXIgdG8gYSBidWZmZXIgY29udGFpbmluZyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2UgdG8gdHJhbnNmb3JtPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+anBlZ1NpemU8L3RkPjx0ZD5zaXplIG9mIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSAoaW4gYnl0ZXMpPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+bjwvdGQ+PHRkPnRoZSBudW1iZXIgb2YgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZXMgdG8gZ2VuZXJhdGU8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5kc3RCdWZzPC90ZD48dGQ+cG9pbnRlciB0byBhbiBhcnJheSBvZiBuIGltYWdlIGJ1ZmZlcnMuIDxjb2RlPmRzdEJ1ZnNbaV08L2NvZGU+IHdpbGwgcmVjZWl2ZSBhIEpQRUcgaW1hZ2UgdGhhdCBoYXMgYmVlbiB0cmFuc2Zvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVycyBpbiA8Y29kZT50cmFuc2Zvcm1zW2ldPC9jb2RlPi4gVHVyYm9KUEVHIGhhcyB0aGUgYWJpbGl0eSB0byByZWFsbG9jYXRlIHRoZSBKUEVHIGJ1ZmZlciB0byBhY2NvbW1vZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZS4gVGh1cywgeW91IGNhbiBjaG9vc2UgdG86PG9sIHR5cGU9IjEiPgotPGxpPnByZS1hbGxvY2F0ZSB0aGUgSlBFRyBidWZmZXIgd2l0aCBhbiBhcmJpdHJhcnkgc2l6ZSB1c2luZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWM5MjM0YmRhNmQ5OTNjZGFmZmRkODliZjgxYTAwZmYiIHRpdGxlPSJBbGxvY2F0ZSBhbiBpbWFnZSBidWZmZXIgZm9yIHVzZSB3aXRoIFR1cmJvSlBFRy4iPnRqQWxsb2MoKTwvYT4gYW5kIGxldCBUdXJib0pQRUcgZ3JvdyB0aGUgYnVmZmVyIGFzIG5lZWRlZCw8L2xpPgotPGxpPnNldCA8Y29kZT5kc3RCdWZzW2ldPC9jb2RlPiB0byBOVUxMIHRvIHRlbGwgVHVyYm9KUEVHIHRvIGFsbG9jYXRlIHRoZSBidWZmZXIgZm9yIHlvdSwgb3I8L2xpPgotPGxpPnByZS1hbGxvY2F0ZSB0aGUgYnVmZmVyIHRvIGEgIndvcnN0IGNhc2UiIHNpemUgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjY2M1YmNhN2YxMmZjZGNjMzAyZTZlMWM2ZDRiMzExYiIgdGl0bGU9IlRoZSBtYXhpbXVtIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBKUEVHIGltYWdlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuLi4iPnRqQnVmU2l6ZSgpPC9hPiB3aXRoIHRoZSB0cmFuc2Zvcm1lZCBvciBjcm9wcGVkIHdpZHRoIGFuZCBoZWlnaHQuIFRoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHRoZSBidWZmZXIgbmV2ZXIgaGFzIHRvIGJlIHJlLWFsbG9jYXRlZCAoc2V0dGluZyA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiIHRpdGxlPSJEaXNhYmxlIGJ1ZmZlciAocmUpYWxsb2NhdGlvbi4iPlRKRkxBR19OT1JFQUxMT0M8L2E+IGd1YXJhbnRlZXMgdGhpcy4pPC9saT4KLTwvb2w+Ci1JZiB5b3UgY2hvb3NlIG9wdGlvbiAxLCA8Y29kZT5kc3RTaXplc1tpXTwvY29kZT4gc2hvdWxkIGJlIHNldCB0byB0aGUgc2l6ZSBvZiB5b3VyIHByZS1hbGxvY2F0ZWQgYnVmZmVyLiBJbiBhbnkgY2FzZSwgdW5sZXNzIHlvdSBoYXZlIHNldCA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODgwOGQ0MDNjNjhiNjJhYWE1OGE0YzFlNThlOTg5NjMiIHRpdGxlPSJEaXNhYmxlIGJ1ZmZlciAocmUpYWxsb2NhdGlvbi4iPlRKRkxBR19OT1JFQUxMT0M8L2E+LCB5b3Ugc2hvdWxkIGFsd2F5cyBjaGVjayA8Y29kZT5kc3RCdWZzW2ldPC9jb2RlPiB1cG9uIHJldHVybiBmcm9tIHRoaXMgZnVuY3Rpb24sIGFzIGl0IG1heSBoYXZlIGNoYW5nZWQuPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+ZHN0U2l6ZXM8L3RkPjx0ZD5wb2ludGVyIHRvIGFuIGFycmF5IG9mIG4gdW5zaWduZWQgbG9uZyB2YXJpYWJsZXMgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGFjdHVhbCBzaXplcyAoaW4gYnl0ZXMpIG9mIGVhY2ggdHJhbnNmb3JtZWQgSlBFRyBpbWFnZS4gSWYgPGNvZGU+ZHN0QnVmc1tpXTwvY29kZT4gcG9pbnRzIHRvIGEgcHJlLWFsbG9jYXRlZCBidWZmZXIsIHRoZW4gPGNvZGU+ZHN0U2l6ZXNbaV08L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gdGhlIHNpemUgb2YgdGhlIGJ1ZmZlci4gVXBvbiByZXR1cm4sIDxjb2RlPmRzdFNpemVzW2ldPC9jb2RlPiB3aWxsIGNvbnRhaW4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzLik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj50cmFuc2Zvcm1zPC90ZD48dGQ+cG9pbnRlciB0byBhbiBhcnJheSBvZiBuIDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCIgdGl0bGU9Ikxvc3NsZXNzIHRyYW5zZm9ybS4iPnRqdHJhbnNmb3JtPC9hPiBzdHJ1Y3R1cmVzLCBlYWNoIG9mIHdoaWNoIHNwZWNpZmllcyB0aGUgdHJhbnNmb3JtIHBhcmFtZXRlcnMgYW5kL29yIGNyb3BwaW5nIHJlZ2lvbiBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgdHJhbnNmb3JtZWQgb3V0cHV0IGltYWdlLjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPmZsYWdzPC90ZD48dGQ+dGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYyI+ZmxhZ3M8L2E+PC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiBzdWNjZXNzZnVsLCBvciAtMSBpZiBhbiBlcnJvciBvY2N1cnJlZCAoc2VlIDxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZiIgdGl0bGU9IlJldHVybnMgYSBkZXNjcmlwdGl2ZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcgd2h5IHRoZSBsYXN0IGNvbW1hbmQgZmFpbGVkLiI+dGpHZXRFcnJvclN0cigpPC9hPi4pIDwvZGQ+PC9kbD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPlZhcmlhYmxlIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhODRlMmUzNWQzZjA4MDI1Zjk3NmVjMWVjNTM2OTNkZWEiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotPHRhYmxlIGNsYXNzPSJtbGFiZWxzIj4KLSAgPHRyPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtbGVmdCI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5jb25zdCBpbnQgdGpCbHVlT2Zmc2V0WzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICA8L3RkPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtcmlnaHQiPgotPHNwYW4gY2xhc3M9Im1sYWJlbHMiPjxzcGFuIGNsYXNzPSJtbGFiZWwiPnN0YXRpYzwvc3Bhbj48L3NwYW4+ICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkJsdWUgb2Zmc2V0IChpbiBieXRlcykgZm9yIGEgZ2l2ZW4gcGl4ZWwgZm9ybWF0LiA8L3A+Ci08cD5UaGlzIHNwZWNpZmllcyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgdGhlIEJsdWUgY29tcG9uZW50IGlzIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGl4ZWwuIEZvciBpbnN0YW5jZSwgaWYgYSBwaXhlbCBvZiBmb3JtYXQgVEpfQkdSWCBpcyBzdG9yZWQgaW4gPGNvZGU+Y2hhciBwaXhlbFtdPC9jb2RlPiwgdGhlbiB0aGUgYmx1ZSBjb21wb25lbnQgd2lsbCBiZSA8Y29kZT5waXhlbFt0akJsdWVPZmZzZXRbVEpfQkdSWF1dPC9jb2RlPi4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImdhODJkNmUzNWRhNDQxMTEyYTQxMWRhNDE5MjNjMGJhMmYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotPHRhYmxlIGNsYXNzPSJtbGFiZWxzIj4KLSAgPHRyPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtbGVmdCI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5jb25zdCBpbnQgdGpHcmVlbk9mZnNldFs8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNzAxMGE0NDAyZjU0YTQ1YmE4MjJhZDg2NzVhNDY1NWUiPlRKX05VTVBGPC9hPl08L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgPC90ZD4KLSAgPHRkIGNsYXNzPSJtbGFiZWxzLXJpZ2h0Ij4KLTxzcGFuIGNsYXNzPSJtbGFiZWxzIj48c3BhbiBjbGFzcz0ibWxhYmVsIj5zdGF0aWM8L3NwYW4+PC9zcGFuPiAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5HcmVlbiBvZmZzZXQgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoaXMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgZ3JlZW4gY29tcG9uZW50IGlzIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGl4ZWwuIEZvciBpbnN0YW5jZSwgaWYgYSBwaXhlbCBvZiBmb3JtYXQgVEpfQkdSWCBpcyBzdG9yZWQgaW4gPGNvZGU+Y2hhciBwaXhlbFtdPC9jb2RlPiwgdGhlbiB0aGUgZ3JlZW4gY29tcG9uZW50IHdpbGwgYmUgPGNvZGU+cGl4ZWxbdGpHcmVlbk9mZnNldFtUSl9CR1JYXV08L2NvZGU+LiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iZ2FiZDI0N2JiOWZlY2IzOTNlY2E1NzM2NmZlYjgzMjdiZiI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci08dGFibGUgY2xhc3M9Im1sYWJlbHMiPgotICA8dHI+Ci0gIDx0ZCBjbGFzcz0ibWxhYmVscy1sZWZ0Ij4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmNvbnN0IGludCB0ak1DVUhlaWdodFs8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWVmM2QxNjkxNjJjZTc3Y2UzNDhlMjkyYTBiNzQ3N2MiPlRKX05VTVNBTVA8L2E+XTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICA8L3RkPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtcmlnaHQiPgotPHNwYW4gY2xhc3M9Im1sYWJlbHMiPjxzcGFuIGNsYXNzPSJtbGFiZWwiPnN0YXRpYzwvc3Bhbj48L3NwYW4+ICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPk1DVSBibG9jayBoZWlnaHQgKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIDwvcD4KLTxwPk1DVSBibG9jayBzaXplczo8L3A+Ci08dWw+Ci08bGk+OHg4IGZvciBubyBzdWJzYW1wbGluZyBvciBncmF5c2NhbGU8L2xpPgotPGxpPjE2eDggZm9yIDQ6MjoyPC9saT4KLTxsaT44eDE2IGZvciA0OjQ6MDwvbGk+Ci08bGk+MTZ4MTYgZm9yIDQ6MjowPC9saT4KLTxsaT4zMng4IGZvciA0OjE6MSA8L2xpPgotPC91bD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYTllNjFlN2NkNDdhMTVhMTczMjgzYmE5NGU3ODEzMDhjIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLTx0YWJsZSBjbGFzcz0ibWxhYmVscyI+Ci0gIDx0cj4KLSAgPHRkIGNsYXNzPSJtbGFiZWxzLWxlZnQiPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+Y29uc3QgaW50IHRqTUNVV2lkdGhbPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVlZjNkMTY5MTYyY2U3N2NlMzQ4ZTI5MmEwYjc0NzdjIj5USl9OVU1TQU1QPC9hPl08L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLSAgPC90ZD4KLSAgPHRkIGNsYXNzPSJtbGFiZWxzLXJpZ2h0Ij4KLTxzcGFuIGNsYXNzPSJtbGFiZWxzIj48c3BhbiBjbGFzcz0ibWxhYmVsIj5zdGF0aWM8L3NwYW4+PC9zcGFuPiAgPC90ZD4KLSAgPC90cj4KLTwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5NQ1UgYmxvY2sgd2lkdGggKGluIHBpeGVscykgZm9yIGEgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuIDwvcD4KLTxwPk1DVSBibG9jayBzaXplczo8L3A+Ci08dWw+Ci08bGk+OHg4IGZvciBubyBzdWJzYW1wbGluZyBvciBncmF5c2NhbGU8L2xpPgotPGxpPjE2eDggZm9yIDQ6MjoyPC9saT4KLTxsaT44eDE2IGZvciA0OjQ6MDwvbGk+Ci08bGk+MTZ4MTYgZm9yIDQ6MjowPC9saT4KLTxsaT4zMng4IGZvciA0OjE6MSA8L2xpPgotPC91bD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWQ3N2NmOGZlNWIyYmZkM2NiM2Y1MzA5ODE0NmFiYjRjIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLTx0YWJsZSBjbGFzcz0ibWxhYmVscyI+Ci0gIDx0cj4KLSAgPHRkIGNsYXNzPSJtbGFiZWxzLWxlZnQiPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+Y29uc3QgaW50IHRqUGl4ZWxTaXplWzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICA8L3RkPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtcmlnaHQiPgotPHNwYW4gY2xhc3M9Im1sYWJlbHMiPjxzcGFuIGNsYXNzPSJtbGFiZWwiPnN0YXRpYzwvc3Bhbj48L3NwYW4+ICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJnYWRkOWI0NDY3NDJhYzhhMzkyM2Y3OTkyYzc5ODhmZWE4Ij48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLTx0YWJsZSBjbGFzcz0ibWxhYmVscyI+Ci0gIDx0cj4KLSAgPHRkIGNsYXNzPSJtbGFiZWxzLWxlZnQiPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+Y29uc3QgaW50IHRqUmVkT2Zmc2V0WzxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZSI+VEpfTlVNUEY8L2E+XTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotICA8L3RkPgotICA8dGQgY2xhc3M9Im1sYWJlbHMtcmlnaHQiPgotPHNwYW4gY2xhc3M9Im1sYWJlbHMiPjxzcGFuIGNsYXNzPSJtbGFiZWwiPnN0YXRpYzwvc3Bhbj48L3NwYW4+ICA8L3RkPgotICA8L3RyPgotPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPlJlZCBvZmZzZXQgKGluIGJ5dGVzKSBmb3IgYSBnaXZlbiBwaXhlbCBmb3JtYXQuIDwvcD4KLTxwPlRoaXMgc3BlY2lmaWVzIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVkIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLiBGb3IgaW5zdGFuY2UsIGlmIGEgcGl4ZWwgb2YgZm9ybWF0IFRKX0JHUlggaXMgc3RvcmVkIGluIDxjb2RlPmNoYXIgcGl4ZWxbXTwvY29kZT4sIHRoZW4gdGhlIHJlZCBjb21wb25lbnQgd2lsbCBiZSA8Y29kZT5waXhlbFt0alJlZE9mZnNldFtUSl9CR1JYXV08L2NvZGU+LiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL2luZGV4Lmh0bWwgYi9kb2MvaHRtbC9pbmRleC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzY2MxYjNlLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2luZGV4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbCB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMTk5OS94aHRtbCI+Ci08aGVhZD4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBodHRwLWVxdWl2PSJYLVVBLUNvbXBhdGlibGUiIGNvbnRlbnQ9IklFPTkiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIi8+Ci08dGl0bGU+VHVyYm9KUEVHOiBNYWluIFBhZ2U8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImluZGV4Lmh0bWwiPjxzcGFuPk1haW4mIzE2MDtQYWdlPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpPjxhIGhyZWY9Im1vZHVsZXMuaHRtbCI+PHNwYW4+TW9kdWxlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+Ci0gICAgICAgIDxkaXYgaWQ9Ik1TZWFyY2hCb3giIGNsYXNzPSJNU2VhcmNoQm94SW5hY3RpdmUiPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGVmdCI+Ci0gICAgICAgICAgPGltZyBpZD0iTVNlYXJjaFNlbGVjdCIgc3JjPSJzZWFyY2gvbWFnX3NlbC5wbmciCi0gICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgICAgICAgICAgICBhbHQ9IiIvPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iTVNlYXJjaEZpZWxkIiB2YWx1ZT0iU2VhcmNoIiBhY2Nlc3NrZXk9IlMiCi0gICAgICAgICAgICAgICBvbmZvY3VzPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKHRydWUpIiAKLSAgICAgICAgICAgICAgIG9uYmx1cj0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRGb2N1cyhmYWxzZSkiIAotICAgICAgICAgICAgICAgb25rZXl1cD0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRDaGFuZ2UoZXZlbnQpIi8+Ci0gICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Ci0gICAgICAgICAgICA8YSBpZD0iTVNlYXJjaENsb3NlIiBocmVmPSJqYXZhc2NyaXB0OnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKSI+PGltZyBpZD0iTVNlYXJjaENsb3NlSW1nIiBib3JkZXI9IjAiIHNyYz0ic2VhcmNoL2Nsb3NlLnBuZyIgYWx0PSIiLz48L2E+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci08L2Rpdj48IS0tIHRvcCAtLT4KLTwhLS0gd2luZG93IHNob3dpbmcgdGhlIGZpbHRlciBvcHRpb25zIC0tPgotPGRpdiBpZD0iTVNlYXJjaFNlbGVjdFdpbmRvdyIKLSAgICAgb25tb3VzZW92ZXI9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RTaG93KCkiCi0gICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgIG9ua2V5ZG93bj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEtleShldmVudCkiPgotPGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgwKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5BbGw8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgxKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5EYXRhIFN0cnVjdHVyZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgyKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5GdW5jdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgzKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5WYXJpYWJsZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg0KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5UeXBlZGVmczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDUpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDYpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0b3I8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg3KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5Hcm91cHM8L2E+PC9kaXY+Ci0KLTwhLS0gaWZyYW1lIHNob3dpbmcgdGhlIHNlYXJjaCByZXN1bHRzIChjbG9zZWQgYnkgZGVmYXVsdCkgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoUmVzdWx0c1dpbmRvdyI+Ci08aWZyYW1lIHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiBmcmFtZWJvcmRlcj0iMCIgCi0gICAgICAgIG5hbWU9Ik1TZWFyY2hSZXN1bHRzIiBpZD0iTVNlYXJjaFJlc3VsdHMiPgotPC9pZnJhbWU+Ci08L2Rpdj4KLQotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBjbGFzcz0iaGVhZGVydGl0bGUiPgotPGRpdiBjbGFzcz0idGl0bGUiPlR1cmJvSlBFRyBEb2N1bWVudGF0aW9uPC9kaXY+ICA8L2Rpdj4KLTwvZGl2PjwhLS1oZWFkZXItLT4KLTxkaXYgY2xhc3M9ImNvbnRlbnRzIj4KLTwvZGl2PjwhLS0gY29udGVudHMgLS0+Ci08IS0tIHN0YXJ0IGZvb3RlciBwYXJ0IC0tPgotPGhyIGNsYXNzPSJmb290ZXIiLz48YWRkcmVzcyBjbGFzcz0iZm9vdGVyIj48c21hbGw+Ci1HZW5lcmF0ZWQgYnkgJiMxNjA7PGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIi8+Ci08L2E+IDEuOC4zLjEKLTwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvanF1ZXJ5LmpzIGIvZG9jL2h0bWwvanF1ZXJ5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzkzOWU3Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL2pxdWVyeS5qcworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotLyohIGpRdWVyeSB2MS43LjEganF1ZXJ5LmNvbSB8IGpxdWVyeS5vcmcvbGljZW5zZSAqLwotKGZ1bmN0aW9uKGEsYil7ZnVuY3Rpb24gY3koYSl7cmV0dXJuIGYuaXNXaW5kb3coYSk/YTphLm5vZGVUeXBlPT09OT9hLmRlZmF1bHRWaWV3fHxhLnBhcmVudFdpbmRvdzohMX1mdW5jdGlvbiBjdihhKXtpZighY2tbYV0pe3ZhciBiPWMuYm9keSxkPWYoIjwiK2ErIj4iKS5hcHBlbmRUbyhiKSxlPWQuY3NzKCJkaXNwbGF5Iik7ZC5yZW1vdmUoKTtpZihlPT09Im5vbmUifHxlPT09IiIpe2NsfHwoY2w9Yy5jcmVhdGVFbGVtZW50KCJpZnJhbWUiKSxjbC5mcmFtZUJvcmRlcj1jbC53aWR0aD1jbC5oZWlnaHQ9MCksYi5hcHBlbmRDaGlsZChjbCk7aWYoIWNtfHwhY2wuY3JlYXRlRWxlbWVudCljbT0oY2wuY29udGVudFdpbmRvd3x8Y2wuY29udGVudERvY3VtZW50KS5kb2N1bWVudCxjbS53cml0ZSgoYy5jb21wYXRNb2RlPT09IkNTUzFDb21wYXQiPyI8IWRvY3R5cGUgaHRtbD4iOiIiKSsiPGh0bWw+PGJvZHk+IiksY20uY2xvc2UoKTtkPWNtLmNyZWF0ZUVsZW1lbnQoYSksY20uYm9keS5hcHBlbmRDaGlsZChkKSxlPWYuY3NzKGQsImRpc3BsYXkiKSxiLnJlbW92ZUNoaWxkKGNsKX1ja1thXT1lfXJldHVybiBja1thXX1mdW5jdGlvbiBjdShhLGIpe3ZhciBjPXt9O2YuZWFjaChjcS5jb25jYXQuYXBwbHkoW10sY3Euc2xpY2UoMCxiKSksZnVuY3Rpb24oKXtjW3RoaXNdPWF9KTtyZXR1cm4gY31mdW5jdGlvbiBjdCgpe2NyPWJ9ZnVuY3Rpb24gY3MoKXtzZXRUaW1lb3V0KGN0LDApO3JldHVybiBjcj1mLm5vdygpfWZ1bmN0aW9uIGNqKCl7dHJ5e3JldHVybiBuZXcgYS5BY3RpdmVYT2JqZWN0KCJNaWNyb3NvZnQuWE1MSFRUUCIpfWNhdGNoKGIpe319ZnVuY3Rpb24gY2koKXt0cnl7cmV0dXJuIG5ldyBhLlhNTEh0dHBSZXF1ZXN0fWNhdGNoKGIpe319ZnVuY3Rpb24gY2MoYSxjKXthLmRhdGFGaWx0ZXImJihjPWEuZGF0YUZpbHRlcihjLGEuZGF0YVR5cGUpKTt2YXIgZD1hLmRhdGFUeXBlcyxlPXt9LGcsaCxpPWQubGVuZ3RoLGosaz1kWzBdLGwsbSxuLG8scDtmb3IoZz0xO2c8aTtnKyspe2lmKGc9PT0xKWZvcihoIGluIGEuY29udmVydGVycyl0eXBlb2YgaD09InN0cmluZyImJihlW2gudG9Mb3dlckNhc2UoKV09YS5jb252ZXJ0ZXJzW2hdKTtsPWssaz1kW2ddO2lmKGs9PT0iKiIpaz1sO2Vsc2UgaWYobCE9PSIqIiYmbCE9PWspe209bCsiICIrayxuPWVbbV18fGVbIiogIitrXTtpZighbil7cD1iO2ZvcihvIGluIGUpe2o9by5zcGxpdCgiICIpO2lmKGpbMF09PT1sfHxqWzBdPT09IioiKXtwPWVbalsxXSsiICIra107aWYocCl7bz1lW29dLG89PT0hMD9uPXA6cD09PSEwJiYobj1vKTticmVha319fX0hbiYmIXAmJmYuZXJyb3IoIk5vIGNvbnZlcnNpb24gZnJvbSAiK20ucmVwbGFjZSgiICIsIiB0byAiKSksbiE9PSEwJiYoYz1uP24oYyk6cChvKGMpKSl9fXJldHVybiBjfWZ1bmN0aW9uIGNiKGEsYyxkKXt2YXIgZT1hLmNvbnRlbnRzLGY9YS5kYXRhVHlwZXMsZz1hLnJlc3BvbnNlRmllbGRzLGgsaSxqLGs7Zm9yKGkgaW4gZylpIGluIGQmJihjW2dbaV1dPWRbaV0pO3doaWxlKGZbMF09PT0iKiIpZi5zaGlmdCgpLGg9PT1iJiYoaD1hLm1pbWVUeXBlfHxjLmdldFJlc3BvbnNlSGVhZGVyKCJjb250ZW50LXR5cGUiKSk7aWYoaClmb3IoaSBpbiBlKWlmKGVbaV0mJmVbaV0udGVzdChoKSl7Zi51bnNoaWZ0KGkpO2JyZWFrfWlmKGZbMF1pbiBkKWo9ZlswXTtlbHNle2ZvcihpIGluIGQpe2lmKCFmWzBdfHxhLmNvbnZlcnRlcnNbaSsiICIrZlswXV0pe2o9aTticmVha31rfHwoaz1pKX1qPWp8fGt9aWYoail7aiE9PWZbMF0mJmYudW5zaGlmdChqKTtyZXR1cm4gZFtqXX19ZnVuY3Rpb24gY2EoYSxiLGMsZCl7aWYoZi5pc0FycmF5KGIpKWYuZWFjaChiLGZ1bmN0aW9uKGIsZSl7Y3x8YkUudGVzdChhKT9kKGEsZSk6Y2EoYSsiWyIrKHR5cGVvZiBlPT0ib2JqZWN0Inx8Zi5pc0FycmF5KGUpP2I6IiIpKyJdIixlLGMsZCl9KTtlbHNlIGlmKCFjJiZiIT1udWxsJiZ0eXBlb2YgYj09Im9iamVjdCIpZm9yKHZhciBlIGluIGIpY2EoYSsiWyIrZSsiXSIsYltlXSxjLGQpO2Vsc2UgZChhLGIpfWZ1bmN0aW9uIGJfKGEsYyl7dmFyIGQsZSxnPWYuYWpheFNldHRpbmdzLmZsYXRPcHRpb25zfHx7fTtmb3IoZCBpbiBjKWNbZF0hPT1iJiYoKGdbZF0/YTplfHwoZT17fSkpW2RdPWNbZF0pO2UmJmYuZXh0ZW5kKCEwLGEsZSl9ZnVuY3Rpb24gYiQoYSxjLGQsZSxmLGcpe2Y9Znx8Yy5kYXRhVHlwZXNbMF0sZz1nfHx7fSxnW2ZdPSEwO3ZhciBoPWFbZl0saT0wLGo9aD9oLmxlbmd0aDowLGs9YT09PWJULGw7Zm9yKDtpPGomJihrfHwhbCk7aSsrKWw9aFtpXShjLGQsZSksdHlwZW9mIGw9PSJzdHJpbmciJiYoIWt8fGdbbF0/bD1iOihjLmRhdGFUeXBlcy51bnNoaWZ0KGwpLGw9YiQoYSxjLGQsZSxsLGcpKSk7KGt8fCFsKSYmIWdbIioiXSYmKGw9YiQoYSxjLGQsZSwiKiIsZykpO3JldHVybiBsfWZ1bmN0aW9uIGJaKGEpe3JldHVybiBmdW5jdGlvbihiLGMpe3R5cGVvZiBiIT0ic3RyaW5nIiYmKGM9YixiPSIqIik7aWYoZi5pc0Z1bmN0aW9uKGMpKXt2YXIgZD1iLnRvTG93ZXJDYXNlKCkuc3BsaXQoYlApLGU9MCxnPWQubGVuZ3RoLGgsaSxqO2Zvcig7ZTxnO2UrKyloPWRbZV0saj0vXlwrLy50ZXN0KGgpLGomJihoPWguc3Vic3RyKDEpfHwiKiIpLGk9YVtoXT1hW2hdfHxbXSxpW2o/InVuc2hpZnQiOiJwdXNoIl0oYyl9fX1mdW5jdGlvbiBiQyhhLGIsYyl7dmFyIGQ9Yj09PSJ3aWR0aCI/YS5vZmZzZXRXaWR0aDphLm9mZnNldEhlaWdodCxlPWI9PT0id2lkdGgiP2J4OmJ5LGc9MCxoPWUubGVuZ3RoO2lmKGQ+MCl7aWYoYyE9PSJib3JkZXIiKWZvcig7ZzxoO2crKyljfHwoZC09cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIitlW2ddKSl8fDApLGM9PT0ibWFyZ2luIj9kKz1wYXJzZUZsb2F0KGYuY3NzKGEsYytlW2ddKSl8fDA6ZC09cGFyc2VGbG9hdChmLmNzcyhhLCJib3JkZXIiK2VbZ10rIldpZHRoIikpfHwwO3JldHVybiBkKyJweCJ9ZD1ieihhLGIsYik7aWYoZDwwfHxkPT1udWxsKWQ9YS5zdHlsZVtiXXx8MDtkPXBhcnNlRmxvYXQoZCl8fDA7aWYoYylmb3IoO2c8aDtnKyspZCs9cGFyc2VGbG9hdChmLmNzcyhhLCJwYWRkaW5nIitlW2ddKSl8fDAsYyE9PSJwYWRkaW5nIiYmKGQrPXBhcnNlRmxvYXQoZi5jc3MoYSwiYm9yZGVyIitlW2ddKyJXaWR0aCIpKXx8MCksYz09PSJtYXJnaW4iJiYoZCs9cGFyc2VGbG9hdChmLmNzcyhhLGMrZVtnXSkpfHwwKTtyZXR1cm4gZCsicHgifWZ1bmN0aW9uIGJwKGEsYil7Yi5zcmM/Zi5hamF4KHt1cmw6Yi5zcmMsYXN5bmM6ITEsZGF0YVR5cGU6InNjcmlwdCJ9KTpmLmdsb2JhbEV2YWwoKGIudGV4dHx8Yi50ZXh0Q29udGVudHx8Yi5pbm5lckhUTUx8fCIiKS5yZXBsYWNlKGJmLCIvKiQwKi8iKSksYi5wYXJlbnROb2RlJiZiLnBhcmVudE5vZGUucmVtb3ZlQ2hpbGQoYil9ZnVuY3Rpb24gYm8oYSl7dmFyIGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTtiaC5hcHBlbmRDaGlsZChiKSxiLmlubmVySFRNTD1hLm91dGVySFRNTDtyZXR1cm4gYi5maXJzdENoaWxkfWZ1bmN0aW9uIGJuKGEpe3ZhciBiPShhLm5vZGVOYW1lfHwiIikudG9Mb3dlckNhc2UoKTtiPT09ImlucHV0Ij9ibShhKTpiIT09InNjcmlwdCImJnR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIiYmZi5ncmVwKGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImlucHV0IiksYm0pfWZ1bmN0aW9uIGJtKGEpe2lmKGEudHlwZT09PSJjaGVja2JveCJ8fGEudHlwZT09PSJyYWRpbyIpYS5kZWZhdWx0Q2hlY2tlZD1hLmNoZWNrZWR9ZnVuY3Rpb24gYmwoYSl7cmV0dXJuIHR5cGVvZiBhLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIj9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIik6dHlwZW9mIGEucXVlcnlTZWxlY3RvckFsbCE9InVuZGVmaW5lZCI/YS5xdWVyeVNlbGVjdG9yQWxsKCIqIik6W119ZnVuY3Rpb24gYmsoYSxiKXt2YXIgYztpZihiLm5vZGVUeXBlPT09MSl7Yi5jbGVhckF0dHJpYnV0ZXMmJmIuY2xlYXJBdHRyaWJ1dGVzKCksYi5tZXJnZUF0dHJpYnV0ZXMmJmIubWVyZ2VBdHRyaWJ1dGVzKGEpLGM9Yi5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO2lmKGM9PT0ib2JqZWN0IiliLm91dGVySFRNTD1hLm91dGVySFRNTDtlbHNlIGlmKGMhPT0iaW5wdXQifHxhLnR5cGUhPT0iY2hlY2tib3giJiZhLnR5cGUhPT0icmFkaW8iKXtpZihjPT09Im9wdGlvbiIpYi5zZWxlY3RlZD1hLmRlZmF1bHRTZWxlY3RlZDtlbHNlIGlmKGM9PT0iaW5wdXQifHxjPT09InRleHRhcmVhIiliLmRlZmF1bHRWYWx1ZT1hLmRlZmF1bHRWYWx1ZX1lbHNlIGEuY2hlY2tlZCYmKGIuZGVmYXVsdENoZWNrZWQ9Yi5jaGVja2VkPWEuY2hlY2tlZCksYi52YWx1ZSE9PWEudmFsdWUmJihiLnZhbHVlPWEudmFsdWUpO2IucmVtb3ZlQXR0cmlidXRlKGYuZXhwYW5kbyl9fWZ1bmN0aW9uIGJqKGEsYil7aWYoYi5ub2RlVHlwZT09PTEmJiEhZi5oYXNEYXRhKGEpKXt2YXIgYyxkLGUsZz1mLl9kYXRhKGEpLGg9Zi5fZGF0YShiLGcpLGk9Zy5ldmVudHM7aWYoaSl7ZGVsZXRlIGguaGFuZGxlLGguZXZlbnRzPXt9O2ZvcihjIGluIGkpZm9yKGQ9MCxlPWlbY10ubGVuZ3RoO2Q8ZTtkKyspZi5ldmVudC5hZGQoYixjKyhpW2NdW2RdLm5hbWVzcGFjZT8iLiI6IiIpK2lbY11bZF0ubmFtZXNwYWNlLGlbY11bZF0saVtjXVtkXS5kYXRhKX1oLmRhdGEmJihoLmRhdGE9Zi5leHRlbmQoe30saC5kYXRhKSl9fWZ1bmN0aW9uIGJpKGEsYil7cmV0dXJuIGYubm9kZU5hbWUoYSwidGFibGUiKT9hLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJ0Ym9keSIpWzBdfHxhLmFwcGVuZENoaWxkKGEub3duZXJEb2N1bWVudC5jcmVhdGVFbGVtZW50KCJ0Ym9keSIpKTphfWZ1bmN0aW9uIFUoYSl7dmFyIGI9Vi5zcGxpdCgifCIpLGM9YS5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCk7aWYoYy5jcmVhdGVFbGVtZW50KXdoaWxlKGIubGVuZ3RoKWMuY3JlYXRlRWxlbWVudChiLnBvcCgpKTtyZXR1cm4gY31mdW5jdGlvbiBUKGEsYixjKXtiPWJ8fDA7aWYoZi5pc0Z1bmN0aW9uKGIpKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3ZhciBlPSEhYi5jYWxsKGEsZCxhKTtyZXR1cm4gZT09PWN9KTtpZihiLm5vZGVUeXBlKXJldHVybiBmLmdyZXAoYSxmdW5jdGlvbihhLGQpe3JldHVybiBhPT09Yj09PWN9KTtpZih0eXBlb2YgYj09InN0cmluZyIpe3ZhciBkPWYuZ3JlcChhLGZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVUeXBlPT09MX0pO2lmKE8udGVzdChiKSlyZXR1cm4gZi5maWx0ZXIoYixkLCFjKTtiPWYuZmlsdGVyKGIsZCl9cmV0dXJuIGYuZ3JlcChhLGZ1bmN0aW9uKGEsZCl7cmV0dXJuIGYuaW5BcnJheShhLGIpPj0wPT09Y30pfWZ1bmN0aW9uIFMoYSl7cmV0dXJuIWF8fCFhLnBhcmVudE5vZGV8fGEucGFyZW50Tm9kZS5ub2RlVHlwZT09PTExfWZ1bmN0aW9uIEsoKXtyZXR1cm4hMH1mdW5jdGlvbiBKKCl7cmV0dXJuITF9ZnVuY3Rpb24gbihhLGIsYyl7dmFyIGQ9YisiZGVmZXIiLGU9YisicXVldWUiLGc9YisibWFyayIsaD1mLl9kYXRhKGEsZCk7aCYmKGM9PT0icXVldWUifHwhZi5fZGF0YShhLGUpKSYmKGM9PT0ibWFyayJ8fCFmLl9kYXRhKGEsZykpJiZzZXRUaW1lb3V0KGZ1bmN0aW9uKCl7IWYuX2RhdGEoYSxlKSYmIWYuX2RhdGEoYSxnKSYmKGYucmVtb3ZlRGF0YShhLGQsITApLGguZmlyZSgpKX0sMCl9ZnVuY3Rpb24gbShhKXtmb3IodmFyIGIgaW4gYSl7aWYoYj09PSJkYXRhIiYmZi5pc0VtcHR5T2JqZWN0KGFbYl0pKWNvbnRpbnVlO2lmKGIhPT0idG9KU09OIilyZXR1cm4hMX1yZXR1cm4hMH1mdW5jdGlvbiBsKGEsYyxkKXtpZihkPT09YiYmYS5ub2RlVHlwZT09PTEpe3ZhciBlPSJkYXRhLSIrYy5yZXBsYWNlKGssIi0kMSIpLnRvTG93ZXJDYXNlKCk7ZD1hLmdldEF0dHJpYnV0ZShlKTtpZih0eXBlb2YgZD09InN0cmluZyIpe3RyeXtkPWQ9PT0idHJ1ZSI/ITA6ZD09PSJmYWxzZSI/ITE6ZD09PSJudWxsIj9udWxsOmYuaXNOdW1lcmljKGQpP3BhcnNlRmxvYXQoZCk6ai50ZXN0KGQpP2YucGFyc2VKU09OKGQpOmR9Y2F0Y2goZyl7fWYuZGF0YShhLGMsZCl9ZWxzZSBkPWJ9cmV0dXJuIGR9ZnVuY3Rpb24gaChhKXt2YXIgYj1nW2FdPXt9LGMsZDthPWEuc3BsaXQoL1xzKy8pO2ZvcihjPTAsZD1hLmxlbmd0aDtjPGQ7YysrKWJbYVtjXV09ITA7cmV0dXJuIGJ9dmFyIGM9YS5kb2N1bWVudCxkPWEubmF2aWdhdG9yLGU9YS5sb2NhdGlvbixmPWZ1bmN0aW9uKCl7ZnVuY3Rpb24gSigpe2lmKCFlLmlzUmVhZHkpe3RyeXtjLmRvY3VtZW50RWxlbWVudC5kb1Njcm9sbCgibGVmdCIpfWNhdGNoKGEpe3NldFRpbWVvdXQoSiwxKTtyZXR1cm59ZS5yZWFkeSgpfX12YXIgZT1mdW5jdGlvbihhLGIpe3JldHVybiBuZXcgZS5mbi5pbml0KGEsYixoKX0sZj1hLmpRdWVyeSxnPWEuJCxoLGk9L14oPzpbXiM8XSooPFtcd1xXXSs+KVtePl0qJHwjKFtcd1wtXSopJCkvLGo9L1xTLyxrPS9eXHMrLyxsPS9ccyskLyxtPS9ePChcdyspXHMqXC8/Pig/OjxcL1wxPik/JC8sbj0vXltcXSw6e31cc10qJC8sbz0vXFwoPzpbIlxcXC9iZm5ydF18dVswLTlhLWZBLUZdezR9KS9nLHA9LyJbXiJcXFxuXHJdKiJ8dHJ1ZXxmYWxzZXxudWxsfC0/XGQrKD86XC5cZCopPyg/OltlRV1bK1wtXT9cZCspPy9nLHE9Lyg/Ol58OnwsKSg/OlxzKlxbKSsvZyxyPS8od2Via2l0KVsgXC9dKFtcdy5dKykvLHM9LyhvcGVyYSkoPzouKnZlcnNpb24pP1sgXC9dKFtcdy5dKykvLHQ9Lyhtc2llKSAoW1x3Ll0rKS8sdT0vKG1vemlsbGEpKD86Lio/IHJ2OihbXHcuXSspKT8vLHY9Ly0oW2Etel18WzAtOV0pL2lnLHc9L14tbXMtLyx4PWZ1bmN0aW9uKGEsYil7cmV0dXJuKGIrIiIpLnRvVXBwZXJDYXNlKCl9LHk9ZC51c2VyQWdlbnQseixBLEIsQz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLEQ9T2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eSxFPUFycmF5LnByb3RvdHlwZS5wdXNoLEY9QXJyYXkucHJvdG90eXBlLnNsaWNlLEc9U3RyaW5nLnByb3RvdHlwZS50cmltLEg9QXJyYXkucHJvdG90eXBlLmluZGV4T2YsST17fTtlLmZuPWUucHJvdG90eXBlPXtjb25zdHJ1Y3RvcjplLGluaXQ6ZnVuY3Rpb24oYSxkLGYpe3ZhciBnLGgsaixrO2lmKCFhKXJldHVybiB0aGlzO2lmKGEubm9kZVR5cGUpe3RoaXMuY29udGV4dD10aGlzWzBdPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZihhPT09ImJvZHkiJiYhZCYmYy5ib2R5KXt0aGlzLmNvbnRleHQ9Yyx0aGlzWzBdPWMuYm9keSx0aGlzLnNlbGVjdG9yPWEsdGhpcy5sZW5ndGg9MTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09InN0cmluZyIpe2EuY2hhckF0KDApIT09IjwifHxhLmNoYXJBdChhLmxlbmd0aC0xKSE9PSI+Inx8YS5sZW5ndGg8Mz9nPWkuZXhlYyhhKTpnPVtudWxsLGEsbnVsbF07aWYoZyYmKGdbMV18fCFkKSl7aWYoZ1sxXSl7ZD1kIGluc3RhbmNlb2YgZT9kWzBdOmQsaz1kP2Qub3duZXJEb2N1bWVudHx8ZDpjLGo9bS5leGVjKGEpLGo/ZS5pc1BsYWluT2JqZWN0KGQpPyhhPVtjLmNyZWF0ZUVsZW1lbnQoalsxXSldLGUuZm4uYXR0ci5jYWxsKGEsZCwhMCkpOmE9W2suY3JlYXRlRWxlbWVudChqWzFdKV06KGo9ZS5idWlsZEZyYWdtZW50KFtnWzFdXSxba10pLGE9KGouY2FjaGVhYmxlP2UuY2xvbmUoai5mcmFnbWVudCk6ai5mcmFnbWVudCkuY2hpbGROb2Rlcyk7cmV0dXJuIGUubWVyZ2UodGhpcyxhKX1oPWMuZ2V0RWxlbWVudEJ5SWQoZ1syXSk7aWYoaCYmaC5wYXJlbnROb2RlKXtpZihoLmlkIT09Z1syXSlyZXR1cm4gZi5maW5kKGEpO3RoaXMubGVuZ3RoPTEsdGhpc1swXT1ofXRoaXMuY29udGV4dD1jLHRoaXMuc2VsZWN0b3I9YTtyZXR1cm4gdGhpc31yZXR1cm4hZHx8ZC5qcXVlcnk/KGR8fGYpLmZpbmQoYSk6dGhpcy5jb25zdHJ1Y3RvcihkKS5maW5kKGEpfWlmKGUuaXNGdW5jdGlvbihhKSlyZXR1cm4gZi5yZWFkeShhKTthLnNlbGVjdG9yIT09YiYmKHRoaXMuc2VsZWN0b3I9YS5zZWxlY3Rvcix0aGlzLmNvbnRleHQ9YS5jb250ZXh0KTtyZXR1cm4gZS5tYWtlQXJyYXkoYSx0aGlzKX0sc2VsZWN0b3I6IiIsanF1ZXJ5OiIxLjcuMSIsbGVuZ3RoOjAsc2l6ZTpmdW5jdGlvbigpe3JldHVybiB0aGlzLmxlbmd0aH0sdG9BcnJheTpmdW5jdGlvbigpe3JldHVybiBGLmNhbGwodGhpcywwKX0sZ2V0OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsP3RoaXMudG9BcnJheSgpOmE8MD90aGlzW3RoaXMubGVuZ3RoK2FdOnRoaXNbYV19LHB1c2hTdGFjazpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9dGhpcy5jb25zdHJ1Y3RvcigpO2UuaXNBcnJheShhKT9FLmFwcGx5KGQsYSk6ZS5tZXJnZShkLGEpLGQucHJldk9iamVjdD10aGlzLGQuY29udGV4dD10aGlzLmNvbnRleHQsYj09PSJmaW5kIj9kLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrKHRoaXMuc2VsZWN0b3I/IiAiOiIiKStjOmImJihkLnNlbGVjdG9yPXRoaXMuc2VsZWN0b3IrIi4iK2IrIigiK2MrIikiKTtyZXR1cm4gZH0sZWFjaDpmdW5jdGlvbihhLGIpe3JldHVybiBlLmVhY2godGhpcyxhLGIpfSxyZWFkeTpmdW5jdGlvbihhKXtlLmJpbmRSZWFkeSgpLEEuYWRkKGEpO3JldHVybiB0aGlzfSxlcTpmdW5jdGlvbihhKXthPSthO3JldHVybiBhPT09LTE/dGhpcy5zbGljZShhKTp0aGlzLnNsaWNlKGEsYSsxKX0sZmlyc3Q6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lcSgwKX0sbGFzdDpmdW5jdGlvbigpe3JldHVybiB0aGlzLmVxKC0xKX0sc2xpY2U6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soRi5hcHBseSh0aGlzLGFyZ3VtZW50cyksInNsaWNlIixGLmNhbGwoYXJndW1lbnRzKS5qb2luKCIsIikpfSxtYXA6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGUubWFwKHRoaXMsZnVuY3Rpb24oYixjKXtyZXR1cm4gYS5jYWxsKGIsYyxiKX0pKX0sZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucHJldk9iamVjdHx8dGhpcy5jb25zdHJ1Y3RvcihudWxsKX0scHVzaDpFLHNvcnQ6W10uc29ydCxzcGxpY2U6W10uc3BsaWNlfSxlLmZuLmluaXQucHJvdG90eXBlPWUuZm4sZS5leHRlbmQ9ZS5mbi5leHRlbmQ9ZnVuY3Rpb24oKXt2YXIgYSxjLGQsZixnLGgsaT1hcmd1bWVudHNbMF18fHt9LGo9MSxrPWFyZ3VtZW50cy5sZW5ndGgsbD0hMTt0eXBlb2YgaT09ImJvb2xlYW4iJiYobD1pLGk9YXJndW1lbnRzWzFdfHx7fSxqPTIpLHR5cGVvZiBpIT0ib2JqZWN0IiYmIWUuaXNGdW5jdGlvbihpKSYmKGk9e30pLGs9PT1qJiYoaT10aGlzLC0taik7Zm9yKDtqPGs7aisrKWlmKChhPWFyZ3VtZW50c1tqXSkhPW51bGwpZm9yKGMgaW4gYSl7ZD1pW2NdLGY9YVtjXTtpZihpPT09Ziljb250aW51ZTtsJiZmJiYoZS5pc1BsYWluT2JqZWN0KGYpfHwoZz1lLmlzQXJyYXkoZikpKT8oZz8oZz0hMSxoPWQmJmUuaXNBcnJheShkKT9kOltdKTpoPWQmJmUuaXNQbGFpbk9iamVjdChkKT9kOnt9LGlbY109ZS5leHRlbmQobCxoLGYpKTpmIT09YiYmKGlbY109Zil9cmV0dXJuIGl9LGUuZXh0ZW5kKHtub0NvbmZsaWN0OmZ1bmN0aW9uKGIpe2EuJD09PWUmJihhLiQ9ZyksYiYmYS5qUXVlcnk9PT1lJiYoYS5qUXVlcnk9Zik7cmV0dXJuIGV9LGlzUmVhZHk6ITEscmVhZHlXYWl0OjEsaG9sZFJlYWR5OmZ1bmN0aW9uKGEpe2E/ZS5yZWFkeVdhaXQrKzplLnJlYWR5KCEwKX0scmVhZHk6ZnVuY3Rpb24oYSl7aWYoYT09PSEwJiYhLS1lLnJlYWR5V2FpdHx8YSE9PSEwJiYhZS5pc1JlYWR5KXtpZighYy5ib2R5KXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7ZS5pc1JlYWR5PSEwO2lmKGEhPT0hMCYmLS1lLnJlYWR5V2FpdD4wKXJldHVybjtBLmZpcmVXaXRoKGMsW2VdKSxlLmZuLnRyaWdnZXImJmUoYykudHJpZ2dlcigicmVhZHkiKS5vZmYoInJlYWR5Iil9fSxiaW5kUmVhZHk6ZnVuY3Rpb24oKXtpZighQSl7QT1lLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKTtpZihjLnJlYWR5U3RhdGU9PT0iY29tcGxldGUiKXJldHVybiBzZXRUaW1lb3V0KGUucmVhZHksMSk7aWYoYy5hZGRFdmVudExpc3RlbmVyKWMuYWRkRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiwhMSksYS5hZGRFdmVudExpc3RlbmVyKCJsb2FkIixlLnJlYWR5LCExKTtlbHNlIGlmKGMuYXR0YWNoRXZlbnQpe2MuYXR0YWNoRXZlbnQoIm9ucmVhZHlzdGF0ZWNoYW5nZSIsQiksYS5hdHRhY2hFdmVudCgib25sb2FkIixlLnJlYWR5KTt2YXIgYj0hMTt0cnl7Yj1hLmZyYW1lRWxlbWVudD09bnVsbH1jYXRjaChkKXt9Yy5kb2N1bWVudEVsZW1lbnQuZG9TY3JvbGwmJmImJkooKX19fSxpc0Z1bmN0aW9uOmZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iZnVuY3Rpb24ifSxpc0FycmF5OkFycmF5LmlzQXJyYXl8fGZ1bmN0aW9uKGEpe3JldHVybiBlLnR5cGUoYSk9PT0iYXJyYXkifSxpc1dpbmRvdzpmdW5jdGlvbihhKXtyZXR1cm4gYSYmdHlwZW9mIGE9PSJvYmplY3QiJiYic2V0SW50ZXJ2YWwiaW4gYX0saXNOdW1lcmljOmZ1bmN0aW9uKGEpe3JldHVybiFpc05hTihwYXJzZUZsb2F0KGEpKSYmaXNGaW5pdGUoYSl9LHR5cGU6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PW51bGw/U3RyaW5nKGEpOklbQy5jYWxsKGEpXXx8Im9iamVjdCJ9LGlzUGxhaW5PYmplY3Q6ZnVuY3Rpb24oYSl7aWYoIWF8fGUudHlwZShhKSE9PSJvYmplY3QifHxhLm5vZGVUeXBlfHxlLmlzV2luZG93KGEpKXJldHVybiExO3RyeXtpZihhLmNvbnN0cnVjdG9yJiYhRC5jYWxsKGEsImNvbnN0cnVjdG9yIikmJiFELmNhbGwoYS5jb25zdHJ1Y3Rvci5wcm90b3R5cGUsImlzUHJvdG90eXBlT2YiKSlyZXR1cm4hMX1jYXRjaChjKXtyZXR1cm4hMX12YXIgZDtmb3IoZCBpbiBhKTtyZXR1cm4gZD09PWJ8fEQuY2FsbChhLGQpfSxpc0VtcHR5T2JqZWN0OmZ1bmN0aW9uKGEpe2Zvcih2YXIgYiBpbiBhKXJldHVybiExO3JldHVybiEwfSxlcnJvcjpmdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoYSl9LHBhcnNlSlNPTjpmdW5jdGlvbihiKXtpZih0eXBlb2YgYiE9InN0cmluZyJ8fCFiKXJldHVybiBudWxsO2I9ZS50cmltKGIpO2lmKGEuSlNPTiYmYS5KU09OLnBhcnNlKXJldHVybiBhLkpTT04ucGFyc2UoYik7aWYobi50ZXN0KGIucmVwbGFjZShvLCJAIikucmVwbGFjZShwLCJdIikucmVwbGFjZShxLCIiKSkpcmV0dXJuKG5ldyBGdW5jdGlvbigicmV0dXJuICIrYikpKCk7ZS5lcnJvcigiSW52YWxpZCBKU09OOiAiK2IpfSxwYXJzZVhNTDpmdW5jdGlvbihjKXt2YXIgZCxmO3RyeXthLkRPTVBhcnNlcj8oZj1uZXcgRE9NUGFyc2VyLGQ9Zi5wYXJzZUZyb21TdHJpbmcoYywidGV4dC94bWwiKSk6KGQ9bmV3IEFjdGl2ZVhPYmplY3QoIk1pY3Jvc29mdC5YTUxET00iKSxkLmFzeW5jPSJmYWxzZSIsZC5sb2FkWE1MKGMpKX1jYXRjaChnKXtkPWJ9KCFkfHwhZC5kb2N1bWVudEVsZW1lbnR8fGQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInBhcnNlcmVycm9yIikubGVuZ3RoKSYmZS5lcnJvcigiSW52YWxpZCBYTUw6ICIrYyk7cmV0dXJuIGR9LG5vb3A6ZnVuY3Rpb24oKXt9LGdsb2JhbEV2YWw6ZnVuY3Rpb24oYil7YiYmai50ZXN0KGIpJiYoYS5leGVjU2NyaXB0fHxmdW5jdGlvbihiKXthLmV2YWwuY2FsbChhLGIpfSkoYil9LGNhbWVsQ2FzZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5yZXBsYWNlKHcsIm1zLSIpLnJlcGxhY2Uodix4KX0sbm9kZU5hbWU6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlTmFtZSYmYS5ub2RlTmFtZS50b1VwcGVyQ2FzZSgpPT09Yi50b1VwcGVyQ2FzZSgpfSxlYWNoOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZixnPTAsaD1hLmxlbmd0aCxpPWg9PT1ifHxlLmlzRnVuY3Rpb24oYSk7aWYoZCl7aWYoaSl7Zm9yKGYgaW4gYSlpZihjLmFwcGx5KGFbZl0sZCk9PT0hMSlicmVha31lbHNlIGZvcig7ZzxoOylpZihjLmFwcGx5KGFbZysrXSxkKT09PSExKWJyZWFrfWVsc2UgaWYoaSl7Zm9yKGYgaW4gYSlpZihjLmNhbGwoYVtmXSxmLGFbZl0pPT09ITEpYnJlYWt9ZWxzZSBmb3IoO2c8aDspaWYoYy5jYWxsKGFbZ10sZyxhW2crK10pPT09ITEpYnJlYWs7cmV0dXJuIGF9LHRyaW06Rz9mdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjpHLmNhbGwoYSl9OmZ1bmN0aW9uKGEpe3JldHVybiBhPT1udWxsPyIiOihhKyIiKS5yZXBsYWNlKGssIiIpLnJlcGxhY2UobCwiIil9LG1ha2VBcnJheTpmdW5jdGlvbihhLGIpe3ZhciBjPWJ8fFtdO2lmKGEhPW51bGwpe3ZhciBkPWUudHlwZShhKTthLmxlbmd0aD09bnVsbHx8ZD09PSJzdHJpbmcifHxkPT09ImZ1bmN0aW9uInx8ZD09PSJyZWdleHAifHxlLmlzV2luZG93KGEpP0UuY2FsbChjLGEpOmUubWVyZ2UoYyxhKX1yZXR1cm4gY30saW5BcnJheTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYil7aWYoSClyZXR1cm4gSC5jYWxsKGIsYSxjKTtkPWIubGVuZ3RoLGM9Yz9jPDA/TWF0aC5tYXgoMCxkK2MpOmM6MDtmb3IoO2M8ZDtjKyspaWYoYyBpbiBiJiZiW2NdPT09YSlyZXR1cm4gY31yZXR1cm4tMX0sbWVyZ2U6ZnVuY3Rpb24oYSxjKXt2YXIgZD1hLmxlbmd0aCxlPTA7aWYodHlwZW9mIGMubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGY9Yy5sZW5ndGg7ZTxmO2UrKylhW2QrK109Y1tlXTtlbHNlIHdoaWxlKGNbZV0hPT1iKWFbZCsrXT1jW2UrK107YS5sZW5ndGg9ZDtyZXR1cm4gYX0sZ3JlcDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9W10sZTtjPSEhYztmb3IodmFyIGY9MCxnPWEubGVuZ3RoO2Y8ZztmKyspZT0hIWIoYVtmXSxmKSxjIT09ZSYmZC5wdXNoKGFbZl0pO3JldHVybiBkfSxtYXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBmLGcsaD1bXSxpPTAsaj1hLmxlbmd0aCxrPWEgaW5zdGFuY2VvZiBlfHxqIT09YiYmdHlwZW9mIGo9PSJudW1iZXIiJiYoaj4wJiZhWzBdJiZhW2otMV18fGo9PT0wfHxlLmlzQXJyYXkoYSkpO2lmKGspZm9yKDtpPGo7aSsrKWY9YyhhW2ldLGksZCksZiE9bnVsbCYmKGhbaC5sZW5ndGhdPWYpO2Vsc2UgZm9yKGcgaW4gYSlmPWMoYVtnXSxnLGQpLGYhPW51bGwmJihoW2gubGVuZ3RoXT1mKTtyZXR1cm4gaC5jb25jYXQuYXBwbHkoW10saCl9LGd1aWQ6MSxwcm94eTpmdW5jdGlvbihhLGMpe2lmKHR5cGVvZiBjPT0ic3RyaW5nIil7dmFyIGQ9YVtjXTtjPWEsYT1kfWlmKCFlLmlzRnVuY3Rpb24oYSkpcmV0dXJuIGI7dmFyIGY9Ri5jYWxsKGFyZ3VtZW50cywyKSxnPWZ1bmN0aW9uKCl7cmV0dXJuIGEuYXBwbHkoYyxmLmNvbmNhdChGLmNhbGwoYXJndW1lbnRzKSkpfTtnLmd1aWQ9YS5ndWlkPWEuZ3VpZHx8Zy5ndWlkfHxlLmd1aWQrKztyZXR1cm4gZ30sYWNjZXNzOmZ1bmN0aW9uKGEsYyxkLGYsZyxoKXt2YXIgaT1hLmxlbmd0aDtpZih0eXBlb2YgYz09Im9iamVjdCIpe2Zvcih2YXIgaiBpbiBjKWUuYWNjZXNzKGEsaixjW2pdLGYsZyxkKTtyZXR1cm4gYX1pZihkIT09Yil7Zj0haCYmZiYmZS5pc0Z1bmN0aW9uKGQpO2Zvcih2YXIgaz0wO2s8aTtrKyspZyhhW2tdLGMsZj9kLmNhbGwoYVtrXSxrLGcoYVtrXSxjKSk6ZCxoKTtyZXR1cm4gYX1yZXR1cm4gaT9nKGFbMF0sYyk6Yn0sbm93OmZ1bmN0aW9uKCl7cmV0dXJuKG5ldyBEYXRlKS5nZXRUaW1lKCl9LHVhTWF0Y2g6ZnVuY3Rpb24oYSl7YT1hLnRvTG93ZXJDYXNlKCk7dmFyIGI9ci5leGVjKGEpfHxzLmV4ZWMoYSl8fHQuZXhlYyhhKXx8YS5pbmRleE9mKCJjb21wYXRpYmxlIik8MCYmdS5leGVjKGEpfHxbXTtyZXR1cm57YnJvd3NlcjpiWzFdfHwiIix2ZXJzaW9uOmJbMl18fCIwIn19LHN1YjpmdW5jdGlvbigpe2Z1bmN0aW9uIGEoYixjKXtyZXR1cm4gbmV3IGEuZm4uaW5pdChiLGMpfWUuZXh0ZW5kKCEwLGEsdGhpcyksYS5zdXBlcmNsYXNzPXRoaXMsYS5mbj1hLnByb3RvdHlwZT10aGlzKCksYS5mbi5jb25zdHJ1Y3Rvcj1hLGEuc3ViPXRoaXMuc3ViLGEuZm4uaW5pdD1mdW5jdGlvbihkLGYpe2YmJmYgaW5zdGFuY2VvZiBlJiYhKGYgaW5zdGFuY2VvZiBhKSYmKGY9YShmKSk7cmV0dXJuIGUuZm4uaW5pdC5jYWxsKHRoaXMsZCxmLGIpfSxhLmZuLmluaXQucHJvdG90eXBlPWEuZm47dmFyIGI9YShjKTtyZXR1cm4gYX0sYnJvd3Nlcjp7fX0pLGUuZWFjaCgiQm9vbGVhbiBOdW1iZXIgU3RyaW5nIEZ1bmN0aW9uIEFycmF5IERhdGUgUmVnRXhwIE9iamVjdCIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe0lbIltvYmplY3QgIitiKyJdIl09Yi50b0xvd2VyQ2FzZSgpfSksej1lLnVhTWF0Y2goeSksei5icm93c2VyJiYoZS5icm93c2VyW3ouYnJvd3Nlcl09ITAsZS5icm93c2VyLnZlcnNpb249ei52ZXJzaW9uKSxlLmJyb3dzZXIud2Via2l0JiYoZS5icm93c2VyLnNhZmFyaT0hMCksai50ZXN0KCLCoCIpJiYoaz0vXltcc1x4QTBdKy8sbD0vW1xzXHhBMF0rJC8pLGg9ZShjKSxjLmFkZEV2ZW50TGlzdGVuZXI/Qj1mdW5jdGlvbigpe2MucmVtb3ZlRXZlbnRMaXN0ZW5lcigiRE9NQ29udGVudExvYWRlZCIsQiwhMSksZS5yZWFkeSgpfTpjLmF0dGFjaEV2ZW50JiYoQj1mdW5jdGlvbigpe2MucmVhZHlTdGF0ZT09PSJjb21wbGV0ZSImJihjLmRldGFjaEV2ZW50KCJvbnJlYWR5c3RhdGVjaGFuZ2UiLEIpLGUucmVhZHkoKSl9KTtyZXR1cm4gZX0oKSxnPXt9O2YuQ2FsbGJhY2tzPWZ1bmN0aW9uKGEpe2E9YT9nW2FdfHxoKGEpOnt9O3ZhciBjPVtdLGQ9W10sZSxpLGosayxsLG09ZnVuY3Rpb24oYil7dmFyIGQsZSxnLGgsaTtmb3IoZD0wLGU9Yi5sZW5ndGg7ZDxlO2QrKylnPWJbZF0saD1mLnR5cGUoZyksaD09PSJhcnJheSI/bShnKTpoPT09ImZ1bmN0aW9uIiYmKCFhLnVuaXF1ZXx8IW8uaGFzKGcpKSYmYy5wdXNoKGcpfSxuPWZ1bmN0aW9uKGIsZil7Zj1mfHxbXSxlPSFhLm1lbW9yeXx8W2IsZl0saT0hMCxsPWp8fDAsaj0wLGs9Yy5sZW5ndGg7Zm9yKDtjJiZsPGs7bCsrKWlmKGNbbF0uYXBwbHkoYixmKT09PSExJiZhLnN0b3BPbkZhbHNlKXtlPSEwO2JyZWFrfWk9ITEsYyYmKGEub25jZT9lPT09ITA/by5kaXNhYmxlKCk6Yz1bXTpkJiZkLmxlbmd0aCYmKGU9ZC5zaGlmdCgpLG8uZmlyZVdpdGgoZVswXSxlWzFdKSkpfSxvPXthZGQ6ZnVuY3Rpb24oKXtpZihjKXt2YXIgYT1jLmxlbmd0aDttKGFyZ3VtZW50cyksaT9rPWMubGVuZ3RoOmUmJmUhPT0hMCYmKGo9YSxuKGVbMF0sZVsxXSkpfXJldHVybiB0aGlzfSxyZW1vdmU6ZnVuY3Rpb24oKXtpZihjKXt2YXIgYj1hcmd1bWVudHMsZD0wLGU9Yi5sZW5ndGg7Zm9yKDtkPGU7ZCsrKWZvcih2YXIgZj0wO2Y8Yy5sZW5ndGg7ZisrKWlmKGJbZF09PT1jW2ZdKXtpJiZmPD1rJiYoay0tLGY8PWwmJmwtLSksYy5zcGxpY2UoZi0tLDEpO2lmKGEudW5pcXVlKWJyZWFrfX1yZXR1cm4gdGhpc30saGFzOmZ1bmN0aW9uKGEpe2lmKGMpe3ZhciBiPTAsZD1jLmxlbmd0aDtmb3IoO2I8ZDtiKyspaWYoYT09PWNbYl0pcmV0dXJuITB9cmV0dXJuITF9LGVtcHR5OmZ1bmN0aW9uKCl7Yz1bXTtyZXR1cm4gdGhpc30sZGlzYWJsZTpmdW5jdGlvbigpe2M9ZD1lPWI7cmV0dXJuIHRoaXN9LGRpc2FibGVkOmZ1bmN0aW9uKCl7cmV0dXJuIWN9LGxvY2s6ZnVuY3Rpb24oKXtkPWIsKCFlfHxlPT09ITApJiZvLmRpc2FibGUoKTtyZXR1cm4gdGhpc30sbG9ja2VkOmZ1bmN0aW9uKCl7cmV0dXJuIWR9LGZpcmVXaXRoOmZ1bmN0aW9uKGIsYyl7ZCYmKGk/YS5vbmNlfHxkLnB1c2goW2IsY10pOighYS5vbmNlfHwhZSkmJm4oYixjKSk7cmV0dXJuIHRoaXN9LGZpcmU6ZnVuY3Rpb24oKXtvLmZpcmVXaXRoKHRoaXMsYXJndW1lbnRzKTtyZXR1cm4gdGhpc30sZmlyZWQ6ZnVuY3Rpb24oKXtyZXR1cm4hIWV9fTtyZXR1cm4gb307dmFyIGk9W10uc2xpY2U7Zi5leHRlbmQoe0RlZmVycmVkOmZ1bmN0aW9uKGEpe3ZhciBiPWYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGM9Zi5DYWxsYmFja3MoIm9uY2UgbWVtb3J5IiksZD1mLkNhbGxiYWNrcygibWVtb3J5IiksZT0icGVuZGluZyIsZz17cmVzb2x2ZTpiLHJlamVjdDpjLG5vdGlmeTpkfSxoPXtkb25lOmIuYWRkLGZhaWw6Yy5hZGQscHJvZ3Jlc3M6ZC5hZGQsc3RhdGU6ZnVuY3Rpb24oKXtyZXR1cm4gZX0saXNSZXNvbHZlZDpiLmZpcmVkLGlzUmVqZWN0ZWQ6Yy5maXJlZCx0aGVuOmZ1bmN0aW9uKGEsYixjKXtpLmRvbmUoYSkuZmFpbChiKS5wcm9ncmVzcyhjKTtyZXR1cm4gdGhpc30sYWx3YXlzOmZ1bmN0aW9uKCl7aS5kb25lLmFwcGx5KGksYXJndW1lbnRzKS5mYWlsLmFwcGx5KGksYXJndW1lbnRzKTtyZXR1cm4gdGhpc30scGlwZTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuRGVmZXJyZWQoZnVuY3Rpb24oZCl7Zi5lYWNoKHtkb25lOlthLCJyZXNvbHZlIl0sZmFpbDpbYiwicmVqZWN0Il0scHJvZ3Jlc3M6W2MsIm5vdGlmeSJdfSxmdW5jdGlvbihhLGIpe3ZhciBjPWJbMF0sZT1iWzFdLGc7Zi5pc0Z1bmN0aW9uKGMpP2lbYV0oZnVuY3Rpb24oKQote2c9Yy5hcHBseSh0aGlzLGFyZ3VtZW50cyksZyYmZi5pc0Z1bmN0aW9uKGcucHJvbWlzZSk/Zy5wcm9taXNlKCkudGhlbihkLnJlc29sdmUsZC5yZWplY3QsZC5ub3RpZnkpOmRbZSsiV2l0aCJdKHRoaXM9PT1pP2Q6dGhpcyxbZ10pfSk6aVthXShkW2VdKX0pfSkucHJvbWlzZSgpfSxwcm9taXNlOmZ1bmN0aW9uKGEpe2lmKGE9PW51bGwpYT1oO2Vsc2UgZm9yKHZhciBiIGluIGgpYVtiXT1oW2JdO3JldHVybiBhfX0saT1oLnByb21pc2Uoe30pLGo7Zm9yKGogaW4gZylpW2pdPWdbal0uZmlyZSxpW2orIldpdGgiXT1nW2pdLmZpcmVXaXRoO2kuZG9uZShmdW5jdGlvbigpe2U9InJlc29sdmVkIn0sYy5kaXNhYmxlLGQubG9jaykuZmFpbChmdW5jdGlvbigpe2U9InJlamVjdGVkIn0sYi5kaXNhYmxlLGQubG9jayksYSYmYS5jYWxsKGksaSk7cmV0dXJuIGl9LHdoZW46ZnVuY3Rpb24oYSl7ZnVuY3Rpb24gbShhKXtyZXR1cm4gZnVuY3Rpb24oYil7ZVthXT1hcmd1bWVudHMubGVuZ3RoPjE/aS5jYWxsKGFyZ3VtZW50cywwKTpiLGoubm90aWZ5V2l0aChrLGUpfX1mdW5jdGlvbiBsKGEpe3JldHVybiBmdW5jdGlvbihjKXtiW2FdPWFyZ3VtZW50cy5sZW5ndGg+MT9pLmNhbGwoYXJndW1lbnRzLDApOmMsLS1nfHxqLnJlc29sdmVXaXRoKGosYil9fXZhciBiPWkuY2FsbChhcmd1bWVudHMsMCksYz0wLGQ9Yi5sZW5ndGgsZT1BcnJheShkKSxnPWQsaD1kLGo9ZDw9MSYmYSYmZi5pc0Z1bmN0aW9uKGEucHJvbWlzZSk/YTpmLkRlZmVycmVkKCksaz1qLnByb21pc2UoKTtpZihkPjEpe2Zvcig7YzxkO2MrKyliW2NdJiZiW2NdLnByb21pc2UmJmYuaXNGdW5jdGlvbihiW2NdLnByb21pc2UpP2JbY10ucHJvbWlzZSgpLnRoZW4obChjKSxqLnJlamVjdCxtKGMpKTotLWc7Z3x8ai5yZXNvbHZlV2l0aChqLGIpfWVsc2UgaiE9PWEmJmoucmVzb2x2ZVdpdGgoaixkP1thXTpbXSk7cmV0dXJuIGt9fSksZi5zdXBwb3J0PWZ1bmN0aW9uKCl7dmFyIGIsZCxlLGcsaCxpLGosayxsLG0sbixvLHAscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLHI9Yy5kb2N1bWVudEVsZW1lbnQ7cS5zZXRBdHRyaWJ1dGUoImNsYXNzTmFtZSIsInQiKSxxLmlubmVySFRNTD0iICAgPGxpbmsvPjx0YWJsZT48L3RhYmxlPjxhIGhyZWY9Jy9hJyBzdHlsZT0ndG9wOjFweDtmbG9hdDpsZWZ0O29wYWNpdHk6LjU1Oyc+YTwvYT48aW5wdXQgdHlwZT0nY2hlY2tib3gnLz4iLGQ9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpLGU9cS5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYSIpWzBdO2lmKCFkfHwhZC5sZW5ndGh8fCFlKXJldHVybnt9O2c9Yy5jcmVhdGVFbGVtZW50KCJzZWxlY3QiKSxoPWcuYXBwZW5kQ2hpbGQoYy5jcmVhdGVFbGVtZW50KCJvcHRpb24iKSksaT1xLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJpbnB1dCIpWzBdLGI9e2xlYWRpbmdXaGl0ZXNwYWNlOnEuZmlyc3RDaGlsZC5ub2RlVHlwZT09PTMsdGJvZHk6IXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRib2R5IikubGVuZ3RoLGh0bWxTZXJpYWxpemU6ISFxLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJsaW5rIikubGVuZ3RoLHN0eWxlOi90b3AvLnRlc3QoZS5nZXRBdHRyaWJ1dGUoInN0eWxlIikpLGhyZWZOb3JtYWxpemVkOmUuZ2V0QXR0cmlidXRlKCJocmVmIik9PT0iL2EiLG9wYWNpdHk6L14wLjU1Ly50ZXN0KGUuc3R5bGUub3BhY2l0eSksY3NzRmxvYXQ6ISFlLnN0eWxlLmNzc0Zsb2F0LGNoZWNrT246aS52YWx1ZT09PSJvbiIsb3B0U2VsZWN0ZWQ6aC5zZWxlY3RlZCxnZXRTZXRBdHRyaWJ1dGU6cS5jbGFzc05hbWUhPT0idCIsZW5jdHlwZTohIWMuY3JlYXRlRWxlbWVudCgiZm9ybSIpLmVuY3R5cGUsaHRtbDVDbG9uZTpjLmNyZWF0ZUVsZW1lbnQoIm5hdiIpLmNsb25lTm9kZSghMCkub3V0ZXJIVE1MIT09Ijw6bmF2PjwvOm5hdj4iLHN1Ym1pdEJ1YmJsZXM6ITAsY2hhbmdlQnViYmxlczohMCxmb2N1c2luQnViYmxlczohMSxkZWxldGVFeHBhbmRvOiEwLG5vQ2xvbmVFdmVudDohMCxpbmxpbmVCbG9ja05lZWRzTGF5b3V0OiExLHNocmlua1dyYXBCbG9ja3M6ITEscmVsaWFibGVNYXJnaW5SaWdodDohMH0saS5jaGVja2VkPSEwLGIubm9DbG9uZUNoZWNrZWQ9aS5jbG9uZU5vZGUoITApLmNoZWNrZWQsZy5kaXNhYmxlZD0hMCxiLm9wdERpc2FibGVkPSFoLmRpc2FibGVkO3RyeXtkZWxldGUgcS50ZXN0fWNhdGNoKHMpe2IuZGVsZXRlRXhwYW5kbz0hMX0hcS5hZGRFdmVudExpc3RlbmVyJiZxLmF0dGFjaEV2ZW50JiZxLmZpcmVFdmVudCYmKHEuYXR0YWNoRXZlbnQoIm9uY2xpY2siLGZ1bmN0aW9uKCl7Yi5ub0Nsb25lRXZlbnQ9ITF9KSxxLmNsb25lTm9kZSghMCkuZmlyZUV2ZW50KCJvbmNsaWNrIikpLGk9Yy5jcmVhdGVFbGVtZW50KCJpbnB1dCIpLGkudmFsdWU9InQiLGkuc2V0QXR0cmlidXRlKCJ0eXBlIiwicmFkaW8iKSxiLnJhZGlvVmFsdWU9aS52YWx1ZT09PSJ0IixpLnNldEF0dHJpYnV0ZSgiY2hlY2tlZCIsImNoZWNrZWQiKSxxLmFwcGVuZENoaWxkKGkpLGs9Yy5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCksay5hcHBlbmRDaGlsZChxLmxhc3RDaGlsZCksYi5jaGVja0Nsb25lPWsuY2xvbmVOb2RlKCEwKS5jbG9uZU5vZGUoITApLmxhc3RDaGlsZC5jaGVja2VkLGIuYXBwZW5kQ2hlY2tlZD1pLmNoZWNrZWQsay5yZW1vdmVDaGlsZChpKSxrLmFwcGVuZENoaWxkKHEpLHEuaW5uZXJIVE1MPSIiLGEuZ2V0Q29tcHV0ZWRTdHlsZSYmKGo9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxqLnN0eWxlLndpZHRoPSIwIixqLnN0eWxlLm1hcmdpblJpZ2h0PSIwIixxLnN0eWxlLndpZHRoPSIycHgiLHEuYXBwZW5kQ2hpbGQoaiksYi5yZWxpYWJsZU1hcmdpblJpZ2h0PShwYXJzZUludCgoYS5nZXRDb21wdXRlZFN0eWxlKGosbnVsbCl8fHttYXJnaW5SaWdodDowfSkubWFyZ2luUmlnaHQsMTApfHwwKT09PTApO2lmKHEuYXR0YWNoRXZlbnQpZm9yKG8gaW57c3VibWl0OjEsY2hhbmdlOjEsZm9jdXNpbjoxfSluPSJvbiIrbyxwPW4gaW4gcSxwfHwocS5zZXRBdHRyaWJ1dGUobiwicmV0dXJuOyIpLHA9dHlwZW9mIHFbbl09PSJmdW5jdGlvbiIpLGJbbysiQnViYmxlcyJdPXA7ay5yZW1vdmVDaGlsZChxKSxrPWc9aD1qPXE9aT1udWxsLGYoZnVuY3Rpb24oKXt2YXIgYSxkLGUsZyxoLGksaixrLG0sbixvLHI9Yy5nZXRFbGVtZW50c0J5VGFnTmFtZSgiYm9keSIpWzBdOyFyfHwoaj0xLGs9InBvc2l0aW9uOmFic29sdXRlO3RvcDowO2xlZnQ6MDt3aWR0aDoxcHg7aGVpZ2h0OjFweDttYXJnaW46MDsiLG09InZpc2liaWxpdHk6aGlkZGVuO2JvcmRlcjowOyIsbj0ic3R5bGU9JyIraysiYm9yZGVyOjVweCBzb2xpZCAjMDAwO3BhZGRpbmc6MDsnIixvPSI8ZGl2ICIrbisiPjxkaXY+PC9kaXY+PC9kaXY+IisiPHRhYmxlICIrbisiIGNlbGxwYWRkaW5nPScwJyBjZWxsc3BhY2luZz0nMCc+IisiPHRyPjx0ZD48L3RkPjwvdHI+PC90YWJsZT4iLGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxhLnN0eWxlLmNzc1RleHQ9bSsid2lkdGg6MDtoZWlnaHQ6MDtwb3NpdGlvbjpzdGF0aWM7dG9wOjA7bWFyZ2luLXRvcDoiK2orInB4IixyLmluc2VydEJlZm9yZShhLHIuZmlyc3RDaGlsZCkscT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGEuYXBwZW5kQ2hpbGQocSkscS5pbm5lckhUTUw9Ijx0YWJsZT48dHI+PHRkIHN0eWxlPSdwYWRkaW5nOjA7Ym9yZGVyOjA7ZGlzcGxheTpub25lJz48L3RkPjx0ZD50PC90ZD48L3RyPjwvdGFibGU+IixsPXEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoInRkIikscD1sWzBdLm9mZnNldEhlaWdodD09PTAsbFswXS5zdHlsZS5kaXNwbGF5PSIiLGxbMV0uc3R5bGUuZGlzcGxheT0ibm9uZSIsYi5yZWxpYWJsZUhpZGRlbk9mZnNldHM9cCYmbFswXS5vZmZzZXRIZWlnaHQ9PT0wLHEuaW5uZXJIVE1MPSIiLHEuc3R5bGUud2lkdGg9cS5zdHlsZS5wYWRkaW5nTGVmdD0iMXB4IixmLmJveE1vZGVsPWIuYm94TW9kZWw9cS5vZmZzZXRXaWR0aD09PTIsdHlwZW9mIHEuc3R5bGUuem9vbSE9InVuZGVmaW5lZCImJihxLnN0eWxlLmRpc3BsYXk9ImlubGluZSIscS5zdHlsZS56b29tPTEsYi5pbmxpbmVCbG9ja05lZWRzTGF5b3V0PXEub2Zmc2V0V2lkdGg9PT0yLHEuc3R5bGUuZGlzcGxheT0iIixxLmlubmVySFRNTD0iPGRpdiBzdHlsZT0nd2lkdGg6NHB4Oyc+PC9kaXY+IixiLnNocmlua1dyYXBCbG9ja3M9cS5vZmZzZXRXaWR0aCE9PTIpLHEuc3R5bGUuY3NzVGV4dD1rK20scS5pbm5lckhUTUw9byxkPXEuZmlyc3RDaGlsZCxlPWQuZmlyc3RDaGlsZCxoPWQubmV4dFNpYmxpbmcuZmlyc3RDaGlsZC5maXJzdENoaWxkLGk9e2RvZXNOb3RBZGRCb3JkZXI6ZS5vZmZzZXRUb3AhPT01LGRvZXNBZGRCb3JkZXJGb3JUYWJsZUFuZENlbGxzOmgub2Zmc2V0VG9wPT09NX0sZS5zdHlsZS5wb3NpdGlvbj0iZml4ZWQiLGUuc3R5bGUudG9wPSIyMHB4IixpLmZpeGVkUG9zaXRpb249ZS5vZmZzZXRUb3A9PT0yMHx8ZS5vZmZzZXRUb3A9PT0xNSxlLnN0eWxlLnBvc2l0aW9uPWUuc3R5bGUudG9wPSIiLGQuc3R5bGUub3ZlcmZsb3c9ImhpZGRlbiIsZC5zdHlsZS5wb3NpdGlvbj0icmVsYXRpdmUiLGkuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlPWUub2Zmc2V0VG9wPT09LTUsaS5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldD1yLm9mZnNldFRvcCE9PWosci5yZW1vdmVDaGlsZChhKSxxPWE9bnVsbCxmLmV4dGVuZChiLGkpKX0pO3JldHVybiBifSgpO3ZhciBqPS9eKD86XHsuKlx9fFxbLipcXSkkLyxrPS8oW0EtWl0pL2c7Zi5leHRlbmQoe2NhY2hlOnt9LHV1aWQ6MCxleHBhbmRvOiJqUXVlcnkiKyhmLmZuLmpxdWVyeStNYXRoLnJhbmRvbSgpKS5yZXBsYWNlKC9cRC9nLCIiKSxub0RhdGE6e2VtYmVkOiEwLG9iamVjdDoiY2xzaWQ6RDI3Q0RCNkUtQUU2RC0xMWNmLTk2QjgtNDQ0NTUzNTQwMDAwIixhcHBsZXQ6ITB9LGhhc0RhdGE6ZnVuY3Rpb24oYSl7YT1hLm5vZGVUeXBlP2YuY2FjaGVbYVtmLmV4cGFuZG9dXTphW2YuZXhwYW5kb107cmV0dXJuISFhJiYhbShhKX0sZGF0YTpmdW5jdGlvbihhLGMsZCxlKXtpZighIWYuYWNjZXB0RGF0YShhKSl7dmFyIGcsaCxpLGo9Zi5leHBhbmRvLGs9dHlwZW9mIGM9PSJzdHJpbmciLGw9YS5ub2RlVHlwZSxtPWw/Zi5jYWNoZTphLG49bD9hW2pdOmFbal0mJmosbz1jPT09ImV2ZW50cyI7aWYoKCFufHwhbVtuXXx8IW8mJiFlJiYhbVtuXS5kYXRhKSYmayYmZD09PWIpcmV0dXJuO258fChsP2Fbal09bj0rK2YudXVpZDpuPWopLG1bbl18fChtW25dPXt9LGx8fChtW25dLnRvSlNPTj1mLm5vb3ApKTtpZih0eXBlb2YgYz09Im9iamVjdCJ8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWU/bVtuXT1mLmV4dGVuZChtW25dLGMpOm1bbl0uZGF0YT1mLmV4dGVuZChtW25dLmRhdGEsYyk7Zz1oPW1bbl0sZXx8KGguZGF0YXx8KGguZGF0YT17fSksaD1oLmRhdGEpLGQhPT1iJiYoaFtmLmNhbWVsQ2FzZShjKV09ZCk7aWYobyYmIWhbY10pcmV0dXJuIGcuZXZlbnRzO2s/KGk9aFtjXSxpPT1udWxsJiYoaT1oW2YuY2FtZWxDYXNlKGMpXSkpOmk9aDtyZXR1cm4gaX19LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSxiLGMpe2lmKCEhZi5hY2NlcHREYXRhKGEpKXt2YXIgZCxlLGcsaD1mLmV4cGFuZG8saT1hLm5vZGVUeXBlLGo9aT9mLmNhY2hlOmEsaz1pP2FbaF06aDtpZighaltrXSlyZXR1cm47aWYoYil7ZD1jP2pba106altrXS5kYXRhO2lmKGQpe2YuaXNBcnJheShiKXx8KGIgaW4gZD9iPVtiXTooYj1mLmNhbWVsQ2FzZShiKSxiIGluIGQ/Yj1bYl06Yj1iLnNwbGl0KCIgIikpKTtmb3IoZT0wLGc9Yi5sZW5ndGg7ZTxnO2UrKylkZWxldGUgZFtiW2VdXTtpZighKGM/bTpmLmlzRW1wdHlPYmplY3QpKGQpKXJldHVybn19aWYoIWMpe2RlbGV0ZSBqW2tdLmRhdGE7aWYoIW0oaltrXSkpcmV0dXJufWYuc3VwcG9ydC5kZWxldGVFeHBhbmRvfHwhai5zZXRJbnRlcnZhbD9kZWxldGUgaltrXTpqW2tdPW51bGwsaSYmKGYuc3VwcG9ydC5kZWxldGVFeHBhbmRvP2RlbGV0ZSBhW2hdOmEucmVtb3ZlQXR0cmlidXRlP2EucmVtb3ZlQXR0cmlidXRlKGgpOmFbaF09bnVsbCl9fSxfZGF0YTpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIGYuZGF0YShhLGIsYywhMCl9LGFjY2VwdERhdGE6ZnVuY3Rpb24oYSl7aWYoYS5ub2RlTmFtZSl7dmFyIGI9Zi5ub0RhdGFbYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpXTtpZihiKXJldHVybiBiIT09ITAmJmEuZ2V0QXR0cmlidXRlKCJjbGFzc2lkIik9PT1ifXJldHVybiEwfX0pLGYuZm4uZXh0ZW5kKHtkYXRhOmZ1bmN0aW9uKGEsYyl7dmFyIGQsZSxnLGg9bnVsbDtpZih0eXBlb2YgYT09InVuZGVmaW5lZCIpe2lmKHRoaXMubGVuZ3RoKXtoPWYuZGF0YSh0aGlzWzBdKTtpZih0aGlzWzBdLm5vZGVUeXBlPT09MSYmIWYuX2RhdGEodGhpc1swXSwicGFyc2VkQXR0cnMiKSl7ZT10aGlzWzBdLmF0dHJpYnV0ZXM7Zm9yKHZhciBpPTAsaj1lLmxlbmd0aDtpPGo7aSsrKWc9ZVtpXS5uYW1lLGcuaW5kZXhPZigiZGF0YS0iKT09PTAmJihnPWYuY2FtZWxDYXNlKGcuc3Vic3RyaW5nKDUpKSxsKHRoaXNbMF0sZyxoW2ddKSk7Zi5fZGF0YSh0aGlzWzBdLCJwYXJzZWRBdHRycyIsITApfX1yZXR1cm4gaH1pZih0eXBlb2YgYT09Im9iamVjdCIpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGF0YSh0aGlzLGEpfSk7ZD1hLnNwbGl0KCIuIiksZFsxXT1kWzFdPyIuIitkWzFdOiIiO2lmKGM9PT1iKXtoPXRoaXMudHJpZ2dlckhhbmRsZXIoImdldERhdGEiK2RbMV0rIiEiLFtkWzBdXSksaD09PWImJnRoaXMubGVuZ3RoJiYoaD1mLmRhdGEodGhpc1swXSxhKSxoPWwodGhpc1swXSxhLGgpKTtyZXR1cm4gaD09PWImJmRbMV0/dGhpcy5kYXRhKGRbMF0pOmh9cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksZT1bZFswXSxjXTtiLnRyaWdnZXJIYW5kbGVyKCJzZXREYXRhIitkWzFdKyIhIixlKSxmLmRhdGEodGhpcyxhLGMpLGIudHJpZ2dlckhhbmRsZXIoImNoYW5nZURhdGEiK2RbMV0rIiEiLGUpfSl9LHJlbW92ZURhdGE6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YucmVtb3ZlRGF0YSh0aGlzLGEpfSl9fSksZi5leHRlbmQoe19tYXJrOmZ1bmN0aW9uKGEsYil7YSYmKGI9KGJ8fCJmeCIpKyJtYXJrIixmLl9kYXRhKGEsYiwoZi5fZGF0YShhLGIpfHwwKSsxKSl9LF91bm1hcms6ZnVuY3Rpb24oYSxiLGMpe2EhPT0hMCYmKGM9YixiPWEsYT0hMSk7aWYoYil7Yz1jfHwiZngiO3ZhciBkPWMrIm1hcmsiLGU9YT8wOihmLl9kYXRhKGIsZCl8fDEpLTE7ZT9mLl9kYXRhKGIsZCxlKTooZi5yZW1vdmVEYXRhKGIsZCwhMCksbihiLGMsIm1hcmsiKSl9fSxxdWV1ZTpmdW5jdGlvbihhLGIsYyl7dmFyIGQ7aWYoYSl7Yj0oYnx8ImZ4IikrInF1ZXVlIixkPWYuX2RhdGEoYSxiKSxjJiYoIWR8fGYuaXNBcnJheShjKT9kPWYuX2RhdGEoYSxiLGYubWFrZUFycmF5KGMpKTpkLnB1c2goYykpO3JldHVybiBkfHxbXX19LGRlcXVldWU6ZnVuY3Rpb24oYSxiKXtiPWJ8fCJmeCI7dmFyIGM9Zi5xdWV1ZShhLGIpLGQ9Yy5zaGlmdCgpLGU9e307ZD09PSJpbnByb2dyZXNzIiYmKGQ9Yy5zaGlmdCgpKSxkJiYoYj09PSJmeCImJmMudW5zaGlmdCgiaW5wcm9ncmVzcyIpLGYuX2RhdGEoYSxiKyIucnVuIixlKSxkLmNhbGwoYSxmdW5jdGlvbigpe2YuZGVxdWV1ZShhLGIpfSxlKSksYy5sZW5ndGh8fChmLnJlbW92ZURhdGEoYSxiKyJxdWV1ZSAiK2IrIi5ydW4iLCEwKSxuKGEsYiwicXVldWUiKSl9fSksZi5mbi5leHRlbmQoe3F1ZXVlOmZ1bmN0aW9uKGEsYyl7dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9ImZ4Iik7aWYoYz09PWIpcmV0dXJuIGYucXVldWUodGhpc1swXSxhKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9Zi5xdWV1ZSh0aGlzLGEsYyk7YT09PSJmeCImJmJbMF0hPT0iaW5wcm9ncmVzcyImJmYuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlcXVldWU6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2YuZGVxdWV1ZSh0aGlzLGEpfSl9LGRlbGF5OmZ1bmN0aW9uKGEsYil7YT1mLmZ4P2YuZnguc3BlZWRzW2FdfHxhOmEsYj1ifHwiZngiO3JldHVybiB0aGlzLnF1ZXVlKGIsZnVuY3Rpb24oYixjKXt2YXIgZD1zZXRUaW1lb3V0KGIsYSk7Yy5zdG9wPWZ1bmN0aW9uKCl7Y2xlYXJUaW1lb3V0KGQpfX0pfSxjbGVhclF1ZXVlOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnF1ZXVlKGF8fCJmeCIsW10pfSxwcm9taXNlOmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gbSgpey0taHx8ZC5yZXNvbHZlV2l0aChlLFtlXSl9dHlwZW9mIGEhPSJzdHJpbmciJiYoYz1hLGE9YiksYT1hfHwiZngiO3ZhciBkPWYuRGVmZXJyZWQoKSxlPXRoaXMsZz1lLmxlbmd0aCxoPTEsaT1hKyJkZWZlciIsaj1hKyJxdWV1ZSIsaz1hKyJtYXJrIixsO3doaWxlKGctLSlpZihsPWYuZGF0YShlW2ddLGksYiwhMCl8fChmLmRhdGEoZVtnXSxqLGIsITApfHxmLmRhdGEoZVtnXSxrLGIsITApKSYmZi5kYXRhKGVbZ10saSxmLkNhbGxiYWNrcygib25jZSBtZW1vcnkiKSwhMCkpaCsrLGwuYWRkKG0pO20oKTtyZXR1cm4gZC5wcm9taXNlKCl9fSk7dmFyIG89L1tcblx0XHJdL2cscD0vXHMrLyxxPS9cci9nLHI9L14oPzpidXR0b258aW5wdXQpJC9pLHM9L14oPzpidXR0b258aW5wdXR8b2JqZWN0fHNlbGVjdHx0ZXh0YXJlYSkkL2ksdD0vXmEoPzpyZWEpPyQvaSx1PS9eKD86YXV0b2ZvY3VzfGF1dG9wbGF5fGFzeW5jfGNoZWNrZWR8Y29udHJvbHN8ZGVmZXJ8ZGlzYWJsZWR8aGlkZGVufGxvb3B8bXVsdGlwbGV8b3BlbnxyZWFkb25seXxyZXF1aXJlZHxzY29wZWR8c2VsZWN0ZWQpJC9pLHY9Zi5zdXBwb3J0LmdldFNldEF0dHJpYnV0ZSx3LHgseTtmLmZuLmV4dGVuZCh7YXR0cjpmdW5jdGlvbihhLGIpe3JldHVybiBmLmFjY2Vzcyh0aGlzLGEsYiwhMCxmLmF0dHIpfSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLnJlbW92ZUF0dHIodGhpcyxhKX0pfSxwcm9wOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxiLCEwLGYucHJvcCl9LHJlbW92ZVByb3A6ZnVuY3Rpb24oYSl7YT1mLnByb3BGaXhbYV18fGE7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3RyeXt0aGlzW2FdPWIsZGVsZXRlIHRoaXNbYV19Y2F0Y2goYyl7fX0pfSxhZGRDbGFzczpmdW5jdGlvbihhKXt2YXIgYixjLGQsZSxnLGgsaTtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXtmKHRoaXMpLmFkZENsYXNzKGEuY2FsbCh0aGlzLGIsdGhpcy5jbGFzc05hbWUpKX0pO2lmKGEmJnR5cGVvZiBhPT0ic3RyaW5nIil7Yj1hLnNwbGl0KHApO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtlPXRoaXNbY107aWYoZS5ub2RlVHlwZT09PTEpaWYoIWUuY2xhc3NOYW1lJiZiLmxlbmd0aD09PTEpZS5jbGFzc05hbWU9YTtlbHNle2c9IiAiK2UuY2xhc3NOYW1lKyIgIjtmb3IoaD0wLGk9Yi5sZW5ndGg7aDxpO2grKyl+Zy5pbmRleE9mKCIgIitiW2hdKyIgIil8fChnKz1iW2hdKyIgIik7ZS5jbGFzc05hbWU9Zi50cmltKGcpfX19cmV0dXJuIHRoaXN9LHJlbW92ZUNsYXNzOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnLGgsaSxqO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykucmVtb3ZlQ2xhc3MoYS5jYWxsKHRoaXMsYix0aGlzLmNsYXNzTmFtZSkpfSk7aWYoYSYmdHlwZW9mIGE9PSJzdHJpbmcifHxhPT09Yil7Yz0oYXx8IiIpLnNwbGl0KHApO2ZvcihkPTAsZT10aGlzLmxlbmd0aDtkPGU7ZCsrKXtnPXRoaXNbZF07aWYoZy5ub2RlVHlwZT09PTEmJmcuY2xhc3NOYW1lKWlmKGEpe2g9KCIgIitnLmNsYXNzTmFtZSsiICIpLnJlcGxhY2UobywiICIpO2ZvcihpPTAsaj1jLmxlbmd0aDtpPGo7aSsrKWg9aC5yZXBsYWNlKCIgIitjW2ldKyIgIiwiICIpO2cuY2xhc3NOYW1lPWYudHJpbShoKX1lbHNlIGcuY2xhc3NOYW1lPSIifX1yZXR1cm4gdGhpc30sdG9nZ2xlQ2xhc3M6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYSxkPXR5cGVvZiBiPT0iYm9vbGVhbiI7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS50b2dnbGVDbGFzcyhhLmNhbGwodGhpcyxjLHRoaXMuY2xhc3NOYW1lLGIpLGIpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2lmKGM9PT0ic3RyaW5nIil7dmFyIGUsZz0wLGg9Zih0aGlzKSxpPWIsaj1hLnNwbGl0KHApO3doaWxlKGU9altnKytdKWk9ZD9pOiFoLmhhc0NsYXNzKGUpLGhbaT8iYWRkQ2xhc3MiOiJyZW1vdmVDbGFzcyJdKGUpfWVsc2UgaWYoYz09PSJ1bmRlZmluZWQifHxjPT09ImJvb2xlYW4iKXRoaXMuY2xhc3NOYW1lJiZmLl9kYXRhKHRoaXMsIl9fY2xhc3NOYW1lX18iLHRoaXMuY2xhc3NOYW1lKSx0aGlzLmNsYXNzTmFtZT10aGlzLmNsYXNzTmFtZXx8YT09PSExPyIiOmYuX2RhdGEodGhpcywiX19jbGFzc05hbWVfXyIpfHwiIn0pfSxoYXNDbGFzczpmdW5jdGlvbihhKXt2YXIgYj0iICIrYSsiICIsYz0wLGQ9dGhpcy5sZW5ndGg7Zm9yKDtjPGQ7YysrKWlmKHRoaXNbY10ubm9kZVR5cGU9PT0xJiYoIiAiK3RoaXNbY10uY2xhc3NOYW1lKyIgIikucmVwbGFjZShvLCIgIikuaW5kZXhPZihiKT4tMSlyZXR1cm4hMDtyZXR1cm4hMX0sdmFsOmZ1bmN0aW9uKGEpe3ZhciBjLGQsZSxnPXRoaXNbMF07e2lmKCEhYXJndW1lbnRzLmxlbmd0aCl7ZT1mLmlzRnVuY3Rpb24oYSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihkKXt2YXIgZz1mKHRoaXMpLGg7aWYodGhpcy5ub2RlVHlwZT09PTEpe2U/aD1hLmNhbGwodGhpcyxkLGcudmFsKCkpOmg9YSxoPT1udWxsP2g9IiI6dHlwZW9mIGg9PSJudW1iZXIiP2grPSIiOmYuaXNBcnJheShoKSYmKGg9Zi5tYXAoaCxmdW5jdGlvbihhKXtyZXR1cm4gYT09bnVsbD8iIjphKyIifSkpLGM9Zi52YWxIb29rc1t0aGlzLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldfHxmLnZhbEhvb2tzW3RoaXMudHlwZV07aWYoIWN8fCEoInNldCJpbiBjKXx8Yy5zZXQodGhpcyxoLCJ2YWx1ZSIpPT09Yil0aGlzLnZhbHVlPWh9fSl9aWYoZyl7Yz1mLnZhbEhvb2tzW2cubm9kZU5hbWUudG9Mb3dlckNhc2UoKV18fGYudmFsSG9va3NbZy50eXBlXTtpZihjJiYiZ2V0ImluIGMmJihkPWMuZ2V0KGcsInZhbHVlIikpIT09YilyZXR1cm4gZDtkPWcudmFsdWU7cmV0dXJuIHR5cGVvZiBkPT0ic3RyaW5nIj9kLnJlcGxhY2UocSwiIik6ZD09bnVsbD8iIjpkfX19fSksZi5leHRlbmQoe3ZhbEhvb2tzOntvcHRpb246e2dldDpmdW5jdGlvbihhKXt2YXIgYj1hLmF0dHJpYnV0ZXMudmFsdWU7cmV0dXJuIWJ8fGIuc3BlY2lmaWVkP2EudmFsdWU6YS50ZXh0fX0sc2VsZWN0OntnZXQ6ZnVuY3Rpb24oYSl7dmFyIGIsYyxkLGUsZz1hLnNlbGVjdGVkSW5kZXgsaD1bXSxpPWEub3B0aW9ucyxqPWEudHlwZT09PSJzZWxlY3Qtb25lIjtpZihnPDApcmV0dXJuIG51bGw7Yz1qP2c6MCxkPWo/ZysxOmkubGVuZ3RoO2Zvcig7YzxkO2MrKyl7ZT1pW2NdO2lmKGUuc2VsZWN0ZWQmJihmLnN1cHBvcnQub3B0RGlzYWJsZWQ/IWUuZGlzYWJsZWQ6ZS5nZXRBdHRyaWJ1dGUoImRpc2FibGVkIik9PT1udWxsKSYmKCFlLnBhcmVudE5vZGUuZGlzYWJsZWR8fCFmLm5vZGVOYW1lKGUucGFyZW50Tm9kZSwib3B0Z3JvdXAiKSkpe2I9ZihlKS52YWwoKTtpZihqKXJldHVybiBiO2gucHVzaChiKX19aWYoaiYmIWgubGVuZ3RoJiZpLmxlbmd0aClyZXR1cm4gZihpW2ddKS52YWwoKTtyZXR1cm4gaH0sc2V0OmZ1bmN0aW9uKGEsYil7dmFyIGM9Zi5tYWtlQXJyYXkoYik7ZihhKS5maW5kKCJvcHRpb24iKS5lYWNoKGZ1bmN0aW9uKCl7dGhpcy5zZWxlY3RlZD1mLmluQXJyYXkoZih0aGlzKS52YWwoKSxjKT49MH0pLGMubGVuZ3RofHwoYS5zZWxlY3RlZEluZGV4PS0xKTtyZXR1cm4gY319fSxhdHRyRm46e3ZhbDohMCxjc3M6ITAsaHRtbDohMCx0ZXh0OiEwLGRhdGE6ITAsd2lkdGg6ITAsaGVpZ2h0OiEwLG9mZnNldDohMH0sYXR0cjpmdW5jdGlvbihhLGMsZCxlKXt2YXIgZyxoLGksaj1hLm5vZGVUeXBlO2lmKCEhYSYmaiE9PTMmJmohPT04JiZqIT09Mil7aWYoZSYmYyBpbiBmLmF0dHJGbilyZXR1cm4gZihhKVtjXShkKTtpZih0eXBlb2YgYS5nZXRBdHRyaWJ1dGU9PSJ1bmRlZmluZWQiKXJldHVybiBmLnByb3AoYSxjLGQpO2k9aiE9PTF8fCFmLmlzWE1MRG9jKGEpLGkmJihjPWMudG9Mb3dlckNhc2UoKSxoPWYuYXR0ckhvb2tzW2NdfHwodS50ZXN0KGMpP3g6dykpO2lmKGQhPT1iKXtpZihkPT09bnVsbCl7Zi5yZW1vdmVBdHRyKGEsYyk7cmV0dXJufWlmKGgmJiJzZXQiaW4gaCYmaSYmKGc9aC5zZXQoYSxkLGMpKSE9PWIpcmV0dXJuIGc7YS5zZXRBdHRyaWJ1dGUoYywiIitkKTtyZXR1cm4gZH1pZihoJiYiZ2V0ImluIGgmJmkmJihnPWguZ2V0KGEsYykpIT09bnVsbClyZXR1cm4gZztnPWEuZ2V0QXR0cmlidXRlKGMpO3JldHVybiBnPT09bnVsbD9iOmd9fSxyZW1vdmVBdHRyOmZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlLGcsaD0wO2lmKGImJmEubm9kZVR5cGU9PT0xKXtkPWIudG9Mb3dlckNhc2UoKS5zcGxpdChwKSxnPWQubGVuZ3RoO2Zvcig7aDxnO2grKyllPWRbaF0sZSYmKGM9Zi5wcm9wRml4W2VdfHxlLGYuYXR0cihhLGUsIiIpLGEucmVtb3ZlQXR0cmlidXRlKHY/ZTpjKSx1LnRlc3QoZSkmJmMgaW4gYSYmKGFbY109ITEpKX19LGF0dHJIb29rczp7dHlwZTp7c2V0OmZ1bmN0aW9uKGEsYil7aWYoci50ZXN0KGEubm9kZU5hbWUpJiZhLnBhcmVudE5vZGUpZi5lcnJvcigidHlwZSBwcm9wZXJ0eSBjYW4ndCBiZSBjaGFuZ2VkIik7ZWxzZSBpZighZi5zdXBwb3J0LnJhZGlvVmFsdWUmJmI9PT0icmFkaW8iJiZmLm5vZGVOYW1lKGEsImlucHV0Iikpe3ZhciBjPWEudmFsdWU7YS5zZXRBdHRyaWJ1dGUoInR5cGUiLGIpLGMmJihhLnZhbHVlPWMpO3JldHVybiBifX19LHZhbHVlOntnZXQ6ZnVuY3Rpb24oYSxiKXtpZih3JiZmLm5vZGVOYW1lKGEsImJ1dHRvbiIpKXJldHVybiB3LmdldChhLGIpO3JldHVybiBiIGluIGE/YS52YWx1ZTpudWxsfSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe2lmKHcmJmYubm9kZU5hbWUoYSwiYnV0dG9uIikpcmV0dXJuIHcuc2V0KGEsYixjKTthLnZhbHVlPWJ9fX0scHJvcEZpeDp7dGFiaW5kZXg6InRhYkluZGV4IixyZWFkb25seToicmVhZE9ubHkiLCJmb3IiOiJodG1sRm9yIiwiY2xhc3MiOiJjbGFzc05hbWUiLG1heGxlbmd0aDoibWF4TGVuZ3RoIixjZWxsc3BhY2luZzoiY2VsbFNwYWNpbmciLGNlbGxwYWRkaW5nOiJjZWxsUGFkZGluZyIscm93c3Bhbjoicm93U3BhbiIsY29sc3BhbjoiY29sU3BhbiIsdXNlbWFwOiJ1c2VNYXAiLGZyYW1lYm9yZGVyOiJmcmFtZUJvcmRlciIsY29udGVudGVkaXRhYmxlOiJjb250ZW50RWRpdGFibGUifSxwcm9wOmZ1bmN0aW9uKGEsYyxkKXt2YXIgZSxnLGgsaT1hLm5vZGVUeXBlO2lmKCEhYSYmaSE9PTMmJmkhPT04JiZpIT09Mil7aD1pIT09MXx8IWYuaXNYTUxEb2MoYSksaCYmKGM9Zi5wcm9wRml4W2NdfHxjLGc9Zi5wcm9wSG9va3NbY10pO3JldHVybiBkIT09Yj9nJiYic2V0ImluIGcmJihlPWcuc2V0KGEsZCxjKSkhPT1iP2U6YVtjXT1kOmcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSxjKSkhPT1udWxsP2U6YVtjXX19LHByb3BIb29rczp7dGFiSW5kZXg6e2dldDpmdW5jdGlvbihhKXt2YXIgYz1hLmdldEF0dHJpYnV0ZU5vZGUoInRhYmluZGV4Iik7cmV0dXJuIGMmJmMuc3BlY2lmaWVkP3BhcnNlSW50KGMudmFsdWUsMTApOnMudGVzdChhLm5vZGVOYW1lKXx8dC50ZXN0KGEubm9kZU5hbWUpJiZhLmhyZWY/MDpifX19fSksZi5hdHRySG9va3MudGFiaW5kZXg9Zi5wcm9wSG9va3MudGFiSW5kZXgseD17Z2V0OmZ1bmN0aW9uKGEsYyl7dmFyIGQsZT1mLnByb3AoYSxjKTtyZXR1cm4gZT09PSEwfHx0eXBlb2YgZSE9ImJvb2xlYW4iJiYoZD1hLmdldEF0dHJpYnV0ZU5vZGUoYykpJiZkLm5vZGVWYWx1ZSE9PSExP2MudG9Mb3dlckNhc2UoKTpifSxzZXQ6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkO2I9PT0hMT9mLnJlbW92ZUF0dHIoYSxjKTooZD1mLnByb3BGaXhbY118fGMsZCBpbiBhJiYoYVtkXT0hMCksYS5zZXRBdHRyaWJ1dGUoYyxjLnRvTG93ZXJDYXNlKCkpKTtyZXR1cm4gY319LHZ8fCh5PXtuYW1lOiEwLGlkOiEwfSx3PWYudmFsSG9va3MuYnV0dG9uPXtnZXQ6ZnVuY3Rpb24oYSxjKXt2YXIgZDtkPWEuZ2V0QXR0cmlidXRlTm9kZShjKTtyZXR1cm4gZCYmKHlbY10/ZC5ub2RlVmFsdWUhPT0iIjpkLnNwZWNpZmllZCk/ZC5ub2RlVmFsdWU6Yn0sc2V0OmZ1bmN0aW9uKGEsYixkKXt2YXIgZT1hLmdldEF0dHJpYnV0ZU5vZGUoZCk7ZXx8KGU9Yy5jcmVhdGVBdHRyaWJ1dGUoZCksYS5zZXRBdHRyaWJ1dGVOb2RlKGUpKTtyZXR1cm4gZS5ub2RlVmFsdWU9YisiIn19LGYuYXR0ckhvb2tzLnRhYmluZGV4LnNldD13LnNldCxmLmVhY2goWyJ3aWR0aCIsImhlaWdodCJdLGZ1bmN0aW9uKGEsYil7Zi5hdHRySG9va3NbYl09Zi5leHRlbmQoZi5hdHRySG9va3NbYl0se3NldDpmdW5jdGlvbihhLGMpe2lmKGM9PT0iIil7YS5zZXRBdHRyaWJ1dGUoYiwiYXV0byIpO3JldHVybiBjfX19KX0pLGYuYXR0ckhvb2tzLmNvbnRlbnRlZGl0YWJsZT17Z2V0OncuZ2V0LHNldDpmdW5jdGlvbihhLGIsYyl7Yj09PSIiJiYoYj0iZmFsc2UiKSx3LnNldChhLGIsYyl9fSksZi5zdXBwb3J0LmhyZWZOb3JtYWxpemVkfHxmLmVhY2goWyJocmVmIiwic3JjIiwid2lkdGgiLCJoZWlnaHQiXSxmdW5jdGlvbihhLGMpe2YuYXR0ckhvb2tzW2NdPWYuZXh0ZW5kKGYuYXR0ckhvb2tzW2NdLHtnZXQ6ZnVuY3Rpb24oYSl7dmFyIGQ9YS5nZXRBdHRyaWJ1dGUoYywyKTtyZXR1cm4gZD09PW51bGw/YjpkfX0pfSksZi5zdXBwb3J0LnN0eWxlfHwoZi5hdHRySG9va3Muc3R5bGU9e2dldDpmdW5jdGlvbihhKXtyZXR1cm4gYS5zdHlsZS5jc3NUZXh0LnRvTG93ZXJDYXNlKCl8fGJ9LHNldDpmdW5jdGlvbihhLGIpe3JldHVybiBhLnN0eWxlLmNzc1RleHQ9IiIrYn19KSxmLnN1cHBvcnQub3B0U2VsZWN0ZWR8fChmLnByb3BIb29rcy5zZWxlY3RlZD1mLmV4dGVuZChmLnByb3BIb29rcy5zZWxlY3RlZCx7Z2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtiJiYoYi5zZWxlY3RlZEluZGV4LGIucGFyZW50Tm9kZSYmYi5wYXJlbnROb2RlLnNlbGVjdGVkSW5kZXgpO3JldHVybiBudWxsfX0pKSxmLnN1cHBvcnQuZW5jdHlwZXx8KGYucHJvcEZpeC5lbmN0eXBlPSJlbmNvZGluZyIpLGYuc3VwcG9ydC5jaGVja09ufHxmLmVhY2goWyJyYWRpbyIsImNoZWNrYm94Il0sZnVuY3Rpb24oKXtmLnZhbEhvb2tzW3RoaXNdPXtnZXQ6ZnVuY3Rpb24oYSl7cmV0dXJuIGEuZ2V0QXR0cmlidXRlKCJ2YWx1ZSIpPT09bnVsbD8ib24iOmEudmFsdWV9fX0pLGYuZWFjaChbInJhZGlvIiwiY2hlY2tib3giXSxmdW5jdGlvbigpe2YudmFsSG9va3NbdGhpc109Zi5leHRlbmQoZi52YWxIb29rc1t0aGlzXSx7c2V0OmZ1bmN0aW9uKGEsYil7aWYoZi5pc0FycmF5KGIpKXJldHVybiBhLmNoZWNrZWQ9Zi5pbkFycmF5KGYoYSkudmFsKCksYik+PTB9fSl9KTt2YXIgej0vXig/OnRleHRhcmVhfGlucHV0fHNlbGVjdCkkL2ksQT0vXihbXlwuXSopPyg/OlwuKC4rKSk/JC8sQj0vXGJob3ZlcihcLlxTKyk/XGIvLEM9L15rZXkvLEQ9L14oPzptb3VzZXxjb250ZXh0bWVudSl8Y2xpY2svLEU9L14oPzpmb2N1c2luZm9jdXN8Zm9jdXNvdXRibHVyKSQvLEY9L14oXHcqKSg/OiMoW1x3XC1dKykpPyg/OlwuKFtcd1wtXSspKT8kLyxHPWZ1bmN0aW9uKGEpe3ZhciBiPUYuZXhlYyhhKTtiJiYoYlsxXT0oYlsxXXx8IiIpLnRvTG93ZXJDYXNlKCksYlszXT1iWzNdJiZuZXcgUmVnRXhwKCIoPzpefFxccykiK2JbM10rIig/Olxcc3wkKSIpKTtyZXR1cm4gYn0sSD1mdW5jdGlvbihhLGIpe3ZhciBjPWEuYXR0cmlidXRlc3x8e307cmV0dXJuKCFiWzFdfHxhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iWzFdKSYmKCFiWzJdfHwoYy5pZHx8e30pLnZhbHVlPT09YlsyXSkmJighYlszXXx8YlszXS50ZXN0KChjWyJjbGFzcyJdfHx7fSkudmFsdWUpKX0sST1mdW5jdGlvbihhKXtyZXR1cm4gZi5ldmVudC5zcGVjaWFsLmhvdmVyP2E6YS5yZXBsYWNlKEIsIm1vdXNlZW50ZXIkMSBtb3VzZWxlYXZlJDEiKX07Ci1mLmV2ZW50PXthZGQ6ZnVuY3Rpb24oYSxjLGQsZSxnKXt2YXIgaCxpLGosayxsLG0sbixvLHAscSxyLHM7aWYoIShhLm5vZGVUeXBlPT09M3x8YS5ub2RlVHlwZT09PTh8fCFjfHwhZHx8IShoPWYuX2RhdGEoYSkpKSl7ZC5oYW5kbGVyJiYocD1kLGQ9cC5oYW5kbGVyKSxkLmd1aWR8fChkLmd1aWQ9Zi5ndWlkKyspLGo9aC5ldmVudHMsanx8KGguZXZlbnRzPWo9e30pLGk9aC5oYW5kbGUsaXx8KGguaGFuZGxlPWk9ZnVuY3Rpb24oYSl7cmV0dXJuIHR5cGVvZiBmIT0idW5kZWZpbmVkIiYmKCFhfHxmLmV2ZW50LnRyaWdnZXJlZCE9PWEudHlwZSk/Zi5ldmVudC5kaXNwYXRjaC5hcHBseShpLmVsZW0sYXJndW1lbnRzKTpifSxpLmVsZW09YSksYz1mLnRyaW0oSShjKSkuc3BsaXQoIiAiKTtmb3Ioaz0wO2s8Yy5sZW5ndGg7aysrKXtsPUEuZXhlYyhjW2tdKXx8W10sbT1sWzFdLG49KGxbMl18fCIiKS5zcGxpdCgiLiIpLnNvcnQoKSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbT0oZz9zLmRlbGVnYXRlVHlwZTpzLmJpbmRUeXBlKXx8bSxzPWYuZXZlbnQuc3BlY2lhbFttXXx8e30sbz1mLmV4dGVuZCh7dHlwZTptLG9yaWdUeXBlOmxbMV0sZGF0YTplLGhhbmRsZXI6ZCxndWlkOmQuZ3VpZCxzZWxlY3RvcjpnLHF1aWNrOkcoZyksbmFtZXNwYWNlOm4uam9pbigiLiIpfSxwKSxyPWpbbV07aWYoIXIpe3I9alttXT1bXSxyLmRlbGVnYXRlQ291bnQ9MDtpZighcy5zZXR1cHx8cy5zZXR1cC5jYWxsKGEsZSxuLGkpPT09ITEpYS5hZGRFdmVudExpc3RlbmVyP2EuYWRkRXZlbnRMaXN0ZW5lcihtLGksITEpOmEuYXR0YWNoRXZlbnQmJmEuYXR0YWNoRXZlbnQoIm9uIittLGkpfXMuYWRkJiYocy5hZGQuY2FsbChhLG8pLG8uaGFuZGxlci5ndWlkfHwoby5oYW5kbGVyLmd1aWQ9ZC5ndWlkKSksZz9yLnNwbGljZShyLmRlbGVnYXRlQ291bnQrKywwLG8pOnIucHVzaChvKSxmLmV2ZW50Lmdsb2JhbFttXT0hMH1hPW51bGx9fSxnbG9iYWw6e30scmVtb3ZlOmZ1bmN0aW9uKGEsYixjLGQsZSl7dmFyIGc9Zi5oYXNEYXRhKGEpJiZmLl9kYXRhKGEpLGgsaSxqLGssbCxtLG4sbyxwLHEscixzO2lmKCEhZyYmISEobz1nLmV2ZW50cykpe2I9Zi50cmltKEkoYnx8IiIpKS5zcGxpdCgiICIpO2ZvcihoPTA7aDxiLmxlbmd0aDtoKyspe2k9QS5leGVjKGJbaF0pfHxbXSxqPWs9aVsxXSxsPWlbMl07aWYoIWope2ZvcihqIGluIG8pZi5ldmVudC5yZW1vdmUoYSxqK2JbaF0sYyxkLCEwKTtjb250aW51ZX1wPWYuZXZlbnQuc3BlY2lhbFtqXXx8e30saj0oZD9wLmRlbGVnYXRlVHlwZTpwLmJpbmRUeXBlKXx8aixyPW9bal18fFtdLG09ci5sZW5ndGgsbD1sP25ldyBSZWdFeHAoIihefFxcLikiK2wuc3BsaXQoIi4iKS5zb3J0KCkuam9pbigiXFwuKD86LipcXC4pPyIpKyIoXFwufCQpIik6bnVsbDtmb3Iobj0wO248ci5sZW5ndGg7bisrKXM9cltuXSwoZXx8az09PXMub3JpZ1R5cGUpJiYoIWN8fGMuZ3VpZD09PXMuZ3VpZCkmJighbHx8bC50ZXN0KHMubmFtZXNwYWNlKSkmJighZHx8ZD09PXMuc2VsZWN0b3J8fGQ9PT0iKioiJiZzLnNlbGVjdG9yKSYmKHIuc3BsaWNlKG4tLSwxKSxzLnNlbGVjdG9yJiZyLmRlbGVnYXRlQ291bnQtLSxwLnJlbW92ZSYmcC5yZW1vdmUuY2FsbChhLHMpKTtyLmxlbmd0aD09PTAmJm0hPT1yLmxlbmd0aCYmKCghcC50ZWFyZG93bnx8cC50ZWFyZG93bi5jYWxsKGEsbCk9PT0hMSkmJmYucmVtb3ZlRXZlbnQoYSxqLGcuaGFuZGxlKSxkZWxldGUgb1tqXSl9Zi5pc0VtcHR5T2JqZWN0KG8pJiYocT1nLmhhbmRsZSxxJiYocS5lbGVtPW51bGwpLGYucmVtb3ZlRGF0YShhLFsiZXZlbnRzIiwiaGFuZGxlIl0sITApKX19LGN1c3RvbUV2ZW50OntnZXREYXRhOiEwLHNldERhdGE6ITAsY2hhbmdlRGF0YTohMH0sdHJpZ2dlcjpmdW5jdGlvbihjLGQsZSxnKXtpZighZXx8ZS5ub2RlVHlwZSE9PTMmJmUubm9kZVR5cGUhPT04KXt2YXIgaD1jLnR5cGV8fGMsaT1bXSxqLGssbCxtLG4sbyxwLHEscixzO2lmKEUudGVzdChoK2YuZXZlbnQudHJpZ2dlcmVkKSlyZXR1cm47aC5pbmRleE9mKCIhIik+PTAmJihoPWguc2xpY2UoMCwtMSksaz0hMCksaC5pbmRleE9mKCIuIik+PTAmJihpPWguc3BsaXQoIi4iKSxoPWkuc2hpZnQoKSxpLnNvcnQoKSk7aWYoKCFlfHxmLmV2ZW50LmN1c3RvbUV2ZW50W2hdKSYmIWYuZXZlbnQuZ2xvYmFsW2hdKXJldHVybjtjPXR5cGVvZiBjPT0ib2JqZWN0Ij9jW2YuZXhwYW5kb10/YzpuZXcgZi5FdmVudChoLGMpOm5ldyBmLkV2ZW50KGgpLGMudHlwZT1oLGMuaXNUcmlnZ2VyPSEwLGMuZXhjbHVzaXZlPWssYy5uYW1lc3BhY2U9aS5qb2luKCIuIiksYy5uYW1lc3BhY2VfcmU9Yy5uYW1lc3BhY2U/bmV3IFJlZ0V4cCgiKF58XFwuKSIraS5qb2luKCJcXC4oPzouKlxcLik/IikrIihcXC58JCkiKTpudWxsLG89aC5pbmRleE9mKCI6Iik8MD8ib24iK2g6IiI7aWYoIWUpe2o9Zi5jYWNoZTtmb3IobCBpbiBqKWpbbF0uZXZlbnRzJiZqW2xdLmV2ZW50c1toXSYmZi5ldmVudC50cmlnZ2VyKGMsZCxqW2xdLmhhbmRsZS5lbGVtLCEwKTtyZXR1cm59Yy5yZXN1bHQ9YixjLnRhcmdldHx8KGMudGFyZ2V0PWUpLGQ9ZCE9bnVsbD9mLm1ha2VBcnJheShkKTpbXSxkLnVuc2hpZnQoYykscD1mLmV2ZW50LnNwZWNpYWxbaF18fHt9O2lmKHAudHJpZ2dlciYmcC50cmlnZ2VyLmFwcGx5KGUsZCk9PT0hMSlyZXR1cm47cj1bW2UscC5iaW5kVHlwZXx8aF1dO2lmKCFnJiYhcC5ub0J1YmJsZSYmIWYuaXNXaW5kb3coZSkpe3M9cC5kZWxlZ2F0ZVR5cGV8fGgsbT1FLnRlc3QocytoKT9lOmUucGFyZW50Tm9kZSxuPW51bGw7Zm9yKDttO209bS5wYXJlbnROb2RlKXIucHVzaChbbSxzXSksbj1tO24mJm49PT1lLm93bmVyRG9jdW1lbnQmJnIucHVzaChbbi5kZWZhdWx0Vmlld3x8bi5wYXJlbnRXaW5kb3d8fGEsc10pfWZvcihsPTA7bDxyLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtsKyspbT1yW2xdWzBdLGMudHlwZT1yW2xdWzFdLHE9KGYuX2RhdGEobSwiZXZlbnRzIil8fHt9KVtjLnR5cGVdJiZmLl9kYXRhKG0sImhhbmRsZSIpLHEmJnEuYXBwbHkobSxkKSxxPW8mJm1bb10scSYmZi5hY2NlcHREYXRhKG0pJiZxLmFwcGx5KG0sZCk9PT0hMSYmYy5wcmV2ZW50RGVmYXVsdCgpO2MudHlwZT1oLCFnJiYhYy5pc0RlZmF1bHRQcmV2ZW50ZWQoKSYmKCFwLl9kZWZhdWx0fHxwLl9kZWZhdWx0LmFwcGx5KGUub3duZXJEb2N1bWVudCxkKT09PSExKSYmKGghPT0iY2xpY2sifHwhZi5ub2RlTmFtZShlLCJhIikpJiZmLmFjY2VwdERhdGEoZSkmJm8mJmVbaF0mJihoIT09ImZvY3VzIiYmaCE9PSJibHVyInx8Yy50YXJnZXQub2Zmc2V0V2lkdGghPT0wKSYmIWYuaXNXaW5kb3coZSkmJihuPWVbb10sbiYmKGVbb109bnVsbCksZi5ldmVudC50cmlnZ2VyZWQ9aCxlW2hdKCksZi5ldmVudC50cmlnZ2VyZWQ9YixuJiYoZVtvXT1uKSk7cmV0dXJuIGMucmVzdWx0fX0sZGlzcGF0Y2g6ZnVuY3Rpb24oYyl7Yz1mLmV2ZW50LmZpeChjfHxhLmV2ZW50KTt2YXIgZD0oZi5fZGF0YSh0aGlzLCJldmVudHMiKXx8e30pW2MudHlwZV18fFtdLGU9ZC5kZWxlZ2F0ZUNvdW50LGc9W10uc2xpY2UuY2FsbChhcmd1bWVudHMsMCksaD0hYy5leGNsdXNpdmUmJiFjLm5hbWVzcGFjZSxpPVtdLGosayxsLG0sbixvLHAscSxyLHMsdDtnWzBdPWMsYy5kZWxlZ2F0ZVRhcmdldD10aGlzO2lmKGUmJiFjLnRhcmdldC5kaXNhYmxlZCYmKCFjLmJ1dHRvbnx8Yy50eXBlIT09ImNsaWNrIikpe209Zih0aGlzKSxtLmNvbnRleHQ9dGhpcy5vd25lckRvY3VtZW50fHx0aGlzO2ZvcihsPWMudGFyZ2V0O2whPXRoaXM7bD1sLnBhcmVudE5vZGV8fHRoaXMpe289e30scT1bXSxtWzBdPWw7Zm9yKGo9MDtqPGU7aisrKXI9ZFtqXSxzPXIuc2VsZWN0b3Isb1tzXT09PWImJihvW3NdPXIucXVpY2s/SChsLHIucXVpY2spOm0uaXMocykpLG9bc10mJnEucHVzaChyKTtxLmxlbmd0aCYmaS5wdXNoKHtlbGVtOmwsbWF0Y2hlczpxfSl9fWQubGVuZ3RoPmUmJmkucHVzaCh7ZWxlbTp0aGlzLG1hdGNoZXM6ZC5zbGljZShlKX0pO2ZvcihqPTA7ajxpLmxlbmd0aCYmIWMuaXNQcm9wYWdhdGlvblN0b3BwZWQoKTtqKyspe3A9aVtqXSxjLmN1cnJlbnRUYXJnZXQ9cC5lbGVtO2ZvcihrPTA7azxwLm1hdGNoZXMubGVuZ3RoJiYhYy5pc0ltbWVkaWF0ZVByb3BhZ2F0aW9uU3RvcHBlZCgpO2srKyl7cj1wLm1hdGNoZXNba107aWYoaHx8IWMubmFtZXNwYWNlJiYhci5uYW1lc3BhY2V8fGMubmFtZXNwYWNlX3JlJiZjLm5hbWVzcGFjZV9yZS50ZXN0KHIubmFtZXNwYWNlKSljLmRhdGE9ci5kYXRhLGMuaGFuZGxlT2JqPXIsbj0oKGYuZXZlbnQuc3BlY2lhbFtyLm9yaWdUeXBlXXx8e30pLmhhbmRsZXx8ci5oYW5kbGVyKS5hcHBseShwLmVsZW0sZyksbiE9PWImJihjLnJlc3VsdD1uLG49PT0hMSYmKGMucHJldmVudERlZmF1bHQoKSxjLnN0b3BQcm9wYWdhdGlvbigpKSl9fXJldHVybiBjLnJlc3VsdH0scHJvcHM6ImF0dHJDaGFuZ2UgYXR0ck5hbWUgcmVsYXRlZE5vZGUgc3JjRWxlbWVudCBhbHRLZXkgYnViYmxlcyBjYW5jZWxhYmxlIGN0cmxLZXkgY3VycmVudFRhcmdldCBldmVudFBoYXNlIG1ldGFLZXkgcmVsYXRlZFRhcmdldCBzaGlmdEtleSB0YXJnZXQgdGltZVN0YW1wIHZpZXcgd2hpY2giLnNwbGl0KCIgIiksZml4SG9va3M6e30sa2V5SG9va3M6e3Byb3BzOiJjaGFyIGNoYXJDb2RlIGtleSBrZXlDb2RlIi5zcGxpdCgiICIpLGZpbHRlcjpmdW5jdGlvbihhLGIpe2Eud2hpY2g9PW51bGwmJihhLndoaWNoPWIuY2hhckNvZGUhPW51bGw/Yi5jaGFyQ29kZTpiLmtleUNvZGUpO3JldHVybiBhfX0sbW91c2VIb29rczp7cHJvcHM6ImJ1dHRvbiBidXR0b25zIGNsaWVudFggY2xpZW50WSBmcm9tRWxlbWVudCBvZmZzZXRYIG9mZnNldFkgcGFnZVggcGFnZVkgc2NyZWVuWCBzY3JlZW5ZIHRvRWxlbWVudCIuc3BsaXQoIiAiKSxmaWx0ZXI6ZnVuY3Rpb24oYSxkKXt2YXIgZSxmLGcsaD1kLmJ1dHRvbixpPWQuZnJvbUVsZW1lbnQ7YS5wYWdlWD09bnVsbCYmZC5jbGllbnRYIT1udWxsJiYoZT1hLnRhcmdldC5vd25lckRvY3VtZW50fHxjLGY9ZS5kb2N1bWVudEVsZW1lbnQsZz1lLmJvZHksYS5wYWdlWD1kLmNsaWVudFgrKGYmJmYuc2Nyb2xsTGVmdHx8ZyYmZy5zY3JvbGxMZWZ0fHwwKS0oZiYmZi5jbGllbnRMZWZ0fHxnJiZnLmNsaWVudExlZnR8fDApLGEucGFnZVk9ZC5jbGllbnRZKyhmJiZmLnNjcm9sbFRvcHx8ZyYmZy5zY3JvbGxUb3B8fDApLShmJiZmLmNsaWVudFRvcHx8ZyYmZy5jbGllbnRUb3B8fDApKSwhYS5yZWxhdGVkVGFyZ2V0JiZpJiYoYS5yZWxhdGVkVGFyZ2V0PWk9PT1hLnRhcmdldD9kLnRvRWxlbWVudDppKSwhYS53aGljaCYmaCE9PWImJihhLndoaWNoPWgmMT8xOmgmMj8zOmgmND8yOjApO3JldHVybiBhfX0sZml4OmZ1bmN0aW9uKGEpe2lmKGFbZi5leHBhbmRvXSlyZXR1cm4gYTt2YXIgZCxlLGc9YSxoPWYuZXZlbnQuZml4SG9va3NbYS50eXBlXXx8e30saT1oLnByb3BzP3RoaXMucHJvcHMuY29uY2F0KGgucHJvcHMpOnRoaXMucHJvcHM7YT1mLkV2ZW50KGcpO2ZvcihkPWkubGVuZ3RoO2Q7KWU9aVstLWRdLGFbZV09Z1tlXTthLnRhcmdldHx8KGEudGFyZ2V0PWcuc3JjRWxlbWVudHx8YyksYS50YXJnZXQubm9kZVR5cGU9PT0zJiYoYS50YXJnZXQ9YS50YXJnZXQucGFyZW50Tm9kZSksYS5tZXRhS2V5PT09YiYmKGEubWV0YUtleT1hLmN0cmxLZXkpO3JldHVybiBoLmZpbHRlcj9oLmZpbHRlcihhLGcpOmF9LHNwZWNpYWw6e3JlYWR5OntzZXR1cDpmLmJpbmRSZWFkeX0sbG9hZDp7bm9CdWJibGU6ITB9LGZvY3VzOntkZWxlZ2F0ZVR5cGU6ImZvY3VzaW4ifSxibHVyOntkZWxlZ2F0ZVR5cGU6ImZvY3Vzb3V0In0sYmVmb3JldW5sb2FkOntzZXR1cDpmdW5jdGlvbihhLGIsYyl7Zi5pc1dpbmRvdyh0aGlzKSYmKHRoaXMub25iZWZvcmV1bmxvYWQ9Yyl9LHRlYXJkb3duOmZ1bmN0aW9uKGEsYil7dGhpcy5vbmJlZm9yZXVubG9hZD09PWImJih0aGlzLm9uYmVmb3JldW5sb2FkPW51bGwpfX19LHNpbXVsYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3ZhciBlPWYuZXh0ZW5kKG5ldyBmLkV2ZW50LGMse3R5cGU6YSxpc1NpbXVsYXRlZDohMCxvcmlnaW5hbEV2ZW50Ont9fSk7ZD9mLmV2ZW50LnRyaWdnZXIoZSxudWxsLGIpOmYuZXZlbnQuZGlzcGF0Y2guY2FsbChiLGUpLGUuaXNEZWZhdWx0UHJldmVudGVkKCkmJmMucHJldmVudERlZmF1bHQoKX19LGYuZXZlbnQuaGFuZGxlPWYuZXZlbnQuZGlzcGF0Y2gsZi5yZW1vdmVFdmVudD1jLnJlbW92ZUV2ZW50TGlzdGVuZXI/ZnVuY3Rpb24oYSxiLGMpe2EucmVtb3ZlRXZlbnRMaXN0ZW5lciYmYS5yZW1vdmVFdmVudExpc3RlbmVyKGIsYywhMSl9OmZ1bmN0aW9uKGEsYixjKXthLmRldGFjaEV2ZW50JiZhLmRldGFjaEV2ZW50KCJvbiIrYixjKX0sZi5FdmVudD1mdW5jdGlvbihhLGIpe2lmKCEodGhpcyBpbnN0YW5jZW9mIGYuRXZlbnQpKXJldHVybiBuZXcgZi5FdmVudChhLGIpO2EmJmEudHlwZT8odGhpcy5vcmlnaW5hbEV2ZW50PWEsdGhpcy50eXBlPWEudHlwZSx0aGlzLmlzRGVmYXVsdFByZXZlbnRlZD1hLmRlZmF1bHRQcmV2ZW50ZWR8fGEucmV0dXJuVmFsdWU9PT0hMXx8YS5nZXRQcmV2ZW50RGVmYXVsdCYmYS5nZXRQcmV2ZW50RGVmYXVsdCgpP0s6Sik6dGhpcy50eXBlPWEsYiYmZi5leHRlbmQodGhpcyxiKSx0aGlzLnRpbWVTdGFtcD1hJiZhLnRpbWVTdGFtcHx8Zi5ub3coKSx0aGlzW2YuZXhwYW5kb109ITB9LGYuRXZlbnQucHJvdG90eXBlPXtwcmV2ZW50RGVmYXVsdDpmdW5jdGlvbigpe3RoaXMuaXNEZWZhdWx0UHJldmVudGVkPUs7dmFyIGE9dGhpcy5vcmlnaW5hbEV2ZW50OyFhfHwoYS5wcmV2ZW50RGVmYXVsdD9hLnByZXZlbnREZWZhdWx0KCk6YS5yZXR1cm5WYWx1ZT0hMSl9LHN0b3BQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNQcm9wYWdhdGlvblN0b3BwZWQ9Szt2YXIgYT10aGlzLm9yaWdpbmFsRXZlbnQ7IWF8fChhLnN0b3BQcm9wYWdhdGlvbiYmYS5zdG9wUHJvcGFnYXRpb24oKSxhLmNhbmNlbEJ1YmJsZT0hMCl9LHN0b3BJbW1lZGlhdGVQcm9wYWdhdGlvbjpmdW5jdGlvbigpe3RoaXMuaXNJbW1lZGlhdGVQcm9wYWdhdGlvblN0b3BwZWQ9Syx0aGlzLnN0b3BQcm9wYWdhdGlvbigpfSxpc0RlZmF1bHRQcmV2ZW50ZWQ6Sixpc1Byb3BhZ2F0aW9uU3RvcHBlZDpKLGlzSW1tZWRpYXRlUHJvcGFnYXRpb25TdG9wcGVkOkp9LGYuZWFjaCh7bW91c2VlbnRlcjoibW91c2VvdmVyIixtb3VzZWxlYXZlOiJtb3VzZW91dCJ9LGZ1bmN0aW9uKGEsYil7Zi5ldmVudC5zcGVjaWFsW2FdPXtkZWxlZ2F0ZVR5cGU6YixiaW5kVHlwZTpiLGhhbmRsZTpmdW5jdGlvbihhKXt2YXIgYz10aGlzLGQ9YS5yZWxhdGVkVGFyZ2V0LGU9YS5oYW5kbGVPYmosZz1lLnNlbGVjdG9yLGg7aWYoIWR8fGQhPT1jJiYhZi5jb250YWlucyhjLGQpKWEudHlwZT1lLm9yaWdUeXBlLGg9ZS5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKSxhLnR5cGU9YjtyZXR1cm4gaH19fSksZi5zdXBwb3J0LnN1Ym1pdEJ1YmJsZXN8fChmLmV2ZW50LnNwZWNpYWwuc3VibWl0PXtzZXR1cDpmdW5jdGlvbigpe2lmKGYubm9kZU5hbWUodGhpcywiZm9ybSIpKXJldHVybiExO2YuZXZlbnQuYWRkKHRoaXMsImNsaWNrLl9zdWJtaXQga2V5cHJlc3MuX3N1Ym1pdCIsZnVuY3Rpb24oYSl7dmFyIGM9YS50YXJnZXQsZD1mLm5vZGVOYW1lKGMsImlucHV0Iil8fGYubm9kZU5hbWUoYywiYnV0dG9uIik/Yy5mb3JtOmI7ZCYmIWQuX3N1Ym1pdF9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGQsInN1Ym1pdC5fc3VibWl0IixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzVHJpZ2dlciYmZi5ldmVudC5zaW11bGF0ZSgic3VibWl0Iix0aGlzLnBhcmVudE5vZGUsYSwhMCl9KSxkLl9zdWJtaXRfYXR0YWNoZWQ9ITApfSl9LHRlYXJkb3duOmZ1bmN0aW9uKCl7aWYoZi5ub2RlTmFtZSh0aGlzLCJmb3JtIikpcmV0dXJuITE7Zi5ldmVudC5yZW1vdmUodGhpcywiLl9zdWJtaXQiKX19KSxmLnN1cHBvcnQuY2hhbmdlQnViYmxlc3x8KGYuZXZlbnQuc3BlY2lhbC5jaGFuZ2U9e3NldHVwOmZ1bmN0aW9uKCl7aWYoei50ZXN0KHRoaXMubm9kZU5hbWUpKXtpZih0aGlzLnR5cGU9PT0iY2hlY2tib3gifHx0aGlzLnR5cGU9PT0icmFkaW8iKWYuZXZlbnQuYWRkKHRoaXMsInByb3BlcnR5Y2hhbmdlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe2Eub3JpZ2luYWxFdmVudC5wcm9wZXJ0eU5hbWU9PT0iY2hlY2tlZCImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITApfSksZi5ldmVudC5hZGQodGhpcywiY2xpY2suX2NoYW5nZSIsZnVuY3Rpb24oYSl7dGhpcy5fanVzdF9jaGFuZ2VkJiYhYS5pc1RyaWdnZXImJih0aGlzLl9qdXN0X2NoYW5nZWQ9ITEsZi5ldmVudC5zaW11bGF0ZSgiY2hhbmdlIix0aGlzLGEsITApKX0pO3JldHVybiExfWYuZXZlbnQuYWRkKHRoaXMsImJlZm9yZWFjdGl2YXRlLl9jaGFuZ2UiLGZ1bmN0aW9uKGEpe3ZhciBiPWEudGFyZ2V0O3oudGVzdChiLm5vZGVOYW1lKSYmIWIuX2NoYW5nZV9hdHRhY2hlZCYmKGYuZXZlbnQuYWRkKGIsImNoYW5nZS5fY2hhbmdlIixmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUmJiFhLmlzU2ltdWxhdGVkJiYhYS5pc1RyaWdnZXImJmYuZXZlbnQuc2ltdWxhdGUoImNoYW5nZSIsdGhpcy5wYXJlbnROb2RlLGEsITApfSksYi5fY2hhbmdlX2F0dGFjaGVkPSEwKX0pfSxoYW5kbGU6ZnVuY3Rpb24oYSl7dmFyIGI9YS50YXJnZXQ7aWYodGhpcyE9PWJ8fGEuaXNTaW11bGF0ZWR8fGEuaXNUcmlnZ2VyfHxiLnR5cGUhPT0icmFkaW8iJiZiLnR5cGUhPT0iY2hlY2tib3giKXJldHVybiBhLmhhbmRsZU9iai5oYW5kbGVyLmFwcGx5KHRoaXMsYXJndW1lbnRzKX0sdGVhcmRvd246ZnVuY3Rpb24oKXtmLmV2ZW50LnJlbW92ZSh0aGlzLCIuX2NoYW5nZSIpO3JldHVybiB6LnRlc3QodGhpcy5ub2RlTmFtZSl9fSksZi5zdXBwb3J0LmZvY3VzaW5CdWJibGVzfHxmLmVhY2goe2ZvY3VzOiJmb2N1c2luIixibHVyOiJmb2N1c291dCJ9LGZ1bmN0aW9uKGEsYil7dmFyIGQ9MCxlPWZ1bmN0aW9uKGEpe2YuZXZlbnQuc2ltdWxhdGUoYixhLnRhcmdldCxmLmV2ZW50LmZpeChhKSwhMCl9O2YuZXZlbnQuc3BlY2lhbFtiXT17c2V0dXA6ZnVuY3Rpb24oKXtkKys9PT0wJiZjLmFkZEV2ZW50TGlzdGVuZXIoYSxlLCEwKX0sdGVhcmRvd246ZnVuY3Rpb24oKXstLWQ9PT0wJiZjLnJlbW92ZUV2ZW50TGlzdGVuZXIoYSxlLCEwKX19fSksZi5mbi5leHRlbmQoe29uOmZ1bmN0aW9uKGEsYyxkLGUsZyl7dmFyIGgsaTtpZih0eXBlb2YgYT09Im9iamVjdCIpe3R5cGVvZiBjIT0ic3RyaW5nIiYmKGQ9YyxjPWIpO2ZvcihpIGluIGEpdGhpcy5vbihpLGMsZCxhW2ldLGcpO3JldHVybiB0aGlzfWQ9PW51bGwmJmU9PW51bGw/KGU9YyxkPWM9Yik6ZT09bnVsbCYmKHR5cGVvZiBjPT0ic3RyaW5nIj8oZT1kLGQ9Yik6KGU9ZCxkPWMsYz1iKSk7aWYoZT09PSExKWU9SjtlbHNlIGlmKCFlKXJldHVybiB0aGlzO2c9PT0xJiYoaD1lLGU9ZnVuY3Rpb24oYSl7ZigpLm9mZihhKTtyZXR1cm4gaC5hcHBseSh0aGlzLGFyZ3VtZW50cyl9LGUuZ3VpZD1oLmd1aWR8fChoLmd1aWQ9Zi5ndWlkKyspKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5hZGQodGhpcyxhLGUsZCxjKX0pfSxvbmU6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIHRoaXMub24uY2FsbCh0aGlzLGEsYixjLGQsMSl9LG9mZjpmdW5jdGlvbihhLGMsZCl7aWYoYSYmYS5wcmV2ZW50RGVmYXVsdCYmYS5oYW5kbGVPYmope3ZhciBlPWEuaGFuZGxlT2JqO2YoYS5kZWxlZ2F0ZVRhcmdldCkub2ZmKGUubmFtZXNwYWNlP2UudHlwZSsiLiIrZS5uYW1lc3BhY2U6ZS50eXBlLGUuc2VsZWN0b3IsZS5oYW5kbGVyKTtyZXR1cm4gdGhpc31pZih0eXBlb2YgYT09Im9iamVjdCIpe2Zvcih2YXIgZyBpbiBhKXRoaXMub2ZmKGcsYyxhW2ddKTtyZXR1cm4gdGhpc31pZihjPT09ITF8fHR5cGVvZiBjPT0iZnVuY3Rpb24iKWQ9YyxjPWI7ZD09PSExJiYoZD1KKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zi5ldmVudC5yZW1vdmUodGhpcyxhLGQsYyl9KX0sYmluZDpmdW5jdGlvbihhLGIsYyl7cmV0dXJuIHRoaXMub24oYSxudWxsLGIsYyl9LHVuYmluZDpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLm9mZihhLG51bGwsYil9LGxpdmU6ZnVuY3Rpb24oYSxiLGMpe2YodGhpcy5jb250ZXh0KS5vbihhLHRoaXMuc2VsZWN0b3IsYixjKTtyZXR1cm4gdGhpc30sZGllOmZ1bmN0aW9uKGEsYil7Zih0aGlzLmNvbnRleHQpLm9mZihhLHRoaXMuc2VsZWN0b3J8fCIqKiIsYik7cmV0dXJuIHRoaXN9LGRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLm9uKGIsYSxjLGQpfSx1bmRlbGVnYXRlOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gYXJndW1lbnRzLmxlbmd0aD09MT90aGlzLm9mZihhLCIqKiIpOnRoaXMub2ZmKGIsYSxjKX0sdHJpZ2dlcjpmdW5jdGlvbihhLGIpe3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmLmV2ZW50LnRyaWdnZXIoYSxiLHRoaXMpfSl9LHRyaWdnZXJIYW5kbGVyOmZ1bmN0aW9uKGEsYil7aWYodGhpc1swXSlyZXR1cm4gZi5ldmVudC50cmlnZ2VyKGEsYix0aGlzWzBdLCEwKX0sdG9nZ2xlOmZ1bmN0aW9uKGEpe3ZhciBiPWFyZ3VtZW50cyxjPWEuZ3VpZHx8Zi5ndWlkKyssZD0wLGU9ZnVuY3Rpb24oYyl7dmFyIGU9KGYuX2RhdGEodGhpcywibGFzdFRvZ2dsZSIrYS5ndWlkKXx8MCklZDtmLl9kYXRhKHRoaXMsImxhc3RUb2dnbGUiK2EuZ3VpZCxlKzEpLGMucHJldmVudERlZmF1bHQoKTtyZXR1cm4gYltlXS5hcHBseSh0aGlzLGFyZ3VtZW50cyl8fCExfTtlLmd1aWQ9Yzt3aGlsZShkPGIubGVuZ3RoKWJbZCsrXS5ndWlkPWM7cmV0dXJuIHRoaXMuY2xpY2soZSl9LGhvdmVyOmZ1bmN0aW9uKGEsYil7cmV0dXJuIHRoaXMubW91c2VlbnRlcihhKS5tb3VzZWxlYXZlKGJ8fGEpfX0pLGYuZWFjaCgiYmx1ciBmb2N1cyBmb2N1c2luIGZvY3Vzb3V0IGxvYWQgcmVzaXplIHNjcm9sbCB1bmxvYWQgY2xpY2sgZGJsY2xpY2sgbW91c2Vkb3duIG1vdXNldXAgbW91c2Vtb3ZlIG1vdXNlb3ZlciBtb3VzZW91dCBtb3VzZWVudGVyIG1vdXNlbGVhdmUgY2hhbmdlIHNlbGVjdCBzdWJtaXQga2V5ZG93biBrZXlwcmVzcyBrZXl1cCBlcnJvciBjb250ZXh0bWVudSIuc3BsaXQoIiAiKSxmdW5jdGlvbihhLGIpe2YuZm5bYl09ZnVuY3Rpb24oYSxjKXtjPT1udWxsJiYoYz1hLGE9bnVsbCk7cmV0dXJuIGFyZ3VtZW50cy5sZW5ndGg+MD90aGlzLm9uKGIsbnVsbCxhLGMpOnRoaXMudHJpZ2dlcihiKX0sZi5hdHRyRm4mJihmLmF0dHJGbltiXT0hMCksQy50ZXN0KGIpJiYoZi5ldmVudC5maXhIb29rc1tiXT1mLmV2ZW50LmtleUhvb2tzKSxELnRlc3QoYikmJihmLmV2ZW50LmZpeEhvb2tzW2JdPWYuZXZlbnQubW91c2VIb29rcyl9KSxmdW5jdGlvbigpe2Z1bmN0aW9uIHgoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9aWYoai5ub2RlVHlwZT09PTEpe2d8fChqW2RdPWMsai5zaXpzZXQ9aCk7aWYodHlwZW9mIGIhPSJzdHJpbmciKXtpZihqPT09Yil7az0hMDticmVha319ZWxzZSBpZihtLmZpbHRlcihiLFtqXSkubGVuZ3RoPjApe2s9ajticmVha319aj1qW2FdfWVbaF09a319fWZ1bmN0aW9uIHcoYSxiLGMsZSxmLGcpe2Zvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9ZVtoXTtpZihqKXt2YXIgaz0hMTtqPWpbYV07d2hpbGUoail7aWYoaltkXT09PWMpe2s9ZVtqLnNpenNldF07YnJlYWt9ai5ub2RlVHlwZT09PTEmJiFnJiYoaltkXT1jLGouc2l6c2V0PWgpO2lmKGoubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWIpe2s9ajticmVha31qPWpbYV19ZVtoXT1rfX19dmFyIGE9LygoPzpcKCg/OlwoW14oKV0rXCl8W14oKV0rKStcKXxcWyg/OlxbW15cW1xdXSpcXXxbJyJdW14nIl0qWyciXXxbXlxbXF0nIl0rKStcXXxcXC58W14gPit+LChcW1xcXSspK3xbPit+XSkoXHMqLFxzKik/KCg/Oi58XHJ8XG4pKikvZyxkPSJzaXpjYWNoZSIrKE1hdGgucmFuZG9tKCkrIiIpLnJlcGxhY2UoIi4iLCIiKSxlPTAsZz1PYmplY3QucHJvdG90eXBlLnRvU3RyaW5nLGg9ITEsaT0hMCxqPS9cXC9nLGs9L1xyXG4vZyxsPS9cVy87WzAsMF0uc29ydChmdW5jdGlvbigpe2k9ITE7cmV0dXJuIDB9KTt2YXIgbT1mdW5jdGlvbihiLGQsZSxmKXtlPWV8fFtdLGQ9ZHx8Yzt2YXIgaD1kO2lmKGQubm9kZVR5cGUhPT0xJiZkLm5vZGVUeXBlIT09OSlyZXR1cm5bXTtpZighYnx8dHlwZW9mIGIhPSJzdHJpbmciKXJldHVybiBlO3ZhciBpLGosayxsLG4scSxyLHQsdT0hMCx2PW0uaXNYTUwoZCksdz1bXSx4PWI7ZG97YS5leGVjKCIiKSxpPWEuZXhlYyh4KTtpZihpKXt4PWlbM10sdy5wdXNoKGlbMV0pO2lmKGlbMl0pe2w9aVszXTticmVha319fXdoaWxlKGkpO2lmKHcubGVuZ3RoPjEmJnAuZXhlYyhiKSlpZih3Lmxlbmd0aD09PTImJm8ucmVsYXRpdmVbd1swXV0paj15KHdbMF0rd1sxXSxkLGYpO2Vsc2V7aj1vLnJlbGF0aXZlW3dbMF1dP1tkXTptKHcuc2hpZnQoKSxkKTt3aGlsZSh3Lmxlbmd0aCliPXcuc2hpZnQoKSxvLnJlbGF0aXZlW2JdJiYoYis9dy5zaGlmdCgpKSxqPXkoYixqLGYpfWVsc2V7IWYmJncubGVuZ3RoPjEmJmQubm9kZVR5cGU9PT05JiYhdiYmby5tYXRjaC5JRC50ZXN0KHdbMF0pJiYhby5tYXRjaC5JRC50ZXN0KHdbdy5sZW5ndGgtMV0pJiYobj1tLmZpbmQody5zaGlmdCgpLGQsdiksZD1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KVswXTpuLnNldFswXSk7aWYoZCl7bj1mP3tleHByOncucG9wKCksc2V0OnMoZil9Om0uZmluZCh3LnBvcCgpLHcubGVuZ3RoPT09MSYmKHdbMF09PT0ifiJ8fHdbMF09PT0iKyIpJiZkLnBhcmVudE5vZGU/ZC5wYXJlbnROb2RlOmQsdiksaj1uLmV4cHI/bS5maWx0ZXIobi5leHByLG4uc2V0KTpuLnNldCx3Lmxlbmd0aD4wP2s9cyhqKTp1PSExO3doaWxlKHcubGVuZ3RoKXE9dy5wb3AoKSxyPXEsby5yZWxhdGl2ZVtxXT9yPXcucG9wKCk6cT0iIixyPT1udWxsJiYocj1kKSxvLnJlbGF0aXZlW3FdKGsscix2KX1lbHNlIGs9dz1bXX1rfHwoaz1qKSxrfHxtLmVycm9yKHF8fGIpO2lmKGcuY2FsbChrKT09PSJbb2JqZWN0IEFycmF5XSIpaWYoIXUpZS5wdXNoLmFwcGx5KGUsayk7ZWxzZSBpZihkJiZkLm5vZGVUeXBlPT09MSlmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJihrW3RdPT09ITB8fGtbdF0ubm9kZVR5cGU9PT0xJiZtLmNvbnRhaW5zKGQsa1t0XSkpJiZlLnB1c2goalt0XSk7ZWxzZSBmb3IodD0wO2tbdF0hPW51bGw7dCsrKWtbdF0mJmtbdF0ubm9kZVR5cGU9PT0xJiZlLnB1c2goalt0XSk7ZWxzZSBzKGssZSk7bCYmKG0obCxoLGUsZiksbS51bmlxdWVTb3J0KGUpKTtyZXR1cm4gZX07bS51bmlxdWVTb3J0PWZ1bmN0aW9uKGEpe2lmKHUpe2g9aSxhLnNvcnQodSk7aWYoaClmb3IodmFyIGI9MTtiPGEubGVuZ3RoO2IrKylhW2JdPT09YVtiLTFdJiZhLnNwbGljZShiLS0sMSl9cmV0dXJuIGF9LG0ubWF0Y2hlcz1mdW5jdGlvbihhLGIpe3JldHVybiBtKGEsbnVsbCxudWxsLGIpfSxtLm1hdGNoZXNTZWxlY3Rvcj1mdW5jdGlvbihhLGIpe3JldHVybiBtKGIsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9LG0uZmluZD1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZSxmLGcsaCxpO2lmKCFhKXJldHVybltdO2ZvcihlPTAsZj1vLm9yZGVyLmxlbmd0aDtlPGY7ZSsrKXtoPW8ub3JkZXJbZV07aWYoZz1vLmxlZnRNYXRjaFtoXS5leGVjKGEpKXtpPWdbMV0sZy5zcGxpY2UoMSwxKTtpZihpLnN1YnN0cihpLmxlbmd0aC0xKSE9PSJcXCIpe2dbMV09KGdbMV18fCIiKS5yZXBsYWNlKGosIiIpLGQ9by5maW5kW2hdKGcsYixjKTtpZihkIT1udWxsKXthPWEucmVwbGFjZShvLm1hdGNoW2hdLCIiKTticmVha319fX1kfHwoZD10eXBlb2YgYi5nZXRFbGVtZW50c0J5VGFnTmFtZSE9InVuZGVmaW5lZCI/Yi5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpOltdKTtyZXR1cm57c2V0OmQsZXhwcjphfX0sbS5maWx0ZXI9ZnVuY3Rpb24oYSxjLGQsZSl7dmFyIGYsZyxoLGksaixrLGwsbixwLHE9YSxyPVtdLHM9Yyx0PWMmJmNbMF0mJm0uaXNYTUwoY1swXSk7d2hpbGUoYSYmYy5sZW5ndGgpe2ZvcihoIGluIG8uZmlsdGVyKWlmKChmPW8ubGVmdE1hdGNoW2hdLmV4ZWMoYSkpIT1udWxsJiZmWzJdKXtrPW8uZmlsdGVyW2hdLGw9ZlsxXSxnPSExLGYuc3BsaWNlKDEsMSk7aWYobC5zdWJzdHIobC5sZW5ndGgtMSk9PT0iXFwiKWNvbnRpbnVlO3M9PT1yJiYocj1bXSk7aWYoby5wcmVGaWx0ZXJbaF0pe2Y9by5wcmVGaWx0ZXJbaF0oZixzLGQscixlLHQpO2lmKCFmKWc9aT0hMDtlbHNlIGlmKGY9PT0hMCljb250aW51ZX1pZihmKWZvcihuPTA7KGo9c1tuXSkhPW51bGw7bisrKWomJihpPWsoaixmLG4scykscD1lXmksZCYmaSE9bnVsbD9wP2c9ITA6c1tuXT0hMTpwJiYoci5wdXNoKGopLGc9ITApKTtpZihpIT09Yil7ZHx8KHM9ciksYT1hLnJlcGxhY2Uoby5tYXRjaFtoXSwiIik7aWYoIWcpcmV0dXJuW107YnJlYWt9fWlmKGE9PT1xKWlmKGc9PW51bGwpbS5lcnJvcihhKTtlbHNlIGJyZWFrO3E9YX1yZXR1cm4gc30sbS5lcnJvcj1mdW5jdGlvbihhKXt0aHJvdyBuZXcgRXJyb3IoIlN5bnRheCBlcnJvciwgdW5yZWNvZ25pemVkIGV4cHJlc3Npb246ICIrYSl9O3ZhciBuPW0uZ2V0VGV4dD1mdW5jdGlvbihhKXt2YXIgYixjLGQ9YS5ub2RlVHlwZSxlPSIiO2lmKGQpe2lmKGQ9PT0xfHxkPT09OSl7aWYodHlwZW9mIGEudGV4dENvbnRlbnQ9PSJzdHJpbmciKXJldHVybiBhLnRleHRDb250ZW50O2lmKHR5cGVvZiBhLmlubmVyVGV4dD09InN0cmluZyIpcmV0dXJuIGEuaW5uZXJUZXh0LnJlcGxhY2UoaywiIik7Zm9yKGE9YS5maXJzdENoaWxkO2E7YT1hLm5leHRTaWJsaW5nKWUrPW4oYSl9ZWxzZSBpZihkPT09M3x8ZD09PTQpcmV0dXJuIGEubm9kZVZhbHVlfWVsc2UgZm9yKGI9MDtjPWFbYl07YisrKWMubm9kZVR5cGUhPT04JiYoZSs9bihjKSk7cmV0dXJuIGV9LG89bS5zZWxlY3RvcnM9e29yZGVyOlsiSUQiLCJOQU1FIiwiVEFHIl0sbWF0Y2g6e0lEOi8jKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspLyxDTEFTUzovXC4oKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykvLE5BTUU6L1xbbmFtZT1bJyJdKigoPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikrKVsnIl0qXF0vLEFUVFI6L1xbXHMqKCg/Oltcd1x1MDBjMC1cdUZGRkZcLV18XFwuKSspXHMqKD86KFxTPz0pXHMqKD86KFsnIl0pKC4qPylcM3woIz8oPzpbXHdcdTAwYzAtXHVGRkZGXC1dfFxcLikqKXwpfClccypcXS8sVEFHOi9eKCg/Oltcd1x1MDBjMC1cdUZGRkZcKlwtXXxcXC4pKykvLENISUxEOi86KG9ubHl8bnRofGxhc3R8Zmlyc3QpLWNoaWxkKD86XChccyooZXZlbnxvZGR8KD86WytcLV0/XGQrfCg/OlsrXC1dP1xkKik/blxzKig/OlsrXC1dXHMqXGQrKT8pKVxzKlwpKT8vLFBPUzovOihudGh8ZXF8Z3R8bHR8Zmlyc3R8bGFzdHxldmVufG9kZCkoPzpcKChcZCopXCkpPyg/PVteXC1dfCQpLyxQU0VVRE86LzooKD86W1x3XHUwMGMwLVx1RkZGRlwtXXxcXC4pKykoPzpcKChbJyJdPykoKD86XChbXlwpXStcKXxbXlwoXCldKikrKVwyXCkpPy99LGxlZnRNYXRjaDp7fSxhdHRyTWFwOnsiY2xhc3MiOiJjbGFzc05hbWUiLCJmb3IiOiJodG1sRm9yIn0sYXR0ckhhbmRsZTp7aHJlZjpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiKX0sdHlwZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoInR5cGUiKX19LHJlbGF0aXZlOnsiKyI6ZnVuY3Rpb24oYSxiKXt2YXIgYz10eXBlb2YgYj09InN0cmluZyIsZD1jJiYhbC50ZXN0KGIpLGU9YyYmIWQ7ZCYmKGI9Yi50b0xvd2VyQ2FzZSgpKTtmb3IodmFyIGY9MCxnPWEubGVuZ3RoLGg7ZjxnO2YrKylpZihoPWFbZl0pe3doaWxlKChoPWgucHJldmlvdXNTaWJsaW5nKSYmaC5ub2RlVHlwZSE9PTEpO2FbZl09ZXx8aCYmaC5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09Yj9ofHwhMTpoPT09Yn1lJiZtLmZpbHRlcihiLGEsITApfSwiPiI6ZnVuY3Rpb24oYSxiKXt2YXIgYyxkPXR5cGVvZiBiPT0ic3RyaW5nIixlPTAsZj1hLmxlbmd0aDtpZihkJiYhbC50ZXN0KGIpKXtiPWIudG9Mb3dlckNhc2UoKTtmb3IoO2U8ZjtlKyspe2M9YVtlXTtpZihjKXt2YXIgZz1jLnBhcmVudE5vZGU7YVtlXT1nLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT1iP2c6ITF9fX1lbHNle2Zvcig7ZTxmO2UrKyljPWFbZV0sYyYmKGFbZV09ZD9jLnBhcmVudE5vZGU6Yy5wYXJlbnROb2RlPT09Yik7ZAotJiZtLmZpbHRlcihiLGEsITApfX0sIiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwYXJlbnROb2RlIixiLGYsYSxkLGMpfSwifiI6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGY9ZSsrLGc9eDt0eXBlb2YgYj09InN0cmluZyImJiFsLnRlc3QoYikmJihiPWIudG9Mb3dlckNhc2UoKSxkPWIsZz13KSxnKCJwcmV2aW91c1NpYmxpbmciLGIsZixhLGQsYyl9fSxmaW5kOntJRDpmdW5jdGlvbihhLGIsYyl7aWYodHlwZW9mIGIuZ2V0RWxlbWVudEJ5SWQhPSJ1bmRlZmluZWQiJiYhYyl7dmFyIGQ9Yi5nZXRFbGVtZW50QnlJZChhWzFdKTtyZXR1cm4gZCYmZC5wYXJlbnROb2RlP1tkXTpbXX19LE5BTUU6ZnVuY3Rpb24oYSxiKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5TmFtZSE9InVuZGVmaW5lZCIpe3ZhciBjPVtdLGQ9Yi5nZXRFbGVtZW50c0J5TmFtZShhWzFdKTtmb3IodmFyIGU9MCxmPWQubGVuZ3RoO2U8ZjtlKyspZFtlXS5nZXRBdHRyaWJ1dGUoIm5hbWUiKT09PWFbMV0mJmMucHVzaChkW2VdKTtyZXR1cm4gYy5sZW5ndGg9PT0wP251bGw6Y319LFRBRzpmdW5jdGlvbihhLGIpe2lmKHR5cGVvZiBiLmdldEVsZW1lbnRzQnlUYWdOYW1lIT0idW5kZWZpbmVkIilyZXR1cm4gYi5nZXRFbGVtZW50c0J5VGFnTmFtZShhWzFdKX19LHByZUZpbHRlcjp7Q0xBU1M6ZnVuY3Rpb24oYSxiLGMsZCxlLGYpe2E9IiAiK2FbMV0ucmVwbGFjZShqLCIiKSsiICI7aWYoZilyZXR1cm4gYTtmb3IodmFyIGc9MCxoOyhoPWJbZ10pIT1udWxsO2crKyloJiYoZV4oaC5jbGFzc05hbWUmJigiICIraC5jbGFzc05hbWUrIiAiKS5yZXBsYWNlKC9bXHRcblxyXS9nLCIgIikuaW5kZXhPZihhKT49MCk/Y3x8ZC5wdXNoKGgpOmMmJihiW2ddPSExKSk7cmV0dXJuITF9LElEOmZ1bmN0aW9uKGEpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIil9LFRBRzpmdW5jdGlvbihhLGIpe3JldHVybiBhWzFdLnJlcGxhY2UoaiwiIikudG9Mb3dlckNhc2UoKX0sQ0hJTEQ6ZnVuY3Rpb24oYSl7aWYoYVsxXT09PSJudGgiKXthWzJdfHxtLmVycm9yKGFbMF0pLGFbMl09YVsyXS5yZXBsYWNlKC9eXCt8XHMqL2csIiIpO3ZhciBiPS8oLT8pKFxkKikoPzpuKFsrXC1dP1xkKikpPy8uZXhlYyhhWzJdPT09ImV2ZW4iJiYiMm4ifHxhWzJdPT09Im9kZCImJiIybisxInx8IS9cRC8udGVzdChhWzJdKSYmIjBuKyIrYVsyXXx8YVsyXSk7YVsyXT1iWzFdKyhiWzJdfHwxKS0wLGFbM109YlszXS0wfWVsc2UgYVsyXSYmbS5lcnJvcihhWzBdKTthWzBdPWUrKztyZXR1cm4gYX0sQVRUUjpmdW5jdGlvbihhLGIsYyxkLGUsZil7dmFyIGc9YVsxXT1hWzFdLnJlcGxhY2UoaiwiIik7IWYmJm8uYXR0ck1hcFtnXSYmKGFbMV09by5hdHRyTWFwW2ddKSxhWzRdPShhWzRdfHxhWzVdfHwiIikucmVwbGFjZShqLCIiKSxhWzJdPT09In49IiYmKGFbNF09IiAiK2FbNF0rIiAiKTtyZXR1cm4gYX0sUFNFVURPOmZ1bmN0aW9uKGIsYyxkLGUsZil7aWYoYlsxXT09PSJub3QiKWlmKChhLmV4ZWMoYlszXSl8fCIiKS5sZW5ndGg+MXx8L15cdy8udGVzdChiWzNdKSliWzNdPW0oYlszXSxudWxsLG51bGwsYyk7ZWxzZXt2YXIgZz1tLmZpbHRlcihiWzNdLGMsZCwhMF5mKTtkfHxlLnB1c2guYXBwbHkoZSxnKTtyZXR1cm4hMX1lbHNlIGlmKG8ubWF0Y2guUE9TLnRlc3QoYlswXSl8fG8ubWF0Y2guQ0hJTEQudGVzdChiWzBdKSlyZXR1cm4hMDtyZXR1cm4gYn0sUE9TOmZ1bmN0aW9uKGEpe2EudW5zaGlmdCghMCk7cmV0dXJuIGF9fSxmaWx0ZXJzOntlbmFibGVkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmRpc2FibGVkPT09ITEmJmEudHlwZSE9PSJoaWRkZW4ifSxkaXNhYmxlZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5kaXNhYmxlZD09PSEwfSxjaGVja2VkOmZ1bmN0aW9uKGEpe3JldHVybiBhLmNoZWNrZWQ9PT0hMH0sc2VsZWN0ZWQ6ZnVuY3Rpb24oYSl7YS5wYXJlbnROb2RlJiZhLnBhcmVudE5vZGUuc2VsZWN0ZWRJbmRleDtyZXR1cm4gYS5zZWxlY3RlZD09PSEwfSxwYXJlbnQ6ZnVuY3Rpb24oYSl7cmV0dXJuISFhLmZpcnN0Q2hpbGR9LGVtcHR5OmZ1bmN0aW9uKGEpe3JldHVybiFhLmZpcnN0Q2hpbGR9LGhhczpmdW5jdGlvbihhLGIsYyl7cmV0dXJuISFtKGNbM10sYSkubGVuZ3RofSxoZWFkZXI6ZnVuY3Rpb24oYSl7cmV0dXJuL2hcZC9pLnRlc3QoYS5ub2RlTmFtZSl9LHRleHQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5nZXRBdHRyaWJ1dGUoInR5cGUiKSxjPWEudHlwZTtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInRleHQiPT09YyYmKGI9PT1jfHxiPT09bnVsbCl9LHJhZGlvOmZ1bmN0aW9uKGEpe3JldHVybiBhLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCk9PT0iaW5wdXQiJiYicmFkaW8iPT09YS50eXBlfSxjaGVja2JveDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImNoZWNrYm94Ij09PWEudHlwZX0sZmlsZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImZpbGUiPT09YS50eXBlfSxwYXNzd29yZDpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmInBhc3N3b3JkIj09PWEudHlwZX0sc3VibWl0OmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4oYj09PSJpbnB1dCJ8fGI9PT0iYnV0dG9uIikmJiJzdWJtaXQiPT09YS50eXBlfSxpbWFnZTpmdW5jdGlvbihhKXtyZXR1cm4gYS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpPT09ImlucHV0IiYmImltYWdlIj09PWEudHlwZX0scmVzZXQ6ZnVuY3Rpb24oYSl7dmFyIGI9YS5ub2RlTmFtZS50b0xvd2VyQ2FzZSgpO3JldHVybihiPT09ImlucHV0Inx8Yj09PSJidXR0b24iKSYmInJlc2V0Ij09PWEudHlwZX0sYnV0dG9uOmZ1bmN0aW9uKGEpe3ZhciBiPWEubm9kZU5hbWUudG9Mb3dlckNhc2UoKTtyZXR1cm4gYj09PSJpbnB1dCImJiJidXR0b24iPT09YS50eXBlfHxiPT09ImJ1dHRvbiJ9LGlucHV0OmZ1bmN0aW9uKGEpe3JldHVybi9pbnB1dHxzZWxlY3R8dGV4dGFyZWF8YnV0dG9uL2kudGVzdChhLm5vZGVOYW1lKX0sZm9jdXM6ZnVuY3Rpb24oYSl7cmV0dXJuIGE9PT1hLm93bmVyRG9jdW1lbnQuYWN0aXZlRWxlbWVudH19LHNldEZpbHRlcnM6e2ZpcnN0OmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0wfSxsYXN0OmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiBiPT09ZC5sZW5ndGgtMX0sZXZlbjpmdW5jdGlvbihhLGIpe3JldHVybiBiJTI9PT0wfSxvZGQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYiUyPT09MX0sbHQ6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPGNbM10tMH0sZ3Q6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBiPmNbM10tMH0sbnRoOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gY1szXS0wPT09Yn0sZXE6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBjWzNdLTA9PT1ifX0sZmlsdGVyOntQU0VVRE86ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsxXSxmPW8uZmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpO2lmKGU9PT0iY29udGFpbnMiKXJldHVybihhLnRleHRDb250ZW50fHxhLmlubmVyVGV4dHx8bihbYV0pfHwiIikuaW5kZXhPZihiWzNdKT49MDtpZihlPT09Im5vdCIpe3ZhciBnPWJbM107Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKWlmKGdbaF09PT1hKXJldHVybiExO3JldHVybiEwfW0uZXJyb3IoZSl9LENISUxEOmZ1bmN0aW9uKGEsYil7dmFyIGMsZSxmLGcsaCxpLGosaz1iWzFdLGw9YTtzd2l0Y2goayl7Y2FzZSJvbmx5IjpjYXNlImZpcnN0Ijp3aGlsZShsPWwucHJldmlvdXNTaWJsaW5nKWlmKGwubm9kZVR5cGU9PT0xKXJldHVybiExO2lmKGs9PT0iZmlyc3QiKXJldHVybiEwO2w9YTtjYXNlImxhc3QiOndoaWxlKGw9bC5uZXh0U2libGluZylpZihsLm5vZGVUeXBlPT09MSlyZXR1cm4hMTtyZXR1cm4hMDtjYXNlIm50aCI6Yz1iWzJdLGU9YlszXTtpZihjPT09MSYmZT09PTApcmV0dXJuITA7Zj1iWzBdLGc9YS5wYXJlbnROb2RlO2lmKGcmJihnW2RdIT09Znx8IWEubm9kZUluZGV4KSl7aT0wO2ZvcihsPWcuZmlyc3RDaGlsZDtsO2w9bC5uZXh0U2libGluZylsLm5vZGVUeXBlPT09MSYmKGwubm9kZUluZGV4PSsraSk7Z1tkXT1mfWo9YS5ub2RlSW5kZXgtZTtyZXR1cm4gYz09PTA/aj09PTA6aiVjPT09MCYmai9jPj0wfX0sSUQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYS5ub2RlVHlwZT09PTEmJmEuZ2V0QXR0cmlidXRlKCJpZCIpPT09Yn0sVEFHOmZ1bmN0aW9uKGEsYil7cmV0dXJuIGI9PT0iKiImJmEubm9kZVR5cGU9PT0xfHwhIWEubm9kZU5hbWUmJmEubm9kZU5hbWUudG9Mb3dlckNhc2UoKT09PWJ9LENMQVNTOmZ1bmN0aW9uKGEsYil7cmV0dXJuKCIgIisoYS5jbGFzc05hbWV8fGEuZ2V0QXR0cmlidXRlKCJjbGFzcyIpKSsiICIpLmluZGV4T2YoYik+LTF9LEFUVFI6ZnVuY3Rpb24oYSxiKXt2YXIgYz1iWzFdLGQ9bS5hdHRyP20uYXR0cihhLGMpOm8uYXR0ckhhbmRsZVtjXT9vLmF0dHJIYW5kbGVbY10oYSk6YVtjXSE9bnVsbD9hW2NdOmEuZ2V0QXR0cmlidXRlKGMpLGU9ZCsiIixmPWJbMl0sZz1iWzRdO3JldHVybiBkPT1udWxsP2Y9PT0iIT0iOiFmJiZtLmF0dHI/ZCE9bnVsbDpmPT09Ij0iP2U9PT1nOmY9PT0iKj0iP2UuaW5kZXhPZihnKT49MDpmPT09In49Ij8oIiAiK2UrIiAiKS5pbmRleE9mKGcpPj0wOmc/Zj09PSIhPSI/ZSE9PWc6Zj09PSJePSI/ZS5pbmRleE9mKGcpPT09MDpmPT09IiQ9Ij9lLnN1YnN0cihlLmxlbmd0aC1nLmxlbmd0aCk9PT1nOmY9PT0ifD0iP2U9PT1nfHxlLnN1YnN0cigwLGcubGVuZ3RoKzEpPT09ZysiLSI6ITE6ZSYmZCE9PSExfSxQT1M6ZnVuY3Rpb24oYSxiLGMsZCl7dmFyIGU9YlsyXSxmPW8uc2V0RmlsdGVyc1tlXTtpZihmKXJldHVybiBmKGEsYyxiLGQpfX19LHA9by5tYXRjaC5QT1MscT1mdW5jdGlvbihhLGIpe3JldHVybiJcXCIrKGItMCsxKX07Zm9yKHZhciByIGluIG8ubWF0Y2gpby5tYXRjaFtyXT1uZXcgUmVnRXhwKG8ubWF0Y2hbcl0uc291cmNlKy8oPyFbXlxbXSpcXSkoPyFbXlwoXSpcKSkvLnNvdXJjZSksby5sZWZ0TWF0Y2hbcl09bmV3IFJlZ0V4cCgvKF4oPzoufFxyfFxuKSo/KS8uc291cmNlK28ubWF0Y2hbcl0uc291cmNlLnJlcGxhY2UoL1xcKFxkKykvZyxxKSk7dmFyIHM9ZnVuY3Rpb24oYSxiKXthPUFycmF5LnByb3RvdHlwZS5zbGljZS5jYWxsKGEsMCk7aWYoYil7Yi5wdXNoLmFwcGx5KGIsYSk7cmV0dXJuIGJ9cmV0dXJuIGF9O3RyeXtBcnJheS5wcm90b3R5cGUuc2xpY2UuY2FsbChjLmRvY3VtZW50RWxlbWVudC5jaGlsZE5vZGVzLDApWzBdLm5vZGVUeXBlfWNhdGNoKHQpe3M9ZnVuY3Rpb24oYSxiKXt2YXIgYz0wLGQ9Ynx8W107aWYoZy5jYWxsKGEpPT09IltvYmplY3QgQXJyYXldIilBcnJheS5wcm90b3R5cGUucHVzaC5hcHBseShkLGEpO2Vsc2UgaWYodHlwZW9mIGEubGVuZ3RoPT0ibnVtYmVyIilmb3IodmFyIGU9YS5sZW5ndGg7YzxlO2MrKylkLnB1c2goYVtjXSk7ZWxzZSBmb3IoO2FbY107YysrKWQucHVzaChhW2NdKTtyZXR1cm4gZH19dmFyIHUsdjtjLmRvY3VtZW50RWxlbWVudC5jb21wYXJlRG9jdW1lbnRQb3NpdGlvbj91PWZ1bmN0aW9uKGEsYil7aWYoYT09PWIpe2g9ITA7cmV0dXJuIDB9aWYoIWEuY29tcGFyZURvY3VtZW50UG9zaXRpb258fCFiLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKXJldHVybiBhLmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uPy0xOjE7cmV0dXJuIGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmND8tMToxfToodT1mdW5jdGlvbihhLGIpe2lmKGE9PT1iKXtoPSEwO3JldHVybiAwfWlmKGEuc291cmNlSW5kZXgmJmIuc291cmNlSW5kZXgpcmV0dXJuIGEuc291cmNlSW5kZXgtYi5zb3VyY2VJbmRleDt2YXIgYyxkLGU9W10sZj1bXSxnPWEucGFyZW50Tm9kZSxpPWIucGFyZW50Tm9kZSxqPWc7aWYoZz09PWkpcmV0dXJuIHYoYSxiKTtpZighZylyZXR1cm4tMTtpZighaSlyZXR1cm4gMTt3aGlsZShqKWUudW5zaGlmdChqKSxqPWoucGFyZW50Tm9kZTtqPWk7d2hpbGUoailmLnVuc2hpZnQoaiksaj1qLnBhcmVudE5vZGU7Yz1lLmxlbmd0aCxkPWYubGVuZ3RoO2Zvcih2YXIgaz0wO2s8YyYmazxkO2srKylpZihlW2tdIT09ZltrXSlyZXR1cm4gdihlW2tdLGZba10pO3JldHVybiBrPT09Yz92KGEsZltrXSwtMSk6dihlW2tdLGIsMSl9LHY9ZnVuY3Rpb24oYSxiLGMpe2lmKGE9PT1iKXJldHVybiBjO3ZhciBkPWEubmV4dFNpYmxpbmc7d2hpbGUoZCl7aWYoZD09PWIpcmV0dXJuLTE7ZD1kLm5leHRTaWJsaW5nfXJldHVybiAxfSksZnVuY3Rpb24oKXt2YXIgYT1jLmNyZWF0ZUVsZW1lbnQoImRpdiIpLGQ9InNjcmlwdCIrKG5ldyBEYXRlKS5nZXRUaW1lKCksZT1jLmRvY3VtZW50RWxlbWVudDthLmlubmVySFRNTD0iPGEgbmFtZT0nIitkKyInLz4iLGUuaW5zZXJ0QmVmb3JlKGEsZS5maXJzdENoaWxkKSxjLmdldEVsZW1lbnRCeUlkKGQpJiYoby5maW5kLklEPWZ1bmN0aW9uKGEsYyxkKXtpZih0eXBlb2YgYy5nZXRFbGVtZW50QnlJZCE9InVuZGVmaW5lZCImJiFkKXt2YXIgZT1jLmdldEVsZW1lbnRCeUlkKGFbMV0pO3JldHVybiBlP2UuaWQ9PT1hWzFdfHx0eXBlb2YgZS5nZXRBdHRyaWJ1dGVOb2RlIT0idW5kZWZpbmVkIiYmZS5nZXRBdHRyaWJ1dGVOb2RlKCJpZCIpLm5vZGVWYWx1ZT09PWFbMV0/W2VdOmI6W119fSxvLmZpbHRlci5JRD1mdW5jdGlvbihhLGIpe3ZhciBjPXR5cGVvZiBhLmdldEF0dHJpYnV0ZU5vZGUhPSJ1bmRlZmluZWQiJiZhLmdldEF0dHJpYnV0ZU5vZGUoImlkIik7cmV0dXJuIGEubm9kZVR5cGU9PT0xJiZjJiZjLm5vZGVWYWx1ZT09PWJ9KSxlLnJlbW92ZUNoaWxkKGEpLGU9YT1udWxsfSgpLGZ1bmN0aW9uKCl7dmFyIGE9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKTthLmFwcGVuZENoaWxkKGMuY3JlYXRlQ29tbWVudCgiIikpLGEuZ2V0RWxlbWVudHNCeVRhZ05hbWUoIioiKS5sZW5ndGg+MCYmKG8uZmluZC5UQUc9ZnVuY3Rpb24oYSxiKXt2YXIgYz1iLmdldEVsZW1lbnRzQnlUYWdOYW1lKGFbMV0pO2lmKGFbMV09PT0iKiIpe3ZhciBkPVtdO2Zvcih2YXIgZT0wO2NbZV07ZSsrKWNbZV0ubm9kZVR5cGU9PT0xJiZkLnB1c2goY1tlXSk7Yz1kfXJldHVybiBjfSksYS5pbm5lckhUTUw9IjxhIGhyZWY9JyMnPjwvYT4iLGEuZmlyc3RDaGlsZCYmdHlwZW9mIGEuZmlyc3RDaGlsZC5nZXRBdHRyaWJ1dGUhPSJ1bmRlZmluZWQiJiZhLmZpcnN0Q2hpbGQuZ2V0QXR0cmlidXRlKCJocmVmIikhPT0iIyImJihvLmF0dHJIYW5kbGUuaHJlZj1mdW5jdGlvbihhKXtyZXR1cm4gYS5nZXRBdHRyaWJ1dGUoImhyZWYiLDIpfSksYT1udWxsfSgpLGMucXVlcnlTZWxlY3RvckFsbCYmZnVuY3Rpb24oKXt2YXIgYT1tLGI9Yy5jcmVhdGVFbGVtZW50KCJkaXYiKSxkPSJfX3NpenpsZV9fIjtiLmlubmVySFRNTD0iPHAgY2xhc3M9J1RFU1QnPjwvcD4iO2lmKCFiLnF1ZXJ5U2VsZWN0b3JBbGx8fGIucXVlcnlTZWxlY3RvckFsbCgiLlRFU1QiKS5sZW5ndGghPT0wKXttPWZ1bmN0aW9uKGIsZSxmLGcpe2U9ZXx8YztpZighZyYmIW0uaXNYTUwoZSkpe3ZhciBoPS9eKFx3KyQpfF5cLihbXHdcLV0rJCl8XiMoW1x3XC1dKyQpLy5leGVjKGIpO2lmKGgmJihlLm5vZGVUeXBlPT09MXx8ZS5ub2RlVHlwZT09PTkpKXtpZihoWzFdKXJldHVybiBzKGUuZ2V0RWxlbWVudHNCeVRhZ05hbWUoYiksZik7aWYoaFsyXSYmby5maW5kLkNMQVNTJiZlLmdldEVsZW1lbnRzQnlDbGFzc05hbWUpcmV0dXJuIHMoZS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKGhbMl0pLGYpfWlmKGUubm9kZVR5cGU9PT05KXtpZihiPT09ImJvZHkiJiZlLmJvZHkpcmV0dXJuIHMoW2UuYm9keV0sZik7aWYoaCYmaFszXSl7dmFyIGk9ZS5nZXRFbGVtZW50QnlJZChoWzNdKTtpZighaXx8IWkucGFyZW50Tm9kZSlyZXR1cm4gcyhbXSxmKTtpZihpLmlkPT09aFszXSlyZXR1cm4gcyhbaV0sZil9dHJ5e3JldHVybiBzKGUucXVlcnlTZWxlY3RvckFsbChiKSxmKX1jYXRjaChqKXt9fWVsc2UgaWYoZS5ub2RlVHlwZT09PTEmJmUubm9kZU5hbWUudG9Mb3dlckNhc2UoKSE9PSJvYmplY3QiKXt2YXIgaz1lLGw9ZS5nZXRBdHRyaWJ1dGUoImlkIiksbj1sfHxkLHA9ZS5wYXJlbnROb2RlLHE9L15ccypbK35dLy50ZXN0KGIpO2w/bj1uLnJlcGxhY2UoLycvZywiXFwkJiIpOmUuc2V0QXR0cmlidXRlKCJpZCIsbikscSYmcCYmKGU9ZS5wYXJlbnROb2RlKTt0cnl7aWYoIXF8fHApcmV0dXJuIHMoZS5xdWVyeVNlbGVjdG9yQWxsKCJbaWQ9JyIrbisiJ10gIitiKSxmKX1jYXRjaChyKXt9ZmluYWxseXtsfHxrLnJlbW92ZUF0dHJpYnV0ZSgiaWQiKX19fXJldHVybiBhKGIsZSxmLGcpfTtmb3IodmFyIGUgaW4gYSltW2VdPWFbZV07Yj1udWxsfX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuZG9jdW1lbnRFbGVtZW50LGI9YS5tYXRjaGVzU2VsZWN0b3J8fGEubW96TWF0Y2hlc1NlbGVjdG9yfHxhLndlYmtpdE1hdGNoZXNTZWxlY3Rvcnx8YS5tc01hdGNoZXNTZWxlY3RvcjtpZihiKXt2YXIgZD0hYi5jYWxsKGMuY3JlYXRlRWxlbWVudCgiZGl2IiksImRpdiIpLGU9ITE7dHJ5e2IuY2FsbChjLmRvY3VtZW50RWxlbWVudCwiW3Rlc3QhPScnXTpzaXp6bGUiKX1jYXRjaChmKXtlPSEwfW0ubWF0Y2hlc1NlbGVjdG9yPWZ1bmN0aW9uKGEsYyl7Yz1jLnJlcGxhY2UoL1w9XHMqKFteJyJcXV0qKVxzKlxdL2csIj0nJDEnXSIpO2lmKCFtLmlzWE1MKGEpKXRyeXtpZihlfHwhby5tYXRjaC5QU0VVRE8udGVzdChjKSYmIS8hPS8udGVzdChjKSl7dmFyIGY9Yi5jYWxsKGEsYyk7aWYoZnx8IWR8fGEuZG9jdW1lbnQmJmEuZG9jdW1lbnQubm9kZVR5cGUhPT0xMSlyZXR1cm4gZn19Y2F0Y2goZyl7fXJldHVybiBtKGMsbnVsbCxudWxsLFthXSkubGVuZ3RoPjB9fX0oKSxmdW5jdGlvbigpe3ZhciBhPWMuY3JlYXRlRWxlbWVudCgiZGl2Iik7YS5pbm5lckhUTUw9IjxkaXYgY2xhc3M9J3Rlc3QgZSc+PC9kaXY+PGRpdiBjbGFzcz0ndGVzdCc+PC9kaXY+IjtpZighIWEuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZSYmYS5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lKCJlIikubGVuZ3RoIT09MCl7YS5sYXN0Q2hpbGQuY2xhc3NOYW1lPSJlIjtpZihhLmdldEVsZW1lbnRzQnlDbGFzc05hbWUoImUiKS5sZW5ndGg9PT0xKXJldHVybjtvLm9yZGVyLnNwbGljZSgxLDAsIkNMQVNTIiksby5maW5kLkNMQVNTPWZ1bmN0aW9uKGEsYixjKXtpZih0eXBlb2YgYi5nZXRFbGVtZW50c0J5Q2xhc3NOYW1lIT0idW5kZWZpbmVkIiYmIWMpcmV0dXJuIGIuZ2V0RWxlbWVudHNCeUNsYXNzTmFtZShhWzFdKX0sYT1udWxsfX0oKSxjLmRvY3VtZW50RWxlbWVudC5jb250YWlucz9tLmNvbnRhaW5zPWZ1bmN0aW9uKGEsYil7cmV0dXJuIGEhPT1iJiYoYS5jb250YWlucz9hLmNvbnRhaW5zKGIpOiEwKX06Yy5kb2N1bWVudEVsZW1lbnQuY29tcGFyZURvY3VtZW50UG9zaXRpb24/bS5jb250YWlucz1mdW5jdGlvbihhLGIpe3JldHVybiEhKGEuY29tcGFyZURvY3VtZW50UG9zaXRpb24oYikmMTYpfTptLmNvbnRhaW5zPWZ1bmN0aW9uKCl7cmV0dXJuITF9LG0uaXNYTUw9ZnVuY3Rpb24oYSl7dmFyIGI9KGE/YS5vd25lckRvY3VtZW50fHxhOjApLmRvY3VtZW50RWxlbWVudDtyZXR1cm4gYj9iLm5vZGVOYW1lIT09IkhUTUwiOiExfTt2YXIgeT1mdW5jdGlvbihhLGIsYyl7dmFyIGQsZT1bXSxmPSIiLGc9Yi5ub2RlVHlwZT9bYl06Yjt3aGlsZShkPW8ubWF0Y2guUFNFVURPLmV4ZWMoYSkpZis9ZFswXSxhPWEucmVwbGFjZShvLm1hdGNoLlBTRVVETywiIik7YT1vLnJlbGF0aXZlW2FdP2ErIioiOmE7Zm9yKHZhciBoPTAsaT1nLmxlbmd0aDtoPGk7aCsrKW0oYSxnW2hdLGUsYyk7cmV0dXJuIG0uZmlsdGVyKGYsZSl9O20uYXR0cj1mLmF0dHIsbS5zZWxlY3RvcnMuYXR0ck1hcD17fSxmLmZpbmQ9bSxmLmV4cHI9bS5zZWxlY3RvcnMsZi5leHByWyI6Il09Zi5leHByLmZpbHRlcnMsZi51bmlxdWU9bS51bmlxdWVTb3J0LGYudGV4dD1tLmdldFRleHQsZi5pc1hNTERvYz1tLmlzWE1MLGYuY29udGFpbnM9bS5jb250YWluc30oKTt2YXIgTD0vVW50aWwkLyxNPS9eKD86cGFyZW50c3xwcmV2VW50aWx8cHJldkFsbCkvLE49LywvLE89L14uW146I1xbXC4sXSokLyxQPUFycmF5LnByb3RvdHlwZS5zbGljZSxRPWYuZXhwci5tYXRjaC5QT1MsUj17Y2hpbGRyZW46ITAsY29udGVudHM6ITAsbmV4dDohMCxwcmV2OiEwfTtmLmZuLmV4dGVuZCh7ZmluZDpmdW5jdGlvbihhKXt2YXIgYj10aGlzLGMsZDtpZih0eXBlb2YgYSE9InN0cmluZyIpcmV0dXJuIGYoYSkuZmlsdGVyKGZ1bmN0aW9uKCl7Zm9yKGM9MCxkPWIubGVuZ3RoO2M8ZDtjKyspaWYoZi5jb250YWlucyhiW2NdLHRoaXMpKXJldHVybiEwfSk7dmFyIGU9dGhpcy5wdXNoU3RhY2soIiIsImZpbmQiLGEpLGcsaCxpO2ZvcihjPTAsZD10aGlzLmxlbmd0aDtjPGQ7YysrKXtnPWUubGVuZ3RoLGYuZmluZChhLHRoaXNbY10sZSk7aWYoYz4wKWZvcihoPWc7aDxlLmxlbmd0aDtoKyspZm9yKGk9MDtpPGc7aSsrKWlmKGVbaV09PT1lW2hdKXtlLnNwbGljZShoLS0sMSk7YnJlYWt9fXJldHVybiBlfSxoYXM6ZnVuY3Rpb24oYSl7dmFyIGI9ZihhKTtyZXR1cm4gdGhpcy5maWx0ZXIoZnVuY3Rpb24oKXtmb3IodmFyIGE9MCxjPWIubGVuZ3RoO2E8YzthKyspaWYoZi5jb250YWlucyh0aGlzLGJbYV0pKXJldHVybiEwfSl9LG5vdDpmdW5jdGlvbihhKXtyZXR1cm4gdGhpcy5wdXNoU3RhY2soVCh0aGlzLGEsITEpLCJub3QiLGEpfSxmaWx0ZXI6ZnVuY3Rpb24oYSl7cmV0dXJuIHRoaXMucHVzaFN0YWNrKFQodGhpcyxhLCEwKSwiZmlsdGVyIixhKX0saXM6ZnVuY3Rpb24oYSl7cmV0dXJuISFhJiYodHlwZW9mIGE9PSJzdHJpbmciP1EudGVzdChhKT9mKGEsdGhpcy5jb250ZXh0KS5pbmRleCh0aGlzWzBdKT49MDpmLmZpbHRlcihhLHRoaXMpLmxlbmd0aD4wOnRoaXMuZmlsdGVyKGEpLmxlbmd0aD4wKX0sY2xvc2VzdDpmdW5jdGlvbihhLGIpe3ZhciBjPVtdLGQsZSxnPXRoaXNbMF07aWYoZi5pc0FycmF5KGEpKXt2YXIgaD0xO3doaWxlKGcmJmcub3duZXJEb2N1bWVudCYmZyE9PWIpe2ZvcihkPTA7ZDxhLmxlbmd0aDtkKyspZihnKS5pcyhhW2RdKSYmYy5wdXNoKHtzZWxlY3RvcjphW2RdLGVsZW06ZyxsZXZlbDpofSk7Zz1nLnBhcmVudE5vZGUsaCsrfXJldHVybiBjfXZhciBpPVEudGVzdChhKXx8dHlwZW9mIGEhPSJzdHJpbmciP2YoYSxifHx0aGlzLmNvbnRleHQpOjA7Zm9yKGQ9MCxlPXRoaXMubGVuZ3RoO2Q8ZTtkKyspe2c9dGhpc1tkXTt3aGlsZShnKXtpZihpP2kuaW5kZXgoZyk+LTE6Zi5maW5kLm1hdGNoZXNTZWxlY3RvcihnLGEpKXtjLnB1c2goZyk7YnJlYWt9Zz1nLnBhcmVudE5vZGU7aWYoIWd8fCFnLm93bmVyRG9jdW1lbnR8fGc9PT1ifHxnLm5vZGVUeXBlPT09MTEpYnJlYWt9fWM9Yy5sZW5ndGg+MT9mLnVuaXF1ZShjKTpjO3JldHVybiB0aGlzLnB1c2hTdGFjayhjLCJjbG9zZXN0IixhKX0saW5kZXg6ZnVuY3Rpb24oYSl7aWYoIWEpcmV0dXJuIHRoaXNbMF0mJnRoaXNbMF0ucGFyZW50Tm9kZT90aGlzLnByZXZBbGwoKS5sZW5ndGg6LTE7aWYodHlwZW9mIGE9PSJzdHJpbmciKXJldHVybiBmLmluQXJyYXkodGhpc1swXSxmKGEpKTtyZXR1cm4gZi5pbkFycmF5KGEuanF1ZXJ5P2FbMF06YSx0aGlzKX0sYWRkOmZ1bmN0aW9uKGEsYil7dmFyIGM9dHlwZW9mIGE9PSJzdHJpbmciP2YoYSxiKTpmLm1ha2VBcnJheShhJiZhLm5vZGVUeXBlP1thXTphKSxkPWYubWVyZ2UodGhpcy5nZXQoKSxjKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soUyhjWzBdKXx8UyhkWzBdKT9kOmYudW5pcXVlKGQpKX0sYW5kU2VsZjpmdW5jdGlvbigpe3JldHVybiB0aGlzLmFkZCh0aGlzLnByZXZPYmplY3QpfX0pLGYuZWFjaCh7cGFyZW50OmZ1bmN0aW9uKGEpe3ZhciBiPWEucGFyZW50Tm9kZTtyZXR1cm4gYiYmYi5ub2RlVHlwZSE9PTExP2I6bnVsbH0scGFyZW50czpmdW5jdGlvbihhKXtyZXR1cm4gZi5kaXIoYSwicGFyZW50Tm9kZSIpfSxwYXJlbnRzVW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwYXJlbnROb2RlIixjKX0sbmV4dDpmdW5jdGlvbihhKXtyZXR1cm4gZi5udGgoYSwyLCJuZXh0U2libGluZyIpfSxwcmV2OmZ1bmN0aW9uKGEpe3JldHVybiBmLm50aChhLDIsInByZXZpb3VzU2libGluZyIpfSxuZXh0QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJuZXh0U2libGluZyIpfSxwcmV2QWxsOmZ1bmN0aW9uKGEpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciKX0sbmV4dFVudGlsOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5kaXIoYSwibmV4dFNpYmxpbmciLGMpfSxwcmV2VW50aWw6ZnVuY3Rpb24oYSxiLGMpe3JldHVybiBmLmRpcihhLCJwcmV2aW91c1NpYmxpbmciLGMpfSxzaWJsaW5nczpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEucGFyZW50Tm9kZS5maXJzdENoaWxkLGEpfSxjaGlsZHJlbjpmdW5jdGlvbihhKXtyZXR1cm4gZi5zaWJsaW5nKGEuZmlyc3RDaGlsZCl9LGNvbnRlbnRzOmZ1bmN0aW9uKGEpe3JldHVybiBmLm5vZGVOYW1lKGEsImlmcmFtZSIpP2EuY29udGVudERvY3VtZW50fHxhLmNvbnRlbnRXaW5kb3cuZG9jdW1lbnQ6Zi5tYWtlQXJyYXkoYS5jaGlsZE5vZGVzKX19LGZ1bmN0aW9uKGEsYil7Zi5mblthXT1mdW5jdGlvbihjLGQpe3ZhciBlPWYubWFwKHRoaXMsYixjKTtMLnRlc3QoYSl8fChkPWMpLGQmJnR5cGVvZiBkPT0ic3RyaW5nIiYmKGU9Zi5maWx0ZXIoZCxlKSksZT10aGlzLmxlbmd0aD4xJiYhUlthXT9mLnVuaXF1ZShlKTplLCh0aGlzLmxlbmd0aD4xfHxOLnRlc3QoZCkpJiZNLnRlc3QoYSkmJihlPWUucmV2ZXJzZSgpKTtyZXR1cm4gdGhpcy5wdXNoU3RhY2soZSxhLFAuY2FsbChhcmd1bWVudHMpLmpvaW4oIiwiKSl9fSksZi5leHRlbmQoe2ZpbHRlcjpmdW5jdGlvbihhLGIsYyl7YyYmKGE9Ijpub3QoIithKyIpIik7cmV0dXJuIGIubGVuZ3RoPT09MT9mLmZpbmQubWF0Y2hlc1NlbGVjdG9yKGJbMF0sYSk/W2JbMF1dOltdOmYuZmluZC5tYXRjaGVzKGEsYil9LGRpcjpmdW5jdGlvbihhLGMsZCl7dmFyIGU9W10sZz1hW2NdO3doaWxlKGcmJmcubm9kZVR5cGUhPT05JiYoZD09PWJ8fGcubm9kZVR5cGUhPT0xfHwhZihnKS5pcyhkKSkpZy5ub2RlVHlwZT09PTEmJmUucHVzaChnKSxnPWdbY107cmV0dXJuIGV9LG50aDpmdW5jdGlvbihhLGIsYyxkKXtiPWJ8fDE7dmFyIGU9MDtmb3IoO2E7YT1hW2NdKWlmKGEubm9kZVR5cGU9PT0xJiYrK2U9PT1iKWJyZWFrO3JldHVybiBhfSxzaWJsaW5nOmZ1bmN0aW9uKGEsYil7dmFyIGM9W107Zm9yKDthO2E9YS5uZXh0U2libGluZylhLm5vZGVUeXBlPT09MSYmYSE9PWImJmMucHVzaChhKTtyZXR1cm4gY319KTt2YXIgVj0iYWJicnxhcnRpY2xlfGFzaWRlfGF1ZGlvfGNhbnZhc3xkYXRhbGlzdHxkZXRhaWxzfGZpZ2NhcHRpb258ZmlndXJlfGZvb3RlcnxoZWFkZXJ8aGdyb3VwfG1hcmt8bWV0ZXJ8bmF2fG91dHB1dHxwcm9ncmVzc3xzZWN0aW9ufHN1bW1hcnl8dGltZXx2aWRlbyIsVz0vIGpRdWVyeVxkKz0iKD86XGQrfG51bGwpIi9nLFg9L15ccysvLFk9LzwoPyFhcmVhfGJyfGNvbHxlbWJlZHxocnxpbWd8aW5wdXR8bGlua3xtZXRhfHBhcmFtKSgoW1x3Ol0rKVtePl0qKVwvPi9pZyxaPS88KFtcdzpdKykvLCQ9Lzx0Ym9keS9pLF89Lzx8JiM/XHcrOy8sYmE9LzwoPzpzY3JpcHR8c3R5bGUpL2ksYmI9LzwoPzpzY3JpcHR8b2JqZWN0fGVtYmVkfG9wdGlvbnxzdHlsZSkvaSxiYz1uZXcgUmVnRXhwKCI8KD86IitWKyIpIiwiaSIpLGJkPS9jaGVja2VkXHMqKD86W149XXw9XHMqLmNoZWNrZWQuKS9pLGJlPS9cLyhqYXZhfGVjbWEpc2NyaXB0L2ksYmY9L15ccyo8ISg/OlxbQ0RBVEFcW3xcLVwtKS8sYmc9e29wdGlvbjpbMSwiPHNlbGVjdCBtdWx0aXBsZT0nbXVsdGlwbGUnPiIsIjwvc2VsZWN0PiJdLGxlZ2VuZDpbMSwiPGZpZWxkc2V0PiIsIjwvZmllbGRzZXQ+Il0sdGhlYWQ6WzEsIjx0YWJsZT4iLCI8L3RhYmxlPiJdLHRyOlsyLCI8dGFibGU+PHRib2R5PiIsIjwvdGJvZHk+PC90YWJsZT4iXSx0ZDpbMywiPHRhYmxlPjx0Ym9keT48dHI+IiwiPC90cj48L3Rib2R5PjwvdGFibGU+Il0sY29sOlsyLCI8dGFibGU+PHRib2R5PjwvdGJvZHk+PGNvbGdyb3VwPiIsIjwvY29sZ3JvdXA+PC90YWJsZT4iXSxhcmVhOlsxLCI8bWFwPiIsIjwvbWFwPiJdLF9kZWZhdWx0OlswLCIiLCIiXX0sYmg9VShjKTtiZy5vcHRncm91cD1iZy5vcHRpb24sYmcudGJvZHk9YmcudGZvb3Q9YmcuY29sZ3JvdXA9YmcuY2FwdGlvbj1iZy50aGVhZCxiZy50aD1iZy50ZCxmLnN1cHBvcnQuaHRtbFNlcmlhbGl6ZXx8KGJnLl9kZWZhdWx0PVsxLCJkaXY8ZGl2PiIsIjwvZGl2PiJdKSxmLmZuLmV4dGVuZCh7dGV4dDpmdW5jdGlvbihhKXtpZihmLmlzRnVuY3Rpb24oYSkpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MudGV4dChhLmNhbGwodGhpcyxiLGMudGV4dCgpKSl9KTtpZih0eXBlb2YgYSE9Im9iamVjdCImJmEhPT1iKXJldHVybiB0aGlzLmVtcHR5KCkuYXBwZW5kKCh0aGlzWzBdJiZ0aGlzWzBdLm93bmVyRG9jdW1lbnR8fGMpLmNyZWF0ZVRleHROb2RlKGEpKTtyZXR1cm4gZi50ZXh0KHRoaXMpfSx3cmFwQWxsOmZ1bmN0aW9uKGEpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2YodGhpcykud3JhcEFsbChhLmNhbGwodGhpcyxiKSl9KTtpZih0aGlzWzBdKXt2YXIgYj1mKGEsdGhpc1swXS5vd25lckRvY3VtZW50KS5lcSgwKS5jbG9uZSghMCk7dGhpc1swXS5wYXJlbnROb2RlJiZiLmluc2VydEJlZm9yZSh0aGlzWzBdKSxiLm1hcChmdW5jdGlvbigpe3ZhciBhPXRoaXM7d2hpbGUoYS5maXJzdENoaWxkJiZhLmZpcnN0Q2hpbGQubm9kZVR5cGU9PT0xKWE9YS5maXJzdENoaWxkO3JldHVybiBhfSkuYXBwZW5kKHRoaXMpfXJldHVybiB0aGlzfSx3cmFwSW5uZXI6ZnVuY3Rpb24oYSl7aWYoZi5pc0Z1bmN0aW9uKGEpKXJldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYil7Zih0aGlzKS53cmFwSW5uZXIoYS5jYWxsKHRoaXMsYikpfSk7cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe3ZhciBiPWYodGhpcyksYz1iLmNvbnRlbnRzKCk7Yy5sZW5ndGg/Yy53cmFwQWxsKGEpOmIuYXBwZW5kKGEpfSl9LHdyYXA6ZnVuY3Rpb24oYSl7dmFyIGI9Zi5pc0Z1bmN0aW9uKGEpO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oYyl7Zih0aGlzKS53cmFwQWxsKGI/YS5jYWxsKHRoaXMsYyk6YSl9KX0sdW53cmFwOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMucGFyZW50KCkuZWFjaChmdW5jdGlvbigpe2Yubm9kZU5hbWUodGhpcywiYm9keSIpfHxmKHRoaXMpLnJlcGxhY2VXaXRoKHRoaXMuY2hpbGROb2Rlcyl9KS5lbmQoKX0sYXBwZW5kOmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCEwLGZ1bmN0aW9uKGEpe3RoaXMubm9kZVR5cGU9PT0xJiZ0aGlzLmFwcGVuZENoaWxkKGEpfSl9LHByZXBlbmQ6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5kb21NYW5pcChhcmd1bWVudHMsITAsZnVuY3Rpb24oYSl7dGhpcy5ub2RlVHlwZT09PTEmJnRoaXMuaW5zZXJ0QmVmb3JlKGEsdGhpcy5maXJzdENoaWxkKX0pfSxiZWZvcmU6ZnVuY3Rpb24oKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpcmV0dXJuIHRoaXMuZG9tTWFuaXAoYXJndW1lbnRzLCExLGZ1bmN0aW9uKGEpe3RoaXMucGFyZW50Tm9kZS5pbnNlcnRCZWZvcmUoYSx0aGlzKX0pO2lmKGFyZ3VtZW50cy5sZW5ndGgpe3ZhciBhPWYuY2xlYW4oYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSx0aGlzLnRvQXJyYXkoKSk7cmV0dXJuIHRoaXMucHVzaFN0YWNrKGEsImJlZm9yZSIsYXJndW1lbnRzKX19LGFmdGVyOmZ1bmN0aW9uKCl7aWYodGhpc1swXSYmdGhpc1swXS5wYXJlbnROb2RlKXJldHVybiB0aGlzLmRvbU1hbmlwKGFyZ3VtZW50cywhMSxmdW5jdGlvbihhKXt0aGlzLnBhcmVudE5vZGUuaW5zZXJ0QmVmb3JlKGEsdGhpcy5uZXh0U2libGluZyl9KTtpZihhcmd1bWVudHMubGVuZ3RoKXt2YXIgYT10aGlzLnB1c2hTdGFjayh0aGlzLCJhZnRlciIsYXJndW1lbnRzKTthLnB1c2guYXBwbHkoYSxmLmNsZWFuKGFyZ3VtZW50cykpO3JldHVybiBhfX0scmVtb3ZlOmZ1bmN0aW9uKGEsYil7Zm9yKHZhciBjPTAsZDsoZD10aGlzW2NdKSE9bnVsbDtjKyspaWYoIWF8fGYuZmlsdGVyKGEsW2RdKS5sZW5ndGgpIWImJmQubm9kZVR5cGU9PT0xJiYoZi5jbGVhbkRhdGEoZC5nZXRFbGVtZW50c0J5VGFnTmFtZSgiKiIpKSwKLWYuY2xlYW5EYXRhKFtkXSkpLGQucGFyZW50Tm9kZSYmZC5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKGQpO3JldHVybiB0aGlzfSxlbXB0eTpmdW5jdGlvbigpCi17Zm9yKHZhciBhPTAsYjsoYj10aGlzW2FdKSE9bnVsbDthKyspe2Iubm9kZVR5cGU9PT0xJiZmLmNsZWFuRGF0YShiLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpO3doaWxlKGIuZmlyc3RDaGlsZCliLnJlbW92ZUNoaWxkKGIuZmlyc3RDaGlsZCl9cmV0dXJuIHRoaXN9LGNsb25lOmZ1bmN0aW9uKGEsYil7YT1hPT1udWxsPyExOmEsYj1iPT1udWxsP2E6YjtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gZi5jbG9uZSh0aGlzLGEsYil9KX0saHRtbDpmdW5jdGlvbihhKXtpZihhPT09YilyZXR1cm4gdGhpc1swXSYmdGhpc1swXS5ub2RlVHlwZT09PTE/dGhpc1swXS5pbm5lckhUTUwucmVwbGFjZShXLCIiKTpudWxsO2lmKHR5cGVvZiBhPT0ic3RyaW5nIiYmIWJhLnRlc3QoYSkmJihmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2V8fCFYLnRlc3QoYSkpJiYhYmdbKFouZXhlYyhhKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKV0pe2E9YS5yZXBsYWNlKFksIjwkMT48LyQyPiIpO3RyeXtmb3IodmFyIGM9MCxkPXRoaXMubGVuZ3RoO2M8ZDtjKyspdGhpc1tjXS5ub2RlVHlwZT09PTEmJihmLmNsZWFuRGF0YSh0aGlzW2NdLmdldEVsZW1lbnRzQnlUYWdOYW1lKCIqIikpLHRoaXNbY10uaW5uZXJIVE1MPWEpfWNhdGNoKGUpe3RoaXMuZW1wdHkoKS5hcHBlbmQoYSl9fWVsc2UgZi5pc0Z1bmN0aW9uKGEpP3RoaXMuZWFjaChmdW5jdGlvbihiKXt2YXIgYz1mKHRoaXMpO2MuaHRtbChhLmNhbGwodGhpcyxiLGMuaHRtbCgpKSl9KTp0aGlzLmVtcHR5KCkuYXBwZW5kKGEpO3JldHVybiB0aGlzfSxyZXBsYWNlV2l0aDpmdW5jdGlvbihhKXtpZih0aGlzWzBdJiZ0aGlzWzBdLnBhcmVudE5vZGUpe2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyksZD1jLmh0bWwoKTtjLnJlcGxhY2VXaXRoKGEuY2FsbCh0aGlzLGIsZCkpfSk7dHlwZW9mIGEhPSJzdHJpbmciJiYoYT1mKGEpLmRldGFjaCgpKTtyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7dmFyIGI9dGhpcy5uZXh0U2libGluZyxjPXRoaXMucGFyZW50Tm9kZTtmKHRoaXMpLnJlbW92ZSgpLGI/ZihiKS5iZWZvcmUoYSk6ZihjKS5hcHBlbmQoYSl9KX1yZXR1cm4gdGhpcy5sZW5ndGg/dGhpcy5wdXNoU3RhY2soZihmLmlzRnVuY3Rpb24oYSk/YSgpOmEpLCJyZXBsYWNlV2l0aCIsYSk6dGhpc30sZGV0YWNoOmZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLnJlbW92ZShhLCEwKX0sZG9tTWFuaXA6ZnVuY3Rpb24oYSxjLGQpe3ZhciBlLGcsaCxpLGo9YVswXSxrPVtdO2lmKCFmLnN1cHBvcnQuY2hlY2tDbG9uZSYmYXJndW1lbnRzLmxlbmd0aD09PTMmJnR5cGVvZiBqPT0ic3RyaW5nIiYmYmQudGVzdChqKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKCl7Zih0aGlzKS5kb21NYW5pcChhLGMsZCwhMCl9KTtpZihmLmlzRnVuY3Rpb24oaikpcmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbihlKXt2YXIgZz1mKHRoaXMpO2FbMF09ai5jYWxsKHRoaXMsZSxjP2cuaHRtbCgpOmIpLGcuZG9tTWFuaXAoYSxjLGQpfSk7aWYodGhpc1swXSl7aT1qJiZqLnBhcmVudE5vZGUsZi5zdXBwb3J0LnBhcmVudE5vZGUmJmkmJmkubm9kZVR5cGU9PT0xMSYmaS5jaGlsZE5vZGVzLmxlbmd0aD09PXRoaXMubGVuZ3RoP2U9e2ZyYWdtZW50Oml9OmU9Zi5idWlsZEZyYWdtZW50KGEsdGhpcyxrKSxoPWUuZnJhZ21lbnQsaC5jaGlsZE5vZGVzLmxlbmd0aD09PTE/Zz1oPWguZmlyc3RDaGlsZDpnPWguZmlyc3RDaGlsZDtpZihnKXtjPWMmJmYubm9kZU5hbWUoZywidHIiKTtmb3IodmFyIGw9MCxtPXRoaXMubGVuZ3RoLG49bS0xO2w8bTtsKyspZC5jYWxsKGM/YmkodGhpc1tsXSxnKTp0aGlzW2xdLGUuY2FjaGVhYmxlfHxtPjEmJmw8bj9mLmNsb25lKGgsITAsITApOmgpfWsubGVuZ3RoJiZmLmVhY2goayxicCl9cmV0dXJuIHRoaXN9fSksZi5idWlsZEZyYWdtZW50PWZ1bmN0aW9uKGEsYixkKXt2YXIgZSxnLGgsaSxqPWFbMF07YiYmYlswXSYmKGk9YlswXS5vd25lckRvY3VtZW50fHxiWzBdKSxpLmNyZWF0ZURvY3VtZW50RnJhZ21lbnR8fChpPWMpLGEubGVuZ3RoPT09MSYmdHlwZW9mIGo9PSJzdHJpbmciJiZqLmxlbmd0aDw1MTImJmk9PT1jJiZqLmNoYXJBdCgwKT09PSI8IiYmIWJiLnRlc3QoaikmJihmLnN1cHBvcnQuY2hlY2tDbG9uZXx8IWJkLnRlc3QoaikpJiYoZi5zdXBwb3J0Lmh0bWw1Q2xvbmV8fCFiYy50ZXN0KGopKSYmKGc9ITAsaD1mLmZyYWdtZW50c1tqXSxoJiZoIT09MSYmKGU9aCkpLGV8fChlPWkuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpLGYuY2xlYW4oYSxpLGUsZCkpLGcmJihmLmZyYWdtZW50c1tqXT1oP2U6MSk7cmV0dXJue2ZyYWdtZW50OmUsY2FjaGVhYmxlOmd9fSxmLmZyYWdtZW50cz17fSxmLmVhY2goe2FwcGVuZFRvOiJhcHBlbmQiLHByZXBlbmRUbzoicHJlcGVuZCIsaW5zZXJ0QmVmb3JlOiJiZWZvcmUiLGluc2VydEFmdGVyOiJhZnRlciIscmVwbGFjZUFsbDoicmVwbGFjZVdpdGgifSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYyl7dmFyIGQ9W10sZT1mKGMpLGc9dGhpcy5sZW5ndGg9PT0xJiZ0aGlzWzBdLnBhcmVudE5vZGU7aWYoZyYmZy5ub2RlVHlwZT09PTExJiZnLmNoaWxkTm9kZXMubGVuZ3RoPT09MSYmZS5sZW5ndGg9PT0xKXtlW2JdKHRoaXNbMF0pO3JldHVybiB0aGlzfWZvcih2YXIgaD0wLGk9ZS5sZW5ndGg7aDxpO2grKyl7dmFyIGo9KGg+MD90aGlzLmNsb25lKCEwKTp0aGlzKS5nZXQoKTtmKGVbaF0pW2JdKGopLGQ9ZC5jb25jYXQoail9cmV0dXJuIHRoaXMucHVzaFN0YWNrKGQsYSxlLnNlbGVjdG9yKX19KSxmLmV4dGVuZCh7Y2xvbmU6ZnVuY3Rpb24oYSxiLGMpe3ZhciBkLGUsZyxoPWYuc3VwcG9ydC5odG1sNUNsb25lfHwhYmMudGVzdCgiPCIrYS5ub2RlTmFtZSk/YS5jbG9uZU5vZGUoITApOmJvKGEpO2lmKCghZi5zdXBwb3J0Lm5vQ2xvbmVFdmVudHx8IWYuc3VwcG9ydC5ub0Nsb25lQ2hlY2tlZCkmJihhLm5vZGVUeXBlPT09MXx8YS5ub2RlVHlwZT09PTExKSYmIWYuaXNYTUxEb2MoYSkpe2JrKGEsaCksZD1ibChhKSxlPWJsKGgpO2ZvcihnPTA7ZFtnXTsrK2cpZVtnXSYmYmsoZFtnXSxlW2ddKX1pZihiKXtiaihhLGgpO2lmKGMpe2Q9YmwoYSksZT1ibChoKTtmb3IoZz0wO2RbZ107KytnKWJqKGRbZ10sZVtnXSl9fWQ9ZT1udWxsO3JldHVybiBofSxjbGVhbjpmdW5jdGlvbihhLGIsZCxlKXt2YXIgZztiPWJ8fGMsdHlwZW9mIGIuY3JlYXRlRWxlbWVudD09InVuZGVmaW5lZCImJihiPWIub3duZXJEb2N1bWVudHx8YlswXSYmYlswXS5vd25lckRvY3VtZW50fHxjKTt2YXIgaD1bXSxpO2Zvcih2YXIgaj0wLGs7KGs9YVtqXSkhPW51bGw7aisrKXt0eXBlb2Ygaz09Im51bWJlciImJihrKz0iIik7aWYoIWspY29udGludWU7aWYodHlwZW9mIGs9PSJzdHJpbmciKWlmKCFfLnRlc3Qoaykpaz1iLmNyZWF0ZVRleHROb2RlKGspO2Vsc2V7az1rLnJlcGxhY2UoWSwiPCQxPjwvJDI+Iik7dmFyIGw9KFouZXhlYyhrKXx8WyIiLCIiXSlbMV0udG9Mb3dlckNhc2UoKSxtPWJnW2xdfHxiZy5fZGVmYXVsdCxuPW1bMF0sbz1iLmNyZWF0ZUVsZW1lbnQoImRpdiIpO2I9PT1jP2JoLmFwcGVuZENoaWxkKG8pOlUoYikuYXBwZW5kQ2hpbGQobyksby5pbm5lckhUTUw9bVsxXStrK21bMl07d2hpbGUobi0tKW89by5sYXN0Q2hpbGQ7aWYoIWYuc3VwcG9ydC50Ym9keSl7dmFyIHA9JC50ZXN0KGspLHE9bD09PSJ0YWJsZSImJiFwP28uZmlyc3RDaGlsZCYmby5maXJzdENoaWxkLmNoaWxkTm9kZXM6bVsxXT09PSI8dGFibGU+IiYmIXA/by5jaGlsZE5vZGVzOltdO2ZvcihpPXEubGVuZ3RoLTE7aT49MDstLWkpZi5ub2RlTmFtZShxW2ldLCJ0Ym9keSIpJiYhcVtpXS5jaGlsZE5vZGVzLmxlbmd0aCYmcVtpXS5wYXJlbnROb2RlLnJlbW92ZUNoaWxkKHFbaV0pfSFmLnN1cHBvcnQubGVhZGluZ1doaXRlc3BhY2UmJlgudGVzdChrKSYmby5pbnNlcnRCZWZvcmUoYi5jcmVhdGVUZXh0Tm9kZShYLmV4ZWMoaylbMF0pLG8uZmlyc3RDaGlsZCksaz1vLmNoaWxkTm9kZXN9dmFyIHI7aWYoIWYuc3VwcG9ydC5hcHBlbmRDaGVja2VkKWlmKGtbMF0mJnR5cGVvZiAocj1rLmxlbmd0aCk9PSJudW1iZXIiKWZvcihpPTA7aTxyO2krKylibihrW2ldKTtlbHNlIGJuKGspO2subm9kZVR5cGU/aC5wdXNoKGspOmg9Zi5tZXJnZShoLGspfWlmKGQpe2c9ZnVuY3Rpb24oYSl7cmV0dXJuIWEudHlwZXx8YmUudGVzdChhLnR5cGUpfTtmb3Ioaj0wO2hbal07aisrKWlmKGUmJmYubm9kZU5hbWUoaFtqXSwic2NyaXB0IikmJighaFtqXS50eXBlfHxoW2pdLnR5cGUudG9Mb3dlckNhc2UoKT09PSJ0ZXh0L2phdmFzY3JpcHQiKSllLnB1c2goaFtqXS5wYXJlbnROb2RlP2hbal0ucGFyZW50Tm9kZS5yZW1vdmVDaGlsZChoW2pdKTpoW2pdKTtlbHNle2lmKGhbal0ubm9kZVR5cGU9PT0xKXt2YXIgcz1mLmdyZXAoaFtqXS5nZXRFbGVtZW50c0J5VGFnTmFtZSgic2NyaXB0IiksZyk7aC5zcGxpY2UuYXBwbHkoaCxbaisxLDBdLmNvbmNhdChzKSl9ZC5hcHBlbmRDaGlsZChoW2pdKX19cmV0dXJuIGh9LGNsZWFuRGF0YTpmdW5jdGlvbihhKXt2YXIgYixjLGQ9Zi5jYWNoZSxlPWYuZXZlbnQuc3BlY2lhbCxnPWYuc3VwcG9ydC5kZWxldGVFeHBhbmRvO2Zvcih2YXIgaD0wLGk7KGk9YVtoXSkhPW51bGw7aCsrKXtpZihpLm5vZGVOYW1lJiZmLm5vRGF0YVtpLm5vZGVOYW1lLnRvTG93ZXJDYXNlKCldKWNvbnRpbnVlO2M9aVtmLmV4cGFuZG9dO2lmKGMpe2I9ZFtjXTtpZihiJiZiLmV2ZW50cyl7Zm9yKHZhciBqIGluIGIuZXZlbnRzKWVbal0/Zi5ldmVudC5yZW1vdmUoaSxqKTpmLnJlbW92ZUV2ZW50KGksaixiLmhhbmRsZSk7Yi5oYW5kbGUmJihiLmhhbmRsZS5lbGVtPW51bGwpfWc/ZGVsZXRlIGlbZi5leHBhbmRvXTppLnJlbW92ZUF0dHJpYnV0ZSYmaS5yZW1vdmVBdHRyaWJ1dGUoZi5leHBhbmRvKSxkZWxldGUgZFtjXX19fX0pO3ZhciBicT0vYWxwaGFcKFteKV0qXCkvaSxicj0vb3BhY2l0eT0oW14pXSopLyxicz0vKFtBLVpdfF5tcykvZyxidD0vXi0/XGQrKD86cHgpPyQvaSxidT0vXi0/XGQvLGJ2PS9eKFtcLStdKT0oW1wtKy5cZGVdKykvLGJ3PXtwb3NpdGlvbjoiYWJzb2x1dGUiLHZpc2liaWxpdHk6ImhpZGRlbiIsZGlzcGxheToiYmxvY2sifSxieD1bIkxlZnQiLCJSaWdodCJdLGJ5PVsiVG9wIiwiQm90dG9tIl0sYnosYkEsYkI7Zi5mbi5jc3M9ZnVuY3Rpb24oYSxjKXtpZihhcmd1bWVudHMubGVuZ3RoPT09MiYmYz09PWIpcmV0dXJuIHRoaXM7cmV0dXJuIGYuYWNjZXNzKHRoaXMsYSxjLCEwLGZ1bmN0aW9uKGEsYyxkKXtyZXR1cm4gZCE9PWI/Zi5zdHlsZShhLGMsZCk6Zi5jc3MoYSxjKX0pfSxmLmV4dGVuZCh7Y3NzSG9va3M6e29wYWNpdHk6e2dldDpmdW5jdGlvbihhLGIpe2lmKGIpe3ZhciBjPWJ6KGEsIm9wYWNpdHkiLCJvcGFjaXR5Iik7cmV0dXJuIGM9PT0iIj8iMSI6Y31yZXR1cm4gYS5zdHlsZS5vcGFjaXR5fX19LGNzc051bWJlcjp7ZmlsbE9wYWNpdHk6ITAsZm9udFdlaWdodDohMCxsaW5lSGVpZ2h0OiEwLG9wYWNpdHk6ITAsb3JwaGFuczohMCx3aWRvd3M6ITAsekluZGV4OiEwLHpvb206ITB9LGNzc1Byb3BzOnsiZmxvYXQiOmYuc3VwcG9ydC5jc3NGbG9hdD8iY3NzRmxvYXQiOiJzdHlsZUZsb2F0In0sc3R5bGU6ZnVuY3Rpb24oYSxjLGQsZSl7aWYoISFhJiZhLm5vZGVUeXBlIT09MyYmYS5ub2RlVHlwZSE9PTgmJiEhYS5zdHlsZSl7dmFyIGcsaCxpPWYuY2FtZWxDYXNlKGMpLGo9YS5zdHlsZSxrPWYuY3NzSG9va3NbaV07Yz1mLmNzc1Byb3BzW2ldfHxpO2lmKGQ9PT1iKXtpZihrJiYiZ2V0ImluIGsmJihnPWsuZ2V0KGEsITEsZSkpIT09YilyZXR1cm4gZztyZXR1cm4galtjXX1oPXR5cGVvZiBkLGg9PT0ic3RyaW5nIiYmKGc9YnYuZXhlYyhkKSkmJihkPSsoZ1sxXSsxKSorZ1syXStwYXJzZUZsb2F0KGYuY3NzKGEsYykpLGg9Im51bWJlciIpO2lmKGQ9PW51bGx8fGg9PT0ibnVtYmVyIiYmaXNOYU4oZCkpcmV0dXJuO2g9PT0ibnVtYmVyIiYmIWYuY3NzTnVtYmVyW2ldJiYoZCs9InB4Iik7aWYoIWt8fCEoInNldCJpbiBrKXx8KGQ9ay5zZXQoYSxkKSkhPT1iKXRyeXtqW2NdPWR9Y2F0Y2gobCl7fX19LGNzczpmdW5jdGlvbihhLGMsZCl7dmFyIGUsZztjPWYuY2FtZWxDYXNlKGMpLGc9Zi5jc3NIb29rc1tjXSxjPWYuY3NzUHJvcHNbY118fGMsYz09PSJjc3NGbG9hdCImJihjPSJmbG9hdCIpO2lmKGcmJiJnZXQiaW4gZyYmKGU9Zy5nZXQoYSwhMCxkKSkhPT1iKXJldHVybiBlO2lmKGJ6KXJldHVybiBieihhLGMpfSxzd2FwOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD17fTtmb3IodmFyIGUgaW4gYilkW2VdPWEuc3R5bGVbZV0sYS5zdHlsZVtlXT1iW2VdO2MuY2FsbChhKTtmb3IoZSBpbiBiKWEuc3R5bGVbZV09ZFtlXX19KSxmLmN1ckNTUz1mLmNzcyxmLmVhY2goWyJoZWlnaHQiLCJ3aWR0aCJdLGZ1bmN0aW9uKGEsYil7Zi5jc3NIb29rc1tiXT17Z2V0OmZ1bmN0aW9uKGEsYyxkKXt2YXIgZTtpZihjKXtpZihhLm9mZnNldFdpZHRoIT09MClyZXR1cm4gYkMoYSxiLGQpO2Yuc3dhcChhLGJ3LGZ1bmN0aW9uKCl7ZT1iQyhhLGIsZCl9KTtyZXR1cm4gZX19LHNldDpmdW5jdGlvbihhLGIpe2lmKCFidC50ZXN0KGIpKXJldHVybiBiO2I9cGFyc2VGbG9hdChiKTtpZihiPj0wKXJldHVybiBiKyJweCJ9fX0pLGYuc3VwcG9ydC5vcGFjaXR5fHwoZi5jc3NIb29rcy5vcGFjaXR5PXtnZXQ6ZnVuY3Rpb24oYSxiKXtyZXR1cm4gYnIudGVzdCgoYiYmYS5jdXJyZW50U3R5bGU/YS5jdXJyZW50U3R5bGUuZmlsdGVyOmEuc3R5bGUuZmlsdGVyKXx8IiIpP3BhcnNlRmxvYXQoUmVnRXhwLiQxKS8xMDArIiI6Yj8iMSI6IiJ9LHNldDpmdW5jdGlvbihhLGIpe3ZhciBjPWEuc3R5bGUsZD1hLmN1cnJlbnRTdHlsZSxlPWYuaXNOdW1lcmljKGIpPyJhbHBoYShvcGFjaXR5PSIrYioxMDArIikiOiIiLGc9ZCYmZC5maWx0ZXJ8fGMuZmlsdGVyfHwiIjtjLnpvb209MTtpZihiPj0xJiZmLnRyaW0oZy5yZXBsYWNlKGJxLCIiKSk9PT0iIil7Yy5yZW1vdmVBdHRyaWJ1dGUoImZpbHRlciIpO2lmKGQmJiFkLmZpbHRlcilyZXR1cm59Yy5maWx0ZXI9YnEudGVzdChnKT9nLnJlcGxhY2UoYnEsZSk6ZysiICIrZX19KSxmKGZ1bmN0aW9uKCl7Zi5zdXBwb3J0LnJlbGlhYmxlTWFyZ2luUmlnaHR8fChmLmNzc0hvb2tzLm1hcmdpblJpZ2h0PXtnZXQ6ZnVuY3Rpb24oYSxiKXt2YXIgYztmLnN3YXAoYSx7ZGlzcGxheToiaW5saW5lLWJsb2NrIn0sZnVuY3Rpb24oKXtiP2M9YnooYSwibWFyZ2luLXJpZ2h0IiwibWFyZ2luUmlnaHQiKTpjPWEuc3R5bGUubWFyZ2luUmlnaHR9KTtyZXR1cm4gY319KX0pLGMuZGVmYXVsdFZpZXcmJmMuZGVmYXVsdFZpZXcuZ2V0Q29tcHV0ZWRTdHlsZSYmKGJBPWZ1bmN0aW9uKGEsYil7dmFyIGMsZCxlO2I9Yi5yZXBsYWNlKGJzLCItJDEiKS50b0xvd2VyQ2FzZSgpLChkPWEub3duZXJEb2N1bWVudC5kZWZhdWx0VmlldykmJihlPWQuZ2V0Q29tcHV0ZWRTdHlsZShhLG51bGwpKSYmKGM9ZS5nZXRQcm9wZXJ0eVZhbHVlKGIpLGM9PT0iIiYmIWYuY29udGFpbnMoYS5vd25lckRvY3VtZW50LmRvY3VtZW50RWxlbWVudCxhKSYmKGM9Zi5zdHlsZShhLGIpKSk7cmV0dXJuIGN9KSxjLmRvY3VtZW50RWxlbWVudC5jdXJyZW50U3R5bGUmJihiQj1mdW5jdGlvbihhLGIpe3ZhciBjLGQsZSxmPWEuY3VycmVudFN0eWxlJiZhLmN1cnJlbnRTdHlsZVtiXSxnPWEuc3R5bGU7Zj09PW51bGwmJmcmJihlPWdbYl0pJiYoZj1lKSwhYnQudGVzdChmKSYmYnUudGVzdChmKSYmKGM9Zy5sZWZ0LGQ9YS5ydW50aW1lU3R5bGUmJmEucnVudGltZVN0eWxlLmxlZnQsZCYmKGEucnVudGltZVN0eWxlLmxlZnQ9YS5jdXJyZW50U3R5bGUubGVmdCksZy5sZWZ0PWI9PT0iZm9udFNpemUiPyIxZW0iOmZ8fDAsZj1nLnBpeGVsTGVmdCsicHgiLGcubGVmdD1jLGQmJihhLnJ1bnRpbWVTdHlsZS5sZWZ0PWQpKTtyZXR1cm4gZj09PSIiPyJhdXRvIjpmfSksYno9YkF8fGJCLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5oaWRkZW49ZnVuY3Rpb24oYSl7dmFyIGI9YS5vZmZzZXRXaWR0aCxjPWEub2Zmc2V0SGVpZ2h0O3JldHVybiBiPT09MCYmYz09PTB8fCFmLnN1cHBvcnQucmVsaWFibGVIaWRkZW5PZmZzZXRzJiYoYS5zdHlsZSYmYS5zdHlsZS5kaXNwbGF5fHxmLmNzcyhhLCJkaXNwbGF5IikpPT09Im5vbmUifSxmLmV4cHIuZmlsdGVycy52aXNpYmxlPWZ1bmN0aW9uKGEpe3JldHVybiFmLmV4cHIuZmlsdGVycy5oaWRkZW4oYSl9KTt2YXIgYkQ9LyUyMC9nLGJFPS9cW1xdJC8sYkY9L1xyP1xuL2csYkc9LyMuKiQvLGJIPS9eKC4qPyk6WyBcdF0qKFteXHJcbl0qKVxyPyQvbWcsYkk9L14oPzpjb2xvcnxkYXRlfGRhdGV0aW1lfGRhdGV0aW1lLWxvY2FsfGVtYWlsfGhpZGRlbnxtb250aHxudW1iZXJ8cGFzc3dvcmR8cmFuZ2V8c2VhcmNofHRlbHx0ZXh0fHRpbWV8dXJsfHdlZWspJC9pLGJKPS9eKD86YWJvdXR8YXBwfGFwcFwtc3RvcmFnZXwuK1wtZXh0ZW5zaW9ufGZpbGV8cmVzfHdpZGdldCk6JC8sYks9L14oPzpHRVR8SEVBRCkkLyxiTD0vXlwvXC8vLGJNPS9cPy8sYk49LzxzY3JpcHRcYltePF0qKD86KD8hPFwvc2NyaXB0Pik8W148XSopKjxcL3NjcmlwdD4vZ2ksYk89L14oPzpzZWxlY3R8dGV4dGFyZWEpL2ksYlA9L1xzKy8sYlE9LyhbPyZdKV89W14mXSovLGJSPS9eKFtcd1wrXC5cLV0rOikoPzpcL1wvKFteXC8/IzpdKikoPzo6KFxkKykpPyk/LyxiUz1mLmZuLmxvYWQsYlQ9e30sYlU9e30sYlYsYlcsYlg9WyIqLyJdK1siKiJdO3RyeXtiVj1lLmhyZWZ9Y2F0Y2goYlkpe2JWPWMuY3JlYXRlRWxlbWVudCgiYSIpLGJWLmhyZWY9IiIsYlY9YlYuaHJlZn1iVz1iUi5leGVjKGJWLnRvTG93ZXJDYXNlKCkpfHxbXSxmLmZuLmV4dGVuZCh7bG9hZDpmdW5jdGlvbihhLGMsZCl7aWYodHlwZW9mIGEhPSJzdHJpbmciJiZiUylyZXR1cm4gYlMuYXBwbHkodGhpcyxhcmd1bWVudHMpO2lmKCF0aGlzLmxlbmd0aClyZXR1cm4gdGhpczt2YXIgZT1hLmluZGV4T2YoIiAiKTtpZihlPj0wKXt2YXIgZz1hLnNsaWNlKGUsYS5sZW5ndGgpO2E9YS5zbGljZSgwLGUpfXZhciBoPSJHRVQiO2MmJihmLmlzRnVuY3Rpb24oYyk/KGQ9YyxjPWIpOnR5cGVvZiBjPT0ib2JqZWN0IiYmKGM9Zi5wYXJhbShjLGYuYWpheFNldHRpbmdzLnRyYWRpdGlvbmFsKSxoPSJQT1NUIikpO3ZhciBpPXRoaXM7Zi5hamF4KHt1cmw6YSx0eXBlOmgsZGF0YVR5cGU6Imh0bWwiLGRhdGE6Yyxjb21wbGV0ZTpmdW5jdGlvbihhLGIsYyl7Yz1hLnJlc3BvbnNlVGV4dCxhLmlzUmVzb2x2ZWQoKSYmKGEuZG9uZShmdW5jdGlvbihhKXtjPWF9KSxpLmh0bWwoZz9mKCI8ZGl2PiIpLmFwcGVuZChjLnJlcGxhY2UoYk4sIiIpKS5maW5kKGcpOmMpKSxkJiZpLmVhY2goZCxbYyxiLGFdKX19KTtyZXR1cm4gdGhpc30sc2VyaWFsaXplOmZ1bmN0aW9uKCl7cmV0dXJuIGYucGFyYW0odGhpcy5zZXJpYWxpemVBcnJheSgpKX0sc2VyaWFsaXplQXJyYXk6ZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5tYXAoZnVuY3Rpb24oKXtyZXR1cm4gdGhpcy5lbGVtZW50cz9mLm1ha2VBcnJheSh0aGlzLmVsZW1lbnRzKTp0aGlzfSkuZmlsdGVyKGZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubmFtZSYmIXRoaXMuZGlzYWJsZWQmJih0aGlzLmNoZWNrZWR8fGJPLnRlc3QodGhpcy5ub2RlTmFtZSl8fGJJLnRlc3QodGhpcy50eXBlKSl9KS5tYXAoZnVuY3Rpb24oYSxiKXt2YXIgYz1mKHRoaXMpLnZhbCgpO3JldHVybiBjPT1udWxsP251bGw6Zi5pc0FycmF5KGMpP2YubWFwKGMsZnVuY3Rpb24oYSxjKXtyZXR1cm57bmFtZTpiLm5hbWUsdmFsdWU6YS5yZXBsYWNlKGJGLCJcclxuIil9fSk6e25hbWU6Yi5uYW1lLHZhbHVlOmMucmVwbGFjZShiRiwiXHJcbiIpfX0pLmdldCgpfX0pLGYuZWFjaCgiYWpheFN0YXJ0IGFqYXhTdG9wIGFqYXhDb21wbGV0ZSBhamF4RXJyb3IgYWpheFN1Y2Nlc3MgYWpheFNlbmQiLnNwbGl0KCIgIiksZnVuY3Rpb24oYSxiKXtmLmZuW2JdPWZ1bmN0aW9uKGEpe3JldHVybiB0aGlzLm9uKGIsYSl9fSksZi5lYWNoKFsiZ2V0IiwicG9zdCJdLGZ1bmN0aW9uKGEsYyl7ZltjXT1mdW5jdGlvbihhLGQsZSxnKXtmLmlzRnVuY3Rpb24oZCkmJihnPWd8fGUsZT1kLGQ9Yik7cmV0dXJuIGYuYWpheCh7dHlwZTpjLHVybDphLGRhdGE6ZCxzdWNjZXNzOmUsZGF0YVR5cGU6Z30pfX0pLGYuZXh0ZW5kKHtnZXRTY3JpcHQ6ZnVuY3Rpb24oYSxjKXtyZXR1cm4gZi5nZXQoYSxiLGMsInNjcmlwdCIpfSxnZXRKU09OOmZ1bmN0aW9uKGEsYixjKXtyZXR1cm4gZi5nZXQoYSxiLGMsImpzb24iKX0sYWpheFNldHVwOmZ1bmN0aW9uKGEsYil7Yj9iXyhhLGYuYWpheFNldHRpbmdzKTooYj1hLGE9Zi5hamF4U2V0dGluZ3MpLGJfKGEsYik7cmV0dXJuIGF9LGFqYXhTZXR0aW5nczp7dXJsOmJWLGlzTG9jYWw6YkoudGVzdChiV1sxXSksZ2xvYmFsOiEwLHR5cGU6IkdFVCIsY29udGVudFR5cGU6ImFwcGxpY2F0aW9uL3gtd3d3LWZvcm0tdXJsZW5jb2RlZCIscHJvY2Vzc0RhdGE6ITAsYXN5bmM6ITAsYWNjZXB0czp7eG1sOiJhcHBsaWNhdGlvbi94bWwsIHRleHQveG1sIixodG1sOiJ0ZXh0L2h0bWwiLHRleHQ6InRleHQvcGxhaW4iLGpzb246ImFwcGxpY2F0aW9uL2pzb24sIHRleHQvamF2YXNjcmlwdCIsIioiOmJYfSxjb250ZW50czp7eG1sOi94bWwvLGh0bWw6L2h0bWwvLGpzb246L2pzb24vfSxyZXNwb25zZUZpZWxkczp7eG1sOiJyZXNwb25zZVhNTCIsdGV4dDoicmVzcG9uc2VUZXh0In0sY29udmVydGVyczp7IiogdGV4dCI6YS5TdHJpbmcsInRleHQgaHRtbCI6ITAsInRleHQganNvbiI6Zi5wYXJzZUpTT04sInRleHQgeG1sIjpmLnBhcnNlWE1MfSxmbGF0T3B0aW9uczp7Y29udGV4dDohMCx1cmw6ITB9fSxhamF4UHJlZmlsdGVyOmJaKGJUKSxhamF4VHJhbnNwb3J0OmJaKGJVKSxhamF4OmZ1bmN0aW9uKGEsYyl7ZnVuY3Rpb24gdyhhLGMsbCxtKXtpZihzIT09Mil7cz0yLHEmJmNsZWFyVGltZW91dChxKSxwPWIsbj1tfHwiIix2LnJlYWR5U3RhdGU9YT4wPzQ6MDt2YXIgbyxyLHUsdz1jLHg9bD9jYihkLHYsbCk6Yix5LHo7aWYoYT49MjAwJiZhPDMwMHx8YT09PTMwNCl7aWYoZC5pZk1vZGlmaWVkKXtpZih5PXYuZ2V0UmVzcG9uc2VIZWFkZXIoIkxhc3QtTW9kaWZpZWQiKSlmLmxhc3RNb2RpZmllZFtrXT15O2lmKHo9di5nZXRSZXNwb25zZUhlYWRlcigiRXRhZyIpKWYuZXRhZ1trXT16fWlmKGE9PT0zMDQpdz0ibm90bW9kaWZpZWQiLG89ITA7ZWxzZSB0cnl7cj1jYyhkLHgpLHc9InN1Y2Nlc3MiLG89ITB9Y2F0Y2goQSl7dz0icGFyc2VyZXJyb3IiLHU9QX19ZWxzZXt1PXc7aWYoIXd8fGEpdz0iZXJyb3IiLGE8MCYmKGE9MCl9di5zdGF0dXM9YSx2LnN0YXR1c1RleHQ9IiIrKGN8fHcpLG8/aC5yZXNvbHZlV2l0aChlLFtyLHcsdl0pOmgucmVqZWN0V2l0aChlLFt2LHcsdV0pLHYuc3RhdHVzQ29kZShqKSxqPWIsdCYmZy50cmlnZ2VyKCJhamF4Iisobz8iU3VjY2VzcyI6IkVycm9yIiksW3YsZCxvP3I6dV0pLGkuZmlyZVdpdGgoZSxbdix3XSksdCYmKGcudHJpZ2dlcigiYWpheENvbXBsZXRlIixbdixkXSksLS1mLmFjdGl2ZXx8Zi5ldmVudC50cmlnZ2VyKCJhamF4U3RvcCIpKX19dHlwZW9mIGE9PSJvYmplY3QiJiYoYz1hLGE9YiksYz1jfHx7fTt2YXIgZD1mLmFqYXhTZXR1cCh7fSxjKSxlPWQuY29udGV4dHx8ZCxnPWUhPT1kJiYoZS5ub2RlVHlwZXx8ZSBpbnN0YW5jZW9mIGYpP2YoZSk6Zi5ldmVudCxoPWYuRGVmZXJyZWQoKSxpPWYuQ2FsbGJhY2tzKCJvbmNlIG1lbW9yeSIpLGo9ZC5zdGF0dXNDb2RlfHx7fSxrLGw9e30sbT17fSxuLG8scCxxLHIscz0wLHQsdSx2PXtyZWFkeVN0YXRlOjAsc2V0UmVxdWVzdEhlYWRlcjpmdW5jdGlvbihhLGIpe2lmKCFzKXt2YXIgYz1hLnRvTG93ZXJDYXNlKCk7YT1tW2NdPW1bY118fGEsbFthXT1ifXJldHVybiB0aGlzfSxnZXRBbGxSZXNwb25zZUhlYWRlcnM6ZnVuY3Rpb24oKXtyZXR1cm4gcz09PTI/bjpudWxsfSxnZXRSZXNwb25zZUhlYWRlcjpmdW5jdGlvbihhKXt2YXIgYztpZihzPT09Mil7aWYoIW8pe289e307d2hpbGUoYz1iSC5leGVjKG4pKW9bY1sxXS50b0xvd2VyQ2FzZSgpXT1jWzJdfWM9b1thLnRvTG93ZXJDYXNlKCldfXJldHVybiBjPT09Yj9udWxsOmN9LG92ZXJyaWRlTWltZVR5cGU6ZnVuY3Rpb24oYSl7c3x8KGQubWltZVR5cGU9YSk7cmV0dXJuIHRoaXN9LGFib3J0OmZ1bmN0aW9uKGEpe2E9YXx8ImFib3J0IixwJiZwLmFib3J0KGEpLHcoMCxhKTtyZXR1cm4gdGhpc319O2gucHJvbWlzZSh2KSx2LnN1Y2Nlc3M9di5kb25lLHYuZXJyb3I9di5mYWlsLHYuY29tcGxldGU9aS5hZGQsdi5zdGF0dXNDb2RlPWZ1bmN0aW9uKGEpe2lmKGEpe3ZhciBiO2lmKHM8Milmb3IoYiBpbiBhKWpbYl09W2pbYl0sYVtiXV07ZWxzZSBiPWFbdi5zdGF0dXNdLHYudGhlbihiLGIpfXJldHVybiB0aGlzfSxkLnVybD0oKGF8fGQudXJsKSsiIikucmVwbGFjZShiRywiIikucmVwbGFjZShiTCxiV1sxXSsiLy8iKSxkLmRhdGFUeXBlcz1mLnRyaW0oZC5kYXRhVHlwZXx8IioiKS50b0xvd2VyQ2FzZSgpLnNwbGl0KGJQKSxkLmNyb3NzRG9tYWluPT1udWxsJiYocj1iUi5leGVjKGQudXJsLnRvTG93ZXJDYXNlKCkpLGQuY3Jvc3NEb21haW49ISghcnx8clsxXT09YldbMV0mJnJbMl09PWJXWzJdJiYoclszXXx8KHJbMV09PT0iaHR0cDoiPzgwOjQ0MykpPT0oYldbM118fChiV1sxXT09PSJodHRwOiI/ODA6NDQzKSkpKSxkLmRhdGEmJmQucHJvY2Vzc0RhdGEmJnR5cGVvZiBkLmRhdGEhPSJzdHJpbmciJiYoZC5kYXRhPWYucGFyYW0oZC5kYXRhLGQudHJhZGl0aW9uYWwpKSxiJChiVCxkLGMsdik7aWYocz09PTIpcmV0dXJuITE7dD1kLmdsb2JhbCxkLnR5cGU9ZC50eXBlLnRvVXBwZXJDYXNlKCksZC5oYXNDb250ZW50PSFiSy50ZXN0KGQudHlwZSksdCYmZi5hY3RpdmUrKz09PTAmJmYuZXZlbnQudHJpZ2dlcigiYWpheFN0YXJ0Iik7aWYoIWQuaGFzQ29udGVudCl7ZC5kYXRhJiYoZC51cmwrPShiTS50ZXN0KGQudXJsKT8iJiI6Ij8iKStkLmRhdGEsZGVsZXRlIGQuZGF0YSksaz1kLnVybDtpZihkLmNhY2hlPT09ITEpe3ZhciB4PWYubm93KCkseT1kLnVybC5yZXBsYWNlKGJRLCIkMV89Iit4KTtkLnVybD15Kyh5PT09ZC51cmw/KGJNLnRlc3QoZC51cmwpPyImIjoiPyIpKyJfPSIreDoiIil9fShkLmRhdGEmJmQuaGFzQ29udGVudCYmZC5jb250ZW50VHlwZSE9PSExfHxjLmNvbnRlbnRUeXBlKSYmdi5zZXRSZXF1ZXN0SGVhZGVyKCJDb250ZW50LVR5cGUiLGQuY29udGVudFR5cGUpLGQuaWZNb2RpZmllZCYmKGs9a3x8ZC51cmwsZi5sYXN0TW9kaWZpZWRba10mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTW9kaWZpZWQtU2luY2UiLGYubGFzdE1vZGlmaWVkW2tdKSxmLmV0YWdba10mJnYuc2V0UmVxdWVzdEhlYWRlcigiSWYtTm9uZS1NYXRjaCIsZi5ldGFnW2tdKSksdi5zZXRSZXF1ZXN0SGVhZGVyKCJBY2NlcHQiLGQuZGF0YVR5cGVzWzBdJiZkLmFjY2VwdHNbZC5kYXRhVHlwZXNbMF1dP2QuYWNjZXB0c1tkLmRhdGFUeXBlc1swXV0rKGQuZGF0YVR5cGVzWzBdIT09IioiPyIsICIrYlgrIjsgcT0wLjAxIjoiIik6ZC5hY2NlcHRzWyIqIl0pO2Zvcih1IGluIGQuaGVhZGVycyl2LnNldFJlcXVlc3RIZWFkZXIodSxkLmhlYWRlcnNbdV0pO2lmKGQuYmVmb3JlU2VuZCYmKGQuYmVmb3JlU2VuZC5jYWxsKGUsdixkKT09PSExfHxzPT09Mikpe3YuYWJvcnQoKTtyZXR1cm4hMX1mb3IodSBpbntzdWNjZXNzOjEsZXJyb3I6MSxjb21wbGV0ZToxfSl2W3VdKGRbdV0pO3A9YiQoYlUsZCxjLHYpO2lmKCFwKXcoLTEsIk5vIFRyYW5zcG9ydCIpO2Vsc2V7di5yZWFkeVN0YXRlPTEsdCYmZy50cmlnZ2VyKCJhamF4U2VuZCIsW3YsZF0pLGQuYXN5bmMmJmQudGltZW91dD4wJiYocT1zZXRUaW1lb3V0KGZ1bmN0aW9uKCl7di5hYm9ydCgidGltZW91dCIpfSxkLnRpbWVvdXQpKTt0cnl7cz0xLHAuc2VuZChsLHcpfWNhdGNoKHope2lmKHM8Mil3KC0xLHopO2Vsc2UgdGhyb3cgen19cmV0dXJuIHZ9LHBhcmFtOmZ1bmN0aW9uKGEsYyl7dmFyIGQ9W10sZT1mdW5jdGlvbihhLGIpe2I9Zi5pc0Z1bmN0aW9uKGIpP2IoKTpiLGRbZC5sZW5ndGhdPWVuY29kZVVSSUNvbXBvbmVudChhKSsiPSIrZW5jb2RlVVJJQ29tcG9uZW50KGIpfTtjPT09YiYmKGM9Zi5hamF4U2V0dGluZ3MudHJhZGl0aW9uYWwpO2lmKGYuaXNBcnJheShhKXx8YS5qcXVlcnkmJiFmLmlzUGxhaW5PYmplY3QoYSkpZi5lYWNoKGEsZnVuY3Rpb24oKXtlKHRoaXMubmFtZSx0aGlzLnZhbHVlKX0pO2Vsc2UgZm9yKHZhciBnIGluIGEpY2EoZyxhW2ddLGMsZSk7cmV0dXJuIGQuam9pbigiJiIpLnJlcGxhY2UoYkQsIisiKX19KSxmLmV4dGVuZCh7YWN0aXZlOjAsbGFzdE1vZGlmaWVkOnt9LGV0YWc6e319KTt2YXIgY2Q9Zi5ub3coKSxjZT0vKFw9KVw/KCZ8JCl8XD9cPy9pO2YuYWpheFNldHVwKHtqc29ucDoiY2FsbGJhY2siLGpzb25wQ2FsbGJhY2s6ZnVuY3Rpb24oKXtyZXR1cm4gZi5leHBhbmRvKyJfIitjZCsrfX0pLGYuYWpheFByZWZpbHRlcigianNvbiBqc29ucCIsZnVuY3Rpb24oYixjLGQpe3ZhciBlPWIuY29udGVudFR5cGU9PT0iYXBwbGljYXRpb24veC13d3ctZm9ybS11cmxlbmNvZGVkIiYmdHlwZW9mIGIuZGF0YT09InN0cmluZyI7aWYoYi5kYXRhVHlwZXNbMF09PT0ianNvbnAifHxiLmpzb25wIT09ITEmJihjZS50ZXN0KGIudXJsKXx8ZSYmY2UudGVzdChiLmRhdGEpKSl7dmFyIGcsaD1iLmpzb25wQ2FsbGJhY2s9Zi5pc0Z1bmN0aW9uKGIuanNvbnBDYWxsYmFjayk/Yi5qc29ucENhbGxiYWNrKCk6Yi5qc29ucENhbGxiYWNrLGk9YVtoXSxqPWIudXJsLGs9Yi5kYXRhLGw9IiQxIitoKyIkMiI7Yi5qc29ucCE9PSExJiYoaj1qLnJlcGxhY2UoY2UsbCksYi51cmw9PT1qJiYoZSYmKGs9ay5yZXBsYWNlKGNlLGwpKSxiLmRhdGE9PT1rJiYoais9KC9cPy8udGVzdChqKT8iJiI6Ij8iKStiLmpzb25wKyI9IitoKSkpLGIudXJsPWosYi5kYXRhPWssYVtoXT1mdW5jdGlvbihhKXtnPVthXX0sZC5hbHdheXMoZnVuY3Rpb24oKXthW2hdPWksZyYmZi5pc0Z1bmN0aW9uKGkpJiZhW2hdKGdbMF0pfSksYi5jb252ZXJ0ZXJzWyJzY3JpcHQganNvbiJdPWZ1bmN0aW9uKCl7Z3x8Zi5lcnJvcihoKyIgd2FzIG5vdCBjYWxsZWQiKTtyZXR1cm4gZ1swXX0sYi5kYXRhVHlwZXNbMF09Impzb24iO3JldHVybiJzY3JpcHQifX0pLGYuYWpheFNldHVwKHthY2NlcHRzOntzY3JpcHQ6InRleHQvamF2YXNjcmlwdCwgYXBwbGljYXRpb24vamF2YXNjcmlwdCwgYXBwbGljYXRpb24vZWNtYXNjcmlwdCwgYXBwbGljYXRpb24veC1lY21hc2NyaXB0In0sY29udGVudHM6e3NjcmlwdDovamF2YXNjcmlwdHxlY21hc2NyaXB0L30sY29udmVydGVyczp7InRleHQgc2NyaXB0IjpmdW5jdGlvbihhKXtmLmdsb2JhbEV2YWwoYSk7cmV0dXJuIGF9fX0pLGYuYWpheFByZWZpbHRlcigic2NyaXB0IixmdW5jdGlvbihhKXthLmNhY2hlPT09YiYmKGEuY2FjaGU9ITEpLGEuY3Jvc3NEb21haW4mJihhLnR5cGU9IkdFVCIsYS5nbG9iYWw9ITEpfSksZi5hamF4VHJhbnNwb3J0KCJzY3JpcHQiLGZ1bmN0aW9uKGEpe2lmKGEuY3Jvc3NEb21haW4pe3ZhciBkLGU9Yy5oZWFkfHxjLmdldEVsZW1lbnRzQnlUYWdOYW1lKCJoZWFkIilbMF18fGMuZG9jdW1lbnRFbGVtZW50O3JldHVybntzZW5kOmZ1bmN0aW9uKGYsZyl7ZD1jLmNyZWF0ZUVsZW1lbnQoInNjcmlwdCIpLGQuYXN5bmM9ImFzeW5jIixhLnNjcmlwdENoYXJzZXQmJihkLmNoYXJzZXQ9YS5zY3JpcHRDaGFyc2V0KSxkLnNyYz1hLnVybCxkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1mdW5jdGlvbihhLGMpe2lmKGN8fCFkLnJlYWR5U3RhdGV8fC9sb2FkZWR8Y29tcGxldGUvLnRlc3QoZC5yZWFkeVN0YXRlKSlkLm9ubG9hZD1kLm9ucmVhZHlzdGF0ZWNoYW5nZT1udWxsLGUmJmQucGFyZW50Tm9kZSYmZS5yZW1vdmVDaGlsZChkKSxkPWIsY3x8ZygyMDAsInN1Y2Nlc3MiKX0sZS5pbnNlcnRCZWZvcmUoZCxlLmZpcnN0Q2hpbGQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQub25sb2FkKDAsMSl9fX19KTt2YXIgY2Y9YS5BY3RpdmVYT2JqZWN0P2Z1bmN0aW9uKCl7Zm9yKHZhciBhIGluIGNoKWNoW2FdKDAsMSl9OiExLGNnPTAsY2g7Zi5hamF4U2V0dGluZ3MueGhyPWEuQWN0aXZlWE9iamVjdD9mdW5jdGlvbigpe3JldHVybiF0aGlzLmlzTG9jYWwmJmNpKCl8fGNqKCl9OmNpLGZ1bmN0aW9uKGEpe2YuZXh0ZW5kKGYuc3VwcG9ydCx7YWpheDohIWEsY29yczohIWEmJiJ3aXRoQ3JlZGVudGlhbHMiaW4gYX0pfShmLmFqYXhTZXR0aW5ncy54aHIoKSksZi5zdXBwb3J0LmFqYXgmJmYuYWpheFRyYW5zcG9ydChmdW5jdGlvbihjKQote2lmKCFjLmNyb3NzRG9tYWlufHxmLnN1cHBvcnQuY29ycyl7dmFyIGQ7cmV0dXJue3NlbmQ6ZnVuY3Rpb24oZSxnKXt2YXIgaD1jLnhocigpLGksajtjLnVzZXJuYW1lP2gub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyxjLnVzZXJuYW1lLGMucGFzc3dvcmQpOmgub3BlbihjLnR5cGUsYy51cmwsYy5hc3luYyk7aWYoYy54aHJGaWVsZHMpZm9yKGogaW4gYy54aHJGaWVsZHMpaFtqXT1jLnhockZpZWxkc1tqXTtjLm1pbWVUeXBlJiZoLm92ZXJyaWRlTWltZVR5cGUmJmgub3ZlcnJpZGVNaW1lVHlwZShjLm1pbWVUeXBlKSwhYy5jcm9zc0RvbWFpbiYmIWVbIlgtUmVxdWVzdGVkLVdpdGgiXSYmKGVbIlgtUmVxdWVzdGVkLVdpdGgiXT0iWE1MSHR0cFJlcXVlc3QiKTt0cnl7Zm9yKGogaW4gZSloLnNldFJlcXVlc3RIZWFkZXIoaixlW2pdKX1jYXRjaChrKXt9aC5zZW5kKGMuaGFzQ29udGVudCYmYy5kYXRhfHxudWxsKSxkPWZ1bmN0aW9uKGEsZSl7dmFyIGosayxsLG0sbjt0cnl7aWYoZCYmKGV8fGgucmVhZHlTdGF0ZT09PTQpKXtkPWIsaSYmKGgub25yZWFkeXN0YXRlY2hhbmdlPWYubm9vcCxjZiYmZGVsZXRlIGNoW2ldKTtpZihlKWgucmVhZHlTdGF0ZSE9PTQmJmguYWJvcnQoKTtlbHNle2o9aC5zdGF0dXMsbD1oLmdldEFsbFJlc3BvbnNlSGVhZGVycygpLG09e30sbj1oLnJlc3BvbnNlWE1MLG4mJm4uZG9jdW1lbnRFbGVtZW50JiYobS54bWw9biksbS50ZXh0PWgucmVzcG9uc2VUZXh0O3RyeXtrPWguc3RhdHVzVGV4dH1jYXRjaChvKXtrPSIifSFqJiZjLmlzTG9jYWwmJiFjLmNyb3NzRG9tYWluP2o9bS50ZXh0PzIwMDo0MDQ6aj09PTEyMjMmJihqPTIwNCl9fX1jYXRjaChwKXtlfHxnKC0xLHApfW0mJmcoaixrLG0sbCl9LCFjLmFzeW5jfHxoLnJlYWR5U3RhdGU9PT00P2QoKTooaT0rK2NnLGNmJiYoY2h8fChjaD17fSxmKGEpLnVubG9hZChjZikpLGNoW2ldPWQpLGgub25yZWFkeXN0YXRlY2hhbmdlPWQpfSxhYm9ydDpmdW5jdGlvbigpe2QmJmQoMCwxKX19fX0pO3ZhciBjaz17fSxjbCxjbSxjbj0vXig/OnRvZ2dsZXxzaG93fGhpZGUpJC8sY289L14oWytcLV09KT8oW1xkKy5cLV0rKShbYS16JV0qKSQvaSxjcCxjcT1bWyJoZWlnaHQiLCJtYXJnaW5Ub3AiLCJtYXJnaW5Cb3R0b20iLCJwYWRkaW5nVG9wIiwicGFkZGluZ0JvdHRvbSJdLFsid2lkdGgiLCJtYXJnaW5MZWZ0IiwibWFyZ2luUmlnaHQiLCJwYWRkaW5nTGVmdCIsInBhZGRpbmdSaWdodCJdLFsib3BhY2l0eSJdXSxjcjtmLmZuLmV4dGVuZCh7c2hvdzpmdW5jdGlvbihhLGIsYyl7dmFyIGQsZTtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJzaG93IiwzKSxhLGIsYyk7Zm9yKHZhciBnPTAsaD10aGlzLmxlbmd0aDtnPGg7ZysrKWQ9dGhpc1tnXSxkLnN0eWxlJiYoZT1kLnN0eWxlLmRpc3BsYXksIWYuX2RhdGEoZCwib2xkZGlzcGxheSIpJiZlPT09Im5vbmUiJiYoZT1kLnN0eWxlLmRpc3BsYXk9IiIpLGU9PT0iIiYmZi5jc3MoZCwiZGlzcGxheSIpPT09Im5vbmUiJiZmLl9kYXRhKGQsIm9sZGRpc3BsYXkiLGN2KGQubm9kZU5hbWUpKSk7Zm9yKGc9MDtnPGg7ZysrKXtkPXRoaXNbZ107aWYoZC5zdHlsZSl7ZT1kLnN0eWxlLmRpc3BsYXk7aWYoZT09PSIifHxlPT09Im5vbmUiKWQuc3R5bGUuZGlzcGxheT1mLl9kYXRhKGQsIm9sZGRpc3BsYXkiKXx8IiJ9fXJldHVybiB0aGlzfSxoaWRlOmZ1bmN0aW9uKGEsYixjKXtpZihhfHxhPT09MClyZXR1cm4gdGhpcy5hbmltYXRlKGN1KCJoaWRlIiwzKSxhLGIsYyk7dmFyIGQsZSxnPTAsaD10aGlzLmxlbmd0aDtmb3IoO2c8aDtnKyspZD10aGlzW2ddLGQuc3R5bGUmJihlPWYuY3NzKGQsImRpc3BsYXkiKSxlIT09Im5vbmUiJiYhZi5fZGF0YShkLCJvbGRkaXNwbGF5IikmJmYuX2RhdGEoZCwib2xkZGlzcGxheSIsZSkpO2ZvcihnPTA7ZzxoO2crKyl0aGlzW2ddLnN0eWxlJiYodGhpc1tnXS5zdHlsZS5kaXNwbGF5PSJub25lIik7cmV0dXJuIHRoaXN9LF90b2dnbGU6Zi5mbi50b2dnbGUsdG9nZ2xlOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD10eXBlb2YgYT09ImJvb2xlYW4iO2YuaXNGdW5jdGlvbihhKSYmZi5pc0Z1bmN0aW9uKGIpP3RoaXMuX3RvZ2dsZS5hcHBseSh0aGlzLGFyZ3VtZW50cyk6YT09bnVsbHx8ZD90aGlzLmVhY2goZnVuY3Rpb24oKXt2YXIgYj1kP2E6Zih0aGlzKS5pcygiOmhpZGRlbiIpO2YodGhpcylbYj8ic2hvdyI6ImhpZGUiXSgpfSk6dGhpcy5hbmltYXRlKGN1KCJ0b2dnbGUiLDMpLGEsYixjKTtyZXR1cm4gdGhpc30sZmFkZVRvOmZ1bmN0aW9uKGEsYixjLGQpe3JldHVybiB0aGlzLmZpbHRlcigiOmhpZGRlbiIpLmNzcygib3BhY2l0eSIsMCkuc2hvdygpLmVuZCgpLmFuaW1hdGUoe29wYWNpdHk6Yn0sYSxjLGQpfSxhbmltYXRlOmZ1bmN0aW9uKGEsYixjLGQpe2Z1bmN0aW9uIGcoKXtlLnF1ZXVlPT09ITEmJmYuX21hcmsodGhpcyk7dmFyIGI9Zi5leHRlbmQoe30sZSksYz10aGlzLm5vZGVUeXBlPT09MSxkPWMmJmYodGhpcykuaXMoIjpoaWRkZW4iKSxnLGgsaSxqLGssbCxtLG4sbztiLmFuaW1hdGVkUHJvcGVydGllcz17fTtmb3IoaSBpbiBhKXtnPWYuY2FtZWxDYXNlKGkpLGkhPT1nJiYoYVtnXT1hW2ldLGRlbGV0ZSBhW2ldKSxoPWFbZ10sZi5pc0FycmF5KGgpPyhiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1oWzFdLGg9YVtnXT1oWzBdKTpiLmFuaW1hdGVkUHJvcGVydGllc1tnXT1iLnNwZWNpYWxFYXNpbmcmJmIuc3BlY2lhbEVhc2luZ1tnXXx8Yi5lYXNpbmd8fCJzd2luZyI7aWYoaD09PSJoaWRlIiYmZHx8aD09PSJzaG93IiYmIWQpcmV0dXJuIGIuY29tcGxldGUuY2FsbCh0aGlzKTtjJiYoZz09PSJoZWlnaHQifHxnPT09IndpZHRoIikmJihiLm92ZXJmbG93PVt0aGlzLnN0eWxlLm92ZXJmbG93LHRoaXMuc3R5bGUub3ZlcmZsb3dYLHRoaXMuc3R5bGUub3ZlcmZsb3dZXSxmLmNzcyh0aGlzLCJkaXNwbGF5Iik9PT0iaW5saW5lIiYmZi5jc3ModGhpcywiZmxvYXQiKT09PSJub25lIiYmKCFmLnN1cHBvcnQuaW5saW5lQmxvY2tOZWVkc0xheW91dHx8Y3YodGhpcy5ub2RlTmFtZSk9PT0iaW5saW5lIj90aGlzLnN0eWxlLmRpc3BsYXk9ImlubGluZS1ibG9jayI6dGhpcy5zdHlsZS56b29tPTEpKX1iLm92ZXJmbG93IT1udWxsJiYodGhpcy5zdHlsZS5vdmVyZmxvdz0iaGlkZGVuIik7Zm9yKGkgaW4gYSlqPW5ldyBmLmZ4KHRoaXMsYixpKSxoPWFbaV0sY24udGVzdChoKT8obz1mLl9kYXRhKHRoaXMsInRvZ2dsZSIraSl8fChoPT09InRvZ2dsZSI/ZD8ic2hvdyI6ImhpZGUiOjApLG8/KGYuX2RhdGEodGhpcywidG9nZ2xlIitpLG89PT0ic2hvdyI/ImhpZGUiOiJzaG93IiksaltvXSgpKTpqW2hdKCkpOihrPWNvLmV4ZWMoaCksbD1qLmN1cigpLGs/KG09cGFyc2VGbG9hdChrWzJdKSxuPWtbM118fChmLmNzc051bWJlcltpXT8iIjoicHgiKSxuIT09InB4IiYmKGYuc3R5bGUodGhpcyxpLChtfHwxKStuKSxsPShtfHwxKS9qLmN1cigpKmwsZi5zdHlsZSh0aGlzLGksbCtuKSksa1sxXSYmKG09KGtbMV09PT0iLT0iPy0xOjEpKm0rbCksai5jdXN0b20obCxtLG4pKTpqLmN1c3RvbShsLGgsIiIpKTtyZXR1cm4hMH12YXIgZT1mLnNwZWVkKGIsYyxkKTtpZihmLmlzRW1wdHlPYmplY3QoYSkpcmV0dXJuIHRoaXMuZWFjaChlLmNvbXBsZXRlLFshMV0pO2E9Zi5leHRlbmQoe30sYSk7cmV0dXJuIGUucXVldWU9PT0hMT90aGlzLmVhY2goZyk6dGhpcy5xdWV1ZShlLnF1ZXVlLGcpfSxzdG9wOmZ1bmN0aW9uKGEsYyxkKXt0eXBlb2YgYSE9InN0cmluZyImJihkPWMsYz1hLGE9YiksYyYmYSE9PSExJiZ0aGlzLnF1ZXVlKGF8fCJmeCIsW10pO3JldHVybiB0aGlzLmVhY2goZnVuY3Rpb24oKXtmdW5jdGlvbiBoKGEsYixjKXt2YXIgZT1iW2NdO2YucmVtb3ZlRGF0YShhLGMsITApLGUuc3RvcChkKX12YXIgYixjPSExLGU9Zi50aW1lcnMsZz1mLl9kYXRhKHRoaXMpO2R8fGYuX3VubWFyayghMCx0aGlzKTtpZihhPT1udWxsKWZvcihiIGluIGcpZ1tiXSYmZ1tiXS5zdG9wJiZiLmluZGV4T2YoIi5ydW4iKT09PWIubGVuZ3RoLTQmJmgodGhpcyxnLGIpO2Vsc2UgZ1tiPWErIi5ydW4iXSYmZ1tiXS5zdG9wJiZoKHRoaXMsZyxiKTtmb3IoYj1lLmxlbmd0aDtiLS07KWVbYl0uZWxlbT09PXRoaXMmJihhPT1udWxsfHxlW2JdLnF1ZXVlPT09YSkmJihkP2VbYl0oITApOmVbYl0uc2F2ZVN0YXRlKCksYz0hMCxlLnNwbGljZShiLDEpKTsoIWR8fCFjKSYmZi5kZXF1ZXVlKHRoaXMsYSl9KX19KSxmLmVhY2goe3NsaWRlRG93bjpjdSgic2hvdyIsMSksc2xpZGVVcDpjdSgiaGlkZSIsMSksc2xpZGVUb2dnbGU6Y3UoInRvZ2dsZSIsMSksZmFkZUluOntvcGFjaXR5OiJzaG93In0sZmFkZU91dDp7b3BhY2l0eToiaGlkZSJ9LGZhZGVUb2dnbGU6e29wYWNpdHk6InRvZ2dsZSJ9fSxmdW5jdGlvbihhLGIpe2YuZm5bYV09ZnVuY3Rpb24oYSxjLGQpe3JldHVybiB0aGlzLmFuaW1hdGUoYixhLGMsZCl9fSksZi5leHRlbmQoe3NwZWVkOmZ1bmN0aW9uKGEsYixjKXt2YXIgZD1hJiZ0eXBlb2YgYT09Im9iamVjdCI/Zi5leHRlbmQoe30sYSk6e2NvbXBsZXRlOmN8fCFjJiZifHxmLmlzRnVuY3Rpb24oYSkmJmEsZHVyYXRpb246YSxlYXNpbmc6YyYmYnx8YiYmIWYuaXNGdW5jdGlvbihiKSYmYn07ZC5kdXJhdGlvbj1mLmZ4Lm9mZj8wOnR5cGVvZiBkLmR1cmF0aW9uPT0ibnVtYmVyIj9kLmR1cmF0aW9uOmQuZHVyYXRpb24gaW4gZi5meC5zcGVlZHM/Zi5meC5zcGVlZHNbZC5kdXJhdGlvbl06Zi5meC5zcGVlZHMuX2RlZmF1bHQ7aWYoZC5xdWV1ZT09bnVsbHx8ZC5xdWV1ZT09PSEwKWQucXVldWU9ImZ4IjtkLm9sZD1kLmNvbXBsZXRlLGQuY29tcGxldGU9ZnVuY3Rpb24oYSl7Zi5pc0Z1bmN0aW9uKGQub2xkKSYmZC5vbGQuY2FsbCh0aGlzKSxkLnF1ZXVlP2YuZGVxdWV1ZSh0aGlzLGQucXVldWUpOmEhPT0hMSYmZi5fdW5tYXJrKHRoaXMpfTtyZXR1cm4gZH0sZWFzaW5nOntsaW5lYXI6ZnVuY3Rpb24oYSxiLGMsZCl7cmV0dXJuIGMrZCphfSxzd2luZzpmdW5jdGlvbihhLGIsYyxkKXtyZXR1cm4oLU1hdGguY29zKGEqTWF0aC5QSSkvMisuNSkqZCtjfX0sdGltZXJzOltdLGZ4OmZ1bmN0aW9uKGEsYixjKXt0aGlzLm9wdGlvbnM9Yix0aGlzLmVsZW09YSx0aGlzLnByb3A9YyxiLm9yaWc9Yi5vcmlnfHx7fX19KSxmLmZ4LnByb3RvdHlwZT17dXBkYXRlOmZ1bmN0aW9uKCl7dGhpcy5vcHRpb25zLnN0ZXAmJnRoaXMub3B0aW9ucy5zdGVwLmNhbGwodGhpcy5lbGVtLHRoaXMubm93LHRoaXMpLChmLmZ4LnN0ZXBbdGhpcy5wcm9wXXx8Zi5meC5zdGVwLl9kZWZhdWx0KSh0aGlzKX0sY3VyOmZ1bmN0aW9uKCl7aWYodGhpcy5lbGVtW3RoaXMucHJvcF0hPW51bGwmJighdGhpcy5lbGVtLnN0eWxlfHx0aGlzLmVsZW0uc3R5bGVbdGhpcy5wcm9wXT09bnVsbCkpcmV0dXJuIHRoaXMuZWxlbVt0aGlzLnByb3BdO3ZhciBhLGI9Zi5jc3ModGhpcy5lbGVtLHRoaXMucHJvcCk7cmV0dXJuIGlzTmFOKGE9cGFyc2VGbG9hdChiKSk/IWJ8fGI9PT0iYXV0byI/MDpiOmF9LGN1c3RvbTpmdW5jdGlvbihhLGMsZCl7ZnVuY3Rpb24gaChhKXtyZXR1cm4gZS5zdGVwKGEpfXZhciBlPXRoaXMsZz1mLmZ4O3RoaXMuc3RhcnRUaW1lPWNyfHxjcygpLHRoaXMuZW5kPWMsdGhpcy5ub3c9dGhpcy5zdGFydD1hLHRoaXMucG9zPXRoaXMuc3RhdGU9MCx0aGlzLnVuaXQ9ZHx8dGhpcy51bml0fHwoZi5jc3NOdW1iZXJbdGhpcy5wcm9wXT8iIjoicHgiKSxoLnF1ZXVlPXRoaXMub3B0aW9ucy5xdWV1ZSxoLmVsZW09dGhpcy5lbGVtLGguc2F2ZVN0YXRlPWZ1bmN0aW9uKCl7ZS5vcHRpb25zLmhpZGUmJmYuX2RhdGEoZS5lbGVtLCJmeHNob3ciK2UucHJvcCk9PT1iJiZmLl9kYXRhKGUuZWxlbSwiZnhzaG93IitlLnByb3AsZS5zdGFydCl9LGgoKSYmZi50aW1lcnMucHVzaChoKSYmIWNwJiYoY3A9c2V0SW50ZXJ2YWwoZy50aWNrLGcuaW50ZXJ2YWwpKX0sc2hvdzpmdW5jdGlvbigpe3ZhciBhPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCk7dGhpcy5vcHRpb25zLm9yaWdbdGhpcy5wcm9wXT1hfHxmLnN0eWxlKHRoaXMuZWxlbSx0aGlzLnByb3ApLHRoaXMub3B0aW9ucy5zaG93PSEwLGEhPT1iP3RoaXMuY3VzdG9tKHRoaXMuY3VyKCksYSk6dGhpcy5jdXN0b20odGhpcy5wcm9wPT09IndpZHRoInx8dGhpcy5wcm9wPT09ImhlaWdodCI/MTowLHRoaXMuY3VyKCkpLGYodGhpcy5lbGVtKS5zaG93KCl9LGhpZGU6ZnVuY3Rpb24oKXt0aGlzLm9wdGlvbnMub3JpZ1t0aGlzLnByb3BdPWYuX2RhdGEodGhpcy5lbGVtLCJmeHNob3ciK3RoaXMucHJvcCl8fGYuc3R5bGUodGhpcy5lbGVtLHRoaXMucHJvcCksdGhpcy5vcHRpb25zLmhpZGU9ITAsdGhpcy5jdXN0b20odGhpcy5jdXIoKSwwKX0sc3RlcDpmdW5jdGlvbihhKXt2YXIgYixjLGQsZT1jcnx8Y3MoKSxnPSEwLGg9dGhpcy5lbGVtLGk9dGhpcy5vcHRpb25zO2lmKGF8fGU+PWkuZHVyYXRpb24rdGhpcy5zdGFydFRpbWUpe3RoaXMubm93PXRoaXMuZW5kLHRoaXMucG9zPXRoaXMuc3RhdGU9MSx0aGlzLnVwZGF0ZSgpLGkuYW5pbWF0ZWRQcm9wZXJ0aWVzW3RoaXMucHJvcF09ITA7Zm9yKGIgaW4gaS5hbmltYXRlZFByb3BlcnRpZXMpaS5hbmltYXRlZFByb3BlcnRpZXNbYl0hPT0hMCYmKGc9ITEpO2lmKGcpe2kub3ZlcmZsb3chPW51bGwmJiFmLnN1cHBvcnQuc2hyaW5rV3JhcEJsb2NrcyYmZi5lYWNoKFsiIiwiWCIsIlkiXSxmdW5jdGlvbihhLGIpe2guc3R5bGVbIm92ZXJmbG93IitiXT1pLm92ZXJmbG93W2FdfSksaS5oaWRlJiZmKGgpLmhpZGUoKTtpZihpLmhpZGV8fGkuc2hvdylmb3IoYiBpbiBpLmFuaW1hdGVkUHJvcGVydGllcylmLnN0eWxlKGgsYixpLm9yaWdbYl0pLGYucmVtb3ZlRGF0YShoLCJmeHNob3ciK2IsITApLGYucmVtb3ZlRGF0YShoLCJ0b2dnbGUiK2IsITApO2Q9aS5jb21wbGV0ZSxkJiYoaS5jb21wbGV0ZT0hMSxkLmNhbGwoaCkpfXJldHVybiExfWkuZHVyYXRpb249PUluZmluaXR5P3RoaXMubm93PWU6KGM9ZS10aGlzLnN0YXJ0VGltZSx0aGlzLnN0YXRlPWMvaS5kdXJhdGlvbix0aGlzLnBvcz1mLmVhc2luZ1tpLmFuaW1hdGVkUHJvcGVydGllc1t0aGlzLnByb3BdXSh0aGlzLnN0YXRlLGMsMCwxLGkuZHVyYXRpb24pLHRoaXMubm93PXRoaXMuc3RhcnQrKHRoaXMuZW5kLXRoaXMuc3RhcnQpKnRoaXMucG9zKSx0aGlzLnVwZGF0ZSgpO3JldHVybiEwfX0sZi5leHRlbmQoZi5meCx7dGljazpmdW5jdGlvbigpe3ZhciBhLGI9Zi50aW1lcnMsYz0wO2Zvcig7YzxiLmxlbmd0aDtjKyspYT1iW2NdLCFhKCkmJmJbY109PT1hJiZiLnNwbGljZShjLS0sMSk7Yi5sZW5ndGh8fGYuZnguc3RvcCgpfSxpbnRlcnZhbDoxMyxzdG9wOmZ1bmN0aW9uKCl7Y2xlYXJJbnRlcnZhbChjcCksY3A9bnVsbH0sc3BlZWRzOntzbG93OjYwMCxmYXN0OjIwMCxfZGVmYXVsdDo0MDB9LHN0ZXA6e29wYWNpdHk6ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sIm9wYWNpdHkiLGEubm93KX0sX2RlZmF1bHQ6ZnVuY3Rpb24oYSl7YS5lbGVtLnN0eWxlJiZhLmVsZW0uc3R5bGVbYS5wcm9wXSE9bnVsbD9hLmVsZW0uc3R5bGVbYS5wcm9wXT1hLm5vdythLnVuaXQ6YS5lbGVtW2EucHJvcF09YS5ub3d9fX0pLGYuZWFjaChbIndpZHRoIiwiaGVpZ2h0Il0sZnVuY3Rpb24oYSxiKXtmLmZ4LnN0ZXBbYl09ZnVuY3Rpb24oYSl7Zi5zdHlsZShhLmVsZW0sYixNYXRoLm1heCgwLGEubm93KSthLnVuaXQpfX0pLGYuZXhwciYmZi5leHByLmZpbHRlcnMmJihmLmV4cHIuZmlsdGVycy5hbmltYXRlZD1mdW5jdGlvbihhKXtyZXR1cm4gZi5ncmVwKGYudGltZXJzLGZ1bmN0aW9uKGIpe3JldHVybiBhPT09Yi5lbGVtfSkubGVuZ3RofSk7dmFyIGN3PS9edCg/OmFibGV8ZHxoKSQvaSxjeD0vXig/OmJvZHl8aHRtbCkkL2k7ImdldEJvdW5kaW5nQ2xpZW50UmVjdCJpbiBjLmRvY3VtZW50RWxlbWVudD9mLmZuLm9mZnNldD1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdLGM7aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dHJ5e2M9Yi5nZXRCb3VuZGluZ0NsaWVudFJlY3QoKX1jYXRjaChkKXt9dmFyIGU9Yi5vd25lckRvY3VtZW50LGc9ZS5kb2N1bWVudEVsZW1lbnQ7aWYoIWN8fCFmLmNvbnRhaW5zKGcsYikpcmV0dXJuIGM/e3RvcDpjLnRvcCxsZWZ0OmMubGVmdH06e3RvcDowLGxlZnQ6MH07dmFyIGg9ZS5ib2R5LGk9Y3koZSksaj1nLmNsaWVudFRvcHx8aC5jbGllbnRUb3B8fDAsaz1nLmNsaWVudExlZnR8fGguY2xpZW50TGVmdHx8MCxsPWkucGFnZVlPZmZzZXR8fGYuc3VwcG9ydC5ib3hNb2RlbCYmZy5zY3JvbGxUb3B8fGguc2Nyb2xsVG9wLG09aS5wYWdlWE9mZnNldHx8Zi5zdXBwb3J0LmJveE1vZGVsJiZnLnNjcm9sbExlZnR8fGguc2Nyb2xsTGVmdCxuPWMudG9wK2wtaixvPWMubGVmdCttLWs7cmV0dXJue3RvcDpuLGxlZnQ6b319OmYuZm4ub2Zmc2V0PWZ1bmN0aW9uKGEpe3ZhciBiPXRoaXNbMF07aWYoYSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe2Yub2Zmc2V0LnNldE9mZnNldCh0aGlzLGEsYil9KTtpZighYnx8IWIub3duZXJEb2N1bWVudClyZXR1cm4gbnVsbDtpZihiPT09Yi5vd25lckRvY3VtZW50LmJvZHkpcmV0dXJuIGYub2Zmc2V0LmJvZHlPZmZzZXQoYik7dmFyIGMsZD1iLm9mZnNldFBhcmVudCxlPWIsZz1iLm93bmVyRG9jdW1lbnQsaD1nLmRvY3VtZW50RWxlbWVudCxpPWcuYm9keSxqPWcuZGVmYXVsdFZpZXcsaz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGw9Yi5vZmZzZXRUb3AsbT1iLm9mZnNldExlZnQ7d2hpbGUoKGI9Yi5wYXJlbnROb2RlKSYmYiE9PWkmJmIhPT1oKXtpZihmLnN1cHBvcnQuZml4ZWRQb3NpdGlvbiYmay5wb3NpdGlvbj09PSJmaXhlZCIpYnJlYWs7Yz1qP2ouZ2V0Q29tcHV0ZWRTdHlsZShiLG51bGwpOmIuY3VycmVudFN0eWxlLGwtPWIuc2Nyb2xsVG9wLG0tPWIuc2Nyb2xsTGVmdCxiPT09ZCYmKGwrPWIub2Zmc2V0VG9wLG0rPWIub2Zmc2V0TGVmdCxmLnN1cHBvcnQuZG9lc05vdEFkZEJvcmRlciYmKCFmLnN1cHBvcnQuZG9lc0FkZEJvcmRlckZvclRhYmxlQW5kQ2VsbHN8fCFjdy50ZXN0KGIubm9kZU5hbWUpKSYmKGwrPXBhcnNlRmxvYXQoYy5ib3JkZXJUb3BXaWR0aCl8fDAsbSs9cGFyc2VGbG9hdChjLmJvcmRlckxlZnRXaWR0aCl8fDApLGU9ZCxkPWIub2Zmc2V0UGFyZW50KSxmLnN1cHBvcnQuc3VidHJhY3RzQm9yZGVyRm9yT3ZlcmZsb3dOb3RWaXNpYmxlJiZjLm92ZXJmbG93IT09InZpc2libGUiJiYobCs9cGFyc2VGbG9hdChjLmJvcmRlclRvcFdpZHRoKXx8MCxtKz1wYXJzZUZsb2F0KGMuYm9yZGVyTGVmdFdpZHRoKXx8MCksaz1jfWlmKGsucG9zaXRpb249PT0icmVsYXRpdmUifHxrLnBvc2l0aW9uPT09InN0YXRpYyIpbCs9aS5vZmZzZXRUb3AsbSs9aS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5maXhlZFBvc2l0aW9uJiZrLnBvc2l0aW9uPT09ImZpeGVkIiYmKGwrPU1hdGgubWF4KGguc2Nyb2xsVG9wLGkuc2Nyb2xsVG9wKSxtKz1NYXRoLm1heChoLnNjcm9sbExlZnQsaS5zY3JvbGxMZWZ0KSk7cmV0dXJue3RvcDpsLGxlZnQ6bX19LGYub2Zmc2V0PXtib2R5T2Zmc2V0OmZ1bmN0aW9uKGEpe3ZhciBiPWEub2Zmc2V0VG9wLGM9YS5vZmZzZXRMZWZ0O2Yuc3VwcG9ydC5kb2VzTm90SW5jbHVkZU1hcmdpbkluQm9keU9mZnNldCYmKGIrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luVG9wIikpfHwwLGMrPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCk7cmV0dXJue3RvcDpiLGxlZnQ6Y319LHNldE9mZnNldDpmdW5jdGlvbihhLGIsYyl7dmFyIGQ9Zi5jc3MoYSwicG9zaXRpb24iKTtkPT09InN0YXRpYyImJihhLnN0eWxlLnBvc2l0aW9uPSJyZWxhdGl2ZSIpO3ZhciBlPWYoYSksZz1lLm9mZnNldCgpLGg9Zi5jc3MoYSwidG9wIiksaT1mLmNzcyhhLCJsZWZ0Iiksaj0oZD09PSJhYnNvbHV0ZSJ8fGQ9PT0iZml4ZWQiKSYmZi5pbkFycmF5KCJhdXRvIixbaCxpXSk+LTEsaz17fSxsPXt9LG0sbjtqPyhsPWUucG9zaXRpb24oKSxtPWwudG9wLG49bC5sZWZ0KToobT1wYXJzZUZsb2F0KGgpfHwwLG49cGFyc2VGbG9hdChpKXx8MCksZi5pc0Z1bmN0aW9uKGIpJiYoYj1iLmNhbGwoYSxjLGcpKSxiLnRvcCE9bnVsbCYmKGsudG9wPWIudG9wLWcudG9wK20pLGIubGVmdCE9bnVsbCYmKGsubGVmdD1iLmxlZnQtZy5sZWZ0K24pLCJ1c2luZyJpbiBiP2IudXNpbmcuY2FsbChhLGspOmUuY3NzKGspfX0sZi5mbi5leHRlbmQoe3Bvc2l0aW9uOmZ1bmN0aW9uKCl7aWYoIXRoaXNbMF0pcmV0dXJuIG51bGw7dmFyIGE9dGhpc1swXSxiPXRoaXMub2Zmc2V0UGFyZW50KCksYz10aGlzLm9mZnNldCgpLGQ9Y3gudGVzdChiWzBdLm5vZGVOYW1lKT97dG9wOjAsbGVmdDowfTpiLm9mZnNldCgpO2MudG9wLT1wYXJzZUZsb2F0KGYuY3NzKGEsIm1hcmdpblRvcCIpKXx8MCxjLmxlZnQtPXBhcnNlRmxvYXQoZi5jc3MoYSwibWFyZ2luTGVmdCIpKXx8MCxkLnRvcCs9cGFyc2VGbG9hdChmLmNzcyhiWzBdLCJib3JkZXJUb3BXaWR0aCIpKXx8MCxkLmxlZnQrPXBhcnNlRmxvYXQoZi5jc3MoYlswXSwiYm9yZGVyTGVmdFdpZHRoIikpfHwwO3JldHVybnt0b3A6Yy50b3AtZC50b3AsbGVmdDpjLmxlZnQtZC5sZWZ0fX0sb2Zmc2V0UGFyZW50OmZ1bmN0aW9uKCl7cmV0dXJuIHRoaXMubWFwKGZ1bmN0aW9uKCl7dmFyIGE9dGhpcy5vZmZzZXRQYXJlbnR8fGMuYm9keTt3aGlsZShhJiYhY3gudGVzdChhLm5vZGVOYW1lKSYmZi5jc3MoYSwicG9zaXRpb24iKT09PSJzdGF0aWMiKWE9YS5vZmZzZXRQYXJlbnQ7cmV0dXJuIGF9KX19KSxmLmVhY2goWyJMZWZ0IiwiVG9wIl0sZnVuY3Rpb24oYSxjKXt2YXIgZD0ic2Nyb2xsIitjO2YuZm5bZF09ZnVuY3Rpb24oYyl7dmFyIGUsZztpZihjPT09Yil7ZT10aGlzWzBdO2lmKCFlKXJldHVybiBudWxsO2c9Y3koZSk7cmV0dXJuIGc/InBhZ2VYT2Zmc2V0ImluIGc/Z1thPyJwYWdlWU9mZnNldCI6InBhZ2VYT2Zmc2V0Il06Zi5zdXBwb3J0LmJveE1vZGVsJiZnLmRvY3VtZW50LmRvY3VtZW50RWxlbWVudFtkXXx8Zy5kb2N1bWVudC5ib2R5W2RdOmVbZF19cmV0dXJuIHRoaXMuZWFjaChmdW5jdGlvbigpe2c9Y3kodGhpcyksZz9nLnNjcm9sbFRvKGE/ZihnKS5zY3JvbGxMZWZ0KCk6YyxhP2M6ZihnKS5zY3JvbGxUb3AoKSk6dGhpc1tkXT1jfSl9fSksZi5lYWNoKFsiSGVpZ2h0IiwiV2lkdGgiXSxmdW5jdGlvbihhLGMpe3ZhciBkPWMudG9Mb3dlckNhc2UoKTtmLmZuWyJpbm5lciIrY109ZnVuY3Rpb24oKXt2YXIgYT10aGlzWzBdO3JldHVybiBhP2Euc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhhLGQsInBhZGRpbmciKSk6dGhpc1tkXSgpOm51bGx9LGYuZm5bIm91dGVyIitjXT1mdW5jdGlvbihhKXt2YXIgYj10aGlzWzBdO3JldHVybiBiP2Iuc3R5bGU/cGFyc2VGbG9hdChmLmNzcyhiLGQsYT8ibWFyZ2luIjoiYm9yZGVyIikpOnRoaXNbZF0oKTpudWxsfSxmLmZuW2RdPWZ1bmN0aW9uKGEpe3ZhciBlPXRoaXNbMF07aWYoIWUpcmV0dXJuIGE9PW51bGw/bnVsbDp0aGlzO2lmKGYuaXNGdW5jdGlvbihhKSlyZXR1cm4gdGhpcy5lYWNoKGZ1bmN0aW9uKGIpe3ZhciBjPWYodGhpcyk7Y1tkXShhLmNhbGwodGhpcyxiLGNbZF0oKSkpfSk7aWYoZi5pc1dpbmRvdyhlKSl7dmFyIGc9ZS5kb2N1bWVudC5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10saD1lLmRvY3VtZW50LmJvZHk7cmV0dXJuIGUuZG9jdW1lbnQuY29tcGF0TW9kZT09PSJDU1MxQ29tcGF0IiYmZ3x8aCYmaFsiY2xpZW50IitjXXx8Z31pZihlLm5vZGVUeXBlPT09OSlyZXR1cm4gTWF0aC5tYXgoZS5kb2N1bWVudEVsZW1lbnRbImNsaWVudCIrY10sZS5ib2R5WyJzY3JvbGwiK2NdLGUuZG9jdW1lbnRFbGVtZW50WyJzY3JvbGwiK2NdLGUuYm9keVsib2Zmc2V0IitjXSxlLmRvY3VtZW50RWxlbWVudFsib2Zmc2V0IitjXSk7aWYoYT09PWIpe3ZhciBpPWYuY3NzKGUsZCksaj1wYXJzZUZsb2F0KGkpO3JldHVybiBmLmlzTnVtZXJpYyhqKT9qOml9cmV0dXJuIHRoaXMuY3NzKGQsdHlwZW9mIGE9PSJzdHJpbmciP2E6YSsicHgiKX19KSxhLmpRdWVyeT1hLiQ9Zix0eXBlb2YgZGVmaW5lPT0iZnVuY3Rpb24iJiZkZWZpbmUuYW1kJiZkZWZpbmUuYW1kLmpRdWVyeSYmZGVmaW5lKCJqcXVlcnkiLFtdLGZ1bmN0aW9uKCl7cmV0dXJuIGZ9KX0pKHdpbmRvdyk7CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9tb2R1bGVzLmh0bWwgYi9kb2MvaHRtbC9tb2R1bGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNmY4MTUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvbW9kdWxlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTUgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSIvPgotPHRpdGxlPlR1cmJvSlBFRzogTW9kdWxlczwvdGl0bGU+Ci08bGluayBocmVmPSJ0YWJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianF1ZXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImR5bnNlY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxsaW5rIGhyZWY9InNlYXJjaC9zZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2gvc2VhcmNoLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IHNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCk7IH0pOwotPC9zY3JpcHQ+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KLTxsaW5rIGhyZWY9ImRveHlnZW4tZXh0cmEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9InRvcCI+PCEtLSBkbyBub3QgcmVtb3ZlIHRoaXMgZGl2LCBpdCBpcyBjbG9zZWQgYnkgZG94eWdlbiEgLS0+Ci08ZGl2IGlkPSJ0aXRsZWFyZWEiPgotPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Ci0gPHRib2R5PgotIDx0ciBzdHlsZT0iaGVpZ2h0OiA1NnB4OyI+Ci0gIDx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAwLjVlbTsiPgotICAgPGRpdiBpZD0icHJvamVjdG5hbWUiPlR1cmJvSlBFRwotICAgJiMxNjA7PHNwYW4gaWQ9InByb2plY3RudW1iZXIiPjEuNTwvc3Bhbj4KLSAgIDwvZGl2PgotICA8L3RkPgotIDwvdHI+Ci0gPC90Ym9keT4KLTwvdGFibGU+Ci08L2Rpdj4KLTwhLS0gZW5kIGhlYWRlciBwYXJ0IC0tPgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjguMy4xIC0tPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdmFyIHNlYXJjaEJveCA9IG5ldyBTZWFyY2hCb3goInNlYXJjaEJveCIsICJzZWFyY2giLGZhbHNlLCdTZWFyY2gnKTsKLTwvc2NyaXB0PgotICA8ZGl2IGlkPSJuYXZyb3cxIiBjbGFzcz0idGFicyI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj48c3Bhbj5NYWluJiMxNjA7UGFnZTwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaSBjbGFzcz0iY3VycmVudCI+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT4KLSAgICAgICAgPGRpdiBpZD0iTVNlYXJjaEJveCIgY2xhc3M9Ik1TZWFyY2hCb3hJbmFjdGl2ZSI+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsZWZ0Ij4KLSAgICAgICAgICA8aW1nIGlkPSJNU2VhcmNoU2VsZWN0IiBzcmM9InNlYXJjaC9tYWdfc2VsLnBuZyIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICAgICAgICAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgICAgICAgICAgIGFsdD0iIi8+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJNU2VhcmNoRmllbGQiIHZhbHVlPSJTZWFyY2giIGFjY2Vzc2tleT0iUyIKLSAgICAgICAgICAgICAgIG9uZm9jdXM9InNlYXJjaEJveC5PblNlYXJjaEZpZWxkRm9jdXModHJ1ZSkiIAotICAgICAgICAgICAgICAgb25ibHVyPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKGZhbHNlKSIgCi0gICAgICAgICAgICAgICBvbmtleXVwPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZENoYW5nZShldmVudCkiLz4KLSAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4KLSAgICAgICAgICAgIDxhIGlkPSJNU2VhcmNoQ2xvc2UiIGhyZWY9ImphdmFzY3JpcHQ6c2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpIj48aW1nIGlkPSJNU2VhcmNoQ2xvc2VJbWciIGJvcmRlcj0iMCIgc3JjPSJzZWFyY2gvY2xvc2UucG5nIiBhbHQ9IiIvPjwvYT4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLTwvZGl2PjwhLS0gdG9wIC0tPgotPCEtLSB3aW5kb3cgc2hvd2luZyB0aGUgZmlsdGVyIG9wdGlvbnMgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoU2VsZWN0V2luZG93IgotICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgb25rZXlkb3duPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0S2V5KGV2ZW50KSI+Ci08YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkFsbDwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDEpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkRhdGEgU3RydWN0dXJlczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDIpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkZ1bmN0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDMpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPlZhcmlhYmxlczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDQpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPlR5cGVkZWZzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RW51bWVyYXRpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RW51bWVyYXRvcjwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDcpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkdyb3VwczwvYT48L2Rpdj4KLQotPCEtLSBpZnJhbWUgc2hvd2luZyB0aGUgc2VhcmNoIHJlc3VsdHMgKGNsb3NlZCBieSBkZWZhdWx0KSAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hSZXN1bHRzV2luZG93Ij4KLTxpZnJhbWUgc3JjPSJqYXZhc2NyaXB0OnZvaWQoMCkiIGZyYW1lYm9yZGVyPSIwIiAKLSAgICAgICAgbmFtZT0iTVNlYXJjaFJlc3VsdHMiIGlkPSJNU2VhcmNoUmVzdWx0cyI+Ci08L2lmcmFtZT4KLTwvZGl2PgotCi08ZGl2IGNsYXNzPSJoZWFkZXIiPgotICA8ZGl2IGNsYXNzPSJoZWFkZXJ0aXRsZSI+Ci08ZGl2IGNsYXNzPSJ0aXRsZSI+TW9kdWxlczwvZGl2PiAgPC9kaXY+Ci08L2Rpdj48IS0taGVhZGVyLS0+Ci08ZGl2IGNsYXNzPSJjb250ZW50cyI+Ci08ZGl2IGNsYXNzPSJ0ZXh0YmxvY2siPkhlcmUgaXMgYSBsaXN0IG9mIGFsbCBtb2R1bGVzOjwvZGl2PjxkaXYgY2xhc3M9ImRpcmVjdG9yeSI+Ci08dGFibGUgY2xhc3M9ImRpcmVjdG9yeSI+Ci08dHIgaWQ9InJvd18wXyIgY2xhc3M9ImV2ZW4iPjx0ZCBjbGFzcz0iZW50cnkiPjxpbWcgc3JjPSJmdHYybGFzdG5vZGUucG5nIiBhbHQ9IlwiIHdpZHRoPSIxNiIgaGVpZ2h0PSIyMiIgLz48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sIiB0YXJnZXQ9Il9zZWxmIj5UdXJib0pQRUc8L2E+PC90ZD48dGQgY2xhc3M9ImRlc2MiPlR1cmJvSlBFRyBBUEk8L3RkPjwvdHI+Ci08L3RhYmxlPgotPC9kaXY+PCEtLSBkaXJlY3RvcnkgLS0+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL25hdl9mLnBuZyBiL2RvYy9odG1sL25hdl9mLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzJhNThhNS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9uYXZfZi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9uYXZfZy5wbmcgYi9kb2MvaHRtbC9uYXZfZy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwOTNhMjMuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvbmF2X2cucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvbmF2X2gucG5nIGIvZG9jL2h0bWwvbmF2X2gucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzM4OWIxLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL25hdl9oLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL29wZW4ucG5nIGIvZG9jL2h0bWwvb3Blbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZjc1YzcuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvb3Blbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzYzLmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzYzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ZjM0ZGIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82My5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYWxsXzYzLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzYzLmpzIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF82My5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IwNThkYS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzYzLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWydjdXN0b21maWx0ZXInLFsnY3VzdG9tRmlsdGVyJyxbJy4uL3N0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYTQzZWUxYmNkZDJhOGQ3MjQ5YTc1Njc3NGY3ODc5M2MxJywxLCd0anRyYW5zZm9ybSddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY0Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzY0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2MDYwMWYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82NC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYWxsXzY0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY0LmpzIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF82NC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTE5YTA1MC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWydkYXRhJyxbJ2RhdGEnLFsnLi4vc3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhNjg4ZmU4ZjFhOGVjYzEyYTUzOGQ5ZTU2MWNmMzM4ZTMnLDEsJ3RqdHJhbnNmb3JtJ11dXSwKLSAgWydkZW5vbScsWydkZW5vbScsWycuLi9zdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCNhZWZiY2RmM2U5ZTYyMjc0YjJkMzEyYzY5NWYxMzNjZTMnLDEsJ3Rqc2NhbGluZ2ZhY3RvciddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY4Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzY4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlYzQxZDYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82OC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYWxsXzY4LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY4LmpzIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF82OC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IxN2U5Ny4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzY4LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWydoJyxbJ2gnLFsnLi4vc3RydWN0dGpyZWdpb24uaHRtbCNhZWNlZmM0NWEyNmY0ZDhiNjBkZDRkODI1YzE3MTAxMTUnLDEsJ3RqcmVnaW9uJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNmUuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNmUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTBmZDc2NS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzZlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhbGxfNmUuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNmUuanMgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzZlLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4M2ZhYTEzLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNmUuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ251bScsWydudW0nLFsnLi4vc3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwjYTliMDExZTU3Zjk4MWVlMjMwODNlMmMxYWE1ZTY0MGVjJywxLCd0anNjYWxpbmdmYWN0b3InXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82Zi5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF82Zi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTg2YjAzLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNmYuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFsbF82Zi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82Zi5qcyBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNmYuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjY2E4MzIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF82Zi5qcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsnb3AnLFsnb3AnLFsnLi4vc3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgnLDEsJ3RqdHJhbnNmb3JtJ11dXSwKLSAgWydvcHRpb25zJyxbJ29wdGlvbnMnLFsnLi4vc3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhYzBlNzQ2NTViYWE0NDAyMjA5YTIxZTFhZTQ4MWM4ZjYnLDEsJ3RqdHJhbnNmb3JtJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzIuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNzIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzQ3YjlmNi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzcyLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhbGxfNzIuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzIuanMgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzcyLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMWNkZTM1Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzIuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ3InLFsncicsWycuLi9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2FjMzI0ZTVlNDQyYWJlYzhhOTYxZTViZjIxOWRiMTJjZicsMSwndGp0cmFuc2Zvcm0nXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83NC5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF83NC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNjQ2YWVmLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFsbF83NC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83NC5qcyBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNzQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NGFhZWYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83NC5qcworKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ3RqXzVmbnVtY3MnLFsnVEpfTlVNQ1MnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzOWY1N2E2ZmIwMmQ5Y2YzMmU3YjY4OTAwOTliNWE3MScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqXzVmbnVtcGYnLFsnVEpfTlVNUEYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MDEwYTQ0MDJmNTRhNDViYTgyMmFkODY3NWE0NjU1ZScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqXzVmbnVtc2FtcCcsWydUSl9OVU1TQU1QJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNWVmM2QxNjkxNjJjZTc3Y2UzNDhlMjkyYTBiNzQ3N2MnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0al81Zm51bXhvcCcsWydUSl9OVU1YT1AnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EwZjZkYmQxOGFkZjM4YjdkNDZhYzU0N2YwZjRkNTYyYycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqYWxsb2MnLFsndGpBbGxvYycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTVjOTIzNGJkYTZkOTkzY2RhZmZkZDg5YmY4MWEwMGZmJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpibHVlb2Zmc2V0JyxbJ3RqQmx1ZU9mZnNldCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg0ZTJlMzVkM2YwODAyNWY5NzZlYzFlYzUzNjkzZGVhJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpidWZzaXplJyxbJ3RqQnVmU2l6ZScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWNjYzViY2E3ZjEyZmNkY2MzMDJlNmUxYzZkNGIzMTFiJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpidWZzaXpleXV2MicsWyd0akJ1ZlNpemVZVVYyJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjQ1MTY2NGE2MmMxZjZjN2NjNWE2NDAxZjMyOTA4YzknLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amNvbXByZXNzMicsWyd0akNvbXByZXNzMicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWYzOGYyZWQ0NGJkYzg4ZTczMGUwOGI2MzJmYTZlODhlJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpjb21wcmVzc2Zyb215dXYnLFsndGpDb21wcmVzc0Zyb21ZVVYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2ZjZkZTM3NWQ2ZWMwMDIwZmFiYTYyN2UzN2U1YTA2MCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY29tcHJlc3Nmcm9teXV2cGxhbmVzJyxbJ3RqQ29tcHJlc3NGcm9tWVVWUGxhbmVzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGI4NGM2ODJkOGFjY2YwOTdkN2E3NDNjOTY1ZDM0NjQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amNzJyxbJ1RKQ1MnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY3NfNWZjbXlrJyxbJ1RKQ1NfQ01ZSycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE2YzhiNjM2MTUyYWM4MTk1Yjg2OTU4N2RiMzE1ZWU1MycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY3NfNWZncmF5JyxbJ1RKQ1NfR1JBWScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGFiM2U3ZDZhODdmNjk1ZTQ1YjgxYzFiNTI2MmI1YTUwYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY3NfNWZyZ2InLFsnVEpDU19SR0InLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjBhNjc3Y2I3Y2NiODVjNDAzOGFjNDE5NjRhMmUwOWU1NTUnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amNzXzVmeWNiY3InLFsnVEpDU19ZQ2JDcicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE3Mzg5YjhmNjViYjM4N2ZmZWRjZTNlZmQwZDc4ZWM3NScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY3NfNWZ5Y2NrJyxbJ1RKQ1NfWUNDSycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE1MzgzOWUwZmU4NjdiNzZiNThkMTZiMGExYTdjNTk4ZScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVjb2RleXV2JyxbJ3RqRGVjb2RlWVVWJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMDc3YzYxMDI3Yjg3NWFmZWNkNWExNjEzYmYxOGIzYzEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amRlY29kZXl1dnBsYW5lcycsWyd0akRlY29kZVlVVlBsYW5lcycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWY0MmYxOWI3YTQ5NmViMThiZGM4NGZlNjFlZTZkM2UyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpkZWNvbXByZXNzMicsWyd0akRlY29tcHJlc3MyJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDgwMjZhNDE3ZTE2YTc2MzEzYmMwYTZjOWU4YjJiYTInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amRlY29tcHJlc3NoZWFkZXIzJyxbJ3RqRGVjb21wcmVzc0hlYWRlcjMnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzZmNlZDQ1NWU1MDRlOGZmNGZiYWQyOGJhOTRhMzAyMCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVjb21wcmVzc3RveXV2MicsWyd0akRlY29tcHJlc3NUb1lVVjInLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzOWUwODkwNjUyOGRiNWE3NjQ2NzBlYTQ4ZDM0NGIwOScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVjb21wcmVzc3RveXV2cGxhbmVzJyxbJ3RqRGVjb21wcmVzc1RvWVVWUGxhbmVzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMzhkMGVmOTA2OTI2NjNiM2ZmYjViMTZkYTI1NDE1MTInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amRlc3Ryb3knLFsndGpEZXN0cm95JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNjc0YWRlZTkxN2I5NWFkNGE4OTZmMWJhMzllMTI1NDAnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amVuY29kZXl1djMnLFsndGpFbmNvZGVZVVYzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYWJlMDVhY2Q3MzQ5OTAwNTNhZDEyOTRiNWVmMjM5YWEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amVuY29kZXl1dnBsYW5lcycsWyd0akVuY29kZVlVVlBsYW5lcycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYThhNjVlZDNiZDEyZGY1N2MyMTlkNDZhZmJjOTAwOGYxJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpmbGFnXzVmYWNjdXJhdGVkY3QnLFsnVEpGTEFHX0FDQ1VSQVRFRENUJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhY2IyMzNjZmQ3MjJkNjZkMWNjYmY0OGE3ZGU4MWYwZTAnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amZsYWdfNWZib3R0b211cCcsWydUSkZMQUdfQk9UVE9NVVAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3MmVjZjRlYmU2ZWI3MDJkM2M2ZjVjYTI3NDU1ZTFlYycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZmxhZ181ZmZhc3RkY3QnLFsnVEpGTEFHX0ZBU1REQ1QnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FhYmNlMjM1ZGI4MGQzZjY5OGIyN2YzNmNiZDQ1M2RhMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZmxhZ181ZmZhc3R1cHNhbXBsZScsWydUSkZMQUdfRkFTVFVQU0FNUExFJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNGVlNDUwNmM4MTE3N2EwNmY3N2UyNTA0YTIyZWZkMmQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amZsYWdfNWZub3JlYWxsb2MnLFsnVEpGTEFHX05PUkVBTExPQycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTg4MDhkNDAzYzY4YjYyYWFhNThhNGMxZTU4ZTk4OTYzJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpmcmVlJyxbJ3RqRnJlZScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYThjNGExMjMxZGMwNmE0NTA1MTRjODM1ZjY0NzFmMTM3JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpnZXRlcnJvcnN0cicsWyd0akdldEVycm9yU3RyJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWFmNzljOTA4ZWMxMzFiMWFlOGQ1MmZlNDAzNzVhYmYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amdldHNjYWxpbmdmYWN0b3JzJyxbJ3RqR2V0U2NhbGluZ0ZhY3RvcnMnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2NDQ5MDQ0YjlhZjQwMjk5OWNjZjUyZjQwMTMzM2JlOCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZ3JlZW5vZmZzZXQnLFsndGpHcmVlbk9mZnNldCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTgyZDZlMzVkYTQ0MTExMmE0MTFkYTQxOTIzYzBiYTJmJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpoYW5kbGUnLFsndGpoYW5kbGUnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqaW5pdGNvbXByZXNzJyxbJ3RqSW5pdENvbXByZXNzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhM2QxMGM0N2ZiZTRhMjQ4OWEyYjMwYzkzMTU1MWQwMWEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amluaXRkZWNvbXByZXNzJyxbJ3RqSW5pdERlY29tcHJlc3MnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FlNTQwODE3OWQwNDFlMmEyZjcxOTljODI4M2NmNjQ5ZScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqaW5pdHRyYW5zZm9ybScsWyd0akluaXRUcmFuc2Zvcm0nLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzMTU1Yjc3NWJmYmFjOWRiYmE4NjliOTVhMDM2NzkwMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqbWN1aGVpZ2h0JyxbJ3RqTUNVSGVpZ2h0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYmQyNDdiYjlmZWNiMzkzZWNhNTczNjZmZWI4MzI3YmYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0am1jdXdpZHRoJyxbJ3RqTUNVV2lkdGgnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5ZTYxZTdjZDQ3YTE1YTE3MzI4M2JhOTRlNzgxMzA4YycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGFkJyxbJ1RKUEFEJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMGFiYTk1NTQ3MzMxNWU0MDUyOTVkOTc4ZjBjMTY1MTEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmJyxbJ1RKUEYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZhYmdyJyxbJ1RKUEZfQUJHUicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWExYmExYTdmMTYzMWRiZWFhNDlhMGE4NWZjNGE0MDA4MScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZhcmdiJyxbJ1RKUEZfQVJHQicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFlOGY4NDZlZDlkOWRlOTliNmUxZGZlNDQ4ODQ4NzY1YycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZiZ3InLFsnVEpQRl9CR1InLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhYjEwNjI0NDM3ZmI4ZWY0OTVhMGIxNTNlNjU3NDk4MzknLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmYmdyYScsWydUSlBGX0JHUkEnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhYzAzN2ZmMTg0NWNmOWI3NGJiODFhMzY1OWMyYjlmYjQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmYmdyeCcsWydUSlBGX0JHUlgnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhMmExZmJmNTY5Y2E3OTg5N2VhZTg4NmUzMzc2Y2E0YzgnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmY215aycsWydUSlBGX0NNWUsnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhN2Y1MTAwZWM0NGM5MTk5NGUyNDNmMWNmNTU1NTNmOGInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmZ3JheScsWydUSlBGX0dSQVknLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhNTQzMWI1NGIwMTUzMzc3MDVmMTMxMTgwNzM3MTFhMWEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmcmdiJyxbJ1RKUEZfUkdCJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTdjZTkzMjMwYmZmNDQ5NTE4Y2UzODdjMTdlNmVkMzdjJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZnJnYmEnLFsnVEpQRl9SR0JBJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTg4ZDJlODhmYWI2N2Y2NTAzY2Y5NzJlMTQ4NTFjYzEyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZnJnYngnLFsnVEpQRl9SR0JYJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTgzOTczYmViYjdlMmRjNmZhOGJhZTg5ZmYzZjQyZTAxJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZnhiZ3InLFsnVEpQRl9YQkdSJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYWY2NjAzYjI3MTQ3ZGU0N2UyMTJlNzVkYWMwMjdiMmFmJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZnhyZ2InLFsnVEpQRl9YUkdCJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYWRhZTk5NjkwNWVmY2ZhM2I0MmEwYmIzYmVhN2Y5ZDg0JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwaXhlbHNpemUnLFsndGpQaXhlbFNpemUnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkNzdjZjhmZTViMmJmZDNjYjNmNTMwOTgxNDZhYmI0YycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGxhbmVoZWlnaHQnLFsndGpQbGFuZUhlaWdodCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTFhMjA5Njk2YzZhODA3NDhmMjBlMTM0YjNjNjQ3ODlmJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwbGFuZXNpemV5dXYnLFsndGpQbGFuZVNpemVZVVYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2Zjk4ZDk3N2JmYTlkMTY3Yzk3MTcyZTg3NmJhNjFlMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGxhbmV3aWR0aCcsWyd0alBsYW5lV2lkdGgnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2M2ZiNjZiYjFlMzZjNzQwMDhjNDYzNDM2MGJlY2JiMScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcmVkb2Zmc2V0JyxbJ3RqUmVkT2Zmc2V0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZGQ5YjQ0Njc0MmFjOGEzOTIzZjc5OTJjNzk4OGZlYTgnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anJlZ2lvbicsWyd0anJlZ2lvbicsWycuLi9zdHJ1Y3R0anJlZ2lvbi5odG1sJywxLCcnXV1dLAotICBbJ3Rqc2FtcCcsWydUSlNBTVAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2FtcF81ZjQxMScsWydUSlNBTVBfNDExJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YTI4ZWM2MjU3NWU1ZWEyOTVjM2ZkZTMwMDFkYzYyOGUyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpzYW1wXzVmNDIwJyxbJ1RKU0FNUF80MjAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzRhNjMwODVkYmY2ODNjZmUzOWU1MTNjZGI2MzQzZTM3MzcnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anNhbXBfNWY0MjInLFsnVEpTQU1QXzQyMicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGExMzYxMzA5MDJjYzU3OGYxMWYzMjQyOWI1OTM2ODQwNCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2FtcF81ZjQ0MCcsWydUSlNBTVBfNDQwJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YWNjZjc0MGU2ZjNhYTZiYTIwYmE5MjJjYWQxM2NiOTc0JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpzYW1wXzVmNDQ0JyxbJ1RKU0FNUF80NDQnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzRhZmI4ZGE0ZjQ0MTk3ODM3YmRlYzBhNGY1OTNkYWNhZTMnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anNhbXBfNWZncmF5JyxbJ1RKU0FNUF9HUkFZJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YTNmMWM5NTA0ODQyZGRjN2E0OGQwZjY5MDc1NGI2MjQ4JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpzY2FsZWQnLFsnVEpTQ0FMRUQnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E4NDg3OGJiNjU0MDQyMDQ3NDNhYTE4Y2FjMDI3ODFkZicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2NhbGluZ2ZhY3RvcicsWyd0anNjYWxpbmdmYWN0b3InLFsnLi4vc3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwnLDEsJyddXV0sCi0gIFsndGp0cmFuc2Zvcm0nLFsndGp0cmFuc2Zvcm0nLFsnLi4vc3RydWN0dGp0cmFuc2Zvcm0uaHRtbCcsMSwndGp0cmFuc2Zvcm0nXSxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EnLDEsJ3RqVHJhbnNmb3JtKHRqaGFuZGxlIGhhbmRsZSwgY29uc3QgdW5zaWduZWQgY2hhciAqanBlZ0J1ZiwgdW5zaWduZWQgbG9uZyBqcGVnU2l6ZSwgaW50IG4sIHVuc2lnbmVkIGNoYXIgKipkc3RCdWZzLCB1bnNpZ25lZCBsb25nICpkc3RTaXplcywgdGp0cmFuc2Zvcm0gKnRyYW5zZm9ybXMsIGludCBmbGFncyk6JiMxNjA7dHVyYm9qcGVnLmgnXSxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYTI5ZjMxODljNDFiZTEyZWM1ZGVlN2NhZWMzMThhMzEnLDEsJ3RqdHJhbnNmb3JtKCk6JiMxNjA7dHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wJyxbJ1RKWE9QJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZmhmbGlwJyxbJ1RKWE9QX0hGTElQJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YWEwZGY2OTc3NmNhYTMwZjBmYTI4ZTI2MzMyZDMxMWNlJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3BfNWZub25lJyxbJ1RKWE9QX05PTkUnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhYWQ4OGMwMzY2Y2QzZjdkMGVhYzlkN2EzZmExYzJjMjcnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnJvdDE4MCcsWydUSlhPUF9ST1QxODAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMTQwOTUyZWI4ZGQwMzAwYWNjZmNjMjI3MjZkNjk2OTInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnJvdDI3MCcsWydUSlhPUF9ST1QyNzAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzA2NGVlNWRmYjdmMDMyZGYzMzI4MTg1ODc1NjdhMDgnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnJvdDkwJyxbJ1RKWE9QX1JPVDkwJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTQzYjJiYmIyM2JjNGJkNTQ4NDIyZDQzZmJlOWFmMTI4JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3BfNWZ0cmFuc3Bvc2UnLFsnVEpYT1BfVFJBTlNQT1NFJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTMxMDYwYWVkMTk5Zjg4NmFmZGQ0MTdmODA0OTljMzJkJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3BfNWZ0cmFuc3ZlcnNlJyxbJ1RKWE9QX1RSQU5TVkVSU0UnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhZjNiMTRkNDg4YWVhNmVjZTllNWIzZGY3M2E3NGQ2YTQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnZmbGlwJyxbJ1RKWE9QX1ZGTElQJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2YTMyNGVkZGZiZWM1M2I3ZTY5MWY2MWU1NjkyOWQwZDVkJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3B0XzVmY3JvcCcsWydUSlhPUFRfQ1JPUCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTljNzcxYTc1N2ZjMTI5NGFkZDYxMTkwNmI4OWFiMmQyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3B0XzVmZ3JheScsWydUSlhPUFRfR1JBWScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTNhY2VlN2I0OGFkZTFiOTllNTU4ODczNjAwN2MyNTg5JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp4b3B0XzVmbm9vdXRwdXQnLFsnVEpYT1BUX05PT1VUUFVUJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZmJmOTkyYmJmNmUwMDY3MDU4ODYzMzM3MDNmZmFiMzEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcHRfNWZwZXJmZWN0JyxbJ1RKWE9QVF9QRVJGRUNUJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNTBlMDNjYjVlZDExNTMzMGUyMTI0MTc0Mjk2MDBiMDAnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcHRfNWZ0cmltJyxbJ1RKWE9QVF9UUklNJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMzE5ODI2YjdlYjE1ODNjMDU5NWJiZTdiOTU0Mjg3MDknLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0dXJib2pwZWcnLFsnVHVyYm9KUEVHJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sJywxLCcnXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83Ny5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF83Ny5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NWQ3MTQyLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzcuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImFsbF83Ny5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83Ny5qcyBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNzcuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyNjcwMDIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83Ny5qcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsndycsWyd3JyxbJy4uL3N0cnVjdHRqcmVnaW9uLmh0bWwjYWI2ZWI3M2NlZWY1ODRmYzIzYzhjODA5NzkyNmRjZTQyJywxLCd0anJlZ2lvbiddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzc4Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzc4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MDc1ZDQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2FsbF83OC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iYWxsXzc4LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzc4LmpzIGIvZG9jL2h0bWwvc2VhcmNoL2FsbF83OC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFhMjdmMi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzc4LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWyd4JyxbJ3gnLFsnLi4vc3RydWN0dGpyZWdpb24uaHRtbCNhNGI2YTM3YTkzOTk3MDkxYjI2YTc1ODMxZmEyOTFhZDknLDEsJ3RqcmVnaW9uJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzkuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC9hbGxfNzkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDMzNzE5YS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvYWxsXzc5Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJhbGxfNzkuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzkuanMgYi9kb2MvaHRtbC9zZWFyY2gvYWxsXzc5LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Njg5MGE2Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9hbGxfNzkuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ3knLFsneScsWycuLi9zdHJ1Y3R0anJlZ2lvbi5odG1sI2E3YjNlMGMyNGNmZTg3YWNjODBlMzM0Y2FmZGNmMjJjMicsMSwndGpyZWdpb24nXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2NsYXNzZXNfNzQuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC9jbGFzc2VzXzc0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiMGZkYWEuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2NsYXNzZXNfNzQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImNsYXNzZXNfNzQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9jbGFzc2VzXzc0LmpzIGIvZG9jL2h0bWwvc2VhcmNoL2NsYXNzZXNfNzQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkNjIzZDIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2NsYXNzZXNfNzQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ3RqcmVnaW9uJyxbJ3RqcmVnaW9uJyxbJy4uL3N0cnVjdHRqcmVnaW9uLmh0bWwnLDEsJyddXV0sCi0gIFsndGpzY2FsaW5nZmFjdG9yJyxbJ3Rqc2NhbGluZ2ZhY3RvcicsWycuLi9zdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCcsMSwnJ11dXSwKLSAgWyd0anRyYW5zZm9ybScsWyd0anRyYW5zZm9ybScsWycuLi9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sJywxLCcnXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2Nsb3NlLnBuZyBiL2RvYy9odG1sL3NlYXJjaC9jbG9zZS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNDJkM2QuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2Nsb3NlLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9lbnVtc183NC5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL2VudW1zXzc0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliNzU0ZWUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2VudW1zXzc0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJlbnVtc183NC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2VudW1zXzc0LmpzIGIvZG9jL2h0bWwvc2VhcmNoL2VudW1zXzc0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzZhYTI0Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9lbnVtc183NC5qcworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsndGpjcycsWydUSkNTJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNGY4M2FkMzM2OGUwZTI5ZDE5NTdiZTBlZmE3YzM3MjAnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmJyxbJ1RKUEYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2FtcCcsWydUSlNBTVAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wJyxbJ1RKWE9QJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYnLDEsJ3R1cmJvanBlZy5oJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9lbnVtdmFsdWVzXzc0Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvZW51bXZhbHVlc183NC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZDY5YTBhLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9lbnVtdmFsdWVzXzc0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJlbnVtdmFsdWVzXzc0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvZW51bXZhbHVlc183NC5qcyBiL2RvYy9odG1sL3NlYXJjaC9lbnVtdmFsdWVzXzc0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGMyZjhkLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9lbnVtdmFsdWVzXzc0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsndGpjc181ZmNteWsnLFsnVEpDU19DTVlLJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYTZjOGI2MzYxNTJhYzgxOTViODY5NTg3ZGIzMTVlZTUzJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpjc181ZmdyYXknLFsnVEpDU19HUkFZJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYWIzZTdkNmE4N2Y2OTVlNDViODFjMWI1MjYyYjVhNTBhJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpjc181ZnJnYicsWydUSkNTX1JHQicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2E0ZjgzYWQzMzY4ZTBlMjlkMTk1N2JlMGVmYTdjMzcyMGE2NzdjYjdjY2I4NWM0MDM4YWM0MTk2NGEyZTA5ZTU1NScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY3NfNWZ5Y2JjcicsWydUSkNTX1lDYkNyJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYTczODliOGY2NWJiMzg3ZmZlZGNlM2VmZDBkNzhlYzc1JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpjc181ZnljY2snLFsnVEpDU19ZQ0NLJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTRmODNhZDMzNjhlMGUyOWQxOTU3YmUwZWZhN2MzNzIwYTUzODM5ZTBmZTg2N2I3NmI1OGQxNmIwYTFhN2M1OThlJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZmFiZ3InLFsnVEpQRl9BQkdSJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYTFiYTFhN2YxNjMxZGJlYWE0OWEwYTg1ZmM0YTQwMDgxJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZmFyZ2InLFsnVEpQRl9BUkdCJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYWM5MTYxNDRlMjZjMzgxN2FjNTE0ZTY0YWU1ZDEyZTJhYWU4Zjg0NmVkOWQ5ZGU5OWI2ZTFkZmU0NDg4NDg3NjVjJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwZl81ZmJncicsWydUSlBGX0JHUicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFiMTA2MjQ0MzdmYjhlZjQ5NWEwYjE1M2U2NTc0OTgzOScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZiZ3JhJyxbJ1RKUEZfQkdSQScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWFjMDM3ZmYxODQ1Y2Y5Yjc0YmI4MWEzNjU5YzJiOWZiNCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZiZ3J4JyxbJ1RKUEZfQkdSWCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWEyYTFmYmY1NjljYTc5ODk3ZWFlODg2ZTMzNzZjYTRjOCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZjbXlrJyxbJ1RKUEZfQ01ZSycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWE3ZjUxMDBlYzQ0YzkxOTk0ZTI0M2YxY2Y1NTU1M2Y4YicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZncmF5JyxbJ1RKUEZfR1JBWScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2FjOTE2MTQ0ZTI2YzM4MTdhYzUxNGU2NGFlNWQxMmUyYWE1NDMxYjU0YjAxNTMzNzcwNWYxMzExODA3MzcxMWExYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGZfNWZyZ2InLFsnVEpQRl9SR0InLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhN2NlOTMyMzBiZmY0NDk1MThjZTM4N2MxN2U2ZWQzN2MnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmcmdiYScsWydUSlBGX1JHQkEnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhODhkMmU4OGZhYjY3ZjY1MDNjZjk3MmUxNDg1MWNjMTInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmcmdieCcsWydUSlBGX1JHQlgnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhODM5NzNiZWJiN2UyZGM2ZmE4YmFlODlmZjNmNDJlMDEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmeGJncicsWydUSlBGX1hCR1InLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhZjY2MDNiMjcxNDdkZTQ3ZTIxMmU3NWRhYzAyN2IyYWYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBmXzVmeHJnYicsWydUSlBGX1hSR0InLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhYzkxNjE0NGUyNmMzODE3YWM1MTRlNjRhZTVkMTJlMmFhZGFlOTk2OTA1ZWZjZmEzYjQyYTBiYjNiZWE3ZjlkODQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anNhbXBfNWY0MTEnLFsnVEpTQU1QXzQxMScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGEyOGVjNjI1NzVlNWVhMjk1YzNmZGUzMDAxZGM2MjhlMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2FtcF81ZjQyMCcsWydUSlNBTVBfNDIwJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YTYzMDg1ZGJmNjgzY2ZlMzllNTEzY2RiNjM0M2UzNzM3JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpzYW1wXzVmNDIyJyxbJ1RKU0FNUF80MjInLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMWQwNDcwNjBlYTgwYmI5ODIwZDU0MGJiOTI4ZTkwNzRhMTM2MTMwOTAyY2M1NzhmMTFmMzI0MjliNTkzNjg0MDQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anNhbXBfNWY0NDAnLFsnVEpTQU1QXzQ0MCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGFjY2Y3NDBlNmYzYWE2YmEyMGJhOTIyY2FkMTNjYjk3NCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3Rqc2FtcF81ZjQ0NCcsWydUSlNBTVBfNDQ0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dnYTFkMDQ3MDYwZWE4MGJiOTgyMGQ1NDBiYjkyOGU5MDc0YWZiOGRhNGY0NDE5NzgzN2JkZWMwYTRmNTkzZGFjYWUzJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpzYW1wXzVmZ3JheScsWydUSlNBTVBfR1JBWScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2ExZDA0NzA2MGVhODBiYjk4MjBkNTQwYmI5MjhlOTA3NGEzZjFjOTUwNDg0MmRkYzdhNDhkMGY2OTA3NTRiNjI0OCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wXzVmaGZsaXAnLFsnVEpYT1BfSEZMSVAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhYTBkZjY5Nzc2Y2FhMzBmMGZhMjhlMjYzMzJkMzExY2UnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81Zm5vbmUnLFsnVEpYT1BfTk9ORScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmFhZDg4YzAzNjZjZDNmN2QwZWFjOWQ3YTNmYTFjMmMyNycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wXzVmcm90MTgwJyxbJ1RKWE9QX1JPVDE4MCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmExNDA5NTJlYjhkZDAzMDBhY2NmY2MyMjcyNmQ2OTY5MicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wXzVmcm90MjcwJyxbJ1RKWE9QX1JPVDI3MCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmEzMDY0ZWU1ZGZiN2YwMzJkZjMzMjgxODU4NzU2N2EwOCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wXzVmcm90OTAnLFsnVEpYT1BfUk9UOTAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhNDNiMmJiYjIzYmM0YmQ1NDg0MjJkNDNmYmU5YWYxMjgnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnRyYW5zcG9zZScsWydUSlhPUF9UUkFOU1BPU0UnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzEwNjBhZWQxOTlmODg2YWZkZDQxN2Y4MDQ5OWMzMmQnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anhvcF81ZnRyYW5zdmVyc2UnLFsnVEpYT1BfVFJBTlNWRVJTRScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnZ2EyZGU1MzFhZjRlN2U2YzRmMTI0OTA4Mzc2YjM1NDg2NmFmM2IxNGQ0ODhhZWE2ZWNlOWU1YjNkZjczYTc0ZDZhNCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqeG9wXzVmdmZsaXAnLFsnVEpYT1BfVkZMSVAnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjZhMzI0ZWRkZmJlYzUzYjdlNjkxZjYxZTU2OTI5ZDBkNWQnLDEsJ3R1cmJvanBlZy5oJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9mdW5jdGlvbnNfNzQuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC9mdW5jdGlvbnNfNzQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYwNTkwMS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvZnVuY3Rpb25zXzc0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJmdW5jdGlvbnNfNzQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9mdW5jdGlvbnNfNzQuanMgYi9kb2MvaHRtbC9zZWFyY2gvZnVuY3Rpb25zXzc0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2OTQxMGIwLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9mdW5jdGlvbnNfNzQuanMKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWyd0amFsbG9jJyxbJ3RqQWxsb2MnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E1YzkyMzRiZGE2ZDk5M2NkYWZmZGQ4OWJmODFhMDBmZicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqYnVmc2l6ZScsWyd0akJ1ZlNpemUnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FjY2M1YmNhN2YxMmZjZGNjMzAyZTZlMWM2ZDRiMzExYicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqYnVmc2l6ZXl1djInLFsndGpCdWZTaXplWVVWMicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWY0NTE2NjRhNjJjMWY2YzdjYzVhNjQwMWYzMjkwOGM5JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpjb21wcmVzczInLFsndGpDb21wcmVzczInLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FmMzhmMmVkNDRiZGM4OGU3MzBlMDhiNjMyZmE2ZTg4ZScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqY29tcHJlc3Nmcm9teXV2JyxbJ3RqQ29tcHJlc3NGcm9tWVVWJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhNmY2ZGUzNzVkNmVjMDAyMGZhYmE2MjdlMzdlNWEwNjAnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amNvbXByZXNzZnJvbXl1dnBsYW5lcycsWyd0akNvbXByZXNzRnJvbVlVVlBsYW5lcycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTBiODRjNjgyZDhhY2NmMDk3ZDdhNzQzYzk2NWQzNDY0JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpkZWNvZGV5dXYnLFsndGpEZWNvZGVZVVYnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EwNzdjNjEwMjdiODc1YWZlY2Q1YTE2MTNiZjE4YjNjMScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVjb2RleXV2cGxhbmVzJyxbJ3RqRGVjb2RlWVVWUGxhbmVzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZjQyZjE5YjdhNDk2ZWIxOGJkYzg0ZmU2MWVlNmQzZTInLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amRlY29tcHJlc3MyJyxbJ3RqRGVjb21wcmVzczInLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkODAyNmE0MTdlMTZhNzYzMTNiYzBhNmM5ZThiMmJhMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVjb21wcmVzc2hlYWRlcjMnLFsndGpEZWNvbXByZXNzSGVhZGVyMycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTNmY2VkNDU1ZTUwNGU4ZmY0ZmJhZDI4YmE5NGEzMDIwJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpkZWNvbXByZXNzdG95dXYyJyxbJ3RqRGVjb21wcmVzc1RvWVVWMicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTM5ZTA4OTA2NTI4ZGI1YTc2NDY3MGVhNDhkMzQ0YjA5JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpkZWNvbXByZXNzdG95dXZwbGFuZXMnLFsndGpEZWNvbXByZXNzVG9ZVVZQbGFuZXMnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzOGQwZWY5MDY5MjY2M2IzZmZiNWIxNmRhMjU0MTUxMicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZGVzdHJveScsWyd0akRlc3Ryb3knLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E2NzRhZGVlOTE3Yjk1YWQ0YTg5NmYxYmEzOWUxMjU0MCcsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZW5jb2RleXV2MycsWyd0akVuY29kZVlVVjMnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FhYmUwNWFjZDczNDk5MDA1M2FkMTI5NGI1ZWYyMzlhYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZW5jb2RleXV2cGxhbmVzJyxbJ3RqRW5jb2RlWVVWUGxhbmVzJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOGE2NWVkM2JkMTJkZjU3YzIxOWQ0NmFmYmM5MDA4ZjEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amZyZWUnLFsndGpGcmVlJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOGM0YTEyMzFkYzA2YTQ1MDUxNGM4MzVmNjQ3MWYxMzcnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amdldGVycm9yc3RyJyxbJ3RqR2V0RXJyb3JTdHInLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5YWY3OWM5MDhlYzEzMWIxYWU4ZDUyZmU0MDM3NWFiZicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqZ2V0c2NhbGluZ2ZhY3RvcnMnLFsndGpHZXRTY2FsaW5nRmFjdG9ycycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTY0NDkwNDRiOWFmNDAyOTk5Y2NmNTJmNDAxMzMzYmU4JywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGppbml0Y29tcHJlc3MnLFsndGpJbml0Q29tcHJlc3MnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2EzZDEwYzQ3ZmJlNGEyNDg5YTJiMzBjOTMxNTUxZDAxYScsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqaW5pdGRlY29tcHJlc3MnLFsndGpJbml0RGVjb21wcmVzcycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWU1NDA4MTc5ZDA0MWUyYTJmNzE5OWM4MjgzY2Y2NDllJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGppbml0dHJhbnNmb3JtJyxbJ3RqSW5pdFRyYW5zZm9ybScsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTMxNTViNzc1YmZiYWM5ZGJiYTg2OWI5NWEwMzY3OTAyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwbGFuZWhlaWdodCcsWyd0alBsYW5lSGVpZ2h0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMWEyMDk2OTZjNmE4MDc0OGYyMGUxMzRiM2M2NDc4OWYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anBsYW5lc2l6ZXl1dicsWyd0alBsYW5lU2l6ZVlVVicsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTZmOThkOTc3YmZhOWQxNjdjOTcxNzJlODc2YmE2MWUyJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGpwbGFuZXdpZHRoJyxbJ3RqUGxhbmVXaWR0aCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTYzZmI2NmJiMWUzNmM3NDAwOGM0NjM0MzYwYmVjYmIxJywxLCd0dXJib2pwZWcuaCddXV0sCi0gIFsndGp0cmFuc2Zvcm0nLFsndGpUcmFuc2Zvcm0nLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2FkMDJjZDQyYjY5ZjE5M2EwNjIzYTljODAxNzg4ZGYzYScsMSwndHVyYm9qcGVnLmgnXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2dyb3Vwc183NC5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL2dyb3Vwc183NC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTY5NTYwLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9ncm91cHNfNzQuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9Imdyb3Vwc183NC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL2dyb3Vwc183NC5qcyBiL2RvYy9odG1sL3NlYXJjaC9ncm91cHNfNzQuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3ZDRmZmIuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL2dyb3Vwc183NC5qcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsndHVyYm9qcGVnJyxbJ1R1cmJvSlBFRycsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCcsMSwnJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9tYWdfc2VsLnBuZyBiL2RvYy9odG1sL3NlYXJjaC9tYWdfc2VsLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmNjA0MC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvbWFnX3NlbC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvbm9tYXRjaGVzLmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvbm9tYXRjaGVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxZGVkMjcuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL25vbWF0Y2hlcy5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoLmNzcyBiL2RvYy9odG1sL3NlYXJjaC9zZWFyY2guY3NzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YjIwOGVkLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9zZWFyY2guY3NzCisrKyAvZGV2L251bGwKQEAgLTEsMjcxICswLDAgQEAKLS8qLS0tLS0tLS0tLS0tLS0tLSBTZWFyY2ggQm94ICovCi0KLSNGU2VhcmNoQm94IHsKLSAgICBmbG9hdDogbGVmdDsKLX0KLQotI01TZWFyY2hCb3ggewotICAgIHdoaXRlLXNwYWNlIDogbm93cmFwOwotICAgIHBvc2l0aW9uOiBhYnNvbHV0ZTsKLSAgICBmbG9hdDogbm9uZTsKLSAgICBkaXNwbGF5OiBpbmxpbmU7Ci0gICAgbWFyZ2luLXRvcDogOHB4OwotICAgIHJpZ2h0OiAwcHg7Ci0gICAgd2lkdGg6IDE3MHB4OwotICAgIHotaW5kZXg6IDEwMjsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKLX0KLQotI01TZWFyY2hCb3ggLmxlZnQKLXsKLSAgICBkaXNwbGF5OmJsb2NrOwotICAgIHBvc2l0aW9uOmFic29sdXRlOwotICAgIGxlZnQ6MTBweDsKLSAgICB3aWR0aDoyMHB4OwotICAgIGhlaWdodDoxOXB4OwotICAgIGJhY2tncm91bmQ6dXJsKCdzZWFyY2hfbC5wbmcnKSBuby1yZXBlYXQ7Ci0gICAgYmFja2dyb3VuZC1wb3NpdGlvbjpyaWdodDsKLX0KLQotI01TZWFyY2hTZWxlY3QgewotICAgIGRpc3BsYXk6YmxvY2s7Ci0gICAgcG9zaXRpb246YWJzb2x1dGU7Ci0gICAgd2lkdGg6MjBweDsKLSAgICBoZWlnaHQ6MTlweDsKLX0KLQotLmxlZnQgI01TZWFyY2hTZWxlY3QgewotICAgIGxlZnQ6NHB4OwotfQotCi0ucmlnaHQgI01TZWFyY2hTZWxlY3QgewotICAgIHJpZ2h0OjVweDsKLX0KLQotI01TZWFyY2hGaWVsZCB7Ci0gICAgZGlzcGxheTpibG9jazsKLSAgICBwb3NpdGlvbjphYnNvbHV0ZTsKLSAgICBoZWlnaHQ6MTlweDsKLSAgICBiYWNrZ3JvdW5kOnVybCgnc2VhcmNoX20ucG5nJykgcmVwZWF0LXg7Ci0gICAgYm9yZGVyOm5vbmU7Ci0gICAgd2lkdGg6MTE2cHg7Ci0gICAgbWFyZ2luLWxlZnQ6MjBweDsKLSAgICBwYWRkaW5nLWxlZnQ6NHB4OwotICAgIGNvbG9yOiAjOTA5MDkwOwotICAgIG91dGxpbmU6IG5vbmU7Ci0gICAgZm9udDogOXB0IEFyaWFsLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwotfQotCi0jRlNlYXJjaEJveCAjTVNlYXJjaEZpZWxkIHsKLSAgICBtYXJnaW4tbGVmdDoxNXB4OwotfQotCi0jTVNlYXJjaEJveCAucmlnaHQgewotICAgIGRpc3BsYXk6YmxvY2s7Ci0gICAgcG9zaXRpb246YWJzb2x1dGU7Ci0gICAgcmlnaHQ6MTBweDsKLSAgICB0b3A6MHB4OwotICAgIHdpZHRoOjIwcHg7Ci0gICAgaGVpZ2h0OjE5cHg7Ci0gICAgYmFja2dyb3VuZDp1cmwoJ3NlYXJjaF9yLnBuZycpIG5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOmxlZnQ7Ci19Ci0KLSNNU2VhcmNoQ2xvc2UgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIHRvcDogNHB4OwotICAgIGJhY2tncm91bmQgOiBub25lOwotICAgIGJvcmRlcjogbm9uZTsKLSAgICBtYXJnaW46IDBweCA0cHggMHB4IDBweDsKLSAgICBwYWRkaW5nOiAwcHggMHB4OwotICAgIG91dGxpbmU6IG5vbmU7Ci19Ci0KLS5sZWZ0ICNNU2VhcmNoQ2xvc2UgewotICAgIGxlZnQ6IDZweDsKLX0KLQotLnJpZ2h0ICNNU2VhcmNoQ2xvc2UgewotICAgIHJpZ2h0OiAycHg7Ci19Ci0KLS5NU2VhcmNoQm94QWN0aXZlICNNU2VhcmNoRmllbGQgewotICAgIGNvbG9yOiAjMDAwMDAwOwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0gU2VhcmNoIGZpbHRlciBzZWxlY3Rpb24gKi8KLQotI01TZWFyY2hTZWxlY3RXaW5kb3cgewotICAgIGRpc3BsYXk6IG5vbmU7Ci0gICAgcG9zaXRpb246IGFic29sdXRlOwotICAgIGxlZnQ6IDA7IHRvcDogMDsKLSAgICBib3JkZXI6IDFweCBzb2xpZCAjOTBBNUNFOwotICAgIGJhY2tncm91bmQtY29sb3I6ICNGOUZBRkM7Ci0gICAgei1pbmRleDogMTsKLSAgICBwYWRkaW5nLXRvcDogNHB4OwotICAgIHBhZGRpbmctYm90dG9tOiA0cHg7Ci0gICAgLW1vei1ib3JkZXItcmFkaXVzOiA0cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLWxlZnQtcmFkaXVzOiA0cHg7Ci0gICAgLXdlYmtpdC1ib3JkZXItdG9wLXJpZ2h0LXJhZGl1czogNHB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1sZWZ0LXJhZGl1czogNHB4OwotICAgIC13ZWJraXQtYm9yZGVyLWJvdHRvbS1yaWdodC1yYWRpdXM6IDRweDsKLSAgICAtd2Via2l0LWJveC1zaGFkb3c6IDVweCA1cHggNXB4IHJnYmEoMCwgMCwgMCwgMC4xNSk7Ci19Ci0KLS5TZWxlY3RJdGVtIHsKLSAgICBmb250OiA4cHQgQXJpYWwsIFZlcmRhbmEsIHNhbnMtc2VyaWY7Ci0gICAgcGFkZGluZy1sZWZ0OiAgMnB4OwotICAgIHBhZGRpbmctcmlnaHQ6IDEycHg7Ci0gICAgYm9yZGVyOiAwcHg7Ci19Ci0KLXNwYW4uU2VsZWN0aW9uTWFyayB7Ci0gICAgbWFyZ2luLXJpZ2h0OiA0cHg7Ci0gICAgZm9udC1mYW1pbHk6IG1vbm9zcGFjZTsKLSAgICBvdXRsaW5lLXN0eWxlOiBub25lOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLX0KLQotYS5TZWxlY3RJdGVtIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBvdXRsaW5lLXN0eWxlOiBub25lOwotICAgIGNvbG9yOiAjMDAwMDAwOyAKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgcGFkZGluZy1sZWZ0OiAgIDZweDsKLSAgICBwYWRkaW5nLXJpZ2h0OiAxMnB4OwotfQotCi1hLlNlbGVjdEl0ZW06Zm9jdXMsCi1hLlNlbGVjdEl0ZW06YWN0aXZlIHsKLSAgICBjb2xvcjogIzAwMDAwMDsgCi0gICAgb3V0bGluZS1zdHlsZTogbm9uZTsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLWEuU2VsZWN0SXRlbTpob3ZlciB7Ci0gICAgY29sb3I6ICNGRkZGRkY7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogIzNENTc4QzsKLSAgICBvdXRsaW5lLXN0eWxlOiBub25lOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBjdXJzb3I6IHBvaW50ZXI7Ci0gICAgZGlzcGxheTogYmxvY2s7Ci19Ci0KLS8qLS0tLS0tLS0tLS0tLS0tLSBTZWFyY2ggcmVzdWx0cyB3aW5kb3cgKi8KLQotaWZyYW1lI01TZWFyY2hSZXN1bHRzIHsKLSAgICB3aWR0aDogNjBleDsKLSAgICBoZWlnaHQ6IDE1ZW07Ci19Ci0KLSNNU2VhcmNoUmVzdWx0c1dpbmRvdyB7Ci0gICAgZGlzcGxheTogbm9uZTsKLSAgICBwb3NpdGlvbjogYWJzb2x1dGU7Ci0gICAgbGVmdDogMDsgdG9wOiAwOwotICAgIGJvcmRlcjogMXB4IHNvbGlkICMwMDA7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRjFGNzsKLX0KLQotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotCi0jU1JJbmRleCB7Ci0gICAgY2xlYXI6Ym90aDsgCi0gICAgcGFkZGluZy1ib3R0b206IDE1cHg7Ci19Ci0KLS5TUkVudHJ5IHsKLSAgICBmb250LXNpemU6IDEwcHQ7Ci0gICAgcGFkZGluZy1sZWZ0OiAxZXg7Ci19Ci0KLS5TUlBhZ2UgLlNSRW50cnkgewotICAgIGZvbnQtc2l6ZTogOHB0OwotICAgIHBhZGRpbmc6IDFweCA1cHg7Ci19Ci0KLWJvZHkuU1JQYWdlIHsKLSAgICBtYXJnaW46IDVweCAycHg7Ci19Ci0KLS5TUkNoaWxkcmVuIHsKLSAgICBwYWRkaW5nLWxlZnQ6IDNleDsgcGFkZGluZy1ib3R0b206IC41ZW0gCi19Ci0KLS5TUlBhZ2UgLlNSQ2hpbGRyZW4gewotICAgIGRpc3BsYXk6IG5vbmU7Ci19Ci0KLS5TUlN5bWJvbCB7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7IAotICAgIGNvbG9yOiAjNDI1RTk3OwotICAgIGZvbnQtZmFtaWx5OiBBcmlhbCwgVmVyZGFuYSwgc2Fucy1zZXJpZjsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci0gICAgb3V0bGluZTogbm9uZTsKLX0KLQotYS5TUlNjb3BlIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBjb2xvcjogIzQyNUU5NzsgCi0gICAgZm9udC1mYW1pbHk6IEFyaWFsLCBWZXJkYW5hLCBzYW5zLXNlcmlmOwotICAgIHRleHQtZGVjb3JhdGlvbjogbm9uZTsKLSAgICBvdXRsaW5lOiBub25lOwotfQotCi1hLlNSU3ltYm9sOmZvY3VzLCBhLlNSU3ltYm9sOmFjdGl2ZSwKLWEuU1JTY29wZTpmb2N1cywgYS5TUlNjb3BlOmFjdGl2ZSB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiB1bmRlcmxpbmU7Ci19Ci0KLXNwYW4uU1JTY29wZSB7Ci0gICAgcGFkZGluZy1sZWZ0OiA0cHg7Ci19Ci0KLS5TUlBhZ2UgLlNSU3RhdHVzIHsKLSAgICBwYWRkaW5nOiAycHggNXB4OwotICAgIGZvbnQtc2l6ZTogOHB0OwotICAgIGZvbnQtc3R5bGU6IGl0YWxpYzsKLX0KLQotLlNSUmVzdWx0IHsKLSAgICBkaXNwbGF5OiBub25lOwotfQotCi1ESVYuc2VhcmNocmVzdWx0cyB7Ci0gICAgbWFyZ2luLWxlZnQ6IDEwcHg7Ci0gICAgbWFyZ2luLXJpZ2h0OiAxMHB4OwotfQotCi0vKi0tLS0tLS0tLS0tLS0tLS0gRXh0ZXJuYWwgc2VhcmNoIHBhZ2UgcmVzdWx0cyAqLwotCi0uc2VhcmNocmVzdWx0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiAjRjBGM0Y4OwotfQotCi0ucGFnZXMgYiB7Ci0gICBjb2xvcjogd2hpdGU7Ci0gICBwYWRkaW5nOiA1cHggNXB4IDNweCA1cHg7Ci0gICBiYWNrZ3JvdW5kLWltYWdlOiB1cmwoIi4uL3RhYl9hLnBuZyIpOwotICAgYmFja2dyb3VuZC1yZXBlYXQ6IHJlcGVhdC14OwotICAgdGV4dC1zaGFkb3c6IDAgMXB4IDFweCAjMDAwMDAwOwotfQotCi0ucGFnZXMgewotICAgIGxpbmUtaGVpZ2h0OiAxN3B4OwotICAgIG1hcmdpbi1sZWZ0OiA0cHg7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotfQotCi0uaGwgewotICAgIGZvbnQtd2VpZ2h0OiBib2xkOwotfQotCi0jc2VhcmNocmVzdWx0cyB7Ci0gICAgbWFyZ2luLWJvdHRvbTogMjBweDsKLX0KLQotLnNlYXJjaHBhZ2VzIHsKLSAgICBtYXJnaW4tdG9wOiAxMHB4OwotfQotCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoLmpzIGIvZG9jL2h0bWwvc2VhcmNoL3NlYXJjaC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA5NjcyYy4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoLmpzCisrKyAvZGV2L251bGwKQEAgLTEsODA5ICswLDAgQEAKLS8vIFNlYXJjaCBzY3JpcHQgZ2VuZXJhdGVkIGJ5IGRveHlnZW4KLS8vIENvcHlyaWdodCAoQykgMjAwOSBieSBEaW1pdHJpIHZhbiBIZWVzY2guCi0KLS8vIFRoZSBjb2RlIGluIHRoaXMgZmlsZSBpcyBsb29zbHkgYmFzZWQgb24gbWFpbi5qcywgcGFydCBvZiBOYXR1cmFsIERvY3MsCi0vLyB3aGljaCBpcyBDb3B5cmlnaHQgKEMpIDIwMDMtMjAwOCBHcmVnIFZhbHVyZQotLy8gTmF0dXJhbCBEb2NzIGlzIGxpY2Vuc2VkIHVuZGVyIHRoZSBHUEwuCi0KLXZhciBpbmRleFNlY3Rpb25zV2l0aENvbnRlbnQgPQotewotICAwOiAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMDAxMDAwMDAxMTAwMTAxMDAxMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCi0gIDE6ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKLSAgMjogIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAotICAzOiAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTEwMDAxMDAwMDAxMTAwMTAxMDAxMTEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCi0gIDQ6ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIiwKLSAgNTogIjAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMTAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAiLAotICA2OiAiMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAxMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMCIsCi0gIDc6ICIwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwIgotfTsKLQotdmFyIGluZGV4U2VjdGlvbk5hbWVzID0KLXsKLSAgMDogImFsbCIsCi0gIDE6ICJjbGFzc2VzIiwKLSAgMjogImZ1bmN0aW9ucyIsCi0gIDM6ICJ2YXJpYWJsZXMiLAotICA0OiAidHlwZWRlZnMiLAotICA1OiAiZW51bXMiLAotICA2OiAiZW51bXZhbHVlcyIsCi0gIDc6ICJncm91cHMiCi19OwotCi1mdW5jdGlvbiBjb252ZXJ0VG9JZChzZWFyY2gpCi17Ci0gIHZhciByZXN1bHQgPSAnJzsKLSAgZm9yIChpPTA7aTxzZWFyY2gubGVuZ3RoO2krKykKLSAgewotICAgIHZhciBjID0gc2VhcmNoLmNoYXJBdChpKTsKLSAgICB2YXIgY24gPSBjLmNoYXJDb2RlQXQoMCk7Ci0gICAgaWYgKGMubWF0Y2goL1thLXowLTldLykpCi0gICAgewotICAgICAgcmVzdWx0Kz1jOwotICAgIH0KLSAgICBlbHNlIGlmIChjbjwxNikgCi0gICAgewotICAgICAgcmVzdWx0Kz0iXzAiK2NuLnRvU3RyaW5nKDE2KTsKLSAgICB9Ci0gICAgZWxzZSAKLSAgICB7Ci0gICAgICByZXN1bHQrPSJfIitjbi50b1N0cmluZygxNik7Ci0gICAgfQotICB9Ci0gIHJldHVybiByZXN1bHQ7Ci19Ci0KLWZ1bmN0aW9uIGdldFhQb3MoaXRlbSkKLXsKLSAgdmFyIHggPSAwOwotICBpZiAoaXRlbS5vZmZzZXRXaWR0aCkKLSAgewotICAgIHdoaWxlIChpdGVtICYmIGl0ZW0hPWRvY3VtZW50LmJvZHkpCi0gICAgewotICAgICAgeCAgICs9IGl0ZW0ub2Zmc2V0TGVmdDsKLSAgICAgIGl0ZW0gPSBpdGVtLm9mZnNldFBhcmVudDsKLSAgICB9Ci0gIH0KLSAgcmV0dXJuIHg7Ci19Ci0KLWZ1bmN0aW9uIGdldFlQb3MoaXRlbSkKLXsKLSAgdmFyIHkgPSAwOwotICBpZiAoaXRlbS5vZmZzZXRXaWR0aCkKLSAgewotICAgICB3aGlsZSAoaXRlbSAmJiBpdGVtIT1kb2N1bWVudC5ib2R5KQotICAgICB7Ci0gICAgICAgeSAgICs9IGl0ZW0ub2Zmc2V0VG9wOwotICAgICAgIGl0ZW0gPSBpdGVtLm9mZnNldFBhcmVudDsKLSAgICAgfQotICB9Ci0gIHJldHVybiB5OwotfQotCi0vKiBBIGNsYXNzIGhhbmRsaW5nIGV2ZXJ5dGhpbmcgYXNzb2NpYXRlZCB3aXRoIHRoZSBzZWFyY2ggcGFuZWwuCi0KLSAgIFBhcmFtZXRlcnM6Ci0gICBuYW1lIC0gVGhlIG5hbWUgb2YgdGhlIGdsb2JhbCB2YXJpYWJsZSB0aGF0IHdpbGwgYmUgCi0gICAgICAgICAgc3RvcmluZyB0aGlzIGluc3RhbmNlLiAgSXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gc2V0IHRpbWVvdXRzLgotICAgcmVzdWx0UGF0aCAtIHBhdGggdG8gdXNlIGZvciBleHRlcm5hbCBmaWxlcwotKi8KLWZ1bmN0aW9uIFNlYXJjaEJveChuYW1lLCByZXN1bHRzUGF0aCwgaW5GcmFtZSwgbGFiZWwpCi17Ci0gIGlmICghbmFtZSB8fCAhcmVzdWx0c1BhdGgpIHsgIGFsZXJ0KCJNaXNzaW5nIHBhcmFtZXRlcnMgdG8gU2VhcmNoQm94LiIpOyB9Ci0gICAKLSAgLy8gLS0tLS0tLS0tLSBJbnN0YW5jZSB2YXJpYWJsZXMKLSAgdGhpcy5uYW1lICAgICAgICAgICAgICAgICAgPSBuYW1lOwotICB0aGlzLnJlc3VsdHNQYXRoICAgICAgICAgICA9IHJlc3VsdHNQYXRoOwotICB0aGlzLmtleVRpbWVvdXQgICAgICAgICAgICA9IDA7Ci0gIHRoaXMua2V5VGltZW91dExlbmd0aCAgICAgID0gNTAwOwotICB0aGlzLmNsb3NlU2VsZWN0aW9uVGltZW91dCA9IDMwMDsKLSAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgICAgICAgPSAiIjsKLSAgdGhpcy5sYXN0UmVzdWx0c1BhZ2UgICAgICAgPSAiIjsKLSAgdGhpcy5oaWRlVGltZW91dCAgICAgICAgICAgPSAwOwotICB0aGlzLnNlYXJjaEluZGV4ICAgICAgICAgICA9IDA7Ci0gIHRoaXMuc2VhcmNoQWN0aXZlICAgICAgICAgID0gZmFsc2U7Ci0gIHRoaXMuaW5zaWRlRnJhbWUgICAgICAgICAgID0gaW5GcmFtZTsKLSAgdGhpcy5zZWFyY2hMYWJlbCAgICAgICAgICAgPSBsYWJlbDsKLQotICAvLyAtLS0tLS0tLS0tLSBET00gRWxlbWVudHMKLQotICB0aGlzLkRPTVNlYXJjaEZpZWxkID0gZnVuY3Rpb24oKQotICB7ICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk1TZWFyY2hGaWVsZCIpOyAgfQotCi0gIHRoaXMuRE9NU2VhcmNoU2VsZWN0ID0gZnVuY3Rpb24oKQotICB7ICByZXR1cm4gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk1TZWFyY2hTZWxlY3QiKTsgIH0KLQotICB0aGlzLkRPTVNlYXJjaFNlbGVjdFdpbmRvdyA9IGZ1bmN0aW9uKCkKLSAgeyAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNU2VhcmNoU2VsZWN0V2luZG93Iik7ICB9Ci0KLSAgdGhpcy5ET01Qb3B1cFNlYXJjaFJlc3VsdHMgPSBmdW5jdGlvbigpCi0gIHsgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTVNlYXJjaFJlc3VsdHMiKTsgIH0KLQotICB0aGlzLkRPTVBvcHVwU2VhcmNoUmVzdWx0c1dpbmRvdyA9IGZ1bmN0aW9uKCkKLSAgeyAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNU2VhcmNoUmVzdWx0c1dpbmRvdyIpOyAgfQotCi0gIHRoaXMuRE9NU2VhcmNoQ2xvc2UgPSBmdW5jdGlvbigpCi0gIHsgIHJldHVybiBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTVNlYXJjaENsb3NlIik7IH0KLQotICB0aGlzLkRPTVNlYXJjaEJveCA9IGZ1bmN0aW9uKCkKLSAgeyAgcmV0dXJuIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNU2VhcmNoQm94Iik7ICB9Ci0KLSAgLy8gLS0tLS0tLS0tLS0tIEV2ZW50IEhhbmRsZXJzCi0KLSAgLy8gQ2FsbGVkIHdoZW4gZm9jdXMgaXMgYWRkZWQgb3IgcmVtb3ZlZCBmcm9tIHRoZSBzZWFyY2ggZmllbGQuCi0gIHRoaXMuT25TZWFyY2hGaWVsZEZvY3VzID0gZnVuY3Rpb24oaXNBY3RpdmUpCi0gIHsKLSAgICB0aGlzLkFjdGl2YXRlKGlzQWN0aXZlKTsKLSAgfQotCi0gIHRoaXMuT25TZWFyY2hTZWxlY3RTaG93ID0gZnVuY3Rpb24oKQotICB7Ci0gICAgdmFyIHNlYXJjaFNlbGVjdFdpbmRvdyA9IHRoaXMuRE9NU2VhcmNoU2VsZWN0V2luZG93KCk7Ci0gICAgdmFyIHNlYXJjaEZpZWxkICAgICAgICA9IHRoaXMuRE9NU2VhcmNoU2VsZWN0KCk7Ci0KLSAgICBpZiAodGhpcy5pbnNpZGVGcmFtZSkKLSAgICB7Ci0gICAgICB2YXIgbGVmdCA9IGdldFhQb3Moc2VhcmNoRmllbGQpOwotICAgICAgdmFyIHRvcCAgPSBnZXRZUG9zKHNlYXJjaEZpZWxkKTsKLSAgICAgIGxlZnQgKz0gc2VhcmNoRmllbGQub2Zmc2V0V2lkdGggKyA2OwotICAgICAgdG9wICs9IHNlYXJjaEZpZWxkLm9mZnNldEhlaWdodDsKLQotICAgICAgLy8gc2hvdyBzZWFyY2ggc2VsZWN0aW9uIHBvcHVwCi0gICAgICBzZWFyY2hTZWxlY3RXaW5kb3cuc3R5bGUuZGlzcGxheT0nYmxvY2snOwotICAgICAgbGVmdCAtPSBzZWFyY2hTZWxlY3RXaW5kb3cub2Zmc2V0V2lkdGg7Ci0gICAgICBzZWFyY2hTZWxlY3RXaW5kb3cuc3R5bGUubGVmdCA9ICBsZWZ0ICsgJ3B4JzsKLSAgICAgIHNlYXJjaFNlbGVjdFdpbmRvdy5zdHlsZS50b3AgID0gIHRvcCAgKyAncHgnOwotICAgIH0KLSAgICBlbHNlCi0gICAgewotICAgICAgdmFyIGxlZnQgPSBnZXRYUG9zKHNlYXJjaEZpZWxkKTsKLSAgICAgIHZhciB0b3AgID0gZ2V0WVBvcyhzZWFyY2hGaWVsZCk7Ci0gICAgICB0b3AgKz0gc2VhcmNoRmllbGQub2Zmc2V0SGVpZ2h0OwotCi0gICAgICAvLyBzaG93IHNlYXJjaCBzZWxlY3Rpb24gcG9wdXAKLSAgICAgIHNlYXJjaFNlbGVjdFdpbmRvdy5zdHlsZS5kaXNwbGF5PSdibG9jayc7Ci0gICAgICBzZWFyY2hTZWxlY3RXaW5kb3cuc3R5bGUubGVmdCA9ICBsZWZ0ICsgJ3B4JzsKLSAgICAgIHNlYXJjaFNlbGVjdFdpbmRvdy5zdHlsZS50b3AgID0gIHRvcCAgKyAncHgnOwotICAgIH0KLQotICAgIC8vIHN0b3Agc2VsZWN0aW9uIGhpZGUgdGltZXIKLSAgICBpZiAodGhpcy5oaWRlVGltZW91dCkgCi0gICAgewotICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuaGlkZVRpbWVvdXQpOwotICAgICAgdGhpcy5oaWRlVGltZW91dD0wOwotICAgIH0KLSAgICByZXR1cm4gZmFsc2U7IC8vIHRvIGF2b2lkICJpbWFnZSBkcmFnIiBkZWZhdWx0IGV2ZW50Ci0gIH0KLQotICB0aGlzLk9uU2VhcmNoU2VsZWN0SGlkZSA9IGZ1bmN0aW9uKCkKLSAgewotICAgIHRoaXMuaGlkZVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMubmFtZSArIi5DbG9zZVNlbGVjdGlvbldpbmRvdygpIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGlzLmNsb3NlU2VsZWN0aW9uVGltZW91dCk7Ci0gIH0KLQotICAvLyBDYWxsZWQgd2hlbiB0aGUgY29udGVudCBvZiB0aGUgc2VhcmNoIGZpZWxkIGlzIGNoYW5nZWQuCi0gIHRoaXMuT25TZWFyY2hGaWVsZENoYW5nZSA9IGZ1bmN0aW9uKGV2dCkKLSAgewotICAgIGlmICh0aGlzLmtleVRpbWVvdXQpIC8vIGtpbGwgcnVubmluZyB0aW1lcgotICAgIHsKLSAgICAgIGNsZWFyVGltZW91dCh0aGlzLmtleVRpbWVvdXQpOwotICAgICAgdGhpcy5rZXlUaW1lb3V0ID0gMDsKLSAgICB9Ci0KLSAgICB2YXIgZSAgPSAoZXZ0KSA/IGV2dCA6IHdpbmRvdy5ldmVudDsgLy8gZm9yIElFCi0gICAgaWYgKGUua2V5Q29kZT09NDAgfHwgZS5rZXlDb2RlPT0xMykKLSAgICB7Ci0gICAgICBpZiAoZS5zaGlmdEtleT09MSkKLSAgICAgIHsKLSAgICAgICAgdGhpcy5PblNlYXJjaFNlbGVjdFNob3coKTsKLSAgICAgICAgdmFyIHdpbj10aGlzLkRPTVNlYXJjaFNlbGVjdFdpbmRvdygpOyAKLSAgICAgICAgZm9yIChpPTA7aTx3aW4uY2hpbGROb2Rlcy5sZW5ndGg7aSsrKQotICAgICAgICB7Ci0gICAgICAgICAgdmFyIGNoaWxkID0gd2luLmNoaWxkTm9kZXNbaV07IC8vIGdldCBzcGFuIHdpdGhpbiBhCi0gICAgICAgICAgaWYgKGNoaWxkLmNsYXNzTmFtZT09J1NlbGVjdEl0ZW0nKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIGNoaWxkLmZvY3VzKCk7Ci0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHdpbmRvdy5mcmFtZXMuTVNlYXJjaFJlc3VsdHMuc2VhcmNoUmVzdWx0cykKLSAgICAgIHsKLSAgICAgICAgdmFyIGVsZW0gPSB3aW5kb3cuZnJhbWVzLk1TZWFyY2hSZXN1bHRzLnNlYXJjaFJlc3VsdHMuTmF2TmV4dCgwKTsKLSAgICAgICAgaWYgKGVsZW0pIGVsZW0uZm9jdXMoKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoZS5rZXlDb2RlPT0yNykgLy8gRXNjYXBlIG91dCBvZiB0aGUgc2VhcmNoIGZpZWxkCi0gICAgewotICAgICAgdGhpcy5ET01TZWFyY2hGaWVsZCgpLmJsdXIoKTsKLSAgICAgIHRoaXMuRE9NUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93KCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgIHRoaXMuRE9NU2VhcmNoQ2xvc2UoKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgPSAnJzsKLSAgICAgIHRoaXMuQWN0aXZhdGUoZmFsc2UpOwotICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIC8vIHN0cmlwIHdoaXRlc3BhY2VzCi0gICAgdmFyIHNlYXJjaFZhbHVlID0gdGhpcy5ET01TZWFyY2hGaWVsZCgpLnZhbHVlLnJlcGxhY2UoLyArL2csICIiKTsKLQotICAgIGlmIChzZWFyY2hWYWx1ZSAhPSB0aGlzLmxhc3RTZWFyY2hWYWx1ZSkgLy8gc2VhcmNoIHZhbHVlIGhhcyBjaGFuZ2VkCi0gICAgewotICAgICAgaWYgKHNlYXJjaFZhbHVlICE9ICIiKSAvLyBub24tZW1wdHkgc2VhcmNoCi0gICAgICB7Ci0gICAgICAgIC8vIHNldCB0aW1lciBmb3Igc2VhcmNoIHVwZGF0ZQotICAgICAgICB0aGlzLmtleVRpbWVvdXQgPSBzZXRUaW1lb3V0KHRoaXMubmFtZSArICcuU2VhcmNoKCknLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoaXMua2V5VGltZW91dExlbmd0aCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIC8vIGVtcHR5IHNlYXJjaCBmaWVsZAotICAgICAgewotICAgICAgICB0aGlzLkRPTVBvcHVwU2VhcmNoUmVzdWx0c1dpbmRvdygpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgIHRoaXMuRE9NU2VhcmNoQ2xvc2UoKS5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICB0aGlzLmxhc3RTZWFyY2hWYWx1ZSA9ICcnOwotICAgICAgfQotICAgIH0KLSAgfQotCi0gIHRoaXMuU2VsZWN0SXRlbUNvdW50ID0gZnVuY3Rpb24oaWQpCi0gIHsKLSAgICB2YXIgY291bnQ9MDsKLSAgICB2YXIgd2luPXRoaXMuRE9NU2VhcmNoU2VsZWN0V2luZG93KCk7IAotICAgIGZvciAoaT0wO2k8d2luLmNoaWxkTm9kZXMubGVuZ3RoO2krKykKLSAgICB7Ci0gICAgICB2YXIgY2hpbGQgPSB3aW4uY2hpbGROb2Rlc1tpXTsgLy8gZ2V0IHNwYW4gd2l0aGluIGEKLSAgICAgIGlmIChjaGlsZC5jbGFzc05hbWU9PSdTZWxlY3RJdGVtJykKLSAgICAgIHsKLSAgICAgICAgY291bnQrKzsKLSAgICAgIH0KLSAgICB9Ci0gICAgcmV0dXJuIGNvdW50OwotICB9Ci0KLSAgdGhpcy5TZWxlY3RJdGVtU2V0ID0gZnVuY3Rpb24oaWQpCi0gIHsKLSAgICB2YXIgaSxqPTA7Ci0gICAgdmFyIHdpbj10aGlzLkRPTVNlYXJjaFNlbGVjdFdpbmRvdygpOyAKLSAgICBmb3IgKGk9MDtpPHdpbi5jaGlsZE5vZGVzLmxlbmd0aDtpKyspCi0gICAgewotICAgICAgdmFyIGNoaWxkID0gd2luLmNoaWxkTm9kZXNbaV07IC8vIGdldCBzcGFuIHdpdGhpbiBhCi0gICAgICBpZiAoY2hpbGQuY2xhc3NOYW1lPT0nU2VsZWN0SXRlbScpCi0gICAgICB7Ci0gICAgICAgIHZhciBub2RlID0gY2hpbGQuZmlyc3RDaGlsZDsKLSAgICAgICAgaWYgKGo9PWlkKQotICAgICAgICB7Ci0gICAgICAgICAgbm9kZS5pbm5lckhUTUw9JyYjODIyNjsnOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIG5vZGUuaW5uZXJIVE1MPScmIzE2MDsnOwotICAgICAgICB9Ci0gICAgICAgIGorKzsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICAvLyBDYWxsZWQgd2hlbiBhbiBzZWFyY2ggZmlsdGVyIHNlbGVjdGlvbiBpcyBtYWRlLgotICAvLyBzZXQgaXRlbSB3aXRoIGluZGV4IGlkIGFzIHRoZSBhY3RpdmUgaXRlbQotICB0aGlzLk9uU2VsZWN0SXRlbSA9IGZ1bmN0aW9uKGlkKQotICB7Ci0gICAgdGhpcy5zZWFyY2hJbmRleCA9IGlkOwotICAgIHRoaXMuU2VsZWN0SXRlbVNldChpZCk7Ci0gICAgdmFyIHNlYXJjaFZhbHVlID0gdGhpcy5ET01TZWFyY2hGaWVsZCgpLnZhbHVlLnJlcGxhY2UoLyArL2csICIiKTsKLSAgICBpZiAoc2VhcmNoVmFsdWUhPSIiICYmIHRoaXMuc2VhcmNoQWN0aXZlKSAvLyBzb21ldGhpbmcgd2FzIGZvdW5kIC0+IGRvIGEgc2VhcmNoCi0gICAgewotICAgICAgdGhpcy5TZWFyY2goKTsKLSAgICB9Ci0gIH0KLQotICB0aGlzLk9uU2VhcmNoU2VsZWN0S2V5ID0gZnVuY3Rpb24oZXZ0KQotICB7Ci0gICAgdmFyIGUgPSAoZXZ0KSA/IGV2dCA6IHdpbmRvdy5ldmVudDsgLy8gZm9yIElFCi0gICAgaWYgKGUua2V5Q29kZT09NDAgJiYgdGhpcy5zZWFyY2hJbmRleDx0aGlzLlNlbGVjdEl0ZW1Db3VudCgpKSAvLyBEb3duCi0gICAgewotICAgICAgdGhpcy5zZWFyY2hJbmRleCsrOwotICAgICAgdGhpcy5PblNlbGVjdEl0ZW0odGhpcy5zZWFyY2hJbmRleCk7Ci0gICAgfQotICAgIGVsc2UgaWYgKGUua2V5Q29kZT09MzggJiYgdGhpcy5zZWFyY2hJbmRleD4wKSAvLyBVcAotICAgIHsKLSAgICAgIHRoaXMuc2VhcmNoSW5kZXgtLTsKLSAgICAgIHRoaXMuT25TZWxlY3RJdGVtKHRoaXMuc2VhcmNoSW5kZXgpOwotICAgIH0KLSAgICBlbHNlIGlmIChlLmtleUNvZGU9PTEzIHx8IGUua2V5Q29kZT09MjcpCi0gICAgewotICAgICAgdGhpcy5PblNlbGVjdEl0ZW0odGhpcy5zZWFyY2hJbmRleCk7Ci0gICAgICB0aGlzLkNsb3NlU2VsZWN0aW9uV2luZG93KCk7Ci0gICAgICB0aGlzLkRPTVNlYXJjaEZpZWxkKCkuZm9jdXMoKTsKLSAgICB9Ci0gICAgcmV0dXJuIGZhbHNlOwotICB9Ci0KLSAgLy8gLS0tLS0tLS0tIEFjdGlvbnMKLQotICAvLyBDbG9zZXMgdGhlIHJlc3VsdHMgd2luZG93LgotICB0aGlzLkNsb3NlUmVzdWx0c1dpbmRvdyA9IGZ1bmN0aW9uKCkKLSAgewotICAgIHRoaXMuRE9NUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93KCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICB0aGlzLkRPTVNlYXJjaENsb3NlKCkuc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICB0aGlzLkFjdGl2YXRlKGZhbHNlKTsKLSAgfQotCi0gIHRoaXMuQ2xvc2VTZWxlY3Rpb25XaW5kb3cgPSBmdW5jdGlvbigpCi0gIHsKLSAgICB0aGlzLkRPTVNlYXJjaFNlbGVjdFdpbmRvdygpLnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gIH0KLQotICAvLyBQZXJmb3JtcyBhIHNlYXJjaC4KLSAgdGhpcy5TZWFyY2ggPSBmdW5jdGlvbigpCi0gIHsKLSAgICB0aGlzLmtleVRpbWVvdXQgPSAwOwotCi0gICAgLy8gc3RyaXAgbGVhZGluZyB3aGl0ZXNwYWNlCi0gICAgdmFyIHNlYXJjaFZhbHVlID0gdGhpcy5ET01TZWFyY2hGaWVsZCgpLnZhbHVlLnJlcGxhY2UoL14gKy8sICIiKTsKLQotICAgIHZhciBjb2RlID0gc2VhcmNoVmFsdWUudG9Mb3dlckNhc2UoKS5jaGFyQ29kZUF0KDApOwotICAgIHZhciBoZXhDb2RlOwotICAgIGlmIChjb2RlPDE2KSAKLSAgICB7Ci0gICAgICBoZXhDb2RlPSIwIitjb2RlLnRvU3RyaW5nKDE2KTsKLSAgICB9Ci0gICAgZWxzZSAKLSAgICB7Ci0gICAgICBoZXhDb2RlPWNvZGUudG9TdHJpbmcoMTYpOwotICAgIH0KLQotICAgIHZhciByZXN1bHRzUGFnZTsKLSAgICB2YXIgcmVzdWx0c1BhZ2VXaXRoU2VhcmNoOwotICAgIHZhciBoYXNSZXN1bHRzUGFnZTsKLQotICAgIGlmIChpbmRleFNlY3Rpb25zV2l0aENvbnRlbnRbdGhpcy5zZWFyY2hJbmRleF0uY2hhckF0KGNvZGUpID09ICcxJykKLSAgICB7Ci0gICAgICAgcmVzdWx0c1BhZ2UgPSB0aGlzLnJlc3VsdHNQYXRoICsgJy8nICsgaW5kZXhTZWN0aW9uTmFtZXNbdGhpcy5zZWFyY2hJbmRleF0gKyAnXycgKyBoZXhDb2RlICsgJy5odG1sJzsKLSAgICAgICByZXN1bHRzUGFnZVdpdGhTZWFyY2ggPSByZXN1bHRzUGFnZSsnPycrZXNjYXBlKHNlYXJjaFZhbHVlKTsKLSAgICAgICBoYXNSZXN1bHRzUGFnZSA9IHRydWU7Ci0gICAgfQotICAgIGVsc2UgLy8gbm90aGluZyBhdmFpbGFibGUgZm9yIHRoaXMgc2VhcmNoIHRlcm0KLSAgICB7Ci0gICAgICAgcmVzdWx0c1BhZ2UgPSB0aGlzLnJlc3VsdHNQYXRoICsgJy9ub21hdGNoZXMuaHRtbCc7Ci0gICAgICAgcmVzdWx0c1BhZ2VXaXRoU2VhcmNoID0gcmVzdWx0c1BhZ2U7Ci0gICAgICAgaGFzUmVzdWx0c1BhZ2UgPSBmYWxzZTsKLSAgICB9Ci0KLSAgICB3aW5kb3cuZnJhbWVzLk1TZWFyY2hSZXN1bHRzLmxvY2F0aW9uID0gcmVzdWx0c1BhZ2VXaXRoU2VhcmNoOyAgCi0gICAgdmFyIGRvbVBvcHVwU2VhcmNoUmVzdWx0c1dpbmRvdyA9IHRoaXMuRE9NUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93KCk7Ci0KLSAgICBpZiAoZG9tUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93LnN0eWxlLmRpc3BsYXkhPSdibG9jaycpCi0gICAgewotICAgICAgIHZhciBkb21TZWFyY2hCb3ggPSB0aGlzLkRPTVNlYXJjaEJveCgpOwotICAgICAgIHRoaXMuRE9NU2VhcmNoQ2xvc2UoKS5zdHlsZS5kaXNwbGF5ID0gJ2lubGluZSc7Ci0gICAgICAgaWYgKHRoaXMuaW5zaWRlRnJhbWUpCi0gICAgICAgewotICAgICAgICAgdmFyIGRvbVBvcHVwU2VhcmNoUmVzdWx0cyA9IHRoaXMuRE9NUG9wdXBTZWFyY2hSZXN1bHRzKCk7Ci0gICAgICAgICBkb21Qb3B1cFNlYXJjaFJlc3VsdHNXaW5kb3cuc3R5bGUucG9zaXRpb24gPSAncmVsYXRpdmUnOwotICAgICAgICAgZG9tUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93LnN0eWxlLmRpc3BsYXkgID0gJ2Jsb2NrJzsKLSAgICAgICAgIHZhciB3aWR0aCA9IGRvY3VtZW50LmJvZHkuY2xpZW50V2lkdGggLSA4OyAvLyB0aGUgLTggaXMgZm9yIElFIDotKAotICAgICAgICAgZG9tUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93LnN0eWxlLndpZHRoICAgID0gd2lkdGggKyAncHgnOwotICAgICAgICAgZG9tUG9wdXBTZWFyY2hSZXN1bHRzLnN0eWxlLndpZHRoICAgICAgICAgID0gd2lkdGggKyAncHgnOwotICAgICAgIH0KLSAgICAgICBlbHNlCi0gICAgICAgewotICAgICAgICAgdmFyIGRvbVBvcHVwU2VhcmNoUmVzdWx0cyA9IHRoaXMuRE9NUG9wdXBTZWFyY2hSZXN1bHRzKCk7Ci0gICAgICAgICB2YXIgbGVmdCA9IGdldFhQb3MoZG9tU2VhcmNoQm94KSArIDE1MDsgLy8gZG9tU2VhcmNoQm94Lm9mZnNldFdpZHRoOwotICAgICAgICAgdmFyIHRvcCAgPSBnZXRZUG9zKGRvbVNlYXJjaEJveCkgKyAyMDsgIC8vIGRvbVNlYXJjaEJveC5vZmZzZXRIZWlnaHQgKyAxOwotICAgICAgICAgZG9tUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93LnN0eWxlLmRpc3BsYXkgPSAnYmxvY2snOwotICAgICAgICAgbGVmdCAtPSBkb21Qb3B1cFNlYXJjaFJlc3VsdHMub2Zmc2V0V2lkdGg7Ci0gICAgICAgICBkb21Qb3B1cFNlYXJjaFJlc3VsdHNXaW5kb3cuc3R5bGUudG9wICAgICA9IHRvcCAgKyAncHgnOwotICAgICAgICAgZG9tUG9wdXBTZWFyY2hSZXN1bHRzV2luZG93LnN0eWxlLmxlZnQgICAgPSBsZWZ0ICsgJ3B4JzsKLSAgICAgICB9Ci0gICAgfQotCi0gICAgdGhpcy5sYXN0U2VhcmNoVmFsdWUgPSBzZWFyY2hWYWx1ZTsKLSAgICB0aGlzLmxhc3RSZXN1bHRzUGFnZSA9IHJlc3VsdHNQYWdlOwotICB9Ci0KLSAgLy8gLS0tLS0tLS0gQWN0aXZhdGlvbiBGdW5jdGlvbnMKLQotICAvLyBBY3RpdmF0ZXMgb3IgZGVhY3RpdmF0ZXMgdGhlIHNlYXJjaCBwYW5lbCwgcmVzZXR0aW5nIHRoaW5ncyB0byAKLSAgLy8gdGhlaXIgZGVmYXVsdCB2YWx1ZXMgaWYgbmVjZXNzYXJ5LiAKLSAgdGhpcy5BY3RpdmF0ZSA9IGZ1bmN0aW9uKGlzQWN0aXZlKQotICB7Ci0gICAgaWYgKGlzQWN0aXZlIHx8IC8vIG9wZW4gaXQKLSAgICAgICAgdGhpcy5ET01Qb3B1cFNlYXJjaFJlc3VsdHNXaW5kb3coKS5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycgCi0gICAgICAgKQotICAgIHsKLSAgICAgIHRoaXMuRE9NU2VhcmNoQm94KCkuY2xhc3NOYW1lID0gJ01TZWFyY2hCb3hBY3RpdmUnOwotCi0gICAgICB2YXIgc2VhcmNoRmllbGQgPSB0aGlzLkRPTVNlYXJjaEZpZWxkKCk7Ci0KLSAgICAgIGlmIChzZWFyY2hGaWVsZC52YWx1ZSA9PSB0aGlzLnNlYXJjaExhYmVsKSAvLyBjbGVhciAiU2VhcmNoIiB0ZXJtIHVwb24gZW50cnkKLSAgICAgIHsgIAotICAgICAgICBzZWFyY2hGaWVsZC52YWx1ZSA9ICcnOyAgCi0gICAgICAgIHRoaXMuc2VhcmNoQWN0aXZlID0gdHJ1ZTsKLSAgICAgIH0KLSAgICB9Ci0gICAgZWxzZSBpZiAoIWlzQWN0aXZlKSAvLyBkaXJlY3RseSByZW1vdmUgdGhlIHBhbmVsCi0gICAgewotICAgICAgdGhpcy5ET01TZWFyY2hCb3goKS5jbGFzc05hbWUgPSAnTVNlYXJjaEJveEluYWN0aXZlJzsKLSAgICAgIHRoaXMuRE9NU2VhcmNoRmllbGQoKS52YWx1ZSAgID0gdGhpcy5zZWFyY2hMYWJlbDsKLSAgICAgIHRoaXMuc2VhcmNoQWN0aXZlICAgICAgICAgICAgID0gZmFsc2U7Ci0gICAgICB0aGlzLmxhc3RTZWFyY2hWYWx1ZSAgICAgICAgICA9ICcnCi0gICAgICB0aGlzLmxhc3RSZXN1bHRzUGFnZSAgICAgICAgICA9ICcnOwotICAgIH0KLSAgfQotfQotCi0vLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0vLyBUaGUgY2xhc3MgdGhhdCBoYW5kbGVzIGV2ZXJ5dGhpbmcgb24gdGhlIHNlYXJjaCByZXN1bHRzIHBhZ2UuCi1mdW5jdGlvbiBTZWFyY2hSZXN1bHRzKG5hbWUpCi17Ci0gICAgLy8gVGhlIG51bWJlciBvZiBtYXRjaGVzIGZyb20gdGhlIGxhc3QgcnVuIG9mIDxTZWFyY2goKT4uCi0gICAgdGhpcy5sYXN0TWF0Y2hDb3VudCA9IDA7Ci0gICAgdGhpcy5sYXN0S2V5ID0gMDsKLSAgICB0aGlzLnJlcGVhdE9uID0gZmFsc2U7Ci0KLSAgICAvLyBUb2dnbGVzIHRoZSB2aXNpYmlsaXR5IG9mIHRoZSBwYXNzZWQgZWxlbWVudCBJRC4KLSAgICB0aGlzLkZpbmRDaGlsZEVsZW1lbnQgPSBmdW5jdGlvbihpZCkKLSAgICB7Ci0gICAgICB2YXIgcGFyZW50RWxlbWVudCA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKLSAgICAgIHZhciBlbGVtZW50ID0gcGFyZW50RWxlbWVudC5maXJzdENoaWxkOwotCi0gICAgICB3aGlsZSAoZWxlbWVudCAmJiBlbGVtZW50IT1wYXJlbnRFbGVtZW50KQotICAgICAgewotICAgICAgICBpZiAoZWxlbWVudC5ub2RlTmFtZSA9PSAnRElWJyAmJiBlbGVtZW50LmNsYXNzTmFtZSA9PSAnU1JDaGlsZHJlbicpCi0gICAgICAgIHsKLSAgICAgICAgICByZXR1cm4gZWxlbWVudDsKLSAgICAgICAgfQotCi0gICAgICAgIGlmIChlbGVtZW50Lm5vZGVOYW1lID09ICdESVYnICYmIGVsZW1lbnQuaGFzQ2hpbGROb2RlcygpKQotICAgICAgICB7ICAKLSAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQuZmlyc3RDaGlsZDsgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKGVsZW1lbnQubmV4dFNpYmxpbmcpCi0gICAgICAgIHsgIAotICAgICAgICAgICBlbGVtZW50ID0gZWxlbWVudC5uZXh0U2libGluZzsgIAotICAgICAgICB9Ci0gICAgICAgIGVsc2UKLSAgICAgICAgewotICAgICAgICAgIGRvCi0gICAgICAgICAgewotICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQucGFyZW50Tm9kZTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgd2hpbGUgKGVsZW1lbnQgJiYgZWxlbWVudCE9cGFyZW50RWxlbWVudCAmJiAhZWxlbWVudC5uZXh0U2libGluZyk7Ci0KLSAgICAgICAgICBpZiAoZWxlbWVudCAmJiBlbGVtZW50IT1wYXJlbnRFbGVtZW50KQotICAgICAgICAgIHsgIAotICAgICAgICAgICAgZWxlbWVudCA9IGVsZW1lbnQubmV4dFNpYmxpbmc7ICAKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0KLSAgICB0aGlzLlRvZ2dsZSA9IGZ1bmN0aW9uKGlkKQotICAgIHsKLSAgICAgIHZhciBlbGVtZW50ID0gdGhpcy5GaW5kQ2hpbGRFbGVtZW50KGlkKTsKLSAgICAgIGlmIChlbGVtZW50KQotICAgICAgewotICAgICAgICBpZiAoZWxlbWVudC5zdHlsZS5kaXNwbGF5ID09ICdibG9jaycpCi0gICAgICAgIHsKLSAgICAgICAgICBlbGVtZW50LnN0eWxlLmRpc3BsYXkgPSAnbm9uZSc7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZQotICAgICAgICB7Ci0gICAgICAgICAgZWxlbWVudC5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0KLQotICAgIC8vIFNlYXJjaGVzIGZvciB0aGUgcGFzc2VkIHN0cmluZy4gIElmIHRoZXJlIGlzIG5vIHBhcmFtZXRlciwKLSAgICAvLyBpdCB0YWtlcyBpdCBmcm9tIHRoZSBVUkwgcXVlcnkuCi0gICAgLy8KLSAgICAvLyBBbHdheXMgcmV0dXJucyB0cnVlLCBzaW5jZSBvdGhlciBkb2N1bWVudHMgbWF5IHRyeSB0byBjYWxsIGl0Ci0gICAgLy8gYW5kIHRoYXQgbWF5IG9yIG1heSBub3QgYmUgcG9zc2libGUuCi0gICAgdGhpcy5TZWFyY2ggPSBmdW5jdGlvbihzZWFyY2gpCi0gICAgewotICAgICAgaWYgKCFzZWFyY2gpIC8vIGdldCBzZWFyY2ggd29yZCBmcm9tIFVSTAotICAgICAgewotICAgICAgICBzZWFyY2ggPSB3aW5kb3cubG9jYXRpb24uc2VhcmNoOwotICAgICAgICBzZWFyY2ggPSBzZWFyY2guc3Vic3RyaW5nKDEpOyAgLy8gUmVtb3ZlIHRoZSBsZWFkaW5nICc/JwotICAgICAgICBzZWFyY2ggPSB1bmVzY2FwZShzZWFyY2gpOwotICAgICAgfQotCi0gICAgICBzZWFyY2ggPSBzZWFyY2gucmVwbGFjZSgvXiArLywgIiIpOyAvLyBzdHJpcCBsZWFkaW5nIHNwYWNlcwotICAgICAgc2VhcmNoID0gc2VhcmNoLnJlcGxhY2UoLyArJC8sICIiKTsgLy8gc3RyaXAgdHJhaWxpbmcgc3BhY2VzCi0gICAgICBzZWFyY2ggPSBzZWFyY2gudG9Mb3dlckNhc2UoKTsKLSAgICAgIHNlYXJjaCA9IGNvbnZlcnRUb0lkKHNlYXJjaCk7Ci0KLSAgICAgIHZhciByZXN1bHRSb3dzID0gZG9jdW1lbnQuZ2V0RWxlbWVudHNCeVRhZ05hbWUoImRpdiIpOwotICAgICAgdmFyIG1hdGNoZXMgPSAwOwotCi0gICAgICB2YXIgaSA9IDA7Ci0gICAgICB3aGlsZSAoaSA8IHJlc3VsdFJvd3MubGVuZ3RoKQotICAgICAgewotICAgICAgICB2YXIgcm93ID0gcmVzdWx0Um93cy5pdGVtKGkpOwotICAgICAgICBpZiAocm93LmNsYXNzTmFtZSA9PSAiU1JSZXN1bHQiKQotICAgICAgICB7Ci0gICAgICAgICAgdmFyIHJvd01hdGNoTmFtZSA9IHJvdy5pZC50b0xvd2VyQ2FzZSgpOwotICAgICAgICAgIHJvd01hdGNoTmFtZSA9IHJvd01hdGNoTmFtZS5yZXBsYWNlKC9ec3JcZCpfLywgJycpOyAvLyBzdHJpcCAnc3IxMjNfJwotCi0gICAgICAgICAgaWYgKHNlYXJjaC5sZW5ndGg8PXJvd01hdGNoTmFtZS5sZW5ndGggJiYgCi0gICAgICAgICAgICAgcm93TWF0Y2hOYW1lLnN1YnN0cigwLCBzZWFyY2gubGVuZ3RoKT09c2VhcmNoKQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gJ2Jsb2NrJzsKLSAgICAgICAgICAgIG1hdGNoZXMrKzsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgIHsKLSAgICAgICAgICAgIHJvdy5zdHlsZS5kaXNwbGF5ID0gJ25vbmUnOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpKys7Ci0gICAgICB9Ci0gICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiU2VhcmNoaW5nIikuc3R5bGUuZGlzcGxheT0nbm9uZSc7Ci0gICAgICBpZiAobWF0Y2hlcyA9PSAwKSAvLyBubyByZXN1bHRzCi0gICAgICB7Ci0gICAgICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSdibG9jayc7Ci0gICAgICB9Ci0gICAgICBlbHNlIC8vIGF0IGxlYXN0IG9uZSByZXN1bHQKLSAgICAgIHsKLSAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9J25vbmUnOwotICAgICAgfQotICAgICAgdGhpcy5sYXN0TWF0Y2hDb3VudCA9IG1hdGNoZXM7Ci0gICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSAgICAvLyByZXR1cm4gdGhlIGZpcnN0IGl0ZW0gd2l0aCBpbmRleCBpbmRleCBvciBoaWdoZXIgdGhhdCBpcyB2aXNpYmxlCi0gICAgdGhpcy5OYXZOZXh0ID0gZnVuY3Rpb24oaW5kZXgpCi0gICAgewotICAgICAgdmFyIGZvY3VzSXRlbTsKLSAgICAgIHdoaWxlICgxKQotICAgICAgewotICAgICAgICB2YXIgZm9jdXNOYW1lID0gJ0l0ZW0nK2luZGV4OwotICAgICAgICBmb2N1c0l0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChmb2N1c05hbWUpOwotICAgICAgICBpZiAoZm9jdXNJdGVtICYmIGZvY3VzSXRlbS5wYXJlbnROb2RlLnBhcmVudE5vZGUuc3R5bGUuZGlzcGxheT09J2Jsb2NrJykKLSAgICAgICAgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgaWYgKCFmb2N1c0l0ZW0pIC8vIGxhc3QgZWxlbWVudAotICAgICAgICB7Ci0gICAgICAgICAgYnJlYWs7Ci0gICAgICAgIH0KLSAgICAgICAgZm9jdXNJdGVtPW51bGw7Ci0gICAgICAgIGluZGV4Kys7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZm9jdXNJdGVtOwotICAgIH0KLQotICAgIHRoaXMuTmF2UHJldiA9IGZ1bmN0aW9uKGluZGV4KQotICAgIHsKLSAgICAgIHZhciBmb2N1c0l0ZW07Ci0gICAgICB3aGlsZSAoMSkKLSAgICAgIHsKLSAgICAgICAgdmFyIGZvY3VzTmFtZSA9ICdJdGVtJytpbmRleDsKLSAgICAgICAgZm9jdXNJdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoZm9jdXNOYW1lKTsKLSAgICAgICAgaWYgKGZvY3VzSXRlbSAmJiBmb2N1c0l0ZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLnN0eWxlLmRpc3BsYXk9PSdibG9jaycpCi0gICAgICAgIHsKLSAgICAgICAgICBicmVhazsKLSAgICAgICAgfQotICAgICAgICBlbHNlIGlmICghZm9jdXNJdGVtKSAvLyBsYXN0IGVsZW1lbnQKLSAgICAgICAgewotICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICAgIGZvY3VzSXRlbT1udWxsOwotICAgICAgICBpbmRleC0tOwotICAgICAgfQotICAgICAgcmV0dXJuIGZvY3VzSXRlbTsKLSAgICB9Ci0KLSAgICB0aGlzLlByb2Nlc3NLZXlzID0gZnVuY3Rpb24oZSkKLSAgICB7Ci0gICAgICBpZiAoZS50eXBlID09ICJrZXlkb3duIikgCi0gICAgICB7Ci0gICAgICAgIHRoaXMucmVwZWF0T24gPSBmYWxzZTsKLSAgICAgICAgdGhpcy5sYXN0S2V5ID0gZS5rZXlDb2RlOwotICAgICAgfQotICAgICAgZWxzZSBpZiAoZS50eXBlID09ICJrZXlwcmVzcyIpCi0gICAgICB7Ci0gICAgICAgIGlmICghdGhpcy5yZXBlYXRPbikKLSAgICAgICAgewotICAgICAgICAgIGlmICh0aGlzLmxhc3RLZXkpIHRoaXMucmVwZWF0T24gPSB0cnVlOwotICAgICAgICAgIHJldHVybiBmYWxzZTsgLy8gaWdub3JlIGZpcnN0IGtleXByZXNzIGFmdGVyIGtleWRvd24KLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAoZS50eXBlID09ICJrZXl1cCIpCi0gICAgICB7Ci0gICAgICAgIHRoaXMubGFzdEtleSA9IDA7Ci0gICAgICAgIHRoaXMucmVwZWF0T24gPSBmYWxzZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiB0aGlzLmxhc3RLZXkhPTA7Ci0gICAgfQotCi0gICAgdGhpcy5OYXYgPSBmdW5jdGlvbihldnQsaXRlbUluZGV4KSAKLSAgICB7Ci0gICAgICB2YXIgZSAgPSAoZXZ0KSA/IGV2dCA6IHdpbmRvdy5ldmVudDsgLy8gZm9yIElFCi0gICAgICBpZiAoZS5rZXlDb2RlPT0xMykgcmV0dXJuIHRydWU7Ci0gICAgICBpZiAoIXRoaXMuUHJvY2Vzc0tleXMoZSkpIHJldHVybiBmYWxzZTsKLQotICAgICAgaWYgKHRoaXMubGFzdEtleT09MzgpIC8vIFVwCi0gICAgICB7Ci0gICAgICAgIHZhciBuZXdJbmRleCA9IGl0ZW1JbmRleC0xOwotICAgICAgICB2YXIgZm9jdXNJdGVtID0gdGhpcy5OYXZQcmV2KG5ld0luZGV4KTsKLSAgICAgICAgaWYgKGZvY3VzSXRlbSkKLSAgICAgICAgewotICAgICAgICAgIHZhciBjaGlsZCA9IHRoaXMuRmluZENoaWxkRWxlbWVudChmb2N1c0l0ZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkKTsKLSAgICAgICAgICBpZiAoY2hpbGQgJiYgY2hpbGQuc3R5bGUuZGlzcGxheSA9PSAnYmxvY2snKSAvLyBjaGlsZHJlbiB2aXNpYmxlCi0gICAgICAgICAgeyAKLSAgICAgICAgICAgIHZhciBuPTA7Ci0gICAgICAgICAgICB2YXIgdG1wRWxlbTsKLSAgICAgICAgICAgIHdoaWxlICgxKSAvLyBzZWFyY2ggZm9yIGxhc3QgY2hpbGQKLSAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgdG1wRWxlbSA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdJdGVtJytuZXdJbmRleCsnX2MnK24pOwotICAgICAgICAgICAgICBpZiAodG1wRWxlbSkKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGZvY3VzSXRlbSA9IHRtcEVsZW07Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgZWxzZSAvLyBmb3VuZCBpdCEKLSAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIG4rKzsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGZvY3VzSXRlbSkKLSAgICAgICAgewotICAgICAgICAgIGZvY3VzSXRlbS5mb2N1cygpOwotICAgICAgICB9Ci0gICAgICAgIGVsc2UgLy8gcmV0dXJuIGZvY3VzIHRvIHNlYXJjaCBmaWVsZAotICAgICAgICB7Ci0gICAgICAgICAgIHBhcmVudC5kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTVNlYXJjaEZpZWxkIikuZm9jdXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAodGhpcy5sYXN0S2V5PT00MCkgLy8gRG93bgotICAgICAgewotICAgICAgICB2YXIgbmV3SW5kZXggPSBpdGVtSW5kZXgrMTsKLSAgICAgICAgdmFyIGZvY3VzSXRlbTsKLSAgICAgICAgdmFyIGl0ZW0gPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSXRlbScraXRlbUluZGV4KTsKLSAgICAgICAgdmFyIGVsZW0gPSB0aGlzLkZpbmRDaGlsZEVsZW1lbnQoaXRlbS5wYXJlbnROb2RlLnBhcmVudE5vZGUuaWQpOwotICAgICAgICBpZiAoZWxlbSAmJiBlbGVtLnN0eWxlLmRpc3BsYXkgPT0gJ2Jsb2NrJykgLy8gY2hpbGRyZW4gdmlzaWJsZQotICAgICAgICB7Ci0gICAgICAgICAgZm9jdXNJdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0l0ZW0nK2l0ZW1JbmRleCsnX2MwJyk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKCFmb2N1c0l0ZW0pIGZvY3VzSXRlbSA9IHRoaXMuTmF2TmV4dChuZXdJbmRleCk7Ci0gICAgICAgIGlmIChmb2N1c0l0ZW0pICBmb2N1c0l0ZW0uZm9jdXMoKTsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRoaXMubGFzdEtleT09MzkpIC8vIFJpZ2h0Ci0gICAgICB7Ci0gICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0l0ZW0nK2l0ZW1JbmRleCk7Ci0gICAgICAgIHZhciBlbGVtID0gdGhpcy5GaW5kQ2hpbGRFbGVtZW50KGl0ZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkKTsKLSAgICAgICAgaWYgKGVsZW0pIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdibG9jayc7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICh0aGlzLmxhc3RLZXk9PTM3KSAvLyBMZWZ0Ci0gICAgICB7Ci0gICAgICAgIHZhciBpdGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0l0ZW0nK2l0ZW1JbmRleCk7Ci0gICAgICAgIHZhciBlbGVtID0gdGhpcy5GaW5kQ2hpbGRFbGVtZW50KGl0ZW0ucGFyZW50Tm9kZS5wYXJlbnROb2RlLmlkKTsKLSAgICAgICAgaWYgKGVsZW0pIGVsZW0uc3R5bGUuZGlzcGxheSA9ICdub25lJzsKLSAgICAgIH0KLSAgICAgIGVsc2UgaWYgKHRoaXMubGFzdEtleT09MjcpIC8vIEVzY2FwZQotICAgICAgewotICAgICAgICBwYXJlbnQuc2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpOwotICAgICAgICBwYXJlbnQuZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk1TZWFyY2hGaWVsZCIpLmZvY3VzKCk7Ci0gICAgICB9Ci0gICAgICBlbHNlIGlmICh0aGlzLmxhc3RLZXk9PTEzKSAvLyBFbnRlcgotICAgICAgewotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICAgIH0KLSAgICAgIHJldHVybiBmYWxzZTsKLSAgICB9Ci0KLSAgICB0aGlzLk5hdkNoaWxkID0gZnVuY3Rpb24oZXZ0LGl0ZW1JbmRleCxjaGlsZEluZGV4KQotICAgIHsKLSAgICAgIHZhciBlICA9IChldnQpID8gZXZ0IDogd2luZG93LmV2ZW50OyAvLyBmb3IgSUUKLSAgICAgIGlmIChlLmtleUNvZGU9PTEzKSByZXR1cm4gdHJ1ZTsKLSAgICAgIGlmICghdGhpcy5Qcm9jZXNzS2V5cyhlKSkgcmV0dXJuIGZhbHNlOwotCi0gICAgICBpZiAodGhpcy5sYXN0S2V5PT0zOCkgLy8gVXAKLSAgICAgIHsKLSAgICAgICAgaWYgKGNoaWxkSW5kZXg+MCkKLSAgICAgICAgewotICAgICAgICAgIHZhciBuZXdJbmRleCA9IGNoaWxkSW5kZXgtMTsKLSAgICAgICAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnSXRlbScraXRlbUluZGV4KydfYycrbmV3SW5kZXgpLmZvY3VzKCk7Ci0gICAgICAgIH0KLSAgICAgICAgZWxzZSAvLyBhbHJlYWR5IGF0IGZpcnN0IGNoaWxkLCBqdW1wIHRvIHBhcmVudAotICAgICAgICB7Ci0gICAgICAgICAgZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0l0ZW0nK2l0ZW1JbmRleCkuZm9jdXMoKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgZWxzZSBpZiAodGhpcy5sYXN0S2V5PT00MCkgLy8gRG93bgotICAgICAgewotICAgICAgICB2YXIgbmV3SW5kZXggPSBjaGlsZEluZGV4KzE7Ci0gICAgICAgIHZhciBlbGVtID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ0l0ZW0nK2l0ZW1JbmRleCsnX2MnK25ld0luZGV4KTsKLSAgICAgICAgaWYgKCFlbGVtKSAvLyBsYXN0IGNoaWxkLCBqdW1wIHRvIHBhcmVudCBuZXh0IHBhcmVudAotICAgICAgICB7Ci0gICAgICAgICAgZWxlbSA9IHRoaXMuTmF2TmV4dChpdGVtSW5kZXgrMSk7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGVsZW0pCi0gICAgICAgIHsKLSAgICAgICAgICBlbGVtLmZvY3VzKCk7Ci0gICAgICAgIH0gCi0gICAgICB9Ci0gICAgICBlbHNlIGlmICh0aGlzLmxhc3RLZXk9PTI3KSAvLyBFc2NhcGUKLSAgICAgIHsKLSAgICAgICAgcGFyZW50LnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKTsKLSAgICAgICAgcGFyZW50LmRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJNU2VhcmNoRmllbGQiKS5mb2N1cygpOwotICAgICAgfQotICAgICAgZWxzZSBpZiAodGhpcy5sYXN0S2V5PT0xMykgLy8gRW50ZXIKLSAgICAgIHsKLSAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICB9Ci0gICAgICByZXR1cm4gZmFsc2U7Ci0gICAgfQotfQotCi1mdW5jdGlvbiBzZXRLZXlBY3Rpb25zKGVsZW0sYWN0aW9uKQotewotICBlbGVtLnNldEF0dHJpYnV0ZSgnb25rZXlkb3duJyxhY3Rpb24pOwotICBlbGVtLnNldEF0dHJpYnV0ZSgnb25rZXlwcmVzcycsYWN0aW9uKTsKLSAgZWxlbS5zZXRBdHRyaWJ1dGUoJ29ua2V5dXAnLGFjdGlvbik7Ci19Ci0KLWZ1bmN0aW9uIHNldENsYXNzQXR0cihlbGVtLGF0dHIpCi17Ci0gIGVsZW0uc2V0QXR0cmlidXRlKCdjbGFzcycsYXR0cik7Ci0gIGVsZW0uc2V0QXR0cmlidXRlKCdjbGFzc05hbWUnLGF0dHIpOwotfQotCi1mdW5jdGlvbiBjcmVhdGVSZXN1bHRzKCkKLXsKLSAgdmFyIHJlc3VsdHMgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiU1JSZXN1bHRzIik7Ci0gIGZvciAodmFyIGU9MDsgZTxzZWFyY2hEYXRhLmxlbmd0aDsgZSsrKQotICB7Ci0gICAgdmFyIGlkID0gc2VhcmNoRGF0YVtlXVswXTsKLSAgICB2YXIgc3JSZXN1bHQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICBzclJlc3VsdC5zZXRBdHRyaWJ1dGUoJ2lkJywnU1JfJytpZCk7Ci0gICAgc2V0Q2xhc3NBdHRyKHNyUmVzdWx0LCdTUlJlc3VsdCcpOwotICAgIHZhciBzckVudHJ5ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnZGl2Jyk7Ci0gICAgc2V0Q2xhc3NBdHRyKHNyRW50cnksJ1NSRW50cnknKTsKLSAgICB2YXIgc3JMaW5rID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnYScpOwotICAgIHNyTGluay5zZXRBdHRyaWJ1dGUoJ2lkJywnSXRlbScrZSk7Ci0gICAgc2V0S2V5QWN0aW9ucyhzckxpbmssJ3JldHVybiBzZWFyY2hSZXN1bHRzLk5hdihldmVudCwnK2UrJyknKTsKLSAgICBzZXRDbGFzc0F0dHIoc3JMaW5rLCdTUlN5bWJvbCcpOwotICAgIHNyTGluay5pbm5lckhUTUwgPSBzZWFyY2hEYXRhW2VdWzFdWzBdOwotICAgIHNyRW50cnkuYXBwZW5kQ2hpbGQoc3JMaW5rKTsKLSAgICBpZiAoc2VhcmNoRGF0YVtlXVsxXS5sZW5ndGg9PTIpIC8vIHNpbmdsZSByZXN1bHQKLSAgICB7Ci0gICAgICBzckxpbmsuc2V0QXR0cmlidXRlKCdocmVmJyxzZWFyY2hEYXRhW2VdWzFdWzFdWzBdKTsKLSAgICAgIGlmIChzZWFyY2hEYXRhW2VdWzFdWzFdWzFdKQotICAgICAgewotICAgICAgIHNyTGluay5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsJ19wYXJlbnQnKTsKLSAgICAgIH0KLSAgICAgIHZhciBzclNjb3BlID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgnc3BhbicpOwotICAgICAgc2V0Q2xhc3NBdHRyKHNyU2NvcGUsJ1NSU2NvcGUnKTsKLSAgICAgIHNyU2NvcGUuaW5uZXJIVE1MID0gc2VhcmNoRGF0YVtlXVsxXVsxXVsyXTsKLSAgICAgIHNyRW50cnkuYXBwZW5kQ2hpbGQoc3JTY29wZSk7Ci0gICAgfQotICAgIGVsc2UgLy8gbXVsdGlwbGUgcmVzdWx0cwotICAgIHsKLSAgICAgIHNyTGluay5zZXRBdHRyaWJ1dGUoJ2hyZWYnLCdqYXZhc2NyaXB0OnNlYXJjaFJlc3VsdHMuVG9nZ2xlKCJTUl8nK2lkKyciKScpOwotICAgICAgdmFyIHNyQ2hpbGRyZW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCdkaXYnKTsKLSAgICAgIHNldENsYXNzQXR0cihzckNoaWxkcmVuLCdTUkNoaWxkcmVuJyk7Ci0gICAgICBmb3IgKHZhciBjPTA7IGM8c2VhcmNoRGF0YVtlXVsxXS5sZW5ndGgtMTsgYysrKQotICAgICAgewotICAgICAgICB2YXIgc3JDaGlsZCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoJ2EnKTsKLSAgICAgICAgc3JDaGlsZC5zZXRBdHRyaWJ1dGUoJ2lkJywnSXRlbScrZSsnX2MnK2MpOwotICAgICAgICBzZXRLZXlBY3Rpb25zKHNyQ2hpbGQsJ3JldHVybiBzZWFyY2hSZXN1bHRzLk5hdkNoaWxkKGV2ZW50LCcrZSsnLCcrYysnKScpOwotICAgICAgICBzZXRDbGFzc0F0dHIoc3JDaGlsZCwnU1JTY29wZScpOwotICAgICAgICBzckNoaWxkLnNldEF0dHJpYnV0ZSgnaHJlZicsc2VhcmNoRGF0YVtlXVsxXVtjKzFdWzBdKTsKLSAgICAgICAgaWYgKHNlYXJjaERhdGFbZV1bMV1bYysxXVsxXSkKLSAgICAgICAgewotICAgICAgICAgc3JDaGlsZC5zZXRBdHRyaWJ1dGUoJ3RhcmdldCcsJ19wYXJlbnQnKTsKLSAgICAgICAgfQotICAgICAgICBzckNoaWxkLmlubmVySFRNTCA9IHNlYXJjaERhdGFbZV1bMV1bYysxXVsyXTsKLSAgICAgICAgc3JDaGlsZHJlbi5hcHBlbmRDaGlsZChzckNoaWxkKTsKLSAgICAgIH0KLSAgICAgIHNyRW50cnkuYXBwZW5kQ2hpbGQoc3JDaGlsZHJlbik7Ci0gICAgfQotICAgIHNyUmVzdWx0LmFwcGVuZENoaWxkKHNyRW50cnkpOwotICAgIHJlc3VsdHMuYXBwZW5kQ2hpbGQoc3JSZXN1bHQpOwotICB9Ci19Ci0KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC9zZWFyY2hfbC5wbmcgYi9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoX2wucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjODcyZjRkLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC9zZWFyY2hfbC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoX20ucG5nIGIvZG9jL2h0bWwvc2VhcmNoL3NlYXJjaF9tLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjQyOWExNi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvc2VhcmNoX20ucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3NlYXJjaF9yLnBuZyBiL2RvYy9odG1sL3NlYXJjaC9zZWFyY2hfci5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3ZWU4YjQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3NlYXJjaF9yLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC90eXBlZGVmc183NC5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL3R5cGVkZWZzXzc0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZjZkMmEuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3R5cGVkZWZzXzc0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ0eXBlZGVmc183NC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3R5cGVkZWZzXzc0LmpzIGIvZG9jL2h0bWwvc2VhcmNoL3R5cGVkZWZzXzc0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWIwMGY1Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC90eXBlZGVmc183NC5qcworKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsndGpoYW5kbGUnLFsndGpoYW5kbGUnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E3NThkMjYzNGVjYjQ5NDlkZTc4MTVjYmE2MjFmNTc2MycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqdHJhbnNmb3JtJyxbJ3RqdHJhbnNmb3JtJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYTI5ZjMxODljNDFiZTEyZWM1ZGVlN2NhZWMzMThhMzEnLDEsJ3R1cmJvanBlZy5oJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjMuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjMuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIyMDg1Yy4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzYzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2YXJpYWJsZXNfNjMuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjMuanMgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzYzLmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjA1OGRhLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjMuanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ2N1c3RvbWZpbHRlcicsWydjdXN0b21GaWx0ZXInLFsnLi4vc3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhNDNlZTFiY2RkMmE4ZDcyNDlhNzU2Nzc0Zjc4NzkzYzEnLDEsJ3RqdHJhbnNmb3JtJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjQuaHRtbCBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjQuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY0NDE0Yi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzY0Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2YXJpYWJsZXNfNjQuanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjQuanMgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzY0LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTlhMDUwLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjQuanMKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ2RhdGEnLFsnZGF0YScsWycuLi9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2E2ODhmZThmMWE4ZWNjMTJhNTM4ZDllNTYxY2YzMzhlMycsMSwndGp0cmFuc2Zvcm0nXV1dLAotICBbJ2Rlbm9tJyxbJ2Rlbm9tJyxbJy4uL3N0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sI2FlZmJjZGYzZTllNjIyNzRiMmQzMTJjNjk1ZjEzM2NlMycsMSwndGpzY2FsaW5nZmFjdG9yJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjguaHRtbCBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmYwYTg2Mi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzY4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2YXJpYWJsZXNfNjguanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjguanMgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzY4LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YjE3ZTk3Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNjguanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ2gnLFsnaCcsWycuLi9zdHJ1Y3R0anJlZ2lvbi5odG1sI2FlY2VmYzQ1YTI2ZjRkOGI2MGRkNGQ4MjVjMTcxMDExNScsMSwndGpyZWdpb24nXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182ZS5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182ZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWI0ZGVmLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNmUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InZhcmlhYmxlc182ZS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182ZS5qcyBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNmUuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzZmFhMTMuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182ZS5qcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsnbnVtJyxbJ251bScsWycuLi9zdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCNhOWIwMTFlNTdmOTgxZWUyMzA4M2UyYzFhYTVlNjQwZWMnLDEsJ3Rqc2NhbGluZ2ZhY3RvciddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzZmLmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzZmLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNmUyZTAuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182Zi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idmFyaWFibGVzXzZmLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzZmLmpzIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc182Zi5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNjYTgzMi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzZmLmpzCisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWydvcCcsWydvcCcsWycuLi9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2EyNTI1YWFiNGJhNjk3OGExYzI3M2Y3NGZlZjUwZTQ5OCcsMSwndGp0cmFuc2Zvcm0nXV1dLAotICBbJ29wdGlvbnMnLFsnb3B0aW9ucycsWycuLi9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2FjMGU3NDY1NWJhYTQ0MDIyMDlhMjFlMWFlNDgxYzhmNicsMSwndGp0cmFuc2Zvcm0nXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Mi5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Mi5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTRlZTdiLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzIuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InZhcmlhYmxlc183Mi5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Mi5qcyBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzIuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxY2RlMzUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Mi5qcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsncicsWydyJyxbJy4uL3N0cnVjdHRqdHJhbnNmb3JtLmh0bWwjYWMzMjRlNWU0NDJhYmVjOGE5NjFlNWJmMjE5ZGIxMmNmJywxLCd0anRyYW5zZm9ybSddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc0Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc0Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2NjVmYjguLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183NC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idmFyaWFibGVzXzc0LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc0LmpzIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183NC5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTNhMDU2ZS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc0LmpzCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWyd0amJsdWVvZmZzZXQnLFsndGpCbHVlT2Zmc2V0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhODRlMmUzNWQzZjA4MDI1Zjk3NmVjMWVjNTM2OTNkZWEnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0amdyZWVub2Zmc2V0JyxbJ3RqR3JlZW5PZmZzZXQnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E4MmQ2ZTM1ZGE0NDExMTJhNDExZGE0MTkyM2MwYmEyZicsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqbWN1aGVpZ2h0JyxbJ3RqTUNVSGVpZ2h0JyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhYmQyNDdiYjlmZWNiMzkzZWNhNTczNjZmZWI4MzI3YmYnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0am1jdXdpZHRoJyxbJ3RqTUNVV2lkdGgnLFsnLi4vZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwjZ2E5ZTYxZTdjZDQ3YTE1YTE3MzI4M2JhOTRlNzgxMzA4YycsMSwndHVyYm9qcGVnLmgnXV1dLAotICBbJ3RqcGl4ZWxzaXplJyxbJ3RqUGl4ZWxTaXplJyxbJy4uL2dyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDc3Y2Y4ZmU1YjJiZmQzY2IzZjUzMDk4MTQ2YWJiNGMnLDEsJ3R1cmJvanBlZy5oJ11dXSwKLSAgWyd0anJlZG9mZnNldCcsWyd0alJlZE9mZnNldCcsWycuLi9ncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWRkOWI0NDY3NDJhYzhhMzkyM2Y3OTkyYzc5ODhmZWE4JywxLCd0dXJib2pwZWcuaCddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc3Lmh0bWwgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc3Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzNGM2ZGYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Ny5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWw+PGhlYWQ+PHRpdGxlPjwvdGl0bGU+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic2VhcmNoLmNzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0idmFyaWFibGVzXzc3LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InNlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08L2hlYWQ+Ci08Ym9keSBjbGFzcz0iU1JQYWdlIj4KLTxkaXYgaWQ9IlNSSW5kZXgiPgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJMb2FkaW5nIj5Mb2FkaW5nLi4uPC9kaXY+Ci08ZGl2IGlkPSJTUlJlc3VsdHMiPjwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWNyZWF0ZVJlc3VsdHMoKTsKLS0tPjwvc2NyaXB0PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJTZWFyY2hpbmciPlNlYXJjaGluZy4uLjwvZGl2PgotPGRpdiBjbGFzcz0iU1JTdGF0dXMiIGlkPSJOb01hdGNoZXMiPk5vIE1hdGNoZXM8L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTG9hZGluZyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIk5vTWF0Y2hlcyIpLnN0eWxlLmRpc3BsYXk9Im5vbmUiOwotdmFyIHNlYXJjaFJlc3VsdHMgPSBuZXcgU2VhcmNoUmVzdWx0cygic2VhcmNoUmVzdWx0cyIpOwotc2VhcmNoUmVzdWx0cy5TZWFyY2goKTsKLS0tPjwvc2NyaXB0PgotPC9kaXY+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc3LmpzIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183Ny5qcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDI2NzAwMi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc3LmpzCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi12YXIgc2VhcmNoRGF0YT0KLVsKLSAgWyd3JyxbJ3cnLFsnLi4vc3RydWN0dGpyZWdpb24uaHRtbCNhYjZlYjczY2VlZjU4NGZjMjNjOGM4MDk3OTI2ZGNlNDInLDEsJ3RqcmVnaW9uJ11dXQotXTsKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzguaHRtbCBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzguaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjAyZTg3OS4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc4Lmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi08IURPQ1RZUEUgaHRtbCBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+Ci08aHRtbD48aGVhZD48dGl0bGU+PC90aXRsZT4KLTxtZXRhIGh0dHAtZXF1aXY9IkNvbnRlbnQtVHlwZSIgY29udGVudD0idGV4dC94aHRtbDtjaGFyc2V0PVVURi04Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSI+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSJzZWFyY2guY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJ2YXJpYWJsZXNfNzguanMiPjwvc2NyaXB0PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoLmpzIj48L3NjcmlwdD4KLTwvaGVhZD4KLTxib2R5IGNsYXNzPSJTUlBhZ2UiPgotPGRpdiBpZD0iU1JJbmRleCI+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IkxvYWRpbmciPkxvYWRpbmcuLi48L2Rpdj4KLTxkaXYgaWQ9IlNSUmVzdWx0cyI+PC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotY3JlYXRlUmVzdWx0cygpOwotLS0+PC9zY3JpcHQ+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9IlNlYXJjaGluZyI+U2VhcmNoaW5nLi4uPC9kaXY+Ci08ZGl2IGNsYXNzPSJTUlN0YXR1cyIgaWQ9Ik5vTWF0Y2hlcyI+Tm8gTWF0Y2hlczwvZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJMb2FkaW5nIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci1kb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiTm9NYXRjaGVzIikuc3R5bGUuZGlzcGxheT0ibm9uZSI7Ci12YXIgc2VhcmNoUmVzdWx0cyA9IG5ldyBTZWFyY2hSZXN1bHRzKCJzZWFyY2hSZXN1bHRzIik7Ci1zZWFyY2hSZXN1bHRzLlNlYXJjaCgpOwotLS0+PC9zY3JpcHQ+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzguanMgYi9kb2MvaHRtbC9zZWFyY2gvdmFyaWFibGVzXzc4LmpzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MWEyN2YyLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzguanMKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXZhciBzZWFyY2hEYXRhPQotWwotICBbJ3gnLFsneCcsWycuLi9zdHJ1Y3R0anJlZ2lvbi5odG1sI2E0YjZhMzdhOTM5OTcwOTFiMjZhNzU4MzFmYTI5MWFkOScsMSwndGpyZWdpb24nXV1dCi1dOwpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183OS5odG1sIGIvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183OS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2ZhZWY5Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sPjxoZWFkPjx0aXRsZT48L3RpdGxlPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG94eWdlbiAxLjguMy4xIj4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InNlYXJjaC5jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9InZhcmlhYmxlc183OS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2guanMiPjwvc2NyaXB0PgotPC9oZWFkPgotPGJvZHkgY2xhc3M9IlNSUGFnZSI+Ci08ZGl2IGlkPSJTUkluZGV4Ij4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTG9hZGluZyI+TG9hZGluZy4uLjwvZGl2PgotPGRpdiBpZD0iU1JSZXN1bHRzIj48L2Rpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi1jcmVhdGVSZXN1bHRzKCk7Ci0tLT48L3NjcmlwdD4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iU2VhcmNoaW5nIj5TZWFyY2hpbmcuLi48L2Rpdj4KLTxkaXYgY2xhc3M9IlNSU3RhdHVzIiBpZD0iTm9NYXRjaGVzIj5ObyBNYXRjaGVzPC9kaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoIkxvYWRpbmciKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLWRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJOb01hdGNoZXMiKS5zdHlsZS5kaXNwbGF5PSJub25lIjsKLXZhciBzZWFyY2hSZXN1bHRzID0gbmV3IFNlYXJjaFJlc3VsdHMoInNlYXJjaFJlc3VsdHMiKTsKLXNlYXJjaFJlc3VsdHMuU2VhcmNoKCk7Ci0tLT48L3NjcmlwdD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183OS5qcyBiL2RvYy9odG1sL3NlYXJjaC92YXJpYWJsZXNfNzkuanMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2ODkwYTYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc2VhcmNoL3ZhcmlhYmxlc183OS5qcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotdmFyIHNlYXJjaERhdGE9Ci1bCi0gIFsneScsWyd5JyxbJy4uL3N0cnVjdHRqcmVnaW9uLmh0bWwjYTdiM2UwYzI0Y2ZlODdhY2M4MGUzMzRjYWZkY2YyMmMyJywxLCd0anJlZ2lvbiddXV0KLV07CmRpZmYgLS1naXQgYS9kb2MvaHRtbC9zdHJ1Y3R0anJlZ2lvbi5odG1sIGIvZG9jL2h0bWwvc3RydWN0dGpyZWdpb24uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYyYTQ3My4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC9zdHJ1Y3R0anJlZ2lvbi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTg2ICswLDAgQEAKLTwhRE9DVFlQRSBodG1sIFBVQkxJQyAiLS8vVzNDLy9EVEQgWEhUTUwgMS4wIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi94aHRtbDEvRFREL3hodG1sMS10cmFuc2l0aW9uYWwuZHRkIj4KLTxodG1sIHhtbG5zPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hodG1sIj4KLTxoZWFkPgotPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L3hodG1sO2NoYXJzZXQ9VVRGLTgiLz4KLTxtZXRhIGh0dHAtZXF1aXY9IlgtVUEtQ29tcGF0aWJsZSIgY29udGVudD0iSUU9OSIvPgotPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb3h5Z2VuIDEuOC4zLjEiLz4KLTx0aXRsZT5UdXJib0pQRUc6IHRqcmVnaW9uIFN0cnVjdCBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+PHNwYW4+TWFpbiYjMTYwO1BhZ2U8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpIGNsYXNzPSJjdXJyZW50Ij48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+Ci0gICAgICAgIDxkaXYgaWQ9Ik1TZWFyY2hCb3giIGNsYXNzPSJNU2VhcmNoQm94SW5hY3RpdmUiPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGVmdCI+Ci0gICAgICAgICAgPGltZyBpZD0iTVNlYXJjaFNlbGVjdCIgc3JjPSJzZWFyY2gvbWFnX3NlbC5wbmciCi0gICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgICAgICAgICAgICBhbHQ9IiIvPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iTVNlYXJjaEZpZWxkIiB2YWx1ZT0iU2VhcmNoIiBhY2Nlc3NrZXk9IlMiCi0gICAgICAgICAgICAgICBvbmZvY3VzPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKHRydWUpIiAKLSAgICAgICAgICAgICAgIG9uYmx1cj0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRGb2N1cyhmYWxzZSkiIAotICAgICAgICAgICAgICAgb25rZXl1cD0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRDaGFuZ2UoZXZlbnQpIi8+Ci0gICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Ci0gICAgICAgICAgICA8YSBpZD0iTVNlYXJjaENsb3NlIiBocmVmPSJqYXZhc2NyaXB0OnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKSI+PGltZyBpZD0iTVNlYXJjaENsb3NlSW1nIiBib3JkZXI9IjAiIHNyYz0ic2VhcmNoL2Nsb3NlLnBuZyIgYWx0PSIiLz48L2E+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci0gIDxkaXYgaWQ9Im5hdnJvdzIiIGNsYXNzPSJ0YWJzMiI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPjxzcGFuPkRhdGEmIzE2MDtGaWVsZHM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci08IS0tIHdpbmRvdyBzaG93aW5nIHRoZSBmaWx0ZXIgb3B0aW9ucyAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hTZWxlY3RXaW5kb3ciCi0gICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICBvbm1vdXNlb3V0PSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0SGlkZSgpIgotICAgICBvbmtleWRvd249InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RLZXkoZXZlbnQpIj4KLTxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+QWxsPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RGF0YSBTdHJ1Y3R1cmVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RnVuY3Rpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VmFyaWFibGVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VHlwZWRlZnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg1KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg2KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdG9yPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+R3JvdXBzPC9hPjwvZGl2PgotCi08IS0tIGlmcmFtZSBzaG93aW5nIHRoZSBzZWFyY2ggcmVzdWx0cyAoY2xvc2VkIGJ5IGRlZmF1bHQpIC0tPgotPGRpdiBpZD0iTVNlYXJjaFJlc3VsdHNXaW5kb3ciPgotPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6dm9pZCgwKSIgZnJhbWVib3JkZXI9IjAiIAotICAgICAgICBuYW1lPSJNU2VhcmNoUmVzdWx0cyIgaWQ9Ik1TZWFyY2hSZXN1bHRzIj4KLTwvaWZyYW1lPgotPC9kaXY+Ci0KLTwvZGl2PjwhLS0gdG9wIC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBjbGFzcz0ic3VtbWFyeSI+Ci08YSBocmVmPSIjcHViLWF0dHJpYnMiPkRhdGEgRmllbGRzPC9hPiAgPC9kaXY+Ci0gIDxkaXYgY2xhc3M9ImhlYWRlcnRpdGxlIj4KLTxkaXYgY2xhc3M9InRpdGxlIj50anJlZ2lvbiBTdHJ1Y3QgUmVmZXJlbmNlPGRpdiBjbGFzcz0iaW5ncm91cHMiPjxhIGNsYXNzPSJlbCIgaHJlZj0iZ3JvdXBfX190dXJib19qX3BfZV9nLmh0bWwiPlR1cmJvSlBFRzwvYT48L2Rpdj48L2Rpdj4gIDwvZGl2PgotPC9kaXY+PCEtLWhlYWRlci0tPgotPGRpdiBjbGFzcz0iY29udGVudHMiPgotCi08cD5Dcm9wcGluZyByZWdpb24uICAKLSA8YSBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sI2RldGFpbHMiPk1vcmUuLi48L2E+PC9wPgotCi08cD48Y29kZT4jaW5jbHVkZSAmbHQ7dHVyYm9qcGVnLmgmZ3Q7PC9jb2RlPjwvcD4KLTx0YWJsZSBjbGFzcz0ibWVtYmVyZGVjbHMiPgotPHRyIGNsYXNzPSJoZWFkaW5nIj48dGQgY29sc3Bhbj0iMiI+PGgyIGNsYXNzPSJncm91cGhlYWRlciI+PGEgbmFtZT0icHViLWF0dHJpYnMiPjwvYT4KLURhdGEgRmllbGRzPC9oMj48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06YTRiNmEzN2E5Mzk5NzA5MWIyNmE3NTgzMWZhMjkxYWQ5Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sI2E0YjZhMzdhOTM5OTcwOTFiMjZhNzU4MzFmYTI5MWFkOSI+eDwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6YTRiNmEzN2E5Mzk5NzA5MWIyNmE3NTgzMWZhMjkxYWQ5Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBsZWZ0IGJvdW5kYXJ5IG9mIHRoZSBjcm9wcGluZyByZWdpb24uICA8YSBocmVmPSIjYTRiNmEzN2E5Mzk5NzA5MWIyNmE3NTgzMWZhMjkxYWQ5Ij5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6YTRiNmEzN2E5Mzk5NzA5MWIyNmE3NTgzMWZhMjkxYWQ5Ij48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmE3YjNlMGMyNGNmZTg3YWNjODBlMzM0Y2FmZGNmMjJjMiI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCNhN2IzZTBjMjRjZmU4N2FjYzgwZTMzNGNhZmRjZjIyYzIiPnk8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmE3YjNlMGMyNGNmZTg3YWNjODBlMzM0Y2FmZGNmMjJjMiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5UaGUgdXBwZXIgYm91bmRhcnkgb2YgdGhlIGNyb3BwaW5nIHJlZ2lvbi4gIDxhIGhyZWY9IiNhN2IzZTBjMjRjZmU4N2FjYzgwZTMzNGNhZmRjZjIyYzIiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjphN2IzZTBjMjRjZmU4N2FjYzgwZTMzNGNhZmRjZjIyYzIiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06YWI2ZWI3M2NlZWY1ODRmYzIzYzhjODA5NzkyNmRjZTQyIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sI2FiNmViNzNjZWVmNTg0ZmMyM2M4YzgwOTc5MjZkY2U0MiI+dzwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6YWI2ZWI3M2NlZWY1ODRmYzIzYzhjODA5NzkyNmRjZTQyIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSB3aWR0aCBvZiB0aGUgY3JvcHBpbmcgcmVnaW9uLiAgPGEgaHJlZj0iI2FiNmViNzNjZWVmNTg0ZmMyM2M4YzgwOTc5MjZkY2U0MiI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmFiNmViNzNjZWVmNTg0ZmMyM2M4YzgwOTc5MjZkY2U0MiI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTphZWNlZmM0NWEyNmY0ZDhiNjBkZDRkODI1YzE3MTAxMTUiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPmludCYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZW1JdGVtUmlnaHQiIHZhbGlnbj0iYm90dG9tIj48YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwjYWVjZWZjNDVhMjZmNGQ4YjYwZGQ0ZDgyNWMxNzEwMTE1Ij5oPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzphZWNlZmM0NWEyNmY0ZDhiNjBkZDRkODI1YzE3MTAxMTUiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+VGhlIGhlaWdodCBvZiB0aGUgY3JvcHBpbmcgcmVnaW9uLiAgPGEgaHJlZj0iI2FlY2VmYzQ1YTI2ZjRkOGI2MGRkNGQ4MjVjMTcxMDExNSI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmFlY2VmYzQ1YTI2ZjRkOGI2MGRkNGQ4MjVjMTcxMDExNSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTwvdGFibGU+Ci08YSBuYW1lPSJkZXRhaWxzIiBpZD0iZGV0YWlscyI+PC9hPjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InRleHRibG9jayI+PHA+Q3JvcHBpbmcgcmVnaW9uLiA8L3A+Ci08L2Rpdj48aDIgY2xhc3M9Imdyb3VwaGVhZGVyIj5GaWVsZCBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhZWNlZmM0NWEyNmY0ZDhiNjBkZDRkODI1YzE3MTAxMTUiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+aW50IHRqcmVnaW9uOjpoPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgaGVpZ2h0IG9mIHRoZSBjcm9wcGluZyByZWdpb24uIDwvcD4KLTxwPlNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgc291cmNlIEpQRUcgaW1hZ2UgLSB5LiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iYWI2ZWI3M2NlZWY1ODRmYzIzYzhjODA5NzkyNmRjZTQyIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmludCB0anJlZ2lvbjo6dzwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhlIHdpZHRoIG9mIHRoZSBjcm9wcGluZyByZWdpb24uIDwvcD4KLTxwPlNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSBzb3VyY2UgSlBFRyBpbWFnZSAtIHguIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhNGI2YTM3YTkzOTk3MDkxYjI2YTc1ODMxZmEyOTFhZDkiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+aW50IHRqcmVnaW9uOjp4PC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgbGVmdCBib3VuZGFyeSBvZiB0aGUgY3JvcHBpbmcgcmVnaW9uLiA8L3A+Ci08cD5UaGlzIG11c3QgYmUgZXZlbmx5IGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIHdpZHRoIChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTllNjFlN2NkNDdhMTVhMTczMjgzYmE5NGU3ODEzMDhjIiB0aXRsZT0iTUNVIGJsb2NrIHdpZHRoIChpbiBwaXhlbHMpIGZvciBhIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiI+dGpNQ1VXaWR0aDwvYT4uKSA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iYTdiM2UwYzI0Y2ZlODdhY2M4MGUzMzRjYWZkY2YyMmMyIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmludCB0anJlZ2lvbjo6eTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+VGhlIHVwcGVyIGJvdW5kYXJ5IG9mIHRoZSBjcm9wcGluZyByZWdpb24uIDwvcD4KLTxwPlRoaXMgbXVzdCBiZSBldmVubHkgZGl2aXNpYmxlIGJ5IHRoZSBNQ1UgYmxvY2sgaGVpZ2h0IChzZWUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYWJkMjQ3YmI5ZmVjYjM5M2VjYTU3MzY2ZmViODMyN2JmIiB0aXRsZT0iTUNVIGJsb2NrIGhlaWdodCAoaW4gcGl4ZWxzKSBmb3IgYSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4iPnRqTUNVSGVpZ2h0PC9hPi4pIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxoci8+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgc3RydWN0IHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPnR1cmJvanBlZy5oPC9saT4KLTwvdWw+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3N0cnVjdHRqc2NhbGluZ2ZhY3Rvci5odG1sIGIvZG9jL2h0bWwvc3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiYjUwZjUuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNDggKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSIvPgotPHRpdGxlPlR1cmJvSlBFRzogdGpzY2FsaW5nZmFjdG9yIFN0cnVjdCBSZWZlcmVuY2U8L3RpdGxlPgotPGxpbmsgaHJlZj0idGFicy5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiLz4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImpxdWVyeS5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJkeW5zZWN0aW9ucy5qcyI+PC9zY3JpcHQ+Ci08bGluayBocmVmPSJzZWFyY2gvc2VhcmNoLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ic2VhcmNoL3NlYXJjaC5qcyI+PC9zY3JpcHQ+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+Ci0gICQoZG9jdW1lbnQpLnJlYWR5KGZ1bmN0aW9uKCkgeyBzZWFyY2hCb3guT25TZWxlY3RJdGVtKDApOyB9KTsKLTwvc2NyaXB0PgotPGxpbmsgaHJlZj0iZG94eWdlbi5jc3MiIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIC8+Ci08bGluayBocmVmPSJkb3h5Z2VuLWV4dHJhLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPC9oZWFkPgotPGJvZHk+Ci08ZGl2IGlkPSJ0b3AiPjwhLS0gZG8gbm90IHJlbW92ZSB0aGlzIGRpdiwgaXQgaXMgY2xvc2VkIGJ5IGRveHlnZW4hIC0tPgotPGRpdiBpZD0idGl0bGVhcmVhIj4KLTx0YWJsZSBjZWxsc3BhY2luZz0iMCIgY2VsbHBhZGRpbmc9IjAiPgotIDx0Ym9keT4KLSA8dHIgc3R5bGU9ImhlaWdodDogNTZweDsiPgotICA8dGQgc3R5bGU9InBhZGRpbmctbGVmdDogMC41ZW07Ij4KLSAgIDxkaXYgaWQ9InByb2plY3RuYW1lIj5UdXJib0pQRUcKLSAgICYjMTYwOzxzcGFuIGlkPSJwcm9qZWN0bnVtYmVyIj4xLjU8L3NwYW4+Ci0gICA8L2Rpdj4KLSAgPC90ZD4KLSA8L3RyPgotIDwvdGJvZHk+Ci08L3RhYmxlPgotPC9kaXY+Ci08IS0tIGVuZCBoZWFkZXIgcGFydCAtLT4KLTwhLS0gR2VuZXJhdGVkIGJ5IERveHlnZW4gMS44LjMuMSAtLT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLXZhciBzZWFyY2hCb3ggPSBuZXcgU2VhcmNoQm94KCJzZWFyY2hCb3giLCAic2VhcmNoIixmYWxzZSwnU2VhcmNoJyk7Ci08L3NjcmlwdD4KLSAgPGRpdiBpZD0ibmF2cm93MSIgY2xhc3M9InRhYnMiPgotICAgIDx1bCBjbGFzcz0idGFibGlzdCI+Ci0gICAgICA8bGk+PGEgaHJlZj0iaW5kZXguaHRtbCI+PHNwYW4+TWFpbiYjMTYwO1BhZ2U8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0ibW9kdWxlcy5odG1sIj48c3Bhbj5Nb2R1bGVzPC9zcGFuPjwvYT48L2xpPgotICAgICAgPGxpIGNsYXNzPSJjdXJyZW50Ij48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+Ci0gICAgICAgIDxkaXYgaWQ9Ik1TZWFyY2hCb3giIGNsYXNzPSJNU2VhcmNoQm94SW5hY3RpdmUiPgotICAgICAgICA8c3BhbiBjbGFzcz0ibGVmdCI+Ci0gICAgICAgICAgPGltZyBpZD0iTVNlYXJjaFNlbGVjdCIgc3JjPSJzZWFyY2gvbWFnX3NlbC5wbmciCi0gICAgICAgICAgICAgICBvbm1vdXNlb3Zlcj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdFNob3coKSIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgICAgICAgICAgICBhbHQ9IiIvPgotICAgICAgICAgIDxpbnB1dCB0eXBlPSJ0ZXh0IiBpZD0iTVNlYXJjaEZpZWxkIiB2YWx1ZT0iU2VhcmNoIiBhY2Nlc3NrZXk9IlMiCi0gICAgICAgICAgICAgICBvbmZvY3VzPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKHRydWUpIiAKLSAgICAgICAgICAgICAgIG9uYmx1cj0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRGb2N1cyhmYWxzZSkiIAotICAgICAgICAgICAgICAgb25rZXl1cD0ic2VhcmNoQm94Lk9uU2VhcmNoRmllbGRDaGFuZ2UoZXZlbnQpIi8+Ci0gICAgICAgICAgPC9zcGFuPjxzcGFuIGNsYXNzPSJyaWdodCI+Ci0gICAgICAgICAgICA8YSBpZD0iTVNlYXJjaENsb3NlIiBocmVmPSJqYXZhc2NyaXB0OnNlYXJjaEJveC5DbG9zZVJlc3VsdHNXaW5kb3coKSI+PGltZyBpZD0iTVNlYXJjaENsb3NlSW1nIiBib3JkZXI9IjAiIHNyYz0ic2VhcmNoL2Nsb3NlLnBuZyIgYWx0PSIiLz48L2E+Ci0gICAgICAgICAgPC9zcGFuPgotICAgICAgICA8L2Rpdj4KLSAgICAgIDwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci0gIDxkaXYgaWQ9Im5hdnJvdzIiIGNsYXNzPSJ0YWJzMiI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJhbm5vdGF0ZWQuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO1N0cnVjdHVyZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iY2xhc3Nlcy5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlJiMxNjA7SW5kZXg8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGk+PGEgaHJlZj0iZnVuY3Rpb25zLmh0bWwiPjxzcGFuPkRhdGEmIzE2MDtGaWVsZHM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgPC91bD4KLSAgPC9kaXY+Ci08IS0tIHdpbmRvdyBzaG93aW5nIHRoZSBmaWx0ZXIgb3B0aW9ucyAtLT4KLTxkaXYgaWQ9Ik1TZWFyY2hTZWxlY3RXaW5kb3ciCi0gICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICBvbm1vdXNlb3V0PSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0SGlkZSgpIgotICAgICBvbmtleWRvd249InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RLZXkoZXZlbnQpIj4KLTxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+QWxsPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMSkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RGF0YSBTdHJ1Y3R1cmVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMikiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+RnVuY3Rpb25zPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VmFyaWFibGVzPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNCkiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+VHlwZWRlZnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg1KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg2KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5FbnVtZXJhdG9yPC9hPjxhIGNsYXNzPSJTZWxlY3RJdGVtIiBocmVmPSJqYXZhc2NyaXB0OnZvaWQoMCkiIG9uY2xpY2s9InNlYXJjaEJveC5PblNlbGVjdEl0ZW0oNykiPjxzcGFuIGNsYXNzPSJTZWxlY3Rpb25NYXJrIj4mIzE2MDs8L3NwYW4+R3JvdXBzPC9hPjwvZGl2PgotCi08IS0tIGlmcmFtZSBzaG93aW5nIHRoZSBzZWFyY2ggcmVzdWx0cyAoY2xvc2VkIGJ5IGRlZmF1bHQpIC0tPgotPGRpdiBpZD0iTVNlYXJjaFJlc3VsdHNXaW5kb3ciPgotPGlmcmFtZSBzcmM9ImphdmFzY3JpcHQ6dm9pZCgwKSIgZnJhbWVib3JkZXI9IjAiIAotICAgICAgICBuYW1lPSJNU2VhcmNoUmVzdWx0cyIgaWQ9Ik1TZWFyY2hSZXN1bHRzIj4KLTwvaWZyYW1lPgotPC9kaXY+Ci0KLTwvZGl2PjwhLS0gdG9wIC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLSAgPGRpdiBjbGFzcz0ic3VtbWFyeSI+Ci08YSBocmVmPSIjcHViLWF0dHJpYnMiPkRhdGEgRmllbGRzPC9hPiAgPC9kaXY+Ci0gIDxkaXYgY2xhc3M9ImhlYWRlcnRpdGxlIj4KLTxkaXYgY2xhc3M9InRpdGxlIj50anNjYWxpbmdmYWN0b3IgU3RydWN0IFJlZmVyZW5jZTxkaXYgY2xhc3M9ImluZ3JvdXBzIj48YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sIj5UdXJib0pQRUc8L2E+PC9kaXY+PC9kaXY+ICA8L2Rpdj4KLTwvZGl2PjwhLS1oZWFkZXItLT4KLTxkaXYgY2xhc3M9ImNvbnRlbnRzIj4KLQotPHA+U2NhbGluZyBmYWN0b3IuICAKLSA8YSBocmVmPSJzdHJ1Y3R0anNjYWxpbmdmYWN0b3IuaHRtbCNkZXRhaWxzIj5Nb3JlLi4uPC9hPjwvcD4KLQotPHA+PGNvZGU+I2luY2x1ZGUgJmx0O3R1cmJvanBlZy5oJmd0OzwvY29kZT48L3A+Ci08dGFibGUgY2xhc3M9Im1lbWJlcmRlY2xzIj4KLTx0ciBjbGFzcz0iaGVhZGluZyI+PHRkIGNvbHNwYW49IjIiPjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPjxhIG5hbWU9InB1Yi1hdHRyaWJzIj48L2E+Ci1EYXRhIEZpZWxkczwvaDI+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmE5YjAxMWU1N2Y5ODFlZTIzMDgzZTJjMWFhNWU2NDBlYyI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwjYTliMDExZTU3Zjk4MWVlMjMwODNlMmMxYWE1ZTY0MGVjIj5udW08L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmE5YjAxMWU1N2Y5ODFlZTIzMDgzZTJjMWFhNWU2NDBlYyI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5OdW1lcmF0b3IuICA8YSBocmVmPSIjYTliMDExZTU3Zjk4MWVlMjMwODNlMmMxYWE1ZTY0MGVjIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6YTliMDExZTU3Zjk4MWVlMjMwODNlMmMxYWE1ZTY0MGVjIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmFlZmJjZGYzZTllNjIyNzRiMmQzMTJjNjk1ZjEzM2NlMyI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpzY2FsaW5nZmFjdG9yLmh0bWwjYWVmYmNkZjNlOWU2MjI3NGIyZDMxMmM2OTVmMTMzY2UzIj5kZW5vbTwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6YWVmYmNkZjNlOWU2MjI3NGIyZDMxMmM2OTVmMTMzY2UzIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkRlbm9taW5hdG9yLiAgPGEgaHJlZj0iI2FlZmJjZGYzZTllNjIyNzRiMmQzMTJjNjk1ZjEzM2NlMyI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmFlZmJjZGYzZTllNjIyNzRiMmQzMTJjNjk1ZjEzM2NlMyI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTwvdGFibGU+Ci08YSBuYW1lPSJkZXRhaWxzIiBpZD0iZGV0YWlscyI+PC9hPjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InRleHRibG9jayI+PHA+U2NhbGluZyBmYWN0b3IuIDwvcD4KLTwvZGl2PjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPkZpZWxkIERvY3VtZW50YXRpb248L2gyPgotPGEgY2xhc3M9ImFuY2hvciIgaWQ9ImFlZmJjZGYzZTllNjIyNzRiMmQzMTJjNjk1ZjEzM2NlMyI+PC9hPgotPGRpdiBjbGFzcz0ibWVtaXRlbSI+Ci08ZGl2IGNsYXNzPSJtZW1wcm90byI+Ci0gICAgICA8dGFibGUgY2xhc3M9Im1lbW5hbWUiPgotICAgICAgICA8dHI+Ci0gICAgICAgICAgPHRkIGNsYXNzPSJtZW1uYW1lIj5pbnQgdGpzY2FsaW5nZmFjdG9yOjpkZW5vbTwvdGQ+Ci0gICAgICAgIDwvdHI+Ci0gICAgICA8L3RhYmxlPgotPC9kaXY+PGRpdiBjbGFzcz0ibWVtZG9jIj4KLQotPHA+RGVub21pbmF0b3IuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhOWIwMTFlNTdmOTgxZWUyMzA4M2UyYzFhYTVlNjQwZWMiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+aW50IHRqc2NhbGluZ2ZhY3Rvcjo6bnVtPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5OdW1lcmF0b3IuIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxoci8+VGhlIGRvY3VtZW50YXRpb24gZm9yIHRoaXMgc3RydWN0IHdhcyBnZW5lcmF0ZWQgZnJvbSB0aGUgZm9sbG93aW5nIGZpbGU6PHVsPgotPGxpPnR1cmJvanBlZy5oPC9saT4KLTwvdWw+Ci08L2Rpdj48IS0tIGNvbnRlbnRzIC0tPgotPCEtLSBzdGFydCBmb290ZXIgcGFydCAtLT4KLTxociBjbGFzcz0iZm9vdGVyIi8+PGFkZHJlc3MgY2xhc3M9ImZvb3RlciI+PHNtYWxsPgotR2VuZXJhdGVkIGJ5ICYjMTYwOzxhIGhyZWY9Imh0dHA6Ly93d3cuZG94eWdlbi5vcmcvaW5kZXguaHRtbCI+Ci08aW1nIGNsYXNzPSJmb290ZXIiIHNyYz0iZG94eWdlbi5wbmciIGFsdD0iZG94eWdlbiIvPgotPC9hPiAxLjguMy4xCi08L3NtYWxsPjwvYWRkcmVzcz4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2RvYy9odG1sL3N0cnVjdHRqdHJhbnNmb3JtLmh0bWwgYi9kb2MvaHRtbC9zdHJ1Y3R0anRyYW5zZm9ybS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmQ5N2Y3Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3N0cnVjdHRqdHJhbnNmb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyMTIgKzAsMCBAQAotPCFET0NUWVBFIGh0bWwgUFVCTElDICItLy9XM0MvL0RURCBYSFRNTCAxLjAgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL3hodG1sMS9EVEQveGh0bWwxLXRyYW5zaXRpb25hbC5kdGQiPgotPGh0bWwgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzE5OTkveGh0bWwiPgotPGhlYWQ+Ci08bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQveGh0bWw7Y2hhcnNldD1VVEYtOCIvPgotPG1ldGEgaHR0cC1lcXVpdj0iWC1VQS1Db21wYXRpYmxlIiBjb250ZW50PSJJRT05Ii8+Ci08bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRveHlnZW4gMS44LjMuMSIvPgotPHRpdGxlPlR1cmJvSlBFRzogdGp0cmFuc2Zvcm0gU3RydWN0IFJlZmVyZW5jZTwvdGl0bGU+Ci08bGluayBocmVmPSJ0YWJzLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIvPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0ianF1ZXJ5LmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9ImR5bnNlY3Rpb25zLmpzIj48L3NjcmlwdD4KLTxsaW5rIGhyZWY9InNlYXJjaC9zZWFyY2guY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJzZWFyY2gvc2VhcmNoLmpzIj48L3NjcmlwdD4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgJChkb2N1bWVudCkucmVhZHkoZnVuY3Rpb24oKSB7IHNlYXJjaEJveC5PblNlbGVjdEl0ZW0oMCk7IH0pOwotPC9zY3JpcHQ+Ci08bGluayBocmVmPSJkb3h5Z2VuLmNzcyIgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgLz4KLTxsaW5rIGhyZWY9ImRveHlnZW4tZXh0cmEuY3NzIiByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIi8+Ci08L2hlYWQ+Ci08Ym9keT4KLTxkaXYgaWQ9InRvcCI+PCEtLSBkbyBub3QgcmVtb3ZlIHRoaXMgZGl2LCBpdCBpcyBjbG9zZWQgYnkgZG94eWdlbiEgLS0+Ci08ZGl2IGlkPSJ0aXRsZWFyZWEiPgotPHRhYmxlIGNlbGxzcGFjaW5nPSIwIiBjZWxscGFkZGluZz0iMCI+Ci0gPHRib2R5PgotIDx0ciBzdHlsZT0iaGVpZ2h0OiA1NnB4OyI+Ci0gIDx0ZCBzdHlsZT0icGFkZGluZy1sZWZ0OiAwLjVlbTsiPgotICAgPGRpdiBpZD0icHJvamVjdG5hbWUiPlR1cmJvSlBFRwotICAgJiMxNjA7PHNwYW4gaWQ9InByb2plY3RudW1iZXIiPjEuNTwvc3Bhbj4KLSAgIDwvZGl2PgotICA8L3RkPgotIDwvdHI+Ci0gPC90Ym9keT4KLTwvdGFibGU+Ci08L2Rpdj4KLTwhLS0gZW5kIGhlYWRlciBwYXJ0IC0tPgotPCEtLSBHZW5lcmF0ZWQgYnkgRG94eWdlbiAxLjguMy4xIC0tPgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPgotdmFyIHNlYXJjaEJveCA9IG5ldyBTZWFyY2hCb3goInNlYXJjaEJveCIsICJzZWFyY2giLGZhbHNlLCdTZWFyY2gnKTsKLTwvc2NyaXB0PgotICA8ZGl2IGlkPSJuYXZyb3cxIiBjbGFzcz0idGFicyI+Ci0gICAgPHVsIGNsYXNzPSJ0YWJsaXN0Ij4KLSAgICAgIDxsaT48YSBocmVmPSJpbmRleC5odG1sIj48c3Bhbj5NYWluJiMxNjA7UGFnZTwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJtb2R1bGVzLmh0bWwiPjxzcGFuPk1vZHVsZXM8L3NwYW4+PC9hPjwvbGk+Ci0gICAgICA8bGkgY2xhc3M9ImN1cnJlbnQiPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT4KLSAgICAgICAgPGRpdiBpZD0iTVNlYXJjaEJveCIgY2xhc3M9Ik1TZWFyY2hCb3hJbmFjdGl2ZSI+Ci0gICAgICAgIDxzcGFuIGNsYXNzPSJsZWZ0Ij4KLSAgICAgICAgICA8aW1nIGlkPSJNU2VhcmNoU2VsZWN0IiBzcmM9InNlYXJjaC9tYWdfc2VsLnBuZyIKLSAgICAgICAgICAgICAgIG9ubW91c2VvdmVyPSJyZXR1cm4gc2VhcmNoQm94Lk9uU2VhcmNoU2VsZWN0U2hvdygpIgotICAgICAgICAgICAgICAgb25tb3VzZW91dD0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEhpZGUoKSIKLSAgICAgICAgICAgICAgIGFsdD0iIi8+Ci0gICAgICAgICAgPGlucHV0IHR5cGU9InRleHQiIGlkPSJNU2VhcmNoRmllbGQiIHZhbHVlPSJTZWFyY2giIGFjY2Vzc2tleT0iUyIKLSAgICAgICAgICAgICAgIG9uZm9jdXM9InNlYXJjaEJveC5PblNlYXJjaEZpZWxkRm9jdXModHJ1ZSkiIAotICAgICAgICAgICAgICAgb25ibHVyPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZEZvY3VzKGZhbHNlKSIgCi0gICAgICAgICAgICAgICBvbmtleXVwPSJzZWFyY2hCb3guT25TZWFyY2hGaWVsZENoYW5nZShldmVudCkiLz4KLSAgICAgICAgICA8L3NwYW4+PHNwYW4gY2xhc3M9InJpZ2h0Ij4KLSAgICAgICAgICAgIDxhIGlkPSJNU2VhcmNoQ2xvc2UiIGhyZWY9ImphdmFzY3JpcHQ6c2VhcmNoQm94LkNsb3NlUmVzdWx0c1dpbmRvdygpIj48aW1nIGlkPSJNU2VhcmNoQ2xvc2VJbWciIGJvcmRlcj0iMCIgc3JjPSJzZWFyY2gvY2xvc2UucG5nIiBhbHQ9IiIvPjwvYT4KLSAgICAgICAgICA8L3NwYW4+Ci0gICAgICAgIDwvZGl2PgotICAgICAgPC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLSAgPGRpdiBpZD0ibmF2cm93MiIgY2xhc3M9InRhYnMyIj4KLSAgICA8dWwgY2xhc3M9InRhYmxpc3QiPgotICAgICAgPGxpPjxhIGhyZWY9ImFubm90YXRlZC5odG1sIj48c3Bhbj5EYXRhJiMxNjA7U3RydWN0dXJlczwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJjbGFzc2VzLmh0bWwiPjxzcGFuPkRhdGEmIzE2MDtTdHJ1Y3R1cmUmIzE2MDtJbmRleDwvc3Bhbj48L2E+PC9saT4KLSAgICAgIDxsaT48YSBocmVmPSJmdW5jdGlvbnMuaHRtbCI+PHNwYW4+RGF0YSYjMTYwO0ZpZWxkczwvc3Bhbj48L2E+PC9saT4KLSAgICA8L3VsPgotICA8L2Rpdj4KLTwhLS0gd2luZG93IHNob3dpbmcgdGhlIGZpbHRlciBvcHRpb25zIC0tPgotPGRpdiBpZD0iTVNlYXJjaFNlbGVjdFdpbmRvdyIKLSAgICAgb25tb3VzZW92ZXI9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RTaG93KCkiCi0gICAgIG9ubW91c2VvdXQ9InJldHVybiBzZWFyY2hCb3guT25TZWFyY2hTZWxlY3RIaWRlKCkiCi0gICAgIG9ua2V5ZG93bj0icmV0dXJuIHNlYXJjaEJveC5PblNlYXJjaFNlbGVjdEtleShldmVudCkiPgotPGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgwKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5BbGw8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgxKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5EYXRhIFN0cnVjdHVyZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgyKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5GdW5jdGlvbnM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSgzKSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5WYXJpYWJsZXM8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg0KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5UeXBlZGVmczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDUpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0aW9uczwvYT48YSBjbGFzcz0iU2VsZWN0SXRlbSIgaHJlZj0iamF2YXNjcmlwdDp2b2lkKDApIiBvbmNsaWNrPSJzZWFyY2hCb3guT25TZWxlY3RJdGVtKDYpIj48c3BhbiBjbGFzcz0iU2VsZWN0aW9uTWFyayI+JiMxNjA7PC9zcGFuPkVudW1lcmF0b3I8L2E+PGEgY2xhc3M9IlNlbGVjdEl0ZW0iIGhyZWY9ImphdmFzY3JpcHQ6dm9pZCgwKSIgb25jbGljaz0ic2VhcmNoQm94Lk9uU2VsZWN0SXRlbSg3KSI+PHNwYW4gY2xhc3M9IlNlbGVjdGlvbk1hcmsiPiYjMTYwOzwvc3Bhbj5Hcm91cHM8L2E+PC9kaXY+Ci0KLTwhLS0gaWZyYW1lIHNob3dpbmcgdGhlIHNlYXJjaCByZXN1bHRzIChjbG9zZWQgYnkgZGVmYXVsdCkgLS0+Ci08ZGl2IGlkPSJNU2VhcmNoUmVzdWx0c1dpbmRvdyI+Ci08aWZyYW1lIHNyYz0iamF2YXNjcmlwdDp2b2lkKDApIiBmcmFtZWJvcmRlcj0iMCIgCi0gICAgICAgIG5hbWU9Ik1TZWFyY2hSZXN1bHRzIiBpZD0iTVNlYXJjaFJlc3VsdHMiPgotPC9pZnJhbWU+Ci08L2Rpdj4KLQotPC9kaXY+PCEtLSB0b3AgLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotICA8ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KLTxhIGhyZWY9IiNwdWItYXR0cmlicyI+RGF0YSBGaWVsZHM8L2E+ICA8L2Rpdj4KLSAgPGRpdiBjbGFzcz0iaGVhZGVydGl0bGUiPgotPGRpdiBjbGFzcz0idGl0bGUiPnRqdHJhbnNmb3JtIFN0cnVjdCBSZWZlcmVuY2U8ZGl2IGNsYXNzPSJpbmdyb3VwcyI+PGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCI+VHVyYm9KUEVHPC9hPjwvZGl2PjwvZGl2PiAgPC9kaXY+Ci08L2Rpdj48IS0taGVhZGVyLS0+Ci08ZGl2IGNsYXNzPSJjb250ZW50cyI+Ci0KLTxwPkxvc3NsZXNzIHRyYW5zZm9ybS4gIAotIDxhIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwjZGV0YWlscyI+TW9yZS4uLjwvYT48L3A+Ci0KLTxwPjxjb2RlPiNpbmNsdWRlICZsdDt0dXJib2pwZWcuaCZndDs8L2NvZGU+PC9wPgotPHRhYmxlIGNsYXNzPSJtZW1iZXJkZWNscyI+Ci08dHIgY2xhc3M9ImhlYWRpbmciPjx0ZCBjb2xzcGFuPSIyIj48aDIgY2xhc3M9Imdyb3VwaGVhZGVyIj48YSBuYW1lPSJwdWItYXR0cmlicyI+PC9hPgotRGF0YSBGaWVsZHM8L2gyPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtaXRlbTphYzMyNGU1ZTQ0MmFiZWM4YTk2MWU1YmYyMTlkYjEyY2YiPjx0ZCBjbGFzcz0ibWVtSXRlbUxlZnQiIGFsaWduPSJyaWdodCIgdmFsaWduPSJ0b3AiPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCI+dGpyZWdpb248L2E+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhYzMyNGU1ZTQ0MmFiZWM4YTk2MWU1YmYyMTlkYjEyY2YiPnI8L2E+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1kZXNjOmFjMzI0ZTVlNDQyYWJlYzhhOTYxZTViZjIxOWRiMTJjZiI+PHRkIGNsYXNzPSJtZGVzY0xlZnQiPiYjMTYwOzwvdGQ+PHRkIGNsYXNzPSJtZGVzY1JpZ2h0Ij5Dcm9wcGluZyByZWdpb24uICA8YSBocmVmPSIjYWMzMjRlNWU0NDJhYmVjOGE5NjFlNWJmMjE5ZGIxMmNmIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6YWMzMjRlNWU0NDJhYmVjOGE5NjFlNWJmMjE5ZGIxMmNmIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmEyNTI1YWFiNGJhNjk3OGExYzI3M2Y3NGZlZjUwZTQ5OCI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1lbUl0ZW1SaWdodCIgdmFsaWduPSJib3R0b20iPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCNhMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgiPm9wPC9hPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzphMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+T25lIG9mIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhMmRlNTMxYWY0ZTdlNmM0ZjEyNDkwODM3NmIzNTQ4NjYiPnRyYW5zZm9ybSBvcGVyYXRpb25zPC9hPi4gIDxhIGhyZWY9IiNhMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjphMjUyNWFhYjRiYTY5NzhhMWMyNzNmNzRmZWY1MGU0OTgiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06YWMwZTc0NjU1YmFhNDQwMjIwOWEyMWUxYWU0ODFjOGY2Ij48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj5pbnQmIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2FjMGU3NDY1NWJhYTQ0MDIyMDlhMjFlMWFlNDgxYzhmNiI+b3B0aW9uczwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6YWMwZTc0NjU1YmFhNDQwMjIwOWEyMWUxYWU0ODFjOGY2Ij48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPlRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvZiBtb3JlIG9mIHRoZSA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhOWM3NzFhNzU3ZmMxMjk0YWRkNjExOTA2Yjg5YWIyZDIiPnRyYW5zZm9ybSBvcHRpb25zPC9hPi4gIDxhIGhyZWY9IiNhYzBlNzQ2NTViYWE0NDAyMjA5YTIxZTFhZTQ4MWM4ZjYiPk1vcmUuLi48L2E+PGJyLz48L3RkPjwvdHI+Ci08dHIgY2xhc3M9InNlcGFyYXRvcjphYzBlNzQ2NTViYWE0NDAyMjA5YTIxZTFhZTQ4MWM4ZjYiPjx0ZCBjbGFzcz0ibWVtU2VwYXJhdG9yIiBjb2xzcGFuPSIyIj4mIzE2MDs8L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWl0ZW06YTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj48dGQgY2xhc3M9Im1lbUl0ZW1MZWZ0IiBhbGlnbj0icmlnaHQiIHZhbGlnbj0idG9wIj52b2lkIComIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2E2ODhmZThmMWE4ZWNjMTJhNTM4ZDllNTYxY2YzMzhlMyI+ZGF0YTwvYT48L3RkPjwvdHI+Ci08dHIgY2xhc3M9Im1lbWRlc2M6YTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj48dGQgY2xhc3M9Im1kZXNjTGVmdCI+JiMxNjA7PC90ZD48dGQgY2xhc3M9Im1kZXNjUmlnaHQiPkFyYml0cmFyeSBkYXRhIHRoYXQgY2FuIGJlIGFjY2Vzc2VkIHdpdGhpbiB0aGUgYm9keSBvZiB0aGUgY2FsbGJhY2sgZnVuY3Rpb24uICA8YSBocmVmPSIjYTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj5Nb3JlLi4uPC9hPjxici8+PC90ZD48L3RyPgotPHRyIGNsYXNzPSJzZXBhcmF0b3I6YTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj48dGQgY2xhc3M9Im1lbVNlcGFyYXRvciIgY29sc3Bhbj0iMiI+JiMxNjA7PC90ZD48L3RyPgotPHRyIGNsYXNzPSJtZW1pdGVtOmE0M2VlMWJjZGQyYThkNzI0OWE3NTY3NzRmNzg3OTNjMSI+PHRkIGNsYXNzPSJtZW1JdGVtTGVmdCIgYWxpZ249InJpZ2h0IiB2YWxpZ249InRvcCI+aW50KComIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWVtSXRlbVJpZ2h0IiB2YWxpZ249ImJvdHRvbSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anRyYW5zZm9ybS5odG1sI2E0M2VlMWJjZGQyYThkNzI0OWE3NTY3NzRmNzg3OTNjMSI+Y3VzdG9tRmlsdGVyPC9hPiApKHNob3J0ICpjb2VmZnMsIDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCI+dGpyZWdpb248L2E+IGFycmF5UmVnaW9uLCA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqcmVnaW9uLmh0bWwiPnRqcmVnaW9uPC9hPiBwbGFuZVJlZ2lvbiwgaW50IGNvbXBvbmVudEluZGV4LCBpbnQgdHJhbnNmb3JtSW5kZXgsIHN0cnVjdCA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiPnRqdHJhbnNmb3JtPC9hPiAqdHJhbnNmb3JtKTwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ibWVtZGVzYzphNDNlZTFiY2RkMmE4ZDcyNDlhNzU2Nzc0Zjc4NzkzYzEiPjx0ZCBjbGFzcz0ibWRlc2NMZWZ0Ij4mIzE2MDs8L3RkPjx0ZCBjbGFzcz0ibWRlc2NSaWdodCI+QSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgRENUIGNvZWZmaWNpZW50cyBhZnRlciB0aGV5IGFyZSBsb3NzbGVzc2x5IHRyYW5zZm9ybWVkIGJ1dCBiZWZvcmUgdGhleSBhcmUgdHJhbnNjb2RlZCB0byBhIG5ldyBKUEVHIGltYWdlLiAgPGEgaHJlZj0iI2E0M2VlMWJjZGQyYThkNzI0OWE3NTY3NzRmNzg3OTNjMSI+TW9yZS4uLjwvYT48YnIvPjwvdGQ+PC90cj4KLTx0ciBjbGFzcz0ic2VwYXJhdG9yOmE0M2VlMWJjZGQyYThkNzI0OWE3NTY3NzRmNzg3OTNjMSI+PHRkIGNsYXNzPSJtZW1TZXBhcmF0b3IiIGNvbHNwYW49IjIiPiYjMTYwOzwvdGQ+PC90cj4KLTwvdGFibGU+Ci08YSBuYW1lPSJkZXRhaWxzIiBpZD0iZGV0YWlscyI+PC9hPjxoMiBjbGFzcz0iZ3JvdXBoZWFkZXIiPkRldGFpbGVkIERlc2NyaXB0aW9uPC9oMj4KLTxkaXYgY2xhc3M9InRleHRibG9jayI+PHA+TG9zc2xlc3MgdHJhbnNmb3JtLiA8L3A+Ci08L2Rpdj48aDIgY2xhc3M9Imdyb3VwaGVhZGVyIj5GaWVsZCBEb2N1bWVudGF0aW9uPC9oMj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhNDNlZTFiY2RkMmE4ZDcyNDlhNzU2Nzc0Zjc4NzkzYzEiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+aW50KCogdGp0cmFuc2Zvcm06OmN1c3RvbUZpbHRlcikoc2hvcnQgKmNvZWZmcywgPGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sIj50anJlZ2lvbjwvYT4gYXJyYXlSZWdpb24sIDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCI+dGpyZWdpb248L2E+IHBsYW5lUmVnaW9uLCBpbnQgY29tcG9uZW50SW5kZXgsIGludCB0cmFuc2Zvcm1JbmRleCwgc3RydWN0IDxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGp0cmFuc2Zvcm0uaHRtbCI+dGp0cmFuc2Zvcm08L2E+ICp0cmFuc2Zvcm0pPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5BIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBEQ1QgY29lZmZpY2llbnRzIGFmdGVyIHRoZXkgYXJlIGxvc3NsZXNzbHkgdHJhbnNmb3JtZWQgYnV0IGJlZm9yZSB0aGV5IGFyZSB0cmFuc2NvZGVkIHRvIGEgbmV3IEpQRUcgaW1hZ2UuIDwvcD4KLTxwPlRoaXMgYWxsb3dzIGZvciBjdXN0b20gZmlsdGVycyBvciBvdGhlciB0cmFuc2Zvcm1hdGlvbnMgdG8gYmUgYXBwbGllZCBpbiB0aGUgZnJlcXVlbmN5IGRvbWFpbi48L3A+Ci08ZGwgY2xhc3M9InBhcmFtcyI+PGR0PlBhcmFtZXRlcnM8L2R0PjxkZD4KLSAgPHRhYmxlIGNsYXNzPSJwYXJhbXMiPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+Y29lZmZzPC90ZD48dGQ+cG9pbnRlciB0byBhbiBhcnJheSBvZiB0cmFuc2Zvcm1lZCBEQ1QgY29lZmZpY2llbnRzLiAoTk9URTogdGhpcyBwb2ludGVyIGlzIG5vdCBndWFyYW50ZWVkIHRvIGJlIHZhbGlkIG9uY2UgdGhlIGNhbGxiYWNrIHJldHVybnMsIHNvIGFwcGxpY2F0aW9ucyB3aXNoaW5nIHRvIGhhbmQgb2ZmIHRoZSBEQ1QgY29lZmZpY2llbnRzIHRvIGFub3RoZXIgZnVuY3Rpb24gb3IgbGlicmFyeSBzaG91bGQgbWFrZSBhIGNvcHkgb2YgdGhlbSB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNhbGxiYWNrLik8L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj5hcnJheVJlZ2lvbjwvdGQ+PHRkPjxhIGNsYXNzPSJlbCIgaHJlZj0ic3RydWN0dGpyZWdpb24uaHRtbCIgdGl0bGU9IkNyb3BwaW5nIHJlZ2lvbi4iPnRqcmVnaW9uPC9hPiBzdHJ1Y3R1cmUgY29udGFpbmluZyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUgYXJyYXkgcG9pbnRlZCB0byBieSA8Y29kZT5jb2VmZnM8L2NvZGU+IGFzIHdlbGwgYXMgaXRzIG9mZnNldCByZWxhdGl2ZSB0byB0aGUgY29tcG9uZW50IHBsYW5lLiBUdXJib0pQRUcgaW1wbGVtZW50YXRpb25zIG1heSBjaG9vc2UgdG8gc3BsaXQgZWFjaCBjb21wb25lbnQgcGxhbmUgaW50byBtdWx0aXBsZSBEQ1QgY29lZmZpY2llbnQgYXJyYXlzIGFuZCBjYWxsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBvbmNlIGZvciBlYWNoIGFycmF5LjwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnBsYW5lUmVnaW9uPC90ZD48dGQ+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sIiB0aXRsZT0iQ3JvcHBpbmcgcmVnaW9uLiI+dGpyZWdpb248L2E+IHN0cnVjdHVyZSBjb250YWluaW5nIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZSBjb21wb25lbnQgcGxhbmUgdG8gd2hpY2ggPGNvZGU+Y29lZmZzPC9jb2RlPiBiZWxvbmdzPC90ZD48L3RyPgotICAgIDx0cj48dGQgY2xhc3M9InBhcmFtbmFtZSI+Y29tcG9uZW50SUQ8L3RkPjx0ZD5JRCBudW1iZXIgb2YgdGhlIGNvbXBvbmVudCBwbGFuZSB0byB3aGljaCA8Y29kZT5jb2VmZnM8L2NvZGU+IGJlbG9uZ3MgKFksIENiLCBhbmQgQ3IgaGF2ZSwgcmVzcGVjdGl2ZWx5LCBJRCdzIG9mIDAsIDEsIGFuZCAyIGluIHR5cGljYWwgSlBFRyBpbWFnZXMuKTwvdGQ+PC90cj4KLSAgICA8dHI+PHRkIGNsYXNzPSJwYXJhbW5hbWUiPnRyYW5zZm9ybUlEPC90ZD48dGQ+SUQgbnVtYmVyIG9mIHRoZSB0cmFuc2Zvcm1lZCBpbWFnZSB0byB3aGljaCA8Y29kZT5jb2VmZnM8L2NvZGU+IGJlbG9uZ3MuIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGluZGV4IG9mIHRoZSB0cmFuc2Zvcm0gaW4gdGhlIDxjb2RlPnRyYW5zZm9ybXM8L2NvZGU+IGFycmF5IHRoYXQgd2FzIHBhc3NlZCB0byA8YSBjbGFzcz0iZWwiIGhyZWY9Imdyb3VwX19fdHVyYm9fal9wX2VfZy5odG1sI2dhZDAyY2Q0MmI2OWYxOTNhMDYyM2E5YzgwMTc4OGRmM2EiIHRpdGxlPSJMb3NzbGVzc2x5IHRyYW5zZm9ybSBhIEpQRUcgaW1hZ2UgaW50byBhbm90aGVyIEpQRUcgaW1hZ2UuIj50alRyYW5zZm9ybSgpPC9hPi48L3RkPjwvdHI+Ci0gICAgPHRyPjx0ZCBjbGFzcz0icGFyYW1uYW1lIj50cmFuc2Zvcm08L3RkPjx0ZD5hIHBvaW50ZXIgdG8gYSA8YSBjbGFzcz0iZWwiIGhyZWY9InN0cnVjdHRqdHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJMb3NzbGVzcyB0cmFuc2Zvcm0uIj50anRyYW5zZm9ybTwvYT4gc3RydWN0dXJlIHRoYXQgc3BlY2lmaWVzIHRoZSBwYXJhbWV0ZXJzIGFuZC9vciBjcm9wcGluZyByZWdpb24gZm9yIHRoaXMgdHJhbnNmb3JtPC90ZD48L3RyPgotICA8L3RhYmxlPgotICA8L2RkPgotPC9kbD4KLTxkbCBjbGFzcz0ic2VjdGlvbiByZXR1cm4iPjxkdD5SZXR1cm5zPC9kdD48ZGQ+MCBpZiB0aGUgY2FsbGJhY2sgd2FzIHN1Y2Nlc3NmdWwsIG9yIC0xIGlmIGFuIGVycm9yIG9jY3VycmVkLiA8L2RkPjwvZGw+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iYTY4OGZlOGYxYThlY2MxMmE1MzhkOWU1NjFjZjMzOGUzIj48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPnZvaWQqIHRqdHJhbnNmb3JtOjpkYXRhPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5BcmJpdHJhcnkgZGF0YSB0aGF0IGNhbiBiZSBhY2Nlc3NlZCB3aXRoaW4gdGhlIGJvZHkgb2YgdGhlIGNhbGxiYWNrIGZ1bmN0aW9uLiA8L3A+Ci0KLTwvZGl2PgotPC9kaXY+Ci08YSBjbGFzcz0iYW5jaG9yIiBpZD0iYTI1MjVhYWI0YmE2OTc4YTFjMjczZjc0ZmVmNTBlNDk4Ij48L2E+Ci08ZGl2IGNsYXNzPSJtZW1pdGVtIj4KLTxkaXYgY2xhc3M9Im1lbXByb3RvIj4KLSAgICAgIDx0YWJsZSBjbGFzcz0ibWVtbmFtZSI+Ci0gICAgICAgIDx0cj4KLSAgICAgICAgICA8dGQgY2xhc3M9Im1lbW5hbWUiPmludCB0anRyYW5zZm9ybTo6b3A8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPk9uZSBvZiB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTJkZTUzMWFmNGU3ZTZjNGYxMjQ5MDgzNzZiMzU0ODY2Ij50cmFuc2Zvcm0gb3BlcmF0aW9uczwvYT4uIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhYzBlNzQ2NTViYWE0NDAyMjA5YTIxZTFhZTQ4MWM4ZjYiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+aW50IHRqdHJhbnNmb3JtOjpvcHRpb25zPC90ZD4KLSAgICAgICAgPC90cj4KLSAgICAgIDwvdGFibGU+Ci08L2Rpdj48ZGl2IGNsYXNzPSJtZW1kb2MiPgotCi08cD5UaGUgYml0d2lzZSBPUiBvZiBvbmUgb2YgbW9yZSBvZiB0aGUgPGEgY2xhc3M9ImVsIiBocmVmPSJncm91cF9fX3R1cmJvX2pfcF9lX2cuaHRtbCNnYTljNzcxYTc1N2ZjMTI5NGFkZDYxMTkwNmI4OWFiMmQyIj50cmFuc2Zvcm0gb3B0aW9uczwvYT4uIDwvcD4KLQotPC9kaXY+Ci08L2Rpdj4KLTxhIGNsYXNzPSJhbmNob3IiIGlkPSJhYzMyNGU1ZTQ0MmFiZWM4YTk2MWU1YmYyMTlkYjEyY2YiPjwvYT4KLTxkaXYgY2xhc3M9Im1lbWl0ZW0iPgotPGRpdiBjbGFzcz0ibWVtcHJvdG8iPgotICAgICAgPHRhYmxlIGNsYXNzPSJtZW1uYW1lIj4KLSAgICAgICAgPHRyPgotICAgICAgICAgIDx0ZCBjbGFzcz0ibWVtbmFtZSI+PGEgY2xhc3M9ImVsIiBocmVmPSJzdHJ1Y3R0anJlZ2lvbi5odG1sIj50anJlZ2lvbjwvYT4gdGp0cmFuc2Zvcm06OnI8L3RkPgotICAgICAgICA8L3RyPgotICAgICAgPC90YWJsZT4KLTwvZGl2PjxkaXYgY2xhc3M9Im1lbWRvYyI+Ci0KLTxwPkNyb3BwaW5nIHJlZ2lvbi4gPC9wPgotCi08L2Rpdj4KLTwvZGl2PgotPGhyLz5UaGUgZG9jdW1lbnRhdGlvbiBmb3IgdGhpcyBzdHJ1Y3Qgd2FzIGdlbmVyYXRlZCBmcm9tIHRoZSBmb2xsb3dpbmcgZmlsZTo8dWw+Ci08bGk+dHVyYm9qcGVnLmg8L2xpPgotPC91bD4KLTwvZGl2PjwhLS0gY29udGVudHMgLS0+Ci08IS0tIHN0YXJ0IGZvb3RlciBwYXJ0IC0tPgotPGhyIGNsYXNzPSJmb290ZXIiLz48YWRkcmVzcyBjbGFzcz0iZm9vdGVyIj48c21hbGw+Ci1HZW5lcmF0ZWQgYnkgJiMxNjA7PGEgaHJlZj0iaHR0cDovL3d3dy5kb3h5Z2VuLm9yZy9pbmRleC5odG1sIj4KLTxpbWcgY2xhc3M9ImZvb3RlciIgc3JjPSJkb3h5Z2VuLnBuZyIgYWx0PSJkb3h5Z2VuIi8+Ci08L2E+IDEuOC4zLjEKLTwvc21hbGw+PC9hZGRyZXNzPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvc3luY19vZmYucG5nIGIvZG9jL2h0bWwvc3luY19vZmYucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjQ0M2ZjLi4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3N5bmNfb2ZmLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3N5bmNfb24ucG5nIGIvZG9jL2h0bWwvc3luY19vbi5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUwODMyMGYuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvc3luY19vbi5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC90YWJfYS5wbmcgYi9kb2MvaHRtbC90YWJfYS5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNzI1YzQuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvdGFiX2EucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvdGFiX2IucG5nIGIvZG9jL2h0bWwvdGFiX2IucG5nCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmI0YTg2Li4wMDAwMDAwCi0tLSBhL2RvYy9odG1sL3RhYl9iLnBuZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2RvYy9odG1sL3RhYl9oLnBuZyBiL2RvYy9odG1sL3RhYl9oLnBuZwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ1Y2I3MC4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC90YWJfaC5wbmcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9kb2MvaHRtbC90YWJfcy5wbmcgYi9kb2MvaHRtbC90YWJfcy5wbmcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiNDc4YzkuLjAwMDAwMDAKLS0tIGEvZG9jL2h0bWwvdGFiX3MucG5nCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvZG9jL2h0bWwvdGFicy5jc3MgYi9kb2MvaHRtbC90YWJzLmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWNmNTc4Zi4uMDAwMDAwMAotLS0gYS9kb2MvaHRtbC90YWJzLmNzcworKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLS50YWJzLCAudGFiczIsIC50YWJzMyB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd0YWJfYi5wbmcnKTsKLSAgICB3aWR0aDogMTAwJTsKLSAgICB6LWluZGV4OiAxMDE7Ci0gICAgZm9udC1zaXplOiAxM3B4OwotICAgIGZvbnQtZmFtaWx5OiAnTHVjaWRhIEdyYW5kZScsR2VuZXZhLEhlbHZldGljYSxBcmlhbCxzYW5zLXNlcmlmOwotfQotCi0udGFiczIgewotICAgIGZvbnQtc2l6ZTogMTBweDsKLX0KLS50YWJzMyB7Ci0gICAgZm9udC1zaXplOiA5cHg7Ci19Ci0KLS50YWJsaXN0IHsKLSAgICBtYXJnaW46IDA7Ci0gICAgcGFkZGluZzogMDsKLSAgICBkaXNwbGF5OiB0YWJsZTsKLX0KLQotLnRhYmxpc3QgbGkgewotICAgIGZsb2F0OiBsZWZ0OwotICAgIGRpc3BsYXk6IHRhYmxlLWNlbGw7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd0YWJfYi5wbmcnKTsKLSAgICBsaW5lLWhlaWdodDogMzZweDsKLSAgICBsaXN0LXN0eWxlOiBub25lOwotfQotCi0udGFibGlzdCBhIHsKLSAgICBkaXNwbGF5OiBibG9jazsKLSAgICBwYWRkaW5nOiAwIDIwcHg7Ci0gICAgZm9udC13ZWlnaHQ6IGJvbGQ7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTp1cmwoJ3RhYl9zLnBuZycpOwotICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOnJpZ2h0OwotICAgIGNvbG9yOiAjMjgzQTVEOwotICAgIHRleHQtc2hhZG93OiAwcHggMXB4IDFweCByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuOSk7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOiBub25lOwotICAgIG91dGxpbmU6IG5vbmU7Ci19Ci0KLS50YWJzMyAudGFibGlzdCBhIHsKLSAgICBwYWRkaW5nOiAwIDEwcHg7Ci19Ci0KLS50YWJsaXN0IGE6aG92ZXIgewotICAgIGJhY2tncm91bmQtaW1hZ2U6IHVybCgndGFiX2gucG5nJyk7Ci0gICAgYmFja2dyb3VuZC1yZXBlYXQ6cmVwZWF0LXg7Ci0gICAgY29sb3I6ICNmZmY7Ci0gICAgdGV4dC1zaGFkb3c6IDBweCAxcHggMXB4IHJnYmEoMCwgMCwgMCwgMS4wKTsKLSAgICB0ZXh0LWRlY29yYXRpb246IG5vbmU7Ci19Ci0KLS50YWJsaXN0IGxpLmN1cnJlbnQgYSB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTogdXJsKCd0YWJfYS5wbmcnKTsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKLSAgICBjb2xvcjogI2ZmZjsKLSAgICB0ZXh0LXNoYWRvdzogMHB4IDFweCAxcHggcmdiYSgwLCAwLCAwLCAxLjApOwotfQpkaWZmIC0tZ2l0IGEvamF2YS9DTWFrZUxpc3RzLnR4dCBiL2phdmEvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhZjhhZTEuLjAwMDAwMDAKLS0tIGEvamF2YS9DTWFrZUxpc3RzLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLXNldChKQVJfRklMRSB0dXJib2pwZWcuamFyKQotc2V0KE1BTklGRVNUX0ZJTEUgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L01BTklGRVNULk1GKQotCi1zZXQoSkFWQV9DTEFTU05BTUVTIG9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKCi0gIG9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3NvcgotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlcgotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3NvcgotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbgotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IKLSAgb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0KLSAgb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lcgotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZQotICBUSlVuaXRUZXN0Ci0gIFRKRXhhbXBsZQotICBUSkJlbmNoKQotCi1pZihNU1ZDX0lERSkKLSAgc2V0KE9CSkRJUiAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9LyR7Q01BS0VfQ0ZHX0lOVERJUn0iKQotZWxzZSgpCi0gIHNldChPQkpESVIgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9KQotZW5kaWYoKQotCi1zZXQoVFVSQk9KUEVHX0RMTF9OQU1FICJ0dXJib2pwZWciKQotaWYoTUlOR1cpCi0gIHNldChUVVJCT0pQRUdfRExMX05BTUUgImxpYnR1cmJvanBlZyIpCi1lbmRpZigpCi1jb25maWd1cmVfZmlsZShvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5qYXZhLmluCi0gICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5qYXZhKQotCi1zZXQoSkFWQV9TT1VSQ0VTICIiKQotc2V0KEpBVkFfQ0xBU1NFUyAiIikKLXNldChKQVZBX0NMQVNTRVNfRlVMTCAiIikKLWZvcmVhY2goY2xhc3MgJHtKQVZBX0NMQVNTTkFNRVN9KQotICBzZXQoSkFWQV9TT1VSQ0VTICR7SkFWQV9TT1VSQ0VTfSAke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vJHtjbGFzc30uamF2YSkKLSAgc2V0KEpBVkFfQ0xBU1NFUyAke0pBVkFfQ0xBU1NFU30gJHtjbGFzc30uY2xhc3MpCi0gIHNldChKQVZBX0NMQVNTRVNfRlVMTCAke0pBVkFfQ0xBU1NFU19GVUxMfSAke09CSkRJUn0vJHtjbGFzc30uY2xhc3MpCi1lbmRmb3JlYWNoKCkKLQotc2V0KEpBVkFfU09VUkNFUyAke0pBVkFfU09VUkNFU30KLSAgJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEpCi1zZXQoSkFWQV9DTEFTU0VTICR7SkFWQV9DTEFTU0VTfQotICBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5jbGFzcykKLXNldChKQVZBX0NMQVNTRVNfRlVMTCAke0pBVkFfQ0xBU1NFU19GVUxMfQotICAke09CSkRJUn0vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuY2xhc3MpCi0KLXN0cmluZyhSRUdFWCBSRVBMQUNFICIgIiAiOyIgSkFWQUNGTEFHUyAiJHtKQVZBQ0ZMQUdTfSIpCi1hZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICR7SkFWQV9DTEFTU0VTX0ZVTEx9IERFUEVORFMgJHtKQVZBX1NPVVJDRVN9Ci0gIENPTU1BTkQgJHtKQVZBX0NPTVBJTEV9IEFSR1MgJHtKQVZBQ0ZMQUdTfSAtZCAke09CSkRJUn0gJHtKQVZBX1NPVVJDRVN9KQotCi1hZGRfY3VzdG9tX2NvbW1hbmQoT1VUUFVUICR7SkFSX0ZJTEV9IERFUEVORFMgJHtKQVZBX0NMQVNTRVNfRlVMTH0KLSAgJHtNQU5JRkVTVF9GSUxFfQotICBDT01NQU5EICR7SkFWQV9BUkNISVZFfSBjZm0gJHtKQVJfRklMRX0gJHtNQU5JRkVTVF9GSUxFfSAke0pBVkFfQ0xBU1NFU30KLSAgV09SS0lOR19ESVJFQ1RPUlkgJHtPQkpESVJ9KQotCi1hZGRfY3VzdG9tX3RhcmdldChqYXZhIEFMTCBERVBFTkRTICR7SkFSX0ZJTEV9KQotCi1pbnN0YWxsKEZJTEVTICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS8ke0pBUl9GSUxFfSBERVNUSU5BVElPTiBjbGFzc2VzKQpkaWZmIC0tZ2l0IGEvamF2YS9NQU5JRkVTVC5NRiBiL2phdmEvTUFOSUZFU1QuTUYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcyM2JjNTEuLjAwMDAwMDAKLS0tIGEvamF2YS9NQU5JRkVTVC5NRgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotTWFuaWZlc3QtVmVyc2lvbjogMS4wCi1NYWluLUNsYXNzOiBUSkV4YW1wbGUKZGlmZiAtLWdpdCBhL2phdmEvTWFrZWZpbGUuYW0gYi9qYXZhL01ha2VmaWxlLmFtCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2ZjNTljLi4wMDAwMDAwCi0tLSBhL2phdmEvTWFrZWZpbGUuYW0KKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1KQVZBUk9PVCA9IC4KLQotb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YTogJChzcmNkaXIpL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEudG1wbAotCW1rZGlyIC1wIG9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnOyBcCi0JY2F0ICQoc3JjZGlyKS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5qYXZhLnRtcGwgfCBcCi0JCXNlZCBzQCV7X19saWJkaXJ9QCQobGliZGlyKUBnID4gb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YQotCi0KLUpBVkFTT1VSQ0VTID0gb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouamF2YSBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmphdmEgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ3VzdG9tRmlsdGVyLmphdmEgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmphdmEgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmphdmEgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5qYXZhIFwKLQlvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5qYXZhIFwKLQlvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmphdmEgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmphdmEgXAotCVRKRXhhbXBsZS5qYXZhIFwKLQlUSlVuaXRUZXN0LmphdmEgXAotCVRKQmVuY2guamF2YQotCi1KTklIRUFERVJTID0gb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEouaCBcCi0Jb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yLmggXAotCW9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yLmggXAotCW9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXIuaAotCi1pZiBXSVRIX0pBVkEKLQotbm9kaXN0X25vaW5zdF9KQVZBID0gJHtKQVZBU09VUkNFU30gb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YQotCi1KQVZBX0NMQVNTRVMgPSBvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5jbGFzcyBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmNsYXNzIFwKLQlvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5jbGFzcyBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuY2xhc3MgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmNsYXNzIFwKLQlvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5jbGFzcyBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmNsYXNzIFwKLQlvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5jbGFzcyBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5jbGFzcyBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuY2xhc3MgXAotCVRKRXhhbXBsZS5jbGFzcyBcCi0JVEpVbml0VGVzdC5jbGFzcyBcCi0JVEpCZW5jaC5jbGFzcwotCi1hbGw6IGFsbC1hbSB0dXJib2pwZWcuamFyCi0KLXR1cmJvanBlZy5qYXI6IGNsYXNzbm9pbnN0LnN0YW1wICR7c3JjZGlyfS9NQU5JRkVTVC5NRgotCSQoSkFSKSBjZm0gdHVyYm9qcGVnLmphciAke3NyY2Rpcn0vTUFOSUZFU1QuTUYgJChKQVZBX0NMQVNTRVMpCi0KLWNsZWFuLWxvY2FsOgotCXJtIC1mIHR1cmJvanBlZy5qYXIKLQotaW5zdGFsbC1leGVjLWxvY2FsOiB0dXJib2pwZWcuamFyCi0JbWtkaXIgLXAgJChERVNURElSKS8kKGRhdGFkaXIpL2NsYXNzZXMKLQkkKElOU1RBTEwpIC1tIDY0NCB0dXJib2pwZWcuamFyICQoREVTVERJUikvJChkYXRhZGlyKS9jbGFzc2VzLwotCi11bmluc3RhbGwtbG9jYWw6Ci0Jcm0gLWYgJChERVNURElSKS8kKGRhdGFkaXIpL2NsYXNzZXMvdHVyYm9qcGVnLmphcgotCWlmIFsgLWQgJChERVNURElSKS8kKGRhdGFkaXIpL2NsYXNzZXMgXTsgdGhlbiBybWRpciAkKERFU1RESVIpLyQoZGF0YWRpcikvY2xhc3NlczsgZmkKLQotaGVhZGVyczogYWxsCi0JamF2YWggLWQgJHtzcmNkaXJ9IG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKOyBcCi0JamF2YWggLWQgJHtzcmNkaXJ9IG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3NvcjsgXAotCWphdmFoIC1kICR7c3JjZGlyfSBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkRlY29tcHJlc3NvcjsgXAotCWphdmFoIC1kICR7c3JjZGlyfSBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybWVyCi0KLWRvY3M6IGFsbAotCW1rZGlyIC1wICR7c3JjZGlyfS9kb2M7IFwKLQlqYXZhZG9jIC1ub3RpbWVzdGFtcCAtZCAke3NyY2Rpcn0vZG9jIC1zb3VyY2VwYXRoICR7c3JjZGlyfSBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZwotCi1lbmRpZgotCi1FWFRSQV9ESVNUID0gTUFOSUZFU1QuTUYgJHtKQVZBU09VUkNFU30gJHtKTklIRUFERVJTfSBkb2MgQ01ha2VMaXN0cy50eHQgXAotCW9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEudG1wbCBcCi0Jb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YS5pbgpkaWZmIC0tZ2l0IGEvamF2YS9SRUFETUUgYi9qYXZhL1JFQURNRQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhkZGMzYi4uMDAwMDAwMAotLS0gYS9qYXZhL1JFQURNRQorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVR1cmJvSlBFRyBKYXZhIFdyYXBwZXIKLT09PT09PT09PT09PT09PT09PT09PT0KLQotVGhlIFR1cmJvSlBFRyBzaGFyZWQgbGlicmFyeSBjYW4gb3B0aW9uYWxseSBiZSBidWlsdCB3aXRoIGEgSmF2YSBOYXRpdmUKLUludGVyZmFjZSB3cmFwcGVyLCB3aGljaCBhbGxvd3MgdGhlIGxpYnJhcnkgdG8gYmUgbG9hZGVkIGFuZCB1c2VkIGRpcmVjdGx5IGZyb20KLUphdmEgYXBwbGljYXRpb25zLiAgVGhlIEphdmEgZnJvbnQgZW5kIGZvciB0aGlzIGlzIGRlZmluZWQgaW4gc2V2ZXJhbCBjbGFzc2VzCi1sb2NhdGVkIHVuZGVyIG9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnLiAgVGhlIHNvdXJjZSBjb2RlIGZvciB0aGVzZSBKYXZhCi1jbGFzc2VzIGlzIGxpY2Vuc2VkIHVuZGVyIGEgQlNELXN0eWxlIGxpY2Vuc2UsIHNvIHRoZSBmaWxlcyBjYW4gYmUgaW5jb3Jwb3JhdGVkCi1kaXJlY3RseSBpbnRvIGJvdGggb3BlbiBzb3VyY2UgYW5kIHByb3ByaWV0YXJ5IHByb2plY3RzIHdpdGhvdXQgcmVzdHJpY3Rpb24uICBBCi1KYXZhIGFyY2hpdmUgKEpBUikgZmlsZSBjb250YWluaW5nIHRoZXNlIGNsYXNzZXMgaXMgYWxzbyBzaGlwcGVkIHdpdGggdGhlCi0ib2ZmaWNpYWwiIGRpc3RyaWJ1dGlvbiBwYWNrYWdlcyBvZiBsaWJqcGVnLXR1cmJvLgotCi1USkV4YW1wbGUuamF2YSwgd2hpY2ggc2hvdWxkIGFsc28gYmUgbG9jYXRlZCBpbiB0aGUgc2FtZSBkaXJlY3RvcnkgYXMgdGhpcwotUkVBRE1FIGZpbGUsIGRlbW9uc3RyYXRlcyBob3cgdG8gdXNlIHRoZSBUdXJib0pQRUcgSmF2YSBBUEkgdG8gY29tcHJlc3MgYW5kCi1kZWNvbXByZXNzIEpQRUcgaW1hZ2VzIGluIG1lbW9yeS4KLQotCi1QZXJmb3JtYW5jZSBQaXRmYWxscwotLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotVGhlIFR1cmJvSlBFRyBKYXZhIEFQSSBkZWZpbmVzIHNldmVyYWwgY29udmVuaWVuY2UgbWV0aG9kcyB0aGF0IGNhbiBhbGxvY2F0ZQotaW1hZ2UgYnVmZmVycyBvciBpbnN0YW50aWF0ZSBjbGFzc2VzIHRvIGhvbGQgdGhlIHJlc3VsdCBvZiBjb21wcmVzcywKLWRlY29tcHJlc3MsIG9yIHRyYW5zZm9ybSBvcGVyYXRpb25zLiAgSG93ZXZlciwgaWYgeW91IHVzZSB0aGVzZSBtZXRob2RzLCB0aGVuCi1iZSBtaW5kZnVsIG9mIHRoZSBhbW91bnQgb2YgbmV3IGRhdGEgeW91IGFyZSBjcmVhdGluZyBvbiB0aGUgaGVhcC4gIEl0IG1heSBiZQotbmVjZXNzYXJ5IHRvIG1hbnVhbGx5IGludm9rZSB0aGUgZ2FyYmFnZSBjb2xsZWN0b3IgdG8gcHJldmVudCBoZWFwIGV4aGF1c3Rpb24KLW9yIHRvIHByZXZlbnQgcGVyZm9ybWFuY2UgZGVncmFkYXRpb24uICBCYWNrZ3JvdW5kIGdhcmJhZ2UgY29sbGVjdGlvbiBjYW4ga2lsbAotcGVyZm9ybWFuY2UsIHBhcnRpY3VsYXJseSBpbiBhIG11bHRpLXRocmVhZGVkIGVudmlyb25tZW50IChKYXZhIHBhdXNlcyBhbGwKLXRocmVhZHMgd2hlbiB0aGUgR0MgcnVucy4pCi0KLVRoZSBUdXJib0pQRUcgSmF2YSBBUEkgYWx3YXlzIGdpdmVzIHlvdSB0aGUgb3B0aW9uIG9mIHByZS1hbGxvY2F0aW5nIHlvdXIgb3duCi1zb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGJ1ZmZlcnMsIHdoaWNoIGFsbG93cyB5b3UgdG8gcmUtdXNlIHRob3NlIGJ1ZmZlcnMgZm9yCi1jb21wcmVzc2luZy9kZWNvbXByZXNzaW5nIG11bHRpcGxlIGltYWdlcy4gIElmIHRoZSBpbWFnZSBzZXF1ZW5jZSB5b3UgYXJlCi1jb21wcmVzc2luZyBvciBkZWNvbXByZXNzaW5nIGNvbnNpc3RzIG9mIGltYWdlcyBvZiB0aGUgc2FtZSBzaXplLCB0aGVuCi1wcmUtYWxsb2NhdGluZyB0aGUgYnVmZmVycyBpcyByZWNvbW1lbmRlZC4KLQotCi1JbnN0YWxsYXRpb24gRGlyZWN0b3J5Ci0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVRoZSBUdXJib0pQRUcgSmF2YSBXcmFwcGVyIHdpbGwgbG9vayBmb3IgdGhlIFR1cmJvSlBFRyBKTkkgbGlicmFyeQotKGxpYnR1cmJvanBlZy5zbywgbGlidHVyYm9qcGVnLmpuaWxpYiwgb3IgdHVyYm9qcGVnLmRsbCkgaW4gdGhlIHN5c3RlbSBsaWJyYXJ5Ci1wYXRocyBvciBpbiBhbnkgcGF0aHMgc3BlY2lmaWVkIGluIExEX0xJQlJBUllfUEFUSCAoVW4qeCksIERZTERfTElCUkFSWV9QQVRICi0oTWFjKSwgb3IgUEFUSCAoV2luZG93cy4pICBGYWlsaW5nIHRoaXMsIG9uIFVuKnggYW5kIE1hYyBzeXN0ZW1zLCB0aGUgd3JhcHBlcgotd2lsbCBsb29rIGZvciB0aGUgSk5JIGxpYnJhcnkgdW5kZXIgdGhlIGxpYnJhcnkgZGlyZWN0b3J5IGNvbmZpZ3VyZWQgd2hlbgotbGlianBlZy10dXJibyB3YXMgYnVpbHQuICBJZiB0aGF0IGxpYnJhcnkgZGlyZWN0b3J5IGlzCi0vb3B0L2xpYmpwZWctdHVyYm8vbGliMzIsIHRoZW4gL29wdC9saWJqcGVnLXR1cmJvL2xpYjY0IGlzIGFsc28gc2VhcmNoZWQsIGFuZAotdmljZSB2ZXJzYS4KLQotSWYgeW91IGluc3RhbGxlZCB0aGUgSk5JIGxpYnJhcnkgaW50byBhbm90aGVyIGRpcmVjdG9yeSwgdGhlbiB5b3Ugd2lsbCBuZWVkCi10byBwYXNzIGFuIGFyZ3VtZW50IG9mIC1EamF2YS5saWJyYXJ5LnBhdGg9e3BhdGhfdG9fSk5JX2xpYnJhcnl9IHRvIGphdmEsIG9yCi1tYW5pcHVsYXRlIExEX0xJQlJBUllfUEFUSCwgRFlMRF9MSUJSQVJZX1BBVEgsIG9yIFBBVEggdG8gaW5jbHVkZSB0aGUgZGlyZWN0b3J5Ci1jb250YWluaW5nIHRoZSBKTkkgbGlicmFyeS4KZGlmZiAtLWdpdCBhL2phdmEvVEpCZW5jaC5qYXZhIGIvamF2YS9USkJlbmNoLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5ZGI3ODkuLjAwMDAwMDAKLS0tIGEvamF2YS9USkJlbmNoLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw5MTYgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDA5LTIwMTQsIDIwMTYgRC4gUi4gQ29tbWFuZGVyLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICoKLSAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiwKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLWltcG9ydCBqYXZhLmlvLio7Ci1pbXBvcnQgamF2YS5hd3QuaW1hZ2UuKjsKLWltcG9ydCBqYXZheC5pbWFnZWlvLio7Ci1pbXBvcnQgamF2YS51dGlsLio7Ci1pbXBvcnQgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuKjsKLQotY2xhc3MgVEpCZW5jaCB7Ci0KLSAgc3RhdGljIGludCBmbGFncyA9IDAsIHF1aWV0ID0gMCwgcGYgPSBUSi5QRl9CR1IsIHl1dnBhZCA9IDEsIHdhcm11cCA9IDE7Ci0gIHN0YXRpYyBib29sZWFuIGNvbXBPbmx5LCBkZWNvbXBPbmx5LCBkb1RpbGUsIGRvWVVWLCB3cml0ZTsKLQotICBzdGF0aWMgZmluYWwgU3RyaW5nW10gcGl4Rm9ybWF0U3RyID0gewotICAgICJSR0IiLCAiQkdSIiwgIlJHQlgiLCAiQkdSWCIsICJYQkdSIiwgIlhSR0IiLCAiR1JBWSIKLSAgfTsKLQotICBzdGF0aWMgZmluYWwgU3RyaW5nW10gc3ViTmFtZUxvbmcgPSB7Ci0gICAgIjQ6NDo0IiwgIjQ6MjoyIiwgIjQ6MjowIiwgIkdSQVkiLCAiNDo0OjAiLCAiNDoxOjEiCi0gIH07Ci0KLSAgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHN1Yk5hbWUgPSB7Ci0gICAgIjQ0NCIsICI0MjIiLCAiNDIwIiwgIkdSQVkiLCAiNDQwIiwgIjQxMSIKLSAgfTsKLQotICBzdGF0aWMgZmluYWwgU3RyaW5nW10gY3NOYW1lID0gewotICAgICJSR0IiLCAiWUNiQ3IiLCAiR1JBWSIsICJDTVlLIiwgIllDQ0siCi0gIH07Ci0KLSAgc3RhdGljIFRKU2NhbGluZ0ZhY3RvciBzZjsKLSAgc3RhdGljIGludCB4Zm9ybU9wID0gVEpUcmFuc2Zvcm0uT1BfTk9ORSwgeGZvcm1PcHQgPSAwOwotICBzdGF0aWMgZG91YmxlIGJlbmNoVGltZSA9IDUuMDsKLQotCi0gIHN0YXRpYyBmaW5hbCBkb3VibGUgZ2V0VGltZSgpIHsKLSAgICByZXR1cm4gKGRvdWJsZSlTeXN0ZW0ubmFub1RpbWUoKSAvIDEuMGU5OwotICB9Ci0KLQotICBzdGF0aWMgU3RyaW5nIGZvcm1hdE5hbWUoaW50IHN1YnNhbXAsIGludCBjcykgewotICAgIGlmIChjcyA9PSBUSi5DU19ZQ2JDcikKLSAgICAgIHJldHVybiBzdWJOYW1lTG9uZ1tzdWJzYW1wXTsKLSAgICBlbHNlIGlmIChjcyA9PSBUSi5DU19ZQ0NLKQotICAgICAgcmV0dXJuIGNzTmFtZVtjc10gKyAiICIgKyBzdWJOYW1lTG9uZ1tzdWJzYW1wXTsKLSAgICBlbHNlCi0gICAgICByZXR1cm4gY3NOYW1lW2NzXTsKLSAgfQotCi0KLSAgc3RhdGljIFN0cmluZyBzaWdGaWcoZG91YmxlIHZhbCwgaW50IGZpZ3MpIHsKLSAgICBTdHJpbmcgZm9ybWF0OwotICAgIGludCBkaWdpdHNBZnRlckRlY2ltYWwgPSBmaWdzIC0gKGludClNYXRoLmNlaWwoTWF0aC5sb2cxMChNYXRoLmFicyh2YWwpKSk7Ci0gICAgaWYgKGRpZ2l0c0FmdGVyRGVjaW1hbCA8IDEpCi0gICAgICBmb3JtYXQgPSBuZXcgU3RyaW5nKCIlLjBmIik7Ci0gICAgZWxzZQotICAgICAgZm9ybWF0ID0gbmV3IFN0cmluZygiJS4iICsgZGlnaXRzQWZ0ZXJEZWNpbWFsICsgImYiKTsKLSAgICByZXR1cm4gU3RyaW5nLmZvcm1hdChmb3JtYXQsIHZhbCk7Ci0gIH0KLQotCi0gIHN0YXRpYyBieXRlW10gbG9hZEltYWdlKFN0cmluZyBmaWxlTmFtZSwgaW50W10gdywgaW50W10gaCwgaW50IHBpeGVsRm9ybWF0KQotICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBCdWZmZXJlZEltYWdlIGltZyA9IEltYWdlSU8ucmVhZChuZXcgRmlsZShmaWxlTmFtZSkpOwotICAgIGlmIChpbWcgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkNvdWxkIG5vdCByZWFkICIgKyBmaWxlTmFtZSk7Ci0gICAgd1swXSA9IGltZy5nZXRXaWR0aCgpOwotICAgIGhbMF0gPSBpbWcuZ2V0SGVpZ2h0KCk7Ci0gICAgaW50W10gcmdiID0gaW1nLmdldFJHQigwLCAwLCB3WzBdLCBoWzBdLCBudWxsLCAwLCB3WzBdKTsKLSAgICBpbnQgcHMgPSBUSi5nZXRQaXhlbFNpemUocGl4ZWxGb3JtYXQpOwotICAgIGludCByaW5kZXggPSBUSi5nZXRSZWRPZmZzZXQocGl4ZWxGb3JtYXQpOwotICAgIGludCBnaW5kZXggPSBUSi5nZXRHcmVlbk9mZnNldChwaXhlbEZvcm1hdCk7Ci0gICAgaW50IGJpbmRleCA9IFRKLmdldEJsdWVPZmZzZXQocGl4ZWxGb3JtYXQpOwotICAgIGJ5dGVbXSBkc3RCdWYgPSBuZXcgYnl0ZVt3WzBdICogaFswXSAqIHBzXTsKLSAgICBpbnQgcGl4ZWxzID0gd1swXSAqIGhbMF0sIGRzdFB0ciA9IDAsIHJnYlB0ciA9IDA7Ci0gICAgd2hpbGUgKHBpeGVscy0tID4gMCkgewotICAgICAgZHN0QnVmW2RzdFB0ciArIHJpbmRleF0gPSAoYnl0ZSkoKHJnYltyZ2JQdHJdID4+IDE2KSAmIDB4ZmYpOwotICAgICAgZHN0QnVmW2RzdFB0ciArIGdpbmRleF0gPSAoYnl0ZSkoKHJnYltyZ2JQdHJdID4+IDgpICYgMHhmZik7Ci0gICAgICBkc3RCdWZbZHN0UHRyICsgYmluZGV4XSA9IChieXRlKShyZ2JbcmdiUHRyXSAmIDB4ZmYpOwotICAgICAgZHN0UHRyICs9IHBzOwotICAgICAgcmdiUHRyKys7Ci0gICAgfQotICAgIHJldHVybiBkc3RCdWY7Ci0gIH0KLQotCi0gIHN0YXRpYyB2b2lkIHNhdmVJbWFnZShTdHJpbmcgZmlsZU5hbWUsIGJ5dGVbXSBzcmNCdWYsIGludCB3LCBpbnQgaCwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbEZvcm1hdCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgQnVmZmVyZWRJbWFnZSBpbWcgPSBuZXcgQnVmZmVyZWRJbWFnZSh3LCBoLCBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX1JHQik7Ci0gICAgaW50IHBpeGVscyA9IHcgKiBoLCBzcmNQdHIgPSAwOwotICAgIGludCBwcyA9IFRKLmdldFBpeGVsU2l6ZShwaXhlbEZvcm1hdCk7Ci0gICAgaW50IHJpbmRleCA9IFRKLmdldFJlZE9mZnNldChwaXhlbEZvcm1hdCk7Ci0gICAgaW50IGdpbmRleCA9IFRKLmdldEdyZWVuT2Zmc2V0KHBpeGVsRm9ybWF0KTsKLSAgICBpbnQgYmluZGV4ID0gVEouZ2V0Qmx1ZU9mZnNldChwaXhlbEZvcm1hdCk7Ci0gICAgZm9yIChpbnQgeSA9IDA7IHkgPCBoOyB5KyspIHsKLSAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdzsgeCsrLCBzcmNQdHIgKz0gcHMpIHsKLSAgICAgICAgaW50IHBpeGVsID0gKHNyY0J1ZltzcmNQdHIgKyByaW5kZXhdICYgMHhmZikgPDwgMTYgfAotICAgICAgICAgICAgICAgICAgICAoc3JjQnVmW3NyY1B0ciArIGdpbmRleF0gJiAweGZmKSA8PCA4IHwKLSAgICAgICAgICAgICAgICAgICAgKHNyY0J1ZltzcmNQdHIgKyBiaW5kZXhdICYgMHhmZik7Ci0gICAgICAgIGltZy5zZXRSR0IoeCwgeSwgcGl4ZWwpOwotICAgICAgfQotICAgIH0KLSAgICBJbWFnZUlPLndyaXRlKGltZywgImJtcCIsIG5ldyBGaWxlKGZpbGVOYW1lKSk7Ci0gIH0KLQotCi0gIC8qIERlY29tcHJlc3Npb24gdGVzdCAqLwotICBzdGF0aWMgdm9pZCBkZWNvbXAoYnl0ZVtdIHNyY0J1ZiwgYnl0ZVtdW10ganBlZ0J1ZiwgaW50W10ganBlZ1NpemUsCi0gICAgICAgICAgICAgICAgICAgICBieXRlW10gZHN0QnVmLCBpbnQgdywgaW50IGgsIGludCBzdWJzYW1wLCBpbnQganBlZ1F1YWwsCi0gICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUsIGludCB0aWxldywgaW50IHRpbGVoKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBTdHJpbmcgcXVhbFN0ciA9IG5ldyBTdHJpbmcoIiIpLCBzaXplU3RyLCB0ZW1wU3RyOwotICAgIFRKRGVjb21wcmVzc29yIHRqZDsKLSAgICBkb3VibGUgZWxhcHNlZCwgZWxhcHNlZERlY29kZTsKLSAgICBpbnQgcHMgPSBUSi5nZXRQaXhlbFNpemUocGYpLCBpLCBpdGVyID0gMDsKLSAgICBpbnQgc2NhbGVkdyA9IHNmLmdldFNjYWxlZCh3KTsKLSAgICBpbnQgc2NhbGVkaCA9IHNmLmdldFNjYWxlZChoKTsKLSAgICBpbnQgcGl0Y2ggPSBzY2FsZWR3ICogcHM7Ci0gICAgWVVWSW1hZ2UgeXV2SW1hZ2UgPSBudWxsOwotCi0gICAgaWYgKGpwZWdRdWFsID4gMCkKLSAgICAgIHF1YWxTdHIgPSBuZXcgU3RyaW5nKCJfUSIgKyBqcGVnUXVhbCk7Ci0KLSAgICB0amQgPSBuZXcgVEpEZWNvbXByZXNzb3IoKTsKLQotICAgIGlmIChkc3RCdWYgPT0gbnVsbCkKLSAgICAgIGRzdEJ1ZiA9IG5ldyBieXRlW3BpdGNoICogc2NhbGVkaF07Ci0KLSAgICAvKiBTZXQgdGhlIGRlc3RpbmF0aW9uIGJ1ZmZlciB0byBncmF5IHNvIHdlIGtub3cgd2hldGhlciB0aGUgZGVjb21wcmVzc29yCi0gICAgICAgYXR0ZW1wdGVkIHRvIHdyaXRlIHRvIGl0ICovCi0gICAgQXJyYXlzLmZpbGwoZHN0QnVmLCAoYnl0ZSkxMjcpOwotCi0gICAgaWYgKGRvWVVWKSB7Ci0gICAgICBpbnQgd2lkdGggPSBkb1RpbGUgPyB0aWxldyA6IHNjYWxlZHc7Ci0gICAgICBpbnQgaGVpZ2h0ID0gZG9UaWxlID8gdGlsZWggOiBzY2FsZWRoOwotICAgICAgeXV2SW1hZ2UgPSBuZXcgWVVWSW1hZ2Uod2lkdGgsIHl1dnBhZCwgaGVpZ2h0LCBzdWJzYW1wKTsKLSAgICAgIEFycmF5cy5maWxsKHl1dkltYWdlLmdldEJ1ZigpLCAoYnl0ZSkxMjcpOwotICAgIH0KLQotICAgIC8qIEJlbmNobWFyayAqLwotICAgIGl0ZXIgLT0gd2FybXVwOwotICAgIGVsYXBzZWQgPSBlbGFwc2VkRGVjb2RlID0gMC4wOwotICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICBpbnQgdGlsZSA9IDA7Ci0gICAgICBkb3VibGUgc3RhcnQgPSBnZXRUaW1lKCk7Ci0gICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkgKz0gdGlsZWgpIHsKLSAgICAgICAgZm9yIChpbnQgeCA9IDA7IHggPCB3OyB4ICs9IHRpbGV3LCB0aWxlKyspIHsKLSAgICAgICAgICBpbnQgd2lkdGggPSBkb1RpbGUgPyBNYXRoLm1pbih0aWxldywgdyAtIHgpIDogc2NhbGVkdzsKLSAgICAgICAgICBpbnQgaGVpZ2h0ID0gZG9UaWxlID8gTWF0aC5taW4odGlsZWgsIGggLSB5KSA6IHNjYWxlZGg7Ci0gICAgICAgICAgdGpkLnNldFNvdXJjZUltYWdlKGpwZWdCdWZbdGlsZV0sIGpwZWdTaXplW3RpbGVdKTsKLSAgICAgICAgICBpZiAoZG9ZVVYpIHsKLSAgICAgICAgICAgIHl1dkltYWdlLnNldEJ1Zih5dXZJbWFnZS5nZXRCdWYoKSwgd2lkdGgsIHl1dnBhZCwgaGVpZ2h0LCBzdWJzYW1wKTsKLSAgICAgICAgICAgIHRqZC5kZWNvbXByZXNzVG9ZVVYoeXV2SW1hZ2UsIGZsYWdzKTsKLSAgICAgICAgICAgIGRvdWJsZSBzdGFydERlY29kZSA9IGdldFRpbWUoKTsKLSAgICAgICAgICAgIHRqZC5zZXRTb3VyY2VJbWFnZSh5dXZJbWFnZSk7Ci0gICAgICAgICAgICB0amQuZGVjb21wcmVzcyhkc3RCdWYsIHgsIHksIHdpZHRoLCBwaXRjaCwgaGVpZ2h0LCBwZiwgZmxhZ3MpOwotICAgICAgICAgICAgaWYgKGl0ZXIgPj0gMCkKLSAgICAgICAgICAgICAgZWxhcHNlZERlY29kZSArPSBnZXRUaW1lKCkgLSBzdGFydERlY29kZTsKLSAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgIHRqZC5kZWNvbXByZXNzKGRzdEJ1ZiwgeCwgeSwgd2lkdGgsIHBpdGNoLCBoZWlnaHQsIHBmLCBmbGFncyk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIGl0ZXIrKzsKLSAgICAgIGlmIChpdGVyID49IDEpIHsKLSAgICAgICAgZWxhcHNlZCArPSBnZXRUaW1lKCkgLSBzdGFydDsKLSAgICAgICAgaWYgKGVsYXBzZWQgPj0gYmVuY2hUaW1lKQotICAgICAgICAgIGJyZWFrOwotICAgICAgfQotICAgIH0KLSAgICBpZihkb1lVVikKLSAgICAgIGVsYXBzZWQgLT0gZWxhcHNlZERlY29kZTsKLQotICAgIHRqZCA9IG51bGw7Ci0gICAgZm9yIChpID0gMDsgaSA8IGpwZWdCdWYubGVuZ3RoOyBpKyspCi0gICAgICBqcGVnQnVmW2ldID0gbnVsbDsKLSAgICBqcGVnQnVmID0gbnVsbDsgIGpwZWdTaXplID0gbnVsbDsKLSAgICBTeXN0ZW0uZ2MoKTsKLQotICAgIGlmIChxdWlldCAhPSAwKSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJS02cyVzIiwKLSAgICAgICAgc2lnRmlnKChkb3VibGUpKHcgKiBoKSAvIDEwMDAwMDAuICogKGRvdWJsZSlpdGVyIC8gZWxhcHNlZCwgNCksCi0gICAgICAgIHF1aWV0ID09IDIgPyAiXG4iIDogIiAgIik7Ci0gICAgICBpZiAoZG9ZVVYpCi0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlc1xuIiwKLSAgICAgICAgICBzaWdGaWcoKGRvdWJsZSkodyAqIGgpIC8gMTAwMDAwMC4gKiAoZG91YmxlKWl0ZXIgLyBlbGFwc2VkRGVjb2RlLCA0KSk7Ci0gICAgICBlbHNlIGlmIChxdWlldCAhPSAyKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiIpOwotICAgIH0gZWxzZSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJXMgLS0+IEZyYW1lIHJhdGU6ICAgICAgICAgJWYgZnBzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgKGRvWVVWID8gIkRlY29tcCB0byBZVVYiOiJEZWNvbXByZXNzICAgIiksCi0gICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWl0ZXIgLyBlbGFwc2VkKTsKLSAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIgICAgICAgICAgICAgICAgICBUaHJvdWdocHV0OiAgICAgICAgICVmIE1lZ2FwaXhlbHMvc2VjXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkodyAqIGgpIC8gMTAwMDAwMC4gKiAoZG91YmxlKWl0ZXIgLyBlbGFwc2VkKTsKLSAgICAgIGlmIChkb1lVVikgewotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiWVVWIERlY29kZSAgICAtLT4gRnJhbWUgcmF0ZTogICAgICAgICAlZiBmcHNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpaXRlciAvIGVsYXBzZWREZWNvZGUpOwotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiICAgICAgICAgICAgICAgICAgVGhyb3VnaHB1dDogICAgICAgICAlZiBNZWdhcGl4ZWxzL3NlY1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkodyAqIGgpIC8gMTAwMDAwMC4gKiAoZG91YmxlKWl0ZXIgLyBlbGFwc2VkRGVjb2RlKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICBpZiAoIXdyaXRlKSByZXR1cm47Ci0KLSAgICBpZiAoc2YuZ2V0TnVtKCkgIT0gMSB8fCBzZi5nZXREZW5vbSgpICE9IDEpCi0gICAgICBzaXplU3RyID0gbmV3IFN0cmluZyhzZi5nZXROdW0oKSArICJfIiArIHNmLmdldERlbm9tKCkpOwotICAgIGVsc2UgaWYgKHRpbGV3ICE9IHcgfHwgdGlsZWggIT0gaCkKLSAgICAgIHNpemVTdHIgPSBuZXcgU3RyaW5nKHRpbGV3ICsgIngiICsgdGlsZWgpOwotICAgIGVsc2UKLSAgICAgIHNpemVTdHIgPSBuZXcgU3RyaW5nKCJmdWxsIik7Ci0gICAgaWYgKGRlY29tcE9ubHkpCi0gICAgICB0ZW1wU3RyID0gbmV3IFN0cmluZyhmaWxlTmFtZSArICJfIiArIHNpemVTdHIgKyAiLmJtcCIpOwotICAgIGVsc2UKLSAgICAgIHRlbXBTdHIgPSBuZXcgU3RyaW5nKGZpbGVOYW1lICsgIl8iICsgc3ViTmFtZVtzdWJzYW1wXSArIHF1YWxTdHIgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIl8iICsgc2l6ZVN0ciArICIuYm1wIik7Ci0KLSAgICBzYXZlSW1hZ2UodGVtcFN0ciwgZHN0QnVmLCBzY2FsZWR3LCBzY2FsZWRoLCBwZik7Ci0gICAgaW50IG5keCA9IHRlbXBTdHIubGFzdEluZGV4T2YoJy4nKTsKLSAgICB0ZW1wU3RyID0gbmV3IFN0cmluZyh0ZW1wU3RyLnN1YnN0cmluZygwLCBuZHgpICsgIi1lcnIuYm1wIik7Ci0gICAgaWYgKHNyY0J1ZiAhPSBudWxsICYmIHNmLmdldE51bSgpID09IDEgJiYgc2YuZ2V0RGVub20oKSA9PSAxKSB7Ci0gICAgICBpZiAocXVpZXQgPT0gMCkKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJDb21wcmVzc2lvbiBlcnJvciB3cml0dGVuIHRvICIgKyB0ZW1wU3RyICsgIi4iKTsKLSAgICAgIGlmIChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSkgewotICAgICAgICBmb3IgKGludCB5ID0gMCwgaW5kZXggPSAwOyB5IDwgaDsgeSsrLCBpbmRleCArPSBwaXRjaCkgewotICAgICAgICAgIGZvciAoaW50IHggPSAwLCBpbmRleDIgPSBpbmRleDsgeCA8IHc7IHgrKywgaW5kZXgyICs9IHBzKSB7Ci0gICAgICAgICAgICBpbnQgcmluZGV4ID0gaW5kZXgyICsgVEouZ2V0UmVkT2Zmc2V0KHBmKTsKLSAgICAgICAgICAgIGludCBnaW5kZXggPSBpbmRleDIgKyBUSi5nZXRHcmVlbk9mZnNldChwZik7Ci0gICAgICAgICAgICBpbnQgYmluZGV4ID0gaW5kZXgyICsgVEouZ2V0Qmx1ZU9mZnNldChwZik7Ci0gICAgICAgICAgICBpbnQgbHVtID0gKGludCkoKGRvdWJsZSkoc3JjQnVmW3JpbmRleF0gJiAweGZmKSAqIDAuMjk5ICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKShzcmNCdWZbZ2luZGV4XSAmIDB4ZmYpICogMC41ODcgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpKHNyY0J1ZltiaW5kZXhdICYgMHhmZikgKiAwLjExNCArIDAuNSk7Ci0gICAgICAgICAgICBpZiAobHVtID4gMjU1KSBsdW0gPSAyNTU7Ci0gICAgICAgICAgICBpZiAobHVtIDwgMCkgbHVtID0gMDsKLSAgICAgICAgICAgIGRzdEJ1ZltyaW5kZXhdID0gKGJ5dGUpTWF0aC5hYnMoKGRzdEJ1ZltyaW5kZXhdICYgMHhmZikgLSBsdW0pOwotICAgICAgICAgICAgZHN0QnVmW2dpbmRleF0gPSAoYnl0ZSlNYXRoLmFicygoZHN0QnVmW2dpbmRleF0gJiAweGZmKSAtIGx1bSk7Ci0gICAgICAgICAgICBkc3RCdWZbYmluZGV4XSA9IChieXRlKU1hdGguYWJzKChkc3RCdWZbYmluZGV4XSAmIDB4ZmYpIC0gbHVtKTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGZvciAoaW50IHkgPSAwOyB5IDwgaDsgeSsrKQotICAgICAgICAgIGZvciAoaW50IHggPSAwOyB4IDwgdyAqIHBzOyB4KyspCi0gICAgICAgICAgICBkc3RCdWZbcGl0Y2ggKiB5ICsgeF0gPQotICAgICAgICAgICAgICAoYnl0ZSlNYXRoLmFicygoZHN0QnVmW3BpdGNoICogeSArIHhdICYgMHhmZikgLQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc3JjQnVmW3BpdGNoICogeSArIHhdICYgMHhmZikpOwotICAgICAgfQotICAgICAgc2F2ZUltYWdlKHRlbXBTdHIsIGRzdEJ1ZiwgdywgaCwgcGYpOwotICAgIH0KLSAgfQotCi0KLSAgc3RhdGljIHZvaWQgZnVsbFRlc3QoYnl0ZVtdIHNyY0J1ZiwgaW50IHcsIGludCBoLCBpbnQgc3Vic2FtcCwgaW50IGpwZWdRdWFsLAotICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgZmlsZU5hbWUpIHRocm93cyBFeGNlcHRpb24gewotICAgIFRKQ29tcHJlc3NvciB0amM7Ci0gICAgYnl0ZVtdIHRtcEJ1ZjsKLSAgICBieXRlW11bXSBqcGVnQnVmOwotICAgIGludFtdIGpwZWdTaXplOwotICAgIGRvdWJsZSBzdGFydCwgZWxhcHNlZCwgZWxhcHNlZEVuY29kZTsKLSAgICBpbnQgdG90YWxKcGVnU2l6ZSA9IDAsIHRpbGV3LCB0aWxlaCwgaSwgaXRlcjsKLSAgICBpbnQgcHMgPSBUSi5nZXRQaXhlbFNpemUocGYpOwotICAgIGludCBudGlsZXN3ID0gMSwgbnRpbGVzaCA9IDEsIHBpdGNoID0gdyAqIHBzOwotICAgIFN0cmluZyBwZlN0ciA9IHBpeEZvcm1hdFN0cltwZl07Ci0gICAgWVVWSW1hZ2UgeXV2SW1hZ2UgPSBudWxsOwotCi0gICAgdG1wQnVmID0gbmV3IGJ5dGVbcGl0Y2ggKiBoXTsKLQotICAgIGlmIChxdWlldCA9PSAwKQotICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIj4+Pj4+ICAlcyAoJXMpIDwtLT4gSlBFRyAlcyBRJWQgIDw8PDw8XG4iLCBwZlN0ciwKLSAgICAgICAgKGZsYWdzICYgVEouRkxBR19CT1RUT01VUCkgIT0gMCA/ICJCb3R0b20tdXAiIDogIlRvcC1kb3duIiwKLSAgICAgICAgc3ViTmFtZUxvbmdbc3Vic2FtcF0sIGpwZWdRdWFsKTsKLQotICAgIHRqYyA9IG5ldyBUSkNvbXByZXNzb3IoKTsKLQotICAgIGZvciAodGlsZXcgPSBkb1RpbGUgPyA4IDogdywgdGlsZWggPSBkb1RpbGUgPyA4IDogaDsgOwotICAgICAgICAgdGlsZXcgKj0gMiwgdGlsZWggKj0gMikgewotICAgICAgaWYgKHRpbGV3ID4gdykKLSAgICAgICAgdGlsZXcgPSB3OwotICAgICAgaWYgKHRpbGVoID4gaCkKLSAgICAgICAgdGlsZWggPSBoOwotICAgICAgbnRpbGVzdyA9ICh3ICsgdGlsZXcgLSAxKSAvIHRpbGV3OwotICAgICAgbnRpbGVzaCA9IChoICsgdGlsZWggLSAxKSAvIHRpbGVoOwotCi0gICAgICBqcGVnQnVmID0gbmV3IGJ5dGVbbnRpbGVzdyAqIG50aWxlc2hdW1RKLmJ1ZlNpemUodGlsZXcsIHRpbGVoLCBzdWJzYW1wKV07Ci0gICAgICBqcGVnU2l6ZSA9IG5ldyBpbnRbbnRpbGVzdyAqIG50aWxlc2hdOwotCi0gICAgICAvKiBDb21wcmVzc2lvbiB0ZXN0ICovCi0gICAgICBpZiAocXVpZXQgPT0gMSkKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiUtNHMgKCVzKSAgJS01cyAgICAlLTNkICAgIiwgcGZTdHIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIFRKLkZMQUdfQk9UVE9NVVApICE9IDAgPyAiQlUiIDogIlREIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgc3ViTmFtZUxvbmdbc3Vic2FtcF0sIGpwZWdRdWFsKTsKLSAgICAgIGZvciAoaSA9IDA7IGkgPCBoOyBpKyspCi0gICAgICAgIFN5c3RlbS5hcnJheWNvcHkoc3JjQnVmLCB3ICogcHMgKiBpLCB0bXBCdWYsIHBpdGNoICogaSwgdyAqIHBzKTsKLSAgICAgIHRqYy5zZXRKUEVHUXVhbGl0eShqcGVnUXVhbCk7Ci0gICAgICB0amMuc2V0U3Vic2FtcChzdWJzYW1wKTsKLQotICAgICAgaWYgKGRvWVVWKSB7Ci0gICAgICAgIHl1dkltYWdlID0gbmV3IFlVVkltYWdlKHRpbGV3LCB5dXZwYWQsIHRpbGVoLCBzdWJzYW1wKTsKLSAgICAgICAgQXJyYXlzLmZpbGwoeXV2SW1hZ2UuZ2V0QnVmKCksIChieXRlKTEyNyk7Ci0gICAgICB9Ci0KLSAgICAgIC8qIEJlbmNobWFyayAqLwotICAgICAgaXRlciA9IC13YXJtdXA7Ci0gICAgICBlbGFwc2VkID0gZWxhcHNlZEVuY29kZSA9IDAuMDsKLSAgICAgIHdoaWxlICh0cnVlKSB7Ci0gICAgICAgIGludCB0aWxlID0gMDsKLSAgICAgICAgdG90YWxKcGVnU2l6ZSA9IDA7Ci0gICAgICAgIHN0YXJ0ID0gZ2V0VGltZSgpOwotICAgICAgICBmb3IgKGludCB5ID0gMDsgeSA8IGg7IHkgKz0gdGlsZWgpIHsKLSAgICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IHc7IHggKz0gdGlsZXcsIHRpbGUrKykgewotICAgICAgICAgICAgaW50IHdpZHRoID0gTWF0aC5taW4odGlsZXcsIHcgLSB4KTsKLSAgICAgICAgICAgIGludCBoZWlnaHQgPSBNYXRoLm1pbih0aWxlaCwgaCAtIHkpOwotICAgICAgICAgICAgdGpjLnNldFNvdXJjZUltYWdlKHNyY0J1ZiwgeCwgeSwgd2lkdGgsIHBpdGNoLCBoZWlnaHQsIHBmKTsKLSAgICAgICAgICAgIGlmIChkb1lVVikgewotICAgICAgICAgICAgICBkb3VibGUgc3RhcnRFbmNvZGUgPSBnZXRUaW1lKCk7Ci0gICAgICAgICAgICAgIHl1dkltYWdlLnNldEJ1Zih5dXZJbWFnZS5nZXRCdWYoKSwgd2lkdGgsIHl1dnBhZCwgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2FtcCk7Ci0gICAgICAgICAgICAgIHRqYy5lbmNvZGVZVVYoeXV2SW1hZ2UsIGZsYWdzKTsKLSAgICAgICAgICAgICAgaWYgKGl0ZXIgPj0gMCkKLSAgICAgICAgICAgICAgICBlbGFwc2VkRW5jb2RlICs9IGdldFRpbWUoKSAtIHN0YXJ0RW5jb2RlOwotICAgICAgICAgICAgICB0amMuc2V0U291cmNlSW1hZ2UoeXV2SW1hZ2UpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGpjLmNvbXByZXNzKGpwZWdCdWZbdGlsZV0sIGZsYWdzKTsKLSAgICAgICAgICAgIGpwZWdTaXplW3RpbGVdID0gdGpjLmdldENvbXByZXNzZWRTaXplKCk7Ci0gICAgICAgICAgICB0b3RhbEpwZWdTaXplICs9IGpwZWdTaXplW3RpbGVdOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICBpdGVyKys7Ci0gICAgICAgIGlmIChpdGVyID49IDEpIHsKLSAgICAgICAgICBlbGFwc2VkICs9IGdldFRpbWUoKSAtIHN0YXJ0OwotICAgICAgICAgIGlmIChlbGFwc2VkID49IGJlbmNoVGltZSkKLSAgICAgICAgICAgIGJyZWFrOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoZG9ZVVYpCi0gICAgICAgIGVsYXBzZWQgLT0gZWxhcHNlZEVuY29kZTsKLQotICAgICAgaWYgKHF1aWV0ID09IDEpCi0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlLTVkICAlLTVkICAgIiwgdGlsZXcsIHRpbGVoKTsKLSAgICAgIGlmIChxdWlldCAhPSAwKSB7Ci0gICAgICAgIGlmIChkb1lVVikKLSAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJS02cyVzIiwKLSAgICAgICAgICAgIHNpZ0ZpZygoZG91YmxlKSh3ICogaCkgLyAxMDAwMDAwLiAqIChkb3VibGUpaXRlciAvIGVsYXBzZWRFbmNvZGUsIDQpLAotICAgICAgICAgICAgcXVpZXQgPT0gMiA/ICJcbiIgOiAiICAiKTsKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiUtNnMlcyIsCi0gICAgICAgICAgc2lnRmlnKChkb3VibGUpKHcgKiBoKSAvIDEwMDAwMDAuICogKGRvdWJsZSlpdGVyIC8gZWxhcHNlZCwgNCksCi0gICAgICAgICAgcXVpZXQgPT0gMiA/ICJcbiIgOiAiICAiKTsKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiUtNnMlcyIsCi0gICAgICAgICAgc2lnRmlnKChkb3VibGUpKHcgKiBoICogcHMpIC8gKGRvdWJsZSl0b3RhbEpwZWdTaXplLCA0KSwKLSAgICAgICAgICBxdWlldCA9PSAyID8gIlxuIiA6ICIgICIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIlxuJXMgc2l6ZTogJWQgeCAlZFxuIiwgZG9UaWxlID8gIlRpbGUiIDogIkltYWdlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgdGlsZXcsIHRpbGVoKTsKLSAgICAgICAgaWYgKGRvWVVWKSB7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIkVuY29kZSBZVVYgICAgLS0+IEZyYW1lIHJhdGU6ICAgICAgICAgJWYgZnBzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkb3VibGUpaXRlciAvIGVsYXBzZWRFbmNvZGUpOwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIgICAgICAgICAgICAgICAgICBPdXRwdXQgaW1hZ2Ugc2l6ZTogICVkIGJ5dGVzXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHl1dkltYWdlLmdldFNpemUoKSk7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiAgICAgICAgICAgICAgICAgIENvbXByZXNzaW9uIHJhdGlvOiAgJWY6MVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSh3ICogaCAqIHBzKSAvIChkb3VibGUpeXV2SW1hZ2UuZ2V0U2l6ZSgpKTsKLSAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiICAgICAgICAgICAgICAgICAgVGhyb3VnaHB1dDogICAgICAgICAlZiBNZWdhcGl4ZWxzL3NlY1xuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSh3ICogaCkgLyAxMDAwMDAwLiAqIChkb3VibGUpaXRlciAvIGVsYXBzZWRFbmNvZGUpOwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIgICAgICAgICAgICAgICAgICBPdXRwdXQgYml0IHN0cmVhbTogICVmIE1lZ2FiaXRzL3NlY1xuIiwKLSAgICAgICAgICAgIChkb3VibGUpeXV2SW1hZ2UuZ2V0U2l6ZSgpICogOC4gLyAxMDAwMDAwLiAqIChkb3VibGUpaXRlciAvIGVsYXBzZWRFbmNvZGUpOwotICAgICAgICB9Ci0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlcyAtLT4gRnJhbWUgcmF0ZTogICAgICAgICAlZiBmcHNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGRvWVVWID8gIkNvbXAgZnJvbSBZVVYiIDogIkNvbXByZXNzICAgICAiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKWl0ZXIgLyBlbGFwc2VkKTsKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiAgICAgICAgICAgICAgICAgIE91dHB1dCBpbWFnZSBzaXplOiAgJWQgYnl0ZXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRvdGFsSnBlZ1NpemUpOwotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiICAgICAgICAgICAgICAgICAgQ29tcHJlc3Npb24gcmF0aW86ICAlZjoxXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSh3ICogaCAqIHBzKSAvIChkb3VibGUpdG90YWxKcGVnU2l6ZSk7Ci0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIgICAgICAgICAgICAgICAgICBUaHJvdWdocHV0OiAgICAgICAgICVmIE1lZ2FwaXhlbHMvc2VjXG4iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSh3ICogaCkgLyAxMDAwMDAwLiAqIChkb3VibGUpaXRlciAvIGVsYXBzZWQpOwotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiICAgICAgICAgICAgICAgICAgT3V0cHV0IGJpdCBzdHJlYW06ICAlZiBNZWdhYml0cy9zZWNcbiIsCi0gICAgICAgICAgKGRvdWJsZSl0b3RhbEpwZWdTaXplICogOC4gLyAxMDAwMDAwLiAqIChkb3VibGUpaXRlciAvIGVsYXBzZWQpOwotICAgICAgfQotICAgICAgaWYgKHRpbGV3ID09IHcgJiYgdGlsZWggPT0gaCAmJiB3cml0ZSkgewotICAgICAgICBTdHJpbmcgdGVtcFN0ciA9IGZpbGVOYW1lICsgIl8iICsgc3ViTmFtZVtzdWJzYW1wXSArICJfIiArICJRIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAganBlZ1F1YWwgKyAiLmpwZyI7Ci0gICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0odGVtcFN0cik7Ci0gICAgICAgIGZvcy53cml0ZShqcGVnQnVmWzBdLCAwLCBqcGVnU2l6ZVswXSk7Ci0gICAgICAgIGZvcy5jbG9zZSgpOwotICAgICAgICBpZiAocXVpZXQgPT0gMCkKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlJlZmVyZW5jZSBpbWFnZSB3cml0dGVuIHRvICIgKyB0ZW1wU3RyKTsKLSAgICAgIH0KLQotICAgICAgLyogRGVjb21wcmVzc2lvbiB0ZXN0ICovCi0gICAgICBpZiAoIWNvbXBPbmx5KQotICAgICAgICBkZWNvbXAoc3JjQnVmLCBqcGVnQnVmLCBqcGVnU2l6ZSwgdG1wQnVmLCB3LCBoLCBzdWJzYW1wLCBqcGVnUXVhbCwKLSAgICAgICAgICAgICAgIGZpbGVOYW1lLCB0aWxldywgdGlsZWgpOwotCi0gICAgICBpZiAodGlsZXcgPT0gdyAmJiB0aWxlaCA9PSBoKSBicmVhazsKLSAgICB9Ci0gIH0KLQotCi0gIHN0YXRpYyB2b2lkIGRlY29tcFRlc3QoU3RyaW5nIGZpbGVOYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBUSlRyYW5zZm9ybWVyIHRqdDsKLSAgICBieXRlW11bXSBqcGVnQnVmID0gbnVsbDsKLSAgICBieXRlW10gc3JjQnVmOwotICAgIGludFtdIGpwZWdTaXplID0gbnVsbDsKLSAgICBpbnQgdG90YWxKcGVnU2l6ZTsKLSAgICBpbnQgdyA9IDAsIGggPSAwLCBzdWJzYW1wID0gLTEsIGNzID0gLTEsIF93LCBfaCwgX3RpbGV3LCBfdGlsZWgsCi0gICAgICBfbnRpbGVzdywgX250aWxlc2gsIF9zdWJzYW1wLCB4LCB5LCBpdGVyOwotICAgIGludCBudGlsZXN3ID0gMSwgbnRpbGVzaCA9IDE7Ci0gICAgZG91YmxlIHN0YXJ0LCBlbGFwc2VkOwotICAgIGludCBwcyA9IFRKLmdldFBpeGVsU2l6ZShwZiksIHRpbGU7Ci0KLSAgICBGaWxlSW5wdXRTdHJlYW0gZmlzID0gbmV3IEZpbGVJbnB1dFN0cmVhbShmaWxlTmFtZSk7Ci0gICAgaW50IHNyY1NpemUgPSAoaW50KWZpcy5nZXRDaGFubmVsKCkuc2l6ZSgpOwotICAgIHNyY0J1ZiA9IG5ldyBieXRlW3NyY1NpemVdOwotICAgIGZpcy5yZWFkKHNyY0J1ZiwgMCwgc3JjU2l6ZSk7Ci0gICAgZmlzLmNsb3NlKCk7Ci0KLSAgICBpbnQgaW5kZXggPSBmaWxlTmFtZS5sYXN0SW5kZXhPZignLicpOwotICAgIGlmIChpbmRleCA+PSAwKQotICAgICAgZmlsZU5hbWUgPSBuZXcgU3RyaW5nKGZpbGVOYW1lLnN1YnN0cmluZygwLCBpbmRleCkpOwotCi0gICAgdGp0ID0gbmV3IFRKVHJhbnNmb3JtZXIoKTsKLQotICAgIHRqdC5zZXRTb3VyY2VJbWFnZShzcmNCdWYsIHNyY1NpemUpOwotICAgIHcgPSB0anQuZ2V0V2lkdGgoKTsKLSAgICBoID0gdGp0LmdldEhlaWdodCgpOwotICAgIHN1YnNhbXAgPSB0anQuZ2V0U3Vic2FtcCgpOwotICAgIGNzID0gdGp0LmdldENvbG9yc3BhY2UoKTsKLQotICAgIGlmIChxdWlldCA9PSAxKSB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkFsbCBwZXJmb3JtYW5jZSB2YWx1ZXMgaW4gTXBpeGVscy9zZWNcbiIpOwotICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIkJpdG1hcCAgICAgSlBFRyAgIEpQRUcgICAgICVzICAlcyAgIFhmb3JtICAgQ29tcCAgICBEZWNvbXAgICIsCi0gICAgICAgICAgICAgICAgICAgICAgICAoZG9UaWxlID8gIlRpbGUgIiA6ICJJbWFnZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgKGRvVGlsZSA/ICJUaWxlICIgOiAiSW1hZ2UiKSk7Ci0gICAgICBpZiAoZG9ZVVYpCi0gICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkRlY29kZSIpOwotICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkZvcm1hdCAgICAgQ1MgICAgIFN1YnNhbXAgIFdpZHRoICBIZWlnaHQgIFBlcmYgICAgUmF0aW8gICBQZXJmICAgICIpOwotICAgICAgaWYgKGRvWVVWKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJQZXJmIik7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuIik7Ci0gICAgfSBlbHNlIGlmIChxdWlldCA9PSAwKQotICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIj4+Pj4+ICBKUEVHICVzIC0tPiAlcyAoJXMpICA8PDw8PFxuIiwKLSAgICAgICAgZm9ybWF0TmFtZShzdWJzYW1wLCBjcyksIHBpeEZvcm1hdFN0cltwZl0sCi0gICAgICAgIChmbGFncyAmIFRKLkZMQUdfQk9UVE9NVVApICE9IDAgPyAiQm90dG9tLXVwIiA6ICJUb3AtZG93biIpOwotCi0gICAgZm9yIChpbnQgdGlsZXcgPSBkb1RpbGUgPyAxNiA6IHcsIHRpbGVoID0gZG9UaWxlID8gMTYgOiBoOyA7Ci0gICAgICAgICB0aWxldyAqPSAyLCB0aWxlaCAqPSAyKSB7Ci0gICAgICBpZiAodGlsZXcgPiB3KQotICAgICAgICB0aWxldyA9IHc7Ci0gICAgICBpZiAodGlsZWggPiBoKQotICAgICAgICB0aWxlaCA9IGg7Ci0gICAgICBudGlsZXN3ID0gKHcgKyB0aWxldyAtIDEpIC8gdGlsZXc7Ci0gICAgICBudGlsZXNoID0gKGggKyB0aWxlaCAtIDEpIC8gdGlsZWg7Ci0KLSAgICAgIF93ID0gdzsgIF9oID0gaDsgIF90aWxldyA9IHRpbGV3OyAgX3RpbGVoID0gdGlsZWg7Ci0gICAgICBpZiAocXVpZXQgPT0gMCkgewotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiXG4lcyBzaXplOiAlZCB4ICVkIiwgKGRvVGlsZSA/ICJUaWxlIiA6ICJJbWFnZSIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICBfdGlsZXcsIF90aWxlaCk7Ci0gICAgICAgIGlmIChzZi5nZXROdW0oKSAhPSAxIHx8IHNmLmdldERlbm9tKCkgIT0gMSkKLSAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiIC0tPiAlZCB4ICVkIiwgc2YuZ2V0U2NhbGVkKF93KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZi5nZXRTY2FsZWQoX2gpKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgIH0gZWxzZSBpZiAocXVpZXQgPT0gMSkgewotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJS00cyAoJXMpICAlLTVzICAlLTVzICAgICIsIHBpeEZvcm1hdFN0cltwZl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgIChmbGFncyAmIFRKLkZMQUdfQk9UVE9NVVApICE9IDAgPyAiQlUiIDogIlREIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgY3NOYW1lW2NzXSwgc3ViTmFtZUxvbmdbc3Vic2FtcF0pOwotICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJS01ZCAgJS01ZCAgICIsIHRpbGV3LCB0aWxlaCk7Ci0gICAgICB9Ci0KLSAgICAgIF9zdWJzYW1wID0gc3Vic2FtcDsKLSAgICAgIGlmIChkb1RpbGUgfHwgeGZvcm1PcCAhPSBUSlRyYW5zZm9ybS5PUF9OT05FIHx8IHhmb3JtT3B0ICE9IDApIHsKLSAgICAgICAgaWYgKHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfVFJBTlNQT1NFIHx8Ci0gICAgICAgICAgICB4Zm9ybU9wID09IFRKVHJhbnNmb3JtLk9QX1RSQU5TVkVSU0UgfHwKLSAgICAgICAgICAgIHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfUk9UOTAgfHwKLSAgICAgICAgICAgIHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfUk9UMjcwKSB7Ci0gICAgICAgICAgX3cgPSBoOyAgX2ggPSB3OyAgX3RpbGV3ID0gdGlsZWg7ICBfdGlsZWggPSB0aWxldzsKLSAgICAgICAgfQotCi0gICAgICAgIGlmICgoeGZvcm1PcHQgJiBUSlRyYW5zZm9ybS5PUFRfR1JBWSkgIT0gMCkKLSAgICAgICAgICBfc3Vic2FtcCA9IFRKLlNBTVBfR1JBWTsKLSAgICAgICAgaWYgKHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfSEZMSVAgfHwKLSAgICAgICAgICAgIHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfUk9UMTgwKQotICAgICAgICAgIF93ID0gX3cgLSAoX3cgJSBUSi5nZXRNQ1VXaWR0aChfc3Vic2FtcCkpOwotICAgICAgICBpZiAoeGZvcm1PcCA9PSBUSlRyYW5zZm9ybS5PUF9WRkxJUCB8fAotICAgICAgICAgICAgeGZvcm1PcCA9PSBUSlRyYW5zZm9ybS5PUF9ST1QxODApCi0gICAgICAgICAgX2ggPSBfaCAtIChfaCAlIFRKLmdldE1DVUhlaWdodChfc3Vic2FtcCkpOwotICAgICAgICBpZiAoeGZvcm1PcCA9PSBUSlRyYW5zZm9ybS5PUF9UUkFOU1ZFUlNFIHx8Ci0gICAgICAgICAgICB4Zm9ybU9wID09IFRKVHJhbnNmb3JtLk9QX1JPVDkwKQotICAgICAgICAgIF93ID0gX3cgLSAoX3cgJSBUSi5nZXRNQ1VIZWlnaHQoX3N1YnNhbXApKTsKLSAgICAgICAgaWYgKHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfVFJBTlNWRVJTRSB8fAotICAgICAgICAgICAgeGZvcm1PcCA9PSBUSlRyYW5zZm9ybS5PUF9ST1QyNzApCi0gICAgICAgICAgX2ggPSBfaCAtIChfaCAlIFRKLmdldE1DVVdpZHRoKF9zdWJzYW1wKSk7Ci0gICAgICAgIF9udGlsZXN3ID0gKF93ICsgX3RpbGV3IC0gMSkgLyBfdGlsZXc7Ci0gICAgICAgIF9udGlsZXNoID0gKF9oICsgX3RpbGVoIC0gMSkgLyBfdGlsZWg7Ci0KLSAgICAgICAgaWYgKHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfVFJBTlNQT1NFIHx8Ci0gICAgICAgICAgICB4Zm9ybU9wID09IFRKVHJhbnNmb3JtLk9QX1RSQU5TVkVSU0UgfHwKLSAgICAgICAgICAgIHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfUk9UOTAgfHwKLSAgICAgICAgICAgIHhmb3JtT3AgPT0gVEpUcmFuc2Zvcm0uT1BfUk9UMjcwKSB7Ci0gICAgICAgICAgICBpZiAoX3N1YnNhbXAgPT0gVEouU0FNUF80MjIpCi0gICAgICAgICAgICAgIF9zdWJzYW1wID0gVEouU0FNUF80NDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChfc3Vic2FtcCA9PSBUSi5TQU1QXzQ0MCkKLSAgICAgICAgICAgICAgX3N1YnNhbXAgPSBUSi5TQU1QXzQyMjsKLSAgICAgICAgfQotCi0gICAgICAgIFRKVHJhbnNmb3JtW10gdCA9IG5ldyBUSlRyYW5zZm9ybVtfbnRpbGVzdyAqIF9udGlsZXNoXTsKLSAgICAgICAganBlZ0J1ZiA9IG5ldyBieXRlW19udGlsZXN3ICogX250aWxlc2hdW1RKLmJ1ZlNpemUoX3RpbGV3LCBfdGlsZWgsIHN1YnNhbXApXTsKLQotICAgICAgICBmb3IgKHkgPSAwLCB0aWxlID0gMDsgeSA8IF9oOyB5ICs9IF90aWxlaCkgewotICAgICAgICAgIGZvciAoeCA9IDA7IHggPCBfdzsgeCArPSBfdGlsZXcsIHRpbGUrKykgewotICAgICAgICAgICAgdFt0aWxlXSA9IG5ldyBUSlRyYW5zZm9ybSgpOwotICAgICAgICAgICAgdFt0aWxlXS53aWR0aCA9IE1hdGgubWluKF90aWxldywgX3cgLSB4KTsKLSAgICAgICAgICAgIHRbdGlsZV0uaGVpZ2h0ID0gTWF0aC5taW4oX3RpbGVoLCBfaCAtIHkpOwotICAgICAgICAgICAgdFt0aWxlXS54ID0geDsKLSAgICAgICAgICAgIHRbdGlsZV0ueSA9IHk7Ci0gICAgICAgICAgICB0W3RpbGVdLm9wID0geGZvcm1PcDsKLSAgICAgICAgICAgIHRbdGlsZV0ub3B0aW9ucyA9IHhmb3JtT3B0IHwgVEpUcmFuc2Zvcm0uT1BUX1RSSU07Ci0gICAgICAgICAgICBpZiAoKHRbdGlsZV0ub3B0aW9ucyAmIFRKVHJhbnNmb3JtLk9QVF9OT09VVFBVVCkgIT0gMCAmJgotICAgICAgICAgICAgICAgIGpwZWdCdWZbdGlsZV0gIT0gbnVsbCkKLSAgICAgICAgICAgICAganBlZ0J1Zlt0aWxlXSA9IG51bGw7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0KLSAgICAgICAgaXRlciA9IC13YXJtdXA7Ci0gICAgICAgIGVsYXBzZWQgPSAwLjsKLSAgICAgICAgd2hpbGUgKHRydWUpIHsKLSAgICAgICAgICBzdGFydCA9IGdldFRpbWUoKTsKLSAgICAgICAgICB0anQudHJhbnNmb3JtKGpwZWdCdWYsIHQsIGZsYWdzKTsKLSAgICAgICAgICBqcGVnU2l6ZSA9IHRqdC5nZXRUcmFuc2Zvcm1lZFNpemVzKCk7Ci0gICAgICAgICAgaXRlcisrOwotICAgICAgICAgIGlmIChpdGVyID49IDEpIHsKLSAgICAgICAgICAgIGVsYXBzZWQgKz0gZ2V0VGltZSgpIC0gc3RhcnQ7Ci0gICAgICAgICAgICBpZiAoZWxhcHNlZCA+PSBiZW5jaFRpbWUpCi0gICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgICB0ID0gbnVsbDsKLQotICAgICAgICBmb3IgKHRpbGUgPSAwLCB0b3RhbEpwZWdTaXplID0gMDsgdGlsZSA8IF9udGlsZXN3ICogX250aWxlc2g7IHRpbGUrKykKLSAgICAgICAgICB0b3RhbEpwZWdTaXplICs9IGpwZWdTaXplW3RpbGVdOwotCi0gICAgICAgIGlmIChxdWlldCAhPSAwKSB7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiUtNnMlcyUtNnMlcyIsCi0gICAgICAgICAgICBzaWdGaWcoKGRvdWJsZSkodyAqIGgpIC8gMTAwMDAwMC4gLyBlbGFwc2VkLCA0KSwKLSAgICAgICAgICAgIHF1aWV0ID09IDIgPyAiXG4iIDogIiAgIiwKLSAgICAgICAgICAgIHNpZ0ZpZygoZG91YmxlKSh3ICogaCAqIHBzKSAvIChkb3VibGUpdG90YWxKcGVnU2l6ZSwgNCksCi0gICAgICAgICAgICBxdWlldCA9PSAyID8gIlxuIiA6ICIgICIpOwotICAgICAgICB9IGVsc2UgaWYgKHF1aWV0ID09IDApIHsKLSAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiVHJhbnNmb3JtICAgICAtLT4gRnJhbWUgcmF0ZTogICAgICAgICAlZiBmcHNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgMS4wIC8gZWxhcHNlZCk7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiAgICAgICAgICAgICAgICAgIE91dHB1dCBpbWFnZSBzaXplOiAgJWQgYnl0ZXNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdG90YWxKcGVnU2l6ZSk7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiAgICAgICAgICAgICAgICAgIENvbXByZXNzaW9uIHJhdGlvOiAgJWY6MVxuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZG91YmxlKSh3ICogaCAqIHBzKSAvIChkb3VibGUpdG90YWxKcGVnU2l6ZSk7Ci0gICAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiAgICAgICAgICAgICAgICAgIFRocm91Z2hwdXQ6ICAgICAgICAgJWYgTWVnYXBpeGVscy9zZWNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSkodyAqIGgpIC8gMTAwMDAwMC4gLyBlbGFwc2VkKTsKLSAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiICAgICAgICAgICAgICAgICAgT3V0cHV0IGJpdCBzdHJlYW06ICAlZiBNZWdhYml0cy9zZWNcbiIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgKGRvdWJsZSl0b3RhbEpwZWdTaXplICogOC4gLyAxMDAwMDAwLiAvIGVsYXBzZWQpOwotICAgICAgICB9Ci0gICAgICB9IGVsc2UgewotICAgICAgICBpZiAocXVpZXQgPT0gMSkKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJOL0EgICAgIE4vQSAgICAgIik7Ci0gICAgICAgIGpwZWdCdWYgPSBuZXcgYnl0ZVsxXVtUSi5idWZTaXplKF90aWxldywgX3RpbGVoLCBzdWJzYW1wKV07Ci0gICAgICAgIGpwZWdTaXplID0gbmV3IGludFsxXTsKLSAgICAgICAganBlZ1NpemVbMF0gPSBzcmNTaXplOwotICAgICAgICBTeXN0ZW0uYXJyYXljb3B5KHNyY0J1ZiwgMCwganBlZ0J1ZlswXSwgMCwgc3JjU2l6ZSk7Ci0gICAgICB9Ci0KLSAgICAgIGlmICh3ID09IHRpbGV3KQotICAgICAgICBfdGlsZXcgPSBfdzsKLSAgICAgIGlmIChoID09IHRpbGVoKQotICAgICAgICBfdGlsZWggPSBfaDsKLSAgICAgIGlmICgoeGZvcm1PcHQgJiBUSlRyYW5zZm9ybS5PUFRfTk9PVVRQVVQpID09IDApCi0gICAgICAgIGRlY29tcChudWxsLCBqcGVnQnVmLCBqcGVnU2l6ZSwgbnVsbCwgX3csIF9oLCBfc3Vic2FtcCwgMCwKLSAgICAgICAgICAgICAgIGZpbGVOYW1lLCBfdGlsZXcsIF90aWxlaCk7Ci0gICAgICBlbHNlIGlmIChxdWlldCA9PSAxKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk4vQSIpOwotCi0gICAgICBqcGVnQnVmID0gbnVsbDsKLSAgICAgIGpwZWdTaXplID0gbnVsbDsKLQotICAgICAgaWYgKHRpbGV3ID09IHcgJiYgdGlsZWggPT0gaCkgYnJlYWs7Ci0gICAgfQotICB9Ci0KLQotICBzdGF0aWMgdm9pZCB1c2FnZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIGludCBpOwotICAgIFRKU2NhbGluZ0ZhY3RvcltdIHNjYWxpbmdGYWN0b3JzID0gVEouZ2V0U2NhbGluZ0ZhY3RvcnMoKTsKLSAgICBpbnQgbnNmID0gc2NhbGluZ0ZhY3RvcnMubGVuZ3RoOwotICAgIFN0cmluZyBjbGFzc05hbWUgPSBuZXcgVEpCZW5jaCgpLmdldENsYXNzKCkuZ2V0TmFtZSgpOwotCi0gICAgU3lzdGVtLm91dC5wcmludGxuKCJcblVTQUdFOiBqYXZhICIgKyBjbGFzc05hbWUpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgIDxJbnB1dGZpbGUgKEJNUCk+IDxRdWFsaXR5PiBbb3B0aW9uc11cbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgIGphdmEgIiArIGNsYXNzTmFtZSk7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgPElucHV0ZmlsZSAoSlBHKT4gW29wdGlvbnNdXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9wdGlvbnM6XG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1hbGxvYyA9IER5bmFtaWNhbGx5IGFsbG9jYXRlIEpQRUcgaW1hZ2UgYnVmZmVycyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWJvdHRvbXVwID0gVGVzdCBib3R0b20tdXAgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLXRpbGUgPSBUZXN0IHBlcmZvcm1hbmNlIG9mIHRoZSBjb2RlYyB3aGVuIHRoZSBpbWFnZSBpcyBlbmNvZGVkIGFzIHNlcGFyYXRlIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHRpbGVzIG9mIHZhcnlpbmcgc2l6ZXMuIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCItcmdiLCAtYmdyLCAtcmdieCwgLWJncngsIC14YmdyLCAteHJnYiA9Iik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIFRlc3QgdGhlIHNwZWNpZmllZCBjb2xvciBjb252ZXJzaW9uIHBhdGggaW4gdGhlIGNvZGVjIChkZWZhdWx0ID0gQkdSKSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWZhc3R1cHNhbXBsZSA9IFVzZSB0aGUgZmFzdGVzdCBjaHJvbWluYW5jZSB1cHNhbXBsaW5nIGFsZ29yaXRobSBhdmFpbGFibGUgaW4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgdGhlIHVuZGVybHlpbmcgY29kZWMiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1mYXN0ZGN0ID0gVXNlIHRoZSBmYXN0ZXN0IERDVC9JRENUIGFsZ29yaXRobXMgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGNvZGVjIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCItYWNjdXJhdGVkY3QgPSBVc2UgdGhlIG1vc3QgYWNjdXJhdGUgRENUL0lEQ1QgYWxnb3JpdGhtcyBhdmFpbGFibGUgaW4gdGhlIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHVuZGVybHlpbmcgY29kZWMiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1zdWJzYW1wIDxzPiA9IFdoZW4gdGVzdGluZyBKUEVHIGNvbXByZXNzaW9uLCB0aGlzIG9wdGlvbiBzcGVjaWZpZXMgdGhlIGxldmVsIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHRvIHVzZSAoPHM+ID0gNDQ0LCA0MjIsIDQ0MCwgNDIwLCA0MTEsIG9yIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIEdSQVkpLiAgVGhlIGRlZmF1bHQgaXMgdG8gdGVzdCBHcmF5c2NhbGUsIDQ6MjowLCA0OjI6MiwgYW5kIDQ6NDo0IGluIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHNlcXVlbmNlLiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLXF1aWV0ID0gT3V0cHV0IHJlc3VsdHMgaW4gdGFidWxhciByYXRoZXIgdGhhbiB2ZXJib3NlIGZvcm1hdCIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLXl1diA9IFRlc3QgWVVWIGVuY29kaW5nL2RlY29kaW5nIGZ1bmN0aW9ucyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLXl1dnBhZCA8cD4gPSBJZiB0ZXN0aW5nIFlVViBlbmNvZGluZy9kZWNvZGluZywgdGhpcyBzcGVjaWZpZXMgdGhlIG51bWJlciBvZiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBieXRlcyB0byB3aGljaCBlYWNoIHJvdyBvZiBlYWNoIHBsYW5lIGluIHRoZSBpbnRlcm1lZGlhdGUgWVVWIGltYWdlIGlzIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHBhZGRlZCAoZGVmYXVsdCA9IDEpIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCItc2NhbGUgTS9OID0gU2NhbGUgZG93biB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSBkZWNvbXByZXNzZWQgSlBFRyBpbWFnZSBieSBhIik7Ci0gICAgU3lzdGVtLm91dC5wcmludCAgKCIgICAgIGZhY3RvciBvZiBNL04gKE0vTiA9ICIpOwotICAgIGZvciAoaSA9IDA7IGkgPCBuc2Y7IGkrKykgewotICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiVkLyVkIiwgc2NhbGluZ0ZhY3RvcnNbaV0uZ2V0TnVtKCksCi0gICAgICAgICAgICAgICAgICAgICAgICBzY2FsaW5nRmFjdG9yc1tpXS5nZXREZW5vbSgpKTsKLSAgICAgIGlmIChuc2YgPT0gMiAmJiBpICE9IG5zZiAtIDEpCi0gICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIiBvciAiKTsKLSAgICAgIGVsc2UgaWYgKG5zZiA+IDIpIHsKLSAgICAgICAgaWYgKGkgIT0gbnNmIC0gMSkKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIsICIpOwotICAgICAgICBpZiAoaSA9PSBuc2YgLSAyKQotICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIm9yICIpOwotICAgICAgfQotICAgICAgaWYgKGkgJSA4ID09IDAgJiYgaSAhPSAwKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiAgICAgIik7Ci0gICAgfQotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiKSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWhmbGlwLCAtdmZsaXAsIC10cmFuc3Bvc2UsIC10cmFuc3ZlcnNlLCAtcm90OTAsIC1yb3QxODAsIC1yb3QyNzAgPSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBQZXJmb3JtIHRoZSBjb3JyZXNwb25kaW5nIGxvc3NsZXNzIHRyYW5zZm9ybSBwcmlvciB0byIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBkZWNvbXByZXNzaW9uICh0aGVzZSBvcHRpb25zIGFyZSBtdXR1YWxseSBleGNsdXNpdmUpIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCItZ3JheXNjYWxlID0gUGVyZm9ybSBsb3NzbGVzcyBncmF5c2NhbGUgY29udmVyc2lvbiBwcmlvciB0byBkZWNvbXByZXNzaW9uIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHRlc3QgKGNhbiBiZSBjb21iaW5lZCB3aXRoIHRoZSBvdGhlciB0cmFuc2Zvcm1zIGFib3ZlKSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWJlbmNodGltZSA8dD4gPSBSdW4gZWFjaCBiZW5jaG1hcmsgZm9yIGF0IGxlYXN0IDx0PiBzZWNvbmRzIChkZWZhdWx0ID0gNS4wKSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLXdhcm11cCA8dz4gPSBFeGVjdXRlIGVhY2ggYmVuY2htYXJrIDx3PiB0aW1lcyB0byBwcmltZSB0aGUgY2FjaGUgYmVmb3JlIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHRha2luZyBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMgKGRlZmF1bHQgPSAxKSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWNvbXBvbmx5ID0gU3RvcCBhZnRlciBydW5uaW5nIGNvbXByZXNzaW9uIHRlc3RzLiAgRG8gbm90IHRlc3QgZGVjb21wcmVzc2lvbi4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1ub3dyaXRlID0gRG8gbm90IHdyaXRlIHJlZmVyZW5jZSBvciBvdXRwdXQgaW1hZ2VzIChpbXByb3ZlcyBjb25zaXN0ZW5jeSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBvZiBwZXJmb3JtYW5jZSBtZWFzdXJlbWVudHMuKVxuIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCJOT1RFOiAgSWYgdGhlIHF1YWxpdHkgaXMgc3BlY2lmaWVkIGFzIGEgcmFuZ2UgKGUuZy4gOTAtMTAwKSwgYSBzZXBhcmF0ZSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigidGVzdCB3aWxsIGJlIHBlcmZvcm1lZCBmb3IgYWxsIHF1YWxpdHkgdmFsdWVzIGluIHRoZSByYW5nZS5cbiIpOwotICAgIFN5c3RlbS5leGl0KDEpOwotICB9Ci0KLQotICBwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmd2KSB7Ci0gICAgYnl0ZVtdIHNyY0J1ZiA9IG51bGw7ICBpbnQgdyA9IDAsIGggPSAwOwotICAgIGludCBtaW5RdWFsID0gLTEsIG1heFF1YWwgPSAtMTsKLSAgICBpbnQgbWluQXJnID0gMTsgIGludCByZXR2YWwgPSAwOwotICAgIGludCBzdWJzYW1wID0gLTE7Ci0KLSAgICB0cnkgewotCi0gICAgICBpZiAoYXJndi5sZW5ndGggPCBtaW5BcmcpCi0gICAgICAgIHVzYWdlKCk7Ci0KLSAgICAgIFN0cmluZyB0ZW1wU3RyID0gYXJndlswXS50b0xvd2VyQ2FzZSgpOwotICAgICAgaWYgKHRlbXBTdHIuZW5kc1dpdGgoIi5qcGciKSB8fCB0ZW1wU3RyLmVuZHNXaXRoKCIuanBlZyIpKQotICAgICAgICBkZWNvbXBPbmx5ID0gdHJ1ZTsKLQotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLQotICAgICAgaWYgKCFkZWNvbXBPbmx5KSB7Ci0gICAgICAgIG1pbkFyZyA9IDI7Ci0gICAgICAgIGlmIChhcmd2Lmxlbmd0aCA8IG1pbkFyZykKLSAgICAgICAgICB1c2FnZSgpOwotICAgICAgICB0cnkgewotICAgICAgICAgIG1pblF1YWwgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3ZbMV0pOwotICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkge30KLSAgICAgICAgaWYgKG1pblF1YWwgPCAxIHx8IG1pblF1YWwgPiAxMDApCi0gICAgICAgICAgdGhyb3cgbmV3IEV4Y2VwdGlvbigiUXVhbGl0eSBtdXN0IGJlIGJldHdlZW4gMSBhbmQgMTAwLiIpOwotICAgICAgICBpbnQgZGFzaEluZGV4ID0gYXJndlsxXS5pbmRleE9mKCctJyk7Ci0gICAgICAgIGlmIChkYXNoSW5kZXggPiAwICYmIGFyZ3ZbMV0ubGVuZ3RoKCkgPiBkYXNoSW5kZXggKyAxKSB7Ci0gICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgIG1heFF1YWwgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3ZbMV0uc3Vic3RyaW5nKGRhc2hJbmRleCArIDEpKTsKLSAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkge30KLSAgICAgICAgfQotICAgICAgICBpZiAobWF4UXVhbCA8IDEgfHwgbWF4UXVhbCA+IDEwMCkKLSAgICAgICAgICBtYXhRdWFsID0gbWluUXVhbDsKLSAgICAgIH0KLQotICAgICAgaWYgKGFyZ3YubGVuZ3RoID4gbWluQXJnKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBtaW5Bcmc7IGkgPCBhcmd2Lmxlbmd0aDsgaSsrKSB7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXRpbGUiKSkgewotICAgICAgICAgICAgZG9UaWxlID0gdHJ1ZTsgIHhmb3JtT3B0IHw9IFRKVHJhbnNmb3JtLk9QVF9DUk9QOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItZmFzdHVwc2FtcGxlIikpIHsKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNpbmcgZmFzdCB1cHNhbXBsaW5nIGNvZGVcbiIpOwotICAgICAgICAgICAgZmxhZ3MgfD0gVEouRkxBR19GQVNUVVBTQU1QTEU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1mYXN0ZGN0IikpIHsKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNpbmcgZmFzdGVzdCBEQ1QvSURDVCBhbGdvcml0aG1cbiIpOwotICAgICAgICAgICAgZmxhZ3MgfD0gVEouRkxBR19GQVNURENUOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItYWNjdXJhdGVkY3QiKSkgewotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJVc2luZyBtb3N0IGFjY3VyYXRlIERDVC9JRENUIGFsZ29yaXRobVxuIik7Ci0gICAgICAgICAgICBmbGFncyB8PSBUSi5GTEFHX0FDQ1VSQVRFRENUOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItcmdiIikpCi0gICAgICAgICAgICBwZiA9IFRKLlBGX1JHQjsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItcmdieCIpKQotICAgICAgICAgICAgcGYgPSBUSi5QRl9SR0JYOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1iZ3IiKSkKLSAgICAgICAgICAgIHBmID0gVEouUEZfQkdSOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1iZ3J4IikpCi0gICAgICAgICAgICBwZiA9IFRKLlBGX0JHUlg7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXhiZ3IiKSkKLSAgICAgICAgICAgIHBmID0gVEouUEZfWEJHUjsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCIteHJnYiIpKQotICAgICAgICAgICAgcGYgPSBUSi5QRl9YUkdCOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1ib3R0b211cCIpKQotICAgICAgICAgICAgZmxhZ3MgfD0gVEouRkxBR19CT1RUT01VUDsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItcXVpZXQiKSkKLSAgICAgICAgICAgIHF1aWV0ID0gMTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItcXEiKSkKLSAgICAgICAgICAgIHF1aWV0ID0gMjsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItc2NhbGUiKSAmJiBpIDwgYXJndi5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICBpbnQgdGVtcDEgPSAwLCB0ZW1wMiA9IDA7Ci0gICAgICAgICAgICBib29sZWFuIG1hdGNoID0gZmFsc2UsIHNjYW5uZWQgPSB0cnVlOwotICAgICAgICAgICAgU2Nhbm5lciBzY2FubmVyID0gbmV3IFNjYW5uZXIoYXJndlsrK2ldKS51c2VEZWxpbWl0ZXIoIi8iKTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgIHRlbXAxID0gc2Nhbm5lci5uZXh0SW50KCk7Ci0gICAgICAgICAgICAgIHRlbXAyID0gc2Nhbm5lci5uZXh0SW50KCk7Ci0gICAgICAgICAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7fQotICAgICAgICAgICAgaWYgKHRlbXAyIDw9IDApIHRlbXAyID0gMTsKLSAgICAgICAgICAgIGlmICh0ZW1wMSA+IDApIHsKLSAgICAgICAgICAgICAgVEpTY2FsaW5nRmFjdG9yW10gc2NhbGluZ0ZhY3RvcnMgPSBUSi5nZXRTY2FsaW5nRmFjdG9ycygpOwotICAgICAgICAgICAgICBmb3IgKGludCBqID0gMDsgaiA8IHNjYWxpbmdGYWN0b3JzLmxlbmd0aDsgaisrKSB7Ci0gICAgICAgICAgICAgICAgaWYgKChkb3VibGUpdGVtcDEgLyAoZG91YmxlKXRlbXAyID09Ci0gICAgICAgICAgICAgICAgICAgIChkb3VibGUpc2NhbGluZ0ZhY3RvcnNbal0uZ2V0TnVtKCkgLwotICAgICAgICAgICAgICAgICAgICAoZG91YmxlKXNjYWxpbmdGYWN0b3JzW2pdLmdldERlbm9tKCkpIHsKLSAgICAgICAgICAgICAgICAgIHNmID0gc2NhbGluZ0ZhY3RvcnNbal07Ci0gICAgICAgICAgICAgICAgICBtYXRjaCA9IHRydWU7ICAgYnJlYWs7Ci0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgIGlmICghbWF0Y2gpIHVzYWdlKCk7Ci0gICAgICAgICAgICB9IGVsc2UKLSAgICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLWhmbGlwIikpCi0gICAgICAgICAgICB4Zm9ybU9wID0gVEpUcmFuc2Zvcm0uT1BfSEZMSVA7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXZmbGlwIikpCi0gICAgICAgICAgICB4Zm9ybU9wID0gVEpUcmFuc2Zvcm0uT1BfVkZMSVA7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXRyYW5zcG9zZSIpKQotICAgICAgICAgICAgeGZvcm1PcCA9IFRKVHJhbnNmb3JtLk9QX1RSQU5TUE9TRTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItdHJhbnN2ZXJzZSIpKQotICAgICAgICAgICAgeGZvcm1PcCA9IFRKVHJhbnNmb3JtLk9QX1RSQU5TVkVSU0U7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXJvdDkwIikpCi0gICAgICAgICAgICB4Zm9ybU9wID0gVEpUcmFuc2Zvcm0uT1BfUk9UOTA7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXJvdDE4MCIpKQotICAgICAgICAgICAgeGZvcm1PcCA9IFRKVHJhbnNmb3JtLk9QX1JPVDE4MDsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItcm90MjcwIikpCi0gICAgICAgICAgICB4Zm9ybU9wID0gVEpUcmFuc2Zvcm0uT1BfUk9UMjcwOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1ncmF5c2NhbGUiKSkKLSAgICAgICAgICAgIHhmb3JtT3B0IHw9IFRKVHJhbnNmb3JtLk9QVF9HUkFZOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1ub291dHB1dCIpKQotICAgICAgICAgICAgeGZvcm1PcHQgfD0gVEpUcmFuc2Zvcm0uT1BUX05PT1VUUFVUOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1iZW5jaHRpbWUiKSAmJiBpIDwgYXJndi5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICBkb3VibGUgdGVtcCA9IC0xOwotICAgICAgICAgICAgdHJ5IHsKLSAgICAgICAgICAgICAgdGVtcCA9IERvdWJsZS5wYXJzZURvdWJsZShhcmd2WysraV0pOwotICAgICAgICAgICAgfSBjYXRjaCAoTnVtYmVyRm9ybWF0RXhjZXB0aW9uIGUpIHt9Ci0gICAgICAgICAgICBpZiAodGVtcCA+IDAuMCkKLSAgICAgICAgICAgICAgYmVuY2hUaW1lID0gdGVtcDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXl1diIpKSB7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlRlc3RpbmcgWVVWIHBsYW5hciBlbmNvZGluZy9kZWNvZGluZ1xuIik7Ci0gICAgICAgICAgICBkb1lVViA9IHRydWU7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi15dXZwYWQiKSAmJiBpIDwgYXJndi5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICBpbnQgdGVtcCA9IDA7Ci0gICAgICAgICAgICB0cnkgewotICAgICAgICAgICAgIHRlbXAgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3ZbKytpXSk7Ci0gICAgICAgICAgICB9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkge30KLSAgICAgICAgICAgIGlmICh0ZW1wID49IDEpCi0gICAgICAgICAgICAgIHl1dnBhZCA9IHRlbXA7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1zdWJzYW1wIikgJiYgaSA8IGFyZ3YubGVuZ3RoIC0gMSkgewotICAgICAgICAgICAgaSsrOwotICAgICAgICAgICAgaWYgKGFyZ3ZbaV0udG9VcHBlckNhc2UoKS5zdGFydHNXaXRoKCJHIikpCi0gICAgICAgICAgICAgIHN1YnNhbXAgPSBUSi5TQU1QX0dSQVk7Ci0gICAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldLmVxdWFscygiNDQ0IikpCi0gICAgICAgICAgICAgIHN1YnNhbXAgPSBUSi5TQU1QXzQ0NDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV0uZXF1YWxzKCI0MjIiKSkKLSAgICAgICAgICAgICAgc3Vic2FtcCA9IFRKLlNBTVBfNDIyOwotICAgICAgICAgICAgZWxzZSBpZiAoYXJndltpXS5lcXVhbHMoIjQ0MCIpKQotICAgICAgICAgICAgICBzdWJzYW1wID0gVEouU0FNUF80NDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldLmVxdWFscygiNDIwIikpCi0gICAgICAgICAgICAgIHN1YnNhbXAgPSBUSi5TQU1QXzQyMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV0uZXF1YWxzKCI0MTEiKSkKLSAgICAgICAgICAgICAgc3Vic2FtcCA9IFRKLlNBTVBfNDExOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItY29tcG9ubHkiKSkKLSAgICAgICAgICAgIGNvbXBPbmx5ID0gdHJ1ZTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItbm93cml0ZSIpKQotICAgICAgICAgICAgd3JpdGUgPSBmYWxzZTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItd2FybXVwIikgJiYgaSA8IGFyZ3YubGVuZ3RoIC0gMSkgewotICAgICAgICAgICAgaW50IHRlbXAgPSAtMTsKLSAgICAgICAgICAgIHRyeSB7Ci0gICAgICAgICAgICAgdGVtcCA9IEludGVnZXIucGFyc2VJbnQoYXJndlsrK2ldKTsKLSAgICAgICAgICAgIH0gY2F0Y2ggKE51bWJlckZvcm1hdEV4Y2VwdGlvbiBlKSB7fQotICAgICAgICAgICAgaWYgKHRlbXAgPj0gMCkgewotICAgICAgICAgICAgICB3YXJtdXAgPSB0ZW1wOwotICAgICAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiV2FybXVwIHJ1bnMgPSAlZFxuXG4iLCB3YXJtdXApOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItPyIpKQotICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgfQotICAgICAgfQotCi0gICAgICBpZiAoc2YgPT0gbnVsbCkKLSAgICAgICAgc2YgPSBuZXcgVEpTY2FsaW5nRmFjdG9yKDEsIDEpOwotCi0gICAgICBpZiAoKHNmLmdldE51bSgpICE9IDEgfHwgc2YuZ2V0RGVub20oKSAhPSAxKSAmJiBkb1RpbGUpIHsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJEaXNhYmxpbmcgdGlsZWQgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiB0ZXN0cywgYmVjYXVzZSB0aG9zZSB0ZXN0cyBkbyBub3QiKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJ3b3JrIHdoZW4gc2NhbGVkIGRlY29tcHJlc3Npb24gaXMgZW5hYmxlZC4iKTsKLSAgICAgICAgZG9UaWxlID0gZmFsc2U7Ci0gICAgICB9Ci0KLSAgICAgIGlmICghZGVjb21wT25seSkgewotICAgICAgICBpbnRbXSB3aWR0aCA9IG5ldyBpbnRbMV0sIGhlaWdodCA9IG5ldyBpbnRbMV07Ci0gICAgICAgIHNyY0J1ZiA9IGxvYWRJbWFnZShhcmd2WzBdLCB3aWR0aCwgaGVpZ2h0LCBwZik7Ci0gICAgICAgIHcgPSB3aWR0aFswXTsgIGggPSBoZWlnaHRbMF07Ci0gICAgICAgIGludCBpbmRleCA9IC0xOwotICAgICAgICBpZiAoKGluZGV4ID0gYXJndlswXS5sYXN0SW5kZXhPZignLicpKSA+PSAwKQotICAgICAgICAgIGFyZ3ZbMF0gPSBhcmd2WzBdLnN1YnN0cmluZygwLCBpbmRleCk7Ci0gICAgICB9Ci0KLSAgICAgIGlmIChxdWlldCA9PSAxICYmICFkZWNvbXBPbmx5KSB7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiQWxsIHBlcmZvcm1hbmNlIHZhbHVlcyBpbiBNcGl4ZWxzL3NlY1xuIik7Ci0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCJCaXRtYXAgICAgIEpQRUcgICAgIEpQRUcgICVzICAlcyAgICIsCi0gICAgICAgICAgKGRvVGlsZSA/ICJUaWxlICIgOiAiSW1hZ2UiKSwgKGRvVGlsZSA/ICJUaWxlICIgOiAiSW1hZ2UiKSk7Ci0gICAgICAgIGlmIChkb1lVVikKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJFbmNvZGUgICIpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJDb21wICAgIENvbXAgICAgRGVjb21wICAiKTsKLSAgICAgICAgaWYgKGRvWVVWKQotICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkRlY29kZSIpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiIpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJGb3JtYXQgICAgIFN1YnNhbXAgIFF1YWwgIFdpZHRoICBIZWlnaHQgICIpOwotICAgICAgICBpZiAoZG9ZVVYpCi0gICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiUGVyZiAgICAiKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludCgiUGVyZiAgICBSYXRpbyAgIFBlcmYgICAgIik7Ci0gICAgICAgIGlmIChkb1lVVikKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJQZXJmIik7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG4iKTsKLSAgICAgIH0KLQotICAgICAgaWYgKGRlY29tcE9ubHkpIHsKLSAgICAgICAgZGVjb21wVGVzdChhcmd2WzBdKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgICAgU3lzdGVtLmV4aXQocmV0dmFsKTsKLSAgICAgIH0KLQotICAgICAgU3lzdGVtLmdjKCk7Ci0gICAgICBpZiAoc3Vic2FtcCA+PSAwICYmIHN1YnNhbXAgPCBUSi5OVU1TQU1QKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSBtYXhRdWFsOyBpID49IG1pblF1YWw7IGktLSkKLSAgICAgICAgICBmdWxsVGVzdChzcmNCdWYsIHcsIGgsIHN1YnNhbXAsIGksIGFyZ3ZbMF0pOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiIpOwotICAgICAgfSBlbHNlIHsKLSAgICAgICAgZm9yIChpbnQgaSA9IG1heFF1YWw7IGkgPj0gbWluUXVhbDsgaS0tKQotICAgICAgICAgIGZ1bGxUZXN0KHNyY0J1ZiwgdywgaCwgVEouU0FNUF9HUkFZLCBpLCBhcmd2WzBdKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgICAgU3lzdGVtLmdjKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSBtYXhRdWFsOyBpID49IG1pblF1YWw7IGktLSkKLSAgICAgICAgICBmdWxsVGVzdChzcmNCdWYsIHcsIGgsIFRKLlNBTVBfNDIwLCBpLCBhcmd2WzBdKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgICAgU3lzdGVtLmdjKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSBtYXhRdWFsOyBpID49IG1pblF1YWw7IGktLSkKLSAgICAgICAgICBmdWxsVGVzdChzcmNCdWYsIHcsIGgsIFRKLlNBTVBfNDIyLCBpLCBhcmd2WzBdKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgICAgU3lzdGVtLmdjKCk7Ci0gICAgICAgIGZvciAoaW50IGkgPSBtYXhRdWFsOyBpID49IG1pblF1YWw7IGktLSkKLSAgICAgICAgICBmdWxsVGVzdChzcmNCdWYsIHcsIGgsIFRKLlNBTVBfNDQ0LCBpLCBhcmd2WzBdKTsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIiKTsKLSAgICAgIH0KLQotICAgIH0gY2F0Y2ggKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIkVSUk9SOiAiICsgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIHJldHZhbCA9IC0xOwotICAgIH0KLQotICAgIFN5c3RlbS5leGl0KHJldHZhbCk7Ci0gIH0KLQotfQpkaWZmIC0tZ2l0IGEvamF2YS9USkV4YW1wbGUuamF2YSBiL2phdmEvVEpFeGFtcGxlLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhMDk4MDcuLjAwMDAwMDAKLS0tIGEvamF2YS9USkV4YW1wbGUuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDM2MSArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKTIwMTEtMjAxMiwgMjAxNC0yMDE1IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0vKgotICogVGhpcyBwcm9ncmFtIGRlbW9uc3RyYXRlcyBob3cgdG8gY29tcHJlc3MgYW5kIGRlY29tcHJlc3MgSlBFRyBmaWxlcyB1c2luZwotICogdGhlIFR1cmJvSlBFRyBKTkkgd3JhcHBlcgotICovCi0KLWltcG9ydCBqYXZhLmlvLio7Ci1pbXBvcnQgamF2YS5hd3QuKjsKLWltcG9ydCBqYXZhLmF3dC5pbWFnZS4qOwotaW1wb3J0IGphdmEubmlvLio7Ci1pbXBvcnQgamF2YXguaW1hZ2Vpby4qOwotaW1wb3J0IGphdmF4LnN3aW5nLio7Ci1pbXBvcnQgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuKjsKLQotcHVibGljIGNsYXNzIFRKRXhhbXBsZSBpbXBsZW1lbnRzIFRKQ3VzdG9tRmlsdGVyIHsKLQotICBwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBjbGFzc25hbWUgPSBuZXcgVEpFeGFtcGxlKCkuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1c2FnZSgpIHRocm93cyBFeGNlcHRpb24gewotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG5VU0FHRTogamF2YSAiICsgY2xhc3NuYW1lICsgIiA8SW5wdXQgZmlsZT4gPE91dHB1dCBmaWxlPiBbb3B0aW9uc11cbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5wdXQgYW5kIG91dHB1dCBmaWxlcyBjYW4gYmUgYW55IGltYWdlIGZvcm1hdCB0aGF0IHRoZSBKYXZhIEltYWdlIEkvTyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiZXh0ZW5zaW9ucyB1bmRlcnN0YW5kLiAgSWYgZWl0aGVyIGZpbGVuYW1lIGVuZHMgaW4gYSAuanBnIGV4dGVuc2lvbiwgdGhlbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVHVyYm9KUEVHIHdpbGwgYmUgdXNlZCB0byBjb21wcmVzcyBvciBkZWNvbXByZXNzIHRoZSBmaWxlLlxuIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCJPcHRpb25zOlxuIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCItc2NhbGUgTS9OID0gaWYgdGhlIGlucHV0IGltYWdlIGlzIGEgSlBFRyBmaWxlLCBzY2FsZSB0aGUgd2lkdGgvaGVpZ2h0IG9mIHRoZSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnQoIiAgICAgICAgICAgICBvdXRwdXQgaW1hZ2UgYnkgYSBmYWN0b3Igb2YgTS9OIChNL04gPSAiKTsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IHNmLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50KHNmW2ldLmdldE51bSgpICsgIi8iICsgc2ZbaV0uZ2V0RGVub20oKSk7Ci0gICAgICBpZiAoc2YubGVuZ3RoID09IDIgJiYgaSAhPSBzZi5sZW5ndGggLSAxKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCIgb3IgIik7Ci0gICAgICBlbHNlIGlmIChzZi5sZW5ndGggPiAyKSB7Ci0gICAgICAgIGlmIChpICE9IHNmLmxlbmd0aCAtIDEpCi0gICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiLCAiKTsKLSAgICAgICAgaWYgKGkgPT0gc2YubGVuZ3RoIC0gMikKLSAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJvciAiKTsKLSAgICAgIH0KLSAgICB9Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIpXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1zYW1wIDw0NDR8NDIyfDQyMHxncmF5PiA9IElmIHRoZSBvdXRwdXQgaW1hZ2UgaXMgYSBKUEVHIGZpbGUsIHRoaXMgc3BlY2lmaWVzIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdG8gdXNlIHdoZW4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlY29tcHJlc3NpbmcgaXQuICBEZWZhdWx0IGlzIHRvIHVzZSB0aGUgc2FtZSBsZXZlbCIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgICAgICAgICAgICAgICAgb2Ygc3Vic2FtcGxpbmcgYXMgdGhlIGlucHV0LCBpZiB0aGUgaW5wdXQgaXMgYSBKUEVHIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlLCBvciA0OjQ6NCBvdGhlcndpc2UuXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1xIDwxLTEwMD4gPSBJZiB0aGUgb3V0cHV0IGltYWdlIGlzIGEgSlBFRyBmaWxlLCB0aGlzIHNwZWNpZmllcyB0aGUgSlBFRyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgIHF1YWxpdHkgdG8gdXNlIHdoZW4gcmVjb21wcmVzc2luZyBpdCAoZGVmYXVsdCA9IDk1KS5cbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWhmbGlwLCAtdmZsaXAsIC10cmFuc3Bvc2UsIC10cmFuc3ZlcnNlLCAtcm90OTAsIC1yb3QxODAsIC1yb3QyNzAgPSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBJZiB0aGUgaW5wdXQgaW1hZ2UgaXMgYSBKUEVHIGZpbGUsIHBlcmZvcm0gdGhlIGNvcnJlc3BvbmRpbmcgbG9zc2xlc3MiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgdHJhbnNmb3JtIHByaW9yIHRvIGRlY29tcHJlc3Npb24gKHRoZXNlIG9wdGlvbnMgYXJlIG11dHVhbGx5IGV4Y2x1c2l2ZSlcbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWdyYXlzY2FsZSA9IElmIHRoZSBpbnB1dCBpbWFnZSBpcyBhIEpQRUcgZmlsZSwgcGVyZm9ybSBsb3NzbGVzcyBncmF5c2NhbGUiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgY29udmVyc2lvbiBwcmlvciB0byBkZWNvbXByZXNzaW9uIChjYW4gYmUgY29tYmluZWQgd2l0aCB0aGUgb3RoZXIiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgdHJhbnNmb3JtcyBhYm92ZSlcbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWNyb3AgWCxZLFd4SCA9IElmIHRoZSBpbnB1dCBpbWFnZSBpcyBhIEpQRUcgZmlsZSwgcGVyZm9ybSBsb3NzbGVzcyBjcm9wcGluZyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBwcmlvciB0byBkZWNvbXByZXNzaW9uLiAgWCxZIHNwZWNpZmllcyB0aGUgdXBwZXIgbGVmdCBjb3JuZXIgb2YgdGhlIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGNyb3BwaW5nIHJlZ2lvbiwgYW5kIFd4SCBzcGVjaWZpZXMgaXRzIHdpZHRoIGFuZCBoZWlnaHQuICBYLFkgbXVzdCBiZSIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBldmVubHkgZGl2aWJsZSBieSB0aGUgTUNVIGJsb2NrIHNpemUgKDh4OCBpZiB0aGUgc291cmNlIGltYWdlIHdhcyIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICBjb21wcmVzc2VkIHVzaW5nIG5vIHN1YnNhbXBsaW5nIG9yIGdyYXlzY2FsZSwgb3IgMTZ4OCBmb3IgNDoyOjIgb3IgMTZ4MTYiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgZm9yIDQ6MjowLilcbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiLWRpc3BsYXkgPSBEaXNwbGF5IG91dHB1dCBpbWFnZSAoT3V0cHV0IGZpbGUgbmVlZCBub3QgYmUgc3BlY2lmaWVkIGluIHRoaXMiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgY2FzZS4pXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1mYXN0dXBzYW1wbGUgPSBVc2UgdGhlIGZhc3Rlc3QgY2hyb21pbmFuY2UgdXBzYW1wbGluZyBhbGdvcml0aG0gYXZhaWxhYmxlIGluIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIHRoZSB1bmRlcmx5aW5nIGNvZGVjXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1mYXN0ZGN0ID0gVXNlIHRoZSBmYXN0ZXN0IERDVC9JRENUIGFsZ29yaXRobXMgYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCIgICAgIGNvZGVjXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1hY2N1cmF0ZWRjdCA9IFVzZSB0aGUgbW9zdCBhY2N1cmF0ZSBEQ1QvSURDVCBhbGdvcml0aG1zIGF2YWlsYWJsZSBpbiB0aGUiKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIiAgICAgdW5kZXJseWluZyBjb2RlY1xuIik7Ci0gICAgU3lzdGVtLmV4aXQoMSk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBzYW1wTmFtZSA9IHsKLSAgICAiNDo0OjQiLCAiNDoyOjIiLCAiNDoyOjAiLCAiR3JheXNjYWxlIiwgIjQ6NDowIgotICB9OwotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpIHsKLQotICAgIEJ1ZmZlcmVkSW1hZ2UgaW1nID0gbnVsbDsKLSAgICBieXRlW10gYm1wQnVmID0gbnVsbDsKLSAgICBUSlRyYW5zZm9ybSB4Zm9ybSA9IG5ldyBUSlRyYW5zZm9ybSgpOwotICAgIGludCBmbGFncyA9IDA7Ci0KLSAgICB0cnkgewotCi0gICAgICBzZiA9IFRKLmdldFNjYWxpbmdGYWN0b3JzKCk7Ci0KLSAgICAgIGlmIChhcmd2Lmxlbmd0aCA8IDIpIHsKLSAgICAgICAgdXNhZ2UoKTsKLSAgICAgIH0KLQotICAgICAgVEpTY2FsaW5nRmFjdG9yIHNjYWxlRmFjdG9yID0gbmV3IFRKU2NhbGluZ0ZhY3RvcigxLCAxKTsKLSAgICAgIFN0cmluZyBpbkZvcm1hdCA9ICJqcGciLCBvdXRGb3JtYXQgPSAianBnIjsKLSAgICAgIGludCBvdXRTdWJzYW1wID0gLTEsIG91dFF1YWwgPSA5NTsKLSAgICAgIGJvb2xlYW4gZGlzcGxheSA9IGZhbHNlOwotCi0gICAgICBpZiAoYXJndi5sZW5ndGggPiAxKSB7Ci0gICAgICAgIGZvciAoaW50IGkgPSAxOyBpIDwgYXJndi5sZW5ndGg7IGkrKykgewotICAgICAgICAgIGlmIChhcmd2W2ldLmxlbmd0aCgpIDwgMikKLSAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgIGlmIChhcmd2W2ldLmxlbmd0aCgpID4gMiAmJgotICAgICAgICAgICAgICBhcmd2W2ldLnN1YnN0cmluZygwLCAzKS5lcXVhbHNJZ25vcmVDYXNlKCItc2MiKSkgewotICAgICAgICAgICAgaW50IG1hdGNoID0gMDsKLSAgICAgICAgICAgIGlmIChpIDwgYXJndi5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICAgIFN0cmluZ1tdIHNjYWxlQXJnID0gYXJndlsrK2ldLnNwbGl0KCIvIik7Ci0gICAgICAgICAgICAgIGlmIChzY2FsZUFyZy5sZW5ndGggPT0gMikgewotICAgICAgICAgICAgICAgIFRKU2NhbGluZ0ZhY3RvciB0ZW1wc2YgPQotICAgICAgICAgICAgICAgICAgbmV3IFRKU2NhbGluZ0ZhY3RvcihJbnRlZ2VyLnBhcnNlSW50KHNjYWxlQXJnWzBdKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSW50ZWdlci5wYXJzZUludChzY2FsZUFyZ1sxXSkpOwotICAgICAgICAgICAgICAgIGZvciAoaW50IGogPSAwOyBqIDwgc2YubGVuZ3RoOyBqKyspIHsKLSAgICAgICAgICAgICAgICAgIGlmICh0ZW1wc2YuZXF1YWxzKHNmW2pdKSkgewotICAgICAgICAgICAgICAgICAgICBzY2FsZUZhY3RvciA9IHNmW2pdOwotICAgICAgICAgICAgICAgICAgICBtYXRjaCA9IDE7Ci0gICAgICAgICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgICAgaWYgKG1hdGNoICE9IDEpIHVzYWdlKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1oIikgfHwgYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItPyIpKQotICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgICBpZiAoYXJndltpXS5sZW5ndGgoKSA+IDIgJiYKLSAgICAgICAgICAgICAgYXJndltpXS5zdWJzdHJpbmcoMCwgMykuZXF1YWxzSWdub3JlQ2FzZSgiLXNhIikpIHsKLSAgICAgICAgICAgIGlmIChpIDwgYXJndi5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICAgIGkrKzsKLSAgICAgICAgICAgICAgaWYgKGFyZ3ZbaV0uc3Vic3RyaW5nKDAsIDEpLmVxdWFsc0lnbm9yZUNhc2UoImciKSkKLSAgICAgICAgICAgICAgICBvdXRTdWJzYW1wID0gVEouU0FNUF9HUkFZOwotICAgICAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldLmVxdWFscygiNDQ0IikpCi0gICAgICAgICAgICAgICAgb3V0U3Vic2FtcCA9IFRKLlNBTVBfNDQ0OwotICAgICAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldLmVxdWFscygiNDIyIikpCi0gICAgICAgICAgICAgICAgb3V0U3Vic2FtcCA9IFRKLlNBTVBfNDIyOwotICAgICAgICAgICAgICBlbHNlIGlmIChhcmd2W2ldLmVxdWFscygiNDIwIikpCi0gICAgICAgICAgICAgICAgb3V0U3Vic2FtcCA9IFRKLlNBTVBfNDIwOwotICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgdXNhZ2UoKTsKLSAgICAgICAgICAgIH0gZWxzZQotICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5zdWJzdHJpbmcoMCwgMikuZXF1YWxzSWdub3JlQ2FzZSgiLXEiKSkgewotICAgICAgICAgICAgaWYgKGkgPCBhcmd2Lmxlbmd0aCAtIDEpIHsKLSAgICAgICAgICAgICAgaW50IHF1YWwgPSBJbnRlZ2VyLnBhcnNlSW50KGFyZ3ZbKytpXSk7Ci0gICAgICAgICAgICAgIGlmIChxdWFsID49IDEgJiYgcXVhbCA8PSAxMDApCi0gICAgICAgICAgICAgICAgb3V0UXVhbCA9IHF1YWw7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgfSBlbHNlCi0gICAgICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLnN1YnN0cmluZygwLCAyKS5lcXVhbHNJZ25vcmVDYXNlKCItZyIpKQotICAgICAgICAgICAgeGZvcm0ub3B0aW9ucyB8PSBUSlRyYW5zZm9ybS5PUFRfR1JBWTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItaGZsaXAiKSkKLSAgICAgICAgICAgIHhmb3JtLm9wID0gVEpUcmFuc2Zvcm0uT1BfSEZMSVA7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXZmbGlwIikpCi0gICAgICAgICAgICB4Zm9ybS5vcCA9IFRKVHJhbnNmb3JtLk9QX1ZGTElQOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi10cmFuc3Bvc2UiKSkKLSAgICAgICAgICAgIHhmb3JtLm9wID0gVEpUcmFuc2Zvcm0uT1BfVFJBTlNQT1NFOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi10cmFuc3ZlcnNlIikpCi0gICAgICAgICAgICB4Zm9ybS5vcCA9IFRKVHJhbnNmb3JtLk9QX1RSQU5TVkVSU0U7Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uZXF1YWxzSWdub3JlQ2FzZSgiLXJvdDkwIikpCi0gICAgICAgICAgICB4Zm9ybS5vcCA9IFRKVHJhbnNmb3JtLk9QX1JPVDkwOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1yb3QxODAiKSkKLSAgICAgICAgICAgIHhmb3JtLm9wID0gVEpUcmFuc2Zvcm0uT1BfUk9UMTgwOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1yb3QyNzAiKSkKLSAgICAgICAgICAgIHhmb3JtLm9wID0gVEpUcmFuc2Zvcm0uT1BfUk9UMjcwOwotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1jdXN0b20iKSkKLSAgICAgICAgICAgIHhmb3JtLmNmID0gbmV3IFRKRXhhbXBsZSgpOwotICAgICAgICAgIGVsc2UgaWYgKGFyZ3ZbaV0ubGVuZ3RoKCkgPiAyICYmCi0gICAgICAgICAgICAgICAgICAgYXJndltpXS5zdWJzdHJpbmcoMCwgMikuZXF1YWxzSWdub3JlQ2FzZSgiLWMiKSkgewotICAgICAgICAgICAgaWYgKGkgPj0gYXJndi5sZW5ndGggLSAxKQotICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgU3RyaW5nW10gY3JvcEFyZyA9IGFyZ3ZbKytpXS5zcGxpdCgiLCIpOwotICAgICAgICAgICAgaWYgKGNyb3BBcmcubGVuZ3RoICE9IDMpCi0gICAgICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgICAgICBTdHJpbmdbXSBkaW1BcmcgPSBjcm9wQXJnWzJdLnNwbGl0KCJbeFhdIik7Ci0gICAgICAgICAgICBpZiAoZGltQXJnLmxlbmd0aCAhPSAyKQotICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgaW50IHRlbXB4ID0gSW50ZWdlci5wYXJzZUludChjcm9wQXJnWzBdKTsKLSAgICAgICAgICAgIGludCB0ZW1weSA9IEludGVnZXIucGFyc2VJbnQoY3JvcEFyZ1sxXSk7Ci0gICAgICAgICAgICBpbnQgdGVtcHcgPSBJbnRlZ2VyLnBhcnNlSW50KGRpbUFyZ1swXSk7Ci0gICAgICAgICAgICBpbnQgdGVtcGggPSBJbnRlZ2VyLnBhcnNlSW50KGRpbUFyZ1sxXSk7Ci0gICAgICAgICAgICBpZiAodGVtcHggPCAwIHx8IHRlbXB5IDwgMCB8fCB0ZW1wdyA8IDAgfHwgdGVtcGggPCAwKQotICAgICAgICAgICAgICB1c2FnZSgpOwotICAgICAgICAgICAgeGZvcm0ueCA9IHRlbXB4OwotICAgICAgICAgICAgeGZvcm0ueSA9IHRlbXB5OwotICAgICAgICAgICAgeGZvcm0ud2lkdGggPSB0ZW1wdzsKLSAgICAgICAgICAgIHhmb3JtLmhlaWdodCA9IHRlbXBoOwotICAgICAgICAgICAgeGZvcm0ub3B0aW9ucyB8PSBUSlRyYW5zZm9ybS5PUFRfQ1JPUDsKLSAgICAgICAgICB9Ci0gICAgICAgICAgaWYgKGFyZ3ZbaV0uc3Vic3RyaW5nKDAsIDIpLmVxdWFsc0lnbm9yZUNhc2UoIi1kIikpCi0gICAgICAgICAgICBkaXNwbGF5ID0gdHJ1ZTsKLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItZmFzdHVwc2FtcGxlIikpIHsKLSAgICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiVXNpbmcgZmFzdCB1cHNhbXBsaW5nIGNvZGUiKTsKLSAgICAgICAgICAgIGZsYWdzIHw9IFRKLkZMQUdfRkFTVFVQU0FNUExFOwotICAgICAgICAgIH0KLSAgICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItZmFzdGRjdCIpKSB7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVzaW5nIGZhc3Rlc3QgRENUL0lEQ1QgYWxnb3JpdGhtIik7Ci0gICAgICAgICAgICBmbGFncyB8PSBUSi5GTEFHX0ZBU1REQ1Q7Ci0gICAgICAgICAgfQotICAgICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1hY2N1cmF0ZWRjdCIpKSB7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlVzaW5nIG1vc3QgYWNjdXJhdGUgRENUL0lEQ1QgYWxnb3JpdGhtIik7Ci0gICAgICAgICAgICBmbGFncyB8PSBUSi5GTEFHX0FDQ1VSQVRFRENUOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgU3RyaW5nW10gaW5GaWxlVG9rZW5zID0gYXJndlswXS5zcGxpdCgiXFwuIik7Ci0gICAgICBpZiAoaW5GaWxlVG9rZW5zLmxlbmd0aCA+IDEpCi0gICAgICAgIGluRm9ybWF0ID0gaW5GaWxlVG9rZW5zW2luRmlsZVRva2Vucy5sZW5ndGggLSAxXTsKLSAgICAgIFN0cmluZ1tdIG91dEZpbGVUb2tlbnM7Ci0gICAgICBpZiAoZGlzcGxheSkKLSAgICAgICAgb3V0Rm9ybWF0ID0gImJtcCI7Ci0gICAgICBlbHNlIHsKLSAgICAgICAgb3V0RmlsZVRva2VucyA9IGFyZ3ZbMV0uc3BsaXQoIlxcLiIpOwotICAgICAgICBpZiAob3V0RmlsZVRva2Vucy5sZW5ndGggPiAxKQotICAgICAgICAgIG91dEZvcm1hdCA9IG91dEZpbGVUb2tlbnNbb3V0RmlsZVRva2Vucy5sZW5ndGggLSAxXTsKLSAgICAgIH0KLQotICAgICAgRmlsZSBmaWxlID0gbmV3IEZpbGUoYXJndlswXSk7Ci0gICAgICBpbnQgd2lkdGgsIGhlaWdodDsKLQotICAgICAgaWYgKGluRm9ybWF0LmVxdWFsc0lnbm9yZUNhc2UoImpwZyIpKSB7Ci0gICAgICAgIEZpbGVJbnB1dFN0cmVhbSBmaXMgPSBuZXcgRmlsZUlucHV0U3RyZWFtKGZpbGUpOwotICAgICAgICBpbnQgaW5wdXRTaXplID0gZmlzLmF2YWlsYWJsZSgpOwotICAgICAgICBpZiAoaW5wdXRTaXplIDwgMSkgewotICAgICAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiSW5wdXQgZmlsZSBjb250YWlucyBubyBkYXRhIik7Ci0gICAgICAgICAgU3lzdGVtLmV4aXQoMSk7Ci0gICAgICAgIH0KLSAgICAgICAgYnl0ZVtdIGlucHV0QnVmID0gbmV3IGJ5dGVbaW5wdXRTaXplXTsKLSAgICAgICAgZmlzLnJlYWQoaW5wdXRCdWYpOwotICAgICAgICBmaXMuY2xvc2UoKTsKLQotICAgICAgICBUSkRlY29tcHJlc3NvciB0amQ7Ci0gICAgICAgIGlmICh4Zm9ybS5vcCAhPSBUSlRyYW5zZm9ybS5PUF9OT05FIHx8IHhmb3JtLm9wdGlvbnMgIT0gMCB8fAotICAgICAgICAgICAgeGZvcm0uY2YgIT0gbnVsbCkgewotICAgICAgICAgIFRKVHJhbnNmb3JtZXIgdGp0ID0gbmV3IFRKVHJhbnNmb3JtZXIoaW5wdXRCdWYpOwotICAgICAgICAgIFRKVHJhbnNmb3JtW10gdCA9IG5ldyBUSlRyYW5zZm9ybVsxXTsKLSAgICAgICAgICB0WzBdID0geGZvcm07Ci0gICAgICAgICAgdFswXS5vcHRpb25zIHw9IFRKVHJhbnNmb3JtLk9QVF9UUklNOwotICAgICAgICAgIFRKRGVjb21wcmVzc29yW10gdGpkeCA9IHRqdC50cmFuc2Zvcm0odCwgMCk7Ci0gICAgICAgICAgdGpkID0gdGpkeFswXTsKLSAgICAgICAgfSBlbHNlCi0gICAgICAgICAgdGpkID0gbmV3IFRKRGVjb21wcmVzc29yKGlucHV0QnVmKTsKLQotICAgICAgICB3aWR0aCA9IHRqZC5nZXRXaWR0aCgpOwotICAgICAgICBoZWlnaHQgPSB0amQuZ2V0SGVpZ2h0KCk7Ci0gICAgICAgIGludCBpblN1YnNhbXAgPSB0amQuZ2V0U3Vic2FtcCgpOwotICAgICAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlNvdXJjZSBJbWFnZTogIiArIHdpZHRoICsgIiB4ICIgKyBoZWlnaHQgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBwaXhlbHMsICIgKyBzYW1wTmFtZVtpblN1YnNhbXBdICsgIiBzdWJzYW1wbGluZyIpOwotICAgICAgICBpZiAob3V0U3Vic2FtcCA8IDApCi0gICAgICAgICAgb3V0U3Vic2FtcCA9IGluU3Vic2FtcDsKLQotICAgICAgICBpZiAob3V0Rm9ybWF0LmVxdWFsc0lnbm9yZUNhc2UoImpwZyIpICYmCi0gICAgICAgICAgICAoeGZvcm0ub3AgIT0gVEpUcmFuc2Zvcm0uT1BfTk9ORSB8fCB4Zm9ybS5vcHRpb25zICE9IDApICYmCi0gICAgICAgICAgICBzY2FsZUZhY3Rvci5pc09uZSgpKSB7Ci0gICAgICAgICAgZmlsZSA9IG5ldyBGaWxlKGFyZ3ZbMV0pOwotICAgICAgICAgIEZpbGVPdXRwdXRTdHJlYW0gZm9zID0gbmV3IEZpbGVPdXRwdXRTdHJlYW0oZmlsZSk7Ci0gICAgICAgICAgZm9zLndyaXRlKHRqZC5nZXRKUEVHQnVmKCksIDAsIHRqZC5nZXRKUEVHU2l6ZSgpKTsKLSAgICAgICAgICBmb3MuY2xvc2UoKTsKLSAgICAgICAgICBTeXN0ZW0uZXhpdCgwKTsKLSAgICAgICAgfQotCi0gICAgICAgIHdpZHRoID0gc2NhbGVGYWN0b3IuZ2V0U2NhbGVkKHdpZHRoKTsKLSAgICAgICAgaGVpZ2h0ID0gc2NhbGVGYWN0b3IuZ2V0U2NhbGVkKGhlaWdodCk7Ci0KLSAgICAgICAgaWYgKCFvdXRGb3JtYXQuZXF1YWxzSWdub3JlQ2FzZSgianBnIikpCi0gICAgICAgICAgaW1nID0gdGpkLmRlY29tcHJlc3Mod2lkdGgsIGhlaWdodCwgQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9SR0IsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOwotICAgICAgICBlbHNlCi0gICAgICAgICAgYm1wQnVmID0gdGpkLmRlY29tcHJlc3Mod2lkdGgsIDAsIGhlaWdodCwgVEouUEZfQkdSWCwgZmxhZ3MpOwotICAgICAgICB0amQuY2xvc2UoKTsKLSAgICAgIH0gZWxzZSB7Ci0gICAgICAgIGltZyA9IEltYWdlSU8ucmVhZChmaWxlKTsKLSAgICAgICAgaWYgKGltZyA9PSBudWxsKQotICAgICAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIklucHV0IGltYWdlIHR5cGUgbm90IHN1cHBvcnRlZC4iKTsKLSAgICAgICAgd2lkdGggPSBpbWcuZ2V0V2lkdGgoKTsKLSAgICAgICAgaGVpZ2h0ID0gaW1nLmdldEhlaWdodCgpOwotICAgICAgICBpZiAob3V0U3Vic2FtcCA8IDApIHsKLSAgICAgICAgICBpZiAoaW1nLmdldFR5cGUoKSA9PSBCdWZmZXJlZEltYWdlLlRZUEVfQllURV9HUkFZKQotICAgICAgICAgICAgb3V0U3Vic2FtcCA9IFRKLlNBTVBfR1JBWTsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBvdXRTdWJzYW1wID0gVEouU0FNUF80NDQ7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIFN5c3RlbS5nYygpOwotICAgICAgaWYgKCFkaXNwbGF5KQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJEZXN0LiBJbWFnZSAoIiArIG91dEZvcm1hdCArICIpOiAgIiArIHdpZHRoICsgIiB4ICIgKwotICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodCArICIgcGl4ZWxzIik7Ci0KLSAgICAgIGlmIChkaXNwbGF5KSB7Ci0gICAgICAgIEltYWdlSWNvbiBpY29uID0gbmV3IEltYWdlSWNvbihpbWcpOwotICAgICAgICBKTGFiZWwgbGFiZWwgPSBuZXcgSkxhYmVsKGljb24sIEpMYWJlbC5DRU5URVIpOwotICAgICAgICBKT3B0aW9uUGFuZS5zaG93TWVzc2FnZURpYWxvZyhudWxsLCBsYWJlbCwgIk91dHB1dCBJbWFnZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEpPcHRpb25QYW5lLlBMQUlOX01FU1NBR0UpOwotICAgICAgfSBlbHNlIGlmIChvdXRGb3JtYXQuZXF1YWxzSWdub3JlQ2FzZSgianBnIikpIHsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludGxuKCIsICIgKyBzYW1wTmFtZVtvdXRTdWJzYW1wXSArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAiIHN1YnNhbXBsaW5nLCBxdWFsaXR5ID0gIiArIG91dFF1YWwpOwotICAgICAgICBUSkNvbXByZXNzb3IgdGpjID0gbmV3IFRKQ29tcHJlc3NvcigpOwotICAgICAgICBpbnQganBlZ1NpemU7Ci0gICAgICAgIGJ5dGVbXSBqcGVnQnVmOwotCi0gICAgICAgIHRqYy5zZXRTdWJzYW1wKG91dFN1YnNhbXApOwotICAgICAgICB0amMuc2V0SlBFR1F1YWxpdHkob3V0UXVhbCk7Ci0gICAgICAgIGlmIChpbWcgIT0gbnVsbCkKLSAgICAgICAgICB0amMuc2V0U291cmNlSW1hZ2UoaW1nLCAwLCAwLCAwLCAwKTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgdGpjLnNldFNvdXJjZUltYWdlKGJtcEJ1ZiwgMCwgMCwgd2lkdGgsIDAsIGhlaWdodCwgVEouUEZfQkdSWCk7Ci0gICAgICAgIH0KLSAgICAgICAganBlZ0J1ZiA9IHRqYy5jb21wcmVzcyhmbGFncyk7Ci0gICAgICAgIGpwZWdTaXplID0gdGpjLmdldENvbXByZXNzZWRTaXplKCk7Ci0gICAgICAgIHRqYy5jbG9zZSgpOwotCi0gICAgICAgIGZpbGUgPSBuZXcgRmlsZShhcmd2WzFdKTsKLSAgICAgICAgRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlKTsKLSAgICAgICAgZm9zLndyaXRlKGpwZWdCdWYsIDAsIGpwZWdTaXplKTsKLSAgICAgICAgZm9zLmNsb3NlKCk7Ci0gICAgICB9IGVsc2UgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiIpOwotICAgICAgICBmaWxlID0gbmV3IEZpbGUoYXJndlsxXSk7Ci0gICAgICAgIEltYWdlSU8ud3JpdGUoaW1nLCBvdXRGb3JtYXQsIGZpbGUpOwotICAgICAgfQotCi0gICAgfSBjYXRjaChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIFN5c3RlbS5leGl0KC0xKTsKLSAgICB9Ci0gIH0KLQotICBwdWJsaWMgdm9pZCBjdXN0b21GaWx0ZXIoU2hvcnRCdWZmZXIgY29lZmZCdWZmZXIsIFJlY3RhbmdsZSBidWZmZXJSZWdpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBSZWN0YW5nbGUgcGxhbmVSZWdpb24sIGludCBjb21wb25lbnRJbmRleCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCB0cmFuc2Zvcm1JbmRleCwgVEpUcmFuc2Zvcm0gdHJhbnNmb3JtKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBmb3IgKGludCBpID0gMDsgaSA8IGJ1ZmZlclJlZ2lvbi53aWR0aCAqIGJ1ZmZlclJlZ2lvbi5oZWlnaHQ7IGkrKykgewotICAgICAgY29lZmZCdWZmZXIucHV0KGksIChzaG9ydCkoLWNvZWZmQnVmZmVyLmdldChpKSkpOwotICAgIH0KLSAgfQotCi0gIHN0YXRpYyBUSlNjYWxpbmdGYWN0b3JbXSBzZiA9IG51bGw7Ci19OwpkaWZmIC0tZ2l0IGEvamF2YS9USlVuaXRUZXN0LmphdmEgYi9qYXZhL1RKVW5pdFRlc3QuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ0ZTc5OC4uMDAwMDAwMAotLS0gYS9qYXZhL1RKVW5pdFRlc3QuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDk3MCArMCwwIEBACi0vKgotICogQ29weXJpZ2h0IChDKTIwMTEtMjAxNiBELiBSLiBDb21tYW5kZXIuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgbGlianBlZy10dXJibyBQcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiLAotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIENPTlRSSUJVVE9SUyBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotLyoKLSAqIFRoaXMgcHJvZ3JhbSB0ZXN0cyB0aGUgdmFyaW91cyBjb2RlIHBhdGhzIGluIHRoZSBUdXJib0pQRUcgSk5JIFdyYXBwZXIKLSAqLwotCi1pbXBvcnQgamF2YS5pby4qOwotaW1wb3J0IGphdmEudXRpbC4qOwotaW1wb3J0IGphdmEuYXd0LmltYWdlLio7Ci1pbXBvcnQgamF2YXguaW1hZ2Vpby4qOwotaW1wb3J0IGphdmEubmlvLio7Ci1pbXBvcnQgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuKjsKLQotcHVibGljIGNsYXNzIFRKVW5pdFRlc3QgewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBjbGFzc25hbWUgPQotICAgIG5ldyBUSlVuaXRUZXN0KCkuZ2V0Q2xhc3MoKS5nZXROYW1lKCk7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB1c2FnZSgpIHsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIlxuVVNBR0U6IGphdmEgIiArIGNsYXNzbmFtZSArICIgW29wdGlvbnNdXG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIk9wdGlvbnM6XG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi15dXYgPSB0ZXN0IFlVViBlbmNvZGluZy9kZWNvZGluZyBzdXBwb3J0XG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1ub3l1dnBhZCA9IGRvIG5vdCBwYWQgZWFjaCBsaW5lIG9mIGVhY2ggWSwgVSwgYW5kIFYgcGxhbmUgdG8gdGhlIG5lYXJlc3RcbiIpOwotICAgIFN5c3RlbS5vdXQucHJpbnRsbigiICAgICAgICAgICAgNC1ieXRlIGJvdW5kYXJ5XG4iKTsKLSAgICBTeXN0ZW0ub3V0LnByaW50bG4oIi1iaSA9IHRlc3QgQnVmZmVyZWRJbWFnZSBzdXBwb3J0XG4iKTsKLSAgICBTeXN0ZW0uZXhpdCgxKTsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZ1tdIHN1Yk5hbWVMb25nID0gewotICAgICI0OjQ6NCIsICI0OjI6MiIsICI0OjI6MCIsICJHUkFZIiwgIjQ6NDowIiwgIjQ6MToxIgotICB9OwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBTdHJpbmdbXSBzdWJOYW1lID0gewotICAgICI0NDQiLCAiNDIyIiwgIjQyMCIsICJHUkFZIiwgIjQ0MCIsICI0MTEiCi0gIH07Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nW10gcGl4Rm9ybWF0U3RyID0gewotICAgICJSR0IiLCAiQkdSIiwgIlJHQlgiLCAiQkdSWCIsICJYQkdSIiwgIlhSR0IiLCAiR3JheXNjYWxlIiwKLSAgICAiUkdCQSIsICJCR1JBIiwgIkFCR1IiLCAiQVJHQiIsICJDTVlLIgotICB9OwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIGFscGhhT2Zmc2V0ID0gewotICAgIC0xLCAtMSwgLTEsIC0xLCAtMSwgLTEsIC0xLCAzLCAzLCAwLCAwLCAtMQotICB9OwotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIF8zYnl0ZUZvcm1hdHMgPSB7Ci0gICAgVEouUEZfUkdCLCBUSi5QRl9CR1IKLSAgfTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gXzNieXRlRm9ybWF0c0JJID0gewotICAgIEJ1ZmZlcmVkSW1hZ2UuVFlQRV8zQllURV9CR1IKLSAgfTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gXzRieXRlRm9ybWF0cyA9IHsKLSAgICBUSi5QRl9SR0JYLCBUSi5QRl9CR1JYLCBUSi5QRl9YQkdSLCBUSi5QRl9YUkdCLCBUSi5QRl9DTVlLCi0gIH07Ci0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGludFtdIF80Ynl0ZUZvcm1hdHNCSSA9IHsKLSAgICBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0JHUiwgQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9SR0IsCi0gICAgQnVmZmVyZWRJbWFnZS5UWVBFXzRCWVRFX0FCR1IsIEJ1ZmZlcmVkSW1hZ2UuVFlQRV80QllURV9BQkdSX1BSRSwKLSAgICBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0IsIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQVJHQl9QUkUKLSAgfTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gb25seUdyYXkgPSB7Ci0gICAgVEouUEZfR1JBWQotICB9OwotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBvbmx5R3JheUJJID0gewotICAgIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9CWVRFX0dSQVkKLSAgfTsKLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gb25seVJHQiA9IHsKLSAgICBUSi5QRl9SR0IKLSAgfTsKLQotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGRvWVVWID0gZmFsc2U7Ci0gIHByaXZhdGUgc3RhdGljIGludCBwYWQgPSA0OwotICBwcml2YXRlIHN0YXRpYyBib29sZWFuIGJpID0gZmFsc2U7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGV4aXRTdGF0dXMgPSAwOwotCi0gIHByaXZhdGUgc3RhdGljIGludCBiaVR5cGVQRihpbnQgYmlUeXBlKSB7Ci0gICAgQnl0ZU9yZGVyIGJ5dGVPcmRlciA9IEJ5dGVPcmRlci5uYXRpdmVPcmRlcigpOwotICAgIHN3aXRjaChiaVR5cGUpIHsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFXzNCWVRFX0JHUjoKLSAgICAgICAgcmV0dXJuIFRKLlBGX0JHUjsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFXzRCWVRFX0FCR1I6Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV80QllURV9BQkdSX1BSRToKLSAgICAgICAgcmV0dXJuIFRKLlBGX0FCR1I7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9CWVRFX0dSQVk6Ci0gICAgICAgIHJldHVybiBUSi5QRl9HUkFZOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0JHUjoKLSAgICAgICAgaWYgKGJ5dGVPcmRlciA9PSBCeXRlT3JkZXIuQklHX0VORElBTikKLSAgICAgICAgICByZXR1cm4gVEouUEZfWEJHUjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiBUSi5QRl9SR0JYOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX1JHQjoKLSAgICAgICAgaWYgKGJ5dGVPcmRlciA9PSBCeXRlT3JkZXIuQklHX0VORElBTikKLSAgICAgICAgICByZXR1cm4gVEouUEZfWFJHQjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHJldHVybiBUSi5QRl9CR1JYOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0I6Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQVJHQl9QUkU6Ci0gICAgICAgIGlmIChieXRlT3JkZXIgPT0gQnl0ZU9yZGVyLkJJR19FTkRJQU4pCi0gICAgICAgICAgcmV0dXJuIFRKLlBGX0FSR0I7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICByZXR1cm4gVEouUEZfQkdSQTsKLSAgICB9Ci0gICAgcmV0dXJuIDA7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBTdHJpbmcgYmlUeXBlU3RyKGludCBiaVR5cGUpIHsKLSAgICBzd2l0Y2goYmlUeXBlKSB7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV8zQllURV9CR1I6Ci0gICAgICAgIHJldHVybiAiM0JZVEVfQkdSIjsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFXzRCWVRFX0FCR1I6Ci0gICAgICAgIHJldHVybiAiNEJZVEVfQUJHUiI7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV80QllURV9BQkdSX1BSRToKLSAgICAgICAgcmV0dXJuICI0QllURV9BQkdSX1BSRSI7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9CWVRFX0dSQVk6Ci0gICAgICAgIHJldHVybiAiQllURV9HUkFZIjsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9CR1I6Ci0gICAgICAgIHJldHVybiAiSU5UX0JHUiI7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfUkdCOgotICAgICAgICByZXR1cm4gIklOVF9SR0IiOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0I6Ci0gICAgICAgIHJldHVybiAiSU5UX0FSR0IiOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0JfUFJFOgotICAgICAgICByZXR1cm4gIklOVF9BUkdCX1BSRSI7Ci0gICAgfQotICAgIHJldHVybiAiVW5rbm93biI7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXRCdWYoYnl0ZVtdIGJ1ZiwgaW50IHcsIGludCBwaXRjaCwgaW50IGgsIGludCBwZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgaW50IHJvZmZzZXQgPSBUSi5nZXRSZWRPZmZzZXQocGYpOwotICAgIGludCBnb2Zmc2V0ID0gVEouZ2V0R3JlZW5PZmZzZXQocGYpOwotICAgIGludCBib2Zmc2V0ID0gVEouZ2V0Qmx1ZU9mZnNldChwZik7Ci0gICAgaW50IGFvZmZzZXQgPSBhbHBoYU9mZnNldFtwZl07Ci0gICAgaW50IHBzID0gVEouZ2V0UGl4ZWxTaXplKHBmKTsKLSAgICBpbnQgaW5kZXgsIHJvdywgY29sLCBoYWxmd2F5ID0gMTY7Ci0KLSAgICBpZiAocGYgPT0gVEouUEZfR1JBWSkgewotICAgICAgQXJyYXlzLmZpbGwoYnVmLCAoYnl0ZSkwKTsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGlmICgoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwKQotICAgICAgICAgICAgaW5kZXggPSBwaXRjaCAqIChoIC0gcm93IC0gMSkgKyBjb2w7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5kZXggPSBwaXRjaCAqIHJvdyArIGNvbDsKLSAgICAgICAgICBpZiAoKChyb3cgLyA4KSArIChjb2wgLyA4KSkgJSAyID09IDApCi0gICAgICAgICAgICBidWZbaW5kZXhdID0gKHJvdyA8IGhhbGZ3YXkpID8gKGJ5dGUpMjU1IDogMDsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBidWZbaW5kZXhdID0gKHJvdyA8IGhhbGZ3YXkpID8gNzYgOiAoYnl0ZSkyMjY7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybjsKLSAgICB9Ci0gICAgaWYgKHBmID09IFRKLlBGX0NNWUspIHsKLSAgICAgIEFycmF5cy5maWxsKGJ1ZiwgKGJ5dGUpMjU1KTsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGlmICgoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwKQotICAgICAgICAgICAgaW5kZXggPSAoaCAtIHJvdyAtIDEpICogdyArIGNvbDsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleCA9IHJvdyAqIHcgKyBjb2w7Ci0gICAgICAgICAgaWYgKCgocm93IC8gOCkgKyAoY29sIC8gOCkpICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICBpZiAocm93ID49IGhhbGZ3YXkpIGJ1ZltpbmRleCAqIHBzICsgM10gPSAwOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBidWZbaW5kZXggKiBwcyArIDJdID0gMDsKLSAgICAgICAgICAgIGlmIChyb3cgPCBoYWxmd2F5KQotICAgICAgICAgICAgICBidWZbaW5kZXggKiBwcyArIDFdID0gMDsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBBcnJheXMuZmlsbChidWYsIChieXRlKTApOwotICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgIGZvciAoY29sID0gMDsgY29sIDwgdzsgY29sKyspIHsKLSAgICAgICAgaWYgKChmbGFncyAmIFRKLkZMQUdfQk9UVE9NVVApICE9IDApCi0gICAgICAgICAgaW5kZXggPSBwaXRjaCAqIChoIC0gcm93IC0gMSkgKyBjb2wgKiBwczsKLSAgICAgICAgZWxzZQotICAgICAgICAgIGluZGV4ID0gcGl0Y2ggKiByb3cgKyBjb2wgKiBwczsKLSAgICAgICAgaWYgKCgocm93IC8gOCkgKyAoY29sIC8gOCkpICUgMiA9PSAwKSB7Ci0gICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpIHsKLSAgICAgICAgICAgIGJ1ZltpbmRleCArIHJvZmZzZXRdID0gKGJ5dGUpMjU1OwotICAgICAgICAgICAgYnVmW2luZGV4ICsgZ29mZnNldF0gPSAoYnl0ZSkyNTU7Ci0gICAgICAgICAgICBidWZbaW5kZXggKyBib2Zmc2V0XSA9IChieXRlKTI1NTsKLSAgICAgICAgICB9Ci0gICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgYnVmW2luZGV4ICsgcm9mZnNldF0gPSAoYnl0ZSkyNTU7Ci0gICAgICAgICAgaWYgKHJvdyA+PSBoYWxmd2F5KQotICAgICAgICAgICAgYnVmW2luZGV4ICsgZ29mZnNldF0gPSAoYnl0ZSkyNTU7Ci0gICAgICAgIH0KLSAgICAgICAgaWYgKGFvZmZzZXQgPj0gMCkKLSAgICAgICAgICBidWZbaW5kZXggKyBhb2Zmc2V0XSA9IChieXRlKTI1NTsKLSAgICAgIH0KLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGluaXRJbnRCdWYoaW50W10gYnVmLCBpbnQgdywgaW50IHBpdGNoLCBpbnQgaCwgaW50IHBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBpbnQgcnNoaWZ0ID0gVEouZ2V0UmVkT2Zmc2V0KHBmKSAqIDg7Ci0gICAgaW50IGdzaGlmdCA9IFRKLmdldEdyZWVuT2Zmc2V0KHBmKSAqIDg7Ci0gICAgaW50IGJzaGlmdCA9IFRKLmdldEJsdWVPZmZzZXQocGYpICogODsKLSAgICBpbnQgYXNoaWZ0ID0gYWxwaGFPZmZzZXRbcGZdICogODsKLSAgICBpbnQgaW5kZXgsIHJvdywgY29sLCBoYWxmd2F5ID0gMTY7Ci0KLSAgICBBcnJheXMuZmlsbChidWYsIDApOwotICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgIGZvciAoY29sID0gMDsgY29sIDwgdzsgY29sKyspIHsKLSAgICAgICAgaWYgKChmbGFncyAmIFRKLkZMQUdfQk9UVE9NVVApICE9IDApCi0gICAgICAgICAgaW5kZXggPSBwaXRjaCAqIChoIC0gcm93IC0gMSkgKyBjb2w7Ci0gICAgICAgIGVsc2UKLSAgICAgICAgICBpbmRleCA9IHBpdGNoICogcm93ICsgY29sOwotICAgICAgICBpZiAoKChyb3cgLyA4KSArIChjb2wgLyA4KSkgJSAyID09IDApIHsKLSAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkgewotICAgICAgICAgICAgYnVmW2luZGV4XSB8PSAoMjU1IDw8IHJzaGlmdCk7Ci0gICAgICAgICAgICBidWZbaW5kZXhdIHw9ICgyNTUgPDwgZ3NoaWZ0KTsKLSAgICAgICAgICAgIGJ1ZltpbmRleF0gfD0gKDI1NSA8PCBic2hpZnQpOwotICAgICAgICAgIH0KLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICBidWZbaW5kZXhdIHw9ICgyNTUgPDwgcnNoaWZ0KTsKLSAgICAgICAgICBpZiAocm93ID49IGhhbGZ3YXkpCi0gICAgICAgICAgICBidWZbaW5kZXhdIHw9ICgyNTUgPDwgZ3NoaWZ0KTsKLSAgICAgICAgfQotICAgICAgICBpZiAoYXNoaWZ0ID49IDApCi0gICAgICAgICAgYnVmW2luZGV4XSB8PSAoMjU1IDw8IGFzaGlmdCk7Ci0gICAgICB9Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBpbml0SW1nKEJ1ZmZlcmVkSW1hZ2UgaW1nLCBpbnQgcGYsIGludCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24gewotICAgIFdyaXRhYmxlUmFzdGVyIHdyID0gaW1nLmdldFJhc3RlcigpOwotICAgIGludCBpbWdUeXBlID0gaW1nLmdldFR5cGUoKTsKLSAgICBpZiAoaW1nVHlwZSA9PSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX1JHQiB8fAotICAgICAgICBpbWdUeXBlID09IEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQkdSIHx8Ci0gICAgICAgIGltZ1R5cGUgPT0gQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9BUkdCIHx8Ci0gICAgICAgIGltZ1R5cGUgPT0gQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9BUkdCX1BSRSkgewotICAgICAgU2luZ2xlUGl4ZWxQYWNrZWRTYW1wbGVNb2RlbCBzbSA9Ci0gICAgICAgIChTaW5nbGVQaXhlbFBhY2tlZFNhbXBsZU1vZGVsKWltZy5nZXRTYW1wbGVNb2RlbCgpOwotICAgICAgaW50IHBpdGNoID0gc20uZ2V0U2NhbmxpbmVTdHJpZGUoKTsKLSAgICAgIERhdGFCdWZmZXJJbnQgZGIgPSAoRGF0YUJ1ZmZlckludCl3ci5nZXREYXRhQnVmZmVyKCk7Ci0gICAgICBpbnRbXSBidWYgPSBkYi5nZXREYXRhKCk7Ci0gICAgICBpbml0SW50QnVmKGJ1ZiwgaW1nLmdldFdpZHRoKCksIHBpdGNoLCBpbWcuZ2V0SGVpZ2h0KCksIHBmLCBmbGFncyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbXBvbmVudFNhbXBsZU1vZGVsIHNtID0gKENvbXBvbmVudFNhbXBsZU1vZGVsKWltZy5nZXRTYW1wbGVNb2RlbCgpOwotICAgICAgaW50IHBpdGNoID0gc20uZ2V0U2NhbmxpbmVTdHJpZGUoKTsKLSAgICAgIERhdGFCdWZmZXJCeXRlIGRiID0gKERhdGFCdWZmZXJCeXRlKXdyLmdldERhdGFCdWZmZXIoKTsKLSAgICAgIGJ5dGVbXSBidWYgPSBkYi5nZXREYXRhKCk7Ci0gICAgICBpbml0QnVmKGJ1ZiwgaW1nLmdldFdpZHRoKCksIHBpdGNoLCBpbWcuZ2V0SGVpZ2h0KCksIHBmLCBmbGFncyk7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjaGVja1ZhbChpbnQgcm93LCBpbnQgY29sLCBpbnQgdiwgU3RyaW5nIHZuYW1lLCBpbnQgY3YpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgdiA9ICh2IDwgMCkgPyB2ICsgMjU2IDogdjsKLSAgICBpZiAodiA8IGN2IC0gMSB8fCB2ID4gY3YgKyAxKSB7Ci0gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb21wLiAiICsgdm5hbWUgKyAiIGF0ICIgKyByb3cgKyAiLCIgKyBjb2wgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNob3VsZCBiZSAiICsgY3YgKyAiLCBub3QgIiArIHYpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tWYWwwKGludCByb3csIGludCBjb2wsIGludCB2LCBTdHJpbmcgdm5hbWUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24gewotICAgIHYgPSAodiA8IDApID8gdiArIDI1NiA6IHY7Ci0gICAgaWYgKHYgPiAxKSB7Ci0gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb21wLiAiICsgdm5hbWUgKyAiIGF0ICIgKyByb3cgKyAiLCIgKyBjb2wgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNob3VsZCBiZSAwLCBub3QgIiArIHYpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIHZvaWQgY2hlY2tWYWwyNTUoaW50IHJvdywgaW50IGNvbCwgaW50IHYsIFN0cmluZyB2bmFtZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICB2ID0gKHYgPCAwKSA/IHYgKyAyNTYgOiB2OwotICAgIGlmICh2IDwgMjU0KSB7Ci0gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJDb21wLiAiICsgdm5hbWUgKyAiIGF0ICIgKyByb3cgKyAiLCIgKyBjb2wgKwotICAgICAgICAgICAgICAgICAgICAgICAgICAiIHNob3VsZCBiZSAyNTUsIG5vdCAiICsgdik7Ci0gICAgfQotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGNoZWNrQnVmKGJ5dGVbXSBidWYsIGludCB3LCBpbnQgcGl0Y2gsIGludCBoLCBpbnQgcGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Vic2FtcCwgVEpTY2FsaW5nRmFjdG9yIHNmLCBpbnQgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBpbnQgcm9mZnNldCA9IFRKLmdldFJlZE9mZnNldChwZik7Ci0gICAgaW50IGdvZmZzZXQgPSBUSi5nZXRHcmVlbk9mZnNldChwZik7Ci0gICAgaW50IGJvZmZzZXQgPSBUSi5nZXRCbHVlT2Zmc2V0KHBmKTsKLSAgICBpbnQgYW9mZnNldCA9IGFscGhhT2Zmc2V0W3BmXTsKLSAgICBpbnQgcHMgPSBUSi5nZXRQaXhlbFNpemUocGYpOwotICAgIGludCBpbmRleCwgcm93LCBjb2wsIHJldHZhbCA9IDE7Ci0gICAgaW50IGhhbGZ3YXkgPSAxNiAqIHNmLmdldE51bSgpIC8gc2YuZ2V0RGVub20oKTsKLSAgICBpbnQgYmxvY2tTaXplID0gOCAqIHNmLmdldE51bSgpIC8gc2YuZ2V0RGVub20oKTsKLQotICAgIHRyeSB7Ci0KLSAgICAgIGlmIChwZiA9PSBUSi5QRl9DTVlLKSB7Ci0gICAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IHc7IGNvbCsrKSB7Ci0gICAgICAgICAgICBpZiAoKGZsYWdzICYgVEouRkxBR19CT1RUT01VUCkgIT0gMCkKLSAgICAgICAgICAgICAgaW5kZXggPSAoaCAtIHJvdyAtIDEpICogdyArIGNvbDsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgaW5kZXggPSByb3cgKiB3ICsgY29sOwotICAgICAgICAgICAgYnl0ZSBjID0gYnVmW2luZGV4ICogcHNdOwotICAgICAgICAgICAgYnl0ZSBtID0gYnVmW2luZGV4ICogcHMgKyAxXTsKLSAgICAgICAgICAgIGJ5dGUgeSA9IGJ1ZltpbmRleCAqIHBzICsgMl07Ci0gICAgICAgICAgICBieXRlIGsgPSBidWZbaW5kZXggKiBwcyArIDNdOwotICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIGMsICJDIik7Ci0gICAgICAgICAgICBpZiAoKChyb3cgLyBibG9ja1NpemUpICsgKGNvbCAvIGJsb2NrU2l6ZSkpICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMjU1KHJvdywgY29sLCBtLCAiTSIpOwotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgeSwgIlkiKTsKLSAgICAgICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpCi0gICAgICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIGssICJLIik7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIGssICJLIik7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIHksICJZIik7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMjU1KHJvdywgY29sLCBrLCAiSyIpOwotICAgICAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIG0sICJNIik7Ci0gICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgbSwgIk0iKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgICAgcmV0dXJuIDE7Ci0gICAgICB9Ci0KLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaGFsZndheTsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGlmICgoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwKQotICAgICAgICAgICAgaW5kZXggPSBwaXRjaCAqIChoIC0gcm93IC0gMSkgKyBjb2wgKiBwczsKLSAgICAgICAgICBlbHNlCi0gICAgICAgICAgICBpbmRleCA9IHBpdGNoICogcm93ICsgY29sICogcHM7Ci0gICAgICAgICAgYnl0ZSByID0gYnVmW2luZGV4ICsgcm9mZnNldF07Ci0gICAgICAgICAgYnl0ZSBnID0gYnVmW2luZGV4ICsgZ29mZnNldF07Ci0gICAgICAgICAgYnl0ZSBiID0gYnVmW2luZGV4ICsgYm9mZnNldF07Ci0gICAgICAgICAgYnl0ZSBhID0gYW9mZnNldCA+PSAwID8gYnVmW2luZGV4ICsgYW9mZnNldF0gOiAoYnl0ZSkyNTU7Ci0gICAgICAgICAgaWYgKCgocm93IC8gYmxvY2tTaXplKSArIChjb2wgLyBibG9ja1NpemUpKSAlIDIgPT0gMCkgewotICAgICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpIHsKLSAgICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIHIsICJSIik7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMjU1KHJvdywgY29sLCBnLCAiRyIpOwotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgYiwgIkIiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMChyb3csIGNvbCwgciwgIlIiKTsKLSAgICAgICAgICAgICAgY2hlY2tWYWwwKHJvdywgY29sLCBnLCAiRyIpOwotICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIGIsICJCIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSkgewotICAgICAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkgewotICAgICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCByLCAiUiIsIDc2KTsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbChyb3csIGNvbCwgZywgIkciLCA3Nik7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIGIsICJCIiwgNzYpOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCByLCAiUiIsIDIyNik7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIGcsICJHIiwgMjI2KTsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbChyb3csIGNvbCwgYiwgIkIiLCAyMjYpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgciwgIlIiKTsKLSAgICAgICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpIHsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIGcsICJHIik7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIGcsICJHIik7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2hlY2tWYWwwKHJvdywgY29sLCBiLCAiQiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgYSwgIkEiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG4iICsgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dmFsID0gMDsKLSAgICB9Ci0KLSAgICBpZiAocmV0dmFsID09IDApIHsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGlmIChwZiA9PSBUSi5QRl9DTVlLKSB7Ci0gICAgICAgICAgICBpbnQgYyA9IGJ1ZltwaXRjaCAqIHJvdyArIGNvbCAqIHBzXTsKLSAgICAgICAgICAgIGludCBtID0gYnVmW3BpdGNoICogcm93ICsgY29sICogcHMgKyAxXTsKLSAgICAgICAgICAgIGludCB5ID0gYnVmW3BpdGNoICogcm93ICsgY29sICogcHMgKyAyXTsKLSAgICAgICAgICAgIGludCBrID0gYnVmW3BpdGNoICogcm93ICsgY29sICogcHMgKyAzXTsKLSAgICAgICAgICAgIGlmIChjIDwgMCkgYyArPSAyNTY7Ci0gICAgICAgICAgICBpZiAobSA8IDApIG0gKz0gMjU2OwotICAgICAgICAgICAgaWYgKHkgPCAwKSB5ICs9IDI1NjsKLSAgICAgICAgICAgIGlmIChrIDwgMCkgayArPSAyNTY7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJTNkLyUzZC8lM2QvJTNkICIsIGMsIG0sIHksIGspOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpbnQgciA9IGJ1ZltwaXRjaCAqIHJvdyArIGNvbCAqIHBzICsgcm9mZnNldF07Ci0gICAgICAgICAgICBpbnQgZyA9IGJ1ZltwaXRjaCAqIHJvdyArIGNvbCAqIHBzICsgZ29mZnNldF07Ci0gICAgICAgICAgICBpbnQgYiA9IGJ1ZltwaXRjaCAqIHJvdyArIGNvbCAqIHBzICsgYm9mZnNldF07Ci0gICAgICAgICAgICBpZiAociA8IDApIHIgKz0gMjU2OwotICAgICAgICAgICAgaWYgKGcgPCAwKSBnICs9IDI1NjsKLSAgICAgICAgICAgIGlmIChiIDwgMCkgYiArPSAyNTY7Ci0gICAgICAgICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJTNkLyUzZC8lM2QgIiwgciwgZywgYik7Ci0gICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlxuIik7Ci0gICAgICB9Ci0gICAgfQotICAgIHJldHVybiByZXR2YWw7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBpbnQgY2hlY2tJbnRCdWYoaW50W10gYnVmLCBpbnQgdywgaW50IHBpdGNoLCBpbnQgaCwgaW50IHBmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YnNhbXAsIFRKU2NhbGluZ0ZhY3RvciBzZiwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgaW50IHJzaGlmdCA9IFRKLmdldFJlZE9mZnNldChwZikgKiA4OwotICAgIGludCBnc2hpZnQgPSBUSi5nZXRHcmVlbk9mZnNldChwZikgKiA4OwotICAgIGludCBic2hpZnQgPSBUSi5nZXRCbHVlT2Zmc2V0KHBmKSAqIDg7Ci0gICAgaW50IGFzaGlmdCA9IGFscGhhT2Zmc2V0W3BmXSAqIDg7Ci0gICAgaW50IGluZGV4LCByb3csIGNvbCwgcmV0dmFsID0gMTsKLSAgICBpbnQgaGFsZndheSA9IDE2ICogc2YuZ2V0TnVtKCkgLyBzZi5nZXREZW5vbSgpOwotICAgIGludCBibG9ja1NpemUgPSA4ICogc2YuZ2V0TnVtKCkgLyBzZi5nZXREZW5vbSgpOwotCi0gICAgdHJ5IHsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaGFsZndheTsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGlmICgoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwKQotICAgICAgICAgICAgaW5kZXggPSBwaXRjaCAqIChoIC0gcm93IC0gMSkgKyBjb2w7Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgaW5kZXggPSBwaXRjaCAqIHJvdyArIGNvbDsKLSAgICAgICAgICBpbnQgciA9IChidWZbaW5kZXhdID4+IHJzaGlmdCkgJiAweEZGOwotICAgICAgICAgIGludCBnID0gKGJ1ZltpbmRleF0gPj4gZ3NoaWZ0KSAmIDB4RkY7Ci0gICAgICAgICAgaW50IGIgPSAoYnVmW2luZGV4XSA+PiBic2hpZnQpICYgMHhGRjsKLSAgICAgICAgICBpbnQgYSA9IGFzaGlmdCA+PSAwID8gKGJ1ZltpbmRleF0gPj4gYXNoaWZ0KSAmIDB4RkYgOiAyNTU7Ci0gICAgICAgICAgaWYgKCgocm93IC8gYmxvY2tTaXplKSArIChjb2wgLyBibG9ja1NpemUpKSAlIDIgPT0gMCkgewotICAgICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpIHsKLSAgICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIHIsICJSIik7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMjU1KHJvdywgY29sLCBnLCAiRyIpOwotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgYiwgIkIiKTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsMChyb3csIGNvbCwgciwgIlIiKTsKLSAgICAgICAgICAgICAgY2hlY2tWYWwwKHJvdywgY29sLCBnLCAiRyIpOwotICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIGIsICJCIik7Ci0gICAgICAgICAgICB9Ci0gICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIGlmIChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSkgewotICAgICAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkgewotICAgICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCByLCAiUiIsIDc2KTsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbChyb3csIGNvbCwgZywgIkciLCA3Nik7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIGIsICJCIiwgNzYpOwotICAgICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCByLCAiUiIsIDIyNik7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIGcsICJHIiwgMjI2KTsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbChyb3csIGNvbCwgYiwgIkIiLCAyMjYpOwotICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgciwgIlIiKTsKLSAgICAgICAgICAgICAgaWYgKHJvdyA8IGhhbGZ3YXkpIHsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIGcsICJHIik7Ci0gICAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwyNTUocm93LCBjb2wsIGcsICJHIik7Ci0gICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICAgY2hlY2tWYWwwKHJvdywgY29sLCBiLCAiQiIpOwotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgYSwgIkEiKTsKLSAgICAgICAgfQotICAgICAgfQotICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG4iICsgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dmFsID0gMDsKLSAgICB9Ci0KLSAgICBpZiAocmV0dmFsID09IDApIHsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgaDsgcm93KyspIHsKLSAgICAgICAgZm9yIChjb2wgPSAwOyBjb2wgPCB3OyBjb2wrKykgewotICAgICAgICAgIGludCByID0gKGJ1ZltwaXRjaCAqIHJvdyArIGNvbF0gPj4gcnNoaWZ0KSAmIDB4RkY7Ci0gICAgICAgICAgaW50IGcgPSAoYnVmW3BpdGNoICogcm93ICsgY29sXSA+PiBnc2hpZnQpICYgMHhGRjsKLSAgICAgICAgICBpbnQgYiA9IChidWZbcGl0Y2ggKiByb3cgKyBjb2xdID4+IGJzaGlmdCkgJiAweEZGOwotICAgICAgICAgIGlmIChyIDwgMCkgciArPSAyNTY7Ci0gICAgICAgICAgaWYgKGcgPCAwKSBnICs9IDI1NjsKLSAgICAgICAgICBpZiAoYiA8IDApIGIgKz0gMjU2OwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlM2QvJTNkLyUzZCAiLCByLCBnLCBiKTsKLSAgICAgICAgfQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJcbiIpOwotICAgICAgfQotICAgIH0KLSAgICByZXR1cm4gcmV0dmFsOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGNoZWNrSW1nKEJ1ZmZlcmVkSW1hZ2UgaW1nLCBpbnQgcGYsIGludCBzdWJzYW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVEpTY2FsaW5nRmFjdG9yIHNmLCBpbnQgZmxhZ3MpIHRocm93cyBFeGNlcHRpb24gewotICAgIFdyaXRhYmxlUmFzdGVyIHdyID0gaW1nLmdldFJhc3RlcigpOwotICAgIGludCBpbWdUeXBlID0gaW1nLmdldFR5cGUoKTsKLSAgICBpZiAoaW1nVHlwZSA9PSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX1JHQiB8fAotICAgICAgICBpbWdUeXBlID09IEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQkdSIHx8Ci0gICAgICAgIGltZ1R5cGUgPT0gQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9BUkdCIHx8Ci0gICAgICAgIGltZ1R5cGUgPT0gQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9BUkdCX1BSRSkgewotICAgICAgU2luZ2xlUGl4ZWxQYWNrZWRTYW1wbGVNb2RlbCBzbSA9Ci0gICAgICAgIChTaW5nbGVQaXhlbFBhY2tlZFNhbXBsZU1vZGVsKWltZy5nZXRTYW1wbGVNb2RlbCgpOwotICAgICAgaW50IHBpdGNoID0gc20uZ2V0U2NhbmxpbmVTdHJpZGUoKTsKLSAgICAgIERhdGFCdWZmZXJJbnQgZGIgPSAoRGF0YUJ1ZmZlckludCl3ci5nZXREYXRhQnVmZmVyKCk7Ci0gICAgICBpbnRbXSBidWYgPSBkYi5nZXREYXRhKCk7Ci0gICAgICByZXR1cm4gY2hlY2tJbnRCdWYoYnVmLCBpbWcuZ2V0V2lkdGgoKSwgcGl0Y2gsIGltZy5nZXRIZWlnaHQoKSwgcGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3Vic2FtcCwgc2YsIGZsYWdzKTsKLSAgICB9IGVsc2UgewotICAgICAgQ29tcG9uZW50U2FtcGxlTW9kZWwgc20gPSAoQ29tcG9uZW50U2FtcGxlTW9kZWwpaW1nLmdldFNhbXBsZU1vZGVsKCk7Ci0gICAgICBpbnQgcGl0Y2ggPSBzbS5nZXRTY2FubGluZVN0cmlkZSgpOwotICAgICAgRGF0YUJ1ZmZlckJ5dGUgZGIgPSAoRGF0YUJ1ZmZlckJ5dGUpd3IuZ2V0RGF0YUJ1ZmZlcigpOwotICAgICAgYnl0ZVtdIGJ1ZiA9IGRiLmdldERhdGEoKTsKLSAgICAgIHJldHVybiBjaGVja0J1ZihidWYsIGltZy5nZXRXaWR0aCgpLCBwaXRjaCwgaW1nLmdldEhlaWdodCgpLCBwZiwgc3Vic2FtcCwKLSAgICAgICAgICAgICAgICAgICAgICBzZiwgZmxhZ3MpOwotICAgIH0KLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGludCBQQUQoaW50IHYsIGludCBwKSB7Ci0gICAgcmV0dXJuICgodiArIChwKSAtIDEpICYgKH4oKHApIC0gMSkpKTsKLSAgfQotCi0gIHByaXZhdGUgc3RhdGljIGludCBjaGVja0J1ZllVVihieXRlW10gYnVmLCBpbnQgc2l6ZSwgaW50IHcsIGludCBoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YnNhbXAsIFRKU2NhbGluZ0ZhY3RvciBzZikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBFeGNlcHRpb24gewotICAgIGludCByb3csIGNvbDsKLSAgICBpbnQgaHNmID0gVEouZ2V0TUNVV2lkdGgoc3Vic2FtcCkgLyA4LCB2c2YgPSBUSi5nZXRNQ1VIZWlnaHQoc3Vic2FtcCkgLyA4OwotICAgIGludCBwdyA9IFBBRCh3LCBoc2YpLCBwaCA9IFBBRChoLCB2c2YpOwotICAgIGludCBjdyA9IHB3IC8gaHNmLCBjaCA9IHBoIC8gdnNmOwotICAgIGludCB5cGl0Y2ggPSBQQUQocHcsIHBhZCksIHV2cGl0Y2ggPSBQQUQoY3csIHBhZCk7Ci0gICAgaW50IHJldHZhbCA9IDE7Ci0gICAgaW50IGNvcnJlY3RzaXplID0geXBpdGNoICogcGggKwotICAgICAgICAgICAgICAgICAgICAgIChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSA/IDAgOiB1dnBpdGNoICogY2ggKiAyKTsKLSAgICBpbnQgaGFsZndheSA9IDE2ICogc2YuZ2V0TnVtKCkgLyBzZi5nZXREZW5vbSgpOwotICAgIGludCBibG9ja1NpemUgPSA4ICogc2YuZ2V0TnVtKCkgLyBzZi5nZXREZW5vbSgpOwotCi0gICAgdHJ5IHsKLSAgICAgIGlmIChzaXplICE9IGNvcnJlY3RzaXplKQotICAgICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJJbmNvcnJlY3Qgc2l6ZSAiICsgc2l6ZSArICIuICBTaG91bGQgYmUgIiArCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29ycmVjdHNpemUpOwotCi0gICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IHBoOyByb3crKykgewotICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IHB3OyBjb2wrKykgewotICAgICAgICAgIGJ5dGUgeSA9IGJ1Zlt5cGl0Y2ggKiByb3cgKyBjb2xdOwotICAgICAgICAgIGlmICgoKHJvdyAvIGJsb2NrU2l6ZSkgKyAoY29sIC8gYmxvY2tTaXplKSkgJSAyID09IDApIHsKLSAgICAgICAgICAgIGlmIChyb3cgPCBoYWxmd2F5KQotICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgeSwgIlkiKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgY2hlY2tWYWwwKHJvdywgY29sLCB5LCAiWSIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkKLSAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIHksICJZIiwgNzYpOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICBjaGVja1ZhbChyb3csIGNvbCwgeSwgIlkiLCAyMjYpOwotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgICAgaWYgKHN1YnNhbXAgIT0gVEouU0FNUF9HUkFZKSB7Ci0gICAgICAgIGhhbGZ3YXkgPSAxNiAvIHZzZiAqIHNmLmdldE51bSgpIC8gc2YuZ2V0RGVub20oKTsKLSAgICAgICAgZm9yIChyb3cgPSAwOyByb3cgPCBjaDsgcm93KyspIHsKLSAgICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IGN3OyBjb2wrKykgewotICAgICAgICAgICAgYnl0ZSB1ID0gYnVmW3lwaXRjaCAqIHBoICsgKHV2cGl0Y2ggKiByb3cgKyBjb2wpXSwKLSAgICAgICAgICAgICAgICAgdiA9IGJ1Zlt5cGl0Y2ggKiBwaCArIHV2cGl0Y2ggKiBjaCArICh1dnBpdGNoICogcm93ICsgY29sKV07Ci0gICAgICAgICAgICBpZiAoKChyb3cgKiB2c2YgLyBibG9ja1NpemUpICsgKGNvbCAqIGhzZiAvIGJsb2NrU2l6ZSkpICUgMiA9PSAwKSB7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCB1LCAiVSIsIDEyOCk7Ci0gICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCB2LCAiViIsIDEyOCk7Ci0gICAgICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgICBpZiAocm93IDwgaGFsZndheSkgewotICAgICAgICAgICAgICAgIGNoZWNrVmFsKHJvdywgY29sLCB1LCAiVSIsIDg1KTsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDI1NShyb3csIGNvbCwgdiwgIlYiKTsKLSAgICAgICAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgICAgICBjaGVja1ZhbDAocm93LCBjb2wsIHUsICJVIik7Ci0gICAgICAgICAgICAgICAgY2hlY2tWYWwocm93LCBjb2wsIHYsICJWIiwgMTQ5KTsKLSAgICAgICAgICAgICAgfQotICAgICAgICAgICAgfQotICAgICAgICAgIH0KLSAgICAgICAgfQotICAgICAgfQotICAgIH0gY2F0Y2goRXhjZXB0aW9uIGUpIHsKLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiXG4iICsgZS5nZXRNZXNzYWdlKCkpOwotICAgICAgcmV0dmFsID0gMDsKLSAgICB9Ci0KLSAgICBpZiAocmV0dmFsID09IDApIHsKLSAgICAgIGZvciAocm93ID0gMDsgcm93IDwgcGg7IHJvdysrKSB7Ci0gICAgICAgIGZvciAoY29sID0gMDsgY29sIDwgcHc7IGNvbCsrKSB7Ci0gICAgICAgICAgaW50IHkgPSBidWZbeXBpdGNoICogcm93ICsgY29sXTsKLSAgICAgICAgICBpZiAoeSA8IDApIHkgKz0gMjU2OwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlM2QgIiwgeSk7Ci0gICAgICAgIH0KLSAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgIH0KLSAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlxuIik7Ci0gICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IGNoOyByb3crKykgewotICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IGN3OyBjb2wrKykgewotICAgICAgICAgIGludCB1ID0gYnVmW3lwaXRjaCAqIHBoICsgKHV2cGl0Y2ggKiByb3cgKyBjb2wpXTsKLSAgICAgICAgICBpZiAodSA8IDApIHUgKz0gMjU2OwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlM2QgIiwgdSk7Ci0gICAgICAgIH0KLSAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgIH0KLSAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlxuIik7Ci0gICAgICBmb3IgKHJvdyA9IDA7IHJvdyA8IGNoOyByb3crKykgewotICAgICAgICBmb3IgKGNvbCA9IDA7IGNvbCA8IGN3OyBjb2wrKykgewotICAgICAgICAgIGludCB2ID0gYnVmW3lwaXRjaCAqIHBoICsgdXZwaXRjaCAqIGNoICsgKHV2cGl0Y2ggKiByb3cgKyBjb2wpXTsKLSAgICAgICAgICBpZiAodiA8IDApIHYgKz0gMjU2OwotICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlM2QgIiwgdik7Ci0gICAgICAgIH0KLSAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgIH0KLSAgICB9Ci0KLSAgICByZXR1cm4gcmV0dmFsOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCB3cml0ZUpQRUcoYnl0ZVtdIGpwZWdCdWYsIGludCBqcGVnQnVmU2l6ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaW5nIGZpbGVuYW1lKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZShmaWxlbmFtZSk7Ci0gICAgRmlsZU91dHB1dFN0cmVhbSBmb3MgPSBuZXcgRmlsZU91dHB1dFN0cmVhbShmaWxlKTsKLSAgICBmb3Mud3JpdGUoanBlZ0J1ZiwgMCwganBlZ0J1ZlNpemUpOwotICAgIGZvcy5jbG9zZSgpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgaW50IGNvbXBUZXN0KFRKQ29tcHJlc3NvciB0amMsIGJ5dGVbXSBkc3RCdWYsIGludCB3LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGgsIGludCBwZiwgU3RyaW5nIGJhc2VOYW1lLCBpbnQgc3Vic2FtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqcGVnUXVhbCwgaW50IGZsYWdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBTdHJpbmcgdGVtcFN0cjsKLSAgICBieXRlW10gc3JjQnVmID0gbnVsbDsKLSAgICBCdWZmZXJlZEltYWdlIGltZyA9IG51bGw7Ci0gICAgU3RyaW5nIHBmU3RyLCBwZlN0ckxvbmc7Ci0gICAgU3RyaW5nIGJ1U3RyID0gKGZsYWdzICYgVEouRkxBR19CT1RUT01VUCkgIT0gMCA/ICJCVSIgOiAiVEQiOwotICAgIFN0cmluZyBidVN0ckxvbmcgPSAoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwID8KLSAgICAgICAgICAgICAgICAgICAgICAgIkJvdHRvbS1VcCIgOiAiVG9wLURvd24gIjsKLSAgICBpbnQgc2l6ZSA9IDAsIHBzLCBpbWdUeXBlID0gcGY7Ci0KLSAgICBpZiAoYmkpIHsKLSAgICAgIHBmID0gYmlUeXBlUEYoaW1nVHlwZSk7Ci0gICAgICBwZlN0ciA9IGJpVHlwZVN0cihpbWdUeXBlKTsKLSAgICAgIHBmU3RyTG9uZyA9IHBmU3RyICsgIiAoIiArIHBpeEZvcm1hdFN0cltwZl0gKyAiKSI7Ci0gICAgfSBlbHNlIHsKLSAgICAgIHBmU3RyID0gcGl4Rm9ybWF0U3RyW3BmXTsKLSAgICAgIHBmU3RyTG9uZyA9IHBmU3RyOwotICAgIH0KLSAgICBwcyA9ICBUSi5nZXRQaXhlbFNpemUocGYpOwotCi0gICAgaWYgKGJpKSB7Ci0gICAgICBpbWcgPSBuZXcgQnVmZmVyZWRJbWFnZSh3LCBoLCBpbWdUeXBlKTsKLSAgICAgIGluaXRJbWcoaW1nLCBwZiwgZmxhZ3MpOwotICAgICAgdGVtcFN0ciA9IGJhc2VOYW1lICsgIl9lbmNfIiArIHBmU3RyICsgIl8iICsgYnVTdHIgKyAiXyIgKwotICAgICAgICAgICAgICAgIHN1Yk5hbWVbc3Vic2FtcF0gKyAiX1EiICsganBlZ1F1YWwgKyAiLnBuZyI7Ci0gICAgICBGaWxlIGZpbGUgPSBuZXcgRmlsZSh0ZW1wU3RyKTsKLSAgICAgIEltYWdlSU8ud3JpdGUoaW1nLCAicG5nIiwgZmlsZSk7Ci0gICAgICB0amMuc2V0U291cmNlSW1hZ2UoaW1nLCAwLCAwLCAwLCAwKTsKLSAgICB9IGVsc2UgewotICAgICAgc3JjQnVmID0gbmV3IGJ5dGVbdyAqIGggKiBwcyArIDFdOwotICAgICAgaW5pdEJ1ZihzcmNCdWYsIHcsIHcgKiBwcywgaCwgcGYsIGZsYWdzKTsKLSAgICAgIHRqYy5zZXRTb3VyY2VJbWFnZShzcmNCdWYsIDAsIDAsIHcsIDAsIGgsIHBmKTsKLSAgICB9Ci0gICAgQXJyYXlzLmZpbGwoZHN0QnVmLCAoYnl0ZSkwKTsKLQotICAgIHRqYy5zZXRTdWJzYW1wKHN1YnNhbXApOwotICAgIHRqYy5zZXRKUEVHUXVhbGl0eShqcGVnUXVhbCk7Ci0gICAgaWYgKGRvWVVWKSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJXMgJXMgLT4gWVVWICVzIC4uLiAiLCBwZlN0ckxvbmcsIGJ1U3RyTG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hbWVMb25nW3N1YnNhbXBdKTsKLSAgICAgIFlVVkltYWdlIHl1dkltYWdlID0gdGpjLmVuY29kZVlVVihwYWQsIGZsYWdzKTsKLSAgICAgIGlmIChjaGVja0J1ZllVVih5dXZJbWFnZS5nZXRCdWYoKSwgeXV2SW1hZ2UuZ2V0U2l6ZSgpLCB3LCBoLCBzdWJzYW1wLAotICAgICAgICAgIG5ldyBUSlNjYWxpbmdGYWN0b3IoMSwgMSkpID09IDEpCi0gICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIlBhc3NlZC5cbiIpOwotICAgICAgZWxzZSB7Ci0gICAgICAgIFN5c3RlbS5vdXQucHJpbnQoIkZBSUxFRCFcbiIpOwotICAgICAgICBleGl0U3RhdHVzID0gLTE7Ci0gICAgICB9Ci0KLSAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCJZVVYgJXMgJXMgLT4gSlBFRyBRJWQgLi4uICIsIHN1Yk5hbWVMb25nW3N1YnNhbXBdLAotICAgICAgICAgICAgICAgICAgICAgICAgYnVTdHJMb25nLCBqcGVnUXVhbCk7Ci0gICAgICB0amMuc2V0U291cmNlSW1hZ2UoeXV2SW1hZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiJXMgJXMgLT4gJXMgUSVkIC4uLiAiLCBwZlN0ckxvbmcsIGJ1U3RyTG9uZywKLSAgICAgICAgICAgICAgICAgICAgICAgIHN1Yk5hbWVMb25nW3N1YnNhbXBdLCBqcGVnUXVhbCk7Ci0gICAgfQotICAgIHRqYy5jb21wcmVzcyhkc3RCdWYsIGZsYWdzKTsKLSAgICBzaXplID0gdGpjLmdldENvbXByZXNzZWRTaXplKCk7Ci0KLSAgICB0ZW1wU3RyID0gYmFzZU5hbWUgKyAiX2VuY18iICsgcGZTdHIgKyAiXyIgKyBidVN0ciArICJfIiArCi0gICAgICAgICAgICAgIHN1Yk5hbWVbc3Vic2FtcF0gKyAiX1EiICsganBlZ1F1YWwgKyAiLmpwZyI7Ci0gICAgd3JpdGVKUEVHKGRzdEJ1Ziwgc2l6ZSwgdGVtcFN0cik7Ci0gICAgU3lzdGVtLm91dC5wcmludGxuKCJEb25lLlxuICBSZXN1bHQgaW4gIiArIHRlbXBTdHIpOwotCi0gICAgcmV0dXJuIHNpemU7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGRlY29tcFRlc3QoVEpEZWNvbXByZXNzb3IgdGpkLCBieXRlW10ganBlZ0J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqcGVnU2l6ZSwgaW50IHcsIGludCBoLCBpbnQgcGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFzZU5hbWUsIGludCBzdWJzYW1wLCBpbnQgZmxhZ3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUSlNjYWxpbmdGYWN0b3Igc2YpIHRocm93cyBFeGNlcHRpb24gewotICAgIFN0cmluZyBwZlN0ciwgcGZTdHJMb25nLCB0ZW1wU3RyOwotICAgIFN0cmluZyBidVN0ckxvbmcgPSAoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwID8KLSAgICAgICAgICAgICAgICAgICAgICAgIkJvdHRvbS1VcCIgOiAiVG9wLURvd24gIjsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBzZi5nZXRTY2FsZWQodyk7Ci0gICAgaW50IHNjYWxlZEhlaWdodCA9IHNmLmdldFNjYWxlZChoKTsKLSAgICBpbnQgdGVtcDEsIHRlbXAyLCBpbWdUeXBlID0gcGY7Ci0gICAgQnVmZmVyZWRJbWFnZSBpbWcgPSBudWxsOwotICAgIGJ5dGVbXSBkc3RCdWYgPSBudWxsOwotCi0gICAgaWYgKGJpKSB7Ci0gICAgICBwZiA9IGJpVHlwZVBGKGltZ1R5cGUpOwotICAgICAgcGZTdHIgPSBiaVR5cGVTdHIoaW1nVHlwZSk7Ci0gICAgICBwZlN0ckxvbmcgPSBwZlN0ciArICIgKCIgKyBwaXhGb3JtYXRTdHJbcGZdICsgIikiOwotICAgIH0gZWxzZSB7Ci0gICAgICBwZlN0ciA9IHBpeEZvcm1hdFN0cltwZl07Ci0gICAgICBwZlN0ckxvbmcgPSBwZlN0cjsKLSAgICB9Ci0KLSAgICB0amQuc2V0U291cmNlSW1hZ2UoanBlZ0J1ZiwganBlZ1NpemUpOwotICAgIGlmICh0amQuZ2V0V2lkdGgoKSAhPSB3IHx8IHRqZC5nZXRIZWlnaHQoKSAhPSBoIHx8Ci0gICAgICAgIHRqZC5nZXRTdWJzYW1wKCkgIT0gc3Vic2FtcCkKLSAgICAgIHRocm93IG5ldyBFeGNlcHRpb24oIkluY29ycmVjdCBKUEVHIGhlYWRlciIpOwotCi0gICAgdGVtcDEgPSBzY2FsZWRXaWR0aDsKLSAgICB0ZW1wMiA9IHNjYWxlZEhlaWdodDsKLSAgICB0ZW1wMSA9IHRqZC5nZXRTY2FsZWRXaWR0aCh0ZW1wMSwgdGVtcDIpOwotICAgIHRlbXAyID0gdGpkLmdldFNjYWxlZEhlaWdodCh0ZW1wMSwgdGVtcDIpOwotICAgIGlmICh0ZW1wMSAhPSBzY2FsZWRXaWR0aCB8fCB0ZW1wMiAhPSBzY2FsZWRIZWlnaHQpCi0gICAgICB0aHJvdyBuZXcgRXhjZXB0aW9uKCJTY2FsZWQgc2l6ZSBtaXNtYXRjaCIpOwotCi0gICAgaWYgKGRvWVVWKSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiSlBFRyAtPiBZVVYgJXMgIiwgc3ViTmFtZUxvbmdbc3Vic2FtcF0pOwotICAgICAgaWYoIXNmLmlzT25lKCkpCi0gICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlZC8lZCAuLi4gIiwgc2YuZ2V0TnVtKCksIHNmLmdldERlbm9tKCkpOwotICAgICAgZWxzZSBTeXN0ZW0ub3V0LnByaW50KCIuLi4gIik7Ci0gICAgICBZVVZJbWFnZSB5dXZJbWFnZSA9IHRqZC5kZWNvbXByZXNzVG9ZVVYoc2NhbGVkV2lkdGgsIHBhZCwgc2NhbGVkSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICAgIGlmIChjaGVja0J1ZllVVih5dXZJbWFnZS5nZXRCdWYoKSwgeXV2SW1hZ2UuZ2V0U2l6ZSgpLCBzY2FsZWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICBzY2FsZWRIZWlnaHQsIHN1YnNhbXAsIHNmKSA9PSAxKQotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJQYXNzZWQuXG4iKTsKLSAgICAgIGVsc2UgewotICAgICAgICBTeXN0ZW0ub3V0LnByaW50KCJGQUlMRUQhXG4iKTsgIGV4aXRTdGF0dXMgPSAtMTsKLSAgICAgIH0KLQotICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIllVViAlcyAtPiAlcyAlcyAuLi4gIiwgc3ViTmFtZUxvbmdbc3Vic2FtcF0sCi0gICAgICAgICAgICAgICAgICAgICAgICBwZlN0ckxvbmcsIGJ1U3RyTG9uZyk7Ci0gICAgICB0amQuc2V0U291cmNlSW1hZ2UoeXV2SW1hZ2UpOwotICAgIH0gZWxzZSB7Ci0gICAgICBTeXN0ZW0ub3V0LmZvcm1hdCgiSlBFRyAtPiAlcyAlcyAiLCBwZlN0ckxvbmcsIGJ1U3RyTG9uZyk7Ci0gICAgICBpZighc2YuaXNPbmUoKSkKLSAgICAgICAgU3lzdGVtLm91dC5mb3JtYXQoIiVkLyVkIC4uLiAiLCBzZi5nZXROdW0oKSwgc2YuZ2V0RGVub20oKSk7Ci0gICAgICBlbHNlIFN5c3RlbS5vdXQucHJpbnQoIi4uLiAiKTsKLSAgICB9Ci0gICAgaWYgKGJpKQotICAgICAgaW1nID0gdGpkLmRlY29tcHJlc3Moc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodCwgaW1nVHlwZSwgZmxhZ3MpOwotICAgIGVsc2UKLSAgICAgIGRzdEJ1ZiA9IHRqZC5kZWNvbXByZXNzKHNjYWxlZFdpZHRoLCAwLCBzY2FsZWRIZWlnaHQsIHBmLCBmbGFncyk7Ci0KLSAgICBpZiAoYmkpIHsKLSAgICAgIHRlbXBTdHIgPSBiYXNlTmFtZSArICJfZGVjXyIgKyBwZlN0ciArICJfIiArCi0gICAgICAgICAgICAgICAgKCgoZmxhZ3MgJiBUSi5GTEFHX0JPVFRPTVVQKSAhPSAwKSA/ICJCVSIgOiAiVEQiKSArICJfIiArCi0gICAgICAgICAgICAgICAgc3ViTmFtZVtzdWJzYW1wXSArICJfIiArCi0gICAgICAgICAgICAgICAgKGRvdWJsZSlzZi5nZXROdW0oKSAvIChkb3VibGUpc2YuZ2V0RGVub20oKSArICJ4IiArICIucG5nIjsKLSAgICAgIEZpbGUgZmlsZSA9IG5ldyBGaWxlKHRlbXBTdHIpOwotICAgICAgSW1hZ2VJTy53cml0ZShpbWcsICJwbmciLCBmaWxlKTsKLSAgICB9Ci0KLSAgICBpZiAoKGJpICYmIGNoZWNrSW1nKGltZywgcGYsIHN1YnNhbXAsIHNmLCBmbGFncykgPT0gMSkgfHwKLSAgICAgICAgKCFiaSAmJiBjaGVja0J1Zihkc3RCdWYsIHNjYWxlZFdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIHNjYWxlZFdpZHRoICogVEouZ2V0UGl4ZWxTaXplKHBmKSwgc2NhbGVkSGVpZ2h0LCBwZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBzdWJzYW1wLCBzZiwgZmxhZ3MpID09IDEpKQotICAgICAgU3lzdGVtLm91dC5wcmludCgiUGFzc2VkLlxuIik7Ci0gICAgZWxzZSB7Ci0gICAgICBTeXN0ZW0ub3V0LnByaW50KCJGQUlMRUQhXG4iKTsKLSAgICAgIGV4aXRTdGF0dXMgPSAtMTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGRlY29tcFRlc3QoVEpEZWNvbXByZXNzb3IgdGpkLCBieXRlW10ganBlZ0J1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBqcGVnU2l6ZSwgaW50IHcsIGludCBoLCBpbnQgcGYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFzZU5hbWUsIGludCBzdWJzYW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB0aHJvd3MgRXhjZXB0aW9uIHsKLSAgICBpbnQgaTsKLSAgICBUSlNjYWxpbmdGYWN0b3JbXSBzZiA9IFRKLmdldFNjYWxpbmdGYWN0b3JzKCk7Ci0gICAgZm9yIChpID0gMDsgaSA8IHNmLmxlbmd0aDsgaSsrKSB7Ci0gICAgICBpbnQgbnVtID0gc2ZbaV0uZ2V0TnVtKCk7Ci0gICAgICBpbnQgZGVub20gPSBzZltpXS5nZXREZW5vbSgpOwotICAgICAgaWYgKHN1YnNhbXAgPT0gVEouU0FNUF80NDQgfHwgc3Vic2FtcCA9PSBUSi5TQU1QX0dSQVkgfHwKLSAgICAgICAgICAoc3Vic2FtcCA9PSBUSi5TQU1QXzQxMSAmJiBudW0gPT0gMSAmJgotICAgICAgICAgICAoZGVub20gPT0gMiB8fCBkZW5vbSA9PSAxKSkgfHwKLSAgICAgICAgICAoc3Vic2FtcCAhPSBUSi5TQU1QXzQxMSAmJiBudW0gPT0gMSAmJgotICAgICAgICAgICAoZGVub20gPT0gNCB8fCBkZW5vbSA9PSAyIHx8IGRlbm9tID09IDEpKSkKLSAgICAgICAgZGVjb21wVGVzdCh0amQsIGpwZWdCdWYsIGpwZWdTaXplLCB3LCBoLCBwZiwgYmFzZU5hbWUsIHN1YnNhbXAsCi0gICAgICAgICAgICAgICAgICAgZmxhZ3MsIHNmW2ldKTsKLSAgICB9Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGRvVGVzdChpbnQgdywgaW50IGgsIGludFtdIGZvcm1hdHMsIGludCBzdWJzYW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTdHJpbmcgYmFzZU5hbWUpIHRocm93cyBFeGNlcHRpb24gewotICAgIFRKQ29tcHJlc3NvciB0amMgPSBudWxsOwotICAgIFRKRGVjb21wcmVzc29yIHRqZCA9IG51bGw7Ci0gICAgaW50IHNpemU7Ci0gICAgYnl0ZVtdIGRzdEJ1ZjsKLQotICAgIGRzdEJ1ZiA9IG5ldyBieXRlW1RKLmJ1ZlNpemUodywgaCwgc3Vic2FtcCldOwotCi0gICAgdHJ5IHsKLSAgICAgIHRqYyA9IG5ldyBUSkNvbXByZXNzb3IoKTsKLSAgICAgIHRqZCA9IG5ldyBUSkRlY29tcHJlc3NvcigpOwotCi0gICAgICBmb3IgKGludCBwZiA6IGZvcm1hdHMpIHsKLSAgICAgICAgaWYgKHBmIDwgMCkgY29udGludWU7Ci0gICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgMjsgaSsrKSB7Ci0gICAgICAgICAgaW50IGZsYWdzID0gMDsKLSAgICAgICAgICBpZiAoc3Vic2FtcCA9PSBUSi5TQU1QXzQyMiB8fCBzdWJzYW1wID09IFRKLlNBTVBfNDIwIHx8Ci0gICAgICAgICAgICAgIHN1YnNhbXAgPT0gVEouU0FNUF80NDAgfHwgc3Vic2FtcCA9PSBUSi5TQU1QXzQxMSkKLSAgICAgICAgICAgIGZsYWdzIHw9IFRKLkZMQUdfRkFTVFVQU0FNUExFOwotICAgICAgICAgIGlmIChpID09IDEpCi0gICAgICAgICAgICBmbGFncyB8PSBUSi5GTEFHX0JPVFRPTVVQOwotICAgICAgICAgIHNpemUgPSBjb21wVGVzdCh0amMsIGRzdEJ1ZiwgdywgaCwgcGYsIGJhc2VOYW1lLCBzdWJzYW1wLCAxMDAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICAgICAgICBkZWNvbXBUZXN0KHRqZCwgZHN0QnVmLCBzaXplLCB3LCBoLCBwZiwgYmFzZU5hbWUsIHN1YnNhbXAsIGZsYWdzKTsKLSAgICAgICAgICBpZiAocGYgPj0gVEouUEZfUkdCWCAmJiBwZiA8PSBUSi5QRl9YUkdCICYmICFiaSkgewotICAgICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgICAgICAgIGRlY29tcFRlc3QodGpkLCBkc3RCdWYsIHNpemUsIHcsIGgsIHBmICsgKFRKLlBGX1JHQkEgLSBUSi5QRl9SR0JYKSwKLSAgICAgICAgICAgICAgICAgICAgICAgYmFzZU5hbWUsIHN1YnNhbXAsIGZsYWdzKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4iKTsKLSAgICAgICAgfQotICAgICAgfQotICAgICAgU3lzdGVtLm91dC5wcmludCgiLS0tLS0tLS0tLS0tLS0tLS0tLS1cblxuIik7Ci0gICAgfSBjYXRjaChFeGNlcHRpb24gZSkgewotICAgICAgaWYgKHRqYyAhPSBudWxsKSB0amMuY2xvc2UoKTsKLSAgICAgIGlmICh0amQgIT0gbnVsbCkgdGpkLmNsb3NlKCk7Ci0gICAgICB0aHJvdyBlOwotICAgIH0KLSAgICBpZiAodGpjICE9IG51bGwpIHRqYy5jbG9zZSgpOwotICAgIGlmICh0amQgIT0gbnVsbCkgdGpkLmNsb3NlKCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyB2b2lkIGJ1ZlNpemVUZXN0KCkgdGhyb3dzIEV4Y2VwdGlvbiB7Ci0gICAgaW50IHcsIGgsIGksIHN1YnNhbXA7Ci0gICAgYnl0ZVtdIHNyY0J1ZiwgZHN0QnVmID0gbnVsbDsKLSAgICBZVVZJbWFnZSBkc3RJbWFnZSA9IG51bGw7Ci0gICAgVEpDb21wcmVzc29yIHRqYyA9IG51bGw7Ci0gICAgUmFuZG9tIHIgPSBuZXcgUmFuZG9tKCk7Ci0KLSAgICB0cnkgewotICAgICAgdGpjID0gbmV3IFRKQ29tcHJlc3NvcigpOwotICAgICAgU3lzdGVtLm91dC5wcmludGxuKCJCdWZmZXIgc2l6ZSByZWdyZXNzaW9uIHRlc3QiKTsKLSAgICAgIGZvciAoc3Vic2FtcCA9IDA7IHN1YnNhbXAgPCBUSi5OVU1TQU1QOyBzdWJzYW1wKyspIHsKLSAgICAgICAgZm9yICh3ID0gMTsgdyA8IDQ4OyB3KyspIHsKLSAgICAgICAgICBpbnQgbWF4aCA9ICh3ID09IDEpID8gMjA0OCA6IDQ4OwotICAgICAgICAgIGZvciAoaCA9IDE7IGggPCBtYXhoOyBoKyspIHsKLSAgICAgICAgICAgIGlmIChoICUgMTAwID09IDApCi0gICAgICAgICAgICAgIFN5c3RlbS5vdXQuZm9ybWF0KCIlMDRkIHggJTA0ZFxiXGJcYlxiXGJcYlxiXGJcYlxiXGIiLCB3LCBoKTsKLSAgICAgICAgICAgIHNyY0J1ZiA9IG5ldyBieXRlW3cgKiBoICogNF07Ci0gICAgICAgICAgICBpZiAoZG9ZVVYpCi0gICAgICAgICAgICAgIGRzdEltYWdlID0gbmV3IFlVVkltYWdlKHcsIHBhZCwgaCwgc3Vic2FtcCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIGRzdEJ1ZiA9IG5ldyBieXRlW1RKLmJ1ZlNpemUodywgaCwgc3Vic2FtcCldOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IHcgKiBoICogNDsgaSsrKSB7Ci0gICAgICAgICAgICAgIHNyY0J1ZltpXSA9IChieXRlKShyLm5leHRJbnQoMikgKiAyNTUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGpjLnNldFNvdXJjZUltYWdlKHNyY0J1ZiwgMCwgMCwgdywgMCwgaCwgVEouUEZfQkdSWCk7Ci0gICAgICAgICAgICB0amMuc2V0U3Vic2FtcChzdWJzYW1wKTsKLSAgICAgICAgICAgIHRqYy5zZXRKUEVHUXVhbGl0eSgxMDApOwotICAgICAgICAgICAgaWYgKGRvWVVWKQotICAgICAgICAgICAgICB0amMuZW5jb2RlWVVWKGRzdEltYWdlLCAwKTsKLSAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgdGpjLmNvbXByZXNzKGRzdEJ1ZiwgMCk7Ci0KLSAgICAgICAgICAgIHNyY0J1ZiA9IG5ldyBieXRlW2ggKiB3ICogNF07Ci0gICAgICAgICAgICBpZiAoZG9ZVVYpCi0gICAgICAgICAgICAgIGRzdEltYWdlID0gbmV3IFlVVkltYWdlKGgsIHBhZCwgdywgc3Vic2FtcCk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgIGRzdEJ1ZiA9IG5ldyBieXRlW1RKLmJ1ZlNpemUoaCwgdywgc3Vic2FtcCldOwotICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IGggKiB3ICogNDsgaSsrKSB7Ci0gICAgICAgICAgICAgIHNyY0J1ZltpXSA9IChieXRlKShyLm5leHRJbnQoMikgKiAyNTUpOwotICAgICAgICAgICAgfQotICAgICAgICAgICAgdGpjLnNldFNvdXJjZUltYWdlKHNyY0J1ZiwgMCwgMCwgaCwgMCwgdywgVEouUEZfQkdSWCk7Ci0gICAgICAgICAgICBpZiAoZG9ZVVYpCi0gICAgICAgICAgICAgIHRqYy5lbmNvZGVZVVYoZHN0SW1hZ2UsIDApOwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICB0amMuY29tcHJlc3MoZHN0QnVmLCAwKTsKLSAgICAgICAgICB9Ci0gICAgICAgICAgZHN0SW1hZ2UgPSBudWxsOwotICAgICAgICAgIGRzdEJ1ZiA9IG51bGw7Ci0gICAgICAgICAgU3lzdGVtLmdjKCk7Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICAgIFN5c3RlbS5vdXQucHJpbnRsbigiRG9uZS4gICAgICAiKTsKLSAgICB9IGNhdGNoKEV4Y2VwdGlvbiBlKSB7Ci0gICAgICBpZiAodGpjICE9IG51bGwpIHRqYy5jbG9zZSgpOwotICAgICAgdGhyb3cgZTsKLSAgICB9Ci0gICAgaWYgKHRqYyAhPSBudWxsKSB0amMuY2xvc2UoKTsKLSAgfQotCi0gIHB1YmxpYyBzdGF0aWMgdm9pZCBtYWluKFN0cmluZ1tdIGFyZ3YpIHsKLSAgICB0cnkgewotICAgICAgU3RyaW5nIHRlc3ROYW1lID0gImphdmF0ZXN0IjsKLSAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgYXJndi5sZW5ndGg7IGkrKykgewotICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCIteXV2IikpCi0gICAgICAgICAgZG9ZVVYgPSB0cnVlOwotICAgICAgICBpZiAoYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItbm95dXZwYWQiKSkKLSAgICAgICAgICBwYWQgPSAxOwotICAgICAgICBpZiAoYXJndltpXS5zdWJzdHJpbmcoMCwgMSkuZXF1YWxzSWdub3JlQ2FzZSgiLWgiKSB8fAotICAgICAgICAgICAgYXJndltpXS5lcXVhbHNJZ25vcmVDYXNlKCItPyIpKQotICAgICAgICAgIHVzYWdlKCk7Ci0gICAgICAgIGlmIChhcmd2W2ldLmVxdWFsc0lnbm9yZUNhc2UoIi1iaSIpKSB7Ci0gICAgICAgICAgYmkgPSB0cnVlOwotICAgICAgICAgIHRlc3ROYW1lID0gImphdmFiaXRlc3QiOwotICAgICAgICB9Ci0gICAgICB9Ci0gICAgICBpZiAoZG9ZVVYpCi0gICAgICAgIF80Ynl0ZUZvcm1hdHNbNF0gPSAtMTsKLSAgICAgIGRvVGVzdCgzNSwgMzksIGJpID8gXzNieXRlRm9ybWF0c0JJIDogXzNieXRlRm9ybWF0cywgVEouU0FNUF80NDQsCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgZG9UZXN0KDM5LCA0MSwgYmkgPyBfNGJ5dGVGb3JtYXRzQkkgOiBfNGJ5dGVGb3JtYXRzLCBUSi5TQU1QXzQ0NCwKLSAgICAgICAgICAgICB0ZXN0TmFtZSk7Ci0gICAgICBkb1Rlc3QoNDEsIDM1LCBiaSA/IF8zYnl0ZUZvcm1hdHNCSSA6IF8zYnl0ZUZvcm1hdHMsIFRKLlNBTVBfNDIyLAotICAgICAgICAgICAgIHRlc3ROYW1lKTsKLSAgICAgIGRvVGVzdCgzNSwgMzksIGJpID8gXzRieXRlRm9ybWF0c0JJIDogXzRieXRlRm9ybWF0cywgVEouU0FNUF80MjIsCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgZG9UZXN0KDM5LCA0MSwgYmkgPyBfM2J5dGVGb3JtYXRzQkkgOiBfM2J5dGVGb3JtYXRzLCBUSi5TQU1QXzQyMCwKLSAgICAgICAgICAgICB0ZXN0TmFtZSk7Ci0gICAgICBkb1Rlc3QoNDEsIDM1LCBiaSA/IF80Ynl0ZUZvcm1hdHNCSSA6IF80Ynl0ZUZvcm1hdHMsIFRKLlNBTVBfNDIwLAotICAgICAgICAgICAgIHRlc3ROYW1lKTsKLSAgICAgIGRvVGVzdCgzNSwgMzksIGJpID8gXzNieXRlRm9ybWF0c0JJIDogXzNieXRlRm9ybWF0cywgVEouU0FNUF80NDAsCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgZG9UZXN0KDM5LCA0MSwgYmkgPyBfNGJ5dGVGb3JtYXRzQkkgOiBfNGJ5dGVGb3JtYXRzLCBUSi5TQU1QXzQ0MCwKLSAgICAgICAgICAgICB0ZXN0TmFtZSk7Ci0gICAgICBkb1Rlc3QoNDEsIDM1LCBiaSA/IF8zYnl0ZUZvcm1hdHNCSSA6IF8zYnl0ZUZvcm1hdHMsIFRKLlNBTVBfNDExLAotICAgICAgICAgICAgIHRlc3ROYW1lKTsKLSAgICAgIGRvVGVzdCgzNSwgMzksIGJpID8gXzRieXRlRm9ybWF0c0JJIDogXzRieXRlRm9ybWF0cywgVEouU0FNUF80MTEsCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgZG9UZXN0KDM5LCA0MSwgYmkgPyBvbmx5R3JheUJJIDogb25seUdyYXksIFRKLlNBTVBfR1JBWSwgdGVzdE5hbWUpOwotICAgICAgZG9UZXN0KDQxLCAzNSwgYmkgPyBfM2J5dGVGb3JtYXRzQkkgOiBfM2J5dGVGb3JtYXRzLCBUSi5TQU1QX0dSQVksCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgXzRieXRlRm9ybWF0c1s0XSA9IC0xOwotICAgICAgZG9UZXN0KDM1LCAzOSwgYmkgPyBfNGJ5dGVGb3JtYXRzQkkgOiBfNGJ5dGVGb3JtYXRzLCBUSi5TQU1QX0dSQVksCi0gICAgICAgICAgICAgdGVzdE5hbWUpOwotICAgICAgaWYgKCFiaSkKLSAgICAgICAgYnVmU2l6ZVRlc3QoKTsKLSAgICAgIGlmIChkb1lVViAmJiAhYmkpIHsKLSAgICAgICAgU3lzdGVtLm91dC5wcmludCgiXG4tLS0tLS0tLS0tLS0tLS0tLS0tLVxuXG4iKTsKLSAgICAgICAgZG9UZXN0KDQ4LCA0OCwgb25seVJHQiwgVEouU0FNUF80NDQsICJqYXZhdGVzdF95dXYwIik7Ci0gICAgICAgIGRvVGVzdCg0OCwgNDgsIG9ubHlSR0IsIFRKLlNBTVBfNDIyLCAiamF2YXRlc3RfeXV2MCIpOwotICAgICAgICBkb1Rlc3QoNDgsIDQ4LCBvbmx5UkdCLCBUSi5TQU1QXzQyMCwgImphdmF0ZXN0X3l1djAiKTsKLSAgICAgICAgZG9UZXN0KDQ4LCA0OCwgb25seVJHQiwgVEouU0FNUF80NDAsICJqYXZhdGVzdF95dXYwIik7Ci0gICAgICAgIGRvVGVzdCg0OCwgNDgsIG9ubHlSR0IsIFRKLlNBTVBfNDExLCAiamF2YXRlc3RfeXV2MCIpOwotICAgICAgICBkb1Rlc3QoNDgsIDQ4LCBvbmx5UkdCLCBUSi5TQU1QX0dSQVksICJqYXZhdGVzdF95dXYwIik7Ci0gICAgICAgIGRvVGVzdCg0OCwgNDgsIG9ubHlHcmF5LCBUSi5TQU1QX0dSQVksICJqYXZhdGVzdF95dXYwIik7Ci0gICAgICB9Ci0gICAgfSBjYXRjaChFeGNlcHRpb24gZSkgewotICAgICAgZS5wcmludFN0YWNrVHJhY2UoKTsKLSAgICAgIGV4aXRTdGF0dXMgPSAtMTsKLSAgICB9Ci0gICAgU3lzdGVtLmV4aXQoZXhpdFN0YXR1cyk7Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2phdmEvZG9jL2FsbGNsYXNzZXMtZnJhbWUuaHRtbCBiL2phdmEvZG9jL2FsbGNsYXNzZXMtZnJhbWUuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVjYWMwNi4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9hbGxjbGFzc2VzLWZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPkFsbCBDbGFzc2VzPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08aDEgY2xhc3M9ImJhciI+QWxsIENsYXNzZXM8L2gxPgotPGRpdiBjbGFzcz0iaW5kZXhDb250YWluZXIiPgotPHVsPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5USjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEpDb21wcmVzc29yPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48aT5USkN1c3RvbUZpbHRlcjwvaT48L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEpEZWNvbXByZXNzb3I8L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEpFeGNlcHRpb248L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlRKU2NhbGluZ0ZhY3RvcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5USlRyYW5zZm9ybTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlRKVHJhbnNmb3JtZXI8L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+WVVWSW1hZ2U8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2phdmEvZG9jL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIGIvamF2YS9kb2MvYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmN2ZkM2MuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2MvYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPkFsbCBDbGFzc2VzPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08aDEgY2xhc3M9ImJhciI+QWxsIENsYXNzZXM8L2gxPgotPGRpdiBjbGFzcz0iaW5kZXhDb250YWluZXIiPgotPHVsPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48aT5USkN1c3RvbUZpbHRlcjwvaT48L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKU2NhbGluZ0ZhY3RvcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm1lcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2phdmEvZG9jL2NvbnN0YW50LXZhbHVlcy5odG1sIGIvamF2YS9kb2MvY29uc3RhbnQtdmFsdWVzLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjMWIyMWQuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2MvY29uc3RhbnQtdmFsdWVzLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSw0NzkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tIE5ld1BhZ2UgLS0+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTx0aXRsZT5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iQ29uc3RhbnQgRmllbGQgVmFsdWVzIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImluZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImhlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXY8L2xpPgotPGxpPk5leHQ8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iaW5kZXguaHRtbD9jb25zdGFudC12YWx1ZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJjb25zdGFudC12YWx1ZXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImhlYWRlciI+Ci08aDEgdGl0bGU9IkNvbnN0YW50IEZpZWxkIFZhbHVlcyIgY2xhc3M9InRpdGxlIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2gxPgotPGgyIHRpdGxlPSJDb250ZW50cyI+Q29udGVudHM8L2gyPgotPHVsPgotPGxpPjxhIGhyZWY9IiNvcmcubGlianBlZ3R1cmJvIj5vcmcubGlianBlZ3R1cmJvLio8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnN0YW50VmFsdWVzQ29udGFpbmVyIj48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiB0aXRsZT0ib3JnLmxpYmpwZWd0dXJibyI+b3JnLmxpYmpwZWd0dXJiby4qPC9oMj4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iQ29uc3RhbnQgRmllbGQgVmFsdWVzIHRhYmxlLCBsaXN0aW5nIGNvbnN0YW50IGZpZWxkcywgYW5kIHZhbHVlcyI+Ci08Y2FwdGlvbj48c3Bhbj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+TW9kaWZpZXIgYW5kIFR5cGU8L3RoPgotPHRoIHNjb3BlPSJjb2wiPkNvbnN0YW50IEZpZWxkPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+VmFsdWU8L3RoPgotPC90cj4KLTx0Ym9keT4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouQ1NfQ01ZSyI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX0NNWUsiPkNTX0NNWUs8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjM8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkNTX0dSQVkiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19HUkFZIj5DU19HUkFZPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4yPC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5DU19SR0IiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19SR0IiPkNTX1JHQjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MDwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouQ1NfWUNiQ3IiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19ZQ2JDciI+Q1NfWUNiQ3I8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjE8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkNTX1lDQ0siPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19ZQ0NLIj5DU19ZQ0NLPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT40PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0FDQ1VSQVRFRENUIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19BQ0NVUkFURURDVCI+RkxBR19BQ0NVUkFURURDVDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+NDA5NjwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19CT1RUT01VUCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQk9UVE9NVVAiPkZMQUdfQk9UVE9NVVA8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjI8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkZMQUdfRkFTVERDVCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRkFTVERDVCI+RkxBR19GQVNURENUPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4yMDQ4PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZBU1RVUFNBTVBMRSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRkFTVFVQU0FNUExFIj5GTEFHX0ZBU1RVUFNBTVBMRTwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MjU2PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFTU1YIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19GT1JDRU1NWCI+RkxBR19GT1JDRU1NWDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+ODwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GT1JDRVNTRSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRk9SQ0VTU0UiPkZMQUdfRk9SQ0VTU0U8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjE2PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFU1NFMiI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRk9SQ0VTU0UyIj5GTEFHX0ZPUkNFU1NFMjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MzI8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkZMQUdfRk9SQ0VTU0UzIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19GT1JDRVNTRTMiPkZMQUdfRk9SQ0VTU0UzPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4xMjg8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLk5VTUNTIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjTlVNQ1MiPk5VTUNTPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT41PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5OVU1QRiI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI05VTVBGIj5OVU1QRjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MTI8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLk5VTVNBTVAiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNOVU1TQU1QIj5OVU1TQU1QPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT42PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9BQkdSIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfQUJHUiI+UEZfQUJHUjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+OTwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfQVJHQiI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0FSR0IiPlBGX0FSR0I8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjEwPC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9CR1IiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9CR1IiPlBGX0JHUjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MTwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfQkdSQSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0JHUkEiPlBGX0JHUkE8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjg8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlBGX0JHUlgiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9CR1JYIj5QRl9CR1JYPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4zPC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9DTVlLIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfQ01ZSyI+UEZfQ01ZSzwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MTE8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlBGX0dSQVkiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9HUkFZIj5QRl9HUkFZPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT42PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9SR0IiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9SR0IiPlBGX1JHQjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MDwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfUkdCQSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQkEiPlBGX1JHQkE8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjc8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlBGX1JHQlgiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9SR0JYIj5QRl9SR0JYPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4yPC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9YQkdSIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfWEJHUiI+UEZfWEJHUjwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+NDwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfWFJHQiI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1hSR0IiPlBGX1hSR0I8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjU8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlNBTVBfNDExIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80MTEiPlNBTVBfNDExPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT41PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5TQU1QXzQyMCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDIwIj5TQU1QXzQyMDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MjwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouU0FNUF80MjIiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQyMiI+U0FNUF80MjI8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjE8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlNBTVBfNDQwIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80NDAiPlNBTVBfNDQwPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT40PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5TQU1QXzQ0NCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij5TQU1QXzQ0NDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MDwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouU0FNUF9HUkFZIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF9HUkFZIj5TQU1QX0dSQVk8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjM8L2NvZGU+PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08dGFibGUgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNvbnN0YW50IEZpZWxkIFZhbHVlcyB0YWJsZSwgbGlzdGluZyBjb25zdGFudCBmaWVsZHMsIGFuZCB2YWx1ZXMiPgotPGNhcHRpb24+PHNwYW4+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBzY29wZT0iY29sIj5Db25zdGFudCBGaWVsZDwvdGg+Ci08dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPlZhbHVlPC90aD4KLTwvdHI+Ci08dGJvZHk+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk5VTU9QIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjTlVNT1AiPk5VTU9QPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT44PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUF9IRkxJUCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX0hGTElQIj5PUF9IRkxJUDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MTwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfTk9ORSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX05PTkUiPk9QX05PTkU8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjA8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QX1JPVDE4MCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1JPVDE4MCI+T1BfUk9UMTgwPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT42PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUF9ST1QyNzAiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9ST1QyNzAiPk9QX1JPVDI3MDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+NzwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfUk9UOTAiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9ST1Q5MCI+T1BfUk9UOTA8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjU8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QX1RSQU5TUE9TRSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1RSQU5TUE9TRSI+T1BfVFJBTlNQT1NFPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT4zPC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUF9UUkFOU1ZFUlNFIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfVFJBTlNWRVJTRSI+T1BfVFJBTlNWRVJTRTwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+NDwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfVkZMSVAiPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9WRkxJUCI+T1BfVkZMSVA8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjI8L2NvZGU+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QVF9DUk9QIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX0NST1AiPk9QVF9DUk9QPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT40PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUFRfR1JBWSI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9HUkFZIj5PUFRfR1JBWTwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+ODwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BUX05PT1VUUFVUIj4KLTwhLS0gICAtLT4KLTwvYT48Y29kZT5wdWJsaWMmbmJzcDtzdGF0aWMmbmJzcDtmaW5hbCZuYnNwO2ludDwvY29kZT48L3RkPgotPHRkPjxjb2RlPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX05PT1VUUFVUIj5PUFRfTk9PVVRQVVQ8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjE2PC9jb2RlPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBuYW1lPSJvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUFRfUEVSRkVDVCI+Ci08IS0tICAgLS0+Ci08L2E+PGNvZGU+cHVibGljJm5ic3A7c3RhdGljJm5ic3A7ZmluYWwmbmJzcDtpbnQ8L2NvZGU+PC90ZD4KLTx0ZD48Y29kZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9QRVJGRUNUIj5PUFRfUEVSRkVDVDwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+MTwvY29kZT48L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BUX1RSSU0iPgotPCEtLSAgIC0tPgotPC9hPjxjb2RlPnB1YmxpYyZuYnNwO3N0YXRpYyZuYnNwO2ZpbmFsJm5ic3A7aW50PC9jb2RlPjwvdGQ+Ci08dGQ+PGNvZGU+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUFRfVFJJTSI+T1BUX1RSSU08L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjI8L2NvZGU+PC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJib3R0b21OYXYiPjxhIG5hbWU9Im5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSJpbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSJoZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWw/Y29uc3RhbnQtdmFsdWVzLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iY29uc3RhbnQtdmFsdWVzLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9kZXByZWNhdGVkLWxpc3QuaHRtbCBiL2phdmEvZG9jL2RlcHJlY2F0ZWQtbGlzdC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNDdmZmIxLi4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL2RlcHJlY2F0ZWQtbGlzdC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjQ4ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+RGVwcmVjYXRlZCBMaXN0PC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkRlcHJlY2F0ZWQgTGlzdCI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5EZXByZWNhdGVkPC9saT4KLTxsaT48YSBocmVmPSJpbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSJoZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWw/ZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4KLTxsaT48YSBocmVmPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotPGgxIHRpdGxlPSJEZXByZWNhdGVkIEFQSSIgY2xhc3M9InRpdGxlIj5EZXByZWNhdGVkIEFQSTwvaDE+Ci08aDIgdGl0bGU9IkNvbnRlbnRzIj5Db250ZW50czwvaDI+Ci08dWw+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkIj5EZXByZWNhdGVkIEZpZWxkczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2QiPkRlcHJlY2F0ZWQgTWV0aG9kczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3RvciI+RGVwcmVjYXRlZCBDb25zdHJ1Y3RvcnM8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPjxhIG5hbWU9ImZpZWxkIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVwcmVjYXRlZCBGaWVsZHMgdGFibGUsIGxpc3RpbmcgZGVwcmVjYXRlZCBmaWVsZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5EZXByZWNhdGVkIEZpZWxkczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkZpZWxkIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRib2R5PgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFTU1YIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFTU1YPC9hPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFU1NFIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFU1NFPC9hPjwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFU1NFMiI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GT1JDRVNTRTI8L2E+PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRk9SQ0VTU0UzIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFU1NFMzwvYT48L3RkPgotPC90cj4KLTwvdGJvZHk+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJtZXRob2QiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPHRhYmxlIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJEZXByZWNhdGVkIE1ldGhvZHMgdGFibGUsIGxpc3RpbmcgZGVwcmVjYXRlZCBtZXRob2RzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+RGVwcmVjYXRlZCBNZXRob2RzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbE9uZSIgc2NvcGU9ImNvbCI+TWV0aG9kIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRib2R5PgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50KSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouYnVmU2l6ZVlVVihpbnQsIGludCwgaW50KTwvYT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UgPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKLmJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGJ5dGVbXSwlMjBpbnQpIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkNvbXByZXNzb3IuY29tcHJlc3MoQnVmZmVyZWRJbWFnZSwgYnl0ZVtdLCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhieXRlW10sJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmNvbXByZXNzKGJ5dGVbXSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3Nvci5jb21wcmVzcyhCdWZmZXJlZEltYWdlLCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhpbnQpIj48Y29kZT5USkNvbXByZXNzb3IuY29tcHJlc3MoaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkRlY29tcHJlc3Nvci5kZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoYnl0ZVtdLCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKRGVjb21wcmVzc29yLmRlY29tcHJlc3NUb1lVVihieXRlW10sIGludCk8L2E+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlLCUyMGludCkiPjxjb2RlPlRKRGVjb21wcmVzc29yLmRlY29tcHJlc3NUb1lVVihZVVZJbWFnZSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihpbnQpIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkRlY29tcHJlc3Nvci5kZWNvbXByZXNzVG9ZVVYoaW50KTwvYT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UgPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3IuZGVjb21wcmVzc1RvWVVWKGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwYnl0ZVtdLCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3Nvci5lbmNvZGVZVVYoQnVmZmVyZWRJbWFnZSwgYnl0ZVtdLCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoYnl0ZVtdLCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5lbmNvZGVZVVYoYnl0ZVtdLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3Nvci5lbmNvZGVZVVYoQnVmZmVyZWRJbWFnZSwgaW50KTwvYT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gYW5kCi0gPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGludCwlMjBpbnQpIj48Y29kZT5USkNvbXByZXNzb3IuZW5jb2RlWVVWKGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoYnl0ZVtdLCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3Nvci5lbmNvZGVZVVYoYnl0ZVtdLCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmVuY29kZVlVVihZVVZJbWFnZSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50KSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpDb21wcmVzc29yLmVuY29kZVlVVihpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50LCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5lbmNvZGVZVVYoaW50LCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0SlBFR0ltYWdlKGJ5dGVbXSwlMjBpbnQpIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkRlY29tcHJlc3Nvci5zZXRKUEVHSW1hZ2UoYnl0ZVtdLCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQpIj48Y29kZT5USkRlY29tcHJlc3Nvci5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ29tcHJlc3Nvci5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCk8L2E+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlCi0gPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImNvbnN0cnVjdG9yIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTx0YWJsZSBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRGVwcmVjYXRlZCBDb25zdHJ1Y3RvcnMgdGFibGUsIGxpc3RpbmcgZGVwcmVjYXRlZCBjb25zdHJ1Y3RvcnMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5EZXByZWNhdGVkIENvbnN0cnVjdG9yczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRib2R5PgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkNvbXByZXNzb3IoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQpPC9hPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI1RKQ29tcHJlc3NvcihieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5USkNvbXByZXNzb3IuVEpDb21wcmVzc29yKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+RGVwcmVjYXRlZDwvbGk+Ci08bGk+PGEgaHJlZj0iaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+UHJldjwvbGk+Ci08bGk+TmV4dDwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSJpbmRleC5odG1sP2RlcHJlY2F0ZWQtbGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2MvaGVscC1kb2MuaHRtbCBiL2phdmEvZG9jL2hlbHAtZG9jLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNlNzQ5YTkuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2MvaGVscC1kb2MuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDIwNiArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPkFQSSBIZWxwPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkFQSSBIZWxwIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImluZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+SGVscDwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWw/aGVscC1kb2MuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJoZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX3RvcCIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxoMSBjbGFzcz0idGl0bGUiPkhvdyBUaGlzIEFQSSBEb2N1bWVudCBJcyBPcmdhbml6ZWQ8L2gxPgotPGRpdiBjbGFzcz0ic3ViVGl0bGUiPlRoaXMgQVBJIChBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2UpIGRvY3VtZW50IGhhcyBwYWdlcyBjb3JyZXNwb25kaW5nIHRvIHRoZSBpdGVtcyBpbiB0aGUgbmF2aWdhdGlvbiBiYXIsIGRlc2NyaWJlZCBhcyBmb2xsb3dzLjwvZGl2PgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjb250ZW50Q29udGFpbmVyIj4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoMj5QYWNrYWdlPC9oMj4KLTxwPkVhY2ggcGFja2FnZSBoYXMgYSBwYWdlIHRoYXQgY29udGFpbnMgYSBsaXN0IG9mIGl0cyBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzLCB3aXRoIGEgc3VtbWFyeSBmb3IgZWFjaC4gVGhpcyBwYWdlIGNhbiBjb250YWluIHNpeCBjYXRlZ29yaWVzOjwvcD4KLTx1bD4KLTxsaT5JbnRlcmZhY2VzIChpdGFsaWMpPC9saT4KLTxsaT5DbGFzc2VzPC9saT4KLTxsaT5FbnVtczwvbGk+Ci08bGk+RXhjZXB0aW9uczwvbGk+Ci08bGk+RXJyb3JzPC9saT4KLTxsaT5Bbm5vdGF0aW9uIFR5cGVzPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPkNsYXNzL0ludGVyZmFjZTwvaDI+Ci08cD5FYWNoIGNsYXNzLCBpbnRlcmZhY2UsIG5lc3RlZCBjbGFzcyBhbmQgbmVzdGVkIGludGVyZmFjZSBoYXMgaXRzIG93biBzZXBhcmF0ZSBwYWdlLiBFYWNoIG9mIHRoZXNlIHBhZ2VzIGhhcyB0aHJlZSBzZWN0aW9ucyBjb25zaXN0aW5nIG9mIGEgY2xhc3MvaW50ZXJmYWNlIGRlc2NyaXB0aW9uLCBzdW1tYXJ5IHRhYmxlcywgYW5kIGRldGFpbGVkIG1lbWJlciBkZXNjcmlwdGlvbnM6PC9wPgotPHVsPgotPGxpPkNsYXNzIGluaGVyaXRhbmNlIGRpYWdyYW08L2xpPgotPGxpPkRpcmVjdCBTdWJjbGFzc2VzPC9saT4KLTxsaT5BbGwgS25vd24gU3ViaW50ZXJmYWNlczwvbGk+Ci08bGk+QWxsIEtub3duIEltcGxlbWVudGluZyBDbGFzc2VzPC9saT4KLTxsaT5DbGFzcy9pbnRlcmZhY2UgZGVjbGFyYXRpb248L2xpPgotPGxpPkNsYXNzL2ludGVyZmFjZSBkZXNjcmlwdGlvbjwvbGk+Ci08L3VsPgotPHVsPgotPGxpPk5lc3RlZCBDbGFzcyBTdW1tYXJ5PC9saT4KLTxsaT5GaWVsZCBTdW1tYXJ5PC9saT4KLTxsaT5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9saT4KLTxsaT5NZXRob2QgU3VtbWFyeTwvbGk+Ci08L3VsPgotPHVsPgotPGxpPkZpZWxkIERldGFpbDwvbGk+Ci08bGk+Q29uc3RydWN0b3IgRGV0YWlsPC9saT4KLTxsaT5NZXRob2QgRGV0YWlsPC9saT4KLTwvdWw+Ci08cD5FYWNoIHN1bW1hcnkgZW50cnkgY29udGFpbnMgdGhlIGZpcnN0IHNlbnRlbmNlIGZyb20gdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9uIGZvciB0aGF0IGl0ZW0uIFRoZSBzdW1tYXJ5IGVudHJpZXMgYXJlIGFscGhhYmV0aWNhbCwgd2hpbGUgdGhlIGRldGFpbGVkIGRlc2NyaXB0aW9ucyBhcmUgaW4gdGhlIG9yZGVyIHRoZXkgYXBwZWFyIGluIHRoZSBzb3VyY2UgY29kZS4gVGhpcyBwcmVzZXJ2ZXMgdGhlIGxvZ2ljYWwgZ3JvdXBpbmdzIGVzdGFibGlzaGVkIGJ5IHRoZSBwcm9ncmFtbWVyLjwvcD4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDI+QW5ub3RhdGlvbiBUeXBlPC9oMj4KLTxwPkVhY2ggYW5ub3RhdGlvbiB0eXBlIGhhcyBpdHMgb3duIHNlcGFyYXRlIHBhZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOjwvcD4KLTx1bD4KLTxsaT5Bbm5vdGF0aW9uIFR5cGUgZGVjbGFyYXRpb248L2xpPgotPGxpPkFubm90YXRpb24gVHlwZSBkZXNjcmlwdGlvbjwvbGk+Ci08bGk+UmVxdWlyZWQgRWxlbWVudCBTdW1tYXJ5PC9saT4KLTxsaT5PcHRpb25hbCBFbGVtZW50IFN1bW1hcnk8L2xpPgotPGxpPkVsZW1lbnQgRGV0YWlsPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPkVudW08L2gyPgotPHA+RWFjaCBlbnVtIGhhcyBpdHMgb3duIHNlcGFyYXRlIHBhZ2Ugd2l0aCB0aGUgZm9sbG93aW5nIHNlY3Rpb25zOjwvcD4KLTx1bD4KLTxsaT5FbnVtIGRlY2xhcmF0aW9uPC9saT4KLTxsaT5FbnVtIGRlc2NyaXB0aW9uPC9saT4KLTxsaT5FbnVtIENvbnN0YW50IFN1bW1hcnk8L2xpPgotPGxpPkVudW0gQ29uc3RhbnQgRGV0YWlsPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPlRyZWUgKENsYXNzIEhpZXJhcmNoeSk8L2gyPgotPHA+VGhlcmUgaXMgYSA8YSBocmVmPSJvdmVydmlldy10cmVlLmh0bWwiPkNsYXNzIEhpZXJhcmNoeTwvYT4gcGFnZSBmb3IgYWxsIHBhY2thZ2VzLCBwbHVzIGEgaGllcmFyY2h5IGZvciBlYWNoIHBhY2thZ2UuIEVhY2ggaGllcmFyY2h5IHBhZ2UgY29udGFpbnMgYSBsaXN0IG9mIGNsYXNzZXMgYW5kIGEgbGlzdCBvZiBpbnRlcmZhY2VzLiBUaGUgY2xhc3NlcyBhcmUgb3JnYW5pemVkIGJ5IGluaGVyaXRhbmNlIHN0cnVjdHVyZSBzdGFydGluZyB3aXRoIDxjb2RlPmphdmEubGFuZy5PYmplY3Q8L2NvZGU+LiBUaGUgaW50ZXJmYWNlcyBkbyBub3QgaW5oZXJpdCBmcm9tIDxjb2RlPmphdmEubGFuZy5PYmplY3Q8L2NvZGU+LjwvcD4KLTx1bD4KLTxsaT5XaGVuIHZpZXdpbmcgdGhlIE92ZXJ2aWV3IHBhZ2UsIGNsaWNraW5nIG9uICJUcmVlIiBkaXNwbGF5cyB0aGUgaGllcmFyY2h5IGZvciBhbGwgcGFja2FnZXMuPC9saT4KLTxsaT5XaGVuIHZpZXdpbmcgYSBwYXJ0aWN1bGFyIHBhY2thZ2UsIGNsYXNzIG9yIGludGVyZmFjZSBwYWdlLCBjbGlja2luZyAiVHJlZSIgZGlzcGxheXMgdGhlIGhpZXJhcmNoeSBmb3Igb25seSB0aGF0IHBhY2thZ2UuPC9saT4KLTwvdWw+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPkRlcHJlY2F0ZWQgQVBJPC9oMj4KLTxwPlRoZSA8YSBocmVmPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZCBBUEk8L2E+IHBhZ2UgbGlzdHMgYWxsIG9mIHRoZSBBUEkgdGhhdCBoYXZlIGJlZW4gZGVwcmVjYXRlZC4gQSBkZXByZWNhdGVkIEFQSSBpcyBub3QgcmVjb21tZW5kZWQgZm9yIHVzZSwgZ2VuZXJhbGx5IGR1ZSB0byBpbXByb3ZlbWVudHMsIGFuZCBhIHJlcGxhY2VtZW50IEFQSSBpcyB1c3VhbGx5IGdpdmVuLiBEZXByZWNhdGVkIEFQSXMgbWF5IGJlIHJlbW92ZWQgaW4gZnV0dXJlIGltcGxlbWVudGF0aW9ucy48L3A+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPkluZGV4PC9oMj4KLTxwPlRoZSA8YSBocmVmPSJpbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+IGNvbnRhaW5zIGFuIGFscGhhYmV0aWMgbGlzdCBvZiBhbGwgY2xhc3NlcywgaW50ZXJmYWNlcywgY29uc3RydWN0b3JzLCBtZXRob2RzLCBhbmQgZmllbGRzLjwvcD4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDI+UHJldi9OZXh0PC9oMj4KLTxwPlRoZXNlIGxpbmtzIHRha2UgeW91IHRvIHRoZSBuZXh0IG9yIHByZXZpb3VzIGNsYXNzLCBpbnRlcmZhY2UsIHBhY2thZ2UsIG9yIHJlbGF0ZWQgcGFnZS48L3A+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGgyPkZyYW1lcy9ObyBGcmFtZXM8L2gyPgotPHA+VGhlc2UgbGlua3Mgc2hvdyBhbmQgaGlkZSB0aGUgSFRNTCBmcmFtZXMuICBBbGwgcGFnZXMgYXJlIGF2YWlsYWJsZSB3aXRoIG9yIHdpdGhvdXQgZnJhbWVzLjwvcD4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDI+QWxsIENsYXNzZXM8L2gyPgotPHA+VGhlIDxhIGhyZWY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT4gbGluayBzaG93cyBhbGwgY2xhc3NlcyBhbmQgaW50ZXJmYWNlcyBleGNlcHQgbm9uLXN0YXRpYyBuZXN0ZWQgdHlwZXMuPC9wPgotPC9saT4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoMj5TZXJpYWxpemVkIEZvcm08L2gyPgotPHA+RWFjaCBzZXJpYWxpemFibGUgb3IgZXh0ZXJuYWxpemFibGUgY2xhc3MgaGFzIGEgZGVzY3JpcHRpb24gb2YgaXRzIHNlcmlhbGl6YXRpb24gZmllbGRzIGFuZCBtZXRob2RzLiBUaGlzIGluZm9ybWF0aW9uIGlzIG9mIGludGVyZXN0IHRvIHJlLWltcGxlbWVudG9ycywgbm90IHRvIGRldmVsb3BlcnMgdXNpbmcgdGhlIEFQSS4gV2hpbGUgdGhlcmUgaXMgbm8gbGluayBpbiB0aGUgbmF2aWdhdGlvbiBiYXIsIHlvdSBjYW4gZ2V0IHRvIHRoaXMgaW5mb3JtYXRpb24gYnkgZ29pbmcgdG8gYW55IHNlcmlhbGl6ZWQgY2xhc3MgYW5kIGNsaWNraW5nICJTZXJpYWxpemVkIEZvcm0iIGluIHRoZSAiU2VlIGFsc28iIHNlY3Rpb24gb2YgdGhlIGNsYXNzIGRlc2NyaXB0aW9uLjwvcD4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9oMj4KLTxwPlRoZSA8YSBocmVmPSJjb25zdGFudC12YWx1ZXMuaHRtbCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPiBwYWdlIGxpc3RzIHRoZSBzdGF0aWMgZmluYWwgZmllbGRzIGFuZCB0aGVpciB2YWx1ZXMuPC9wPgotPC9saT4KLTwvdWw+Ci08ZW0+VGhpcyBoZWxwIGZpbGUgYXBwbGllcyB0byBBUEkgZG9jdW1lbnRhdGlvbiBnZW5lcmF0ZWQgdXNpbmcgdGhlIHN0YW5kYXJkIGRvY2xldC48L2VtPjwvZGl2PgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5IZWxwPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXY8L2xpPgotPGxpPk5leHQ8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iaW5kZXguaHRtbD9oZWxwLWRvYy5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImhlbHAtZG9jLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSJhbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9pbmRleC1hbGwuaHRtbCBiL2phdmEvZG9jL2luZGV4LWFsbC5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMDJkOWM0Li4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL2luZGV4LWFsbC5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTgwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+SW5kZXg8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi9zdHlsZXNoZWV0LmNzcyIgdGl0bGU9IlN0eWxlIj4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgICBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCdpcy1leHRlcm5hbD10cnVlJykgPT0gLTEpIHsKLSAgICAgICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJJbmRleCI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkluZGV4PC9saT4KLTxsaT48YSBocmVmPSIuL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXY8L2xpPgotPGxpPk5leHQ8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi9pbmRleC5odG1sP2luZGV4LWFsbC5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImluZGV4LWFsbC5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJjb250ZW50Q29udGFpbmVyIj48YSBocmVmPSIjX0JfIj5CPC9hPiZuYnNwOzxhIGhyZWY9IiNfQ18iPkM8L2E+Jm5ic3A7PGEgaHJlZj0iI19EXyI+RDwvYT4mbmJzcDs8YSBocmVmPSIjX0VfIj5FPC9hPiZuYnNwOzxhIGhyZWY9IiNfRl8iPkY8L2E+Jm5ic3A7PGEgaHJlZj0iI19HXyI+RzwvYT4mbmJzcDs8YSBocmVmPSIjX0hfIj5IPC9hPiZuYnNwOzxhIGhyZWY9IiNfSV8iPkk8L2E+Jm5ic3A7PGEgaHJlZj0iI19KXyI+SjwvYT4mbmJzcDs8YSBocmVmPSIjX05fIj5OPC9hPiZuYnNwOzxhIGhyZWY9IiNfT18iPk88L2E+Jm5ic3A7PGEgaHJlZj0iI19QXyI+UDwvYT4mbmJzcDs8YSBocmVmPSIjX1NfIj5TPC9hPiZuYnNwOzxhIGhyZWY9IiNfVF8iPlQ8L2E+Jm5ic3A7PGEgaHJlZj0iI19ZXyI+WTwvYT4mbmJzcDs8YSBuYW1lPSJfQl8iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+QjwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2J1ZlNpemUoaW50LCUyMGludCwlMjBpbnQpIj5idWZTaXplKGludCwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIEpQRUcKLSBpbWFnZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCwgaGVpZ2h0LCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hcgotIGltYWdlIHdpdGggdGhlIGdpdmVuIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2J1ZlNpemVZVVYoaW50LCUyMGludCwlMjBpbnQpIj5idWZTaXplWVVWKGludCwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjYnVmU2l6ZVlVVihpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5USi5idWZTaXplWVVWKGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfQ18iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+QzwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI2NmIj5jZjwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3VzdG9tIGZpbHRlciBpbnN0YW5jZTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2Nsb3NlKCkiPmNsb3NlKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkZyZWUgdGhlIG5hdGl2ZSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNjbG9zZSgpIj5jbG9zZSgpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+RnJlZSB0aGUgbmF0aXZlIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGJ5dGVbXSwlMjBpbnQpIj5jb21wcmVzcyhieXRlW10sIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNvbXByZXNzIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgSlBFRyBpbWFnZSB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGludCkiPmNvbXByZXNzKGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNvbXByZXNzIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwYnl0ZVtdLCUyMGludCkiPmNvbXByZXNzKEJ1ZmZlcmVkSW1hZ2UsIGJ5dGVbXSwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlCi0gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gYW5kCi0gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhieXRlW10sJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmNvbXByZXNzKGJ5dGVbXSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjY29tcHJlc3MoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQpIj5jb21wcmVzcyhCdWZmZXJlZEltYWdlLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5jb21wcmVzcyhpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX0NNWUsiPkNTX0NNWUs8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DTVlLIGNvbG9yc3BhY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19HUkFZIj5DU19HUkFZPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+R3JheXNjYWxlIGNvbG9yc3BhY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19SR0IiPkNTX1JHQjwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJHQiBjb2xvcnNwYWNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjQ1NfWUNiQ3IiPkNTX1lDYkNyPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+WUNiQ3IgY29sb3JzcGFjZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX1lDQ0siPkNTX1lDQ0s8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5ZQ0NLIGNvbG9yc3BhY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCNjdXN0b21GaWx0ZXIoamF2YS5uaW8uU2hvcnRCdWZmZXIsJTIwamF2YS5hd3QuUmVjdGFuZ2xlLCUyMGphdmEuYXd0LlJlY3RhbmdsZSwlMjBpbnQsJTIwaW50LCUyMG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtKSI+Y3VzdG9tRmlsdGVyKFNob3J0QnVmZmVyLCBSZWN0YW5nbGUsIFJlY3RhbmdsZSwgaW50LCBpbnQsIFRKVHJhbnNmb3JtKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGludGVyZmFjZSBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ3VzdG9tRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ3VzdG9tRmlsdGVyPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgRENUIGNvZWZmaWNpZW50cyBhZnRlcgotIHRoZXkgYXJlIGxvc3NsZXNzbHkgdHJhbnNmb3JtZWQgYnV0IGJlZm9yZSB0aGV5IGFyZSB0cmFuc2NvZGVkIHRvIGEgbmV3Ci0gSlBFRyBpbWFnZS48L2Rpdj4KLTwvZGQ+Ci08L2RsPgotPGEgbmFtZT0iX0RfIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiBjbGFzcz0idGl0bGUiPkQ8L2gyPgotPGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5kZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZ3JheXNjYWxlLCBSR0IsIG9yIENNWUsgaW1hZ2UKLSB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3IuZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzcyhpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoaW50W10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzcyhpbnRbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZ3JheXNjYWxlLCBSR0IsIG9yIENNWUsgaW1hZ2UKLSB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCkiPmRlY29tcHJlc3MoQnVmZmVyZWRJbWFnZSwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UgdG8KLSB0aGUgZ2l2ZW4gPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4gaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3MoaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4KLSBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSwlMjBpbnQpIj5kZWNvbXByZXNzVG9ZVVYoWVVWSW1hZ2UsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgc3RvcmUgaXQgaW4gdGhlIGdpdmVuCi0gPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGJ5dGVbXSwlMjBpbnQpIj5kZWNvbXByZXNzVG9ZVVYoYnl0ZVtdLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3IuZGVjb21wcmVzc1RvWVVWKFlVVkltYWdlLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihpbnQsJTIwaW50W10sJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3NUb1lVVihpbnQsIGludFtdLCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgc2V0IG9mIFksIFUgKENiKSwgYW5kIFYgKENyKSBpbWFnZSBwbGFuZXMgYW5kIHJldHVybiBhCi0gPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSBwbGFuZXMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzc1RvWVVWKGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgdW5pZmllZCBZVVYgcGxhbmFyIGltYWdlIGJ1ZmZlciBhbmQgcmV0dXJuIGEKLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGltYWdlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGludCkiPmRlY29tcHJlc3NUb1lVVihpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3IuZGVjb21wcmVzc1RvWVVWKGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfRV8iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+RTwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+ZW5jb2RlWVVWKFlVVkltYWdlLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSBZVVYgcGxhbmFyIGltYWdlIGFuZCBzdG9yZSBpdCBpbiB0aGUgZ2l2ZW4KLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGJ5dGVbXSwlMjBpbnQpIj5lbmNvZGVZVVYoYnl0ZVtdLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UgPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmVuY29kZVlVVihZVVZJbWFnZSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGludCwlMjBpbnQpIj5lbmNvZGVZVVYoaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSB1bmlmaWVkIFlVViBwbGFuYXIgaW1hZ2UgYnVmZmVyIGFuZCByZXR1cm4gYQotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihpbnRbXSwlMjBpbnQpIj5lbmNvZGVZVVYoaW50W10sIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZSB0aGUgdW5jb21wcmVzc2VkIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yCi0gaW5zdGFuY2UgaW50byBzZXBhcmF0ZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGFuZCByZXR1cm4gYQotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50KSI+ZW5jb2RlWVVWKGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmVuY29kZVlVVihpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGJ5dGVbXSwlMjBpbnQpIj5lbmNvZGVZVVYoQnVmZmVyZWRJbWFnZSwgYnl0ZVtdLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihieXRlW10sJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmVuY29kZVlVVihieXRlW10sIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCkiPmVuY29kZVlVVihCdWZmZXJlZEltYWdlLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4KLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihpbnQsJTIwaW50KSI+PGNvZGU+VEpDb21wcmVzc29yLmVuY29kZVlVVihpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2VxdWFscyhvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlNjYWxpbmdGYWN0b3IpIj5lcXVhbHMoVEpTY2FsaW5nRmFjdG9yKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpTY2FsaW5nRmFjdG9yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGluc3RhbmNlIGFuZAotIDxjb2RlPm90aGVyPC9jb2RlPiBoYXZlIHRoZSBzYW1lIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IuPC9kaXY+Ci08L2RkPgotPC9kbD4KLTxhIG5hbWU9Il9GXyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDIgY2xhc3M9InRpdGxlIj5GPC9oMj4KLTxkbD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2ZpbmFsaXplKCkiPmZpbmFsaXplKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2ZpbmFsaXplKCkiPmZpbmFsaXplKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0FDQ1VSQVRFRENUIj5GTEFHX0FDQ1VSQVRFRENUPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+VXNlIHRoZSBtb3N0IGFjY3VyYXRlIERDVC9JRENUIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcKLSBjb2RlYy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQk9UVE9NVVAiPkZMQUdfQk9UVE9NVVA8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgdW5jb21wcmVzc2VkIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZSBpcyBzdG9yZWQgaW4gYm90dG9tLXVwIChXaW5kb3dzLAotIE9wZW5HTCkgb3JkZXIsIG5vdCB0b3AtZG93biAoWDExKSBvcmRlci48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRkFTVERDVCI+RkxBR19GQVNURENUPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+VXNlIHRoZSBmYXN0ZXN0IERDVC9JRENUIGFsZ29yaXRobSBhdmFpbGFibGUgaW4gdGhlIHVuZGVybHlpbmcgY29kZWMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZBU1RVUFNBTVBMRSI+RkxBR19GQVNUVVBTQU1QTEU8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5XaGVuIGRlY29tcHJlc3NpbmcgYW4gaW1hZ2UgdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLCB1c2UgdGhlIGZhc3Rlc3QgY2hyb21pbmFuY2UgdXBzYW1wbGluZyBhbGdvcml0aG0gYXZhaWxhYmxlIGluCi0gdGhlIHVuZGVybHlpbmcgY29kZWMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFTU1YIj5GTEFHX0ZPUkNFTU1YPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+PC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFU1NFIj5GTEFHX0ZPUkNFU1NFPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+PC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFU1NFMiI+RkxBR19GT1JDRVNTRTI8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRk9SQ0VTU0UzIj5GTEFHX0ZPUkNFU1NFMzwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPjwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfR18iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+RzwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldEJsdWVPZmZzZXQoaW50KSI+Z2V0Qmx1ZU9mZnNldChpbnQpPC9hPjwvc3Bhbj4gLSBTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgYmx1ZQotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0QnVmKCkiPmdldEJ1ZigpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcyBzdG9yZWQgaW4gYSB1bmlmaWVkCi0gYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRDb2xvcnNwYWNlKCkiPmdldENvbG9yc3BhY2UoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGNvbG9yc3BhY2UgdXNlZCBpbiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZ2V0Q29tcHJlc3NlZFNpemUoKSI+Z2V0Q29tcHJlc3NlZFNpemUoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgKGluIGJ5dGVzKSBnZW5lcmF0ZWQgYnkgdGhlIG1vc3QgcmVjZW50Ci0gY29tcHJlc3Mgb3BlcmF0aW9uLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldERlbm9tKCkiPmdldERlbm9tKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKU2NhbGluZ0ZhY3RvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgZGVub21pbmF0b3I8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldEdyZWVuT2Zmc2V0KGludCkiPmdldEdyZWVuT2Zmc2V0KGludCk8L2E+PC9zcGFuPiAtIFN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Rm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSBncmVlbgotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0SGVpZ2h0KCkiPmdldEhlaWdodCgpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldEhlaWdodCgpIj5nZXRIZWlnaHQoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24uKTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0SlBFR0J1ZigpIj5nZXRKUEVHQnVmKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBKUEVHIGltYWdlIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRKUEVHU2l6ZSgpIj5nZXRKUEVHU2l6ZSgpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gYnl0ZXMpIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0TUNVSGVpZ2h0KGludCkiPmdldE1DVUhlaWdodChpbnQpPC9hPjwvc3Bhbj4gLSBTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIE1DVSBibG9jayBoZWlnaHQgZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0TUNVV2lkdGgoaW50KSI+Z2V0TUNVV2lkdGgoaW50KTwvYT48L3NwYW4+IC0gU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBNQ1UgYmxvY2sgd2lkdGggZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldE51bSgpIj5nZXROdW0oKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpTY2FsaW5nRmFjdG9yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBudW1lcmF0b3I8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldE9mZnNldHMoKSI+Z2V0T2Zmc2V0cygpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgb2Zmc2V0cyAoaW4gYnl0ZXMpIG9mIGVhY2ggcGxhbmUgd2l0aGluIHRoZSBwbGFuZXMgb2YgYSBsYXJnZXIKLSBZVVYgaW1hZ2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRQYWQoKSI+Z2V0UGFkKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsaW5lIHBhZGRpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcwotIHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNnZXRQaXhlbFNpemUoaW50KSI+Z2V0UGl4ZWxTaXplKGludCk8L2E+PC9zcGFuPiAtIFN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgcGl4ZWwgc2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0UGxhbmVzKCkiPmdldFBsYW5lcygpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgWVVWIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldFJlZE9mZnNldChpbnQpIj5nZXRSZWRPZmZzZXQoaW50KTwvYT48L3NwYW4+IC0gU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Gb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdCwgcmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHRoYXQgdGhlIHJlZAotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldFNjYWxlZChpbnQpIj5nZXRTY2FsZWQoaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpTY2FsaW5nRmFjdG9yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2NhbGVkIHZhbHVlIG9mIDxjb2RlPmRpbWVuc2lvbjwvY29kZT4uPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRIZWlnaHQoaW50LCUyMGludCkiPmdldFNjYWxlZEhlaWdodChpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gZGVjb21wcmVzc29yIGNhbiBnZW5lcmF0ZSB3aXRob3V0IGV4Y2VlZGluZyB0aGUgZGVzaXJlZCBpbWFnZSB3aWR0aCBhbmQKLSBoZWlnaHQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRXaWR0aChpbnQsJTIwaW50KSI+Z2V0U2NhbGVkV2lkdGgoaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gZGVjb21wcmVzc29yIGNhbiBnZW5lcmF0ZSB3aXRob3V0IGV4Y2VlZGluZyB0aGUgZGVzaXJlZCBpbWFnZSB3aWR0aCBhbmQKLSBoZWlnaHQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNnZXRTY2FsaW5nRmFjdG9ycygpIj5nZXRTY2FsaW5nRmFjdG9ycygpPC9hPjwvc3Bhbj4gLSBTdGF0aWMgbWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYSBsaXN0IG9mIGZyYWN0aW9uYWwgc2NhbGluZyBmYWN0b3JzIHRoYXQgdGhlIEpQRUcgZGVjb21wcmVzc29yIGluCi0gdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBUdXJib0pQRUcgc3VwcG9ydHMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRTaXplKCkiPmdldFNpemUoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcwotIHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRTdHJpZGVzKCkiPmdldFN0cmlkZXMoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgbGluZSBvZiBlYWNoIHBsYW5lIGluIHRoZSBZVVYgaW1hZ2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTdWJzYW1wKCkiPmdldFN1YnNhbXAoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIHNvdXJjZSBpbWFnZQotIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0U3Vic2FtcCgpIj5nZXRTdWJzYW1wKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI2dldFRyYW5zZm9ybWVkU2l6ZXMoKSI+Z2V0VHJhbnNmb3JtZWRTaXplcygpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm1lcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc2l6ZXMgb2YgdGhlIHRyYW5zZm9ybWVkIEpQRUcgaW1hZ2VzCi0gZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudCB0cmFuc2Zvcm0gb3BlcmF0aW9uLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0V2lkdGgoKSI+Z2V0V2lkdGgoKTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldFdpZHRoKCkiPmdldFdpZHRoKCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24uKTwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfSF8iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+SDwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2hhbmRsZSI+aGFuZGxlPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNoYW5kbGUiPmhhbmRsZTwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfSV8iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+STwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCNpc09uZSgpIj5pc09uZSgpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlNjYWxpbmdGYWN0b3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgaXMgZXF1YWwgdG8KLSAxLzEuPC9kaXY+Ci08L2RkPgotPC9kbD4KLTxhIG5hbWU9Il9KXyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDIgY2xhc3M9InRpdGxlIj5KPC9oMj4KLTxkbD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ0J1ZiI+anBlZ0J1ZjwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ0J1ZlNpemUiPmpwZWdCdWZTaXplPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNqcGVnQ29sb3JzcGFjZSI+anBlZ0NvbG9yc3BhY2U8L2E+PC9zcGFuPiAtIFZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2pwZWdIZWlnaHQiPmpwZWdIZWlnaHQ8L2E+PC9zcGFuPiAtIFZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2pwZWdTdWJzYW1wIj5qcGVnU3Vic2FtcDwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ1dpZHRoIj5qcGVnV2lkdGg8L2E+PC9zcGFuPiAtIFZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08L2RsPgotPGEgbmFtZT0iX05fIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiBjbGFzcz0idGl0bGUiPk48L2gyPgotPGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNOVU1DUyI+TlVNQ1M8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgbnVtYmVyIG9mIEpQRUcgY29sb3JzcGFjZXM8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI05VTU9QIj5OVU1PUDwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgbG9zc2xlc3MgdHJhbnNmb3JtIG9wZXJhdGlvbnM8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI05VTVBGIj5OVU1QRjwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgcGl4ZWwgZm9ybWF0czwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjTlVNU0FNUCI+TlVNU0FNUDwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9uczwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfT18iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+TzwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI29wIj5vcDwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnNmb3JtIG9wZXJhdGlvbiAob25lIG9mIDxjb2RlPk9QXyo8L2NvZGU+KTwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfSEZMSVAiPk9QX0hGTElQPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+RmxpcCAobWlycm9yKSBpbWFnZSBob3Jpem9udGFsbHkuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9OT05FIj5PUF9OT05FPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+RG8gbm90IHRyYW5zZm9ybSB0aGUgcG9zaXRpb24gb2YgdGhlIGltYWdlIHBpeGVscy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1JPVDE4MCI+T1BfUk9UMTgwPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Um90YXRlIGltYWdlIDE4MCBkZWdyZWVzLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfUk9UMjcwIj5PUF9ST1QyNzA8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Sb3RhdGUgaW1hZ2UgY291bnRlci1jbG9ja3dpc2UgYnkgOTAgZGVncmVlcy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1JPVDkwIj5PUF9ST1Q5MDwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlJvdGF0ZSBpbWFnZSBjbG9ja3dpc2UgYnkgOTAgZGVncmVlcy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1RSQU5TUE9TRSI+T1BfVFJBTlNQT1NFPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnNwb3NlIGltYWdlIChmbGlwL21pcnJvciBhbG9uZyB1cHBlciBsZWZ0IHRvIGxvd2VyIHJpZ2h0IGF4aXMpLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfVFJBTlNWRVJTRSI+T1BfVFJBTlNWRVJTRTwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRyYW5zdmVyc2UgdHJhbnNwb3NlIGltYWdlIChmbGlwL21pcnJvciBhbG9uZyB1cHBlciByaWdodCB0byBsb3dlciBsZWZ0Ci0gYXhpcykuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9WRkxJUCI+T1BfVkZMSVA8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5GbGlwIChtaXJyb3IpIGltYWdlIHZlcnRpY2FsbHkuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUFRfQ1JPUCI+T1BUX0NST1A8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBsb3NzbGVzcyBjcm9wcGluZy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9HUkFZIj5PUFRfR1JBWTwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgZGlzY2FyZCB0aGUgY29sb3IgZGF0YSBpbiB0aGUgaW5wdXQgaW1hZ2UgYW5kIHByb2R1Y2UKLSBhIGdyYXlzY2FsZSBvdXRwdXQgaW1hZ2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUFRfTk9PVVRQVVQiPk9QVF9OT09VVFBVVDwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgcHJldmVudCA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCN0cmFuc2Zvcm0oYnl0ZVtdW10sJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwlMjBpbnQpIj48Y29kZT5USlRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpPC9jb2RlPjwvYT4gZnJvbSBvdXRwdXR0aW5nIGEgSlBFRyBpbWFnZSBmb3IgdGhpcwotIHBhcnRpY3VsYXIgdHJhbnNmb3JtLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPk9QVF9QRVJGRUNUPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBvcHRpb24gd2lsbCBjYXVzZSA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCN0cmFuc2Zvcm0oYnl0ZVtdW10sJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwlMjBpbnQpIj48Y29kZT5USlRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpPC9jb2RlPjwvYT4gdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSB0cmFuc2Zvcm0gaXMgbm90Ci0gcGVyZmVjdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9UUklNIj5PUFRfVFJJTTwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgZGlzY2FyZCBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIHRoYXQgY2Fubm90IGJlCi0gdHJhbnNmb3JtZWQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNvcHRpb25zIj5vcHRpb25zPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UcmFuc2Zvcm0gb3B0aW9ucyAoYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiA8Y29kZT5PUFRfKjwvY29kZT4pPC9kaXY+Ci08L2RkPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9hPiAtIHBhY2thZ2Ugb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08L2RsPgotPGEgbmFtZT0iX1BfIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiBjbGFzcz0idGl0bGUiPlA8L2gyPgotPGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9BQkdSIj5QRl9BQkdSPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QUJHUiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9BUkdCIj5QRl9BUkdCPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QVJHQiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9CR1IiPlBGX0JHUjwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkJHUiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9CR1JBIj5QRl9CR1JBPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QkdSQSBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9CR1JYIj5QRl9CR1JYPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QkdSWCBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9DTVlLIj5QRl9DTVlLPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q01ZSyBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9HUkFZIj5QRl9HUkFZPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+R3JheXNjYWxlIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQiI+UEZfUkdCPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UkdCIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQkEiPlBGX1JHQkE8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0JBIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQlgiPlBGX1JHQlg8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0JYIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1hCR1IiPlBGX1hCR1I8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5YQkdSIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1hSR0IiPlBGX1hSR0I8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5YUkdCIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI3BsYW5lSGVpZ2h0KGludCwlMjBpbnQsJTIwaW50KSI+cGxhbmVIZWlnaHQoaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIFN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgcGxhbmUgaGVpZ2h0IG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNwbGFuZVNpemVZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPnBsYW5lU2l6ZVlVVihpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIFN0YXRpYyBtZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBpbWFnZQotIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNwbGFuZVdpZHRoKGludCwlMjBpbnQsJTIwaW50KSI+cGxhbmVXaWR0aChpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gU3RhdGljIG1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBwbGFuZSB3aWR0aCBvZiBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPC9kZD4KLTwvZGw+Ci08YSBuYW1lPSJfU18iPgotPCEtLSAgIC0tPgotPC9hPgotPGgyIGNsYXNzPSJ0aXRsZSI+UzwvaDI+Ci08ZGw+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDExIj5TQU1QXzQxMTwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6MToxIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80MjAiPlNBTVBfNDIwPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+NDoyOjAgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQyMiI+U0FNUF80MjI8L2E+PC9zcGFuPiAtIFN0YXRpYyB2YXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj40OjI6MiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQwIj5TQU1QXzQ0MDwvYT48L3NwYW4+IC0gU3RhdGljIHZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6NDowIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80NDQiPlNBTVBfNDQ0PC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+NDo0OjQgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgKG5vIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nKS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfR1JBWSI+U0FNUF9HUkFZPC9hPjwvc3Bhbj4gLSBTdGF0aWMgdmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+R3JheXNjYWxlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjc2V0QnVmKGJ5dGVbXVtdLCUyMGludFtdLCUyMGludCwlMjBpbnRbXSwlMjBpbnQsJTIwaW50KSI+c2V0QnVmKGJ5dGVbXVtdLCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzaWduIGEgc2V0IG9mIGltYWdlIHBsYW5lcyB0byB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3NldEJ1ZihieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+c2V0QnVmKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc2lnbiBhIHVuaWZpZWQgaW1hZ2UgYnVmZmVyIHRvIHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0SlBFR0ltYWdlKGJ5dGVbXSwlMjBpbnQpIj5zZXRKUEVHSW1hZ2UoYnl0ZVtdLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50KSI+PGNvZGU+VEpEZWNvbXByZXNzb3Iuc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRKUEVHUXVhbGl0eShpbnQpIj5zZXRKUEVHUXVhbGl0eShpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5TZXQgdGhlIEpQRUcgaW1hZ2UgcXVhbGl0eSBsZXZlbCBmb3Igc3Vic2VxdWVudCBjb21wcmVzcyBvcGVyYXRpb25zLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc29jaWF0ZSBhbiB1bmNvbXByZXNzZWQgUkdCLCBncmF5c2NhbGUsIG9yIENNWUsgc291cmNlIGltYWdlIHdpdGggdGhpcwotIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDb21wcmVzc29yPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlCi0gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5USkNvbXByZXNzb3Iuc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiBvciBncmF5c2NhbGUgc291cmNlIGltYWdlIHdpdGggdGhpcwotIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2Uob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UpIj5zZXRTb3VyY2VJbWFnZShZVVZJbWFnZSk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc29jaWF0ZSBhbiB1bmNvbXByZXNzZWQgWVVWIHBsYW5hciBzb3VyY2UgaW1hZ2Ugd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgdGhlIEpQRUcgaW1hZ2Ugb2YgbGVuZ3RoIDxjb2RlPmltYWdlU2l6ZTwvY29kZT4gYnl0ZXMgc3RvcmVkIGluCi0gPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2Uob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UpIj5zZXRTb3VyY2VJbWFnZShZVVZJbWFnZSk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBZVVYgcGxhbmFyIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U3Vic2FtcChpbnQpIj5zZXRTdWJzYW1wKGludCk8L2E+PC9zcGFuPiAtIE1ldGhvZCBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlNldCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgZm9yIHN1YnNlcXVlbnQgY29tcHJlc3MvZW5jb2RlCi0gb3BlcmF0aW9ucy48L2Rpdj4KLTwvZGQ+Ci08L2RsPgotPGEgbmFtZT0iX1RfIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiBjbGFzcz0idGl0bGUiPlQ8L2gyPgotPGRsPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USjwvc3Bhbj48L2E+IC0gQ2xhc3MgaW4gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UdXJib0pQRUcgdXRpbGl0eSBjbGFzcyAoY2Fubm90IGJlIGluc3RhbnRpYXRlZCk8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1RKKCkiPlRKKCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEo8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEpDb21wcmVzc29yPC9zcGFuPjwvYT4gLSBDbGFzcyBpbiA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBjb21wcmVzc29yPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKCkiPlRKQ29tcHJlc3NvcigpPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNUSkNvbXByZXNzb3IoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+VEpDb21wcmVzc29yKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIHVuY29tcHJlc3NlZAotIHNvdXJjZSBpbWFnZSBzdG9yZWQgaW4gPGNvZGU+c3JjSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQKLSBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNUSkNvbXByZXNzb3IoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPlRKQ29tcHJlc3NvcihieXRlW10sIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPgotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3Nvci5USkNvbXByZXNzb3IoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+VEpDb21wcmVzc29yKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ29tcHJlc3NvcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIHVuY29tcHJlc3NlZAotIHNvdXJjZSBpbWFnZSBzdG9yZWQgaW4gPGNvZGU+c3JjSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQKLSBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkN1c3RvbUZpbHRlcjwvc3Bhbj48L2E+IC0gSW50ZXJmYWNlIGluIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3VzdG9tIGZpbHRlciBjYWxsYmFjayBpbnRlcmZhY2U8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKRGVjb21wcmVzc29yPC9zcGFuPjwvYT4gLSBDbGFzcyBpbiA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBkZWNvbXByZXNzb3I8L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI1RKRGVjb21wcmVzc29yKCkiPlRKRGVjb21wcmVzc29yKCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI1RKRGVjb21wcmVzc29yKGJ5dGVbXSkiPlRKRGVjb21wcmVzc29yKGJ5dGVbXSk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIEpQRUcgc291cmNlCi0gaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI1RKRGVjb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQpIj5USkRlY29tcHJlc3NvcihieXRlW10sIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIEpQRUcgc291cmNlCi0gaW1hZ2Ugb2YgbGVuZ3RoIDxjb2RlPmltYWdlU2l6ZTwvY29kZT4gYnl0ZXMgc3RvcmVkIGluCi0gPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjVEpEZWNvbXByZXNzb3Iob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UpIj5USkRlY29tcHJlc3NvcihZVVZJbWFnZSk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIFlVViBwbGFuYXIKLSBzb3VyY2UgaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPnl1dkltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkCi0gaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkV4Y2VwdGlvbjwvc3Bhbj48L2E+IC0gRXhjZXB0aW9uIGluIDxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwjVEpFeGNlcHRpb24oKSI+VEpFeGNlcHRpb24oKTwvYT48L3NwYW4+IC0gQ29uc3RydWN0b3IgZm9yIGV4Y2VwdGlvbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCNUSkV4Y2VwdGlvbihqYXZhLmxhbmcuU3RyaW5nLCUyMGphdmEubGFuZy5UaHJvd2FibGUpIj5USkV4Y2VwdGlvbihTdHJpbmcsIFRocm93YWJsZSk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBleGNlcHRpb24gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwjVEpFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPlRKRXhjZXB0aW9uKFN0cmluZyk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBleGNlcHRpb24gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwjVEpFeGNlcHRpb24oamF2YS5sYW5nLlRocm93YWJsZSkiPlRKRXhjZXB0aW9uKFRocm93YWJsZSk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBleGNlcHRpb24gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKU2NhbGluZ0ZhY3Rvcjwvc3Bhbj48L2E+IC0gQ2xhc3MgaW4gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5GcmFjdGlvbmFsIHNjYWxpbmcgZmFjdG9yPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwjVEpTY2FsaW5nRmFjdG9yKGludCwlMjBpbnQpIj5USlNjYWxpbmdGYWN0b3IoaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlNjYWxpbmdGYWN0b3I8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USlRyYW5zZm9ybTwvc3Bhbj48L2E+IC0gQ2xhc3MgaW4gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Mb3NzbGVzcyB0cmFuc2Zvcm0gcGFyYW1ldGVyczwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjVEpUcmFuc2Zvcm0oKSI+VEpUcmFuc2Zvcm0oKTwvYT48L3NwYW4+IC0gQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNUSlRyYW5zZm9ybShpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkN1c3RvbUZpbHRlcikiPlRKVHJhbnNmb3JtKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIFRKQ3VzdG9tRmlsdGVyKTwvYT48L3NwYW4+IC0gQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI1RKVHJhbnNmb3JtKGphdmEuYXd0LlJlY3RhbmdsZSwlMjBpbnQsJTIwaW50LCUyMG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ3VzdG9tRmlsdGVyKSI+VEpUcmFuc2Zvcm0oUmVjdGFuZ2xlLCBpbnQsIGludCwgVEpDdXN0b21GaWx0ZXIpPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IGxvc3NsZXNzIHRyYW5zZm9ybSBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPC9kZD4KLTxkdD48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USlRyYW5zZm9ybWVyPC9zcGFuPjwvYT4gLSBDbGFzcyBpbiA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBsb3NzbGVzcyB0cmFuc2Zvcm1lcjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCNUSlRyYW5zZm9ybWVyKCkiPlRKVHJhbnNmb3JtZXIoKTwvYT48L3NwYW4+IC0gQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtZXI8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI1RKVHJhbnNmb3JtZXIoYnl0ZVtdKSI+VEpUcmFuc2Zvcm1lcihieXRlW10pPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm1lcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBsb3NzbGVzcyB0cmFuc2Zvcm1lciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHCi0gaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZS48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwjVEpUcmFuc2Zvcm1lcihieXRlW10sJTIwaW50KSI+VEpUcmFuc2Zvcm1lcihieXRlW10sIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybWVyPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGxvc3NsZXNzIHRyYW5zZm9ybWVyIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIEpQRUcKLSBpbWFnZSBvZiBsZW5ndGggPGNvZGU+aW1hZ2VTaXplPC9jb2RlPiBieXRlcyBzdG9yZWQgaW4KLSA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShieXRlW11bXSwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPnRyYW5zZm9ybShieXRlW11bXSwgVEpUcmFuc2Zvcm1bXSwgaW50KTwvYT48L3NwYW4+IC0gTWV0aG9kIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtZXI8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Mb3NzbGVzc2x5IHRyYW5zZm9ybSB0aGUgSlBFRyBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyB0cmFuc2Zvcm1lcgotIGluc3RhbmNlIGludG8gb25lIG9yIG1vcmUgSlBFRyBpbWFnZXMgc3RvcmVkIGluIHRoZSBnaXZlbiBkZXN0aW5hdGlvbgotIGJ1ZmZlcnMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPnRyYW5zZm9ybShUSlRyYW5zZm9ybVtdLCBpbnQpPC9hPjwvc3Bhbj4gLSBNZXRob2QgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm1lcjwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkxvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gaW5zdGFuY2UgYW5kIHJldHVybiBhbiBhcnJheSBvZiA8YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpEZWNvbXByZXNzb3I8L2NvZGU+PC9hPiBpbnN0YW5jZXMsIGVhY2ggb2YKLSB3aGljaCBoYXMgYSB0cmFuc2Zvcm1lZCBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCBpdC48L2Rpdj4KLTwvZGQ+Ci08L2RsPgotPGEgbmFtZT0iX1lfIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMiBjbGFzcz0idGl0bGUiPlk8L2gyPgotPGRsPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCN5dXZIZWlnaHQiPnl1dkhlaWdodDwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjeXV2SW1hZ2UiPnl1dkltYWdlPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpEZWNvbXByZXNzb3I8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5ZVVZJbWFnZTwvc3Bhbj48L2E+IC0gQ2xhc3MgaW4gPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIGNsYXNzIGVuY2Fwc3VsYXRlcyBhIFlVViBwbGFuYXIgaW1hZ2UgYW5kIHRoZSBtZXRhZGF0YQotIGFzc29jaWF0ZWQgd2l0aCBpdC48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI1lVVkltYWdlKGludCwlMjBpbnRbXSwlMjBpbnQsJTIwaW50KSI+WVVWSW1hZ2UoaW50LCBpbnRbXSwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBiYWNrZWQgYnkgc2VwYXJhdGUgaW1hZ2UKLSBwbGFuZXMsIGFuZCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpbWFnZSBwbGFuZXMuPC9kaXY+Ci08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNZVVZJbWFnZShpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5ZVVZJbWFnZShpbnQsIGludCwgaW50LCBpbnQpPC9hPjwvc3Bhbj4gLSBDb25zdHJ1Y3RvciBmb3IgY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBiYWNrZWQgYnkgYSB1bmlmaWVkIGltYWdlCi0gYnVmZmVyLCBhbmQgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaW1hZ2UgYnVmZmVyLjwvZGl2PgotPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjWVVWSW1hZ2UoYnl0ZVtdW10sJTIwaW50W10sJTIwaW50LCUyMGludFtdLCUyMGludCwlMjBpbnQpIj5ZVVZJbWFnZShieXRlW11bXSwgaW50W10sIGludCwgaW50W10sIGludCwgaW50KTwvYT48L3NwYW4+IC0gQ29uc3RydWN0b3IgZm9yIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgZnJvbSBhIHNldCBvZiBleGlzdGluZyBpbWFnZQotIHBsYW5lcy48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI1lVVkltYWdlKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5ZVVZJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCk8L2E+PC9zcGFuPiAtIENvbnN0cnVjdG9yIGZvciBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBuZXcgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGZyb20gYW4gZXhpc3RpbmcgdW5pZmllZCBpbWFnZQotIGJ1ZmZlci48L2Rpdj4KLTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3l1dk9mZnNldHMiPnl1dk9mZnNldHM8L2E+PC9zcGFuPiAtIFZhcmlhYmxlIGluIGNsYXNzIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2R0PgotPGRkPiZuYnNwOzwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+PGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3l1dlBhZCI+eXV2UGFkPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCN5dXZQbGFuZXMiPnl1dlBsYW5lczwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjeXV2U3RyaWRlcyI+eXV2U3RyaWRlczwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjeXV2U3Vic2FtcCI+eXV2U3Vic2FtcDwvYT48L3NwYW4+IC0gVmFyaWFibGUgaW4gY2xhc3Mgb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvZHQ+Ci08ZGQ+Jm5ic3A7PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjeXV2V2lkdGgiPnl1dldpZHRoPC9hPjwvc3Bhbj4gLSBWYXJpYWJsZSBpbiBjbGFzcyBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9kdD4KLTxkZD4mbmJzcDs8L2RkPgotPC9kbD4KLTxhIGhyZWY9IiNfQl8iPkI8L2E+Jm5ic3A7PGEgaHJlZj0iI19DXyI+QzwvYT4mbmJzcDs8YSBocmVmPSIjX0RfIj5EPC9hPiZuYnNwOzxhIGhyZWY9IiNfRV8iPkU8L2E+Jm5ic3A7PGEgaHJlZj0iI19GXyI+RjwvYT4mbmJzcDs8YSBocmVmPSIjX0dfIj5HPC9hPiZuYnNwOzxhIGhyZWY9IiNfSF8iPkg8L2E+Jm5ic3A7PGEgaHJlZj0iI19JXyI+STwvYT4mbmJzcDs8YSBocmVmPSIjX0pfIj5KPC9hPiZuYnNwOzxhIGhyZWY9IiNfTl8iPk48L2E+Jm5ic3A7PGEgaHJlZj0iI19PXyI+TzwvYT4mbmJzcDs8YSBocmVmPSIjX1BfIj5QPC9hPiZuYnNwOzxhIGhyZWY9IiNfU18iPlM8L2E+Jm5ic3A7PGEgaHJlZj0iI19UXyI+VDwvYT4mbmJzcDs8YSBocmVmPSIjX1lfIj5ZPC9hPiZuYnNwOzwvZGl2PgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9Ii4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5JbmRleDwvbGk+Ci08bGk+PGEgaHJlZj0iLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4vaW5kZXguaHRtbD9pbmRleC1hbGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJpbmRleC1hbGwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgotPGxpPjxhIGhyZWY9Ii4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2MvaW5kZXguaHRtbCBiL2phdmEvZG9jL2luZGV4Lmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI5ODM5NTcuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2MvaW5kZXguaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIEZyYW1lc2V0Ly9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2ZyYW1lc2V0LmR0ZCI+Ci08IS0tIE5ld1BhZ2UgLS0+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTx0aXRsZT5HZW5lcmF0ZWQgRG9jdW1lbnRhdGlvbiAoVW50aXRsZWQpPC90aXRsZT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4KLSAgICB0YXJnZXRQYWdlID0gIiIgKyB3aW5kb3cubG9jYXRpb24uc2VhcmNoOwotICAgIGlmICh0YXJnZXRQYWdlICE9ICIiICYmIHRhcmdldFBhZ2UgIT0gInVuZGVmaW5lZCIpCi0gICAgICAgIHRhcmdldFBhZ2UgPSB0YXJnZXRQYWdlLnN1YnN0cmluZygxKTsKLSAgICBpZiAodGFyZ2V0UGFnZS5pbmRleE9mKCI6IikgIT0gLTEgfHwgKHRhcmdldFBhZ2UgIT0gIiIgJiYgIXZhbGlkVVJMKHRhcmdldFBhZ2UpKSkKLSAgICAgICAgdGFyZ2V0UGFnZSA9ICJ1bmRlZmluZWQiOwotICAgIGZ1bmN0aW9uIHZhbGlkVVJMKHVybCkgewotICAgICAgICB0cnkgewotICAgICAgICAgICAgdXJsID0gZGVjb2RlVVJJQ29tcG9uZW50KHVybCk7Ci0gICAgICAgIH0KLSAgICAgICAgY2F0Y2ggKGVycm9yKSB7Ci0gICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgIH0KLSAgICAgICAgdmFyIHBvcyA9IHVybC5pbmRleE9mKCIuaHRtbCIpOwotICAgICAgICBpZiAocG9zID09IC0xIHx8IHBvcyAhPSB1cmwubGVuZ3RoIC0gNSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdmFyIGFsbG93TnVtYmVyID0gZmFsc2U7Ci0gICAgICAgIHZhciBhbGxvd1NlcCA9IGZhbHNlOwotICAgICAgICB2YXIgc2VlbkRvdCA9IGZhbHNlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVybC5sZW5ndGggLSA1OyBpKyspIHsKLSAgICAgICAgICAgIHZhciBjaCA9IHVybC5jaGFyQXQoaSk7Ci0gICAgICAgICAgICBpZiAoJ2EnIDw9IGNoICYmIGNoIDw9ICd6JyB8fAotICAgICAgICAgICAgICAgICAgICAnQScgPD0gY2ggJiYgY2ggPD0gJ1onIHx8Ci0gICAgICAgICAgICAgICAgICAgIGNoID09ICckJyB8fAotICAgICAgICAgICAgICAgICAgICBjaCA9PSAnXycgfHwKLSAgICAgICAgICAgICAgICAgICAgY2guY2hhckNvZGVBdCgwKSA+IDEyNykgewotICAgICAgICAgICAgICAgIGFsbG93TnVtYmVyID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICBhbGxvd1NlcCA9IHRydWU7Ci0gICAgICAgICAgICB9IGVsc2UgaWYgKCcwJyA8PSBjaCAmJiBjaCA8PSAnOScKLSAgICAgICAgICAgICAgICAgICAgfHwgY2ggPT0gJy0nKSB7Ci0gICAgICAgICAgICAgICAgaWYgKCFhbGxvd051bWJlcikKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSBpZiAoY2ggPT0gJy8nIHx8IGNoID09ICcuJykgewotICAgICAgICAgICAgICAgIGlmICghYWxsb3dTZXApCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICBhbGxvd051bWJlciA9IGZhbHNlOwotICAgICAgICAgICAgICAgIGFsbG93U2VwID0gZmFsc2U7Ci0gICAgICAgICAgICAgICAgaWYgKGNoID09ICcuJykKLSAgICAgICAgICAgICAgICAgICAgIHNlZW5Eb3QgPSB0cnVlOwotICAgICAgICAgICAgICAgIGlmIChjaCA9PSAnLycgJiYgc2VlbkRvdCkKLSAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgfQotICAgICAgICB9Ci0gICAgICAgIHJldHVybiB0cnVlOwotICAgIH0KLSAgICBmdW5jdGlvbiBsb2FkRnJhbWVzKCkgewotICAgICAgICBpZiAodGFyZ2V0UGFnZSAhPSAiIiAmJiB0YXJnZXRQYWdlICE9ICJ1bmRlZmluZWQiKQotICAgICAgICAgICAgIHRvcC5jbGFzc0ZyYW1lLmxvY2F0aW9uID0gdG9wLnRhcmdldFBhZ2U7Ci0gICAgfQotPC9zY3JpcHQ+Ci08L2hlYWQ+Ci08ZnJhbWVzZXQgY29scz0iMjAlLDgwJSIgdGl0bGU9IkRvY3VtZW50YXRpb24gZnJhbWUiIG9ubG9hZD0idG9wLmxvYWRGcmFtZXMoKSI+Ci08ZnJhbWUgc3JjPSJhbGxjbGFzc2VzLWZyYW1lLmh0bWwiIG5hbWU9InBhY2thZ2VGcmFtZSIgdGl0bGU9IkFsbCBjbGFzc2VzIGFuZCBpbnRlcmZhY2VzIChleGNlcHQgbm9uLXN0YXRpYyBuZXN0ZWQgdHlwZXMpIj4KLTxmcmFtZSBzcmM9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIiBuYW1lPSJjbGFzc0ZyYW1lIiB0aXRsZT0iUGFja2FnZSwgY2xhc3MgYW5kIGludGVyZmFjZSBkZXNjcmlwdGlvbnMiIHNjcm9sbGluZz0ieWVzIj4KLTxub2ZyYW1lcz4KLTxub3NjcmlwdD4KLTxkaXY+SmF2YVNjcmlwdCBpcyBkaXNhYmxlZCBvbiB5b3VyIGJyb3dzZXIuPC9kaXY+Ci08L25vc2NyaXB0PgotPGgyPkZyYW1lIEFsZXJ0PC9oMj4KLTxwPlRoaXMgZG9jdW1lbnQgaXMgZGVzaWduZWQgdG8gYmUgdmlld2VkIHVzaW5nIHRoZSBmcmFtZXMgZmVhdHVyZS4gSWYgeW91IHNlZSB0aGlzIG1lc3NhZ2UsIHlvdSBhcmUgdXNpbmcgYSBub24tZnJhbWUtY2FwYWJsZSB3ZWIgY2xpZW50LiBMaW5rIHRvIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5Ob24tZnJhbWUgdmVyc2lvbjwvYT4uPC9wPgotPC9ub2ZyYW1lcz4KLTwvZnJhbWVzZXQ+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmZlZjY1Ny4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTI1NCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPlRKPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlRKIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+UHJldiBDbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSi5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX3RvcCIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX3N1bW1hcnkiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxkaXYgY2xhc3M9InN1YlRpdGxlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvZGl2PgotPGgyIHRpdGxlPSJDbGFzcyBUSiIgY2xhc3M9InRpdGxlIj5DbGFzcyBUSjwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5sYW5nLk9iamVjdDwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBmaW5hbCBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5USjwvc3Bhbj4KLWV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyB1dGlsaXR5IGNsYXNzIChjYW5ub3QgYmUgaW5zdGFudGlhdGVkKTwvZGl2PgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1bW1hcnkiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkZpZWxkIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJGaWVsZCBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGZpZWxkcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkZpZWxkczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+TW9kaWZpZXIgYW5kIFR5cGU8L3RoPgotPHRoIGNsYXNzPSJjb2xMYXN0IiBzY29wZT0iY29sIj5GaWVsZCBhbmQgRGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjQ1NfQ01ZSyI+Q1NfQ01ZSzwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q01ZSyBjb2xvcnNwYWNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX0dSQVkiPkNTX0dSQVk8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkdyYXlzY2FsZSBjb2xvcnNwYWNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX1JHQiI+Q1NfUkdCPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0IgY29sb3JzcGFjZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19ZQ2JDciI+Q1NfWUNiQ3I8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPllDYkNyIGNvbG9yc3BhY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjQ1NfWUNDSyI+Q1NfWUNDSzwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+WUNDSyBjb2xvcnNwYWNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQUNDVVJBVEVEQ1QiPkZMQUdfQUNDVVJBVEVEQ1Q8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlVzZSB0aGUgbW9zdCBhY2N1cmF0ZSBEQ1QvSURDVCBhbGdvcml0aG0gYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nCi0gY29kZWMuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+RkxBR19CT1RUT01VUDwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VGhlIHVuY29tcHJlc3NlZCBzb3VyY2UvZGVzdGluYXRpb24gaW1hZ2UgaXMgc3RvcmVkIGluIGJvdHRvbS11cCAoV2luZG93cywKLSBPcGVuR0wpIG9yZGVyLCBub3QgdG9wLWRvd24gKFgxMSkgb3JkZXIuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19GQVNURENUIj5GTEFHX0ZBU1REQ1Q8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlVzZSB0aGUgZmFzdGVzdCBEQ1QvSURDVCBhbGdvcml0aG0gYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIGNvZGVjLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRkFTVFVQU0FNUExFIj5GTEFHX0ZBU1RVUFNBTVBMRTwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+V2hlbiBkZWNvbXByZXNzaW5nIGFuIGltYWdlIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgY2hyb21pbmFuY2UKLSBzdWJzYW1wbGluZywgdXNlIHRoZSBmYXN0ZXN0IGNocm9taW5hbmNlIHVwc2FtcGxpbmcgYWxnb3JpdGhtIGF2YWlsYWJsZSBpbgotIHRoZSB1bmRlcmx5aW5nIGNvZGVjLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfRk9SQ0VNTVgiPkZMQUdfRk9SQ0VNTVg8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzdHJvbmc+RGVwcmVjYXRlZC48L3N0cm9uZz4mbmJzcDs8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0ZPUkNFU1NFIj5GTEFHX0ZPUkNFU1NFPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7PC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19GT1JDRVNTRTIiPkZMQUdfRk9SQ0VTU0UyPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7PC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19GT1JDRVNTRTMiPkZMQUdfRk9SQ0VTU0UzPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7PC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjTlVNQ1MiPk5VTUNTPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgbnVtYmVyIG9mIEpQRUcgY29sb3JzcGFjZXM8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNOVU1QRiI+TlVNUEY8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgcGl4ZWwgZm9ybWF0czwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI05VTVNBTVAiPk5VTVNBTVA8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9uczwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0FCR1IiPlBGX0FCR1I8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkFCR1IgcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0FSR0IiPlBGX0FSR0I8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkFSR0IgcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0JHUiI+UEZfQkdSPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5CR1IgcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0JHUkEiPlBGX0JHUkE8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkJHUkEgcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0JHUlgiPlBGX0JHUlg8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkJHUlggcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0NNWUsiPlBGX0NNWUs8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNNWUsgcGl4ZWwgZm9ybWF0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0dSQVkiPlBGX0dSQVk8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkdyYXlzY2FsZSBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfUkdCIj5QRl9SR0I8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJHQiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfUkdCQSI+UEZfUkdCQTwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UkdCQSBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfUkdCWCI+UEZfUkdCWDwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UkdCWCBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfWEJHUiI+UEZfWEJHUjwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+WEJHUiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfWFJHQiI+UEZfWFJHQjwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+WFJHQiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80MTEiPlNBTVBfNDExPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj40OjE6MSBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQyMCI+U0FNUF80MjA8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6MjowIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDIyIj5TQU1QXzQyMjwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+NDoyOjIgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF80NDAiPlNBTVBfNDQwPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj40OjQ6MCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQ0NCI+U0FNUF80NDQ8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6NDo0IGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChubyBjaHJvbWluYW5jZSBzdWJzYW1wbGluZykuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjU0FNUF9HUkFZIj5TQU1QX0dSQVk8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkdyYXlzY2FsZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJDb25zdHJ1Y3RvciBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGNvbnN0cnVjdG9ycywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkNvbnN0cnVjdG9yczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1RKKCkiPlRKPC9hPjwvc3Ryb25nPigpPC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2QgU3VtbWFyeTwvaDM+Ci08dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9Ik1ldGhvZCBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIG1ldGhvZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5NZXRob2RzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbEZpcnN0IiBzY29wZT0iY29sIj5Nb2RpZmllciBhbmQgVHlwZTwvdGg+Ci08dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPk1ldGhvZCBhbmQgRGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjYnVmU2l6ZShpbnQsJTIwaW50LCUyMGludCkiPmJ1ZlNpemU8L2E+PC9zdHJvbmc+KGludCZuYnNwO3dpZHRoLAotICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICBpbnQmbmJzcDtqcGVnU3Vic2FtcCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRwotIGltYWdlIHdpdGggdGhlIGdpdmVuIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50KSI+YnVmU2l6ZVlVVjwvYT48L3N0cm9uZz4oaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzdHJvbmc+RGVwcmVjYXRlZC48L3N0cm9uZz4mbmJzcDsKLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjYnVmU2l6ZVlVVihpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5idWZTaXplWVVWPC9hPjwvc3Ryb25nPihpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICBpbnQmbmJzcDtwYWQsCi0gICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgcGxhbmFyCi0gaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gd2lkdGgsIGhlaWdodCwgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldEJsdWVPZmZzZXQoaW50KSI+Z2V0Qmx1ZU9mZnNldDwvYT48L3N0cm9uZz4oaW50Jm5ic3A7cGl4ZWxGb3JtYXQpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgYmx1ZQotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldEdyZWVuT2Zmc2V0KGludCkiPmdldEdyZWVuT2Zmc2V0PC9hPjwvc3Ryb25nPihpbnQmbmJzcDtwaXhlbEZvcm1hdCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Rm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSBncmVlbgotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldE1DVUhlaWdodChpbnQpIj5nZXRNQ1VIZWlnaHQ8L2E+PC9zdHJvbmc+KGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIE1DVSBibG9jayBoZWlnaHQgZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldE1DVVdpZHRoKGludCkiPmdldE1DVVdpZHRoPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBNQ1UgYmxvY2sgd2lkdGggZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldFBpeGVsU2l6ZShpbnQpIj5nZXRQaXhlbFNpemU8L2E+PC9zdHJvbmc+KGludCZuYnNwO3BpeGVsRm9ybWF0KTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBwaXhlbCBzaXplIChpbiBieXRlcykgZm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0UmVkT2Zmc2V0KGludCkiPmdldFJlZE9mZnNldDwvYT48L3N0cm9uZz4oaW50Jm5ic3A7cGl4ZWxGb3JtYXQpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVkCi0gY29tcG9uZW50IGlzIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGl4ZWwuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKU2NhbGluZ0ZhY3RvcjwvYT5bXTwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0U2NhbGluZ0ZhY3RvcnMoKSI+Z2V0U2NhbGluZ0ZhY3RvcnM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMgdGhhdCB0aGUgSlBFRyBkZWNvbXByZXNzb3IgaW4KLSB0aGlzIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBzdXBwb3J0cy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNwbGFuZUhlaWdodChpbnQsJTIwaW50LCUyMGludCkiPnBsYW5lSGVpZ2h0PC9hPjwvc3Ryb25nPihpbnQmbmJzcDtjb21wb25lbnRJRCwKLSAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBwbGFuZSBoZWlnaHQgb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNwbGFuZVNpemVZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPnBsYW5lU2l6ZVlVVjwvYT48L3N0cm9uZz4oaW50Jm5ic3A7Y29tcG9uZW50SUQsCi0gICAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICAgIGludCZuYnNwO3N0cmlkZSwKLSAgICAgICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgaW1hZ2UKLSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI3BsYW5lV2lkdGgoaW50LCUyMGludCwlMjBpbnQpIj5wbGFuZVdpZHRoPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtjb21wb25lbnRJRCwKLSAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBwbGFuZSB3aWR0aCBvZiBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEubGFuZy5PYmplY3Q8L2gzPgotPGNvZGU+Y2xvbmUsIGVxdWFscywgZmluYWxpemUsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHRvU3RyaW5nLCB3YWl0LCB3YWl0LCB3YWl0PC9jb2RlPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZGV0YWlscyI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08IS0tID09PT09PT09PT09PSBGSUVMRCBERVRBSUwgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iZmllbGRfZGV0YWlsIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5GaWVsZCBEZXRhaWw8L2gzPgotPGEgbmFtZT0iTlVNU0FNUCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+TlVNU0FNUDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgTlVNU0FNUDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9uczwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouTlVNU0FNUCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iU0FNUF80NDQiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlNBTVBfNDQ0PC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBTQU1QXzQ0NDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6NDo0IGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChubyBjaHJvbWluYW5jZSBzdWJzYW1wbGluZykuICBUaGUgSlBFRwotIG9yIFlVViBpbWFnZSB3aWxsIGNvbnRhaW4gb25lIGNocm9taW5hbmNlIGNvbXBvbmVudCBmb3IgZXZlcnkgcGl4ZWwgaW4gdGhlCi0gc291cmNlIGltYWdlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouU0FNUF80NDQiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlNBTVBfNDIyIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5TQU1QXzQyMjwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgU0FNUF80MjI8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj40OjI6MiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gIFRoZSBKUEVHIG9yIFlVViBpbWFnZSB3aWxsIGNvbnRhaW4gb25lCi0gY2hyb21pbmFuY2UgY29tcG9uZW50IGZvciBldmVyeSAyeDEgYmxvY2sgb2YgcGl4ZWxzIGluIHRoZSBzb3VyY2UgaW1hZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5TQU1QXzQyMiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iU0FNUF80MjAiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlNBTVBfNDIwPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBTQU1QXzQyMDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjQ6MjowIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiAgVGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBvbmUKLSBjaHJvbWluYW5jZSBjb21wb25lbnQgZm9yIGV2ZXJ5IDJ4MiBibG9jayBvZiBwaXhlbHMgaW4gdGhlIHNvdXJjZSBpbWFnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlNBTVBfNDIwIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJTQU1QX0dSQVkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlNBTVBfR1JBWTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgU0FNUF9HUkFZPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+R3JheXNjYWxlLiAgVGhlIEpQRUcgb3IgWVVWIGltYWdlIHdpbGwgY29udGFpbiBubyBjaHJvbWluYW5jZSBjb21wb25lbnRzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouU0FNUF9HUkFZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJTQU1QXzQ0MCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+U0FNUF80NDA8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IFNBTVBfNDQwPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+NDo0OjAgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICBUaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZQotIGNocm9taW5hbmNlIGNvbXBvbmVudCBmb3IgZXZlcnkgMXgyIGJsb2NrIG9mIHBpeGVscyBpbiB0aGUgc291cmNlIGltYWdlLgotIE5vdGUgdGhhdCA0OjQ6MCBzdWJzYW1wbGluZyBpcyBub3QgZnVsbHkgYWNjZWxlcmF0ZWQgaW4gbGlianBlZy10dXJiby48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlNBTVBfNDQwIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJTQU1QXzQxMSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+U0FNUF80MTE8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IFNBTVBfNDExPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+NDoxOjEgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICBUaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZQotIGNocm9taW5hbmNlIGNvbXBvbmVudCBmb3IgZXZlcnkgNHgxIGJsb2NrIG9mIHBpeGVscyBpbiB0aGUgc291cmNlIGltYWdlLgotIEpQRUcgaW1hZ2VzIGNvbXByZXNzZWQgd2l0aCA0OjE6MSBzdWJzYW1wbGluZyB3aWxsIGJlIGFsbW9zdCBleGFjdGx5IHRoZQotIHNhbWUgc2l6ZSBhcyB0aG9zZSBjb21wcmVzc2VkIHdpdGggNDoyOjAgc3Vic2FtcGxpbmcsIGFuZCBpbiB0aGUKLSBhZ2dyZWdhdGUsIGJvdGggc3Vic2FtcGxpbmcgbWV0aG9kcyBwcm9kdWNlIGFwcHJveGltYXRlbHkgdGhlIHNhbWUKLSBwZXJjZXB0dWFsIHF1YWxpdHkuICBIb3dldmVyLCA0OjE6MSBpcyBiZXR0ZXIgYWJsZSB0byByZXByb2R1Y2Ugc2hhcnAKLSBob3Jpem9udGFsIGZlYXR1cmVzLiAgTm90ZSB0aGF0IDQ6MToxIHN1YnNhbXBsaW5nIGlzIG5vdCBmdWxseSBhY2NlbGVyYXRlZAotIGluIGxpYmpwZWctdHVyYm8uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5TQU1QXzQxMSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iTlVNUEYiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk5VTVBGPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBOVU1QRjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgcGl4ZWwgZm9ybWF0czwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouTlVNUEYiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlBGX1JHQiI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfUkdCPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBQRl9SR0I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0IgcGl4ZWwgZm9ybWF0LiAgVGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gdGhlIGltYWdlIGFyZQotIHN0b3JlZCBpbiAzLWJ5dGUgcGl4ZWxzIGluIHRoZSBvcmRlciBSLCBHLCBCIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgYnl0ZQotIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9SR0IiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlBGX0JHUiI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfQkdSPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBQRl9CR1I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5CR1IgcGl4ZWwgZm9ybWF0LiAgVGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gdGhlIGltYWdlIGFyZQotIHN0b3JlZCBpbiAzLWJ5dGUgcGl4ZWxzIGluIHRoZSBvcmRlciBCLCBHLCBSIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgYnl0ZQotIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9CR1IiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlBGX1JHQlgiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlBGX1JHQlg8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IFBGX1JHQlg8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0JYIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSBzdG9yZWQgaW4gNC1ieXRlIHBpeGVscyBpbiB0aGUgb3JkZXIgUiwgRywgQiBmcm9tIGxvd2VzdCB0byBoaWdoZXN0IGJ5dGUKLSBhZGRyZXNzIHdpdGhpbiBlYWNoIHBpeGVsLiAgVGhlIFggY29tcG9uZW50IGlzIGlnbm9yZWQgd2hlbiBjb21wcmVzc2luZwotIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfUkdCWCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iUEZfQkdSWCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfQkdSWDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgUEZfQkdSWDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkJHUlggcGl4ZWwgZm9ybWF0LiAgVGhlIHJlZCwgZ3JlZW4sIGFuZCBibHVlIGNvbXBvbmVudHMgaW4gdGhlIGltYWdlIGFyZQotIHN0b3JlZCBpbiA0LWJ5dGUgcGl4ZWxzIGluIHRoZSBvcmRlciBCLCBHLCBSIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgYnl0ZQotIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuICBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nCi0gYW5kIHVuZGVmaW5lZCB3aGVuIGRlY29tcHJlc3NpbmcuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9CR1JYIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJQRl9YQkdSIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5QRl9YQkdSPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBQRl9YQkdSPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+WEJHUiBwaXhlbCBmb3JtYXQuICBUaGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBpbiB0aGUgaW1hZ2UgYXJlCi0gc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBieXRlCi0gYWRkcmVzcyB3aXRoaW4gZWFjaCBwaXhlbC4gIFRoZSBYIGNvbXBvbmVudCBpcyBpZ25vcmVkIHdoZW4gY29tcHJlc3NpbmcKLSBhbmQgdW5kZWZpbmVkIHdoZW4gZGVjb21wcmVzc2luZy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlBGX1hCR1IiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlBGX1hSR0IiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlBGX1hSR0I8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IFBGX1hSR0I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5YUkdCIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSBzdG9yZWQgaW4gNC1ieXRlIHBpeGVscyBpbiB0aGUgb3JkZXIgQiwgRywgUiBmcm9tIGhpZ2hlc3QgdG8gbG93ZXN0IGJ5dGUKLSBhZGRyZXNzIHdpdGhpbiBlYWNoIHBpeGVsLiAgVGhlIFggY29tcG9uZW50IGlzIGlnbm9yZWQgd2hlbiBjb21wcmVzc2luZwotIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfWFJHQiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iUEZfR1JBWSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfR1JBWTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgUEZfR1JBWTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkdyYXlzY2FsZSBwaXhlbCBmb3JtYXQuICBFYWNoIDEtYnl0ZSBwaXhlbCByZXByZXNlbnRzIGEgbHVtaW5hbmNlCi0gKGJyaWdodG5lc3MpIGxldmVsIGZyb20gMCB0byAyNTUuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9HUkFZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJQRl9SR0JBIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5QRl9SR0JBPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBQRl9SR0JBPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UkdCQSBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfUkdCWCI+PGNvZGU+UEZfUkdCWDwvY29kZT48L2E+LCBleGNlcHQgdGhhdCB3aGVuCi0gZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotIGludGVycHJldGVkIGFzIGFuIG9wYXF1ZSBhbHBoYSBjaGFubmVsLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfUkdCQSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iUEZfQkdSQSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfQkdSQTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgUEZfQkdSQTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkJHUkEgcGl4ZWwgZm9ybWF0LiAgVGhpcyBpcyB0aGUgc2FtZSBhcyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX0JHUlgiPjxjb2RlPlBGX0JHUlg8L2NvZGU+PC9hPiwgZXhjZXB0IHRoYXQgd2hlbgotIGRlY29tcHJlc3NpbmcsIHRoZSBYIGJ5dGUgaXMgZ3VhcmFudGVlZCB0byBiZSAweEZGLCB3aGljaCBjYW4gYmUKLSBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLlBGX0JHUkEiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlBGX0FCR1IiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlBGX0FCR1I8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IFBGX0FCR1I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5BQkdSIHBpeGVsIGZvcm1hdC4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9YQkdSIj48Y29kZT5QRl9YQkdSPC9jb2RlPjwvYT4sIGV4Y2VwdCB0aGF0IHdoZW4KLSBkZWNvbXByZXNzaW5nLCB0aGUgWCBieXRlIGlzIGd1YXJhbnRlZWQgdG8gYmUgMHhGRiwgd2hpY2ggY2FuIGJlCi0gaW50ZXJwcmV0ZWQgYXMgYW4gb3BhcXVlIGFscGhhIGNoYW5uZWwuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5QRl9BQkdSIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJQRl9BUkdCIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5QRl9BUkdCPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBQRl9BUkdCPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QVJHQiBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfWFJHQiI+PGNvZGU+UEZfWFJHQjwvY29kZT48L2E+LCBleGNlcHQgdGhhdCB3aGVuCi0gZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotIGludGVycHJldGVkIGFzIGFuIG9wYXF1ZSBhbHBoYSBjaGFubmVsLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfQVJHQiI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iUEZfQ01ZSyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+UEZfQ01ZSzwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgUEZfQ01ZSzwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNNWUsgcGl4ZWwgZm9ybWF0LiAgVW5saWtlIFJHQiwgd2hpY2ggaXMgYW4gYWRkaXRpdmUgY29sb3IgbW9kZWwgdXNlZAotIHByaW1hcmlseSBmb3IgZGlzcGxheSwgQ01ZSyAoQ3lhbi9NYWdlbnRhL1llbGxvdy9LZXkpIGlzIGEgc3VidHJhY3RpdmUKLSBjb2xvciBtb2RlbCB1c2VkIHByaW1hcmlseSBmb3IgcHJpbnRpbmcuICBJbiB0aGUgQ01ZSyBjb2xvciBtb2RlbCwgdGhlCi0gdmFsdWUgb2YgZWFjaCBjb2xvciBjb21wb25lbnQgdHlwaWNhbGx5IGNvcnJlc3BvbmRzIHRvIGFuIGFtb3VudCBvZiBjeWFuLAotIG1hZ2VudGEsIHllbGxvdywgb3IgYmxhY2sgaW5rIHRoYXQgaXMgYXBwbGllZCB0byBhIHdoaXRlIGJhY2tncm91bmQuICBJbgotIG9yZGVyIHRvIGNvbnZlcnQgYmV0d2VlbiBDTVlLIGFuZCBSR0IsIGl0IGlzIG5lY2Vzc2FyeSB0byB1c2UgYSBjb2xvcgotIG1hbmFnZW1lbnQgc3lzdGVtIChDTVMuKSAgQSBDTVMgd2lsbCBhdHRlbXB0IHRvIG1hcCBjb2xvcnMgd2l0aGluIHRoZQotIHByaW50ZXIncyBnYW11dCB0byBwZXJjZXB0dWFsbHkgc2ltaWxhciBjb2xvcnMgaW4gdGhlIGRpc3BsYXkncyBnYW11dCBhbmQKLSB2aWNlIHZlcnNhLCBidXQgdGhlIG1hcHBpbmcgaXMgdHlwaWNhbGx5IG5vdCAxOjEgb3IgcmV2ZXJzaWJsZSwgbm9yIGNhbiBpdAotIGJlIGRlZmluZWQgd2l0aCBhIHNpbXBsZSBmb3JtdWxhLiAgVGh1cywgc3VjaCBhIGNvbnZlcnNpb24gaXMgb3V0IG9mIHNjb3BlCi0gZm9yIGEgY29kZWMgbGlicmFyeS4gIEhvd2V2ZXIsIHRoZSBUdXJib0pQRUcgQVBJIGFsbG93cyBmb3IgY29tcHJlc3NpbmcKLSBDTVlLIHBpeGVscyBpbnRvIGEgWUNDSyBKUEVHIGltYWdlIChzZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19ZQ0NLIj48Y29kZT5DU19ZQ0NLPC9jb2RlPjwvYT4pIGFuZAotIGRlY29tcHJlc3NpbmcgWUNDSyBKUEVHIGltYWdlcyBpbnRvIENNWUsgcGl4ZWxzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouUEZfQ01ZSyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iTlVNQ1MiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk5VTUNTPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBOVU1DUzwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoZSBudW1iZXIgb2YgSlBFRyBjb2xvcnNwYWNlczwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouTlVNQ1MiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkNTX1JHQiI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Q1NfUkdCPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBDU19SR0I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SR0IgY29sb3JzcGFjZS4gIFdoZW4gY29tcHJlc3NpbmcgdGhlIEpQRUcgaW1hZ2UsIHRoZSBSLCBHLCBhbmQgQgotIGNvbXBvbmVudHMgaW4gdGhlIHNvdXJjZSBpbWFnZSBhcmUgcmVvcmRlcmVkIGludG8gaW1hZ2UgcGxhbmVzLCBidXQgbm8KLSBjb2xvcnNwYWNlIGNvbnZlcnNpb24gb3Igc3Vic2FtcGxpbmcgaXMgcGVyZm9ybWVkLiAgUkdCIEpQRUcgaW1hZ2VzIGNhbiBiZQotIGRlY29tcHJlc3NlZCB0byBhbnkgb2YgdGhlIGV4dGVuZGVkIFJHQiBwaXhlbCBmb3JtYXRzIG9yIGdyYXlzY2FsZSwgYnV0Ci0gdGhleSBjYW5ub3QgYmUgZGVjb21wcmVzc2VkIHRvIFlVViBpbWFnZXMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5DU19SR0IiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkNTX1lDYkNyIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5DU19ZQ2JDcjwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgQ1NfWUNiQ3I8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5ZQ2JDciBjb2xvcnNwYWNlLiAgWUNiQ3IgaXMgbm90IGFuIGFic29sdXRlIGNvbG9yc3BhY2UgYnV0IHJhdGhlciBhCi0gbWF0aGVtYXRpY2FsIHRyYW5zZm9ybWF0aW9uIG9mIFJHQiBkZXNpZ25lZCBzb2xlbHkgZm9yIHN0b3JhZ2UgYW5kCi0gdHJhbnNtaXNzaW9uLiAgWUNiQ3IgaW1hZ2VzIG11c3QgYmUgY29udmVydGVkIHRvIFJHQiBiZWZvcmUgdGhleSBjYW4KLSBhY3R1YWxseSBiZSBkaXNwbGF5ZWQuICBJbiB0aGUgWUNiQ3IgY29sb3JzcGFjZSwgdGhlIFkgKGx1bWluYW5jZSkKLSBjb21wb25lbnQgcmVwcmVzZW50cyB0aGUgYmxhY2sgJiB3aGl0ZSBwb3J0aW9uIG9mIHRoZSBvcmlnaW5hbCBpbWFnZSwgYW5kCi0gdGhlIENiIGFuZCBDciAoY2hyb21pbmFuY2UpIGNvbXBvbmVudHMgcmVwcmVzZW50IHRoZSBjb2xvciBwb3J0aW9uIG9mIHRoZQotIG9yaWdpbmFsIGltYWdlLiAgT3JpZ2luYWxseSwgdGhlIGFuYWxvZyBlcXVpdmFsZW50IG9mIHRoaXMgdHJhbnNmb3JtYXRpb24KLSBhbGxvd2VkIHRoZSBzYW1lIHNpZ25hbCB0byBkcml2ZSBib3RoIGJsYWNrICYgd2hpdGUgYW5kIGNvbG9yIHRlbGV2aXNpb25zLAotIGJ1dCBKUEVHIGltYWdlcyB1c2UgWUNiQ3IgcHJpbWFyaWx5IGJlY2F1c2UgaXQgYWxsb3dzIHRoZSBjb2xvciBkYXRhIHRvIGJlCi0gb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZvciB0aGUgcHVycG9zZXMgb2YgcmVkdWNpbmcgYmFuZHdpZHRoIG9yIGRpc2sKLSBzcGFjZS4gIFlDYkNyIGlzIHRoZSBtb3N0IGNvbW1vbiBKUEVHIGNvbG9yc3BhY2UsIGFuZCBZQ2JDciBKUEVHIGltYWdlcwotIGNhbiBiZSBjb21wcmVzc2VkIGZyb20gYW5kIGRlY29tcHJlc3NlZCB0byBhbnkgb2YgdGhlIGV4dGVuZGVkIFJHQiBwaXhlbAotIGZvcm1hdHMgb3IgZ3JheXNjYWxlLCBvciB0aGV5IGNhbiBiZSBkZWNvbXByZXNzZWQgdG8gWVVWIHBsYW5hciBpbWFnZXMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5DU19ZQ2JDciI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iQ1NfR1JBWSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Q1NfR1JBWTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgQ1NfR1JBWTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkdyYXlzY2FsZSBjb2xvcnNwYWNlLiAgVGhlIEpQRUcgaW1hZ2UgcmV0YWlucyBvbmx5IHRoZSBsdW1pbmFuY2UgZGF0YSAoWQotIGNvbXBvbmVudCksIGFuZCBhbnkgY29sb3IgZGF0YSBmcm9tIHRoZSBzb3VyY2UgaW1hZ2UgaXMgZGlzY2FyZGVkLgotIEdyYXlzY2FsZSBKUEVHIGltYWdlcyBjYW4gYmUgY29tcHJlc3NlZCBmcm9tIGFuZCBkZWNvbXByZXNzZWQgdG8gYW55IG9mCi0gdGhlIGV4dGVuZGVkIFJHQiBwaXhlbCBmb3JtYXRzIG9yIGdyYXlzY2FsZSwgb3IgdGhleSBjYW4gYmUgZGVjb21wcmVzc2VkCi0gdG8gWVVWIHBsYW5hciBpbWFnZXMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5DU19HUkFZIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJDU19DTVlLIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5DU19DTVlLPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBDU19DTVlLPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q01ZSyBjb2xvcnNwYWNlLiAgV2hlbiBjb21wcmVzc2luZyB0aGUgSlBFRyBpbWFnZSwgdGhlIEMsIE0sIFksIGFuZCBLCi0gY29tcG9uZW50cyBpbiB0aGUgc291cmNlIGltYWdlIGFyZSByZW9yZGVyZWQgaW50byBpbWFnZSBwbGFuZXMsIGJ1dCBubwotIGNvbG9yc3BhY2UgY29udmVyc2lvbiBvciBzdWJzYW1wbGluZyBpcyBwZXJmb3JtZWQuICBDTVlLIEpQRUcgaW1hZ2VzIGNhbgotIG9ubHkgYmUgZGVjb21wcmVzc2VkIHRvIENNWUsgcGl4ZWxzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouQ1NfQ01ZSyI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iQ1NfWUNDSyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Q1NfWUNDSzwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgQ1NfWUNDSzwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPllDQ0sgY29sb3JzcGFjZS4gIFlDQ0sgKEFLQSAiWUNiQ3JLIikgaXMgbm90IGFuIGFic29sdXRlIGNvbG9yc3BhY2UgYnV0Ci0gcmF0aGVyIGEgbWF0aGVtYXRpY2FsIHRyYW5zZm9ybWF0aW9uIG9mIENNWUsgZGVzaWduZWQgc29sZWx5IGZvciBzdG9yYWdlCi0gYW5kIHRyYW5zbWlzc2lvbi4gIEl0IGlzIHRvIENNWUsgYXMgWUNiQ3IgaXMgdG8gUkdCLiAgQ01ZSyBwaXhlbHMgY2FuIGJlCi0gcmV2ZXJzaWJseSB0cmFuc2Zvcm1lZCBpbnRvIFlDQ0ssIGFuZCBhcyB3aXRoIFlDYkNyLCB0aGUgY2hyb21pbmFuY2UKLSBjb21wb25lbnRzIGluIHRoZSBZQ0NLIHBpeGVscyBjYW4gYmUgc3Vic2FtcGxlZCB3aXRob3V0IGluY3VycmluZyBtYWpvcgotIHBlcmNlcHR1YWwgbG9zcy4gIFlDQ0sgSlBFRyBpbWFnZXMgY2FuIG9ubHkgYmUgY29tcHJlc3NlZCBmcm9tIGFuZAotIGRlY29tcHJlc3NlZCB0byBDTVlLIHBpeGVscy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkNTX1lDQ0siPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkZMQUdfQk9UVE9NVVAiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PkZMQUdfQk9UVE9NVVA8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IEZMQUdfQk9UVE9NVVA8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgdW5jb21wcmVzc2VkIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZSBpcyBzdG9yZWQgaW4gYm90dG9tLXVwIChXaW5kb3dzLAotIE9wZW5HTCkgb3JkZXIsIG5vdCB0b3AtZG93biAoWDExKSBvcmRlci48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkZMQUdfQk9UVE9NVVAiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkZMQUdfRk9SQ0VNTVgiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PkZMQUdfRk9SQ0VNTVg8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBGTEFHX0ZPUkNFTU1YPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USi5GTEFHX0ZPUkNFTU1YIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJGTEFHX0ZPUkNFU1NFIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5GTEFHX0ZPUkNFU1NFPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgRkxBR19GT1JDRVNTRTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GT1JDRVNTRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iRkxBR19GT1JDRVNTRTIiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PkZMQUdfRk9SQ0VTU0UyPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgRkxBR19GT1JDRVNTRTI8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkZMQUdfRk9SQ0VTU0UyIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJGTEFHX0ZPUkNFU1NFMyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+RkxBR19GT1JDRVNTRTM8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBGTEFHX0ZPUkNFU1NFMzwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GT1JDRVNTRTMiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkZMQUdfRkFTVFVQU0FNUExFIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5GTEFHX0ZBU1RVUFNBTVBMRTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgRkxBR19GQVNUVVBTQU1QTEU8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5XaGVuIGRlY29tcHJlc3NpbmcgYW4gaW1hZ2UgdGhhdCB3YXMgY29tcHJlc3NlZCB1c2luZyBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLCB1c2UgdGhlIGZhc3Rlc3QgY2hyb21pbmFuY2UgdXBzYW1wbGluZyBhbGdvcml0aG0gYXZhaWxhYmxlIGluCi0gdGhlIHVuZGVybHlpbmcgY29kZWMuICBUaGUgZGVmYXVsdCBpcyB0byB1c2Ugc21vb3RoIHVwc2FtcGxpbmcsIHdoaWNoCi0gY3JlYXRlcyBhIHNtb290aCB0cmFuc2l0aW9uIGJldHdlZW4gbmVpZ2hib3JpbmcgY2hyb21pbmFuY2UgY29tcG9uZW50cyBpbgotIG9yZGVyIHRvIHJlZHVjZSB1cHNhbXBsaW5nIGFydGlmYWN0cyBpbiB0aGUgZGVjb21wcmVzc2VkIGltYWdlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GQVNUVVBTQU1QTEUiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IkZMQUdfRkFTVERDVCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+RkxBR19GQVNURENUPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBGTEFHX0ZBU1REQ1Q8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Vc2UgdGhlIGZhc3Rlc3QgRENUL0lEQ1QgYWxnb3JpdGhtIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZyBjb2RlYy4gIFRoZQotIGRlZmF1bHQgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuICBGb3IKLSBleGFtcGxlLCB0aGUgaW1wbGVtZW50YXRpb24gb2YgVHVyYm9KUEVHIGZvciBsaWJqcGVnWy10dXJib10gdXNlcyB0aGUgZmFzdAotIGFsZ29yaXRobSBieSBkZWZhdWx0IHdoZW4gY29tcHJlc3NpbmcsIGJlY2F1c2UgdGhpcyBoYXMgYmVlbiBzaG93biB0byBoYXZlCi0gb25seSBhIHZlcnkgc2xpZ2h0IGVmZmVjdCBvbiBhY2N1cmFjeSwgYnV0IGl0IHVzZXMgdGhlIGFjY3VyYXRlIGFsZ29yaXRobQotIHdoZW4gZGVjb21wcmVzc2luZywgYmVjYXVzZSB0aGlzIGhhcyBiZWVuIHNob3duIHRvIGhhdmUgYSBsYXJnZXIgZWZmZWN0LjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEouRkxBR19GQVNURENUIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJGTEFHX0FDQ1VSQVRFRENUIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+RkxBR19BQ0NVUkFURURDVDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgRkxBR19BQ0NVUkFURURDVDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlVzZSB0aGUgbW9zdCBhY2N1cmF0ZSBEQ1QvSURDVCBhbGdvcml0aG0gYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nCi0gY29kZWMuICBUaGUgZGVmYXVsdCBpZiB0aGlzIGZsYWcgaXMgbm90IHNwZWNpZmllZCBpcwotIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiAgRm9yIGV4YW1wbGUsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBUdXJib0pQRUcgZm9yCi0gbGlianBlZ1stdHVyYm9dIHVzZXMgdGhlIGZhc3QgYWxnb3JpdGhtIGJ5IGRlZmF1bHQgd2hlbiBjb21wcmVzc2luZywKLSBiZWNhdXNlIHRoaXMgaGFzIGJlZW4gc2hvd24gdG8gaGF2ZSBvbmx5IGEgdmVyeSBzbGlnaHQgZWZmZWN0IG9uIGFjY3VyYWN5LAotIGJ1dCBpdCB1c2VzIHRoZSBhY2N1cmF0ZSBhbGdvcml0aG0gd2hlbiBkZWNvbXByZXNzaW5nLCBiZWNhdXNlIHRoaXMgaGFzCi0gYmVlbiBzaG93biB0byBoYXZlIGEgbGFyZ2VyIGVmZmVjdC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKLkZMQUdfQUNDVVJBVEVEQ1QiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgRGV0YWlsPC9oMz4KLTxhIG5hbWU9IlRKKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKKCk8L3ByZT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kIERldGFpbDwvaDM+Ci08YSBuYW1lPSJnZXRNQ1VXaWR0aChpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRNQ1VXaWR0aDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDtpbnQmbmJzcDtnZXRNQ1VXaWR0aChpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIE1DVSBibG9jayB3aWR0aCBmb3IgdGhlIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlCi0gc3Vic2FtcGxpbmcuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnN1YnNhbXA8L2NvZGU+IC0gdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChvbmUgb2YKLSA8Y29kZT5TQU1QXyo8L2NvZGU+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIE1DVSBibG9jayB3aWR0aCBmb3IgdGhlIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlCi0gc3Vic2FtcGxpbmcuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXRNQ1VIZWlnaHQoaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0TUNVSGVpZ2h0PC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyZuYnNwO2ludCZuYnNwO2dldE1DVUhlaWdodChpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIE1DVSBibG9jayBoZWlnaHQgZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotIHN1YnNhbXBsaW5nLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zdWJzYW1wPC9jb2RlPiAtIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyAob25lIG9mCi0gPGNvZGU+U0FNUF8qPC9jb2RlPik8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBNQ1UgYmxvY2sgaGVpZ2h0IGZvciB0aGUgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2UKLSBzdWJzYW1wbGluZy48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFBpeGVsU2l6ZShpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRQaXhlbFNpemU8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7Z2V0UGl4ZWxTaXplKGludCZuYnNwO3BpeGVsRm9ybWF0KTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cGl4ZWxGb3JtYXQ8L2NvZGU+IC0gdGhlIHBpeGVsIGZvcm1hdCAob25lIG9mIDxjb2RlPlBGXyo8L2NvZGU+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIHBpeGVsIHNpemUgKGluIGJ5dGVzKSBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFJlZE9mZnNldChpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRSZWRPZmZzZXQ8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7Z2V0UmVkT2Zmc2V0KGludCZuYnNwO3BpeGVsRm9ybWF0KTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVkCi0gY29tcG9uZW50IGlzIG9mZnNldCBmcm9tIHRoZSBzdGFydCBvZiB0aGUgcGl4ZWwuICBGb3IgaW5zdGFuY2UsIGlmIGEgcGl4ZWwKLSBvZiBmb3JtYXQgPGNvZGU+VEouUEZfQkdSWDwvY29kZT4gaXMgc3RvcmVkIGluIDxjb2RlPmNoYXIgcGl4ZWxbXTwvY29kZT4sCi0gdGhlbiB0aGUgcmVkIGNvbXBvbmVudCB3aWxsIGJlCi0gPGNvZGU+cGl4ZWxbVEouZ2V0UmVkT2Zmc2V0KFRKLlBGX0JHUlgpXTwvY29kZT4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnBpeGVsRm9ybWF0PC9jb2RlPiAtIHRoZSBwaXhlbCBmb3JtYXQgKG9uZSBvZiA8Y29kZT5QRl8qPC9jb2RlPik8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSByZWQgb2Zmc2V0IGZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0R3JlZW5PZmZzZXQoaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0R3JlZW5PZmZzZXQ8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7Z2V0R3JlZW5PZmZzZXQoaW50Jm5ic3A7cGl4ZWxGb3JtYXQpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Rm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSBncmVlbgotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLiAgRm9yIGluc3RhbmNlLCBpZiBhIHBpeGVsCi0gb2YgZm9ybWF0IDxjb2RlPlRKLlBGX0JHUlg8L2NvZGU+IGlzIHN0b3JlZCBpbiA8Y29kZT5jaGFyIHBpeGVsW108L2NvZGU+LAotIHRoZW4gdGhlIGdyZWVuIGNvbXBvbmVudCB3aWxsIGJlCi0gPGNvZGU+cGl4ZWxbVEouZ2V0R3JlZW5PZmZzZXQoVEouUEZfQkdSWCldPC9jb2RlPi48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cGl4ZWxGb3JtYXQ8L2NvZGU+IC0gdGhlIHBpeGVsIGZvcm1hdCAob25lIG9mIDxjb2RlPlBGXyo8L2NvZGU+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGdyZWVuIG9mZnNldCBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldEJsdWVPZmZzZXQoaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0Qmx1ZU9mZnNldDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDtpbnQmbmJzcDtnZXRCbHVlT2Zmc2V0KGludCZuYnNwO3BpeGVsRm9ybWF0KTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgYmx1ZQotIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLiAgRm9yIGluc3RhbmNlLCBpZiBhIHBpeGVsCi0gb2YgZm9ybWF0IDxjb2RlPlRKLlBGX0JHUlg8L2NvZGU+IGlzIHN0b3JlZCBpbiA8Y29kZT5jaGFyIHBpeGVsW108L2NvZGU+LAotIHRoZW4gdGhlIGJsdWUgY29tcG9uZW50IHdpbGwgYmUKLSA8Y29kZT5waXhlbFtUSi5nZXRCbHVlT2Zmc2V0KFRKLlBGX0JHUlgpXTwvY29kZT4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnBpeGVsRm9ybWF0PC9jb2RlPiAtIHRoZSBwaXhlbCBmb3JtYXQgKG9uZSBvZiA8Y29kZT5QRl8qPC9jb2RlPik8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBibHVlIG9mZnNldCBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImJ1ZlNpemUoaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmJ1ZlNpemU8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7YnVmU2l6ZShpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgaW50Jm5ic3A7anBlZ1N1YnNhbXApPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRwotIGltYWdlIHdpdGggdGhlIGdpdmVuIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gdGhlIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBKUEVHIGltYWdlPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIHRoZSBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIEpQRUcgaW1hZ2U8L2RkPjxkZD48Y29kZT5qcGVnU3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdG8gYmUgdXNlZCB3aGVuCi0gZ2VuZXJhdGluZyB0aGUgSlBFRyBpbWFnZSAob25lIG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4pPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgbWF4aW11bSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgSlBFRwotIGltYWdlIHdpdGggdGhlIGdpdmVuIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+YnVmU2l6ZVlVVjwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDtpbnQmbmJzcDtidWZTaXplWVVWKGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgIGludCZuYnNwO3BhZCwKLSAgICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgICAgaW50Jm5ic3A7c3Vic2FtcCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hcgotIGltYWdlIHdpdGggdGhlIGdpdmVuIHdpZHRoLCBoZWlnaHQsIGFuZCBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gdGhlIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2U8L2RkPjxkZD48Y29kZT5wYWQ8L2NvZGU+IC0gdGhlIHdpZHRoIG9mIGVhY2ggbGluZSBpbiBlYWNoIHBsYW5lIG9mIHRoZSBpbWFnZSBpcyBwYWRkZWQgdG8KLSB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiB0aGlzIG51bWJlciBvZiBieXRlcyAobXVzdCBiZSBhIHBvd2VyIG9mIDIuKTwvZGQ+PGRkPjxjb2RlPmhlaWdodDwvY29kZT4gLSB0aGUgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2U8L2RkPjxkZD48Y29kZT5zdWJzYW1wPC9jb2RlPiAtIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYKLSBpbWFnZSAob25lIG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4pPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBwbGFuYXIKLSBpbWFnZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCwgaGVpZ2h0LCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJidWZTaXplWVVWKGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5idWZTaXplWVVWPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyBzdGF0aWMmbmJzcDtpbnQmbmJzcDtidWZTaXplWVVWKGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7c3Vic2FtcCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJwbGFuZVNpemVZVVYoaW50LCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5wbGFuZVNpemVZVVY8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7cGxhbmVTaXplWVVWKGludCZuYnNwO2NvbXBvbmVudElELAotICAgICAgICAgICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtzdHJpZGUsCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGJ1ZmZlciAoaW4gYnl0ZXMpIHJlcXVpcmVkIHRvIGhvbGQgYSBZVVYgaW1hZ2UKLSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5jb21wb25lbnRJRDwvY29kZT4gLSBJRCBudW1iZXIgb2YgdGhlIGltYWdlIHBsYW5lICgwID0gWSwgMSA9IFUvQ2IsCi0gMiA9IFYvQ3IpPC9kZD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZS4gIE5PVEU6IHRoaXMgaXMgdGhlIHdpZHRoCi0gb2YgdGhlIHdob2xlIGltYWdlLCBub3QgdGhlIHBsYW5lIHdpZHRoLjwvZGQ+PGRkPjxjb2RlPnN0cmlkZTwvY29kZT4gLSBieXRlcyBwZXIgbGluZSBpbiB0aGUgaW1hZ2UgcGxhbmUuPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiAgTk9URTogdGhpcyBpcyB0aGUKLSBoZWlnaHQgb2YgdGhlIHdob2xlIGltYWdlLCBub3QgdGhlIHBsYW5lIGhlaWdodC48L2RkPjxkZD48Y29kZT5zdWJzYW1wPC9jb2RlPiAtIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYKLSBpbWFnZSAob25lIG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4pPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBwbGFuYXIKLSBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0icGxhbmVXaWR0aChpbnQsIGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+cGxhbmVXaWR0aDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMmbmJzcDtpbnQmbmJzcDtwbGFuZVdpZHRoKGludCZuYnNwO2NvbXBvbmVudElELAotICAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgcGxhbmUgd2lkdGggb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KLSBSZWZlciB0byA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPllVVkltYWdlPC9jb2RlPjwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgcGxhbmUgd2lkdGguPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNvbXBvbmVudElEPC9jb2RlPiAtIElEIG51bWJlciBvZiB0aGUgaW1hZ2UgcGxhbmUgKDAgPSBZLCAxID0gVS9DYiwKLSAyID0gVi9Dcik8L2RkPjxkZD48Y29kZT53aWR0aDwvY29kZT4gLSB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlCi0gKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPlRKLlNBTVBfKjwvY29kZT48L2E+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIHBsYW5lIHdpZHRoIG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJwbGFuZUhlaWdodChpbnQsIGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+cGxhbmVIZWlnaHQ8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljJm5ic3A7aW50Jm5ic3A7cGxhbmVIZWlnaHQoaW50Jm5ic3A7Y29tcG9uZW50SUQsCi0gICAgICAgICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7c3Vic2FtcCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBwbGFuZSBoZWlnaHQgb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KLSBSZWZlciB0byA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPllVVkltYWdlPC9jb2RlPjwvYT4gZm9yIGEgZGVzY3JpcHRpb24gb2YgcGxhbmUgaGVpZ2h0LjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5jb21wb25lbnRJRDwvY29kZT4gLSBJRCBudW1iZXIgb2YgdGhlIGltYWdlIHBsYW5lICgwID0gWSwgMSA9IFUvQ2IsCi0gMiA9IFYvQ3IpPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlCi0gKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPlRKLlNBTVBfKjwvY29kZT48L2E+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIHBsYW5lIGhlaWdodCBvZiBhIFlVViBpbWFnZSBwbGFuZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0U2NhbGluZ0ZhY3RvcnMoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldFNjYWxpbmdGYWN0b3JzPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKU2NhbGluZ0ZhY3RvcjwvYT5bXSZuYnNwO2dldFNjYWxpbmdGYWN0b3JzKCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGEgbGlzdCBvZiBmcmFjdGlvbmFsIHNjYWxpbmcgZmFjdG9ycyB0aGF0IHRoZSBKUEVHIGRlY29tcHJlc3NvciBpbgotIHRoaXMgaW1wbGVtZW50YXRpb24gb2YgVHVyYm9KUEVHIHN1cHBvcnRzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMgdGhhdCB0aGUgSlBFRyBkZWNvbXByZXNzb3IgaW4KLSB0aGlzIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBzdXBwb3J0cy48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2IENsYXNzPC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjZmllbGRfc3VtbWFyeSI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX2RldGFpbCI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCBiL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWYxMmI3Li4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsOTIyICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+VEpDb21wcmVzc29yPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlRKQ29tcHJlc3NvciI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+UHJldiBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkNvbXByZXNzb3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGRpdj4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+U3VtbWFyeTombmJzcDs8L2xpPgotPGxpPk5lc3RlZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3JfZGV0YWlsIj5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9kZXRhaWwiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLTwhLS0gPT09PT09PT0gU1RBUlQgT0YgQ0xBU1MgREFUQSA9PT09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImhlYWRlciI+Ci08ZGl2IGNsYXNzPSJzdWJUaXRsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2Rpdj4KLTxoMiB0aXRsZT0iQ2xhc3MgVEpDb21wcmVzc29yIiBjbGFzcz0idGl0bGUiPkNsYXNzIFRKQ29tcHJlc3NvcjwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5sYW5nLk9iamVjdDwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkNvbXByZXNzb3I8L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGRsPgotPGR0PkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvZHQ+Ci08ZGQ+amF2YS5pby5DbG9zZWFibGUsIGphdmEubGFuZy5BdXRvQ2xvc2VhYmxlPC9kZD4KLTwvZGw+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5USkNvbXByZXNzb3I8L3NwYW4+Ci1leHRlbmRzIGphdmEubGFuZy5PYmplY3QKLWltcGxlbWVudHMgamF2YS5pby5DbG9zZWFibGU8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UdXJib0pQRUcgY29tcHJlc3NvcjwvZGl2PgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1bW1hcnkiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJDb25zdHJ1Y3RvciBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGNvbnN0cnVjdG9ycywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkNvbnN0cnVjdG9yczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNUSkNvbXByZXNzb3IoKSI+VEpDb21wcmVzc29yPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI1RKQ29tcHJlc3NvcihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPlRKQ29tcHJlc3NvcjwvYT48L3N0cm9uZz4oamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgaW50Jm5ic3A7eCwKLSAgICAgICAgICAgIGludCZuYnNwO3ksCi0gICAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICAgIGludCZuYnNwO2hlaWdodCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgdW5jb21wcmVzc2VkCi0gc291cmNlIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5zcmNJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZAotIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI1RKQ29tcHJlc3NvcihieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+VEpDb21wcmVzc29yPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtzcmNJbWFnZSwKLSAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgaW50Jm5ic3A7cGl0Y2gsCi0gICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI1RKQ29tcHJlc3NvcihieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5USkNvbXByZXNzb3IoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPlRKQ29tcHJlc3NvcjwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgaW50Jm5ic3A7eSwKLSAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgaW50Jm5ic3A7cGl0Y2gsCi0gICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgdW5jb21wcmVzc2VkCi0gc291cmNlIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5zcmNJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZAotIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iTWV0aG9kIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgbWV0aG9kcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPk1ldGhvZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+TWV0aG9kIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjY2xvc2UoKSI+Y2xvc2U8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RnJlZSB0aGUgbmF0aXZlIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjY29tcHJlc3MoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBieXRlW10sJTIwaW50KSI+Y29tcHJlc3M8L2E+PC9zdHJvbmc+KGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UmbmJzcDtzcmNJbWFnZSwKLSAgICAgICAgYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGFuZAotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGJ5dGVbXSwlMjBpbnQpIj48Y29kZT5jb21wcmVzcyhieXRlW10sIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmJ5dGVbXTwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50KSI+Y29tcHJlc3M8L2E+PC9zdHJvbmc+KGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UmbmJzcDtzcmNJbWFnZSwKLSAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzdHJvbmc+RGVwcmVjYXRlZC48L3N0cm9uZz4mbmJzcDsKLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhpbnQpIj48Y29kZT5jb21wcmVzcyhpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjY29tcHJlc3MoYnl0ZVtdLCUyMGludCkiPmNvbXByZXNzPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Db21wcmVzcyB0aGUgdW5jb21wcmVzc2VkIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yCi0gaW5zdGFuY2UgYW5kIG91dHB1dCBhIEpQRUcgaW1hZ2UgdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIGJ1ZmZlci48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ieXRlW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNjb21wcmVzcyhpbnQpIj5jb21wcmVzczwvYT48L3N0cm9uZz4oaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNvbXByZXNzIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBieXRlW10sJTIwaW50KSI+ZW5jb2RlWVVWPC9hPjwvc3Ryb25nPihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICBieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGFuZAotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihieXRlW10sJTIwaW50KSI+PGNvZGU+ZW5jb2RlWVVWKGJ5dGVbXSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ynl0ZVtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50KSI+ZW5jb2RlWVVWPC9hPjwvc3Ryb25nPihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGFuZAotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihpbnQsJTIwaW50KSI+PGNvZGU+ZW5jb2RlWVVWKGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihieXRlW10sJTIwaW50KSI+ZW5jb2RlWVVWPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+ZW5jb2RlWVVWKFlVVkltYWdlLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ieXRlW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50KSI+ZW5jb2RlWVVWPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50LCUyMGludCkiPjxjb2RlPmVuY29kZVlVVihpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGludFtdLCUyMGludCkiPmVuY29kZVlVVjwvYT48L3N0cm9uZz4oaW50W10mbmJzcDtzdHJpZGVzLAotICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZSB0aGUgdW5jb21wcmVzc2VkIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yCi0gaW5zdGFuY2UgaW50byBzZXBhcmF0ZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGFuZCByZXR1cm4gYQotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihpbnQsJTIwaW50KSI+ZW5jb2RlWVVWPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtwYWQsCi0gICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RW5jb2RlIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgdW5pZmllZCBZVVYgcGxhbmFyIGltYWdlIGJ1ZmZlciBhbmQgcmV0dXJuIGEKLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZW5jb2RlZCBpbWFnZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlLCUyMGludCkiPmVuY29kZVlVVjwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT4mbmJzcDtkc3RJbWFnZSwKLSAgICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSBZVVYgcGxhbmFyIGltYWdlIGFuZCBzdG9yZSBpdCBpbiB0aGUgZ2l2ZW4KLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIHZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNmaW5hbGl6ZSgpIj5maW5hbGl6ZTwvYT48L3N0cm9uZz4oKTwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZ2V0Q29tcHJlc3NlZFNpemUoKSI+Z2V0Q29tcHJlc3NlZFNpemU8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgaW1hZ2UgKGluIGJ5dGVzKSBnZW5lcmF0ZWQgYnkgdGhlIG1vc3QgcmVjZW50Ci0gY29tcHJlc3Mgb3BlcmF0aW9uLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRKUEVHUXVhbGl0eShpbnQpIj5zZXRKUEVHUXVhbGl0eTwvYT48L3N0cm9uZz4oaW50Jm5ic3A7cXVhbGl0eSk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+U2V0IHRoZSBKUEVHIGltYWdlIHF1YWxpdHkgbGV2ZWwgZm9yIHN1YnNlcXVlbnQgY29tcHJlc3Mgb3BlcmF0aW9ucy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZTwvYT48L3N0cm9uZz4oamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0KTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiBvciBncmF5c2NhbGUgc291cmNlIGltYWdlIHdpdGggdGhpcwotIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZTwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHN0cm9uZz5EZXByZWNhdGVkLjwvc3Ryb25nPiZuYnNwOwotPGRpdiBjbGFzcz0iYmxvY2siPjxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZTwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICAgIGludCZuYnNwO3gsCi0gICAgICAgICAgICAgIGludCZuYnNwO3ksCi0gICAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzb2NpYXRlIGFuIHVuY29tcHJlc3NlZCBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBzb3VyY2UgaW1hZ2Ugd2l0aCB0aGlzCi0gY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2Uob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UpIj5zZXRTb3VyY2VJbWFnZTwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT4mbmJzcDtzcmNJbWFnZSk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzb2NpYXRlIGFuIHVuY29tcHJlc3NlZCBZVVYgcGxhbmFyIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTdWJzYW1wKGludCkiPnNldFN1YnNhbXA8L2E+PC9zdHJvbmc+KGludCZuYnNwO25ld1N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlNldCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgZm9yIHN1YnNlcXVlbnQgY29tcHJlc3MvZW5jb2RlCi0gb3BlcmF0aW9ucy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MmbmJzcDtqYXZhLmxhbmcuT2JqZWN0PC9oMz4KLTxjb2RlPmNsb25lLCBlcXVhbHMsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHRvU3RyaW5nLCB3YWl0LCB3YWl0LCB3YWl0PC9jb2RlPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0iZGV0YWlscyI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08IS0tID09PT09PT09PSBDT05TVFJVQ1RPUiBERVRBSUwgPT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iY29uc3RydWN0b3JfZGV0YWlsIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5Db25zdHJ1Y3RvciBEZXRhaWw8L2gzPgotPGEgbmFtZT0iVEpDb21wcmVzc29yKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKQ29tcHJlc3NvcjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKQ29tcHJlc3NvcigpCi0gICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKQ29tcHJlc3NvcihieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USkNvbXByZXNzb3I8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtUSkNvbXByZXNzb3IoYnl0ZVtdJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgaW50Jm5ic3A7eSwKLSAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgaW50Jm5ic3A7cGl0Y2gsCi0gICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCkKLSAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSB1bmNvbXByZXNzZWQKLSBzb3VyY2UgaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPnNyY0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkCi0gaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnNyY0ltYWdlPC9jb2RlPiAtIHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gZm9yIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+eDwvY29kZT4gLSBzZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGZvciBkZXNjcmlwdGlvbjwvZGQ+PGRkPjxjb2RlPnk8L2NvZGU+IC0gc2VlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBmb3IgZGVzY3JpcHRpb248L2RkPjxkZD48Y29kZT53aWR0aDwvY29kZT4gLSBzZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGZvciBkZXNjcmlwdGlvbjwvZGQ+PGRkPjxjb2RlPnBpdGNoPC9jb2RlPiAtIHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gZm9yIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gZm9yIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+cGl4ZWxGb3JtYXQ8L2NvZGU+IC0gcGl4ZWwgZm9ybWF0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKG9uZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjUEZfUkdCIj48Y29kZT5USi5QRl8qPC9jb2RlPjwvYT4pPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJUSkNvbXByZXNzb3IoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USkNvbXByZXNzb3I8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljJm5ic3A7VEpDb21wcmVzc29yKGJ5dGVbXSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7cGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7cGl4ZWxGb3JtYXQpCi0gICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PGk+VXNlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjVEpDb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKQ29tcHJlc3NvcihieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKQ29tcHJlc3NvcihqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+VEpDb21wcmVzc29yPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpDb21wcmVzc29yKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UmbmJzcDtzcmNJbWFnZSwKLSAgICAgICAgICAgIGludCZuYnNwO3gsCi0gICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgICAgICBpbnQmbmJzcDtoZWlnaHQpCi0gICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgdW5jb21wcmVzc2VkCi0gc291cmNlIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5zcmNJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZAotIGluc3RhbmNlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zcmNJbWFnZTwvY29kZT4gLSBzZWUKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBmb3IgZGVzY3JpcHRpb248L2RkPjxkZD48Y29kZT54PC9jb2RlPiAtIHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGZvciBkZXNjcmlwdGlvbjwvZGQ+PGRkPjxjb2RlPnk8L2NvZGU+IC0gc2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gZm9yIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gc2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gZm9yIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGZvciBkZXNjcmlwdGlvbjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kIERldGFpbDwvaDM+Ci08YSBuYW1lPSJzZXRTb3VyY2VJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5zZXRTb3VyY2VJbWFnZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtzZXRTb3VyY2VJbWFnZShieXRlW10mbmJzcDtzcmNJbWFnZSwKLSAgICAgICAgICAgICAgICAgIGludCZuYnNwO3gsCi0gICAgICAgICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgICAgICAgICAgIGludCZuYnNwO3BpeGVsRm9ybWF0KQotICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiwgZ3JheXNjYWxlLCBvciBDTVlLIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMKLSBjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zcmNJbWFnZTwvY29kZT4gLSBpbWFnZSBidWZmZXIgY29udGFpbmluZyBSR0IsIGdyYXlzY2FsZSwgb3IgQ01ZSyBwaXhlbHMgdG8KLSBiZSBjb21wcmVzc2VkIG9yIGVuY29kZWQuICBUaGlzIGJ1ZmZlciBpcyBub3QgbW9kaWZpZWQuPC9kZD48ZGQ+PGNvZGU+eDwvY29kZT4gLSB4IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbSB3aGljaAotIHRoZSBKUEVHIG9yIFlVViBpbWFnZSBzaG91bGQgYmUgY29tcHJlc3NlZC9lbmNvZGVkPC9kZD48ZGQ+PGNvZGU+eTwvY29kZT4gLSB5IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbSB3aGljaAotIHRoZSBKUEVHIG9yIFlVViBpbWFnZSBzaG91bGQgYmUgY29tcHJlc3NlZC9lbmNvZGVkPC9kZD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gd2lkdGggKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgc291cmNlIGltYWdlIGZyb20KLSB3aGljaCB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZDwvZGQ+PGRkPjxjb2RlPnBpdGNoPC9jb2RlPiAtIGJ5dGVzIHBlciBsaW5lIG9mIHRoZSBzb3VyY2UgaW1hZ2UuICBOb3JtYWxseSwgdGhpcyBzaG91bGQgYmUKLSA8Y29kZT53aWR0aCAqIFRKLnBpeGVsU2l6ZShwaXhlbEZvcm1hdCk8L2NvZGU+IGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMKLSB1bnBhZGRlZCwgYnV0IHlvdSBjYW4gdXNlIHRoaXMgcGFyYW1ldGVyIHRvLCBmb3IgaW5zdGFuY2UsIHNwZWNpZnkgdGhhdAotIHRoZSBzY2FubGluZXMgaW4gdGhlIHNvdXJjZSBpbWFnZSBhcmUgcGFkZGVkIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IG9yIHRvCi0gY29tcHJlc3MvZW5jb2RlIGEgSlBFRyBvciBZVVYgaW1hZ2UgZnJvbSBhIHJlZ2lvbiBvZiBhIGxhcmdlciBzb3VyY2UKLSBpbWFnZS4gIFlvdSBjYW4gYWxzbyBiZSBjbGV2ZXIgYW5kIHVzZSB0aGlzIHBhcmFtZXRlciB0byBza2lwIGxpbmVzLCBldGMuCi0gU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8KLSA8Y29kZT53aWR0aCAqIFRKLnBpeGVsU2l6ZShwaXhlbEZvcm1hdCk8L2NvZGU+LjwvZGQ+PGRkPjxjb2RlPmhlaWdodDwvY29kZT4gLSBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgc291cmNlIGltYWdlIGZyb20KLSB3aGljaCB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZDwvZGQ+PGRkPjxjb2RlPnBpeGVsRm9ybWF0PC9jb2RlPiAtIHBpeGVsIGZvcm1hdCBvZiB0aGUgc291cmNlIGltYWdlIChvbmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQiI+PGNvZGU+VEouUEZfKjwvY29kZT48L2E+KTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ic2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5zZXRTb3VyY2VJbWFnZTwvaDQ+Ci08cHJlPkBEZXByZWNhdGVkCi1wdWJsaWMmbmJzcDt2b2lkJm5ic3A7c2V0U291cmNlSW1hZ2UoYnl0ZVtdJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PGk+VXNlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5zZXRTb3VyY2VJbWFnZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7eSwKLSAgICAgICAgICAgICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0KQotICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiBvciBncmF5c2NhbGUgc291cmNlIGltYWdlIHdpdGggdGhpcwotIGNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnNyY0ltYWdlPC9jb2RlPiAtIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyBSR0Igb3IKLSBncmF5c2NhbGUgcGl4ZWxzIHRvIGJlIGNvbXByZXNzZWQgb3IgZW5jb2RlZC4gIFRoaXMgaW1hZ2UgaXMgbm90IG1vZGlmaWVkLjwvZGQ+PGRkPjxjb2RlPng8L2NvZGU+IC0geCBvZmZzZXQgKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgc291cmNlIGltYWdlIGZyb20gd2hpY2gKLSB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZDwvZGQ+PGRkPjxjb2RlPnk8L2NvZGU+IC0geSBvZmZzZXQgKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgc291cmNlIGltYWdlIGZyb20gd2hpY2gKLSB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZDwvZGQ+PGRkPjxjb2RlPndpZHRoPC9jb2RlPiAtIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIHNvdXJjZSBpbWFnZSBmcm9tCi0gd2hpY2ggdGhlIEpQRUcgb3IgWVVWIGltYWdlIHNob3VsZCBiZSBjb21wcmVzc2VkL2VuY29kZWQgKDAgPSB1c2UgdGhlCi0gd2lkdGggb2YgdGhlIHNvdXJjZSBpbWFnZSk8L2RkPjxkZD48Y29kZT5oZWlnaHQ8L2NvZGU+IC0gaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIHNvdXJjZSBpbWFnZSBmcm9tCi0gd2hpY2ggdGhlIEpQRUcgb3IgWVVWIGltYWdlIHNob3VsZCBiZSBjb21wcmVzc2VkL2VuY29kZWQgKDAgPSB1c2UgdGhlCi0gaGVpZ2h0IG9mIHRoZSBzb3VyY2UgaW1hZ2UpPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJzZXRTb3VyY2VJbWFnZShvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PnNldFNvdXJjZUltYWdlPC9oND4KLTxwcmU+cHVibGljJm5ic3A7dm9pZCZuYnNwO3NldFNvdXJjZUltYWdlKDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+Jm5ic3A7c3JjSW1hZ2UpCi0gICAgICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc29jaWF0ZSBhbiB1bmNvbXByZXNzZWQgWVVWIHBsYW5hciBzb3VyY2UgaW1hZ2Ugd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+c3JjSW1hZ2U8L2NvZGU+IC0gWVVWIHBsYW5hciBpbWFnZSB0byBiZSBjb21wcmVzc2VkLiAgVGhpcyBpbWFnZSBpcyBub3QKLSBtb2RpZmllZC48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9InNldFN1YnNhbXAoaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+c2V0U3Vic2FtcDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtzZXRTdWJzYW1wKGludCZuYnNwO25ld1N1YnNhbXApPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+U2V0IHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyBmb3Igc3Vic2VxdWVudCBjb21wcmVzcy9lbmNvZGUKLSBvcGVyYXRpb25zLiAgV2hlbiBwaXhlbHMgYXJlIGNvbnZlcnRlZCBmcm9tIFJHQiB0byBZQ2JDciAoc2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19ZQ2JDciI+PGNvZGU+VEouQ1NfWUNiQ3I8L2NvZGU+PC9hPikgb3IgZnJvbSBDTVlLIHRvIFlDQ0sgKHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX1lDQ0siPjxjb2RlPlRKLkNTX1lDQ0s8L2NvZGU+PC9hPikgYXMgcGFydAotIG9mIHRoZSBKUEVHIGNvbXByZXNzaW9uIHByb2Nlc3MsIHNvbWUgb2YgdGhlIENiIGFuZCBDciAoY2hyb21pbmFuY2UpCi0gY29tcG9uZW50cyBjYW4gYmUgZGlzY2FyZGVkIG9yIGF2ZXJhZ2VkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgYSBzbWFsbGVyCi0gaW1hZ2Ugd2l0aCBsaXR0bGUgcGVyY2VwdGlibGUgbG9zcyBvZiBpbWFnZSBjbGFyaXR5ICh0aGUgaHVtYW4gZXllIGlzIG1vcmUKLSBzZW5zaXRpdmUgdG8gc21hbGwgY2hhbmdlcyBpbiBicmlnaHRuZXNzIHRoYW4gdG8gc21hbGwgY2hhbmdlcyBpbiBjb2xvci4pCi0gVGhpcyBpcyBjYWxsZWQgImNocm9taW5hbmNlIHN1YnNhbXBsaW5nIi4KLSA8cD4KLSBOT1RFOiBUaGlzIG1ldGhvZCBoYXMgbm8gZWZmZWN0IHdoZW4gY29tcHJlc3NpbmcgYSBKUEVHIGltYWdlIGZyb20gYSBZVVYKLSBwbGFuYXIgc291cmNlLiAgSW4gdGhhdCBjYXNlLCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4KLSB0aGUgSlBFRyBpbWFnZSBpcyBkZXRlcm1pbmVkIGJ5IHRoZSBzb3VyY2UuICBGdXJ0aGVyLCB0aGlzIG1ldGhvZCBoYXMgbm8KLSBlZmZlY3Qgd2hlbiBlbmNvZGluZyB0byBhIHByZS1hbGxvY2F0ZWQgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5ZVVZJbWFnZTwvY29kZT48L2E+IGluc3RhbmNlLiAgSW4KLSB0aGF0IGNhc2UsIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyBpcyBkZXRlcm1pbmVkIGJ5IHRoZQotIGRlc3RpbmF0aW9uLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5uZXdTdWJzYW1wPC9jb2RlPiAtIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB0byB1c2UgaW4KLSBzdWJzZXF1ZW50IGNvbXByZXNzL2VuY29kZSBvZXByYXRpb25zIChvbmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij48Y29kZT5USi5TQU1QXyo8L2NvZGU+PC9hPik8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9InNldEpQRUdRdWFsaXR5KGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PnNldEpQRUdRdWFsaXR5PC9oND4KLTxwcmU+cHVibGljJm5ic3A7dm9pZCZuYnNwO3NldEpQRUdRdWFsaXR5KGludCZuYnNwO3F1YWxpdHkpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+U2V0IHRoZSBKUEVHIGltYWdlIHF1YWxpdHkgbGV2ZWwgZm9yIHN1YnNlcXVlbnQgY29tcHJlc3Mgb3BlcmF0aW9ucy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cXVhbGl0eTwvY29kZT4gLSB0aGUgbmV3IEpQRUcgaW1hZ2UgcXVhbGl0eSBsZXZlbCAoMSB0byAxMDAsIDEgPSB3b3JzdCwKLSAxMDAgPSBiZXN0KTwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iY29tcHJlc3MoYnl0ZVtdLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5jb21wcmVzczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtjb21wcmVzcyhieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q29tcHJlc3MgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGFuZCBvdXRwdXQgYSBKUEVHIGltYWdlIHRvIHRoZSBnaXZlbiBkZXN0aW5hdGlvbiBidWZmZXIuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRzdEJ1ZjwvY29kZT4gLSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIEpQRUcgaW1hZ2UuICBVc2UKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2J1ZlNpemUoaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5USi5idWZTaXplKGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gdG8gZGV0ZXJtaW5lIHRoZSBtYXhpbXVtIHNpemUgZm9yIHRoaXMgYnVmZmVyIGJhc2VkIG9uCi0gdGhlIHNvdXJjZSBpbWFnZSdzIHdpZHRoIGFuZCBoZWlnaHQgYW5kIHRoZSBkZXNpcmVkIGxldmVsIG9mIGNocm9taW5hbmNlCi0gc3Vic2FtcGxpbmcuPC9kZD48ZGQ+PGNvZGU+ZmxhZ3M8L2NvZGU+IC0gdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQk9UVE9NVVAiPjxjb2RlPlRKLkZMQUdfKjwvY29kZT48L2E+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJjb21wcmVzcyhpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5jb21wcmVzczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2J5dGVbXSZuYnNwO2NvbXByZXNzKGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNvbXByZXNzIHRoZSB1bmNvbXByZXNzZWQgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLiAgVGhlIGxlbmd0aCBvZiB0aGlzIGJ1ZmZlciB3aWxsCi0gbm90IGJlIGVxdWFsIHRvIHRoZSBzaXplIG9mIHRoZSBKUEVHIGltYWdlLiAgVXNlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2dldENvbXByZXNzZWRTaXplKCkiPjxjb2RlPmdldENvbXByZXNzZWRTaXplKCk8L2NvZGU+PC9hPiB0byBvYnRhaW4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UuPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCBieXRlW10sIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmNvbXByZXNzPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlJm5ic3A7c3JjSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgIGJ5dGVbXSZuYnNwO2RzdEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGFuZAotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGJ5dGVbXSwlMjBpbnQpIj48Y29kZT5jb21wcmVzcyhieXRlW10sIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iY29tcHJlc3MoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Y29tcHJlc3M8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljJm5ic3A7Ynl0ZVtdJm5ic3A7Y29tcHJlc3MoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGFuZAotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2NvbXByZXNzKGludCkiPjxjb2RlPmNvbXByZXNzKGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5lbmNvZGVZVVY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDt2b2lkJm5ic3A7ZW5jb2RlWVVWKDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+Jm5ic3A7ZHN0SW1hZ2UsCi0gICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSBZVVYgcGxhbmFyIGltYWdlIGFuZCBzdG9yZSBpdCBpbiB0aGUgZ2l2ZW4KLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UuICAgVGhpcyBtZXRob2QgdXNlcyB0aGUgYWNjZWxlcmF0ZWQgY29sb3IKLSBjb252ZXJzaW9uIHJvdXRpbmVzIGluIFR1cmJvSlBFRydzIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUKLSBhbnkgb2YgdGhlIG90aGVyIHN0ZXBzIGluIHRoZSBKUEVHIGNvbXByZXNzaW9uIHByb2Nlc3MuICBFbmNvZGluZwotIENNWUsgc291cmNlIGltYWdlcyB0byBZVVYgaXMgbm90IHN1cHBvcnRlZC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+ZHN0SW1hZ2U8L2NvZGU+IC0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5ZVVZJbWFnZTwvY29kZT48L2E+IGluc3RhbmNlIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBZVVYgcGxhbmFyCi0gaW1hZ2U8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImVuY29kZVlVVihieXRlW10sIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmVuY29kZVlVVjwvaDQ+Ci08cHJlPkBEZXByZWNhdGVkCi1wdWJsaWMmbmJzcDt2b2lkJm5ic3A7ZW5jb2RlWVVWKGJ5dGVbXSZuYnNwO2RzdEJ1ZiwKLSAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PGk+VXNlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5odG1sI2VuY29kZVlVVihvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSwlMjBpbnQpIj48Y29kZT5lbmNvZGVZVVYoWVVWSW1hZ2UsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZW5jb2RlWVVWPC9oND4KLTxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT4mbmJzcDtlbmNvZGVZVVYoaW50Jm5ic3A7cGFkLAotICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5FbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSB1bmlmaWVkIFlVViBwbGFuYXIgaW1hZ2UgYnVmZmVyIGFuZCByZXR1cm4gYQotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlLiAgVGhpcyBtZXRob2QKLSB1c2VzIHRoZSBhY2NlbGVyYXRlZCBjb2xvciBjb252ZXJzaW9uIHJvdXRpbmVzIGluIFR1cmJvSlBFRydzIHVuZGVybHlpbmcKLSBjb2RlYyBidXQgZG9lcyBub3QgZXhlY3V0ZSBhbnkgb2YgdGhlIG90aGVyIHN0ZXBzIGluIHRoZSBKUEVHIGNvbXByZXNzaW9uCi0gcHJvY2Vzcy4gIEVuY29kaW5nIENNWUsgc291cmNlIGltYWdlcyB0byBZVVYgaXMgbm90IHN1cHBvcnRlZC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cGFkPC9jb2RlPiAtIHRoZSB3aWR0aCBvZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgWVVWIGltYWdlIHdpbGwgYmUKLSBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgdGhpcyBudW1iZXIgb2YgYnl0ZXMgKG11c3QgYmUgYSBwb3dlciBvZgotIDIuKTwvZGQ+PGRkPjxjb2RlPmZsYWdzPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0JPVFRPTVVQIj48Y29kZT5USi5GTEFHXyo8L2NvZGU+PC9hPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBZVVYgcGxhbmFyIGltYWdlLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKGludFtdLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5lbmNvZGVZVVY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPiZuYnNwO2VuY29kZVlVVihpbnRbXSZuYnNwO3N0cmlkZXMsCi0gICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkVuY29kZSB0aGUgdW5jb21wcmVzc2VkIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yCi0gaW5zdGFuY2UgaW50byBzZXBhcmF0ZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGFuZCByZXR1cm4gYQotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlIHBsYW5lcy4gIFRoaXMKLSBtZXRob2QgdXNlcyB0aGUgYWNjZWxlcmF0ZWQgY29sb3IgY29udmVyc2lvbiByb3V0aW5lcyBpbiBUdXJib0pQRUcncwotIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUgYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRwotIGNvbXByZXNzaW9uIHByb2Nlc3MuICBFbmNvZGluZyBDTVlLIHNvdXJjZSBpbWFnZXMgdG8gWVVWIGlzIG5vdCBzdXBwb3J0ZWQuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnN0cmlkZXM8L2NvZGU+IC0gYW4gYXJyYXkgb2YgaW50ZWdlcnMsIGVhY2ggc3BlY2lmeWluZyB0aGUgbnVtYmVyIG9mIGJ5dGVzCi0gcGVyIGxpbmUgaW4gdGhlIGNvcnJlc3BvbmRpbmcgcGxhbmUgb2YgdGhlIG91dHB1dCBpbWFnZS4gIFNldHRpbmcgdGhlCi0gc3RyaWRlIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBjb21wb25lbnQgd2lkdGgKLSBvZiB0aGUgcGxhbmUuICBJZiA8Y29kZT5zdHJpZGVzPC9jb2RlPiBpcyBudWxsLCB0aGVuIHRoZSBzdHJpZGVzIGZvciBhbGwKLSBwbGFuZXMgd2lsbCBiZSBzZXQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBjb21wb25lbnQgd2lkdGhzLiAgWW91IGNhbiBhZGp1c3QKLSB0aGUgc3RyaWRlcyBpbiBvcmRlciB0byBhZGQgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBsaW5lIHBhZGRpbmcgdG8gZWFjaAotIHBsYW5lLjwvZGQ+PGRkPjxjb2RlPmZsYWdzPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0JPVFRPTVVQIj48Y29kZT5USi5GTEFHXyo8L2NvZGU+PC9hPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBZVVYgcGxhbmFyIGltYWdlLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmVuY29kZVlVVjwvaDQ+Ci08cHJlPkBEZXByZWNhdGVkCi1wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtlbmNvZGVZVVYoaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzxpPlVzZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoaW50LCUyMGludCkiPjxjb2RlPmVuY29kZVlVVihpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsIGJ5dGVbXSwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZW5jb2RlWVVWPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtlbmNvZGVZVVYoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5Vc2UKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBhbmQKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCNlbmNvZGVZVVYoYnl0ZVtdLCUyMGludCkiPjxjb2RlPmVuY29kZVlVVihieXRlW10sIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZW5jb2RlWVVWKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmVuY29kZVlVVjwvaDQ+Ci08cHJlPkBEZXByZWNhdGVkCi1wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtlbmNvZGVZVVYoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO3NyY0ltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+PHNwYW4gY2xhc3M9InN0cm9uZyI+RGVwcmVjYXRlZC48L3NwYW4+Jm5ic3A7PGk+VXNlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5zZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gYW5kCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwjZW5jb2RlWVVWKGludCwlMjBpbnQpIj48Y29kZT5lbmNvZGVZVVYoaW50LCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldENvbXByZXNzZWRTaXplKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldENvbXByZXNzZWRTaXplPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Z2V0Q29tcHJlc3NlZFNpemUoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgb2YgdGhlIGltYWdlIChpbiBieXRlcykgZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudAotIGNvbXByZXNzIG9wZXJhdGlvbi48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIHNpemUgb2YgdGhlIGltYWdlIChpbiBieXRlcykgZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudAotIGNvbXByZXNzIG9wZXJhdGlvbi48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImNsb3NlKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmNsb3NlPC9oND4KLTxwcmU+cHVibGljJm5ic3A7dm9pZCZuYnNwO2Nsb3NlKCkKLSAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RnJlZSB0aGUgbmF0aXZlIHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTxkbD4KLTxkdD48c3Ryb25nPlNwZWNpZmllZCBieTo8L3N0cm9uZz48L2R0PgotPGRkPjxjb2RlPmNsb3NlPC9jb2RlPiZuYnNwO2luIGludGVyZmFjZSZuYnNwOzxjb2RlPmphdmEuaW8uQ2xvc2VhYmxlPC9jb2RlPjwvZGQ+Ci08ZHQ+PHN0cm9uZz5TcGVjaWZpZWQgYnk6PC9zdHJvbmc+PC9kdD4KLTxkZD48Y29kZT5jbG9zZTwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT5qYXZhLmxhbmcuQXV0b0Nsb3NlYWJsZTwvY29kZT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImZpbmFsaXplKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5maW5hbGl6ZTwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO3ZvaWQmbmJzcDtmaW5hbGl6ZSgpCi0gICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmxhbmcuVGhyb3dhYmxlPC9wcmU+Ci08ZGw+Ci08ZHQ+PHN0cm9uZz5PdmVycmlkZXM6PC9zdHJvbmc+PC9kdD4KLTxkZD48Y29kZT5maW5hbGl6ZTwvY29kZT4mbmJzcDtpbiBjbGFzcyZuYnNwOzxjb2RlPmphdmEubGFuZy5PYmplY3Q8L2NvZGU+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+amF2YS5sYW5nLlRocm93YWJsZTwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlByZXYgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iVEpDb21wcmVzc29yLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5GaWVsZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJkNmZkMi4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMjM3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+VEpDdXN0b21GaWx0ZXI8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVEpDdXN0b21GaWx0ZXIiOwotICAgIH0KLS8vLS0+Ci08L3NjcmlwdD4KLTxub3NjcmlwdD4KLTxkaXY+SmF2YVNjcmlwdCBpcyBkaXNhYmxlZCBvbiB5b3VyIGJyb3dzZXIuPC9kaXY+Ci08L25vc2NyaXB0PgotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPGRpdiBjbGFzcz0idG9wTmF2Ij48YSBuYW1lPSJuYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkN1c3RvbUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX3RvcCIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxkaXYgY2xhc3M9InN1YlRpdGxlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvZGl2PgotPGgyIHRpdGxlPSJJbnRlcmZhY2UgVEpDdXN0b21GaWx0ZXIiIGNsYXNzPSJ0aXRsZSI+SW50ZXJmYWNlIFRKQ3VzdG9tRmlsdGVyPC9oMj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudENvbnRhaW5lciI+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBpbnRlcmZhY2UgPHNwYW4gY2xhc3M9InN0cm9uZyI+VEpDdXN0b21GaWx0ZXI8L3NwYW4+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3VzdG9tIGZpbHRlciBjYWxsYmFjayBpbnRlcmZhY2U8L2Rpdj4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2Rfc3VtbWFyeSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJNZXRob2QgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBtZXRob2RzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+TWV0aG9kczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+TW9kaWZpZXIgYW5kIFR5cGU8L3RoPgotPHRoIGNsYXNzPSJjb2xMYXN0IiBzY29wZT0iY29sIj5NZXRob2QgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sI2N1c3RvbUZpbHRlcihqYXZhLm5pby5TaG9ydEJ1ZmZlciwlMjBqYXZhLmF3dC5SZWN0YW5nbGUsJTIwamF2YS5hd3QuUmVjdGFuZ2xlLCUyMGludCwlMjBpbnQsJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0pIj5jdXN0b21GaWx0ZXI8L2E+PC9zdHJvbmc+KGphdmEubmlvLlNob3J0QnVmZmVyJm5ic3A7Y29lZmZCdWZmZXIsCi0gICAgICAgICAgICBqYXZhLmF3dC5SZWN0YW5nbGUmbmJzcDtidWZmZXJSZWdpb24sCi0gICAgICAgICAgICBqYXZhLmF3dC5SZWN0YW5nbGUmbmJzcDtwbGFuZVJlZ2lvbiwKLSAgICAgICAgICAgIGludCZuYnNwO2NvbXBvbmVudElELAotICAgICAgICAgICAgaW50Jm5ic3A7dHJhbnNmb3JtSUQsCi0gICAgICAgICAgICA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPiZuYnNwO3RyYW5zZm9ybSk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgRENUIGNvZWZmaWNpZW50cyBhZnRlcgotIHRoZXkgYXJlIGxvc3NsZXNzbHkgdHJhbnNmb3JtZWQgYnV0IGJlZm9yZSB0aGV5IGFyZSB0cmFuc2NvZGVkIHRvIGEgbmV3Ci0gSlBFRyBpbWFnZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBEZXRhaWw8L2gzPgotPGEgbmFtZT0iY3VzdG9tRmlsdGVyKGphdmEubmlvLlNob3J0QnVmZmVyLCBqYXZhLmF3dC5SZWN0YW5nbGUsIGphdmEuYXd0LlJlY3RhbmdsZSwgaW50LCBpbnQsIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmN1c3RvbUZpbHRlcjwvaDQ+Ci08cHJlPnZvaWQmbmJzcDtjdXN0b21GaWx0ZXIoamF2YS5uaW8uU2hvcnRCdWZmZXImbmJzcDtjb2VmZkJ1ZmZlciwKLSAgICAgICAgICAgICAgICBqYXZhLmF3dC5SZWN0YW5nbGUmbmJzcDtidWZmZXJSZWdpb24sCi0gICAgICAgICAgICAgICAgamF2YS5hd3QuUmVjdGFuZ2xlJm5ic3A7cGxhbmVSZWdpb24sCi0gICAgICAgICAgICAgICAgaW50Jm5ic3A7Y29tcG9uZW50SUQsCi0gICAgICAgICAgICAgICAgaW50Jm5ic3A7dHJhbnNmb3JtSUQsCi0gICAgICAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT4mbmJzcDt0cmFuc2Zvcm0pCi0gICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5BIGNhbGxiYWNrIGZ1bmN0aW9uIHRoYXQgY2FuIGJlIHVzZWQgdG8gbW9kaWZ5IHRoZSBEQ1QgY29lZmZpY2llbnRzIGFmdGVyCi0gdGhleSBhcmUgbG9zc2xlc3NseSB0cmFuc2Zvcm1lZCBidXQgYmVmb3JlIHRoZXkgYXJlIHRyYW5zY29kZWQgdG8gYSBuZXcKLSBKUEVHIGltYWdlLiAgVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmaWx0ZXJzIG9yIG90aGVyIHRyYW5zZm9ybWF0aW9ucyB0byBiZQotIGFwcGxpZWQgaW4gdGhlIGZyZXF1ZW5jeSBkb21haW4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmNvZWZmQnVmZmVyPC9jb2RlPiAtIGEgYnVmZmVyIGNvbnRhaW5pbmcgdHJhbnNmb3JtZWQgRENUIGNvZWZmaWNpZW50cy4KLSAoTk9URTogdGhpcyBidWZmZXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgb25jZSB0aGUgY2FsbGJhY2sKLSByZXR1cm5zLCBzbyBhcHBsaWNhdGlvbnMgd2lzaGluZyB0byBoYW5kIG9mZiB0aGUgRENUIGNvZWZmaWNpZW50cyB0bwotIGFub3RoZXIgZnVuY3Rpb24gb3IgbGlicmFyeSBzaG91bGQgbWFrZSBhIGNvcHkgb2YgdGhlbSB3aXRoaW4gdGhlIGJvZHkgb2YKLSB0aGUgY2FsbGJhY2suKTwvZGQ+PGRkPjxjb2RlPmJ1ZmZlclJlZ2lvbjwvY29kZT4gLSByZWN0YW5nbGUgY29udGFpbmluZyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZgotIDxjb2RlPmNvZWZmQnVmZmVyPC9jb2RlPiBhcyB3ZWxsIGFzIGl0cyBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIGNvbXBvbmVudAotIHBsYW5lLiAgVHVyYm9KUEVHIGltcGxlbWVudGF0aW9ucyBtYXkgY2hvb3NlIHRvIHNwbGl0IGVhY2ggY29tcG9uZW50IHBsYW5lCi0gaW50byBtdWx0aXBsZSBEQ1QgY29lZmZpY2llbnQgYnVmZmVycyBhbmQgY2FsbCB0aGUgY2FsbGJhY2sgZnVuY3Rpb24gb25jZQotIGZvciBlYWNoIGJ1ZmZlci48L2RkPjxkZD48Y29kZT5wbGFuZVJlZ2lvbjwvY29kZT4gLSByZWN0YW5nbGUgY29udGFpbmluZyB0aGUgd2lkdGggYW5kIGhlaWdodCBvZiB0aGUKLSBjb21wb25lbnQgcGxhbmUgdG8gd2hpY2ggPGNvZGU+Y29lZmZCdWZmZXI8L2NvZGU+IGJlbG9uZ3M8L2RkPjxkZD48Y29kZT5jb21wb25lbnRJRDwvY29kZT4gLSBJRCBudW1iZXIgb2YgdGhlIGNvbXBvbmVudCBwbGFuZSB0byB3aGljaAotIDxjb2RlPmNvZWZmQnVmZmVyPC9jb2RlPiBiZWxvbmdzIChZLCBDYiwgYW5kIENyIGhhdmUsIHJlc3BlY3RpdmVseSwgSUQncwotIG9mIDAsIDEsIGFuZCAyIGluIHR5cGljYWwgSlBFRyBpbWFnZXMuKTwvZGQ+PGRkPjxjb2RlPnRyYW5zZm9ybUlEPC9jb2RlPiAtIElEIG51bWJlciBvZiB0aGUgdHJhbnNmb3JtZWQgaW1hZ2UgdG8gd2hpY2gKLSA8Y29kZT5jb2VmZkJ1ZmZlcjwvY29kZT4gYmVsb25ncy4gIFRoaXMgaXMgdGhlIHNhbWUgYXMgdGhlIGluZGV4IG9mIHRoZQotIHRyYW5zZm9ybSBpbiB0aGUgPGNvZGU+dHJhbnNmb3JtczwvY29kZT4gYXJyYXkgdGhhdCB3YXMgcGFzc2VkIHRvIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCN0cmFuc2Zvcm0oYnl0ZVtdW10sJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwlMjBpbnQpIj48Y29kZT5USlRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpPC9jb2RlPjwvYT4uPC9kZD48ZGQ+PGNvZGU+dHJhbnNmb3JtPC9jb2RlPiAtIGEgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5USlRyYW5zZm9ybTwvY29kZT48L2E+IGluc3RhbmNlIHRoYXQgc3BlY2lmaWVzIHRoZQotIHBhcmFtZXRlcnMgYW5kL29yIGNyb3BwaW5nIHJlZ2lvbiBmb3IgdGhpcyB0cmFuc2Zvcm08L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkN1c3RvbUZpbHRlci5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5Db25zdHImbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCBiL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5MTRkZTkuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDEyMzUgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tIE5ld1BhZ2UgLS0+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTx0aXRsZT5USkRlY29tcHJlc3NvcjwvdGl0bGU+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgdGl0bGU9IlN0eWxlIj4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgICBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCdpcy1leHRlcm5hbD10cnVlJykgPT0gLTEpIHsKLSAgICAgICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJUSkRlY29tcHJlc3NvciI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ3VzdG9tRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlByZXYgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKRGVjb21wcmVzc29yLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjZmllbGRfc3VtbWFyeSI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX3N1bW1hcnkiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX2RldGFpbCI+RmllbGQ8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotPGRpdiBjbGFzcz0ic3ViVGl0bGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9kaXY+Ci08aDIgdGl0bGU9IkNsYXNzIFRKRGVjb21wcmVzc29yIiBjbGFzcz0idGl0bGUiPkNsYXNzIFRKRGVjb21wcmVzc29yPC9oMj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudENvbnRhaW5lciI+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5qYXZhLmxhbmcuT2JqZWN0PC9saT4KLTxsaT4KLTx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgotPGxpPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKRGVjb21wcmVzc29yPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTxkaXYgY2xhc3M9ImRlc2NyaXB0aW9uIj4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxkbD4KLTxkdD5BbGwgSW1wbGVtZW50ZWQgSW50ZXJmYWNlczo8L2R0PgotPGRkPmphdmEuaW8uQ2xvc2VhYmxlLCBqYXZhLmxhbmcuQXV0b0Nsb3NlYWJsZTwvZGQ+Ci08L2RsPgotPGRsPgotPGR0PkRpcmVjdCBLbm93biBTdWJjbGFzc2VzOjwvZHQ+Ci08ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtZXI8L2E+PC9kZD4KLTwvZGw+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5USkRlY29tcHJlc3Nvcjwvc3Bhbj4KLWV4dGVuZHMgamF2YS5sYW5nLk9iamVjdAotaW1wbGVtZW50cyBqYXZhLmlvLkNsb3NlYWJsZTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBkZWNvbXByZXNzb3I8L2Rpdj4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJmaWVsZF9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5GaWVsZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRmllbGQgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBmaWVsZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5GaWVsZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RmllbGQgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnByb3RlY3RlZCBsb25nPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNoYW5kbGUiPmhhbmRsZTwvYT48L3N0cm9uZz48L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnByb3RlY3RlZCBieXRlW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2pwZWdCdWYiPmpwZWdCdWY8L2E+PC9zdHJvbmc+PC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNqcGVnQnVmU2l6ZSI+anBlZ0J1ZlNpemU8L2E+PC9zdHJvbmc+PC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNqcGVnQ29sb3JzcGFjZSI+anBlZ0NvbG9yc3BhY2U8L2E+PC9zdHJvbmc+PC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNqcGVnSGVpZ2h0Ij5qcGVnSGVpZ2h0PC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ1N1YnNhbXAiPmpwZWdTdWJzYW1wPC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ1dpZHRoIj5qcGVnV2lkdGg8L2E+PC9zdHJvbmc+PC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT48L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI3l1dkltYWdlIj55dXZJbWFnZTwvYT48L3N0cm9uZz48L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgU3VtbWFyeTwvaDM+Ci08dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNvbnN0cnVjdG9yIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY29uc3RydWN0b3JzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+Q29uc3RydWN0b3JzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbE9uZSIgc2NvcGU9ImNvbCI+Q29uc3RydWN0b3IgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjVEpEZWNvbXByZXNzb3IoKSI+VEpEZWNvbXByZXNzb3I8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3Nzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNUSkRlY29tcHJlc3NvcihieXRlW10pIj5USkRlY29tcHJlc3NvcjwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7anBlZ0ltYWdlKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIEpQRUcgc291cmNlCi0gaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI1RKRGVjb21wcmVzc29yKGJ5dGVbXSwlMjBpbnQpIj5USkRlY29tcHJlc3NvcjwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7anBlZ0ltYWdlLAotICAgICAgICAgICAgICBpbnQmbmJzcDtpbWFnZVNpemUpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBkZWNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRyBzb3VyY2UKLSBpbWFnZSBvZiBsZW5ndGggPGNvZGU+aW1hZ2VTaXplPC9jb2RlPiBieXRlcyBzdG9yZWQgaW4KLSA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNUSkRlY29tcHJlc3NvcihvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSkiPlRKRGVjb21wcmVzc29yPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPiZuYnNwO3l1dkltYWdlKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIFlVViBwbGFuYXIKLSBzb3VyY2UgaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPnl1dkltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkCi0gaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTwvdGFibGU+Ci08L2xpPgotPC91bD4KLTwhLS0gPT09PT09PT09PSBNRVRIT0QgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2Rfc3VtbWFyeSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJNZXRob2QgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBtZXRob2RzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+TWV0aG9kczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+TW9kaWZpZXIgYW5kIFR5cGU8L3RoPgotPHRoIGNsYXNzPSJjb2xMYXN0IiBzY29wZT0iY29sIj5NZXRob2QgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2Nsb3NlKCkiPmNsb3NlPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZyZWUgdGhlIG5hdGl2ZSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UsJTIwaW50KSI+ZGVjb21wcmVzczwvYT48L3N0cm9uZz4oamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSZuYnNwO2RzdEltYWdlLAotICAgICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBvciBkZWNvZGUgdGhlIFlVViBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIG91dHB1dCBhIGRlY29tcHJlc3NlZC9kZWNvZGVkIGltYWdlIHRvCi0gdGhlIGdpdmVuIDxjb2RlPkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+IGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5kZWNvbXByZXNzPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgICAgaW50Jm5ic3A7ZGVzaXJlZFdpZHRoLAotICAgICAgICAgIGludCZuYnNwO3BpdGNoLAotICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRIZWlnaHQsCi0gICAgICAgICAgaW50Jm5ic3A7cGl4ZWxGb3JtYXQsCi0gICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzdHJvbmc+RGVwcmVjYXRlZC48L3N0cm9uZz4mbmJzcDsKLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5kZWNvbXByZXNzPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtkc3RCdWYsCi0gICAgICAgICAgaW50Jm5ic3A7eCwKLSAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgIGludCZuYnNwO3BpeGVsRm9ybWF0LAotICAgICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBvciBkZWNvZGUgdGhlIFlVViBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIG91dHB1dCBhIGdyYXlzY2FsZSwgUkdCLCBvciBDTVlLIGltYWdlCi0gdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIGJ1ZmZlci48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGludFtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3M8L2E+PC9zdHJvbmc+KGludFtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgIGludCZuYnNwO3gsCi0gICAgICAgICAgaW50Jm5ic3A7eSwKLSAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgaW50Jm5ic3A7c3RyaWRlLAotICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRIZWlnaHQsCi0gICAgICAgICAgaW50Jm5ic3A7cGl4ZWxGb3JtYXQsCi0gICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZ3JheXNjYWxlLCBSR0IsIG9yIENNWUsgaW1hZ2UKLSB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzczwvYT48L3N0cm9uZz4oaW50Jm5ic3A7ZGVzaXJlZFdpZHRoLAotICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRIZWlnaHQsCi0gICAgICAgICAgaW50Jm5ic3A7YnVmZmVyZWRJbWFnZVR5cGUsCi0gICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4KLSBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ieXRlW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3M8L2E+PC9zdHJvbmc+KGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgIGludCZuYnNwO3BpeGVsRm9ybWF0LAotICAgICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoYnl0ZVtdLCUyMGludCkiPmRlY29tcHJlc3NUb1lVVjwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzdHJvbmc+RGVwcmVjYXRlZC48L3N0cm9uZz4mbmJzcDsKLTxkaXYgY2xhc3M9ImJsb2NrIj48aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzc1RvWVVWKFlVVkltYWdlLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ieXRlW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihpbnQpIj5kZWNvbXByZXNzVG9ZVVY8L2E+PC9zdHJvbmc+KGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmRlY29tcHJlc3NUb1lVVihpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGludCwlMjBpbnRbXSwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzc1RvWVVWPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgICBpbnRbXSZuYnNwO3N0cmlkZXMsCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvcgotIGluc3RhbmNlIGludG8gYSBzZXQgb2YgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBhbmQgcmV0dXJuIGEKLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3NUb1lVVjwvYT48L3N0cm9uZz4oaW50Jm5ic3A7ZGVzaXJlZFdpZHRoLAotICAgICAgICAgICAgICAgaW50Jm5ic3A7cGFkLAotICAgICAgICAgICAgICAgaW50Jm5ic3A7ZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgdW5pZmllZCBZVVYgcGxhbmFyIGltYWdlIGJ1ZmZlciBhbmQgcmV0dXJuIGEKLSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGltYWdlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSwlMjBpbnQpIj5kZWNvbXByZXNzVG9ZVVY8L2E+PC9zdHJvbmc+KDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+Jm5ic3A7ZHN0SW1hZ2UsCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UgaW50byBhIFlVViBwbGFuYXIgaW1hZ2UgYW5kIHN0b3JlIGl0IGluIHRoZSBnaXZlbgotIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgdm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZmluYWxpemUoKSI+ZmluYWxpemU8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0Q29sb3JzcGFjZSgpIj5nZXRDb2xvcnNwYWNlPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGNvbG9yc3BhY2UgdXNlZCBpbiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRIZWlnaHQoKSI+Z2V0SGVpZ2h0PC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ynl0ZVtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRKUEVHQnVmKCkiPmdldEpQRUdCdWY8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgSlBFRyBpbWFnZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0SlBFR1NpemUoKSI+Z2V0SlBFR1NpemU8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gYnl0ZXMpIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0U2NhbGVkSGVpZ2h0KGludCwlMjBpbnQpIj5nZXRTY2FsZWRIZWlnaHQ8L2E+PC9zdHJvbmc+KGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRIZWlnaHQpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSBkZWNvbXByZXNzb3IgY2FuIGdlbmVyYXRlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBkZXNpcmVkIGltYWdlIHdpZHRoIGFuZAotIGhlaWdodC48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2dldFNjYWxlZFdpZHRoKGludCwlMjBpbnQpIj5nZXRTY2FsZWRXaWR0aDwvYT48L3N0cm9uZz4oaW50Jm5ic3A7ZGVzaXJlZFdpZHRoLAotICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0KTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSBkZWNvbXByZXNzb3IgY2FuIGdlbmVyYXRlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBkZXNpcmVkIGltYWdlIHdpZHRoIGFuZAotIGhlaWdodC48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2dldFN1YnNhbXAoKSI+Z2V0U3Vic2FtcDwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UKLSAoSlBFRyBvciBZVVYpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2dldFdpZHRoKCkiPmdldFdpZHRoPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHdpZHRoIG9mIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNzZXRKUEVHSW1hZ2UoYnl0ZVtdLCUyMGludCkiPnNldEpQRUdJbWFnZTwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7anBlZ0ltYWdlLAotICAgICAgICAgICAgaW50Jm5ic3A7aW1hZ2VTaXplKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3Ryb25nPkRlcHJlY2F0ZWQuPC9zdHJvbmc+Jm5ic3A7Ci08ZGl2IGNsYXNzPSJibG9jayI+PGk+VXNlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCkiPjxjb2RlPnNldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50KTwvY29kZT48L2E+IGluc3RlYWQuPC9pPjwvZGl2PgotPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2UoYnl0ZVtdLCUyMGludCkiPnNldFNvdXJjZUltYWdlPC9hPjwvc3Ryb25nPihieXRlW10mbmJzcDtqcGVnSW1hZ2UsCi0gICAgICAgICAgICAgIGludCZuYnNwO2ltYWdlU2l6ZSk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzb2NpYXRlIHRoZSBKUEVHIGltYWdlIG9mIGxlbmd0aCA8Y29kZT5pbWFnZVNpemU8L2NvZGU+IGJ5dGVzIHN0b3JlZCBpbgotIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT52b2lkPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZSkiPnNldFNvdXJjZUltYWdlPC9hPjwvc3Ryb25nPig8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPiZuYnNwO3NyY0ltYWdlKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBZVVYgcGxhbmFyIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTwvdGFibGU+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7amF2YS5sYW5nLk9iamVjdDwvaDM+Ci08Y29kZT5jbG9uZSwgZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+RmllbGQgRGV0YWlsPC9oMz4KLTxhIG5hbWU9ImhhbmRsZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+aGFuZGxlPC9oND4KLTxwcmU+cHJvdGVjdGVkJm5ic3A7bG9uZyBoYW5kbGU8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ianBlZ0J1ZiI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+anBlZ0J1ZjwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2J5dGVbXSBqcGVnQnVmPC9wcmU+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImpwZWdCdWZTaXplIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5qcGVnQnVmU2l6ZTwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCBqcGVnQnVmU2l6ZTwvcHJlPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJ5dXZJbWFnZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+eXV2SW1hZ2U8L2g0PgotPHByZT5wcm90ZWN0ZWQmbmJzcDs8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPiB5dXZJbWFnZTwvcHJlPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJqcGVnV2lkdGgiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmpwZWdXaWR0aDwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCBqcGVnV2lkdGg8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ianBlZ0hlaWdodCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+anBlZ0hlaWdodDwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCBqcGVnSGVpZ2h0PC9wcmU+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImpwZWdTdWJzYW1wIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5qcGVnU3Vic2FtcDwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCBqcGVnU3Vic2FtcDwvcHJlPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJqcGVnQ29sb3JzcGFjZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmpwZWdDb2xvcnNwYWNlPC9oND4KLTxwcmU+cHJvdGVjdGVkJm5ic3A7aW50IGpwZWdDb2xvcnNwYWNlPC9wcmU+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgRGV0YWlsPC9oMz4KLTxhIG5hbWU9IlRKRGVjb21wcmVzc29yKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKRGVjb21wcmVzc29yPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpEZWNvbXByZXNzb3IoKQotICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3Nzb3IgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKRGVjb21wcmVzc29yKGJ5dGVbXSkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKRGVjb21wcmVzc29yPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpEZWNvbXByZXNzb3IoYnl0ZVtdJm5ic3A7anBlZ0ltYWdlKQotICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHIHNvdXJjZQotIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmpwZWdJbWFnZTwvY29kZT4gLSBKUEVHIGltYWdlIGJ1ZmZlciAoc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSBpcyBhc3N1bWVkIHRvCi0gYmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuKSAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iVEpEZWNvbXByZXNzb3IoYnl0ZVtdLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USkRlY29tcHJlc3NvcjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKRGVjb21wcmVzc29yKGJ5dGVbXSZuYnNwO2pwZWdJbWFnZSwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7aW1hZ2VTaXplKQotICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHIHNvdXJjZQotIGltYWdlIG9mIGxlbmd0aCA8Y29kZT5pbWFnZVNpemU8L2NvZGU+IGJ5dGVzIHN0b3JlZCBpbgotIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+anBlZ0ltYWdlPC9jb2RlPiAtIEpQRUcgaW1hZ2UgYnVmZmVyLiAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLjwvZGQ+PGRkPjxjb2RlPmltYWdlU2l6ZTwvY29kZT4gLSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcyk8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKRGVjb21wcmVzc29yKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKRGVjb21wcmVzc29yPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpEZWNvbXByZXNzb3IoPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT4mbmJzcDt5dXZJbWFnZSkKLSAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBkZWNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgWVVWIHBsYW5hcgotIHNvdXJjZSBpbWFnZSBzdG9yZWQgaW4gPGNvZGU+eXV2SW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQKLSBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+eXV2SW1hZ2U8L2NvZGU+IC0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5ZVVZJbWFnZTwvY29kZT48L2E+IGluc3RhbmNlIGNvbnRhaW5pbmcgYSBZVVYgcGxhbmFyCi0gaW1hZ2UgdG8gYmUgZGVjb2RlZC4gIFRoaXMgaW1hZ2UgaXMgbm90IG1vZGlmaWVkLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT09PSBNRVRIT0QgREVUQUlMID09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kIERldGFpbDwvaDM+Ci08YSBuYW1lPSJzZXRTb3VyY2VJbWFnZShieXRlW10sIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PnNldFNvdXJjZUltYWdlPC9oND4KLTxwcmU+cHVibGljJm5ic3A7dm9pZCZuYnNwO3NldFNvdXJjZUltYWdlKGJ5dGVbXSZuYnNwO2pwZWdJbWFnZSwKLSAgICAgICAgICAgICAgICAgIGludCZuYnNwO2ltYWdlU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzb2NpYXRlIHRoZSBKUEVHIGltYWdlIG9mIGxlbmd0aCA8Y29kZT5pbWFnZVNpemU8L2NvZGU+IGJ5dGVzIHN0b3JlZCBpbgotIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS4gIFRoaXMgaW1hZ2Ugd2lsbAotIGJlIHVzZWQgYXMgdGhlIHNvdXJjZSBpbWFnZSBmb3Igc3Vic2VxdWVudCBkZWNvbXByZXNzIG9wZXJhdGlvbnMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmpwZWdJbWFnZTwvY29kZT4gLSBKUEVHIGltYWdlIGJ1ZmZlci4gIFRoaXMgYnVmZmVyIGlzIG5vdCBtb2RpZmllZC48L2RkPjxkZD48Y29kZT5pbWFnZVNpemU8L2NvZGU+IC0gc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gYnl0ZXMpPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJzZXRKUEVHSW1hZ2UoYnl0ZVtdLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5zZXRKUEVHSW1hZ2U8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljJm5ic3A7dm9pZCZuYnNwO3NldEpQRUdJbWFnZShieXRlW10mbmJzcDtqcGVnSW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtpbWFnZVNpemUpCi0gICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNzZXRTb3VyY2VJbWFnZShieXRlW10sJTIwaW50KSI+PGNvZGU+c2V0U291cmNlSW1hZ2UoYnl0ZVtdLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9InNldFNvdXJjZUltYWdlKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+c2V0U291cmNlSW1hZ2U8L2g0PgotPHByZT5wdWJsaWMmbmJzcDt2b2lkJm5ic3A7c2V0U291cmNlSW1hZ2UoPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5ZVVZJbWFnZTwvYT4mbmJzcDtzcmNJbWFnZSk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NvY2lhdGUgdGhlIHNwZWNpZmllZCBZVVYgcGxhbmFyIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UuICBTdWJzZXF1ZW50IGRlY29tcHJlc3Mgb3BlcmF0aW9ucyB3aWxsIGRlY29kZSB0aGlzIGltYWdlIGludG8gYW4KLSBSR0Igb3IgZ3JheXNjYWxlIGRlc3RpbmF0aW9uIGltYWdlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5zcmNJbWFnZTwvY29kZT4gLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPllVVkltYWdlPC9jb2RlPjwvYT4gaW5zdGFuY2UgY29udGFpbmluZyBhIFlVViBwbGFuYXIgaW1hZ2UgdG8KLSBiZSBkZWNvZGVkLiAgVGhpcyBpbWFnZSBpcyBub3QgbW9kaWZpZWQuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXRXaWR0aCgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRXaWR0aDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFdpZHRoKCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSB3aWR0aCBvZiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSBkZWNvbXByZXNzb3IgaW5zdGFuY2UuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXRIZWlnaHQoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0SGVpZ2h0PC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Z2V0SGVpZ2h0KCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIHNvdXJjZSBpbWFnZSAoSlBFRyBvciBZVVYpIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gZGVjb21wcmVzc29yIGluc3RhbmNlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgaGVpZ2h0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFN1YnNhbXAoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0U3Vic2FtcDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFN1YnNhbXAoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIHNvdXJjZSBpbWFnZQotIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLiAgU2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQ0NCI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UKLSAoSlBFRyBvciBZVVYpIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldENvbG9yc3BhY2UoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0Q29sb3JzcGFjZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldENvbG9yc3BhY2UoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGNvbG9yc3BhY2UgdXNlZCBpbiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZAotIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuICBTZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNDU19SR0IiPjxjb2RlPlRKLkNTXyo8L2NvZGU+PC9hPi4gIElmIHRoZQotIHNvdXJjZSBpbWFnZSBpcyBZVVYsIHRoZW4gdGhpcyBhbHdheXMgcmV0dXJucyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0NTX1lDYkNyIj48Y29kZT5USi5DU19ZQ2JDcjwvY29kZT48L2E+LjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgY29sb3JzcGFjZSB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldEpQRUdCdWYoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0SlBFR0J1ZjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2J5dGVbXSZuYnNwO2dldEpQRUdCdWYoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIEpQRUcgaW1hZ2UgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIEpQRUcgaW1hZ2UgYnVmZmVyIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldEpQRUdTaXplKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldEpQRUdTaXplPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Z2V0SlBFR1NpemUoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFNjYWxlZFdpZHRoKGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0U2NhbGVkV2lkdGg8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtpbnQmbmJzcDtnZXRTY2FsZWRXaWR0aChpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRIZWlnaHQpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gZGVjb21wcmVzc29yIGNhbiBnZW5lcmF0ZSB3aXRob3V0IGV4Y2VlZGluZyB0aGUgZGVzaXJlZCBpbWFnZSB3aWR0aCBhbmQKLSBoZWlnaHQuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRlc2lyZWRXaWR0aDwvY29kZT4gLSBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuCi0gU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UKLSAoaW4gb3RoZXIgd29yZHMsIHRoZSB3aWR0aCB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlCi0gc2NhbGVkIGltYWdlIHNpemUuKTwvZGQ+PGRkPjxjb2RlPmRlc2lyZWRIZWlnaHQ8L2NvZGU+IC0gZGVzaXJlZCBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4KLSBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcKLSBpbWFnZSAoaW4gb3RoZXIgd29yZHMsIHRoZSBoZWlnaHQgd2lsbCBub3QgYmUgY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nCi0gdGhlIHNjYWxlZCBpbWFnZSBzaXplLik8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSBkZWNvbXByZXNzb3IgY2FuIGdlbmVyYXRlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBkZXNpcmVkIGltYWdlIHdpZHRoIGFuZAotIGhlaWdodC48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFNjYWxlZEhlaWdodChpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldFNjYWxlZEhlaWdodDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFNjYWxlZEhlaWdodChpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0KTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSBkZWNvbXByZXNzb3IgY2FuIGdlbmVyYXRlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBkZXNpcmVkIGltYWdlIHdpZHRoIGFuZAotIGhlaWdodC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+ZGVzaXJlZFdpZHRoPC9jb2RlPiAtIGRlc2lyZWQgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4KLSBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSB3aWR0aCBvZiB0aGUgSlBFRyBpbWFnZQotIChpbiBvdGhlciB3b3JkcywgdGhlIHdpZHRoIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKLSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pPC9kZD48ZGQ+PGNvZGU+ZGVzaXJlZEhlaWdodDwvY29kZT4gLSBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlLgotIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgSlBFRwotIGltYWdlIChpbiBvdGhlciB3b3JkcywgdGhlIGhlaWdodCB3aWxsIG5vdCBiZSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcKLSB0aGUgc2NhbGVkIGltYWdlIHNpemUuKTwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIGhlaWdodCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSBkZWNvbXByZXNzb3IgY2FuIGdlbmVyYXRlIHdpdGhvdXQgZXhjZWVkaW5nIHRoZSBkZXNpcmVkIGltYWdlIHdpZHRoIGFuZAotIGhlaWdodC48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5kZWNvbXByZXNzPC9oND4KLTxwcmU+cHVibGljJm5ic3A7dm9pZCZuYnNwO2RlY29tcHJlc3MoYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgIGludCZuYnNwO3BpdGNoLAotICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICBpbnQmbmJzcDtwaXhlbEZvcm1hdCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2Ugb3IgZGVjb2RlIHRoZSBZVVYgc291cmNlIGltYWdlIGFzc29jaWF0ZWQKLSB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBvdXRwdXQgYSBncmF5c2NhbGUsIFJHQiwgb3IgQ01ZSyBpbWFnZQotIHRvIHRoZSBnaXZlbiBkZXN0aW5hdGlvbiBidWZmZXIuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRzdEJ1ZjwvY29kZT4gLSBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRlY29tcHJlc3NlZC9kZWNvZGVkIGltYWdlLgotIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIHRoaXMgYnVmZmVyIHNob3VsZCBub3JtYWxseSBiZQotIDxjb2RlPnBpdGNoICogc2NhbGVkSGVpZ2h0PC9jb2RlPiBieXRlcyBpbiBzaXplLCB3aGVyZQotIDxjb2RlPnNjYWxlZEhlaWdodDwvY29kZT4gY2FuIGJlIGRldGVybWluZWQgYnkgY2FsbGluZyA8Y29kZT4KLSBzY2FsaW5nRmFjdG9yLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldFNjYWxlZChpbnQpIj48Y29kZT5nZXRTY2FsZWQ8L2NvZGU+PC9hPihqcGVnSGVpZ2h0KQotIDwvY29kZT4gd2l0aCBvbmUgb2YgdGhlIHNjYWxpbmcgZmFjdG9ycyByZXR1cm5lZCBmcm9tIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0U2NhbGluZ0ZhY3RvcnMoKSI+PGNvZGU+VEouZ2V0U2NhbGluZ0ZhY3RvcnMoKTwvY29kZT48L2E+IG9yIGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRIZWlnaHQoaW50LCUyMGludCkiPjxjb2RlPmdldFNjYWxlZEhlaWdodChpbnQsIGludCk8L2NvZGU+PC9hPi4gIElmIHRoZQotIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZSwgdGhlbiB0aGlzIGJ1ZmZlciBzaG91bGQgbm9ybWFsbHkgYmUKLSA8Y29kZT5waXRjaCAqIGhlaWdodDwvY29kZT4gYnl0ZXMgaW4gc2l6ZSwgd2hlcmUgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpcwotIHRoZSBoZWlnaHQgb2YgdGhlIFlVViBpbWFnZS4gIEhvd2V2ZXIsIHRoZSBidWZmZXIgbWF5IGFsc28gYmUgbGFyZ2VyIHRoYW4KLSB0aGUgZGltZW5zaW9ucyBvZiB0aGUgc291cmNlIGltYWdlLCBpbiB3aGljaCBjYXNlIHRoZSA8Y29kZT54PC9jb2RlPiwKLSA8Y29kZT55PC9jb2RlPiwgYW5kIDxjb2RlPnBpdGNoPC9jb2RlPiBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkKLSB0aGUgcmVnaW9uIGludG8gd2hpY2ggdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgYmUgZGVjb21wcmVzc2VkL2RlY29kZWQuPC9kZD48ZGQ+PGNvZGU+eDwvY29kZT4gLSB4IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBpbnRvCi0gd2hpY2ggdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgYmUgZGVjb21wcmVzc2VkL2RlY29kZWQ8L2RkPjxkZD48Y29kZT55PC9jb2RlPiAtIHkgb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlIGludG8KLSB3aGljaCB0aGUgc291cmNlIGltYWdlIHNob3VsZCBiZSBkZWNvbXByZXNzZWQvZGVjb2RlZDwvZGQ+PGRkPjxjb2RlPmRlc2lyZWRXaWR0aDwvY29kZT4gLSBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzCi0gc3BlY2lmaWVzIHRoZSBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UgKG9yCi0gaW1hZ2UgcmVnaW9uLikgIElmIHRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudAotIHRoYW4gdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZQotIEpQRUcgZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQKLSB3aXRoaW4gdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcKLSBpdCB0byB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLikgIFRoaXMgcGFyYW1ldGVyIGlzCi0gaWdub3JlZCBpZiB0aGUgc291cmNlIGltYWdlIGlzIGEgWVVWIGltYWdlLjwvZGQ+PGRkPjxjb2RlPnBpdGNoPC9jb2RlPiAtIGJ5dGVzIHBlciBsaW5lIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZS4gIE5vcm1hbGx5LCB0aGlzCi0gc2hvdWxkIGJlIHNldCB0byA8Y29kZT5zY2FsZWRXaWR0aCAqIFRKLnBpeGVsU2l6ZShwaXhlbEZvcm1hdCk8L2NvZGU+IGlmCi0gdGhlIGRlc3RpbmF0aW9uIGltYWdlIGlzIHVucGFkZGVkLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0bywgZm9yIGluc3RhbmNlLAotIHBhZCBlYWNoIGxpbmUgb2YgdGhlIGRlc3RpbmF0aW9uIGltYWdlIHRvIGEgNC1ieXRlIGJvdW5kYXJ5IG9yIHRvCi0gZGVjb21wcmVzcy9kZWNvZGUgdGhlIHNvdXJjZSBpbWFnZSBpbnRvIGEgcmVnaW9uIG9mIGEgbGFyZ2VyIGltYWdlLiAgTk9URToKLSBpZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiA8Y29kZT5zY2FsZWRXaWR0aDwvY29kZT4gY2FuIGJlCi0gZGV0ZXJtaW5lZCBieSBjYWxsaW5nIDxjb2RlPgotIHNjYWxpbmdGYWN0b3IuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwjZ2V0U2NhbGVkKGludCkiPjxjb2RlPmdldFNjYWxlZDwvY29kZT48L2E+KGpwZWdXaWR0aCkKLSA8L2NvZGU+IG9yIGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRXaWR0aChpbnQsJTIwaW50KSI+PGNvZGU+Z2V0U2NhbGVkV2lkdGgoaW50LCBpbnQpPC9jb2RlPjwvYT4uICBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEKLSBZVVYgaW1hZ2UsIHRoZW4gPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+IGlzIHRoZSB3aWR0aCBvZiB0aGUgWVVWIGltYWdlLgotIFNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gMCBpcyB0aGUgZXF1aXZhbGVudCBvZiBzZXR0aW5nIGl0IHRvCi0gPGNvZGU+c2NhbGVkV2lkdGggKiBUSi5waXhlbFNpemUocGl4ZWxGb3JtYXQpPC9jb2RlPi48L2RkPjxkZD48Y29kZT5kZXNpcmVkSGVpZ2h0PC9jb2RlPiAtIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIHRoaXMKLSBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UgKG9yCi0gaW1hZ2UgcmVnaW9uLikgIElmIHRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudAotIHRoYW4gdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZQotIEpQRUcgZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQKLSB3aXRoaW4gdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcKLSBpdCB0byB0aGUgaGVpZ2h0IG9mIHRoZSBKUEVHIGltYWdlIChpbiBvdGhlciB3b3JkcywgdGhlIGhlaWdodCB3aWxsIG5vdCBiZQotIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuKSAgVGhpcyBwYXJhbWV0ZXIgaXMKLSBpZ25vcmVkIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBZVVYgaW1hZ2UuPC9kZD48ZGQ+PGNvZGU+cGl4ZWxGb3JtYXQ8L2NvZGU+IC0gcGl4ZWwgZm9ybWF0IG9mIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZSAob25lIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9SR0IiPjxjb2RlPlRKLlBGXyo8L2NvZGU+PC9hPik8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmRlY29tcHJlc3M8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljJm5ic3A7dm9pZCZuYnNwO2RlY29tcHJlc3MoYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3BpeGVsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPjxzcGFuIGNsYXNzPSJzdHJvbmciPkRlcHJlY2F0ZWQuPC9zcGFuPiZuYnNwOzxpPlVzZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZGVjb21wcmVzcyhpbnQsIGludCwgaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmRlY29tcHJlc3M8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtkZWNvbXByZXNzKGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICAgICAgICBpbnQmbmJzcDtwaXRjaCwKLSAgICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICAgIGludCZuYnNwO3BpeGVsRm9ybWF0LAotICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UgYW5kIHJldHVybiBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRlc2lyZWRXaWR0aDwvY29kZT4gLSBzZWUKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4KLSBmb3IgZGVzY3JpcHRpb248L2RkPjxkZD48Y29kZT5waXRjaDwvY29kZT4gLSBzZWUKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPmRlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4KLSBmb3IgZGVzY3JpcHRpb248L2RkPjxkZD48Y29kZT5kZXNpcmVkSGVpZ2h0PC9jb2RlPiAtIHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPgotIGZvciBkZXNjcmlwdGlvbjwvZGQ+PGRkPjxjb2RlPnBpeGVsRm9ybWF0PC9jb2RlPiAtIHBpeGVsIGZvcm1hdCBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIChvbmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1BGX1JHQiI+PGNvZGU+VEouUEZfKjwvY29kZT48L2E+KTwvZGQ+PGRkPjxjb2RlPmZsYWdzPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0JPVFRPTVVQIj48Y29kZT5USi5GTEFHXyo8L2NvZGU+PC9hPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+YSBidWZmZXIgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGltYWdlLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZGVjb21wcmVzc1RvWVVWKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5kZWNvbXByZXNzVG9ZVVY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDt2b2lkJm5ic3A7ZGVjb21wcmVzc1RvWVVWKDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+Jm5ic3A7ZHN0SW1hZ2UsCi0gICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgc3RvcmUgaXQgaW4gdGhlIGdpdmVuCi0gPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlLiAgVGhpcyBtZXRob2QgcGVyZm9ybXMgSlBFRyBkZWNvbXByZXNzaW9uCi0gYnV0IGxlYXZlcyBvdXQgdGhlIGNvbG9yIGNvbnZlcnNpb24gc3RlcCwgc28gYSBwbGFuYXIgWVVWIGltYWdlIGlzCi0gZ2VuZXJhdGVkIGluc3RlYWQgb2YgYW4gUkdCIG9yIGdyYXlzY2FsZSBpbWFnZS4gIFRoaXMgbWV0aG9kIGNhbm5vdCBiZQotIHVzZWQgdG8gZGVjb21wcmVzcyBKUEVHIHNvdXJjZSBpbWFnZXMgd2l0aCB0aGUgQ01ZSyBvciBZQ0NLIGNvbG9yc3BhY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRzdEltYWdlPC9jb2RlPiAtIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+WVVWSW1hZ2U8L2NvZGU+PC9hPiBpbnN0YW5jZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgWVVWIHBsYW5hcgotIGltYWdlLiAgVGhlIGxldmVsIG9mIHN1YnNhbXBsaW5nIHNwZWNpZmllZCBpbiB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPgotIGluc3RhbmNlIG11c3QgbWF0Y2ggdGhhdCBvZiB0aGUgSlBFRyBpbWFnZSwgYW5kIHRoZSB3aWR0aCBhbmQgaGVpZ2h0Ci0gc3BlY2lmaWVkIGluIHRoZSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgbXVzdCBtYXRjaCBvbmUgb2YgdGhlCi0gc2NhbGVkIGltYWdlIHNpemVzIHRoYXQgVHVyYm9KUEVHIGlzIGNhcGFibGUgb2YgZ2VuZXJhdGluZyBmcm9tIHRoZSBKUEVHCi0gc291cmNlIGltYWdlLjwvZGQ+PGRkPjxjb2RlPmZsYWdzPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNGTEFHX0JPVFRPTVVQIj48Y29kZT5USi5GTEFHXyo8L2NvZGU+PC9hPjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZGVjb21wcmVzc1RvWVVWKGJ5dGVbXSwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZGVjb21wcmVzc1RvWVVWPC9oND4KLTxwcmU+QERlcHJlY2F0ZWQKLXB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtkZWNvbXByZXNzVG9ZVVYoYnl0ZVtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzc1RvWVVWKFlVVkltYWdlLCBpbnQpPC9jb2RlPjwvYT4gaW5zdGVhZC48L2k+PC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3NUb1lVVihpbnQsIGludFtdLCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmRlY29tcHJlc3NUb1lVVjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwOzxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+WVVWSW1hZ2U8L2E+Jm5ic3A7ZGVjb21wcmVzc1RvWVVWKGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50W10mbmJzcDtzdHJpZGVzLAotICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5EZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSBpbnN0YW5jZSBpbnRvIGEgc2V0IG9mIFksIFUgKENiKSwgYW5kIFYgKENyKSBpbWFnZSBwbGFuZXMgYW5kIHJldHVybiBhCi0gPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSBwbGFuZXMuCi0gVGhpcyBtZXRob2QgcGVyZm9ybXMgSlBFRyBkZWNvbXByZXNzaW9uIGJ1dCBsZWF2ZXMgb3V0IHRoZSBjb2xvcgotIGNvbnZlcnNpb24gc3RlcCwgc28gYSBwbGFuYXIgWVVWIGltYWdlIGlzIGdlbmVyYXRlZCBpbnN0ZWFkIG9mIGFuIFJHQiBvcgotIGdyYXlzY2FsZSBpbWFnZS4gIFRoaXMgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHRvIGRlY29tcHJlc3MgSlBFRyBzb3VyY2UKLSBpbWFnZXMgd2l0aCB0aGUgQ01ZSyBvciBZQ0NLIGNvbG9yc3BhY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRlc2lyZWRXaWR0aDwvY29kZT4gLSBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuICBJZiB0aGUKLSBkZXNpcmVkIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudCB0aGFuIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBKUEVHCi0gaW1hZ2UgYmVpbmcgZGVjb21wcmVzc2VkLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZSBKUEVHCi0gZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQgd2l0aGluCi0gdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8KLSB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLik8L2RkPjxkZD48Y29kZT5zdHJpZGVzPC9jb2RlPiAtIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotIHBlciBsaW5lIGluIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lIG9mIHRoZSBvdXRwdXQgaW1hZ2UuICBTZXR0aW5nIHRoZQotIHN0cmlkZSBmb3IgYW55IHBsYW5lIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgc2NhbGVkCi0gY29tcG9uZW50IHdpZHRoIG9mIHRoZSBwbGFuZS4gIElmIDx0dD5zdHJpZGVzPC90dD4gaXMgTlVMTCwgdGhlbiB0aGUKLSBzdHJpZGVzIGZvciBhbGwgcGxhbmVzIHdpbGwgYmUgc2V0IHRvIHRoZWlyIHJlc3BlY3RpdmUgc2NhbGVkIGNvbXBvbmVudAotIHdpZHRocy4gIFlvdSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mCi0gbGluZSBwYWRkaW5nIHRvIGVhY2ggcGxhbmUuPC9kZD48ZGQ+PGNvZGU+ZGVzaXJlZEhlaWdodDwvY29kZT4gLSBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiAgSWYgdGhlCi0gZGVzaXJlZCBpbWFnZSBkaW1lbnNpb25zIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgSlBFRwotIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRwotIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0IHdpdGhpbgotIHRoZSBkZXNpcmVkIGRpbWVuc2lvbnMuICBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvCi0gdGhlIGhlaWdodCBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gb3RoZXIgd29yZHMsIHRoZSBoZWlnaHQgd2lsbCBub3QgYmUKLSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLik8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgWVVWIHBsYW5hciBpbWFnZS48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3NUb1lVVihpbnQsIGludCwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5kZWNvbXByZXNzVG9ZVVY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPiZuYnNwO2RlY29tcHJlc3NUb1lVVihpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO3BhZCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yCi0gaW5zdGFuY2UgaW50byBhIHVuaWZpZWQgWVVWIHBsYW5hciBpbWFnZSBidWZmZXIgYW5kIHJldHVybiBhCi0gPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4gIFRoaXMKLSBtZXRob2QgcGVyZm9ybXMgSlBFRyBkZWNvbXByZXNzaW9uIGJ1dCBsZWF2ZXMgb3V0IHRoZSBjb2xvciBjb252ZXJzaW9uCi0gc3RlcCwgc28gYSBwbGFuYXIgWVVWIGltYWdlIGlzIGdlbmVyYXRlZCBpbnN0ZWFkIG9mIGFuIFJHQiBvciBncmF5c2NhbGUKLSBpbWFnZS4gIFRoaXMgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHRvIGRlY29tcHJlc3MgSlBFRyBzb3VyY2UgaW1hZ2VzIHdpdGgKLSB0aGUgQ01ZSyBvciBZQ0NLIGNvbG9yc3BhY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRlc2lyZWRXaWR0aDwvY29kZT4gLSBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuICBJZiB0aGUKLSBkZXNpcmVkIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudCB0aGFuIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBKUEVHCi0gaW1hZ2UgYmVpbmcgZGVjb21wcmVzc2VkLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZSBKUEVHCi0gZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQgd2l0aGluCi0gdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8KLSB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLik8L2RkPjxkZD48Y29kZT5wYWQ8L2NvZGU+IC0gdGhlIHdpZHRoIG9mIGVhY2ggbGluZSBpbiBlYWNoIHBsYW5lIG9mIHRoZSBZVVYgaW1hZ2Ugd2lsbCBiZQotIHBhZGRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiB0aGlzIG51bWJlciBvZiBieXRlcyAobXVzdCBiZSBhIHBvd2VyIG9mCi0gMi4pPC9kZD48ZGQ+PGNvZGU+ZGVzaXJlZEhlaWdodDwvY29kZT4gLSBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiAgSWYgdGhlCi0gZGVzaXJlZCBpbWFnZSBkaW1lbnNpb25zIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgSlBFRwotIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRwotIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0IHdpdGhpbgotIHRoZSBkZXNpcmVkIGRpbWVuc2lvbnMuICBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvCi0gdGhlIGhlaWdodCBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gb3RoZXIgd29yZHMsIHRoZSBoZWlnaHQgd2lsbCBub3QgYmUKLSBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLik8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmEgWVVWIHBsYW5hciBpbWFnZS48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3NUb1lVVihpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5kZWNvbXByZXNzVG9ZVVY8L2g0PgotPHByZT5ARGVwcmVjYXRlZAotcHVibGljJm5ic3A7Ynl0ZVtdJm5ic3A7ZGVjb21wcmVzc1RvWVVWKGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5EZXByZWNhdGVkLjwvc3Bhbj4mbmJzcDs8aT5Vc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzVG9ZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzc1RvWVVWKGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBpbnN0ZWFkLjwvaT48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZGVjb21wcmVzcyhpbnRbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZGVjb21wcmVzczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtkZWNvbXByZXNzKGludFtdJm5ic3A7ZHN0QnVmLAotICAgICAgICAgICAgICBpbnQmbmJzcDt4LAotICAgICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICAgICBpbnQmbmJzcDtkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgIGludCZuYnNwO3N0cmlkZSwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7ZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7cGl4ZWxGb3JtYXQsCi0gICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZ3JheXNjYWxlLCBSR0IsIG9yIENNWUsgaW1hZ2UKLSB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT5kc3RCdWY8L2NvZGU+IC0gYnVmZmVyIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZS4KLSBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzIGJ1ZmZlciBzaG91bGQgbm9ybWFsbHkgYmUKLSA8Y29kZT5zdHJpZGUgKiBzY2FsZWRIZWlnaHQ8L2NvZGU+IHBpeGVscyBpbiBzaXplLCB3aGVyZQotIDxjb2RlPnNjYWxlZEhlaWdodDwvY29kZT4gY2FuIGJlIGRldGVybWluZWQgYnkgY2FsbGluZyA8Y29kZT4KLSBzY2FsaW5nRmFjdG9yLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldFNjYWxlZChpbnQpIj48Y29kZT5nZXRTY2FsZWQ8L2NvZGU+PC9hPihqcGVnSGVpZ2h0KQotIDwvY29kZT4gd2l0aCBvbmUgb2YgdGhlIHNjYWxpbmcgZmFjdG9ycyByZXR1cm5lZCBmcm9tIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0U2NhbGluZ0ZhY3RvcnMoKSI+PGNvZGU+VEouZ2V0U2NhbGluZ0ZhY3RvcnMoKTwvY29kZT48L2E+IG9yIGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRIZWlnaHQoaW50LCUyMGludCkiPjxjb2RlPmdldFNjYWxlZEhlaWdodChpbnQsIGludCk8L2NvZGU+PC9hPi4gIElmIHRoZQotIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZSwgdGhlbiB0aGlzIGJ1ZmZlciBzaG91bGQgbm9ybWFsbHkgYmUKLSA8Y29kZT5zdHJpZGUgKiBoZWlnaHQ8L2NvZGU+IHBpeGVscyBpbiBzaXplLCB3aGVyZSA8Y29kZT5oZWlnaHQ8L2NvZGU+IGlzCi0gdGhlIGhlaWdodCBvZiB0aGUgWVVWIGltYWdlLiAgSG93ZXZlciwgdGhlIGJ1ZmZlciBtYXkgYWxzbyBiZSBsYXJnZXIgdGhhbgotIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBKUEVHIGltYWdlLCBpbiB3aGljaCBjYXNlIHRoZSA8Y29kZT54PC9jb2RlPiwKLSA8Y29kZT55PC9jb2RlPiwgYW5kIDxjb2RlPnN0cmlkZTwvY29kZT4gcGFyYW1ldGVycyBjYW4gYmUgdXNlZCB0byBzcGVjaWZ5Ci0gdGhlIHJlZ2lvbiBpbnRvIHdoaWNoIHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIGJlIGRlY29tcHJlc3NlZC48L2RkPjxkZD48Y29kZT54PC9jb2RlPiAtIHggb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlIGludG8KLSB3aGljaCB0aGUgc291cmNlIGltYWdlIHNob3VsZCBiZSBkZWNvbXByZXNzZWQvZGVjb2RlZDwvZGQ+PGRkPjxjb2RlPnk8L2NvZGU+IC0geSBvZmZzZXQgKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgZGVzdGluYXRpb24gaW1hZ2UgaW50bwotIHdoaWNoIHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIGJlIGRlY29tcHJlc3NlZC9kZWNvZGVkPC9kZD48ZGQ+PGNvZGU+ZGVzaXJlZFdpZHRoPC9jb2RlPiAtIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIHRoaXMKLSBzcGVjaWZpZXMgdGhlIGRlc2lyZWQgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSAob3IKLSBpbWFnZSByZWdpb24uKSAgSWYgdGhlIGRlc2lyZWQgZGVzdGluYXRpb24gaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50Ci0gdGhhbiB0aGUgc291cmNlIGltYWdlIGRpbWVuc2lvbnMsIHRoZW4gVHVyYm9KUEVHIHdpbGwgdXNlIHNjYWxpbmcgaW4gdGhlCi0gSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdAotIHdpdGhpbiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZwotIGl0IHRvIHRoZSB3aWR0aCBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gb3RoZXIgd29yZHMsIHRoZSB3aWR0aCB3aWxsIG5vdCBiZQotIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuKSAgVGhpcyBwYXJhbWV0ZXIgaXMKLSBpZ25vcmVkIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBZVVYgaW1hZ2UuPC9kZD48ZGQ+PGNvZGU+c3RyaWRlPC9jb2RlPiAtIHBpeGVscyBwZXIgbGluZSBvZiB0aGUgZGVzdGluYXRpb24gaW1hZ2UuICBOb3JtYWxseSwgdGhpcwotIHNob3VsZCBiZSBzZXQgdG8gPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+LCBidXQgeW91IGNhbiB1c2UgdGhpcyB0bywgZm9yCi0gaW5zdGFuY2UsIGRlY29tcHJlc3MgdGhlIEpQRUcgaW1hZ2UgaW50byBhIHJlZ2lvbiBvZiBhIGxhcmdlciBpbWFnZS4KLSBOT1RFOiBpZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiA8Y29kZT5zY2FsZWRXaWR0aDwvY29kZT4KLSBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIDxjb2RlPgotIHNjYWxpbmdGYWN0b3IuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwjZ2V0U2NhbGVkKGludCkiPjxjb2RlPmdldFNjYWxlZDwvY29kZT48L2E+KGpwZWdXaWR0aCkKLSA8L2NvZGU+IG9yIGJ5IGNhbGxpbmcgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRTY2FsZWRXaWR0aChpbnQsJTIwaW50KSI+PGNvZGU+Z2V0U2NhbGVkV2lkdGgoaW50LCBpbnQpPC9jb2RlPjwvYT4uICBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEKLSBZVVYgaW1hZ2UsIHRoZW4gPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+IGlzIHRoZSB3aWR0aCBvZiB0aGUgWVVWIGltYWdlLgotIFNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gMCBpcyB0aGUgZXF1aXZhbGVudCBvZiBzZXR0aW5nIGl0IHRvCi0gPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+LjwvZGQ+PGRkPjxjb2RlPmRlc2lyZWRIZWlnaHQ8L2NvZGU+IC0gSWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhIEpQRUcgaW1hZ2UsIHRoZW4gdGhpcwotIHNwZWNpZmllcyB0aGUgZGVzaXJlZCBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSAob3IKLSBpbWFnZSByZWdpb24uKSAgSWYgdGhlIGRlc2lyZWQgZGVzdGluYXRpb24gaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50Ci0gdGhhbiB0aGUgc291cmNlIGltYWdlIGRpbWVuc2lvbnMsIHRoZW4gVHVyYm9KUEVHIHdpbGwgdXNlIHNjYWxpbmcgaW4gdGhlCi0gSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdAotIHdpdGhpbiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZwotIGl0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgaGVpZ2h0IHdpbGwgbm90IGJlCi0gY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pICBUaGlzIHBhcmFtZXRlciBpcwotIGlnbm9yZWQgaWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZS48L2RkPjxkZD48Y29kZT5waXhlbEZvcm1hdDwvY29kZT4gLSBwaXhlbCBmb3JtYXQgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSAob25lIG9mCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNQRl9SR0IiPjxjb2RlPlRKLlBGXyo8L2NvZGU+PC9hPik8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3MoamF2YS5hd3QuaW1hZ2UuQnVmZmVyZWRJbWFnZSwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZGVjb21wcmVzczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtkZWNvbXByZXNzKGphdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UmbmJzcDtkc3RJbWFnZSwKLSAgICAgICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpCi0gICAgICAgICAgICAgICAgdGhyb3dzIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2Ugb3IgZGVjb2RlIHRoZSBZVVYgc291cmNlIGltYWdlIGFzc29jaWF0ZWQKLSB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBvdXRwdXQgYSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZSB0bwotIHRoZSBnaXZlbiA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+ZHN0SW1hZ2U8L2NvZGU+IC0gYSA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZSB0aGF0IHdpbGwgcmVjZWl2ZQotIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZS4gIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuCi0gdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIDxjb2RlPkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+IGluc3RhbmNlIG11c3QgbWF0Y2gKLSBvbmUgb2YgdGhlIHNjYWxlZCBpbWFnZSBzaXplcyB0aGF0IFR1cmJvSlBFRyBpcyBjYXBhYmxlIG9mIGdlbmVyYXRpbmcgZnJvbQotIHRoZSBKUEVHIGltYWdlLiAgSWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZSwgdGhlbiB0aGUgd2lkdGggYW5kCi0gaGVpZ2h0IG9mIHRoZSA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZSBtdXN0IG1hdGNoIHRoZSB3aWR0aCBhbmQKLSBoZWlnaHQgb2YgdGhlIFlVViBpbWFnZS48L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImRlY29tcHJlc3MoaW50LCBpbnQsIGludCwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+ZGVjb21wcmVzczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2phdmEuYXd0LmltYWdlLkJ1ZmZlcmVkSW1hZ2UmbmJzcDtkZWNvbXByZXNzKGludCZuYnNwO2Rlc2lyZWRXaWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7ZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50Jm5ic3A7YnVmZmVyZWRJbWFnZVR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCZuYnNwO2ZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4KLSBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQvZGVjb2RlZCBpbWFnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+ZGVzaXJlZFdpZHRoPC9jb2RlPiAtIHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+ZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCk8L2NvZGU+PC9hPiBmb3IKLSBkZXNjcmlwdGlvbjwvZGQ+PGRkPjxjb2RlPmRlc2lyZWRIZWlnaHQ8L2NvZGU+IC0gc2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj48Y29kZT5kZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IGZvcgotIGRlc2NyaXB0aW9uPC9kZD48ZGQ+PGNvZGU+YnVmZmVyZWRJbWFnZVR5cGU8L2NvZGU+IC0gdGhlIGltYWdlIHR5cGUgb2YgdGhlIDxjb2RlPkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+Ci0gaW5zdGFuY2UgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKGZvciBpbnN0YW5jZSwKLSA8Y29kZT5CdWZmZXJlZEltYWdlLlRZUEVfSU5UX1JHQjwvY29kZT4pPC9kZD48ZGQ+PGNvZGU+ZmxhZ3M8L2NvZGU+IC0gdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQk9UVE9NVVAiPjxjb2RlPlRKLkZMQUdfKjwvY29kZT48L2E+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hIDxjb2RlPkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlCi0gZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UuPC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJjbG9zZSgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5jbG9zZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtjbG9zZSgpCi0gICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZyZWUgdGhlIG5hdGl2ZSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS48L2Rpdj4KLTxkbD4KLTxkdD48c3Ryb25nPlNwZWNpZmllZCBieTo8L3N0cm9uZz48L2R0PgotPGRkPjxjb2RlPmNsb3NlPC9jb2RlPiZuYnNwO2luIGludGVyZmFjZSZuYnNwOzxjb2RlPmphdmEuaW8uQ2xvc2VhYmxlPC9jb2RlPjwvZGQ+Ci08ZHQ+PHN0cm9uZz5TcGVjaWZpZWQgYnk6PC9zdHJvbmc+PC9kdD4KLTxkZD48Y29kZT5jbG9zZTwvY29kZT4mbmJzcDtpbiBpbnRlcmZhY2UmbmJzcDs8Y29kZT5qYXZhLmxhbmcuQXV0b0Nsb3NlYWJsZTwvY29kZT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImZpbmFsaXplKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5maW5hbGl6ZTwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO3ZvaWQmbmJzcDtmaW5hbGl6ZSgpCi0gICAgICAgICAgICAgICAgIHRocm93cyBqYXZhLmxhbmcuVGhyb3dhYmxlPC9wcmU+Ci08ZGw+Ci08ZHQ+PHN0cm9uZz5PdmVycmlkZXM6PC9zdHJvbmc+PC9kdD4KLTxkZD48Y29kZT5maW5hbGl6ZTwvY29kZT4mbmJzcDtpbiBjbGFzcyZuYnNwOzxjb2RlPmphdmEubGFuZy5PYmplY3Q8L2NvZGU+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+amF2YS5sYW5nLlRocm93YWJsZTwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkRlY29tcHJlc3Nvci5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX3N1bW1hcnkiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCBiL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwODgwNjYuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDI4NyArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPlRKRXhjZXB0aW9uPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlRKRXhjZXB0aW9uIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPk5leHQgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sP29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iVEpFeGNlcHRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGRpdj4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+U3VtbWFyeTombmJzcDs8L2xpPgotPGxpPk5lc3RlZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX3N1bW1hcnkiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuVGhyb3dhYmxlIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPk1ldGhvZDwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxkaXYgY2xhc3M9InN1YlRpdGxlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvZGl2PgotPGgyIHRpdGxlPSJDbGFzcyBUSkV4Y2VwdGlvbiIgY2xhc3M9InRpdGxlIj5DbGFzcyBUSkV4Y2VwdGlvbjwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5sYW5nLk9iamVjdDwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5qYXZhLmxhbmcuVGhyb3dhYmxlPC9saT4KLTxsaT4KLTx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgotPGxpPmphdmEubGFuZy5FeGNlcHRpb248L2xpPgotPGxpPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5pby5JT0V4Y2VwdGlvbjwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkV4Y2VwdGlvbjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08ZGw+Ci08ZHQ+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9kdD4KLTxkZD5qYXZhLmlvLlNlcmlhbGl6YWJsZTwvZGQ+Ci08L2RsPgotPGhyPgotPGJyPgotPHByZT5wdWJsaWMgY2xhc3MgPHNwYW4gY2xhc3M9InN0cm9uZyI+VEpFeGNlcHRpb248L3NwYW4+Ci1leHRlbmRzIGphdmEuaW8uSU9FeGNlcHRpb248L3ByZT4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL3NlcmlhbGl6ZWQtZm9ybS5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKRXhjZXB0aW9uIj5TZXJpYWxpemVkIEZvcm08L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1bW1hcnkiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJDb25zdHJ1Y3RvciBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGNvbnN0cnVjdG9ycywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkNvbnN0cnVjdG9yczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sI1RKRXhjZXB0aW9uKCkiPlRKRXhjZXB0aW9uPC9hPjwvc3Ryb25nPigpPC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sI1RKRXhjZXB0aW9uKGphdmEubGFuZy5TdHJpbmcpIj5USkV4Y2VwdGlvbjwvYT48L3N0cm9uZz4oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UpPC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sI1RKRXhjZXB0aW9uKGphdmEubGFuZy5TdHJpbmcsJTIwamF2YS5sYW5nLlRocm93YWJsZSkiPlRKRXhjZXB0aW9uPC9hPjwvc3Ryb25nPihqYXZhLmxhbmcuU3RyaW5nJm5ic3A7bWVzc2FnZSwKLSAgICAgICAgICAgamF2YS5sYW5nLlRocm93YWJsZSZuYnNwO2NhdXNlKTwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCNUSkV4Y2VwdGlvbihqYXZhLmxhbmcuVGhyb3dhYmxlKSI+VEpFeGNlcHRpb248L2E+PC9zdHJvbmc+KGphdmEubGFuZy5UaHJvd2FibGUmbmJzcDtjYXVzZSk8L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBTdW1tYXJ5PC9oMz4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5UaHJvd2FibGUiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MmbmJzcDtqYXZhLmxhbmcuVGhyb3dhYmxlPC9oMz4KLTxjb2RlPmFkZFN1cHByZXNzZWQsIGZpbGxJblN0YWNrVHJhY2UsIGdldENhdXNlLCBnZXRMb2NhbGl6ZWRNZXNzYWdlLCBnZXRNZXNzYWdlLCBnZXRTdGFja1RyYWNlLCBnZXRTdXBwcmVzc2VkLCBpbml0Q2F1c2UsIHByaW50U3RhY2tUcmFjZSwgcHJpbnRTdGFja1RyYWNlLCBwcmludFN0YWNrVHJhY2UsIHNldFN0YWNrVHJhY2UsIHRvU3RyaW5nPC9jb2RlPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEubGFuZy5PYmplY3Q8L2gzPgotPGNvZGU+Y2xvbmUsIGVxdWFscywgZmluYWxpemUsIGdldENsYXNzLCBoYXNoQ29kZSwgbm90aWZ5LCBub3RpZnlBbGwsIHdhaXQsIHdhaXQsIHdhaXQ8L2NvZGU+PC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJkZXRhaWxzIj4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIERldGFpbDwvaDM+Ci08YSBuYW1lPSJUSkV4Y2VwdGlvbigpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USkV4Y2VwdGlvbjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKRXhjZXB0aW9uKCk8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iVEpFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZywgamF2YS5sYW5nLlRocm93YWJsZSkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKRXhjZXB0aW9uPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UsCi0gICAgICAgICAgIGphdmEubGFuZy5UaHJvd2FibGUmbmJzcDtjYXVzZSk8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iVEpFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZykiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKRXhjZXB0aW9uPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpFeGNlcHRpb24oamF2YS5sYW5nLlN0cmluZyZuYnNwO21lc3NhZ2UpPC9wcmU+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKRXhjZXB0aW9uKGphdmEubGFuZy5UaHJvd2FibGUpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+VEpFeGNlcHRpb248L2g0PgotPHByZT5wdWJsaWMmbmJzcDtUSkV4Y2VwdGlvbihqYXZhLmxhbmcuVGhyb3dhYmxlJm5ic3A7Y2F1c2UpPC9wcmU+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlByZXYgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkV4Y2VwdGlvbi5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5UaHJvd2FibGUiPk1ldGhvZDwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+RGV0YWlsOiZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3JfZGV0YWlsIj5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+TWV0aG9kPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCBiL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQ2ODgyLi4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMzMzICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+VEpTY2FsaW5nRmFjdG9yPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IlRKU2NhbGluZ0ZhY3RvciI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+UHJldiBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPk5leHQgQ2xhc3M8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sP29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKU2NhbGluZ0ZhY3Rvci5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX3RvcCIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+RmllbGQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2Rfc3VtbWFyeSI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5EZXRhaWw6Jm5ic3A7PC9saT4KLTxsaT5GaWVsZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxkaXYgY2xhc3M9InN1YlRpdGxlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvZGl2PgotPGgyIHRpdGxlPSJDbGFzcyBUSlNjYWxpbmdGYWN0b3IiIGNsYXNzPSJ0aXRsZSI+Q2xhc3MgVEpTY2FsaW5nRmFjdG9yPC9oMj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudENvbnRhaW5lciI+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5qYXZhLmxhbmcuT2JqZWN0PC9saT4KLTxsaT4KLTx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgotPGxpPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKU2NhbGluZ0ZhY3RvcjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5USlNjYWxpbmdGYWN0b3I8L3NwYW4+Ci1leHRlbmRzIGphdmEubGFuZy5PYmplY3Q8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5GcmFjdGlvbmFsIHNjYWxpbmcgZmFjdG9yPC9kaXY+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3VtbWFyeSI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgU3VtbWFyeTwvaDM+Ci08dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNvbnN0cnVjdG9yIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY29uc3RydWN0b3JzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+Q29uc3RydWN0b3JzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbE9uZSIgc2NvcGU9ImNvbCI+Q29uc3RydWN0b3IgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI1RKU2NhbGluZ0ZhY3RvcihpbnQsJTIwaW50KSI+VEpTY2FsaW5nRmFjdG9yPC9hPjwvc3Ryb25nPihpbnQmbmJzcDtudW0sCi0gICAgICAgICAgICAgICBpbnQmbmJzcDtkZW5vbSk8L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iTWV0aG9kIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgbWV0aG9kcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPk1ldGhvZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+TWV0aG9kIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5ib29sZWFuPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwjZXF1YWxzKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKU2NhbGluZ0ZhY3RvcikiPmVxdWFsczwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpTY2FsaW5nRmFjdG9yPC9hPiZuYnNwO290aGVyKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgYW5kCi0gPGNvZGU+b3RoZXI8L2NvZGU+IGhhdmUgdGhlIHNhbWUgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvci48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCNnZXREZW5vbSgpIj5nZXREZW5vbTwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGRlbm9taW5hdG9yPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwjZ2V0TnVtKCkiPmdldE51bTwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIG51bWVyYXRvcjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2dldFNjYWxlZChpbnQpIj5nZXRTY2FsZWQ8L2E+PC9zdHJvbmc+KGludCZuYnNwO2RpbWVuc2lvbik8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgc2NhbGVkIHZhbHVlIG9mIDxjb2RlPmRpbWVuc2lvbjwvY29kZT4uPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ym9vbGVhbjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sI2lzT25lKCkiPmlzT25lPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBpbnN0YW5jZSBpcyBlcXVhbCB0bwotIDEvMS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MmbmJzcDtqYXZhLmxhbmcuT2JqZWN0PC9oMz4KLTxjb2RlPmNsb25lLCBlcXVhbHMsIGZpbmFsaXplLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgRGV0YWlsPC9oMz4KLTxhIG5hbWU9IlRKU2NhbGluZ0ZhY3RvcihpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USlNjYWxpbmdGYWN0b3I8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtUSlNjYWxpbmdGYWN0b3IoaW50Jm5ic3A7bnVtLAotICAgICAgICAgICAgICAgaW50Jm5ic3A7ZGVub20pPC9wcmU+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBEZXRhaWw8L2gzPgotPGEgbmFtZT0iZ2V0TnVtKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldE51bTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldE51bSgpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBudW1lcmF0b3I8L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+bnVtZXJhdG9yPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXREZW5vbSgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXREZW5vbTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldERlbm9tKCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIGRlbm9taW5hdG9yPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmRlbm9taW5hdG9yPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXRTY2FsZWQoaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0U2NhbGVkPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Z2V0U2NhbGVkKGludCZuYnNwO2RpbWVuc2lvbik8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzY2FsZWQgdmFsdWUgb2YgPGNvZGU+ZGltZW5zaW9uPC9jb2RlPi4gIFRoaXMgZnVuY3Rpb24KLSBwZXJmb3JtcyB0aGUgaW50ZWdlciBlcXVpdmFsZW50IG9mCi0gPGNvZGU+Y2VpbChkaW1lbnNpb24gKiBzY2FsaW5nRmFjdG9yKTwvY29kZT4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBzY2FsZWQgdmFsdWUgb2YgPGNvZGU+ZGltZW5zaW9uPC9jb2RlPi48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImVxdWFscyhvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlNjYWxpbmdGYWN0b3IpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5lcXVhbHM8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtib29sZWFuJm5ic3A7ZXF1YWxzKDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKU2NhbGluZ0ZhY3RvcjwvYT4mbmJzcDtvdGhlcik8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgYW5kCi0gPGNvZGU+b3RoZXI8L2NvZGU+IGhhdmUgdGhlIHNhbWUgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvci48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBpbnN0YW5jZSBhbmQKLSA8Y29kZT5vdGhlcjwvY29kZT4gaGF2ZSB0aGUgc2FtZSBudW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yLjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iaXNPbmUoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmlzT25lPC9oND4KLTxwcmU+cHVibGljJm5ic3A7Ym9vbGVhbiZuYnNwO2lzT25lKCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgaXMgZXF1YWwgdG8KLSAxLzEuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgaXMgZXF1YWwgdG8KLSAxLzEuPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImJvdHRvbU5hdiI+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iVEpTY2FsaW5nRmFjdG9yLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT5OZXN0ZWQmbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT5GaWVsZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y2NWJkMi4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzA2ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+VEpUcmFuc2Zvcm08L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iVEpUcmFuc2Zvcm0iOwotICAgIH0KLS8vLS0+Ci08L3NjcmlwdD4KLTxub3NjcmlwdD4KLTxkaXY+SmF2YVNjcmlwdCBpcyBkaXNhYmxlZCBvbiB5b3VyIGJyb3dzZXIuPC9kaXY+Ci08L25vc2NyaXB0PgotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPGRpdiBjbGFzcz0idG9wTmF2Ij48YSBuYW1lPSJuYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKVHJhbnNmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbmVzdGVkX2NsYXNzZXNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRCI+TmVzdGVkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9zdW1tYXJ5Ij5GaWVsZDwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0LlJlY3RhbmdsZSI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5EZXRhaWw6Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjZmllbGRfZGV0YWlsIj5GaWVsZDwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3JfZGV0YWlsIj5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+TWV0aG9kPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotPGRpdiBjbGFzcz0ic3ViVGl0bGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9kaXY+Ci08aDIgdGl0bGU9IkNsYXNzIFRKVHJhbnNmb3JtIiBjbGFzcz0idGl0bGUiPkNsYXNzIFRKVHJhbnNmb3JtPC9oMj4KLTwvZGl2PgotPGRpdiBjbGFzcz0iY29udGVudENvbnRhaW5lciI+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5qYXZhLmxhbmcuT2JqZWN0PC9saT4KLTxsaT4KLTx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgotPGxpPmphdmEuYXd0Lmdlb20uUmVjdGFuZ3VsYXJTaGFwZTwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5qYXZhLmF3dC5nZW9tLlJlY3RhbmdsZTJEPC9saT4KLTxsaT4KLTx1bCBjbGFzcz0iaW5oZXJpdGFuY2UiPgotPGxpPmphdmEuYXd0LlJlY3RhbmdsZTwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08ZGw+Ci08ZHQ+QWxsIEltcGxlbWVudGVkIEludGVyZmFjZXM6PC9kdD4KLTxkZD5qYXZhLmF3dC5TaGFwZSwgamF2YS5pby5TZXJpYWxpemFibGUsIGphdmEubGFuZy5DbG9uZWFibGU8L2RkPgotPC9kbD4KLTxocj4KLTxicj4KLTxwcmU+cHVibGljIGNsYXNzIDxzcGFuIGNsYXNzPSJzdHJvbmciPlRKVHJhbnNmb3JtPC9zcGFuPgotZXh0ZW5kcyBqYXZhLmF3dC5SZWN0YW5nbGU8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Mb3NzbGVzcyB0cmFuc2Zvcm0gcGFyYW1ldGVyczwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vc2VyaWFsaXplZC1mb3JtLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0iPlNlcmlhbGl6ZWQgRm9ybTwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3VtbWFyeSI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08IS0tID09PT09PT09IE5FU1RFRCBDTEFTUyBTVU1NQVJZID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im5lc3RlZF9jbGFzc19zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5OZXN0ZWQgQ2xhc3MgU3VtbWFyeTwvaDM+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibmVzdGVkX2NsYXNzZXNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TmVzdGVkIGNsYXNzZXMvaW50ZXJmYWNlcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEuYXd0Lmdlb20uUmVjdGFuZ2xlMkQ8L2gzPgotPGNvZGU+amF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRC5Eb3VibGUsIGphdmEuYXd0Lmdlb20uUmVjdGFuZ2xlMkQuRmxvYXQ8L2NvZGU+PC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJmaWVsZF9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5GaWVsZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRmllbGQgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBmaWVsZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5GaWVsZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RmllbGQgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ3VzdG9tRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ3VzdG9tRmlsdGVyPC9hPjwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjY2YiPmNmPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DdXN0b20gZmlsdGVyIGluc3RhbmNlPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjTlVNT1AiPk5VTU9QPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgbnVtYmVyIG9mIGxvc3NsZXNzIHRyYW5zZm9ybSBvcGVyYXRpb25zPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNvcCI+b3A8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRyYW5zZm9ybSBvcGVyYXRpb24gKG9uZSBvZiA8Y29kZT5PUF8qPC9jb2RlPik8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9IRkxJUCI+T1BfSEZMSVA8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkZsaXAgKG1pcnJvcikgaW1hZ2UgaG9yaXpvbnRhbGx5LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX05PTkUiPk9QX05PTkU8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRvIG5vdCB0cmFuc2Zvcm0gdGhlIHBvc2l0aW9uIG9mIHRoZSBpbWFnZSBwaXhlbHMuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfUk9UMTgwIj5PUF9ST1QxODA8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJvdGF0ZSBpbWFnZSAxODAgZGVncmVlcy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9ST1QyNzAiPk9QX1JPVDI3MDwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Um90YXRlIGltYWdlIGNvdW50ZXItY2xvY2t3aXNlIGJ5IDkwIGRlZ3JlZXMuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfUk9UOTAiPk9QX1JPVDkwPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Sb3RhdGUgaW1hZ2UgY2xvY2t3aXNlIGJ5IDkwIGRlZ3JlZXMuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BfVFJBTlNQT1NFIj5PUF9UUkFOU1BPU0U8L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRyYW5zcG9zZSBpbWFnZSAoZmxpcC9taXJyb3IgYWxvbmcgdXBwZXIgbGVmdCB0byBsb3dlciByaWdodCBheGlzKS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUF9UUkFOU1ZFUlNFIj5PUF9UUkFOU1ZFUlNFPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UcmFuc3ZlcnNlIHRyYW5zcG9zZSBpbWFnZSAoZmxpcC9taXJyb3IgYWxvbmcgdXBwZXIgcmlnaHQgdG8gbG93ZXIgbGVmdAotIGF4aXMpLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QX1ZGTElQIj5PUF9WRkxJUDwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RmxpcCAobWlycm9yKSBpbWFnZSB2ZXJ0aWNhbGx5LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9DUk9QIj5PUFRfQ1JPUDwvYT48L3N0cm9uZz48L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VGhpcyBvcHRpb24gd2lsbCBlbmFibGUgbG9zc2xlc3MgY3JvcHBpbmcuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX0dSQVkiPk9QVF9HUkFZPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIGRpc2NhcmQgdGhlIGNvbG9yIGRhdGEgaW4gdGhlIGlucHV0IGltYWdlIGFuZCBwcm9kdWNlCi0gYSBncmF5c2NhbGUgb3V0cHV0IGltYWdlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnN0YXRpYyBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9OT09VVFBVVCI+T1BUX05PT1VUUFVUPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIHByZXZlbnQgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShieXRlW11bXSwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPjxjb2RlPlRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCk8L2NvZGU+PC9hPiBmcm9tIG91dHB1dHRpbmcgYSBKUEVHIGltYWdlIGZvciB0aGlzCi0gcGFydGljdWxhciB0cmFuc2Zvcm0uPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+c3RhdGljIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPk9QVF9QRVJGRUNUPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIGNhdXNlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCN0cmFuc2Zvcm0oYnl0ZVtdW10sJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwlMjBpbnQpIj48Y29kZT5USlRyYW5zZm9ybWVyLnRyYW5zZm9ybSgpPC9jb2RlPjwvYT4gdG8gdGhyb3cgYW4gZXhjZXB0aW9uIGlmIHRoZSB0cmFuc2Zvcm0gaXMgbm90Ci0gcGVyZmVjdC48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5zdGF0aWMgaW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNPUFRfVFJJTSI+T1BUX1RSSU08L2E+PC9zdHJvbmc+PC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgZGlzY2FyZCBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIHRoYXQgY2Fubm90IGJlCi0gdHJhbnNmb3JtZWQuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNvcHRpb25zIj5vcHRpb25zPC9hPjwvc3Ryb25nPjwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UcmFuc2Zvcm0gb3B0aW9ucyAoYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiA8Y29kZT5PUFRfKjwvY29kZT4pPC9kaXY+Ci08L3RkPgotPC90cj4KLTwvdGFibGU+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iZmllbGRzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0LlJlY3RhbmdsZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+RmllbGRzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7amF2YS5hd3QuUmVjdGFuZ2xlPC9oMz4KLTxjb2RlPmhlaWdodCwgd2lkdGgsIHgsIHk8L2NvZGU+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iZmllbGRzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0Lmdlb20uUmVjdGFuZ2xlMkQiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkZpZWxkcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEuYXd0Lmdlb20uUmVjdGFuZ2xlMkQ8L2gzPgotPGNvZGU+T1VUX0JPVFRPTSwgT1VUX0xFRlQsIE9VVF9SSUdIVCwgT1VUX1RPUDwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PSBDT05TVFJVQ1RPUiBTVU1NQVJZID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIFN1bW1hcnk8L2gzPgotPHRhYmxlIGNsYXNzPSJvdmVydmlld1N1bW1hcnkiIGJvcmRlcj0iMCIgY2VsbHBhZGRpbmc9IjMiIGNlbGxzcGFjaW5nPSIwIiBzdW1tYXJ5PSJDb25zdHJ1Y3RvciBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGNvbnN0cnVjdG9ycywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkNvbnN0cnVjdG9yczwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xPbmUiIHNjb3BlPSJjb2wiPkNvbnN0cnVjdG9yIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI1RKVHJhbnNmb3JtKCkiPlRKVHJhbnNmb3JtPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCNUSlRyYW5zZm9ybShpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkN1c3RvbUZpbHRlcikiPlRKVHJhbnNmb3JtPC9hPjwvc3Ryb25nPihpbnQmbmJzcDt4LAotICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICBpbnQmbmJzcDt3LAotICAgICAgICAgICBpbnQmbmJzcDtoLAotICAgICAgICAgICBpbnQmbmJzcDtvcCwKLSAgICAgICAgICAgaW50Jm5ic3A7b3B0aW9ucywKLSAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDdXN0b21GaWx0ZXI8L2E+Jm5ic3A7Y2YpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI1RKVHJhbnNmb3JtKGphdmEuYXd0LlJlY3RhbmdsZSwlMjBpbnQsJTIwaW50LCUyMG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ3VzdG9tRmlsdGVyKSI+VEpUcmFuc2Zvcm08L2E+PC9zdHJvbmc+KGphdmEuYXd0LlJlY3RhbmdsZSZuYnNwO3IsCi0gICAgICAgICAgIGludCZuYnNwO29wLAotICAgICAgICAgICBpbnQmbmJzcDtvcHRpb25zLAotICAgICAgICAgICA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkN1c3RvbUZpbHRlcjwvYT4mbmJzcDtjZik8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IGxvc3NsZXNzIHRyYW5zZm9ybSBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBTdW1tYXJ5PC9oMz4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0LlJlY3RhbmdsZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEuYXd0LlJlY3RhbmdsZTwvaDM+Ci08Y29kZT5hZGQsIGFkZCwgYWRkLCBjb250YWlucywgY29udGFpbnMsIGNvbnRhaW5zLCBjb250YWlucywgY3JlYXRlSW50ZXJzZWN0aW9uLCBjcmVhdGVVbmlvbiwgZXF1YWxzLCBnZXRCb3VuZHMsIGdldEJvdW5kczJELCBnZXRIZWlnaHQsIGdldExvY2F0aW9uLCBnZXRTaXplLCBnZXRXaWR0aCwgZ2V0WCwgZ2V0WSwgZ3JvdywgaW5zaWRlLCBpbnRlcnNlY3Rpb24sIGludGVyc2VjdHMsIGlzRW1wdHksIG1vdmUsIG91dGNvZGUsIHJlc2hhcGUsIHJlc2l6ZSwgc2V0Qm91bmRzLCBzZXRCb3VuZHMsIHNldExvY2F0aW9uLCBzZXRMb2NhdGlvbiwgc2V0UmVjdCwgc2V0U2l6ZSwgc2V0U2l6ZSwgdG9TdHJpbmcsIHRyYW5zbGF0ZSwgdW5pb248L2NvZGU+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmF3dC5nZW9tLlJlY3RhbmdsZTJEIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7amF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRDwvaDM+Ci08Y29kZT5hZGQsIGFkZCwgYWRkLCBjb250YWlucywgY29udGFpbnMsIGdldFBhdGhJdGVyYXRvciwgZ2V0UGF0aEl0ZXJhdG9yLCBoYXNoQ29kZSwgaW50ZXJzZWN0LCBpbnRlcnNlY3RzLCBpbnRlcnNlY3RzTGluZSwgaW50ZXJzZWN0c0xpbmUsIG91dGNvZGUsIHNldEZyYW1lLCBzZXRSZWN0LCB1bmlvbjwvY29kZT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0Lmdlb20uUmVjdGFuZ3VsYXJTaGFwZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEuYXd0Lmdlb20uUmVjdGFuZ3VsYXJTaGFwZTwvaDM+Ci08Y29kZT5jbG9uZSwgY29udGFpbnMsIGNvbnRhaW5zLCBnZXRDZW50ZXJYLCBnZXRDZW50ZXJZLCBnZXRGcmFtZSwgZ2V0TWF4WCwgZ2V0TWF4WSwgZ2V0TWluWCwgZ2V0TWluWSwgaW50ZXJzZWN0cywgc2V0RnJhbWUsIHNldEZyYW1lLCBzZXRGcmFtZUZyb21DZW50ZXIsIHNldEZyYW1lRnJvbUNlbnRlciwgc2V0RnJhbWVGcm9tRGlhZ29uYWwsIHNldEZyYW1lRnJvbURpYWdvbmFsPC9jb2RlPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5sYW5nLk9iamVjdCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+TWV0aG9kcyBpbmhlcml0ZWQgZnJvbSBjbGFzcyZuYnNwO2phdmEubGFuZy5PYmplY3Q8L2gzPgotPGNvZGU+ZmluYWxpemUsIGdldENsYXNzLCBub3RpZnksIG5vdGlmeUFsbCwgd2FpdCwgd2FpdCwgd2FpdDwvY29kZT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0LlNoYXBlIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGludGVyZmFjZSZuYnNwO2phdmEuYXd0LlNoYXBlPC9oMz4KLTxjb2RlPmNvbnRhaW5zLCBjb250YWlucywgY29udGFpbnMsIGNvbnRhaW5zLCBnZXRQYXRoSXRlcmF0b3IsIGdldFBhdGhJdGVyYXRvciwgaW50ZXJzZWN0cywgaW50ZXJzZWN0czwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+RmllbGQgRGV0YWlsPC9oMz4KLTxhIG5hbWU9Ik5VTU9QIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5OVU1PUDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgTlVNT1A8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGUgbnVtYmVyIG9mIGxvc3NsZXNzIHRyYW5zZm9ybSBvcGVyYXRpb25zPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5OVU1PUCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BfTk9ORSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+T1BfTk9ORTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgT1BfTk9ORTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkRvIG5vdCB0cmFuc2Zvcm0gdGhlIHBvc2l0aW9uIG9mIHRoZSBpbWFnZSBwaXhlbHMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUF9OT05FIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJPUF9IRkxJUCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+T1BfSEZMSVA8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IE9QX0hGTElQPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+RmxpcCAobWlycm9yKSBpbWFnZSBob3Jpem9udGFsbHkuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUKLSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBvbiB0aGUgcmlnaHQgZWRnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPjxjb2RlPk9QVF9QRVJGRUNUPC9jb2RlPjwvYT4sIAotPGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfSEZMSVAiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9Ik9QX1ZGTElQIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5PUF9WRkxJUDwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgT1BfVkZMSVA8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5GbGlwIChtaXJyb3IpIGltYWdlIHZlcnRpY2FsbHkuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlCi0gYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBvbiB0aGUgYm90dG9tIGVkZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9QRVJGRUNUIj48Y29kZT5PUFRfUEVSRkVDVDwvY29kZT48L2E+LCAKLTxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QX1ZGTElQIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJPUF9UUkFOU1BPU0UiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk9QX1RSQU5TUE9TRTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgT1BfVFJBTlNQT1NFPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnNwb3NlIGltYWdlIChmbGlwL21pcnJvciBhbG9uZyB1cHBlciBsZWZ0IHRvIGxvd2VyIHJpZ2h0IGF4aXMpLiAgVGhpcwotIHRyYW5zZm9ybSBpcyBhbHdheXMgcGVyZmVjdC48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPjxjb2RlPk9QVF9QRVJGRUNUPC9jb2RlPjwvYT4sIAotPGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfVFJBTlNQT1NFIj5Db25zdGFudCBGaWVsZCBWYWx1ZXM8L2E+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJPUF9UUkFOU1ZFUlNFIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5PUF9UUkFOU1ZFUlNFPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUF9UUkFOU1ZFUlNFPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnN2ZXJzZSB0cmFuc3Bvc2UgaW1hZ2UgKGZsaXAvbWlycm9yIGFsb25nIHVwcGVyIHJpZ2h0IHRvIGxvd2VyIGxlZnQKLSBheGlzKS4gIFRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdCBpZiB0aGVyZSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBpbgotIHRoZSBpbWFnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPjxjb2RlPk9QVF9QRVJGRUNUPC9jb2RlPjwvYT4sIAotPGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfVFJBTlNWRVJTRSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BfUk9UOTAiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk9QX1JPVDkwPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUF9ST1Q5MDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJvdGF0ZSBpbWFnZSBjbG9ja3dpc2UgYnkgOTAgZGVncmVlcy4gIFRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdCBpZgotIHRoZXJlIGFyZSBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIG9uIHRoZSBib3R0b20gZWRnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjT1BUX1BFUkZFQ1QiPjxjb2RlPk9QVF9QRVJGRUNUPC9jb2RlPjwvYT4sIAotPGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BfUk9UOTAiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9Ik9QX1JPVDE4MCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+T1BfUk9UMTgwPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUF9ST1QxODA8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Sb3RhdGUgaW1hZ2UgMTgwIGRlZ3JlZXMuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlIGFueQotIHBhcnRpYWwgTUNVIGJsb2NrcyBpbiB0aGUgaW1hZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9QRVJGRUNUIj48Y29kZT5PUFRfUEVSRkVDVDwvY29kZT48L2E+LCAKLTxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QX1JPVDE4MCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BfUk9UMjcwIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5PUF9ST1QyNzA8L2g0PgotPHByZT5wdWJsaWMgc3RhdGljIGZpbmFsJm5ic3A7aW50IE9QX1JPVDI3MDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJvdGF0ZSBpbWFnZSBjb3VudGVyLWNsb2Nrd2lzZSBieSA5MCBkZWdyZWVzLiAgVGhpcyB0cmFuc2Zvcm0gaXMgaW1wZXJmZWN0Ci0gaWYgdGhlcmUgYXJlIGFueSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlIHJpZ2h0IGVkZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sI09QVF9QRVJGRUNUIj48Y29kZT5PUFRfUEVSRkVDVDwvY29kZT48L2E+LCAKLTxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QX1JPVDI3MCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BUX1BFUkZFQ1QiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk9QVF9QRVJGRUNUPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUFRfUEVSRkVDVDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgY2F1c2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShieXRlW11bXSwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPjxjb2RlPlRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCk8L2NvZGU+PC9hPiB0byB0aHJvdyBhbiBleGNlcHRpb24gaWYgdGhlIHRyYW5zZm9ybSBpcyBub3QKLSBwZXJmZWN0LiAgTG9zc2xlc3MgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIE1DVSBibG9ja3MsIHdob3NlIHNpemUgZGVwZW5kcyBvbgotIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkLiAgSWYgdGhlIGltYWdlJ3Mgd2lkdGggb3IgaGVpZ2h0Ci0gaXMgbm90IGV2ZW5seSBkaXZpc2libGUgYnkgdGhlIE1DVSBibG9jayBzaXplIChzZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNnZXRNQ1VXaWR0aChpbnQpIj48Y29kZT5USi5nZXRNQ1VXaWR0aChpbnQpPC9jb2RlPjwvYT4KLSBhbmQgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNnZXRNQ1VIZWlnaHQoaW50KSI+PGNvZGU+VEouZ2V0TUNVSGVpZ2h0KGludCk8L2NvZGU+PC9hPiksIHRoZW4gdGhlcmUgd2lsbCBiZSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlCi0gcmlnaHQgYW5kL29yIGJvdHRvbSBlZGdlcy4gICBJdCBpcyBub3QgcG9zc2libGUgdG8gbW92ZSB0aGVzZSBwYXJ0aWFsIE1DVQotIGJsb2NrcyB0byB0aGUgdG9wIG9yIGxlZnQgb2YgdGhlIGltYWdlLCBzbyBhbnkgdHJhbnNmb3JtIHRoYXQgd291bGQKLSByZXF1aXJlIHRoYXQgaXMgImltcGVyZmVjdC4iICBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGFueQotIHBhcnRpYWwgTUNVIGJsb2NrcyB0aGF0IGNhbm5vdCBiZSB0cmFuc2Zvcm1lZCB3aWxsIGJlIGxlZnQgaW4gcGxhY2UsIHdoaWNoCi0gd2lsbCBjcmVhdGUgb2RkLWxvb2tpbmcgc3RyaXBzIG9uIHRoZSByaWdodCBvciBib3R0b20gZWRnZSBvZiB0aGUgaW1hZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUFRfUEVSRkVDVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BUX1RSSU0iPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk9QVF9UUklNPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUFRfVFJJTTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgZGlzY2FyZCBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIHRoYXQgY2Fubm90IGJlCi0gdHJhbnNmb3JtZWQuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlNlZSBBbHNvOjwvc3Bhbj48L2R0PjxkZD48YSBocmVmPSIuLi8uLi8uLi9jb25zdGFudC12YWx1ZXMuaHRtbCNvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybS5PUFRfVFJJTSI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iT1BUX0NST1AiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pk9QVF9DUk9QPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUFRfQ1JPUDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgb3B0aW9uIHdpbGwgZW5hYmxlIGxvc3NsZXNzIGNyb3BwaW5nLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BUX0NST1AiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9Ik9QVF9HUkFZIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5PUFRfR1JBWTwvaDQ+Ci08cHJlPnB1YmxpYyBzdGF0aWMgZmluYWwmbmJzcDtpbnQgT1BUX0dSQVk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIGRpc2NhcmQgdGhlIGNvbG9yIGRhdGEgaW4gdGhlIGlucHV0IGltYWdlIGFuZCBwcm9kdWNlCi0gYSBncmF5c2NhbGUgb3V0cHV0IGltYWdlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5TZWUgQWxzbzo8L3NwYW4+PC9kdD48ZGQ+PGEgaHJlZj0iLi4vLi4vLi4vY29uc3RhbnQtdmFsdWVzLmh0bWwjb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm0uT1BUX0dSQVkiPkNvbnN0YW50IEZpZWxkIFZhbHVlczwvYT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9Ik9QVF9OT09VVFBVVCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+T1BUX05PT1VUUFVUPC9oND4KLTxwcmU+cHVibGljIHN0YXRpYyBmaW5hbCZuYnNwO2ludCBPUFRfTk9PVVRQVVQ8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UaGlzIG9wdGlvbiB3aWxsIHByZXZlbnQgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShieXRlW11bXSwlMjBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPjxjb2RlPlRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCk8L2NvZGU+PC9hPiBmcm9tIG91dHB1dHRpbmcgYSBKUEVHIGltYWdlIGZvciB0aGlzCi0gcGFydGljdWxhciB0cmFuc2Zvcm0uICBUaGlzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBjdXN0b20KLSBmaWx0ZXIgdG8gY2FwdHVyZSB0aGUgdHJhbnNmb3JtZWQgRENUIGNvZWZmaWNpZW50cyB3aXRob3V0IHRyYW5zY29kaW5nCi0gdGhlbS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+U2VlIEFsc286PC9zcGFuPjwvZHQ+PGRkPjxhIGhyZWY9Ii4uLy4uLy4uL2NvbnN0YW50LXZhbHVlcy5odG1sI29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtLk9QVF9OT09VVFBVVCI+Q29uc3RhbnQgRmllbGQgVmFsdWVzPC9hPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ib3AiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pm9wPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50IG9wPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnNmb3JtIG9wZXJhdGlvbiAob25lIG9mIDxjb2RlPk9QXyo8L2NvZGU+KTwvZGl2PgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJvcHRpb25zIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5vcHRpb25zPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50IG9wdGlvbnM8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UcmFuc2Zvcm0gb3B0aW9ucyAoYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiA8Y29kZT5PUFRfKjwvY29kZT4pPC9kaXY+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImNmIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Y2Y8L2g0PgotPHByZT5wdWJsaWMmbmJzcDs8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkN1c3RvbUZpbHRlcjwvYT4gY2Y8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DdXN0b20gZmlsdGVyIGluc3RhbmNlPC9kaXY+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgRGV0YWlsPC9oMz4KLTxhIG5hbWU9IlRKVHJhbnNmb3JtKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKVHJhbnNmb3JtPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpUcmFuc2Zvcm0oKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2UuPC9kaXY+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKVHJhbnNmb3JtKGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ3VzdG9tRmlsdGVyKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+VEpUcmFuc2Zvcm08L2g0PgotPHByZT5wdWJsaWMmbmJzcDtUSlRyYW5zZm9ybShpbnQmbmJzcDt4LAotICAgICAgICAgICBpbnQmbmJzcDt5LAotICAgICAgICAgICBpbnQmbmJzcDt3LAotICAgICAgICAgICBpbnQmbmJzcDtoLAotICAgICAgICAgICBpbnQmbmJzcDtvcCwKLSAgICAgICAgICAgaW50Jm5ic3A7b3B0aW9ucywKLSAgICAgICAgICAgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDdXN0b21GaWx0ZXI8L2E+Jm5ic3A7Y2YpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IGxvc3NsZXNzIHRyYW5zZm9ybSBpbnN0YW5jZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT54PC9jb2RlPiAtIHRoZSBsZWZ0IGJvdW5kYXJ5IG9mIHRoZSBjcm9wcGluZyByZWdpb24uICBUaGlzIG11c3QgYmUgZXZlbmx5Ci0gZGl2aXNpYmxlIGJ5IHRoZSBNQ1UgYmxvY2sgd2lkdGggKHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2dldE1DVVdpZHRoKGludCkiPjxjb2RlPlRKLmdldE1DVVdpZHRoKGludCk8L2NvZGU+PC9hPik8L2RkPjxkZD48Y29kZT55PC9jb2RlPiAtIHRoZSB1cHBlciBib3VuZGFyeSBvZiB0aGUgY3JvcHBpbmcgcmVnaW9uLiAgVGhpcyBtdXN0IGJlIGV2ZW5seQotIGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIGhlaWdodCAoc2VlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjZ2V0TUNVSGVpZ2h0KGludCkiPjxjb2RlPlRKLmdldE1DVUhlaWdodChpbnQpPC9jb2RlPjwvYT4pPC9kZD48ZGQ+PGNvZGU+dzwvY29kZT4gLSB0aGUgd2lkdGggb2YgdGhlIGNyb3BwaW5nIHJlZ2lvbi4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZQotIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0byAod2lkdGggb2YgdGhlIHNvdXJjZSBKUEVHIGltYWdlIC0KLSA8Y29kZT54PC9jb2RlPikuPC9kZD48ZGQ+PGNvZGU+aDwvY29kZT4gLSB0aGUgaGVpZ2h0IG9mIHRoZSBjcm9wcGluZyByZWdpb24uICBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUKLSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gKGhlaWdodCBvZiB0aGUgc291cmNlIEpQRUcgaW1hZ2UgLQotIDxjb2RlPnk8L2NvZGU+KS48L2RkPjxkZD48Y29kZT5vcDwvY29kZT4gLSBvbmUgb2YgdGhlIHRyYW5zZm9ybSBvcGVyYXRpb25zICg8Y29kZT5PUF8qPC9jb2RlPik8L2RkPjxkZD48Y29kZT5vcHRpb25zPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSB0cmFuc2Zvcm0gb3B0aW9ucwotICg8Y29kZT5PUFRfKjwvY29kZT4pPC9kZD48ZGQ+PGNvZGU+Y2Y8L2NvZGU+IC0gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpDdXN0b21GaWx0ZXI8L2NvZGU+PC9hPiBpbnRlcmZhY2UsIG9yIG51bGwgaWYgbm8gY3VzdG9tIGZpbHRlciBpcyBuZWVkZWQ8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKVHJhbnNmb3JtKGphdmEuYXd0LlJlY3RhbmdsZSwgaW50LCBpbnQsIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKQ3VzdG9tRmlsdGVyKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PlRKVHJhbnNmb3JtPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpUcmFuc2Zvcm0oamF2YS5hd3QuUmVjdGFuZ2xlJm5ic3A7ciwKLSAgICAgICAgICAgaW50Jm5ic3A7b3AsCi0gICAgICAgICAgIGludCZuYnNwO29wdGlvbnMsCi0gICAgICAgICAgIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ3VzdG9tRmlsdGVyLmh0bWwiIHRpdGxlPSJpbnRlcmZhY2UgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKQ3VzdG9tRmlsdGVyPC9hPiZuYnNwO2NmKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyBsb3NzbGVzcyB0cmFuc2Zvcm0gaW5zdGFuY2Ugd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cjwvY29kZT4gLSBhIDxjb2RlPlJlY3RhbmdsZTwvY29kZT4gaW5zdGFuY2UgdGhhdCBzcGVjaWZpZXMgdGhlIGNyb3BwaW5nCi0gcmVnaW9uLiAgU2VlIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwjVEpUcmFuc2Zvcm0oaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpDdXN0b21GaWx0ZXIpIj48Y29kZT5USlRyYW5zZm9ybShpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBUSkN1c3RvbUZpbHRlcik8L2NvZGU+PC9hPiBmb3IgbW9yZQotIGRldGFpbC48L2RkPjxkZD48Y29kZT5vcDwvY29kZT4gLSBvbmUgb2YgdGhlIHRyYW5zZm9ybSBvcGVyYXRpb25zICg8Y29kZT5PUF8qPC9jb2RlPik8L2RkPjxkZD48Y29kZT5vcHRpb25zPC9jb2RlPiAtIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mIHRoZSB0cmFuc2Zvcm0gb3B0aW9ucwotICg8Y29kZT5PUFRfKjwvY29kZT4pPC9kZD48ZGQ+PGNvZGU+Y2Y8L2NvZGU+IC0gYW4gaW5zdGFuY2Ugb2YgYW4gb2JqZWN0IHRoYXQgaW1wbGVtZW50cyB0aGUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpDdXN0b21GaWx0ZXI8L2NvZGU+PC9hPiBpbnRlcmZhY2UsIG9yIG51bGwgaWYgbm8gY3VzdG9tIGZpbHRlciBpcyBuZWVkZWQ8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5OZXh0IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKVHJhbnNmb3JtLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxkaXY+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPlN1bW1hcnk6Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbmVzdGVkX2NsYXNzZXNfaW5oZXJpdGVkX2Zyb21fY2xhc3NfamF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRCI+TmVzdGVkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9zdW1tYXJ5Ij5GaWVsZDwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3Jfc3VtbWFyeSI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEuYXd0LlJlY3RhbmdsZSI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5EZXRhaWw6Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjZmllbGRfZGV0YWlsIj5GaWVsZDwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjY29uc3RydWN0b3JfZGV0YWlsIj5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+TWV0aG9kPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwgYi9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2Y2JkYjEuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNDE3ICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+VEpUcmFuc2Zvcm1lcjwvdGl0bGU+Ci08bGluayByZWw9InN0eWxlc2hlZXQiIHR5cGU9InRleHQvY3NzIiBocmVmPSIuLi8uLi8uLi9zdHlsZXNoZWV0LmNzcyIgdGl0bGU9IlN0eWxlIj4KLTwvaGVhZD4KLTxib2R5PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgICBpZiAobG9jYXRpb24uaHJlZi5pbmRleE9mKCdpcy1leHRlcm5hbD10cnVlJykgPT0gLTEpIHsKLSAgICAgICAgcGFyZW50LmRvY3VtZW50LnRpdGxlPSJUSlRyYW5zZm9ybWVyIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKVHJhbnNmb3JtZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGRpdj4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+U3VtbWFyeTombmJzcDs8L2xpPgotPGxpPk5lc3RlZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpEZWNvbXByZXNzb3IiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08IS0tID09PT09PT09IFNUQVJUIE9GIENMQVNTIERBVEEgPT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotPGRpdiBjbGFzcz0ic3ViVGl0bGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9kaXY+Ci08aDIgdGl0bGU9IkNsYXNzIFRKVHJhbnNmb3JtZXIiIGNsYXNzPSJ0aXRsZSI+Q2xhc3MgVEpUcmFuc2Zvcm1lcjwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5sYW5nLk9iamVjdDwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKRGVjb21wcmVzc29yPC9hPjwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybWVyPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPGRpdiBjbGFzcz0iZGVzY3JpcHRpb24iPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGRsPgotPGR0PkFsbCBJbXBsZW1lbnRlZCBJbnRlcmZhY2VzOjwvZHQ+Ci08ZGQ+amF2YS5pby5DbG9zZWFibGUsIGphdmEubGFuZy5BdXRvQ2xvc2VhYmxlPC9kZD4KLTwvZGw+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5USlRyYW5zZm9ybWVyPC9zcGFuPgotZXh0ZW5kcyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBsb3NzbGVzcyB0cmFuc2Zvcm1lcjwvZGl2PgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1bW1hcnkiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PSBGSUVMRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkZpZWxkIFN1bW1hcnk8L2gzPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkc19pbmhlcml0ZWRfZnJvbV9jbGFzc19vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USkRlY29tcHJlc3NvciI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+RmllbGRzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2gzPgotPGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNoYW5kbGUiPmhhbmRsZTwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ0J1ZiI+anBlZ0J1ZjwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ0J1ZlNpemUiPmpwZWdCdWZTaXplPC9hPiwgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNqcGVnQ29sb3JzcGFjZSI+anBlZ0NvbG9yc3BhY2U8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2pwZWdIZWlnaHQiPmpwZWdIZWlnaHQ8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2pwZWdTdWJzYW1wIj5qcGVnU3Vic2FtcDwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjanBlZ1dpZHRoIj5qcGVnV2lkdGg8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI3l1dkltYWdlIj55dXZJbWFnZTwvYT48L2NvZGU+PC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwhLS0gPT09PT09PT0gQ09OU1RSVUNUT1IgU1VNTUFSWSA9PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5Db25zdHJ1Y3RvciBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iQ29uc3RydWN0b3IgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBjb25zdHJ1Y3RvcnMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5Db25zdHJ1Y3RvcnM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sT25lIiBzY29wZT0iY29sIj5Db25zdHJ1Y3RvciBhbmQgRGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI1RKVHJhbnNmb3JtZXIoKSI+VEpUcmFuc2Zvcm1lcjwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI1RKVHJhbnNmb3JtZXIoYnl0ZVtdKSI+VEpUcmFuc2Zvcm1lcjwvYT48L3N0cm9uZz4oYnl0ZVtdJm5ic3A7anBlZ0ltYWdlKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRwotIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI1RKVHJhbnNmb3JtZXIoYnl0ZVtdLCUyMGludCkiPlRKVHJhbnNmb3JtZXI8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO2pwZWdJbWFnZSwKLSAgICAgICAgICAgICBpbnQmbmJzcDtpbWFnZVNpemUpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIFR1cmJvSlBFRyBsb3NzbGVzcyB0cmFuc2Zvcm1lciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHCi0gaW1hZ2Ugb2YgbGVuZ3RoIDxjb2RlPmltYWdlU2l6ZTwvY29kZT4gYnl0ZXMgc3RvcmVkIGluCi0gPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09PT0gTUVUSE9EIFNVTU1BUlkgPT09PT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kX3N1bW1hcnkiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iTWV0aG9kIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgbWV0aG9kcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPk1ldGhvZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+TWV0aG9kIGFuZCBEZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnRbXTwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCNnZXRUcmFuc2Zvcm1lZFNpemVzKCkiPmdldFRyYW5zZm9ybWVkU2l6ZXM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzaXplcyBvZiB0aGUgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZXMKLSBnZW5lcmF0ZWQgYnkgdGhlIG1vc3QgcmVjZW50IHRyYW5zZm9ybSBvcGVyYXRpb24uPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuaHRtbCN0cmFuc2Zvcm0oYnl0ZVtdW10sJTIwb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwlMjBpbnQpIj50cmFuc2Zvcm08L2E+PC9zdHJvbmc+KGJ5dGVbXVtdJm5ic3A7ZHN0QnVmcywKLSAgICAgICAgIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+W10mbmJzcDt0cmFuc2Zvcm1zLAotICAgICAgICAgaW50Jm5ic3A7ZmxhZ3MpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkxvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gaW5zdGFuY2UgaW50byBvbmUgb3IgbW9yZSBKUEVHIGltYWdlcyBzdG9yZWQgaW4gdGhlIGdpdmVuIGRlc3RpbmF0aW9uCi0gYnVmZmVycy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPltdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sI3RyYW5zZm9ybShvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCUyMGludCkiPnRyYW5zZm9ybTwvYT48L3N0cm9uZz4oPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlRyYW5zZm9ybTwvYT5bXSZuYnNwO3RyYW5zZm9ybXMsCi0gICAgICAgICBpbnQmbmJzcDtmbGFncyk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+TG9zc2xlc3NseSB0cmFuc2Zvcm0gdGhlIEpQRUcgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgdHJhbnNmb3JtZXIKLSBpbnN0YW5jZSBhbmQgcmV0dXJuIGFuIGFycmF5IG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpEZWNvbXByZXNzb3I8L2NvZGU+PC9hPiBpbnN0YW5jZXMsIGVhY2ggb2YKLSB3aGljaCBoYXMgYSB0cmFuc2Zvcm1lZCBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCBpdC48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX29yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKRGVjb21wcmVzc29yIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT48L2gzPgotPGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNjbG9zZSgpIj5jbG9zZTwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhqYXZhLmF3dC5pbWFnZS5CdWZmZXJlZEltYWdlLCUyMGludCkiPmRlY29tcHJlc3M8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoYnl0ZVtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5kZWNvbXByZXNzPC9hPiwgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5kZWNvbXByZXNzPC9hPiwgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNkZWNvbXByZXNzKGludFtdLCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3M8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3MoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzczwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzcyhpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+ZGVjb21wcmVzczwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGJ5dGVbXSwlMjBpbnQpIj5kZWNvbXByZXNzVG9ZVVY8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihpbnQpIj5kZWNvbXByZXNzVG9ZVVY8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2RlY29tcHJlc3NUb1lVVihpbnQsJTIwaW50W10sJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3NUb1lVVjwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPmRlY29tcHJlc3NUb1lVVjwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZGVjb21wcmVzc1RvWVVWKG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLllVVkltYWdlLCUyMGludCkiPmRlY29tcHJlc3NUb1lVVjwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZmluYWxpemUoKSI+ZmluYWxpemU8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2dldENvbG9yc3BhY2UoKSI+Z2V0Q29sb3JzcGFjZTwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0SGVpZ2h0KCkiPmdldEhlaWdodDwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0SlBFR0J1ZigpIj5nZXRKUEVHQnVmPC9hPiwgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRKUEVHU2l6ZSgpIj5nZXRKUEVHU2l6ZTwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0U2NhbGVkSGVpZ2h0KGludCwlMjBpbnQpIj5nZXRTY2FsZWRIZWlnaHQ8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI2dldFNjYWxlZFdpZHRoKGludCwlMjBpbnQpIj5nZXRTY2FsZWRXaWR0aDwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjZ2V0U3Vic2FtcCgpIj5nZXRTdWJzYW1wPC9hPiwgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCNnZXRXaWR0aCgpIj5nZXRXaWR0aDwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0SlBFR0ltYWdlKGJ5dGVbXSwlMjBpbnQpIj5zZXRKUEVHSW1hZ2U8L2E+LCA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwlMjBpbnQpIj5zZXRTb3VyY2VJbWFnZTwvYT4sIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwjc2V0U291cmNlSW1hZ2Uob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuWVVWSW1hZ2UpIj5zZXRTb3VyY2VJbWFnZTwvYT48L2NvZGU+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ibWV0aG9kc19pbmhlcml0ZWRfZnJvbV9jbGFzc19qYXZhLmxhbmcuT2JqZWN0Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2RzIGluaGVyaXRlZCBmcm9tIGNsYXNzJm5ic3A7amF2YS5sYW5nLk9iamVjdDwvaDM+Ci08Y29kZT5jbG9uZSwgZXF1YWxzLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT0gQ09OU1RSVUNUT1IgREVUQUlMID09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImNvbnN0cnVjdG9yX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgRGV0YWlsPC9oMz4KLTxhIG5hbWU9IlRKVHJhbnNmb3JtZXIoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+VEpUcmFuc2Zvcm1lcjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKVHJhbnNmb3JtZXIoKQotICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IlRKVHJhbnNmb3JtZXIoYnl0ZVtdKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+VEpUcmFuc2Zvcm1lcjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1RKVHJhbnNmb3JtZXIoYnl0ZVtdJm5ic3A7anBlZ0ltYWdlKQotICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRwotIGltYWdlIHN0b3JlZCBpbiA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhlIG5ld2x5IGNyZWF0ZWQgaW5zdGFuY2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmpwZWdJbWFnZTwvY29kZT4gLSBKUEVHIGltYWdlIGJ1ZmZlciAoc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZSBpcyBhc3N1bWVkIHRvCi0gYmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuKSAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLjwvZGQ+Ci08ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+VGhyb3dzOjwvc3Bhbj48L2R0PgotPGRkPjxjb2RlPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpFeGNlcHRpb248L2E+PC9jb2RlPjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iVEpUcmFuc2Zvcm1lcihieXRlW10sIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5USlRyYW5zZm9ybWVyPC9oND4KLTxwcmU+cHVibGljJm5ic3A7VEpUcmFuc2Zvcm1lcihieXRlW10mbmJzcDtqcGVnSW1hZ2UsCi0gICAgICAgICAgICAgaW50Jm5ic3A7aW1hZ2VTaXplKQotICAgICAgICAgICAgICB0aHJvd3MgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRwotIGltYWdlIG9mIGxlbmd0aCA8Y29kZT5pbWFnZVNpemU8L2NvZGU+IGJ5dGVzIHN0b3JlZCBpbgotIDxjb2RlPmpwZWdJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZCBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+anBlZ0ltYWdlPC9jb2RlPiAtIEpQRUcgaW1hZ2UgYnVmZmVyLiAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLjwvZGQ+PGRkPjxjb2RlPmltYWdlU2l6ZTwvY29kZT4gLSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcyk8L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBEZXRhaWw8L2gzPgotPGEgbmFtZT0idHJhbnNmb3JtKGJ5dGVbXVtdLCBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5USlRyYW5zZm9ybVtdLCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND50cmFuc2Zvcm08L2g0PgotPHByZT5wdWJsaWMmbmJzcDt2b2lkJm5ic3A7dHJhbnNmb3JtKGJ5dGVbXVtdJm5ic3A7ZHN0QnVmcywKLSAgICAgICAgICAgICA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPltdJm5ic3A7dHJhbnNmb3JtcywKLSAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkxvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gaW5zdGFuY2UgaW50byBvbmUgb3IgbW9yZSBKUEVHIGltYWdlcyBzdG9yZWQgaW4gdGhlIGdpdmVuIGRlc3RpbmF0aW9uCi0gYnVmZmVycy4gIExvc3NsZXNzIHRyYW5zZm9ybXMgd29yayBieSBtb3ZpbmcgdGhlIHJhdyBjb2VmZmljaWVudHMgZnJvbSBvbmUKLSBKUEVHIGltYWdlIHN0cnVjdHVyZSB0byBhbm90aGVyIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIHZhbHVlcyBvZiB0aGUKLSBjb2VmZmljaWVudHMuICBXaGlsZSB0aGlzIGlzIHR5cGljYWxseSBmYXN0ZXIgdGhhbiBkZWNvbXByZXNzaW5nIHRoZQotIGltYWdlLCB0cmFuc2Zvcm1pbmcgaXQsIGFuZCByZS1jb21wcmVzc2luZyBpdCwgbG9zc2xlc3MgdHJhbnNmb3JtcyBhcmUgbm90Ci0gZnJlZS4gIEVhY2ggbG9zc2xlc3MgdHJhbnNmb3JtIHJlcXVpcmVzIHJlYWRpbmcgYW5kIHBlcmZvcm1pbmcgSHVmZm1hbgotIGRlY29kaW5nIG9uIGFsbCBvZiB0aGUgY29lZmZpY2llbnRzIGluIHRoZSBzb3VyY2UgaW1hZ2UsIHJlZ2FyZGxlc3Mgb2YgdGhlCi0gc2l6ZSBvZiB0aGUgZGVzdGluYXRpb24gaW1hZ2UuICBUaHVzLCB0aGlzIG1ldGhvZCBwcm92aWRlcyBhIG1lYW5zIG9mCi0gZ2VuZXJhdGluZyBtdWx0aXBsZSB0cmFuc2Zvcm1lZCBpbWFnZXMgZnJvbSB0aGUgc2FtZSBzb3VyY2Ugb3Igb2YgYXBwbHlpbmcKLSBtdWx0aXBsZSB0cmFuc2Zvcm1hdGlvbnMgc2ltdWx0YW5lb3VzbHksIGluIG9yZGVyIHRvIGVsaW1pbmF0ZSB0aGUgbmVlZCB0bwotIHJlYWQgdGhlIHNvdXJjZSBjb2VmZmljaWVudHMgbXVsdGlwbGUgdGltZXMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPmRzdEJ1ZnM8L2NvZGU+IC0gYW4gYXJyYXkgb2YgaW1hZ2UgYnVmZmVycy4gIDxjb2RlPmRzdGJ1ZnNbaV08L2NvZGU+IHdpbGwKLSByZWNlaXZlIGEgSlBFRyBpbWFnZSB0aGF0IGhhcyBiZWVuIHRyYW5zZm9ybWVkIHVzaW5nIHRoZSBwYXJhbWV0ZXJzIGluCi0gPGNvZGU+dHJhbnNmb3Jtc1tpXTwvY29kZT4uICBVc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplKGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEouYnVmU2l6ZShpbnQsIGludCwgaW50KTwvY29kZT48L2E+IHRvIGRldGVybWluZSB0aGUKLSBtYXhpbXVtIHNpemUgZm9yIGVhY2ggYnVmZmVyIGJhc2VkIG9uIHRoZSB0cmFuc2Zvcm1lZCBvciBjcm9wcGVkIHdpZHRoIGFuZAotIGhlaWdodCBhbmQgdGhlIGxldmVsIG9mIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIHNvdXJjZSBpbWFnZS48L2RkPjxkZD48Y29kZT50cmFuc2Zvcm1zPC9jb2RlPiAtIGFuIGFycmF5IG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpUcmFuc2Zvcm08L2NvZGU+PC9hPiBpbnN0YW5jZXMsIGVhY2ggb2YKLSB3aGljaCBzcGVjaWZpZXMgdGhlIHRyYW5zZm9ybSBwYXJhbWV0ZXJzIGFuZC9vciBjcm9wcGluZyByZWdpb24gZm9yIHRoZQotIGNvcnJlc3BvbmRpbmcgdHJhbnNmb3JtZWQgb3V0cHV0IGltYWdlPC9kZD48ZGQ+PGNvZGU+ZmxhZ3M8L2NvZGU+IC0gdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI0ZMQUdfQk9UVE9NVVAiPjxjb2RlPlRKLkZMQUdfKjwvY29kZT48L2E+PC9kZD4KLTxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5UaHJvd3M6PC9zcGFuPjwvZHQ+Ci08ZGQ+PGNvZGU+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkV4Y2VwdGlvbjwvYT48L2NvZGU+PC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJ0cmFuc2Zvcm0ob3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpUcmFuc2Zvcm1bXSwgaW50KSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+dHJhbnNmb3JtPC9oND4KLTxwcmU+cHVibGljJm5ic3A7PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkRlY29tcHJlc3NvcjwvYT5bXSZuYnNwO3RyYW5zZm9ybSg8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKVHJhbnNmb3JtPC9hPltdJm5ic3A7dHJhbnNmb3JtcywKLSAgICAgICAgICAgICAgICAgICAgICAgICBpbnQmbmJzcDtmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkxvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gaW5zdGFuY2UgYW5kIHJldHVybiBhbiBhcnJheSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPlRKRGVjb21wcmVzc29yPC9jb2RlPjwvYT4gaW5zdGFuY2VzLCBlYWNoIG9mCi0gd2hpY2ggaGFzIGEgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZSBhc3NvY2lhdGVkIHdpdGggaXQuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnRyYW5zZm9ybXM8L2NvZGU+IC0gYW4gYXJyYXkgb2YgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5USlRyYW5zZm9ybTwvY29kZT48L2E+IGluc3RhbmNlcywgZWFjaCBvZgotIHdoaWNoIHNwZWNpZmllcyB0aGUgdHJhbnNmb3JtIHBhcmFtZXRlcnMgYW5kL29yIGNyb3BwaW5nIHJlZ2lvbiBmb3IgdGhlCi0gY29ycmVzcG9uZGluZyB0cmFuc2Zvcm1lZCBvdXRwdXQgaW1hZ2U8L2RkPjxkZD48Y29kZT5mbGFnczwvY29kZT4gLSB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwjRkxBR19CT1RUT01VUCI+PGNvZGU+VEouRkxBR18qPC9jb2RlPjwvYT48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPmFuIGFycmF5IG9mIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+VEpEZWNvbXByZXNzb3I8L2NvZGU+PC9hPiBpbnN0YW5jZXMsIGVhY2ggb2YKLSB3aGljaCBoYXMgYSB0cmFuc2Zvcm1lZCBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCBpdC48L2RkPgotPGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlRocm93czo8L3NwYW4+PC9kdD4KLTxkZD48Y29kZT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvY29kZT48L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFRyYW5zZm9ybWVkU2l6ZXMoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldFRyYW5zZm9ybWVkU2l6ZXM8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtpbnRbXSZuYnNwO2dldFRyYW5zZm9ybWVkU2l6ZXMoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc2l6ZXMgb2YgdGhlIHRyYW5zZm9ybWVkIEpQRUcgaW1hZ2VzCi0gZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudCB0cmFuc2Zvcm0gb3BlcmF0aW9uLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD5hbiBhcnJheSBjb250YWluaW5nIHRoZSBzaXplcyBvZiB0aGUgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZXMKLSBnZW5lcmF0ZWQgYnkgdGhlIG1vc3QgcmVjZW50IHRyYW5zZm9ybSBvcGVyYXRpb24uPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBDTEFTUyBEQVRBID09PT09PT09PSAtLT4KLTwhLS0gPT09PT09PSBTVEFSVCBPRiBCT1RUT00gTkFWQkFSID09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImJvdHRvbU5hdiI+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX2JvdHRvbSIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl9ib3R0b21fZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaSBjbGFzcz0ibmF2QmFyQ2VsbDFSZXYiPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5QcmV2IENsYXNzPC9zcGFuPjwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+TmV4dCBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKVHJhbnNmb3JtZXIuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGRpdj4KLTx1bCBjbGFzcz0ic3ViTmF2TGlzdCI+Ci08bGk+U3VtbWFyeTombmJzcDs8L2xpPgotPGxpPk5lc3RlZCZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZHNfaW5oZXJpdGVkX2Zyb21fY2xhc3Nfb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpEZWNvbXByZXNzb3IiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPkZpZWxkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2NvbnN0cnVjdG9yX2RldGFpbCI+Q29uc3RyPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNtZXRob2RfZGV0YWlsIj5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjJiZTBhMC4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsNzYxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+WVVWSW1hZ2U8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iWVVWSW1hZ2UiOwotICAgIH0KLS8vLS0+Ci08L3NjcmlwdD4KLTxub3NjcmlwdD4KLTxkaXY+SmF2YVNjcmlwdCBpcyBkaXNhYmxlZCBvbiB5b3VyIGJyb3dzZXIuPC9kaXY+Ci08L25vc2NyaXB0PgotPCEtLSA9PT09PT09PT0gU1RBUlQgT0YgVE9QIE5BVkJBUiA9PT09PT09IC0tPgotPGRpdiBjbGFzcz0idG9wTmF2Ij48YSBuYW1lPSJuYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfdG9wIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX3RvcF9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+UHJldiBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTxsaT5OZXh0IENsYXNzPC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJZVVZJbWFnZS5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX3RvcCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX3RvcCIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX3N1bW1hcnkiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIFRPUCBOQVZCQVIgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09PSBTVEFSVCBPRiBDTEFTUyBEQVRBID09PT09PT09IC0tPgotPGRpdiBjbGFzcz0iaGVhZGVyIj4KLTxkaXYgY2xhc3M9InN1YlRpdGxlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvZGl2PgotPGgyIHRpdGxlPSJDbGFzcyBZVVZJbWFnZSIgY2xhc3M9InRpdGxlIj5DbGFzcyBZVVZJbWFnZTwvaDI+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJpbmhlcml0YW5jZSI+Ci08bGk+amF2YS5sYW5nLk9iamVjdDwvbGk+Ci08bGk+Ci08dWwgY2xhc3M9ImluaGVyaXRhbmNlIj4KLTxsaT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy5ZVVZJbWFnZTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08ZGl2IGNsYXNzPSJkZXNjcmlwdGlvbiI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aHI+Ci08YnI+Ci08cHJlPnB1YmxpYyBjbGFzcyA8c3BhbiBjbGFzcz0ic3Ryb25nIj5ZVVZJbWFnZTwvc3Bhbj4KLWV4dGVuZHMgamF2YS5sYW5nLk9iamVjdDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgdGhlIG1ldGFkYXRhCi0gYXNzb2NpYXRlZCB3aXRoIGl0LiAgVGhlIFR1cmJvSlBFRyBBUEkgYWxsb3dzIGJvdGggdGhlIEpQRUcgY29tcHJlc3Npb24gYW5kCi0gZGVjb21wcmVzc2lvbiBwaXBlbGluZXMgdG8gYmUgc3BsaXQgaW50byBzdGFnZXM6ICBZVVYgZW5jb2RlLCBjb21wcmVzcyBmcm9tCi0gWVVWLCBkZWNvbXByZXNzIHRvIFlVViwgYW5kIFlVViBkZWNvZGUuICBBIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZQotIHNlcnZlcyBhcyB0aGUgZGVzdGluYXRpb24gaW1hZ2UgZm9yIFlVViBlbmNvZGUgYW5kIGRlY29tcHJlc3MtdG8tWVVWCi0gb3BlcmF0aW9ucyBhbmQgYXMgdGhlIHNvdXJjZSBpbWFnZSBmb3IgY29tcHJlc3MtZnJvbS1ZVVYgYW5kIFlVViBkZWNvZGUKLSBvcGVyYXRpb25zLgotIDxwPgotIFRlY2huaWNhbGx5LCB0aGUgSlBFRyBmb3JtYXQgdXNlcyB0aGUgWUNiQ3IgY29sb3JzcGFjZSAod2hpY2ggdGVjaG5pY2FsbHkgaXMKLSBub3QgYSAiY29sb3JzcGFjZSIgYnV0IHJhdGhlciBhICJjb2xvciB0cmFuc2Zvcm0iKSwgYnV0IHBlciB0aGUgY29udmVudGlvbgotIG9mIHRoZSBkaWdpdGFsIHZpZGVvIGNvbW11bml0eSwgdGhlIFR1cmJvSlBFRyBBUEkgdXNlcyAiWVVWIiB0byByZWZlciB0byBhbgotIGltYWdlIGZvcm1hdCBjb25zaXN0aW5nIG9mIFksIENiLCBhbmQgQ3IgaW1hZ2UgcGxhbmVzLgotIDxwPgotIEVhY2ggcGxhbmUgaXMgc2ltcGx5IGEgMkQgYXJyYXkgb2YgYnl0ZXMsIGVhY2ggYnl0ZSByZXByZXNlbnRpbmcgdGhlIHZhbHVlCi0gb2Ygb25lIG9mIHRoZSBjb21wb25lbnRzIChZLCBDYiwgb3IgQ3IpIGF0IGEgcGFydGljdWxhciBsb2NhdGlvbiBpbiB0aGUKLSBpbWFnZS4gIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGVhY2ggcGxhbmUgYXJlIGRldGVybWluZWQgYnkgdGhlIGltYWdlCi0gd2lkdGgsIGhlaWdodCwgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLiAgVGhlIGx1bWluYW5jZSBwbGFuZQotIHdpZHRoIGlzIHRoZSBpbWFnZSB3aWR0aCBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgdGhlIGhvcml6b250YWwKLSBzdWJzYW1wbGluZyBmYWN0b3IgKDIgaW4gdGhlIGNhc2Ugb2YgNDoyOjAgYW5kIDQ6MjoyLCA0IGluIHRoZSBjYXNlIG9mCi0gNDoxOjEsIDEgaW4gdGhlIGNhc2Ugb2YgNDo0OjQgb3IgZ3JheXNjYWxlLikgIFNpbWlsYXJseSwgdGhlIGx1bWluYW5jZSBwbGFuZQotIGhlaWdodCBpcyB0aGUgaW1hZ2UgaGVpZ2h0IHBhZGRlZCB0byB0aGUgbmVhcmVzdCBtdWx0aXBsZSBvZiB0aGUgdmVydGljYWwKLSBzdWJzYW1wbGluZyBmYWN0b3IgKDIgaW4gdGhlIGNhc2Ugb2YgNDoyOjAgb3IgNDo0OjAsIDEgaW4gdGhlIGNhc2Ugb2YgNDo0OjQKLSBvciBncmF5c2NhbGUuKSAgVGhlIGNocm9taW5hbmNlIHBsYW5lIHdpZHRoIGlzIGVxdWFsIHRvIHRoZSBsdW1pbmFuY2UgcGxhbmUKLSB3aWR0aCBkaXZpZGVkIGJ5IHRoZSBob3Jpem9udGFsIHN1YnNhbXBsaW5nIGZhY3RvciwgYW5kIHRoZSBjaHJvbWluYW5jZQotIHBsYW5lIGhlaWdodCBpcyBlcXVhbCB0byB0aGUgbHVtaW5hbmNlIHBsYW5lIGhlaWdodCBkaXZpZGVkIGJ5IHRoZSB2ZXJ0aWNhbAotIHN1YnNhbXBsaW5nIGZhY3Rvci4KLSA8cD4KLSBGb3IgZXhhbXBsZSwgaWYgdGhlIHNvdXJjZSBpbWFnZSBpcyAzNSB4IDM1IHBpeGVscyBhbmQgNDoyOjIgc3Vic2FtcGxpbmcgaXMKLSB1c2VkLCB0aGVuIHRoZSBsdW1pbmFuY2UgcGxhbmUgd291bGQgYmUgMzYgeCAzNSBieXRlcywgYW5kIGVhY2ggb2YgdGhlCi0gY2hyb21pbmFuY2UgcGxhbmVzIHdvdWxkIGJlIDE4IHggMzUgYnl0ZXMuICBJZiB5b3Ugc3BlY2lmeSBhIGxpbmUgcGFkZGluZyBvZgotIDQgYnl0ZXMgb24gdG9wIG9mIHRoaXMsIHRoZW4gdGhlIGx1bWluYW5jZSBwbGFuZSB3b3VsZCBiZSAzNiB4IDM1IGJ5dGVzLCBhbmQKLSBlYWNoIG9mIHRoZSBjaHJvbWluYW5jZSBwbGFuZXMgd291bGQgYmUgMjAgeCAzNSBieXRlcy48L2Rpdj4KLTwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdW1tYXJ5Ij4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTwhLS0gPT09PT09PT09PT0gRklFTEQgU1VNTUFSWSA9PT09PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJmaWVsZF9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5GaWVsZCBTdW1tYXJ5PC9oMz4KLTx0YWJsZSBjbGFzcz0ib3ZlcnZpZXdTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRmllbGQgU3VtbWFyeSB0YWJsZSwgbGlzdGluZyBmaWVsZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5GaWVsZHM8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPk1vZGlmaWVyIGFuZCBUeXBlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RmllbGQgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnByb3RlY3RlZCBsb25nPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNoYW5kbGUiPmhhbmRsZTwvYT48L3N0cm9uZz48L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnByb3RlY3RlZCBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3l1dkhlaWdodCI+eXV2SGVpZ2h0PC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludFtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCN5dXZPZmZzZXRzIj55dXZPZmZzZXRzPC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjeXV2UGFkIj55dXZQYWQ8L2E+PC9zdHJvbmc+PC9jb2RlPiZuYnNwOzwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5wcm90ZWN0ZWQgYnl0ZVtdW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3l1dlBsYW5lcyI+eXV2UGxhbmVzPC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludFtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCN5dXZTdHJpZGVzIj55dXZTdHJpZGVzPC9hPjwvc3Ryb25nPjwvY29kZT4mbmJzcDs8L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+cHJvdGVjdGVkIGludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjeXV2U3Vic2FtcCI+eXV2U3Vic2FtcDwvYT48L3N0cm9uZz48L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnByb3RlY3RlZCBpbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3l1dldpZHRoIj55dXZXaWR0aDwvYT48L3N0cm9uZz48L2NvZGU+Jm5ic3A7PC90ZD4KLTwvdHI+Ci08L3RhYmxlPgotPC9saT4KLTwvdWw+Ci08IS0tID09PT09PT09IENPTlNUUlVDVE9SIFNVTU1BUlkgPT09PT09PT0gLS0+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0iY29uc3RydWN0b3Jfc3VtbWFyeSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+Q29uc3RydWN0b3IgU3VtbWFyeTwvaDM+Ci08dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNvbnN0cnVjdG9yIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY29uc3RydWN0b3JzLCBhbmQgYW4gZXhwbGFuYXRpb24iPgotPGNhcHRpb24+PHNwYW4+Q29uc3RydWN0b3JzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbE9uZSIgc2NvcGU9ImNvbCI+Q29uc3RydWN0b3IgYW5kIERlc2NyaXB0aW9uPC90aD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjWVVWSW1hZ2UoYnl0ZVtdW10sJTIwaW50W10sJTIwaW50LCUyMGludFtdLCUyMGludCwlMjBpbnQpIj5ZVVZJbWFnZTwvYT48L3N0cm9uZz4oYnl0ZVtdW10mbmJzcDtwbGFuZXMsCi0gICAgICAgIGludFtdJm5ic3A7b2Zmc2V0cywKLSAgICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgIGludFtdJm5ic3A7c3RyaWRlcywKLSAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBuZXcgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGZyb20gYSBzZXQgb2YgZXhpc3RpbmcgaW1hZ2UKLSBwbGFuZXMuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0icm93Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xPbmUiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNZVVZJbWFnZShieXRlW10sJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+WVVWSW1hZ2U8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO3l1dkltYWdlLAotICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgaW50Jm5ic3A7cGFkLAotICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyB1bmlmaWVkIGltYWdlCi0gYnVmZmVyLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sT25lIj48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjWVVWSW1hZ2UoaW50LCUyMGludFtdLCUyMGludCwlMjBpbnQpIj5ZVVZJbWFnZTwvYT48L3N0cm9uZz4oaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgIGludFtdJm5ic3A7c3RyaWRlcywKLSAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBuZXcgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGJhY2tlZCBieSBzZXBhcmF0ZSBpbWFnZQotIHBsYW5lcywgYW5kIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbE9uZSI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI1lVVkltYWdlKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPllVVkltYWdlPC9hPjwvc3Ryb25nPihpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgaW50Jm5ic3A7cGFkLAotICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgYmFja2VkIGJ5IGEgdW5pZmllZCBpbWFnZQotIGJ1ZmZlciwgYW5kIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGltYWdlIGJ1ZmZlci48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT09IE1FVEhPRCBTVU1NQVJZID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9zdW1tYXJ5Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5NZXRob2QgU3VtbWFyeTwvaDM+Ci08dGFibGUgY2xhc3M9Im92ZXJ2aWV3U3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9Ik1ldGhvZCBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIG1ldGhvZHMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5NZXRob2RzPC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbEZpcnN0IiBzY29wZT0iY29sIj5Nb2RpZmllciBhbmQgVHlwZTwvdGg+Ci08dGggY2xhc3M9ImNvbExhc3QiIHNjb3BlPSJjb2wiPk1ldGhvZCBhbmQgRGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ynl0ZVtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRCdWYoKSI+Z2V0QnVmPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIFlVViBpbWFnZSBidWZmZXIgKGlmIHRoaXMgaW1hZ2UgaXMgc3RvcmVkIGluIGEgdW5pZmllZAotIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0SGVpZ2h0KCkiPmdldEhlaWdodDwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uLik8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnRbXTwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0T2Zmc2V0cygpIj5nZXRPZmZzZXRzPC9hPjwvc3Ryb25nPigpPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIG9mZnNldHMgKGluIGJ5dGVzKSBvZiBlYWNoIHBsYW5lIHdpdGhpbiB0aGUgcGxhbmVzIG9mIGEgbGFyZ2VyCi0gWVVWIGltYWdlLjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjZ2V0UGFkKCkiPmdldFBhZDwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsaW5lIHBhZGRpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcwotIHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+Ynl0ZVtdW108L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldFBsYW5lcygpIj5nZXRQbGFuZXM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgWVVWIGltYWdlIHBsYW5lcy48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldFNpemUoKSI+Z2V0U2l6ZTwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIFlVViBpbWFnZSBidWZmZXIgKGlmIHRoaXMgaW1hZ2UgaXMKLSBzdG9yZWQgaW4gYSB1bmlmaWVkIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPmludFtdPC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRTdHJpZGVzKCkiPmdldFN0cmlkZXM8L2E+PC9zdHJvbmc+KCk8L2NvZGU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBsaW5lIG9mIGVhY2ggcGxhbmUgaW4gdGhlIFlVViBpbWFnZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48Y29kZT5pbnQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI2dldFN1YnNhbXAoKSI+Z2V0U3Vic2FtcDwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+aW50PC9jb2RlPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPjxjb2RlPjxzdHJvbmc+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCNnZXRXaWR0aCgpIj5nZXRXaWR0aDwvYT48L3N0cm9uZz4oKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24uKTwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9InJvd0NvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxjb2RlPnZvaWQ8L2NvZGU+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+PGNvZGU+PHN0cm9uZz48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sI3NldEJ1ZihieXRlW11bXSwlMjBpbnRbXSwlMjBpbnQsJTIwaW50W10sJTIwaW50LCUyMGludCkiPnNldEJ1ZjwvYT48L3N0cm9uZz4oYnl0ZVtdW10mbmJzcDtwbGFuZXMsCi0gICAgICBpbnRbXSZuYnNwO29mZnNldHMsCi0gICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgIGludFtdJm5ic3A7c3RyaWRlcywKLSAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgIGludCZuYnNwO3N1YnNhbXApPC9jb2RlPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc2lnbiBhIHNldCBvZiBpbWFnZSBwbGFuZXMgdG8gdGhpcyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UuPC9kaXY+Ci08L3RkPgotPC90cj4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGNvZGU+dm9pZDwvY29kZT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij48Y29kZT48c3Ryb25nPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwjc2V0QnVmKGJ5dGVbXSwlMjBpbnQsJTIwaW50LCUyMGludCwlMjBpbnQpIj5zZXRCdWY8L2E+PC9zdHJvbmc+KGJ5dGVbXSZuYnNwO3l1dkltYWdlLAotICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICBpbnQmbmJzcDtwYWQsCi0gICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvY29kZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5Bc3NpZ24gYSB1bmlmaWVkIGltYWdlIGJ1ZmZlciB0byB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS48L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90YWJsZT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJtZXRob2RzX2luaGVyaXRlZF9mcm9tX2NsYXNzX2phdmEubGFuZy5PYmplY3QiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZHMgaW5oZXJpdGVkIGZyb20gY2xhc3MmbmJzcDtqYXZhLmxhbmcuT2JqZWN0PC9oMz4KLTxjb2RlPmNsb25lLCBlcXVhbHMsIGZpbmFsaXplLCBnZXRDbGFzcywgaGFzaENvZGUsIG5vdGlmeSwgbm90aWZ5QWxsLCB0b1N0cmluZywgd2FpdCwgd2FpdCwgd2FpdDwvY29kZT48L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImRldGFpbHMiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPCEtLSA9PT09PT09PT09PT0gRklFTEQgREVUQUlMID09PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9ImZpZWxkX2RldGFpbCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08aDM+RmllbGQgRGV0YWlsPC9oMz4KLTxhIG5hbWU9ImhhbmRsZSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+aGFuZGxlPC9oND4KLTxwcmU+cHJvdGVjdGVkJm5ic3A7bG9uZyBoYW5kbGU8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ieXV2UGxhbmVzIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND55dXZQbGFuZXM8L2g0PgotPHByZT5wcm90ZWN0ZWQmbmJzcDtieXRlW11bXSB5dXZQbGFuZXM8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ieXV2T2Zmc2V0cyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+eXV2T2Zmc2V0czwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludFtdIHl1dk9mZnNldHM8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ieXV2U3RyaWRlcyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+eXV2U3RyaWRlczwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludFtdIHl1dlN0cmlkZXM8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ieXV2UGFkIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND55dXZQYWQ8L2g0PgotPHByZT5wcm90ZWN0ZWQmbmJzcDtpbnQgeXV2UGFkPC9wcmU+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9Inl1dldpZHRoIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND55dXZXaWR0aDwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCB5dXZXaWR0aDwvcHJlPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJ5dXZIZWlnaHQiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pnl1dkhlaWdodDwvaDQ+Ci08cHJlPnByb3RlY3RlZCZuYnNwO2ludCB5dXZIZWlnaHQ8L3ByZT4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0ieXV2U3Vic2FtcCI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdExhc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0Pnl1dlN1YnNhbXA8L2g0PgotPHByZT5wcm90ZWN0ZWQmbmJzcDtpbnQgeXV2U3Vic2FtcDwvcHJlPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwhLS0gPT09PT09PT09IENPTlNUUlVDVE9SIERFVEFJTCA9PT09PT09PSAtLT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij48YSBuYW1lPSJjb25zdHJ1Y3Rvcl9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNvbnN0cnVjdG9yIERldGFpbDwvaDM+Ci08YSBuYW1lPSJZVVZJbWFnZShpbnQsIGludFtdLCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PllVVkltYWdlPC9oND4KLTxwcmU+cHVibGljJm5ic3A7WVVWSW1hZ2UoaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgIGludFtdJm5ic3A7c3RyaWRlcywKLSAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgYmFja2VkIGJ5IHNlcGFyYXRlIGltYWdlCi0gcGxhbmVzLCBhbmQgYWxsb2NhdGUgbWVtb3J5IGZvciB0aGUgaW1hZ2UgcGxhbmVzLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT53aWR0aDwvY29kZT4gLSB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3RyaWRlczwvY29kZT4gLSBhbiBhcnJheSBvZiBpbnRlZ2VycywgZWFjaCBzcGVjaWZ5aW5nIHRoZSBudW1iZXIgb2YgYnl0ZXMKLSBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgWVVWIGltYWdlLiAgU2V0dGluZyB0aGUgc3RyaWRlCi0gZm9yIGFueSBwbGFuZSB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHBsYW5lIHdpZHRoIChzZWUKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPmFib3ZlPC9jb2RlPjwvYT4uKSAgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgbnVsbCwgdGhlbiB0aGUKLSBzdHJpZGVzIGZvciBhbGwgcGxhbmVzIHdpbGwgYmUgc2V0IHRvIHRoZWlyIHJlc3BlY3RpdmUgcGxhbmUgd2lkdGhzLiAgV2hlbgotIHVzaW5nIHRoaXMgY29uc3RydWN0b3IsIHRoZSBzdHJpZGUgZm9yIGVhY2ggcGxhbmUgbXVzdCBiZSBlcXVhbCB0byBvcgotIGdyZWF0ZXIgdGhhbiB0aGUgcGxhbmUgd2lkdGguPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdG8gYmUgdXNlZCBpbiB0aGUgWVVWCi0gaW1hZ2UgKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij48Y29kZT5USi5TQU1QXyo8L2NvZGU+PC9hPik8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IllVVkltYWdlKGludCwgaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PllVVkltYWdlPC9oND4KLTxwcmU+cHVibGljJm5ic3A7WVVWSW1hZ2UoaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgIGludCZuYnNwO3BhZCwKLSAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkNyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgYmFja2VkIGJ5IGEgdW5pZmllZCBpbWFnZQotIGJ1ZmZlciwgYW5kIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGltYWdlIGJ1ZmZlci48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZTwvZGQ+PGRkPjxjb2RlPnBhZDwvY29kZT4gLSBFYWNoIGxpbmUgb2YgZWFjaCBwbGFuZSBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlciB3aWxsIGJlIHBhZGRlZAotIHRvIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YgMi4pPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdG8gYmUgdXNlZCBpbiB0aGUgWVVWCi0gaW1hZ2UgKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij48Y29kZT5USi5TQU1QXyo8L2NvZGU+PC9hPik8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9IllVVkltYWdlKGJ5dGVbXVtdLCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5ZVVZJbWFnZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1lVVkltYWdlKGJ5dGVbXVtdJm5ic3A7cGxhbmVzLAotICAgICAgICBpbnRbXSZuYnNwO29mZnNldHMsCi0gICAgICAgIGludCZuYnNwO3dpZHRoLAotICAgICAgICBpbnRbXSZuYnNwO3N0cmlkZXMsCi0gICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgaW50Jm5ic3A7c3Vic2FtcCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DcmVhdGUgYSBuZXcgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGZyb20gYSBzZXQgb2YgZXhpc3RpbmcgaW1hZ2UKLSBwbGFuZXMuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnBsYW5lczwvY29kZT4gLSBhbiBhcnJheSBvZiBidWZmZXJzIHJlcHJlc2VudGluZyB0aGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpCi0gaW1hZ2UgcGxhbmVzIChvciBqdXN0IHRoZSBZIHBsYW5lLCBpZiB0aGUgaW1hZ2UgaXMgZ3JheXNjYWxlLikgICBUaGVzZQotIHBsYW5lcyBjYW4gYmUgY29udGlndW91cyBvciBub24tY29udGlndW91cyBpbiBtZW1vcnkuICBQbGFuZQotIDxjb2RlPmk8L2NvZGU+IHNob3VsZCBiZSBhdCBsZWFzdCA8Y29kZT5vZmZzZXRzW2ldICsKLSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI3BsYW5lU2l6ZVlVVihpbnQsJTIwaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEoucGxhbmVTaXplWVVWPC9jb2RlPjwvYT4oaSwgd2lkdGgsIHN0cmlkZXNbaV0sIGhlaWdodCwgc3Vic2FtcCk8L2NvZGU+Ci0gYnl0ZXMgaW4gc2l6ZS48L2RkPjxkZD48Y29kZT5vZmZzZXRzPC9jb2RlPiAtIElmIHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIHJlcHJlc2VudHMgYQotIHN1YnJlZ2lvbiBvZiBhIGxhcmdlciBpbWFnZSwgdGhlbiA8Y29kZT5vZmZzZXRzW2ldPC9jb2RlPiBzcGVjaWZpZXMgdGhlCi0gb2Zmc2V0IChpbiBieXRlcykgb2YgdGhlIHN1YnJlZ2lvbiB3aXRoaW4gcGxhbmUgPGNvZGU+aTwvY29kZT4gb2YgdGhlCi0gbGFyZ2VyIGltYWdlLiAgU2V0dGluZyB0aGlzIHRvIG51bGwgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyB0aGUgb2Zmc2V0cyBmb3IKLSBhbGwgcGxhbmVzIHRvIDAuPC9kZD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gd2lkdGggKGluIHBpeGVscykgb2YgdGhlIG5ldyBZVVYgaW1hZ2UgKG9yIHN1YnJlZ2lvbik8L2RkPjxkZD48Y29kZT5zdHJpZGVzPC9jb2RlPiAtIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotIHBlciBsaW5lIGluIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lIG9mIHRoZSBZVVYgaW1hZ2UuICBTZXR0aW5nIHRoZSBzdHJpZGUKLSBmb3IgYW55IHBsYW5lIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgcGxhbmUgd2lkdGggKHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+YWJvdmU8L2NvZGU+PC9hPi4pICBJZiA8Y29kZT5zdHJpZGVzPC9jb2RlPiBpcyBudWxsLCB0aGVuIHRoZQotIHN0cmlkZXMgZm9yIGFsbCBwbGFuZXMgd2lsbCBiZSBzZXQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwbGFuZSB3aWR0aHMuICBZb3UKLSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZwotIHRvIGVhY2ggcGxhbmUgb3IgdG8gc3BlY2lmeSB0aGF0IHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGlzIGEKLSBzdWJyZWdpb24gb2YgYSBsYXJnZXIgaW1hZ2UgKGluIHdoaWNoIGNhc2UsIDxjb2RlPnN0cmlkZXNbaV08L2NvZGU+IHNob3VsZAotIGJlIHNldCB0byB0aGUgcGxhbmUgd2lkdGggb2YgcGxhbmUgPGNvZGU+aTwvY29kZT4gaW4gdGhlIGxhcmdlciBpbWFnZS4pPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgbmV3IFlVViBpbWFnZSAob3Igc3VicmVnaW9uKTwvZGQ+PGRkPjxjb2RlPnN1YnNhbXA8L2NvZGU+IC0gdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVVgotIGltYWdlIChvbmUgb2YgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQ0NCI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4pPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJZVVZJbWFnZShieXRlW10sIGludCwgaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3RMYXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5ZVVZJbWFnZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO1lVVkltYWdlKGJ5dGVbXSZuYnNwO3l1dkltYWdlLAotICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgaW50Jm5ic3A7cGFkLAotICAgICAgICBpbnQmbmJzcDtoZWlnaHQsCi0gICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3JlYXRlIGEgbmV3IDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBmcm9tIGFuIGV4aXN0aW5nIHVuaWZpZWQgaW1hZ2UKLSBidWZmZXIuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlBhcmFtZXRlcnM6PC9zcGFuPjwvZHQ+PGRkPjxjb2RlPnl1dkltYWdlPC9jb2RlPiAtIGltYWdlIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIG9yIHdpbGwgY29udGFpbiBZVVYgcGxhbmFyCi0gaW1hZ2UgZGF0YS4gIFVzZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI2J1ZlNpemVZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50KSI+PGNvZGU+VEouYnVmU2l6ZVlVVihpbnQsIGludCwgaW50LCBpbnQpPC9jb2RlPjwvYT4gdG8gZGV0ZXJtaW5lIHRoZSBtaW5pbXVtIHNpemUgZm9yCi0gdGhpcyBidWZmZXIuICBUaGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBhcmUgc3RvcmVkCi0gc2VxdWVudGlhbGx5IGluIHRoZSBidWZmZXIgKHNlZSA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxjb2RlPmFib3ZlPC9jb2RlPjwvYT4gZm9yIGEgZGVzY3JpcHRpb24KLSBvZiB0aGUgaW1hZ2UgZm9ybWF0Lik8L2RkPjxkZD48Y29kZT53aWR0aDwvY29kZT4gLSB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+cGFkPC9jb2RlPiAtIHRoZSBsaW5lIHBhZGRpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlci4gIEZvcgotIGluc3RhbmNlLCBpZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgYnVmZmVyIGlzIHBhZGRlZCB0byB0aGUKLSBuZWFyZXN0IG11bHRpcGxlIG9mIDQgYnl0ZXMsIHRoZW4gPGNvZGU+cGFkPC9jb2RlPiBzaG91bGQgYmUgc2V0IHRvIDQuPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWCi0gaW1hZ2UgKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij48Y29kZT5USi5TQU1QXyo8L2NvZGU+PC9hPik8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPCEtLSA9PT09PT09PT09PT0gTUVUSE9EIERFVEFJTCA9PT09PT09PT09IC0tPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im1ldGhvZF9kZXRhaWwiPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPk1ldGhvZCBEZXRhaWw8L2gzPgotPGEgbmFtZT0ic2V0QnVmKGJ5dGVbXVtdLCBpbnRbXSwgaW50LCBpbnRbXSwgaW50LCBpbnQpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5zZXRCdWY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDt2b2lkJm5ic3A7c2V0QnVmKGJ5dGVbXVtdJm5ic3A7cGxhbmVzLAotICAgICAgICAgIGludFtdJm5ic3A7b2Zmc2V0cywKLSAgICAgICAgICBpbnQmbmJzcDt3aWR0aCwKLSAgICAgICAgICBpbnRbXSZuYnNwO3N0cmlkZXMsCi0gICAgICAgICAgaW50Jm5ic3A7aGVpZ2h0LAotICAgICAgICAgIGludCZuYnNwO3N1YnNhbXApPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+QXNzaWduIGEgc2V0IG9mIGltYWdlIHBsYW5lcyB0byB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UGFyYW1ldGVyczo8L3NwYW4+PC9kdD48ZGQ+PGNvZGU+cGxhbmVzPC9jb2RlPiAtIGFuIGFycmF5IG9mIGJ1ZmZlcnMgcmVwcmVzZW50aW5nIHRoZSBZLCBVIChDYiksIGFuZCBWIChDcikKLSBpbWFnZSBwbGFuZXMgKG9yIGp1c3QgdGhlIFkgcGxhbmUsIGlmIHRoZSBpbWFnZSBpcyBncmF5c2NhbGUuKSAgVGhlc2UKLSBwbGFuZXMgY2FuIGJlIGNvbnRpZ3VvdXMgb3Igbm9uLWNvbnRpZ3VvdXMgaW4gbWVtb3J5LiAgUGxhbmUKLSA8Y29kZT5pPC9jb2RlPiBzaG91bGQgYmUgYXQgbGVhc3QgPGNvZGU+b2Zmc2V0c1tpXSArCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNwbGFuZVNpemVZVVYoaW50LCUyMGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKLnBsYW5lU2l6ZVlVVjwvY29kZT48L2E+KGksIHdpZHRoLCBzdHJpZGVzW2ldLCBoZWlnaHQsIHN1YnNhbXApPC9jb2RlPgotIGJ5dGVzIGluIHNpemUuPC9kZD48ZGQ+PGNvZGU+b2Zmc2V0czwvY29kZT4gLSBJZiB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSByZXByZXNlbnRzIGEKLSBzdWJyZWdpb24gb2YgYSBsYXJnZXIgaW1hZ2UsIHRoZW4gPGNvZGU+b2Zmc2V0c1tpXTwvY29kZT4gc3BlY2lmaWVzIHRoZQotIG9mZnNldCAoaW4gYnl0ZXMpIG9mIHRoZSBzdWJyZWdpb24gd2l0aGluIHBsYW5lIDxjb2RlPmk8L2NvZGU+IG9mIHRoZQotIGxhcmdlciBpbWFnZS4gIFNldHRpbmcgdGhpcyB0byBudWxsIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIG9mZnNldHMgZm9yCi0gYWxsIHBsYW5lcyB0byAwLjwvZGQ+PGRkPjxjb2RlPndpZHRoPC9jb2RlPiAtIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UgKG9yIHN1YnJlZ2lvbik8L2RkPjxkZD48Y29kZT5zdHJpZGVzPC9jb2RlPiAtIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotIHBlciBsaW5lIGluIHRoZSBjb3JyZXNwb25kaW5nIHBsYW5lIG9mIHRoZSBZVVYgaW1hZ2UuICBTZXR0aW5nIHRoZSBzdHJpZGUKLSBmb3IgYW55IHBsYW5lIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0byB0aGUgcGxhbmUgd2lkdGggKHNlZQotIDxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PGNvZGU+YWJvdmU8L2NvZGU+PC9hPi4pICBJZiA8Y29kZT5zdHJpZGVzPC9jb2RlPiBpcyBudWxsLCB0aGVuIHRoZQotIHN0cmlkZXMgZm9yIGFsbCBwbGFuZXMgd2lsbCBiZSBzZXQgdG8gdGhlaXIgcmVzcGVjdGl2ZSBwbGFuZSB3aWR0aHMuICBZb3UKLSBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZwotIHRvIGVhY2ggcGxhbmUgb3IgdG8gc3BlY2lmeSB0aGF0IHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGltYWdlIGlzIGEKLSBzdWJyZWdpb24gb2YgYSBsYXJnZXIgaW1hZ2UgKGluIHdoaWNoIGNhc2UsIDxjb2RlPnN0cmlkZXNbaV08L2NvZGU+IHNob3VsZAotIGJlIHNldCB0byB0aGUgcGxhbmUgd2lkdGggb2YgcGxhbmUgPGNvZGU+aTwvY29kZT4gaW4gdGhlIGxhcmdlciBpbWFnZS4pPC9kZD48ZGQ+PGNvZGU+aGVpZ2h0PC9jb2RlPiAtIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24pPC9kZD48ZGQ+PGNvZGU+c3Vic2FtcDwvY29kZT4gLSB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWCi0gaW1hZ2UgKG9uZSBvZiA8YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5odG1sI1NBTVBfNDQ0Ij48Y29kZT5USi5TQU1QXyo8L2NvZGU+PC9hPik8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9InNldEJ1ZihieXRlW10sIGludCwgaW50LCBpbnQsIGludCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PnNldEJ1ZjwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO3ZvaWQmbmJzcDtzZXRCdWYoYnl0ZVtdJm5ic3A7eXV2SW1hZ2UsCi0gICAgICAgICAgaW50Jm5ic3A7d2lkdGgsCi0gICAgICAgICAgaW50Jm5ic3A7cGFkLAotICAgICAgICAgIGludCZuYnNwO2hlaWdodCwKLSAgICAgICAgICBpbnQmbmJzcDtzdWJzYW1wKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPkFzc2lnbiBhIHVuaWZpZWQgaW1hZ2UgYnVmZmVyIHRvIHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlLjwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5QYXJhbWV0ZXJzOjwvc3Bhbj48L2R0PjxkZD48Y29kZT55dXZJbWFnZTwvY29kZT4gLSBpbWFnZSBidWZmZXIgdGhhdCBjb250YWlucyBvciB3aWxsIGNvbnRhaW4gWVVWIHBsYW5hcgotIGltYWdlIGRhdGEuICBVc2UgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNidWZTaXplWVVWKGludCwlMjBpbnQsJTIwaW50LCUyMGludCkiPjxjb2RlPlRKLmJ1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KTwvY29kZT48L2E+IHRvIGRldGVybWluZSB0aGUgbWluaW11bSBzaXplIGZvcgotIHRoaXMgYnVmZmVyLiAgVGhlIFksIFUgKENiKSwgYW5kIFYgKENyKSBpbWFnZSBwbGFuZXMgYXJlIHN0b3JlZAotIHNlcXVlbnRpYWxseSBpbiB0aGUgYnVmZmVyIChzZWUgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48Y29kZT5hYm92ZTwvY29kZT48L2E+IGZvciBhIGRlc2NyaXB0aW9uCi0gb2YgdGhlIGltYWdlIGZvcm1hdC4pPC9kZD48ZGQ+PGNvZGU+d2lkdGg8L2NvZGU+IC0gd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZTwvZGQ+PGRkPjxjb2RlPnBhZDwvY29kZT4gLSB0aGUgbGluZSBwYWRkaW5nIHVzZWQgaW4gdGhlIFlVViBpbWFnZSBidWZmZXIuICBGb3IKLSBpbnN0YW5jZSwgaWYgZWFjaCBsaW5lIGluIGVhY2ggcGxhbmUgb2YgdGhlIGJ1ZmZlciBpcyBwYWRkZWQgdG8gdGhlCi0gbmVhcmVzdCBtdWx0aXBsZSBvZiA0IGJ5dGVzLCB0aGVuIDxjb2RlPnBhZDwvY29kZT4gc2hvdWxkIGJlIHNldCB0byA0LjwvZGQ+PGRkPjxjb2RlPmhlaWdodDwvY29kZT4gLSBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZTwvZGQ+PGRkPjxjb2RlPnN1YnNhbXA8L2NvZGU+IC0gdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVVgotIGltYWdlIChvbmUgb2YgPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQ0NCI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4pPC9kZD48L2RsPgotPC9saT4KLTwvdWw+Ci08YSBuYW1lPSJnZXRXaWR0aCgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRXaWR0aDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFdpZHRoKCk8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5SZXR1cm5zIHRoZSB3aWR0aCBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24uKTwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgd2lkdGggb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uKTwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0SGVpZ2h0KCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldEhlaWdodDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldEhlaWdodCgpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBZVVYgaW1hZ2UgKG9yIHN1YnJlZ2lvbi4pPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBoZWlnaHQgb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uKTwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0UGFkKCkiPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPGg0PmdldFBhZDwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFBhZCgpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbGluZSBwYWRkaW5nIHVzZWQgaW4gdGhlIFlVViBpbWFnZSBidWZmZXIgKGlmIHRoaXMgaW1hZ2UgaXMKLSBzdG9yZWQgaW4gYSB1bmlmaWVkIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKTwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgbGluZSBwYWRkaW5nIHVzZWQgaW4gdGhlIFlVViBpbWFnZSBidWZmZXI8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFN0cmlkZXMoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0U3RyaWRlczwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludFtdJm5ic3A7Z2V0U3RyaWRlcygpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbnVtYmVyIG9mIGJ5dGVzIHBlciBsaW5lIG9mIGVhY2ggcGxhbmUgaW4gdGhlIFlVViBpbWFnZS48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIG51bWJlciBvZiBieXRlcyBwZXIgbGluZSBvZiBlYWNoIHBsYW5lIGluIHRoZSBZVVYgaW1hZ2U8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldE9mZnNldHMoKSI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0T2Zmc2V0czwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludFtdJm5ic3A7Z2V0T2Zmc2V0cygpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgb2Zmc2V0cyAoaW4gYnl0ZXMpIG9mIGVhY2ggcGxhbmUgd2l0aGluIHRoZSBwbGFuZXMgb2YgYSBsYXJnZXIKLSBZVVYgaW1hZ2UuPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBvZmZzZXRzIChpbiBieXRlcykgb2YgZWFjaCBwbGFuZSB3aXRoaW4gdGhlIHBsYW5lcyBvZiBhIGxhcmdlcgotIFlVViBpbWFnZTwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0U3Vic2FtcCgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRTdWJzYW1wPC9oND4KLTxwcmU+cHVibGljJm5ic3A7aW50Jm5ic3A7Z2V0U3Vic2FtcCgpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlLiAgU2VlCi0gPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCNTQU1QXzQ0NCI+PGNvZGU+VEouU0FNUF8qPC9jb2RlPjwvYT4uPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2U8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldFBsYW5lcygpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRQbGFuZXM8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtieXRlW11bXSZuYnNwO2dldFBsYW5lcygpPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+UmV0dXJucyB0aGUgWVVWIGltYWdlIHBsYW5lcy4gIElmIHRoZSBpbWFnZSBpcyBzdG9yZWQgaW4gYSB1bmlmaWVkIGJ1ZmZlciwKLSB0aGVuIGFsbCBpbWFnZSBwbGFuZXMgd2lsbCBwb2ludCB0byB0aGF0IGJ1ZmZlci48L2Rpdj4KLTxkbD48ZHQ+PHNwYW4gY2xhc3M9InN0cm9uZyI+UmV0dXJuczo8L3NwYW4+PC9kdD48ZGQ+dGhlIFlVViBpbWFnZSBwbGFuZXM8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTxhIG5hbWU9ImdldEJ1ZigpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5nZXRCdWY8L2g0PgotPHByZT5wdWJsaWMmbmJzcDtieXRlW10mbmJzcDtnZXRCdWYoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIFlVViBpbWFnZSBidWZmZXIgKGlmIHRoaXMgaW1hZ2UgaXMgc3RvcmVkIGluIGEgdW5pZmllZAotIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKTwvZGl2PgotPGRsPjxkdD48c3BhbiBjbGFzcz0ic3Ryb25nIj5SZXR1cm5zOjwvc3Bhbj48L2R0PjxkZD50aGUgWVVWIGltYWdlIGJ1ZmZlcjwvZGQ+PC9kbD4KLTwvbGk+Ci08L3VsPgotPGEgbmFtZT0iZ2V0U2l6ZSgpIj4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+Z2V0U2l6ZTwvaDQ+Ci08cHJlPnB1YmxpYyZuYnNwO2ludCZuYnNwO2dldFNpemUoKTwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcwotIHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pPC9kaXY+Ci08ZGw+PGR0PjxzcGFuIGNsYXNzPSJzdHJvbmciPlJldHVybnM6PC9zcGFuPjwvZHQ+PGRkPnRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIFlVViBpbWFnZSBidWZmZXI8L2RkPjwvZGw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2Rpdj4KLTwvZGl2PgotPCEtLSA9PT09PT09PT0gRU5EIE9GIENMQVNTIERBVEEgPT09PT09PT09IC0tPgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+Q2xhc3M8L2xpPgotPGxpPjxhIGhyZWY9InBhY2thZ2UtdHJlZS5odG1sIj5UcmVlPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+UHJldiBDbGFzczwvc3Bhbj48L2E+PC9saT4KLTxsaT5OZXh0IENsYXNzPC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJZVVZJbWFnZS5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08ZGl2PgotPHVsIGNsYXNzPSJzdWJOYXZMaXN0Ij4KLTxsaT5TdW1tYXJ5OiZuYnNwOzwvbGk+Ci08bGk+TmVzdGVkJm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI2ZpZWxkX3N1bW1hcnkiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9zdW1tYXJ5Ij5Db25zdHI8L2E+Jm5ic3A7fCZuYnNwOzwvbGk+Ci08bGk+PGEgaHJlZj0iI21ldGhvZF9zdW1tYXJ5Ij5NZXRob2Q8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9InN1Yk5hdkxpc3QiPgotPGxpPkRldGFpbDombmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNmaWVsZF9kZXRhaWwiPkZpZWxkPC9hPiZuYnNwO3wmbmJzcDs8L2xpPgotPGxpPjxhIGhyZWY9IiNjb25zdHJ1Y3Rvcl9kZXRhaWwiPkNvbnN0cjwvYT4mbmJzcDt8Jm5ic3A7PC9saT4KLTxsaT48YSBocmVmPSIjbWV0aG9kX2RldGFpbCI+TWV0aG9kPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1mcmFtZS5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1mcmFtZS5odG1sCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGE4YmY4Li4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2UtZnJhbWUuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxoMSBjbGFzcz0iYmFyIj48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvYT48L2gxPgotPGRpdiBjbGFzcz0iaW5kZXhDb250YWluZXIiPgotPGgyIHRpdGxlPSJJbnRlcmZhY2VzIj5JbnRlcmZhY2VzPC9oMj4KLTx1bCB0aXRsZT0iSW50ZXJmYWNlcyI+Ci08bGk+PGEgaHJlZj0iVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj48aT5USkN1c3RvbUZpbHRlcjwvaT48L2E+PC9saT4KLTwvdWw+Ci08aDIgdGl0bGU9IkNsYXNzZXMiPkNsYXNzZXM8L2gyPgotPHVsIHRpdGxlPSJDbGFzc2VzIj4KLTxsaT48YSBocmVmPSJUSi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEo8L2E+PC9saT4KLTxsaT48YSBocmVmPSJUSkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlRKQ29tcHJlc3NvcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKRGVjb21wcmVzc29yLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5USkRlY29tcHJlc3NvcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9IlRKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEpTY2FsaW5nRmFjdG9yPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iVEpUcmFuc2Zvcm0uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIiB0YXJnZXQ9ImNsYXNzRnJhbWUiPlRKVHJhbnNmb3JtPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciIHRhcmdldD0iY2xhc3NGcmFtZSI+VEpUcmFuc2Zvcm1lcjwvYT48L2xpPgotPGxpPjxhIGhyZWY9IllVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5ZVVZJbWFnZTwvYT48L2xpPgotPC91bD4KLTxoMiB0aXRsZT0iRXhjZXB0aW9ucyI+RXhjZXB0aW9uczwvaDI+Ci08dWwgdGl0bGU9IkV4Y2VwdGlvbnMiPgotPGxpPjxhIGhyZWY9IlRKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyIgdGFyZ2V0PSJjbGFzc0ZyYW1lIj5USkV4Y2VwdGlvbjwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwgYi9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjk0NjU2ZS4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbAorKysgL2Rldi9udWxsCkBAIC0xLDE5OCArMCwwIEBACi08IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgNC4wMSBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIvaHRtbDQvbG9vc2UuZHRkIj4KLTwhLS0gTmV3UGFnZSAtLT4KLTxodG1sIGxhbmc9ImVuIj4KLTxoZWFkPgotPHRpdGxlPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXYgUGFja2FnZTwvbGk+Ci08bGk+TmV4dCBQYWNrYWdlPC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS1zdW1tYXJ5Lmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfdG9wIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfdG9wIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09PSBFTkQgT0YgVE9QIE5BVkJBUiA9PT09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJoZWFkZXIiPgotPGgxIHRpdGxlPSJQYWNrYWdlIiBjbGFzcz0idGl0bGUiPlBhY2thZ2UmbmJzcDtvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvaDE+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9ImNvbnRlbnRDb250YWluZXIiPgotPHVsIGNsYXNzPSJibG9ja0xpc3QiPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPHRhYmxlIGNsYXNzPSJwYWNrYWdlU3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkludGVyZmFjZSBTdW1tYXJ5IHRhYmxlLCBsaXN0aW5nIGludGVyZmFjZXMsIGFuZCBhbiBleHBsYW5hdGlvbiI+Ci08Y2FwdGlvbj48c3Bhbj5JbnRlcmZhY2UgU3VtbWFyeTwvc3Bhbj48c3BhbiBjbGFzcz0idGFiRW5kIj4mbmJzcDs8L3NwYW4+PC9jYXB0aW9uPgotPHRyPgotPHRoIGNsYXNzPSJjb2xGaXJzdCIgc2NvcGU9ImNvbCI+SW50ZXJmYWNlPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0Ym9keT4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpDdXN0b21GaWx0ZXI8L2E+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+Ci08ZGl2IGNsYXNzPSJibG9jayI+Q3VzdG9tIGZpbHRlciBjYWxsYmFjayBpbnRlcmZhY2U8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPgotPHRhYmxlIGNsYXNzPSJwYWNrYWdlU3VtbWFyeSIgYm9yZGVyPSIwIiBjZWxscGFkZGluZz0iMyIgY2VsbHNwYWNpbmc9IjAiIHN1bW1hcnk9IkNsYXNzIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgY2xhc3NlcywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkNsYXNzIFN1bW1hcnk8L3NwYW4+PHNwYW4gY2xhc3M9InRhYkVuZCI+Jm5ic3A7PC9zcGFuPjwvY2FwdGlvbj4KLTx0cj4KLTx0aCBjbGFzcz0iY29sRmlyc3QiIHNjb3BlPSJjb2wiPkNsYXNzPC90aD4KLTx0aCBjbGFzcz0iY29sTGFzdCIgc2NvcGU9ImNvbCI+RGVzY3JpcHRpb248L3RoPgotPC90cj4KLTx0Ym9keT4KLTx0ciBjbGFzcz0iYWx0Q29sb3IiPgotPHRkIGNsYXNzPSJjb2xGaXJzdCI+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEouaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USjwvYT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UdXJib0pQRUcgdXRpbGl0eSBjbGFzcyAoY2Fubm90IGJlIGluc3RhbnRpYXRlZCk8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkNvbXByZXNzb3I8L2E+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHVyYm9KUEVHIGNvbXByZXNzb3I8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRGVjb21wcmVzc29yPC9hPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPgotPGRpdiBjbGFzcz0iYmxvY2siPlR1cmJvSlBFRyBkZWNvbXByZXNzb3I8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlNjYWxpbmdGYWN0b3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USlNjYWxpbmdGYWN0b3I8L2E+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+Ci08ZGl2IGNsYXNzPSJibG9jayI+RnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08dHIgY2xhc3M9ImFsdENvbG9yIj4KLTx0ZCBjbGFzcz0iY29sRmlyc3QiPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm08L2E+PC90ZD4KLTx0ZCBjbGFzcz0iY29sTGFzdCI+Ci08ZGl2IGNsYXNzPSJibG9jayI+TG9zc2xlc3MgdHJhbnNmb3JtIHBhcmFtZXRlcnM8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJyb3dDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybWVyLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+VEpUcmFuc2Zvcm1lcjwvYT48L3RkPgotPHRkIGNsYXNzPSJjb2xMYXN0Ij4KLTxkaXYgY2xhc3M9ImJsb2NrIj5UdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXI8L2Rpdj4KLTwvdGQ+Ci08L3RyPgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9ZVVZJbWFnZS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPllVVkltYWdlPC9hPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPgotPGRpdiBjbGFzcz0iYmxvY2siPlRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgdGhlIG1ldGFkYXRhCi0gYXNzb2NpYXRlZCB3aXRoIGl0LjwvZGl2PgotPC90ZD4KLTwvdHI+Ci08L3Rib2R5PgotPC90YWJsZT4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08dGFibGUgY2xhc3M9InBhY2thZ2VTdW1tYXJ5IiBib3JkZXI9IjAiIGNlbGxwYWRkaW5nPSIzIiBjZWxsc3BhY2luZz0iMCIgc3VtbWFyeT0iRXhjZXB0aW9uIFN1bW1hcnkgdGFibGUsIGxpc3RpbmcgZXhjZXB0aW9ucywgYW5kIGFuIGV4cGxhbmF0aW9uIj4KLTxjYXB0aW9uPjxzcGFuPkV4Y2VwdGlvbiBTdW1tYXJ5PC9zcGFuPjxzcGFuIGNsYXNzPSJ0YWJFbmQiPiZuYnNwOzwvc3Bhbj48L2NhcHRpb24+Ci08dHI+Ci08dGggY2xhc3M9ImNvbEZpcnN0IiBzY29wZT0iY29sIj5FeGNlcHRpb248L3RoPgotPHRoIGNsYXNzPSJjb2xMYXN0IiBzY29wZT0iY29sIj5EZXNjcmlwdGlvbjwvdGg+Ci08L3RyPgotPHRib2R5PgotPHRyIGNsYXNzPSJhbHRDb2xvciI+Ci08dGQgY2xhc3M9ImNvbEZpcnN0Ij48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPlRKRXhjZXB0aW9uPC9hPjwvdGQ+Ci08dGQgY2xhc3M9ImNvbExhc3QiPiZuYnNwOzwvdGQ+Ci08L3RyPgotPC90Ym9keT4KLTwvdGFibGU+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2RlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+UHJldiBQYWNrYWdlPC9saT4KLTxsaT5OZXh0IFBhY2thZ2U8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXN1bW1hcnkuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2phdmEvZG9jL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2UtdHJlZS5odG1sIGIvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYTVjZGUuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTYgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tIE5ld1BhZ2UgLS0+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTx0aXRsZT5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyBDbGFzcyBIaWVyYXJjaHk8L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vLi4vc3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcgQ2xhc3MgSGllcmFyY2h5IjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGkgY2xhc3M9Im5hdkJhckNlbGwxUmV2Ij5UcmVlPC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9kZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2hlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXY8L2xpPgotPGxpPk5leHQ8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbD9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJwYWNrYWdlLXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2FsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImhlYWRlciI+Ci08aDEgY2xhc3M9InRpdGxlIj5IaWVyYXJjaHkgRm9yIFBhY2thZ2Ugb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc8L2gxPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjb250ZW50Q29udGFpbmVyIj4KLTxoMiB0aXRsZT0iQ2xhc3MgSGllcmFyY2h5Ij5DbGFzcyBIaWVyYXJjaHk8L2gyPgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdAotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuZ2VvbS5SZWN0YW5ndWxhclNoYXBlIChpbXBsZW1lbnRzIGphdmEubGFuZy5DbG9uZWFibGUsIGphdmEuYXd0LlNoYXBlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRAotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuUmVjdGFuZ2xlIChpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZhLmF3dC5TaGFwZSkKLTx1bD4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEpUcmFuc2Zvcm08L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGkgdHlwZT0iY2lyY2xlIj5qYXZhLmxhbmcuVGhyb3dhYmxlIChpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5sYW5nLkV4Y2VwdGlvbgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5pby5JT0V4Y2VwdGlvbgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkV4Y2VwdGlvbjwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEo8L3NwYW4+PC9hPjwvbGk+Ci08bGkgdHlwZT0iY2lyY2xlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSIuLi8uLi8uLi9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkNvbXByZXNzb3I8L3NwYW4+PC9hPiAoaW1wbGVtZW50cyBqYXZhLmlvLkNsb3NlYWJsZSk8L2xpPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkRlY29tcHJlc3Nvcjwvc3Bhbj48L2E+IChpbXBsZW1lbnRzIGphdmEuaW8uQ2xvc2VhYmxlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKVHJhbnNmb3JtZXI8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKU2NhbGluZ0ZhY3Rvcjwvc3Bhbj48L2E+PC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+WVVWSW1hZ2U8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08aDIgdGl0bGU9IkludGVyZmFjZSBIaWVyYXJjaHkiPkludGVyZmFjZSBIaWVyYXJjaHk8L2gyPgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0iLi4vLi4vLi4vb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEpDdXN0b21GaWx0ZXI8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJib3R0b21OYXYiPjxhIG5hbWU9Im5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+VHJlZTwvbGk+Ci08bGk+PGEgaHJlZj0iLi4vLi4vLi4vZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9pbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9oZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9Ii4uLy4uLy4uL2luZGV4Lmh0bWw/b3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+RnJhbWVzPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0icGFja2FnZS10cmVlLmh0bWwiIHRhcmdldD0iX3RvcCI+Tm8gRnJhbWVzPC9hPjwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0IiBpZD0iYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIj4KLTxsaT48YSBocmVmPSIuLi8uLi8uLi9hbGxjbGFzc2VzLW5vZnJhbWUuaHRtbCI+QWxsIENsYXNzZXM8L2E+PC9saT4KLTwvdWw+Ci08ZGl2PgotPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPjwhLS0KLSAgYWxsQ2xhc3Nlc0xpbmsgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgiYWxsY2xhc3Nlc19uYXZiYXJfYm90dG9tIik7Ci0gIGlmKHdpbmRvdz09dG9wKSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJibG9jayI7Ci0gIH0KLSAgZWxzZSB7Ci0gICAgYWxsQ2xhc3Nlc0xpbmsuc3R5bGUuZGlzcGxheSA9ICJub25lIjsKLSAgfQotICAvLy0tPgotPC9zY3JpcHQ+Ci08L2Rpdj4KLTxhIG5hbWU9InNraXAtbmF2YmFyX2JvdHRvbSI+Ci08IS0tICAgLS0+Ci08L2E+PC9kaXY+Ci08IS0tID09PT09PT09IEVORCBPRiBCT1RUT00gTkFWQkFSID09PT09PT0gLS0+Ci08L2JvZHk+Ci08L2h0bWw+CmRpZmYgLS1naXQgYS9qYXZhL2RvYy9vdmVydmlldy10cmVlLmh0bWwgYi9qYXZhL2RvYy9vdmVydmlldy10cmVlLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhZTc2YzYuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvb3ZlcnZpZXctdHJlZS5odG1sCisrKyAvZGV2L251bGwKQEAgLTEsMTYwICswLDAgQEAKLTwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCA0LjAxIFRyYW5zaXRpb25hbC8vRU4iICJodHRwOi8vd3d3LnczLm9yZy9UUi9odG1sNC9sb29zZS5kdGQiPgotPCEtLSBOZXdQYWdlIC0tPgotPGh0bWwgbGFuZz0iZW4iPgotPGhlYWQ+Ci08dGl0bGU+Q2xhc3MgSGllcmFyY2h5PC90aXRsZT4KLTxsaW5rIHJlbD0ic3R5bGVzaGVldCIgdHlwZT0idGV4dC9jc3MiIGhyZWY9InN0eWxlc2hlZXQuY3NzIiB0aXRsZT0iU3R5bGUiPgotPC9oZWFkPgotPGJvZHk+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICAgIGlmIChsb2NhdGlvbi5ocmVmLmluZGV4T2YoJ2lzLWV4dGVybmFsPXRydWUnKSA9PSAtMSkgewotICAgICAgICBwYXJlbnQuZG9jdW1lbnQudGl0bGU9IkNsYXNzIEhpZXJhcmNoeSI7Ci0gICAgfQotLy8tLT4KLTwvc2NyaXB0PgotPG5vc2NyaXB0PgotPGRpdj5KYXZhU2NyaXB0IGlzIGRpc2FibGVkIG9uIHlvdXIgYnJvd3Nlci48L2Rpdj4KLTwvbm9zY3JpcHQ+Ci08IS0tID09PT09PT09PSBTVEFSVCBPRiBUT1AgTkFWQkFSID09PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJ0b3BOYXYiPjxhIG5hbWU9Im5hdmJhcl90b3AiPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl90b3AiIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfdG9wX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+VHJlZTwvbGk+Ci08bGk+PGEgaHJlZj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSJpbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSJoZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im92ZXJ2aWV3LXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImhlYWRlciI+Ci08aDEgY2xhc3M9InRpdGxlIj5IaWVyYXJjaHkgRm9yIEFsbCBQYWNrYWdlczwvaDE+Ci08c3BhbiBjbGFzcz0ic3Ryb25nIj5QYWNrYWdlIEhpZXJhcmNoaWVzOjwvc3Bhbj4KLTx1bCBjbGFzcz0iaG9yaXpvbnRhbCI+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJjb250ZW50Q29udGFpbmVyIj4KLTxoMiB0aXRsZT0iQ2xhc3MgSGllcmFyY2h5Ij5DbGFzcyBIaWVyYXJjaHk8L2gyPgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5sYW5nLk9iamVjdAotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuZ2VvbS5SZWN0YW5ndWxhclNoYXBlIChpbXBsZW1lbnRzIGphdmEubGFuZy5DbG9uZWFibGUsIGphdmEuYXd0LlNoYXBlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuZ2VvbS5SZWN0YW5nbGUyRAotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5hd3QuUmVjdGFuZ2xlIChpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlLCBqYXZhLmF3dC5TaGFwZSkKLTx1bD4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEpUcmFuc2Zvcm08L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08bGkgdHlwZT0iY2lyY2xlIj5qYXZhLmxhbmcuVGhyb3dhYmxlIChpbXBsZW1lbnRzIGphdmEuaW8uU2VyaWFsaXphYmxlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5sYW5nLkV4Y2VwdGlvbgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+amF2YS5pby5JT0V4Y2VwdGlvbgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpFeGNlcHRpb24uaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkV4Y2VwdGlvbjwvc3Bhbj48L2E+PC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEo8L3NwYW4+PC9hPjwvbGk+Ci08bGkgdHlwZT0iY2lyY2xlIj5vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZy48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkNvbXByZXNzb3I8L3NwYW4+PC9hPiAoaW1wbGVtZW50cyBqYXZhLmlvLkNsb3NlYWJsZSk8L2xpPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpEZWNvbXByZXNzb3IuaHRtbCIgdGl0bGU9ImNsYXNzIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj48c3BhbiBjbGFzcz0ic3Ryb25nIj5USkRlY29tcHJlc3Nvcjwvc3Bhbj48L2E+IChpbXBsZW1lbnRzIGphdmEuaW8uQ2xvc2VhYmxlKQotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKVHJhbnNmb3JtZXI8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPjxzcGFuIGNsYXNzPSJzdHJvbmciPlRKU2NhbGluZ0ZhY3Rvcjwvc3Bhbj48L2E+PC9saT4KLTxsaSB0eXBlPSJjaXJjbGUiPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+WVVWSW1hZ2U8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08aDIgdGl0bGU9IkludGVyZmFjZSBIaWVyYXJjaHkiPkludGVyZmFjZSBIaWVyYXJjaHk8L2gyPgotPHVsPgotPGxpIHR5cGU9ImNpcmNsZSI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuPGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuaHRtbCIgdGl0bGU9ImludGVyZmFjZSBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+PHNwYW4gY2xhc3M9InN0cm9uZyI+VEpDdXN0b21GaWx0ZXI8L3NwYW4+PC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08IS0tID09PT09PT0gU1RBUlQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT0gLS0+Ci08ZGl2IGNsYXNzPSJib3R0b21OYXYiPjxhIG5hbWU9Im5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjxhIGhyZWY9IiNza2lwLW5hdmJhcl9ib3R0b20iIHRpdGxlPSJTa2lwIG5hdmlnYXRpb24gbGlua3MiPjwvYT48YSBuYW1lPSJuYXZiYXJfYm90dG9tX2ZpcnN0cm93Ij4KLTwhLS0gICAtLT4KLTwvYT4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgdGl0bGU9Ik5hdmlnYXRpb24iPgotPGxpPjxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL3BhY2thZ2Utc3VtbWFyeS5odG1sIj5QYWNrYWdlPC9hPjwvbGk+Ci08bGk+Q2xhc3M8L2xpPgotPGxpIGNsYXNzPSJuYXZCYXJDZWxsMVJldiI+VHJlZTwvbGk+Ci08bGk+PGEgaHJlZj0iZGVwcmVjYXRlZC1saXN0Lmh0bWwiPkRlcHJlY2F0ZWQ8L2E+PC9saT4KLTxsaT48YSBocmVmPSJpbmRleC1hbGwuaHRtbCI+SW5kZXg8L2E+PC9saT4KLTxsaT48YSBocmVmPSJoZWxwLWRvYy5odG1sIj5IZWxwPC9hPjwvbGk+Ci08L3VsPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzdWJOYXYiPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT5QcmV2PC9saT4KLTxsaT5OZXh0PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPjxhIGhyZWY9ImluZGV4Lmh0bWw/b3ZlcnZpZXctdHJlZS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9Im92ZXJ2aWV3LXRyZWUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iPgotPGxpPjxhIGhyZWY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl9ib3R0b20iKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT0gRU5EIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09PSAtLT4KLTwvYm9keT4KLTwvaHRtbD4KZGlmZiAtLWdpdCBhL2phdmEvZG9jL3BhY2thZ2UtbGlzdCBiL2phdmEvZG9jL3BhY2thZ2UtbGlzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE4ZDkzNi4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9wYWNrYWdlLWxpc3QKKysrIC9kZXYvbnVsbApAQCAtMSArMCwwIEBACi1vcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZwpkaWZmIC0tZ2l0IGEvamF2YS9kb2MvcmVzb3VyY2VzL2JhY2tncm91bmQuZ2lmIGIvamF2YS9kb2MvcmVzb3VyY2VzL2JhY2tncm91bmQuZ2lmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNDcxOTQwLi4wMDAwMDAwCi0tLSBhL2phdmEvZG9jL3Jlc291cmNlcy9iYWNrZ3JvdW5kLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvZG9jL3Jlc291cmNlcy90YWIuZ2lmIGIvamF2YS9kb2MvcmVzb3VyY2VzL3RhYi5naWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNzNhODMuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2MvcmVzb3VyY2VzL3RhYi5naWYKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS9qYXZhL2RvYy9yZXNvdXJjZXMvdGl0bGViYXIuZ2lmIGIvamF2YS9kb2MvcmVzb3VyY2VzL3RpdGxlYmFyLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc0NDNiMy4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9yZXNvdXJjZXMvdGl0bGViYXIuZ2lmCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvamF2YS9kb2MvcmVzb3VyY2VzL3RpdGxlYmFyX2VuZC5naWYgYi9qYXZhL2RvYy9yZXNvdXJjZXMvdGl0bGViYXJfZW5kLmdpZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2FkNzhkNC4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9yZXNvdXJjZXMvdGl0bGViYXJfZW5kLmdpZgorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL2phdmEvZG9jL3NlcmlhbGl6ZWQtZm9ybS5odG1sIGIvamF2YS9kb2Mvc2VyaWFsaXplZC1mb3JtLmh0bWwKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0NmNhYmMuLjAwMDAwMDAKLS0tIGEvamF2YS9kb2Mvc2VyaWFsaXplZC1mb3JtLmh0bWwKKysrIC9kZXYvbnVsbApAQCAtMSwxNTkgKzAsMCBAQAotPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDQuMDEgVHJhbnNpdGlvbmFsLy9FTiIgImh0dHA6Ly93d3cudzMub3JnL1RSL2h0bWw0L2xvb3NlLmR0ZCI+Ci08IS0tIE5ld1BhZ2UgLS0+Ci08aHRtbCBsYW5nPSJlbiI+Ci08aGVhZD4KLTx0aXRsZT5TZXJpYWxpemVkIEZvcm08L3RpdGxlPgotPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0ic3R5bGVzaGVldC5jc3MiIHRpdGxlPSJTdHlsZSI+Ci08L2hlYWQ+Ci08Ym9keT4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gICAgaWYgKGxvY2F0aW9uLmhyZWYuaW5kZXhPZignaXMtZXh0ZXJuYWw9dHJ1ZScpID09IC0xKSB7Ci0gICAgICAgIHBhcmVudC5kb2N1bWVudC50aXRsZT0iU2VyaWFsaXplZCBGb3JtIjsKLSAgICB9Ci0vLy0tPgotPC9zY3JpcHQ+Ci08bm9zY3JpcHQ+Ci08ZGl2PkphdmFTY3JpcHQgaXMgZGlzYWJsZWQgb24geW91ciBicm93c2VyLjwvZGl2PgotPC9ub3NjcmlwdD4KLTwhLS0gPT09PT09PT09IFNUQVJUIE9GIFRPUCBOQVZCQVIgPT09PT09PSAtLT4KLTxkaXYgY2xhc3M9InRvcE5hdiI+PGEgbmFtZT0ibmF2YmFyX3RvcCI+Ci08IS0tICAgLS0+Ci08L2E+PGEgaHJlZj0iI3NraXAtbmF2YmFyX3RvcCIgdGl0bGU9IlNraXAgbmF2aWdhdGlvbiBsaW5rcyI+PC9hPjxhIG5hbWU9Im5hdmJhcl90b3BfZmlyc3Ryb3ciPgotPCEtLSAgIC0tPgotPC9hPgotPHVsIGNsYXNzPSJuYXZMaXN0IiB0aXRsZT0iTmF2aWdhdGlvbiI+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS1zdW1tYXJ5Lmh0bWwiPlBhY2thZ2U8L2E+PC9saT4KLTxsaT5DbGFzczwvbGk+Ci08bGk+PGEgaHJlZj0ib3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvcGFja2FnZS10cmVlLmh0bWwiPlRyZWU8L2E+PC9saT4KLTxsaT48YSBocmVmPSJkZXByZWNhdGVkLWxpc3QuaHRtbCI+RGVwcmVjYXRlZDwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImluZGV4LWFsbC5odG1sIj5JbmRleDwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImhlbHAtZG9jLmh0bWwiPkhlbHA8L2E+PC9saT4KLTwvdWw+Ci08L2Rpdj4KLTxkaXYgY2xhc3M9InN1Yk5hdiI+Ci08dWwgY2xhc3M9Im5hdkxpc3QiPgotPGxpPlByZXY8L2xpPgotPGxpPk5leHQ8L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+PGEgaHJlZj0iaW5kZXguaHRtbD9zZXJpYWxpemVkLWZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj5GcmFtZXM8L2E+PC9saT4KLTxsaT48YSBocmVmPSJzZXJpYWxpemVkLWZvcm0uaHRtbCIgdGFyZ2V0PSJfdG9wIj5ObyBGcmFtZXM8L2E+PC9saT4KLTwvdWw+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIGlkPSJhbGxjbGFzc2VzX25hdmJhcl90b3AiPgotPGxpPjxhIGhyZWY9ImFsbGNsYXNzZXMtbm9mcmFtZS5odG1sIj5BbGwgQ2xhc3NlczwvYT48L2xpPgotPC91bD4KLTxkaXY+Ci08c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCI+PCEtLQotICBhbGxDbGFzc2VzTGluayA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJhbGxjbGFzc2VzX25hdmJhcl90b3AiKTsKLSAgaWYod2luZG93PT10b3ApIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gImJsb2NrIjsKLSAgfQotICBlbHNlIHsKLSAgICBhbGxDbGFzc2VzTGluay5zdHlsZS5kaXNwbGF5ID0gIm5vbmUiOwotICB9Ci0gIC8vLS0+Ci08L3NjcmlwdD4KLTwvZGl2PgotPGEgbmFtZT0ic2tpcC1uYXZiYXJfdG9wIj4KLTwhLS0gICAtLT4KLTwvYT48L2Rpdj4KLTwhLS0gPT09PT09PT09IEVORCBPRiBUT1AgTkFWQkFSID09PT09PT09PSAtLT4KLTxkaXYgY2xhc3M9ImhlYWRlciI+Ci08aDEgdGl0bGU9IlNlcmlhbGl6ZWQgRm9ybSIgY2xhc3M9InRpdGxlIj5TZXJpYWxpemVkIEZvcm08L2gxPgotPC9kaXY+Ci08ZGl2IGNsYXNzPSJzZXJpYWxpemVkRm9ybUNvbnRhaW5lciI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDIgdGl0bGU9IlBhY2thZ2UiPlBhY2thZ2UmbmJzcDtvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzwvaDI+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ib3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpFeGNlcHRpb24iPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPkNsYXNzIDxhIGhyZWY9Im9yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmh0bWwiIHRpdGxlPSJjbGFzcyBpbiBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZyI+b3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWcuVEpFeGNlcHRpb248L2E+IGV4dGVuZHMgamF2YS5pby5JT0V4Y2VwdGlvbiBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZTwvaDM+Ci08ZGwgY2xhc3M9Im5hbWVWYWx1ZSI+Ci08ZHQ+c2VyaWFsVmVyc2lvblVJRDo8L2R0PgotPGRkPjFMPC9kZD4KLTwvZGw+Ci08L2xpPgotPGxpIGNsYXNzPSJibG9ja0xpc3QiPjxhIG5hbWU9Im9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtIj4KLTwhLS0gICAtLT4KLTwvYT4KLTxoMz5DbGFzcyA8YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybS5odG1sIiB0aXRsZT0iY2xhc3MgaW4gb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWciPm9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnLlRKVHJhbnNmb3JtPC9hPiBleHRlbmRzIGphdmEuYXd0LlJlY3RhbmdsZSBpbXBsZW1lbnRzIFNlcmlhbGl6YWJsZTwvaDM+Ci08ZGwgY2xhc3M9Im5hbWVWYWx1ZSI+Ci08ZHQ+c2VyaWFsVmVyc2lvblVJRDo8L2R0PgotPGRkPi0xMjczNjc3MDU3NjE0MzAzNzFMPC9kZD4KLTwvZGw+Ci08dWwgY2xhc3M9ImJsb2NrTGlzdCI+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+PGEgbmFtZT0ic2VyaWFsaXplZEZvcm0iPgotPCEtLSAgIC0tPgotPC9hPgotPGgzPlNlcmlhbGl6ZWQgRmllbGRzPC9oMz4KLTx1bCBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0Ij4KLTxoND5vcDwvaDQ+Ci08cHJlPmludCBvcDwvcHJlPgotPGRpdiBjbGFzcz0iYmxvY2siPlRyYW5zZm9ybSBvcGVyYXRpb24gKG9uZSBvZiA8Y29kZT5PUF8qPC9jb2RlPik8L2Rpdj4KLTwvbGk+Ci08bGkgY2xhc3M9ImJsb2NrTGlzdCI+Ci08aDQ+b3B0aW9uczwvaDQ+Ci08cHJlPmludCBvcHRpb25zPC9wcmU+Ci08ZGl2IGNsYXNzPSJibG9jayI+VHJhbnNmb3JtIG9wdGlvbnMgKGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgPGNvZGU+T1BUXyo8L2NvZGU+KTwvZGl2PgotPC9saT4KLTxsaSBjbGFzcz0iYmxvY2tMaXN0TGFzdCI+Ci08aDQ+Y2Y8L2g0PgotPHByZT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5odG1sIiB0aXRsZT0iaW50ZXJmYWNlIGluIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnIj5USkN1c3RvbUZpbHRlcjwvYT4gY2Y8L3ByZT4KLTxkaXYgY2xhc3M9ImJsb2NrIj5DdXN0b20gZmlsdGVyIGluc3RhbmNlPC9kaXY+Ci08L2xpPgotPC91bD4KLTwvbGk+Ci08L3VsPgotPC9saT4KLTwvdWw+Ci08L2xpPgotPC91bD4KLTwvZGl2PgotPCEtLSA9PT09PT09IFNUQVJUIE9GIEJPVFRPTSBOQVZCQVIgPT09PT09IC0tPgotPGRpdiBjbGFzcz0iYm90dG9tTmF2Ij48YSBuYW1lPSJuYXZiYXJfYm90dG9tIj4KLTwhLS0gICAtLT4KLTwvYT48YSBocmVmPSIjc2tpcC1uYXZiYXJfYm90dG9tIiB0aXRsZT0iU2tpcCBuYXZpZ2F0aW9uIGxpbmtzIj48L2E+PGEgbmFtZT0ibmF2YmFyX2JvdHRvbV9maXJzdHJvdyI+Ci08IS0tICAgLS0+Ci08L2E+Ci08dWwgY2xhc3M9Im5hdkxpc3QiIHRpdGxlPSJOYXZpZ2F0aW9uIj4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXN1bW1hcnkuaHRtbCI+UGFja2FnZTwvYT48L2xpPgotPGxpPkNsYXNzPC9saT4KLTxsaT48YSBocmVmPSJvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9wYWNrYWdlLXRyZWUuaHRtbCI+VHJlZTwvYT48L2xpPgotPGxpPjxhIGhyZWY9ImRlcHJlY2F0ZWQtbGlzdC5odG1sIj5EZXByZWNhdGVkPC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iaW5kZXgtYWxsLmh0bWwiPkluZGV4PC9hPjwvbGk+Ci08bGk+PGEgaHJlZj0iaGVscC1kb2MuaHRtbCI+SGVscDwvYT48L2xpPgotPC91bD4KLTwvZGl2PgotPGRpdiBjbGFzcz0ic3ViTmF2Ij4KLTx1bCBjbGFzcz0ibmF2TGlzdCI+Ci08bGk+UHJldjwvbGk+Ci08bGk+TmV4dDwvbGk+Ci08L3VsPgotPHVsIGNsYXNzPSJuYXZMaXN0Ij4KLTxsaT48YSBocmVmPSJpbmRleC5odG1sP3NlcmlhbGl6ZWQtZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPkZyYW1lczwvYT48L2xpPgotPGxpPjxhIGhyZWY9InNlcmlhbGl6ZWQtZm9ybS5odG1sIiB0YXJnZXQ9Il90b3AiPk5vIEZyYW1lczwvYT48L2xpPgotPC91bD4KLTx1bCBjbGFzcz0ibmF2TGlzdCIgaWQ9ImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSI+Ci08bGk+PGEgaHJlZj0iYWxsY2xhc3Nlcy1ub2ZyYW1lLmh0bWwiPkFsbCBDbGFzc2VzPC9hPjwvbGk+Ci08L3VsPgotPGRpdj4KLTxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij48IS0tCi0gIGFsbENsYXNzZXNMaW5rID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoImFsbGNsYXNzZXNfbmF2YmFyX2JvdHRvbSIpOwotICBpZih3aW5kb3c9PXRvcCkgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAiYmxvY2siOwotICB9Ci0gIGVsc2UgewotICAgIGFsbENsYXNzZXNMaW5rLnN0eWxlLmRpc3BsYXkgPSAibm9uZSI7Ci0gIH0KLSAgLy8tLT4KLTwvc2NyaXB0PgotPC9kaXY+Ci08YSBuYW1lPSJza2lwLW5hdmJhcl9ib3R0b20iPgotPCEtLSAgIC0tPgotPC9hPjwvZGl2PgotPCEtLSA9PT09PT09PSBFTkQgT0YgQk9UVE9NIE5BVkJBUiA9PT09PT09IC0tPgotPC9ib2R5PgotPC9odG1sPgpkaWZmIC0tZ2l0IGEvamF2YS9kb2Mvc3R5bGVzaGVldC5jc3MgYi9qYXZhL2RvYy9zdHlsZXNoZWV0LmNzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGFlYWE5Ny4uMDAwMDAwMAotLS0gYS9qYXZhL2RvYy9zdHlsZXNoZWV0LmNzcworKysgL2Rldi9udWxsCkBAIC0xLDQ3NCArMCwwIEBACi0vKiBKYXZhZG9jIHN0eWxlIHNoZWV0ICovCi0vKgotT3ZlcmFsbCBkb2N1bWVudCBzdHlsZQotKi8KLWJvZHkgewotICAgIGJhY2tncm91bmQtY29sb3I6I2ZmZmZmZjsKLSAgICBjb2xvcjojMzUzODMzOwotICAgIGZvbnQtZmFtaWx5OkFyaWFsLCBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7Ci0gICAgZm9udC1zaXplOjc2JTsKLSAgICBtYXJnaW46MDsKLX0KLWE6bGluaywgYTp2aXNpdGVkIHsKLSAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKLSAgICBjb2xvcjojNGM2Yjg3OwotfQotYTpob3ZlciwgYTpmb2N1cyB7Ci0gICAgdGV4dC1kZWNvcmF0aW9uOm5vbmU7Ci0gICAgY29sb3I6I2JiN2EyYTsKLX0KLWE6YWN0aXZlIHsKLSAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKLSAgICBjb2xvcjojNGM2Yjg3OwotfQotYVtuYW1lXSB7Ci0gICAgY29sb3I6IzM1MzgzMzsKLX0KLWFbbmFtZV06aG92ZXIgewotICAgIHRleHQtZGVjb3JhdGlvbjpub25lOwotICAgIGNvbG9yOiMzNTM4MzM7Ci19Ci1wcmUgewotICAgIGZvbnQtc2l6ZToxLjNlbTsKLX0KLWgxIHsKLSAgICBmb250LXNpemU6MS44ZW07Ci19Ci1oMiB7Ci0gICAgZm9udC1zaXplOjEuNWVtOwotfQotaDMgewotICAgIGZvbnQtc2l6ZToxLjRlbTsKLX0KLWg0IHsKLSAgICBmb250LXNpemU6MS4zZW07Ci19Ci1oNSB7Ci0gICAgZm9udC1zaXplOjEuMmVtOwotfQotaDYgewotICAgIGZvbnQtc2l6ZToxLjFlbTsKLX0KLXVsIHsKLSAgICBsaXN0LXN0eWxlLXR5cGU6ZGlzYzsKLX0KLWNvZGUsIHR0IHsKLSAgICBmb250LXNpemU6MS4yZW07Ci19Ci1kdCBjb2RlIHsKLSAgICBmb250LXNpemU6MS4yZW07Ci19Ci10YWJsZSB0ciB0ZCBkdCBjb2RlIHsKLSAgICBmb250LXNpemU6MS4yZW07Ci0gICAgdmVydGljYWwtYWxpZ246dG9wOwotfQotc3VwIHsKLSAgICBmb250LXNpemU6LjZlbTsKLX0KLS8qCi1Eb2N1bWVudCB0aXRsZSBhbmQgQ29weXJpZ2h0IHN0eWxlcwotKi8KLS5jbGVhciB7Ci0gICAgY2xlYXI6Ym90aDsKLSAgICBoZWlnaHQ6MHB4OwotICAgIG92ZXJmbG93OmhpZGRlbjsKLX0KLS5hYm91dExhbmd1YWdlIHsKLSAgICBmbG9hdDpyaWdodDsKLSAgICBwYWRkaW5nOjBweCAyMXB4OwotICAgIGZvbnQtc2l6ZTouOGVtOwotICAgIHotaW5kZXg6MjAwOwotICAgIG1hcmdpbi10b3A6LTdweDsKLX0KLS5sZWdhbENvcHkgewotICAgIG1hcmdpbi1sZWZ0Oi41ZW07Ci19Ci0uYmFyIGEsIC5iYXIgYTpsaW5rLCAuYmFyIGE6dmlzaXRlZCwgLmJhciBhOmFjdGl2ZSB7Ci0gICAgY29sb3I6I0ZGRkZGRjsKLSAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKLX0KLS5iYXIgYTpob3ZlciwgLmJhciBhOmZvY3VzIHsKLSAgICBjb2xvcjojYmI3YTJhOwotfQotLnRhYiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjojMDA2NkZGOwotICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKHJlc291cmNlcy90aXRsZWJhci5naWYpOwotICAgIGJhY2tncm91bmQtcG9zaXRpb246bGVmdCB0b3A7Ci0gICAgYmFja2dyb3VuZC1yZXBlYXQ6bm8tcmVwZWF0OwotICAgIGNvbG9yOiNmZmZmZmY7Ci0gICAgcGFkZGluZzo4cHg7Ci0gICAgd2lkdGg6NWVtOwotICAgIGZvbnQtd2VpZ2h0OmJvbGQ7Ci19Ci0vKgotTmF2aWdhdGlvbiBiYXIgc3R5bGVzCi0qLwotLmJhciB7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTp1cmwocmVzb3VyY2VzL2JhY2tncm91bmQuZ2lmKTsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKLSAgICBjb2xvcjojRkZGRkZGOwotICAgIHBhZGRpbmc6LjhlbSAuNWVtIC40ZW0gLjhlbTsKLSAgICBoZWlnaHQ6YXV0bzsvKmhlaWdodDoxLjhlbTsqLwotICAgIGZvbnQtc2l6ZToxZW07Ci0gICAgbWFyZ2luOjA7Ci19Ci0udG9wTmF2IHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOnVybChyZXNvdXJjZXMvYmFja2dyb3VuZC5naWYpOwotICAgIGJhY2tncm91bmQtcmVwZWF0OnJlcGVhdC14OwotICAgIGNvbG9yOiNGRkZGRkY7Ci0gICAgZmxvYXQ6bGVmdDsKLSAgICBwYWRkaW5nOjA7Ci0gICAgd2lkdGg6MTAwJTsKLSAgICBjbGVhcjpyaWdodDsKLSAgICBoZWlnaHQ6Mi44ZW07Ci0gICAgcGFkZGluZy10b3A6MTBweDsKLSAgICBvdmVyZmxvdzpoaWRkZW47Ci19Ci0uYm90dG9tTmF2IHsKLSAgICBtYXJnaW4tdG9wOjEwcHg7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTp1cmwocmVzb3VyY2VzL2JhY2tncm91bmQuZ2lmKTsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDpyZXBlYXQteDsKLSAgICBjb2xvcjojRkZGRkZGOwotICAgIGZsb2F0OmxlZnQ7Ci0gICAgcGFkZGluZzowOwotICAgIHdpZHRoOjEwMCU7Ci0gICAgY2xlYXI6cmlnaHQ7Ci0gICAgaGVpZ2h0OjIuOGVtOwotICAgIHBhZGRpbmctdG9wOjEwcHg7Ci0gICAgb3ZlcmZsb3c6aGlkZGVuOwotfQotLnN1Yk5hdiB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjojZGVlM2U5OwotICAgIGJvcmRlci1ib3R0b206MXB4IHNvbGlkICM5ZWFkYzA7Ci0gICAgZmxvYXQ6bGVmdDsKLSAgICB3aWR0aDoxMDAlOwotICAgIG92ZXJmbG93OmhpZGRlbjsKLX0KLS5zdWJOYXYgZGl2IHsKLSAgICBjbGVhcjpsZWZ0OwotICAgIGZsb2F0OmxlZnQ7Ci0gICAgcGFkZGluZzowIDAgNXB4IDZweDsKLX0KLXVsLm5hdkxpc3QsIHVsLnN1Yk5hdkxpc3QgewotICAgIGZsb2F0OmxlZnQ7Ci0gICAgbWFyZ2luOjAgMjVweCAwIDA7Ci0gICAgcGFkZGluZzowOwotfQotdWwubmF2TGlzdCBsaXsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci0gICAgZmxvYXQ6bGVmdDsKLSAgICBwYWRkaW5nOjNweCA2cHg7Ci19Ci11bC5zdWJOYXZMaXN0IGxpewotICAgIGxpc3Qtc3R5bGU6bm9uZTsKLSAgICBmbG9hdDpsZWZ0OwotICAgIGZvbnQtc2l6ZTo5MCU7Ci19Ci0udG9wTmF2IGE6bGluaywgLnRvcE5hdiBhOmFjdGl2ZSwgLnRvcE5hdiBhOnZpc2l0ZWQsIC5ib3R0b21OYXYgYTpsaW5rLCAuYm90dG9tTmF2IGE6YWN0aXZlLCAuYm90dG9tTmF2IGE6dmlzaXRlZCB7Ci0gICAgY29sb3I6I0ZGRkZGRjsKLSAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKLX0KLS50b3BOYXYgYTpob3ZlciwgLmJvdHRvbU5hdiBhOmhvdmVyIHsKLSAgICB0ZXh0LWRlY29yYXRpb246bm9uZTsKLSAgICBjb2xvcjojYmI3YTJhOwotfQotLm5hdkJhckNlbGwxUmV2IHsKLSAgICBiYWNrZ3JvdW5kLWltYWdlOnVybChyZXNvdXJjZXMvdGFiLmdpZik7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjojYTg4ODM0OwotICAgIGNvbG9yOiNGRkZGRkY7Ci0gICAgbWFyZ2luOiBhdXRvIDVweDsKLSAgICBib3JkZXI6MXB4IHNvbGlkICNjOWFhNDQ7Ci19Ci0vKgotUGFnZSBoZWFkZXIgYW5kIGZvb3RlciBzdHlsZXMKLSovCi0uaGVhZGVyLCAuZm9vdGVyIHsKLSAgICBjbGVhcjpib3RoOwotICAgIG1hcmdpbjowIDIwcHg7Ci0gICAgcGFkZGluZzo1cHggMCAwIDA7Ci19Ci0uaW5kZXhIZWFkZXIgewotICAgIG1hcmdpbjoxMHB4OwotICAgIHBvc2l0aW9uOnJlbGF0aXZlOwotfQotLmluZGV4SGVhZGVyIGgxIHsKLSAgICBmb250LXNpemU6MS4zZW07Ci19Ci0udGl0bGUgewotICAgIGNvbG9yOiMyYzQ1NTc7Ci0gICAgbWFyZ2luOjEwcHggMDsKLX0KLS5zdWJUaXRsZSB7Ci0gICAgbWFyZ2luOjVweCAwIDAgMDsKLX0KLS5oZWFkZXIgdWwgewotICAgIG1hcmdpbjowIDAgMjVweCAwOwotICAgIHBhZGRpbmc6MDsKLX0KLS5mb290ZXIgdWwgewotICAgIG1hcmdpbjoyMHB4IDAgNXB4IDA7Ci19Ci0uaGVhZGVyIHVsIGxpLCAuZm9vdGVyIHVsIGxpIHsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci0gICAgZm9udC1zaXplOjEuMmVtOwotfQotLyoKLUhlYWRpbmcgc3R5bGVzCi0qLwotZGl2LmRldGFpbHMgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCB1bC5ibG9ja0xpc3QgbGkuYmxvY2tMaXN0IGg0LCBkaXYuZGV0YWlscyB1bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdExhc3QgbGkuYmxvY2tMaXN0IGg0IHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiNkZWUzZTk7Ci0gICAgYm9yZGVyLXRvcDoxcHggc29saWQgIzllYWRjMDsKLSAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOWVhZGMwOwotICAgIG1hcmdpbjowIDAgNnB4IC04cHg7Ci0gICAgcGFkZGluZzoycHggNXB4OwotfQotdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCB1bC5ibG9ja0xpc3QgbGkuYmxvY2tMaXN0IGgzIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiNkZWUzZTk7Ci0gICAgYm9yZGVyLXRvcDoxcHggc29saWQgIzllYWRjMDsKLSAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOWVhZGMwOwotICAgIG1hcmdpbjowIDAgNnB4IC04cHg7Ci0gICAgcGFkZGluZzoycHggNXB4OwotfQotdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCBsaS5ibG9ja0xpc3QgaDMgewotICAgIHBhZGRpbmc6MDsKLSAgICBtYXJnaW46MTVweCAwOwotfQotdWwuYmxvY2tMaXN0IGxpLmJsb2NrTGlzdCBoMiB7Ci0gICAgcGFkZGluZzowcHggMCAyMHB4IDA7Ci19Ci0vKgotUGFnZSBsYXlvdXQgY29udGFpbmVyIHN0eWxlcwotKi8KLS5jb250ZW50Q29udGFpbmVyLCAuc291cmNlQ29udGFpbmVyLCAuY2xhc3NVc2VDb250YWluZXIsIC5zZXJpYWxpemVkRm9ybUNvbnRhaW5lciwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHsKLSAgICBjbGVhcjpib3RoOwotICAgIHBhZGRpbmc6MTBweCAyMHB4OwotICAgIHBvc2l0aW9uOnJlbGF0aXZlOwotfQotLmluZGV4Q29udGFpbmVyIHsKLSAgICBtYXJnaW46MTBweDsKLSAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKLSAgICBmb250LXNpemU6MS4wZW07Ci19Ci0uaW5kZXhDb250YWluZXIgaDIgewotICAgIGZvbnQtc2l6ZToxLjFlbTsKLSAgICBwYWRkaW5nOjAgMCAzcHggMDsKLX0KLS5pbmRleENvbnRhaW5lciB1bCB7Ci0gICAgbWFyZ2luOjA7Ci0gICAgcGFkZGluZzowOwotfQotLmluZGV4Q29udGFpbmVyIHVsIGxpIHsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci19Ci0uY29udGVudENvbnRhaW5lciAuZGVzY3JpcHRpb24gZGwgZHQsIC5jb250ZW50Q29udGFpbmVyIC5kZXRhaWxzIGRsIGR0LCAuc2VyaWFsaXplZEZvcm1Db250YWluZXIgZGwgZHQgewotICAgIGZvbnQtc2l6ZToxLjFlbTsKLSAgICBmb250LXdlaWdodDpib2xkOwotICAgIG1hcmdpbjoxMHB4IDAgMCAwOwotICAgIGNvbG9yOiM0RTRFNEU7Ci19Ci0uY29udGVudENvbnRhaW5lciAuZGVzY3JpcHRpb24gZGwgZGQsIC5jb250ZW50Q29udGFpbmVyIC5kZXRhaWxzIGRsIGRkLCAuc2VyaWFsaXplZEZvcm1Db250YWluZXIgZGwgZGQgewotICAgIG1hcmdpbjoxMHB4IDAgMTBweCAyMHB4OwotfQotLnNlcmlhbGl6ZWRGb3JtQ29udGFpbmVyIGRsLm5hbWVWYWx1ZSBkdCB7Ci0gICAgbWFyZ2luLWxlZnQ6MXB4OwotICAgIGZvbnQtc2l6ZToxLjFlbTsKLSAgICBkaXNwbGF5OmlubGluZTsKLSAgICBmb250LXdlaWdodDpib2xkOwotfQotLnNlcmlhbGl6ZWRGb3JtQ29udGFpbmVyIGRsLm5hbWVWYWx1ZSBkZCB7Ci0gICAgbWFyZ2luOjAgMCAwIDFweDsKLSAgICBmb250LXNpemU6MS4xZW07Ci0gICAgZGlzcGxheTppbmxpbmU7Ci19Ci0vKgotTGlzdCBzdHlsZXMKLSovCi11bC5ob3Jpem9udGFsIGxpIHsKLSAgICBkaXNwbGF5OmlubGluZTsKLSAgICBmb250LXNpemU6MC45ZW07Ci19Ci11bC5pbmhlcml0YW5jZSB7Ci0gICAgbWFyZ2luOjA7Ci0gICAgcGFkZGluZzowOwotfQotdWwuaW5oZXJpdGFuY2UgbGkgewotICAgIGRpc3BsYXk6aW5saW5lOwotICAgIGxpc3Qtc3R5bGU6bm9uZTsKLX0KLXVsLmluaGVyaXRhbmNlIGxpIHVsLmluaGVyaXRhbmNlIHsKLSAgICBtYXJnaW4tbGVmdDoxNXB4OwotICAgIHBhZGRpbmctbGVmdDoxNXB4OwotICAgIHBhZGRpbmctdG9wOjFweDsKLX0KLXVsLmJsb2NrTGlzdCwgdWwuYmxvY2tMaXN0TGFzdCB7Ci0gICAgbWFyZ2luOjEwcHggMCAxMHB4IDA7Ci0gICAgcGFkZGluZzowOwotfQotdWwuYmxvY2tMaXN0IGxpLmJsb2NrTGlzdCwgdWwuYmxvY2tMaXN0TGFzdCBsaS5ibG9ja0xpc3QgewotICAgIGxpc3Qtc3R5bGU6bm9uZTsKLSAgICBtYXJnaW4tYm90dG9tOjI1cHg7Ci19Ci11bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0IGxpLmJsb2NrTGlzdCwgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdExhc3QgbGkuYmxvY2tMaXN0IHsKLSAgICBwYWRkaW5nOjBweCAyMHB4IDVweCAxMHB4OwotICAgIGJvcmRlcjoxcHggc29saWQgIzllYWRjMDsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmOWY5Zjk7Ci19Ci11bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCBsaS5ibG9ja0xpc3QsIHVsLmJsb2NrTGlzdCB1bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0TGFzdCBsaS5ibG9ja0xpc3QgewotICAgIHBhZGRpbmc6MCAwIDVweCA4cHg7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjojZmZmZmZmOwotICAgIGJvcmRlcjoxcHggc29saWQgIzllYWRjMDsKLSAgICBib3JkZXItdG9wOm5vbmU7Ci19Ci11bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCB1bC5ibG9ja0xpc3QgbGkuYmxvY2tMaXN0IHsKLSAgICBtYXJnaW4tbGVmdDowOwotICAgIHBhZGRpbmctbGVmdDowOwotICAgIHBhZGRpbmctYm90dG9tOjE1cHg7Ci0gICAgYm9yZGVyOm5vbmU7Ci0gICAgYm9yZGVyLWJvdHRvbToxcHggc29saWQgIzllYWRjMDsKLX0KLXVsLmJsb2NrTGlzdCB1bC5ibG9ja0xpc3QgdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCBsaS5ibG9ja0xpc3RMYXN0IHsKLSAgICBsaXN0LXN0eWxlOm5vbmU7Ci0gICAgYm9yZGVyLWJvdHRvbTpub25lOwotICAgIHBhZGRpbmctYm90dG9tOjA7Ci19Ci10YWJsZSB0ciB0ZCBkbCwgdGFibGUgdHIgdGQgZGwgZHQsIHRhYmxlIHRyIHRkIGRsIGRkIHsKLSAgICBtYXJnaW4tdG9wOjA7Ci0gICAgbWFyZ2luLWJvdHRvbToxcHg7Ci19Ci0vKgotVGFibGUgc3R5bGVzCi0qLwotLmNvbnRlbnRDb250YWluZXIgdGFibGUsIC5jbGFzc1VzZUNvbnRhaW5lciB0YWJsZSwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHRhYmxlIHsKLSAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOWVhZGMwOwotICAgIHdpZHRoOjEwMCU7Ci19Ci0uY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSwgLmNsYXNzVXNlQ29udGFpbmVyIHVsIGxpIHRhYmxlLCAuY29uc3RhbnRWYWx1ZXNDb250YWluZXIgdWwgbGkgdGFibGUgewotICAgIHdpZHRoOjEwMCU7Ci19Ci0uY29udGVudENvbnRhaW5lciAuZGVzY3JpcHRpb24gdGFibGUsIC5jb250ZW50Q29udGFpbmVyIC5kZXRhaWxzIHRhYmxlIHsKLSAgICBib3JkZXItYm90dG9tOm5vbmU7Ci19Ci0uY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xPbmUsIC5jb250ZW50Q29udGFpbmVyIHVsIGxpIHRhYmxlIHRoLmNvbEZpcnN0LCAuY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xMYXN0LCAuY2xhc3NVc2VDb250YWluZXIgdWwgbGkgdGFibGUgdGgsIC5jb25zdGFudFZhbHVlc0NvbnRhaW5lciB1bCBsaSB0YWJsZSB0aCwgLmNvbnRlbnRDb250YWluZXIgdWwgbGkgdGFibGUgdGQuY29sT25lLCAuY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSB0ZC5jb2xGaXJzdCwgLmNvbnRlbnRDb250YWluZXIgdWwgbGkgdGFibGUgdGQuY29sTGFzdCwgLmNsYXNzVXNlQ29udGFpbmVyIHVsIGxpIHRhYmxlIHRkLCAuY29uc3RhbnRWYWx1ZXNDb250YWluZXIgdWwgbGkgdGFibGUgdGR7Ci0gICAgdmVydGljYWwtYWxpZ246dG9wOwotICAgIHBhZGRpbmctcmlnaHQ6MjBweDsKLX0KLS5jb250ZW50Q29udGFpbmVyIHVsIGxpIHRhYmxlIHRoLmNvbExhc3QsIC5jbGFzc1VzZUNvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xMYXN0LC5jb25zdGFudFZhbHVlc0NvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xMYXN0LAotLmNvbnRlbnRDb250YWluZXIgdWwgbGkgdGFibGUgdGQuY29sTGFzdCwgLmNsYXNzVXNlQ29udGFpbmVyIHVsIGxpIHRhYmxlIHRkLmNvbExhc3QsLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHVsIGxpIHRhYmxlIHRkLmNvbExhc3QsCi0uY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xPbmUsIC5jbGFzc1VzZUNvbnRhaW5lciB1bCBsaSB0YWJsZSB0aC5jb2xPbmUsCi0uY29udGVudENvbnRhaW5lciB1bCBsaSB0YWJsZSB0ZC5jb2xPbmUsIC5jbGFzc1VzZUNvbnRhaW5lciB1bCBsaSB0YWJsZSB0ZC5jb2xPbmUgewotICAgIHBhZGRpbmctcmlnaHQ6M3B4OwotfQotLm92ZXJ2aWV3U3VtbWFyeSBjYXB0aW9uLCAucGFja2FnZVN1bW1hcnkgY2FwdGlvbiwgLmNvbnRlbnRDb250YWluZXIgdWwuYmxvY2tMaXN0IGxpLmJsb2NrTGlzdCBjYXB0aW9uLCAuc3VtbWFyeSBjYXB0aW9uLCAuY2xhc3NVc2VDb250YWluZXIgY2FwdGlvbiwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIGNhcHRpb24gewotICAgIHBvc2l0aW9uOnJlbGF0aXZlOwotICAgIHRleHQtYWxpZ246bGVmdDsKLSAgICBiYWNrZ3JvdW5kLXJlcGVhdDpuby1yZXBlYXQ7Ci0gICAgY29sb3I6I0ZGRkZGRjsKLSAgICBmb250LXdlaWdodDpib2xkOwotICAgIGNsZWFyOm5vbmU7Ci0gICAgb3ZlcmZsb3c6aGlkZGVuOwotICAgIHBhZGRpbmc6MHB4OwotICAgIG1hcmdpbjowcHg7Ci19Ci1jYXB0aW9uIGE6bGluaywgY2FwdGlvbiBhOmhvdmVyLCBjYXB0aW9uIGE6YWN0aXZlLCBjYXB0aW9uIGE6dmlzaXRlZCB7Ci0gICAgY29sb3I6I0ZGRkZGRjsKLX0KLS5vdmVydmlld1N1bW1hcnkgY2FwdGlvbiBzcGFuLCAucGFja2FnZVN1bW1hcnkgY2FwdGlvbiBzcGFuLCAuY29udGVudENvbnRhaW5lciB1bC5ibG9ja0xpc3QgbGkuYmxvY2tMaXN0IGNhcHRpb24gc3BhbiwgLnN1bW1hcnkgY2FwdGlvbiBzcGFuLCAuY2xhc3NVc2VDb250YWluZXIgY2FwdGlvbiBzcGFuLCAuY29uc3RhbnRWYWx1ZXNDb250YWluZXIgY2FwdGlvbiBzcGFuIHsKLSAgICB3aGl0ZS1zcGFjZTpub3dyYXA7Ci0gICAgcGFkZGluZy10b3A6OHB4OwotICAgIHBhZGRpbmctbGVmdDo4cHg7Ci0gICAgZGlzcGxheTpibG9jazsKLSAgICBmbG9hdDpsZWZ0OwotICAgIGJhY2tncm91bmQtaW1hZ2U6dXJsKHJlc291cmNlcy90aXRsZWJhci5naWYpOwotICAgIGhlaWdodDoxOHB4OwotfQotLm92ZXJ2aWV3U3VtbWFyeSAudGFiRW5kLCAucGFja2FnZVN1bW1hcnkgLnRhYkVuZCwgLmNvbnRlbnRDb250YWluZXIgdWwuYmxvY2tMaXN0IGxpLmJsb2NrTGlzdCAudGFiRW5kLCAuc3VtbWFyeSAudGFiRW5kLCAuY2xhc3NVc2VDb250YWluZXIgLnRhYkVuZCwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIC50YWJFbmQgewotICAgIHdpZHRoOjEwcHg7Ci0gICAgYmFja2dyb3VuZC1pbWFnZTp1cmwocmVzb3VyY2VzL3RpdGxlYmFyX2VuZC5naWYpOwotICAgIGJhY2tncm91bmQtcmVwZWF0Om5vLXJlcGVhdDsKLSAgICBiYWNrZ3JvdW5kLXBvc2l0aW9uOnRvcCByaWdodDsKLSAgICBwb3NpdGlvbjpyZWxhdGl2ZTsKLSAgICBmbG9hdDpsZWZ0OwotfQotdWwuYmxvY2tMaXN0IHVsLmJsb2NrTGlzdCBsaS5ibG9ja0xpc3QgdGFibGUgewotICAgIG1hcmdpbjowIDAgMTJweCAwcHg7Ci0gICAgd2lkdGg6MTAwJTsKLX0KLS50YWJsZVN1YkhlYWRpbmdDb2xvciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjogI0VFRUVGRjsKLX0KLS5hbHRDb2xvciB7Ci0gICAgYmFja2dyb3VuZC1jb2xvcjojZWVlZWVmOwotfQotLnJvd0NvbG9yIHsKLSAgICBiYWNrZ3JvdW5kLWNvbG9yOiNmZmZmZmY7Ci19Ci0ub3ZlcnZpZXdTdW1tYXJ5IHRkLCAucGFja2FnZVN1bW1hcnkgdGQsIC5jb250ZW50Q29udGFpbmVyIHVsLmJsb2NrTGlzdCBsaS5ibG9ja0xpc3QgdGQsIC5zdW1tYXJ5IHRkLCAuY2xhc3NVc2VDb250YWluZXIgdGQsIC5jb25zdGFudFZhbHVlc0NvbnRhaW5lciB0ZCB7Ci0gICAgdGV4dC1hbGlnbjpsZWZ0OwotICAgIHBhZGRpbmc6M3B4IDNweCAzcHggN3B4OwotfQotdGguY29sRmlyc3QsIHRoLmNvbExhc3QsIHRoLmNvbE9uZSwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHRoIHsKLSAgICBiYWNrZ3JvdW5kOiNkZWUzZTk7Ci0gICAgYm9yZGVyLXRvcDoxcHggc29saWQgIzllYWRjMDsKLSAgICBib3JkZXItYm90dG9tOjFweCBzb2xpZCAjOWVhZGMwOwotICAgIHRleHQtYWxpZ246bGVmdDsKLSAgICBwYWRkaW5nOjNweCAzcHggM3B4IDdweDsKLX0KLXRkLmNvbE9uZSBhOmxpbmssIHRkLmNvbE9uZSBhOmFjdGl2ZSwgdGQuY29sT25lIGE6dmlzaXRlZCwgdGQuY29sT25lIGE6aG92ZXIsIHRkLmNvbEZpcnN0IGE6bGluaywgdGQuY29sRmlyc3QgYTphY3RpdmUsIHRkLmNvbEZpcnN0IGE6dmlzaXRlZCwgdGQuY29sRmlyc3QgYTpob3ZlciwgdGQuY29sTGFzdCBhOmxpbmssIHRkLmNvbExhc3QgYTphY3RpdmUsIHRkLmNvbExhc3QgYTp2aXNpdGVkLCB0ZC5jb2xMYXN0IGE6aG92ZXIsIC5jb25zdGFudFZhbHVlc0NvbnRhaW5lciB0ZCBhOmxpbmssIC5jb25zdGFudFZhbHVlc0NvbnRhaW5lciB0ZCBhOmFjdGl2ZSwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHRkIGE6dmlzaXRlZCwgLmNvbnN0YW50VmFsdWVzQ29udGFpbmVyIHRkIGE6aG92ZXIgewotICAgIGZvbnQtd2VpZ2h0OmJvbGQ7Ci19Ci10ZC5jb2xGaXJzdCwgdGguY29sRmlyc3QgewotICAgIGJvcmRlci1sZWZ0OjFweCBzb2xpZCAjOWVhZGMwOwotICAgIHdoaXRlLXNwYWNlOm5vd3JhcDsKLX0KLXRkLmNvbExhc3QsIHRoLmNvbExhc3QgewotICAgIGJvcmRlci1yaWdodDoxcHggc29saWQgIzllYWRjMDsKLX0KLXRkLmNvbE9uZSwgdGguY29sT25lIHsKLSAgICBib3JkZXItcmlnaHQ6MXB4IHNvbGlkICM5ZWFkYzA7Ci0gICAgYm9yZGVyLWxlZnQ6MXB4IHNvbGlkICM5ZWFkYzA7Ci19Ci10YWJsZS5vdmVydmlld1N1bW1hcnkgIHsKLSAgICBwYWRkaW5nOjBweDsKLSAgICBtYXJnaW4tbGVmdDowcHg7Ci19Ci10YWJsZS5vdmVydmlld1N1bW1hcnkgdGQuY29sRmlyc3QsIHRhYmxlLm92ZXJ2aWV3U3VtbWFyeSB0aC5jb2xGaXJzdCwKLXRhYmxlLm92ZXJ2aWV3U3VtbWFyeSB0ZC5jb2xPbmUsIHRhYmxlLm92ZXJ2aWV3U3VtbWFyeSB0aC5jb2xPbmUgewotICAgIHdpZHRoOjI1JTsKLSAgICB2ZXJ0aWNhbC1hbGlnbjptaWRkbGU7Ci19Ci10YWJsZS5wYWNrYWdlU3VtbWFyeSB0ZC5jb2xGaXJzdCwgdGFibGUub3ZlcnZpZXdTdW1tYXJ5IHRoLmNvbEZpcnN0IHsKLSAgICB3aWR0aDoyNSU7Ci0gICAgdmVydGljYWwtYWxpZ246bWlkZGxlOwotfQotLyoKLUNvbnRlbnQgc3R5bGVzCi0qLwotLmRlc2NyaXB0aW9uIHByZSB7Ci0gICAgbWFyZ2luLXRvcDowOwotfQotLmRlcHJlY2F0ZWRDb250ZW50IHsKLSAgICBtYXJnaW46MDsKLSAgICBwYWRkaW5nOjEwcHggMDsKLX0KLS5kb2NTdW1tYXJ5IHsKLSAgICBwYWRkaW5nOjA7Ci19Ci0vKgotRm9ybWF0dGluZyBlZmZlY3Qgc3R5bGVzCi0qLwotLnNvdXJjZUxpbmVObyB7Ci0gICAgY29sb3I6Z3JlZW47Ci0gICAgcGFkZGluZzowIDMwcHggMCAwOwotfQotaDEuaGlkZGVuIHsKLSAgICB2aXNpYmlsaXR5OmhpZGRlbjsKLSAgICBvdmVyZmxvdzpoaWRkZW47Ci0gICAgZm9udC1zaXplOi45ZW07Ci19Ci0uYmxvY2sgewotICAgIGRpc3BsYXk6YmxvY2s7Ci0gICAgbWFyZ2luOjNweCAwIDAgMDsKLX0KLS5zdHJvbmcgewotICAgIGZvbnQtd2VpZ2h0OmJvbGQ7Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmphdmEgYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyZDE0YzAuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTEzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpMjAxMS0yMDEzIEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpMjAxNSBWaWt0b3IgU3phdGhtw6FyeS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi0vKioKLSAqIFR1cmJvSlBFRyB1dGlsaXR5IGNsYXNzIChjYW5ub3QgYmUgaW5zdGFudGlhdGVkKQotICovCi1wdWJsaWMgZmluYWwgY2xhc3MgVEogewotCi0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgb3B0aW9ucwotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTlVNU0FNUCAgID0gNjsKLSAgLyoqCi0gICAqIDQ6NDo0IGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChubyBjaHJvbWluYW5jZSBzdWJzYW1wbGluZykuICBUaGUgSlBFRwotICAgKiBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZSBjaHJvbWluYW5jZSBjb21wb25lbnQgZm9yIGV2ZXJ5IHBpeGVsIGluIHRoZQotICAgKiBzb3VyY2UgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQU1QXzQ0NCAgPSAwOwotICAvKioKLSAgICogNDoyOjIgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICBUaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZQotICAgKiBjaHJvbWluYW5jZSBjb21wb25lbnQgZm9yIGV2ZXJ5IDJ4MSBibG9jayBvZiBwaXhlbHMgaW4gdGhlIHNvdXJjZSBpbWFnZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNBTVBfNDIyICA9IDE7Ci0gIC8qKgotICAgKiA0OjI6MCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gIFRoZSBKUEVHIG9yIFlVViBpbWFnZSB3aWxsIGNvbnRhaW4gb25lCi0gICAqIGNocm9taW5hbmNlIGNvbXBvbmVudCBmb3IgZXZlcnkgMngyIGJsb2NrIG9mIHBpeGVscyBpbiB0aGUgc291cmNlIGltYWdlLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FNUF80MjAgID0gMjsKLSAgLyoqCi0gICAqIEdyYXlzY2FsZS4gIFRoZSBKUEVHIG9yIFlVViBpbWFnZSB3aWxsIGNvbnRhaW4gbm8gY2hyb21pbmFuY2UgY29tcG9uZW50cy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFNBTVBfR1JBWSA9IDM7Ci0gIC8qKgotICAgKiA0OjQ6MCBjaHJvbWluYW5jZSBzdWJzYW1wbGluZy4gIFRoZSBKUEVHIG9yIFlVViBpbWFnZSB3aWxsIGNvbnRhaW4gb25lCi0gICAqIGNocm9taW5hbmNlIGNvbXBvbmVudCBmb3IgZXZlcnkgMXgyIGJsb2NrIG9mIHBpeGVscyBpbiB0aGUgc291cmNlIGltYWdlLgotICAgKiBOb3RlIHRoYXQgNDo0OjAgc3Vic2FtcGxpbmcgaXMgbm90IGZ1bGx5IGFjY2VsZXJhdGVkIGluIGxpYmpwZWctdHVyYm8uCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBTQU1QXzQ0MCAgPSA0OwotICAvKioKLSAgICogNDoxOjEgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICBUaGUgSlBFRyBvciBZVVYgaW1hZ2Ugd2lsbCBjb250YWluIG9uZQotICAgKiBjaHJvbWluYW5jZSBjb21wb25lbnQgZm9yIGV2ZXJ5IDR4MSBibG9jayBvZiBwaXhlbHMgaW4gdGhlIHNvdXJjZSBpbWFnZS4KLSAgICogSlBFRyBpbWFnZXMgY29tcHJlc3NlZCB3aXRoIDQ6MToxIHN1YnNhbXBsaW5nIHdpbGwgYmUgYWxtb3N0IGV4YWN0bHkgdGhlCi0gICAqIHNhbWUgc2l6ZSBhcyB0aG9zZSBjb21wcmVzc2VkIHdpdGggNDoyOjAgc3Vic2FtcGxpbmcsIGFuZCBpbiB0aGUKLSAgICogYWdncmVnYXRlLCBib3RoIHN1YnNhbXBsaW5nIG1ldGhvZHMgcHJvZHVjZSBhcHByb3hpbWF0ZWx5IHRoZSBzYW1lCi0gICAqIHBlcmNlcHR1YWwgcXVhbGl0eS4gIEhvd2V2ZXIsIDQ6MToxIGlzIGJldHRlciBhYmxlIHRvIHJlcHJvZHVjZSBzaGFycAotICAgKiBob3Jpem9udGFsIGZlYXR1cmVzLiAgTm90ZSB0aGF0IDQ6MToxIHN1YnNhbXBsaW5nIGlzIG5vdCBmdWxseSBhY2NlbGVyYXRlZAotICAgKiBpbiBsaWJqcGVnLXR1cmJvLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgU0FNUF80MTEgID0gNTsKLQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBNQ1UgYmxvY2sgd2lkdGggZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotICAgKiBzdWJzYW1wbGluZy4KLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChvbmUgb2YKLSAgICogPGNvZGU+U0FNUF8qPC9jb2RlPikKLSAgICoKLSAgICogQHJldHVybiB0aGUgTUNVIGJsb2NrIHdpZHRoIGZvciB0aGUgZ2l2ZW4gbGV2ZWwgb2YgY2hyb21pbmFuY2UKLSAgICogc3Vic2FtcGxpbmcuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGludCBnZXRNQ1VXaWR0aChpbnQgc3Vic2FtcCkgewotICAgIGNoZWNrU3Vic2FtcGxpbmcoc3Vic2FtcCk7Ci0gICAgcmV0dXJuIG1jdVdpZHRoW3N1YnNhbXBdOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gbWN1V2lkdGggPSB7Ci0gICAgOCwgMTYsIDE2LCA4LCA4LCAzMgotICB9OwotCi0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIE1DVSBibG9jayBoZWlnaHQgZm9yIHRoZSBnaXZlbiBsZXZlbCBvZiBjaHJvbWluYW5jZQotICAgKiBzdWJzYW1wbGluZy4KLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIChvbmUgb2YKLSAgICogPGNvZGU+U0FNUF8qPC9jb2RlPikKLSAgICoKLSAgICogQHJldHVybiB0aGUgTUNVIGJsb2NrIGhlaWdodCBmb3IgdGhlIGdpdmVuIGxldmVsIG9mIGNocm9taW5hbmNlCi0gICAqIHN1YnNhbXBsaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgZ2V0TUNVSGVpZ2h0KGludCBzdWJzYW1wKSB7Ci0gICAgY2hlY2tTdWJzYW1wbGluZyhzdWJzYW1wKTsKLSAgICByZXR1cm4gbWN1SGVpZ2h0W3N1YnNhbXBdOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gbWN1SGVpZ2h0ID0gewotICAgIDgsIDgsIDE2LCA4LCAxNiwgOAotICB9OwotCi0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2YgcGl4ZWwgZm9ybWF0cwotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTlVNUEYgICA9IDEyOwotICAvKioKLSAgICogUkdCIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSAgICogc3RvcmVkIGluIDMtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBieXRlCi0gICAqIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRl9SR0IgID0gMDsKLSAgLyoqCi0gICAqIEJHUiBwaXhlbCBmb3JtYXQuICBUaGUgcmVkLCBncmVlbiwgYW5kIGJsdWUgY29tcG9uZW50cyBpbiB0aGUgaW1hZ2UgYXJlCi0gICAqIHN0b3JlZCBpbiAzLWJ5dGUgcGl4ZWxzIGluIHRoZSBvcmRlciBCLCBHLCBSIGZyb20gbG93ZXN0IHRvIGhpZ2hlc3QgYnl0ZQotICAgKiBhZGRyZXNzIHdpdGhpbiBlYWNoIHBpeGVsLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEZfQkdSICA9IDE7Ci0gIC8qKgotICAgKiBSR0JYIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSAgICogc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBieXRlCi0gICAqIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuICBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nCi0gICAqIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEZfUkdCWCA9IDI7Ci0gIC8qKgotICAgKiBCR1JYIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSAgICogc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIEIsIEcsIFIgZnJvbSBsb3dlc3QgdG8gaGlnaGVzdCBieXRlCi0gICAqIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuICBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nCi0gICAqIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEZfQkdSWCA9IDM7Ci0gIC8qKgotICAgKiBYQkdSIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSAgICogc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIFIsIEcsIEIgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBieXRlCi0gICAqIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuICBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nCi0gICAqIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEZfWEJHUiA9IDQ7Ci0gIC8qKgotICAgKiBYUkdCIHBpeGVsIGZvcm1hdC4gIFRoZSByZWQsIGdyZWVuLCBhbmQgYmx1ZSBjb21wb25lbnRzIGluIHRoZSBpbWFnZSBhcmUKLSAgICogc3RvcmVkIGluIDQtYnl0ZSBwaXhlbHMgaW4gdGhlIG9yZGVyIEIsIEcsIFIgZnJvbSBoaWdoZXN0IHRvIGxvd2VzdCBieXRlCi0gICAqIGFkZHJlc3Mgd2l0aGluIGVhY2ggcGl4ZWwuICBUaGUgWCBjb21wb25lbnQgaXMgaWdub3JlZCB3aGVuIGNvbXByZXNzaW5nCi0gICAqIGFuZCB1bmRlZmluZWQgd2hlbiBkZWNvbXByZXNzaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgUEZfWFJHQiA9IDU7Ci0gIC8qKgotICAgKiBHcmF5c2NhbGUgcGl4ZWwgZm9ybWF0LiAgRWFjaCAxLWJ5dGUgcGl4ZWwgcmVwcmVzZW50cyBhIGx1bWluYW5jZQotICAgKiAoYnJpZ2h0bmVzcykgbGV2ZWwgZnJvbSAwIHRvIDI1NS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBGX0dSQVkgPSA2OwotICAvKioKLSAgICogUkdCQSBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayAjUEZfUkdCWH0sIGV4Y2VwdCB0aGF0IHdoZW4KLSAgICogZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotICAgKiBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBGX1JHQkEgPSA3OwotICAvKioKLSAgICogQkdSQSBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayAjUEZfQkdSWH0sIGV4Y2VwdCB0aGF0IHdoZW4KLSAgICogZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotICAgKiBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBGX0JHUkEgPSA4OwotICAvKioKLSAgICogQUJHUiBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayAjUEZfWEJHUn0sIGV4Y2VwdCB0aGF0IHdoZW4KLSAgICogZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotICAgKiBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBGX0FCR1IgPSA5OwotICAvKioKLSAgICogQVJHQiBwaXhlbCBmb3JtYXQuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHtAbGluayAjUEZfWFJHQn0sIGV4Y2VwdCB0aGF0IHdoZW4KLSAgICogZGVjb21wcmVzc2luZywgdGhlIFggYnl0ZSBpcyBndWFyYW50ZWVkIHRvIGJlIDB4RkYsIHdoaWNoIGNhbiBiZQotICAgKiBpbnRlcnByZXRlZCBhcyBhbiBvcGFxdWUgYWxwaGEgY2hhbm5lbC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IFBGX0FSR0IgPSAxMDsKLSAgLyoqCi0gICAqIENNWUsgcGl4ZWwgZm9ybWF0LiAgVW5saWtlIFJHQiwgd2hpY2ggaXMgYW4gYWRkaXRpdmUgY29sb3IgbW9kZWwgdXNlZAotICAgKiBwcmltYXJpbHkgZm9yIGRpc3BsYXksIENNWUsgKEN5YW4vTWFnZW50YS9ZZWxsb3cvS2V5KSBpcyBhIHN1YnRyYWN0aXZlCi0gICAqIGNvbG9yIG1vZGVsIHVzZWQgcHJpbWFyaWx5IGZvciBwcmludGluZy4gIEluIHRoZSBDTVlLIGNvbG9yIG1vZGVsLCB0aGUKLSAgICogdmFsdWUgb2YgZWFjaCBjb2xvciBjb21wb25lbnQgdHlwaWNhbGx5IGNvcnJlc3BvbmRzIHRvIGFuIGFtb3VudCBvZiBjeWFuLAotICAgKiBtYWdlbnRhLCB5ZWxsb3csIG9yIGJsYWNrIGluayB0aGF0IGlzIGFwcGxpZWQgdG8gYSB3aGl0ZSBiYWNrZ3JvdW5kLiAgSW4KLSAgICogb3JkZXIgdG8gY29udmVydCBiZXR3ZWVuIENNWUsgYW5kIFJHQiwgaXQgaXMgbmVjZXNzYXJ5IHRvIHVzZSBhIGNvbG9yCi0gICAqIG1hbmFnZW1lbnQgc3lzdGVtIChDTVMuKSAgQSBDTVMgd2lsbCBhdHRlbXB0IHRvIG1hcCBjb2xvcnMgd2l0aGluIHRoZQotICAgKiBwcmludGVyJ3MgZ2FtdXQgdG8gcGVyY2VwdHVhbGx5IHNpbWlsYXIgY29sb3JzIGluIHRoZSBkaXNwbGF5J3MgZ2FtdXQgYW5kCi0gICAqIHZpY2UgdmVyc2EsIGJ1dCB0aGUgbWFwcGluZyBpcyB0eXBpY2FsbHkgbm90IDE6MSBvciByZXZlcnNpYmxlLCBub3IgY2FuIGl0Ci0gICAqIGJlIGRlZmluZWQgd2l0aCBhIHNpbXBsZSBmb3JtdWxhLiAgVGh1cywgc3VjaCBhIGNvbnZlcnNpb24gaXMgb3V0IG9mIHNjb3BlCi0gICAqIGZvciBhIGNvZGVjIGxpYnJhcnkuICBIb3dldmVyLCB0aGUgVHVyYm9KUEVHIEFQSSBhbGxvd3MgZm9yIGNvbXByZXNzaW5nCi0gICAqIENNWUsgcGl4ZWxzIGludG8gYSBZQ0NLIEpQRUcgaW1hZ2UgKHNlZSB7QGxpbmsgI0NTX1lDQ0t9KSBhbmQKLSAgICogZGVjb21wcmVzc2luZyBZQ0NLIEpQRUcgaW1hZ2VzIGludG8gQ01ZSyBwaXhlbHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBQRl9DTVlLID0gMTE7Ci0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgcGl4ZWwgc2l6ZSAoaW4gYnl0ZXMpIGZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LgotICAgKgotICAgKiBAcGFyYW0gcGl4ZWxGb3JtYXQgdGhlIHBpeGVsIGZvcm1hdCAob25lIG9mIDxjb2RlPlBGXyo8L2NvZGU+KQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBwaXhlbCBzaXplIChpbiBieXRlcykgZm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGludCBnZXRQaXhlbFNpemUoaW50IHBpeGVsRm9ybWF0KSB7Ci0gICAgY2hlY2tQaXhlbEZvcm1hdChwaXhlbEZvcm1hdCk7Ci0gICAgcmV0dXJuIHBpeGVsU2l6ZVtwaXhlbEZvcm1hdF07Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBwaXhlbFNpemUgPSB7Ci0gICAgMywgMywgNCwgNCwgNCwgNCwgMSwgNCwgNCwgNCwgNCwgNAotICB9OwotCi0KLSAgLyoqCi0gICAqIEZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgcmVkCi0gICAqIGNvbXBvbmVudCBpcyBvZmZzZXQgZnJvbSB0aGUgc3RhcnQgb2YgdGhlIHBpeGVsLiAgRm9yIGluc3RhbmNlLCBpZiBhIHBpeGVsCi0gICAqIG9mIGZvcm1hdCA8Y29kZT5USi5QRl9CR1JYPC9jb2RlPiBpcyBzdG9yZWQgaW4gPGNvZGU+Y2hhciBwaXhlbFtdPC9jb2RlPiwKLSAgICogdGhlbiB0aGUgcmVkIGNvbXBvbmVudCB3aWxsIGJlCi0gICAqIDxjb2RlPnBpeGVsW1RKLmdldFJlZE9mZnNldChUSi5QRl9CR1JYKV08L2NvZGU+LgotICAgKgotICAgKiBAcGFyYW0gcGl4ZWxGb3JtYXQgdGhlIHBpeGVsIGZvcm1hdCAob25lIG9mIDxjb2RlPlBGXyo8L2NvZGU+KQotICAgKgotICAgKiBAcmV0dXJuIHRoZSByZWQgb2Zmc2V0IGZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBpbnQgZ2V0UmVkT2Zmc2V0KGludCBwaXhlbEZvcm1hdCkgewotICAgIGNoZWNrUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwotICAgIHJldHVybiByZWRPZmZzZXRbcGl4ZWxGb3JtYXRdOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gcmVkT2Zmc2V0ID0gewotICAgIDAsIDIsIDAsIDIsIDMsIDEsIDAsIDAsIDIsIDMsIDEsIC0xCi0gIH07Ci0KLQotICAvKioKLSAgICogRm9yIHRoZSBnaXZlbiBwaXhlbCBmb3JtYXQsIHJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyB0aGF0IHRoZSBncmVlbgotICAgKiBjb21wb25lbnQgaXMgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwaXhlbC4gIEZvciBpbnN0YW5jZSwgaWYgYSBwaXhlbAotICAgKiBvZiBmb3JtYXQgPGNvZGU+VEouUEZfQkdSWDwvY29kZT4gaXMgc3RvcmVkIGluIDxjb2RlPmNoYXIgcGl4ZWxbXTwvY29kZT4sCi0gICAqIHRoZW4gdGhlIGdyZWVuIGNvbXBvbmVudCB3aWxsIGJlCi0gICAqIDxjb2RlPnBpeGVsW1RKLmdldEdyZWVuT2Zmc2V0KFRKLlBGX0JHUlgpXTwvY29kZT4uCi0gICAqCi0gICAqIEBwYXJhbSBwaXhlbEZvcm1hdCB0aGUgcGl4ZWwgZm9ybWF0IChvbmUgb2YgPGNvZGU+UEZfKjwvY29kZT4pCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIGdyZWVuIG9mZnNldCBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldEdyZWVuT2Zmc2V0KGludCBwaXhlbEZvcm1hdCkgewotICAgIGNoZWNrUGl4ZWxGb3JtYXQocGl4ZWxGb3JtYXQpOwotICAgIHJldHVybiBncmVlbk9mZnNldFtwaXhlbEZvcm1hdF07Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnRbXSBncmVlbk9mZnNldCA9IHsKLSAgICAxLCAxLCAxLCAxLCAyLCAyLCAwLCAxLCAxLCAyLCAyLCAtMQotICB9OwotCi0KLSAgLyoqCi0gICAqIEZvciB0aGUgZ2l2ZW4gcGl4ZWwgZm9ybWF0LCByZXR1cm5zIHRoZSBudW1iZXIgb2YgYnl0ZXMgdGhhdCB0aGUgYmx1ZQotICAgKiBjb21wb25lbnQgaXMgb2Zmc2V0IGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBwaXhlbC4gIEZvciBpbnN0YW5jZSwgaWYgYSBwaXhlbAotICAgKiBvZiBmb3JtYXQgPGNvZGU+VEouUEZfQkdSWDwvY29kZT4gaXMgc3RvcmVkIGluIDxjb2RlPmNoYXIgcGl4ZWxbXTwvY29kZT4sCi0gICAqIHRoZW4gdGhlIGJsdWUgY29tcG9uZW50IHdpbGwgYmUKLSAgICogPGNvZGU+cGl4ZWxbVEouZ2V0Qmx1ZU9mZnNldChUSi5QRl9CR1JYKV08L2NvZGU+LgotICAgKgotICAgKiBAcGFyYW0gcGl4ZWxGb3JtYXQgdGhlIHBpeGVsIGZvcm1hdCAob25lIG9mIDxjb2RlPlBGXyo8L2NvZGU+KQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBibHVlIG9mZnNldCBmb3IgdGhlIGdpdmVuIHBpeGVsIGZvcm1hdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgaW50IGdldEJsdWVPZmZzZXQoaW50IHBpeGVsRm9ybWF0KSB7Ci0gICAgY2hlY2tQaXhlbEZvcm1hdChwaXhlbEZvcm1hdCk7Ci0gICAgcmV0dXJuIGJsdWVPZmZzZXRbcGl4ZWxGb3JtYXRdOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgaW50W10gYmx1ZU9mZnNldCA9IHsKLSAgICAyLCAwLCAyLCAwLCAxLCAzLCAwLCAyLCAwLCAxLCAzLCAtMQotICB9OwotCi0KLSAgLyoqCi0gICAqIFRoZSBudW1iZXIgb2YgSlBFRyBjb2xvcnNwYWNlcwotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgTlVNQ1MgPSA1OwotICAvKioKLSAgICogUkdCIGNvbG9yc3BhY2UuICBXaGVuIGNvbXByZXNzaW5nIHRoZSBKUEVHIGltYWdlLCB0aGUgUiwgRywgYW5kIEIKLSAgICogY29tcG9uZW50cyBpbiB0aGUgc291cmNlIGltYWdlIGFyZSByZW9yZGVyZWQgaW50byBpbWFnZSBwbGFuZXMsIGJ1dCBubwotICAgKiBjb2xvcnNwYWNlIGNvbnZlcnNpb24gb3Igc3Vic2FtcGxpbmcgaXMgcGVyZm9ybWVkLiAgUkdCIEpQRUcgaW1hZ2VzIGNhbiBiZQotICAgKiBkZWNvbXByZXNzZWQgdG8gYW55IG9mIHRoZSBleHRlbmRlZCBSR0IgcGl4ZWwgZm9ybWF0cyBvciBncmF5c2NhbGUsIGJ1dAotICAgKiB0aGV5IGNhbm5vdCBiZSBkZWNvbXByZXNzZWQgdG8gWVVWIGltYWdlcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENTX1JHQiA9IDA7Ci0gIC8qKgotICAgKiBZQ2JDciBjb2xvcnNwYWNlLiAgWUNiQ3IgaXMgbm90IGFuIGFic29sdXRlIGNvbG9yc3BhY2UgYnV0IHJhdGhlciBhCi0gICAqIG1hdGhlbWF0aWNhbCB0cmFuc2Zvcm1hdGlvbiBvZiBSR0IgZGVzaWduZWQgc29sZWx5IGZvciBzdG9yYWdlIGFuZAotICAgKiB0cmFuc21pc3Npb24uICBZQ2JDciBpbWFnZXMgbXVzdCBiZSBjb252ZXJ0ZWQgdG8gUkdCIGJlZm9yZSB0aGV5IGNhbgotICAgKiBhY3R1YWxseSBiZSBkaXNwbGF5ZWQuICBJbiB0aGUgWUNiQ3IgY29sb3JzcGFjZSwgdGhlIFkgKGx1bWluYW5jZSkKLSAgICogY29tcG9uZW50IHJlcHJlc2VudHMgdGhlIGJsYWNrICYgd2hpdGUgcG9ydGlvbiBvZiB0aGUgb3JpZ2luYWwgaW1hZ2UsIGFuZAotICAgKiB0aGUgQ2IgYW5kIENyIChjaHJvbWluYW5jZSkgY29tcG9uZW50cyByZXByZXNlbnQgdGhlIGNvbG9yIHBvcnRpb24gb2YgdGhlCi0gICAqIG9yaWdpbmFsIGltYWdlLiAgT3JpZ2luYWxseSwgdGhlIGFuYWxvZyBlcXVpdmFsZW50IG9mIHRoaXMgdHJhbnNmb3JtYXRpb24KLSAgICogYWxsb3dlZCB0aGUgc2FtZSBzaWduYWwgdG8gZHJpdmUgYm90aCBibGFjayAmIHdoaXRlIGFuZCBjb2xvciB0ZWxldmlzaW9ucywKLSAgICogYnV0IEpQRUcgaW1hZ2VzIHVzZSBZQ2JDciBwcmltYXJpbHkgYmVjYXVzZSBpdCBhbGxvd3MgdGhlIGNvbG9yIGRhdGEgdG8gYmUKLSAgICogb3B0aW9uYWxseSBzdWJzYW1wbGVkIGZvciB0aGUgcHVycG9zZXMgb2YgcmVkdWNpbmcgYmFuZHdpZHRoIG9yIGRpc2sKLSAgICogc3BhY2UuICBZQ2JDciBpcyB0aGUgbW9zdCBjb21tb24gSlBFRyBjb2xvcnNwYWNlLCBhbmQgWUNiQ3IgSlBFRyBpbWFnZXMKLSAgICogY2FuIGJlIGNvbXByZXNzZWQgZnJvbSBhbmQgZGVjb21wcmVzc2VkIHRvIGFueSBvZiB0aGUgZXh0ZW5kZWQgUkdCIHBpeGVsCi0gICAqIGZvcm1hdHMgb3IgZ3JheXNjYWxlLCBvciB0aGV5IGNhbiBiZSBkZWNvbXByZXNzZWQgdG8gWVVWIHBsYW5hciBpbWFnZXMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDU19ZQ2JDciA9IDE7Ci0gIC8qKgotICAgKiBHcmF5c2NhbGUgY29sb3JzcGFjZS4gIFRoZSBKUEVHIGltYWdlIHJldGFpbnMgb25seSB0aGUgbHVtaW5hbmNlIGRhdGEgKFkKLSAgICogY29tcG9uZW50KSwgYW5kIGFueSBjb2xvciBkYXRhIGZyb20gdGhlIHNvdXJjZSBpbWFnZSBpcyBkaXNjYXJkZWQuCi0gICAqIEdyYXlzY2FsZSBKUEVHIGltYWdlcyBjYW4gYmUgY29tcHJlc3NlZCBmcm9tIGFuZCBkZWNvbXByZXNzZWQgdG8gYW55IG9mCi0gICAqIHRoZSBleHRlbmRlZCBSR0IgcGl4ZWwgZm9ybWF0cyBvciBncmF5c2NhbGUsIG9yIHRoZXkgY2FuIGJlIGRlY29tcHJlc3NlZAotICAgKiB0byBZVVYgcGxhbmFyIGltYWdlcy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IENTX0dSQVkgPSAyOwotICAvKioKLSAgICogQ01ZSyBjb2xvcnNwYWNlLiAgV2hlbiBjb21wcmVzc2luZyB0aGUgSlBFRyBpbWFnZSwgdGhlIEMsIE0sIFksIGFuZCBLCi0gICAqIGNvbXBvbmVudHMgaW4gdGhlIHNvdXJjZSBpbWFnZSBhcmUgcmVvcmRlcmVkIGludG8gaW1hZ2UgcGxhbmVzLCBidXQgbm8KLSAgICogY29sb3JzcGFjZSBjb252ZXJzaW9uIG9yIHN1YnNhbXBsaW5nIGlzIHBlcmZvcm1lZC4gIENNWUsgSlBFRyBpbWFnZXMgY2FuCi0gICAqIG9ubHkgYmUgZGVjb21wcmVzc2VkIHRvIENNWUsgcGl4ZWxzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgQ1NfQ01ZSyA9IDM7Ci0gIC8qKgotICAgKiBZQ0NLIGNvbG9yc3BhY2UuICBZQ0NLIChBS0EgIllDYkNySyIpIGlzIG5vdCBhbiBhYnNvbHV0ZSBjb2xvcnNwYWNlIGJ1dAotICAgKiByYXRoZXIgYSBtYXRoZW1hdGljYWwgdHJhbnNmb3JtYXRpb24gb2YgQ01ZSyBkZXNpZ25lZCBzb2xlbHkgZm9yIHN0b3JhZ2UKLSAgICogYW5kIHRyYW5zbWlzc2lvbi4gIEl0IGlzIHRvIENNWUsgYXMgWUNiQ3IgaXMgdG8gUkdCLiAgQ01ZSyBwaXhlbHMgY2FuIGJlCi0gICAqIHJldmVyc2libHkgdHJhbnNmb3JtZWQgaW50byBZQ0NLLCBhbmQgYXMgd2l0aCBZQ2JDciwgdGhlIGNocm9taW5hbmNlCi0gICAqIGNvbXBvbmVudHMgaW4gdGhlIFlDQ0sgcGl4ZWxzIGNhbiBiZSBzdWJzYW1wbGVkIHdpdGhvdXQgaW5jdXJyaW5nIG1ham9yCi0gICAqIHBlcmNlcHR1YWwgbG9zcy4gIFlDQ0sgSlBFRyBpbWFnZXMgY2FuIG9ubHkgYmUgY29tcHJlc3NlZCBmcm9tIGFuZAotICAgKiBkZWNvbXByZXNzZWQgdG8gQ01ZSyBwaXhlbHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBDU19ZQ0NLID0gNDsKLQotCi0gIC8qKgotICAgKiBUaGUgdW5jb21wcmVzc2VkIHNvdXJjZS9kZXN0aW5hdGlvbiBpbWFnZSBpcyBzdG9yZWQgaW4gYm90dG9tLXVwIChXaW5kb3dzLAotICAgKiBPcGVuR0wpIG9yZGVyLCBub3QgdG9wLWRvd24gKFgxMSkgb3JkZXIuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0JPVFRPTVVQICAgICA9IDI7Ci0KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgRkxBR19GT1JDRU1NWCAgICAgPSA4OwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZPUkNFU1NFICAgICA9IDE2OwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZPUkNFU1NFMiAgICA9IDMyOwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZPUkNFU1NFMyAgICA9IDEyODsKLQotICAvKioKLSAgICogV2hlbiBkZWNvbXByZXNzaW5nIGFuIGltYWdlIHRoYXQgd2FzIGNvbXByZXNzZWQgdXNpbmcgY2hyb21pbmFuY2UKLSAgICogc3Vic2FtcGxpbmcsIHVzZSB0aGUgZmFzdGVzdCBjaHJvbWluYW5jZSB1cHNhbXBsaW5nIGFsZ29yaXRobSBhdmFpbGFibGUgaW4KLSAgICogdGhlIHVuZGVybHlpbmcgY29kZWMuICBUaGUgZGVmYXVsdCBpcyB0byB1c2Ugc21vb3RoIHVwc2FtcGxpbmcsIHdoaWNoCi0gICAqIGNyZWF0ZXMgYSBzbW9vdGggdHJhbnNpdGlvbiBiZXR3ZWVuIG5laWdoYm9yaW5nIGNocm9taW5hbmNlIGNvbXBvbmVudHMgaW4KLSAgICogb3JkZXIgdG8gcmVkdWNlIHVwc2FtcGxpbmcgYXJ0aWZhY3RzIGluIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0ZBU1RVUFNBTVBMRSA9IDI1NjsKLSAgLyoqCi0gICAqIFVzZSB0aGUgZmFzdGVzdCBEQ1QvSURDVCBhbGdvcml0aG0gYXZhaWxhYmxlIGluIHRoZSB1bmRlcmx5aW5nIGNvZGVjLiAgVGhlCi0gICAqIGRlZmF1bHQgaWYgdGhpcyBmbGFnIGlzIG5vdCBzcGVjaWZpZWQgaXMgaW1wbGVtZW50YXRpb24tc3BlY2lmaWMuICBGb3IKLSAgICogZXhhbXBsZSwgdGhlIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBmb3IgbGlianBlZ1stdHVyYm9dIHVzZXMgdGhlIGZhc3QKLSAgICogYWxnb3JpdGhtIGJ5IGRlZmF1bHQgd2hlbiBjb21wcmVzc2luZywgYmVjYXVzZSB0aGlzIGhhcyBiZWVuIHNob3duIHRvIGhhdmUKLSAgICogb25seSBhIHZlcnkgc2xpZ2h0IGVmZmVjdCBvbiBhY2N1cmFjeSwgYnV0IGl0IHVzZXMgdGhlIGFjY3VyYXRlIGFsZ29yaXRobQotICAgKiB3aGVuIGRlY29tcHJlc3NpbmcsIGJlY2F1c2UgdGhpcyBoYXMgYmVlbiBzaG93biB0byBoYXZlIGEgbGFyZ2VyIGVmZmVjdC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IEZMQUdfRkFTVERDVCAgICAgID0gIDIwNDg7Ci0gIC8qKgotICAgKiBVc2UgdGhlIG1vc3QgYWNjdXJhdGUgRENUL0lEQ1QgYWxnb3JpdGhtIGF2YWlsYWJsZSBpbiB0aGUgdW5kZXJseWluZwotICAgKiBjb2RlYy4gIFRoZSBkZWZhdWx0IGlmIHRoaXMgZmxhZyBpcyBub3Qgc3BlY2lmaWVkIGlzCi0gICAqIGltcGxlbWVudGF0aW9uLXNwZWNpZmljLiAgRm9yIGV4YW1wbGUsIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBUdXJib0pQRUcgZm9yCi0gICAqIGxpYmpwZWdbLXR1cmJvXSB1c2VzIHRoZSBmYXN0IGFsZ29yaXRobSBieSBkZWZhdWx0IHdoZW4gY29tcHJlc3NpbmcsCi0gICAqIGJlY2F1c2UgdGhpcyBoYXMgYmVlbiBzaG93biB0byBoYXZlIG9ubHkgYSB2ZXJ5IHNsaWdodCBlZmZlY3Qgb24gYWNjdXJhY3ksCi0gICAqIGJ1dCBpdCB1c2VzIHRoZSBhY2N1cmF0ZSBhbGdvcml0aG0gd2hlbiBkZWNvbXByZXNzaW5nLCBiZWNhdXNlIHRoaXMgaGFzCi0gICAqIGJlZW4gc2hvd24gdG8gaGF2ZSBhIGxhcmdlciBlZmZlY3QuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBGTEFHX0FDQ1VSQVRFRENUICA9ICA0MDk2OwotCi0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIEpQRUcKLSAgICogaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gd2lkdGgsIGhlaWdodCwgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLgotICAgKgotICAgKiBAcGFyYW0gd2lkdGggdGhlIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBKUEVHIGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgSlBFRyBpbWFnZQotICAgKgotICAgKiBAcGFyYW0ganBlZ1N1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHRvIGJlIHVzZWQgd2hlbgotICAgKiBnZW5lcmF0aW5nIHRoZSBKUEVHIGltYWdlIChvbmUgb2Yge0BsaW5rIFRKIFRKLlNBTVBfKn0pCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIG1heGltdW0gc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIEpQRUcKLSAgICogaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gd2lkdGgsIGhlaWdodCwgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGJ1ZlNpemUoaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBpbnQganBlZ1N1YnNhbXApOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hcgotICAgKiBpbWFnZSB3aXRoIHRoZSBnaXZlbiB3aWR0aCwgaGVpZ2h0LCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuCi0gICAqCi0gICAqIEBwYXJhbSB3aWR0aCB0aGUgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZQotICAgKgotICAgKiBAcGFyYW0gcGFkIHRoZSB3aWR0aCBvZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgaW1hZ2UgaXMgcGFkZGVkIHRvCi0gICAqIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YgMi4pCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgdGhlIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBzdWJzYW1wIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYKLSAgICogaW1hZ2UgKG9uZSBvZiB7QGxpbmsgVEogVEouU0FNUF8qfSkKLSAgICoKLSAgICogQHJldHVybiB0aGUgc2l6ZSBvZiB0aGUgYnVmZmVyIChpbiBieXRlcykgcmVxdWlyZWQgdG8gaG9sZCBhIFlVViBwbGFuYXIKLSAgICogaW1hZ2Ugd2l0aCB0aGUgZ2l2ZW4gd2lkdGgsIGhlaWdodCwgYW5kIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IGJ1ZlNpemVZVVYoaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgc3Vic2FtcCk7Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgI2J1ZlNpemVZVVYoaW50LCBpbnQsIGludCwgaW50KX0gaW5zdGVhZC4KLSAgICovCi0gIEBEZXByZWNhdGVkCi0gIHB1YmxpYyBzdGF0aWMgbmF0aXZlIGludCBidWZTaXplWVVWKGludCB3aWR0aCwgaW50IGhlaWdodCwgaW50IHN1YnNhbXApOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIGltYWdlCi0gICAqIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqCi0gICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBudW1iZXIgb2YgdGhlIGltYWdlIHBsYW5lICgwID0gWSwgMSA9IFUvQ2IsCi0gICAqIDIgPSBWL0NyKQotICAgKgotICAgKiBAcGFyYW0gd2lkdGggd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZS4gIE5PVEU6IHRoaXMgaXMgdGhlIHdpZHRoCi0gICAqIG9mIHRoZSB3aG9sZSBpbWFnZSwgbm90IHRoZSBwbGFuZSB3aWR0aC4KLSAgICoKLSAgICogQHBhcmFtIHN0cmlkZSBieXRlcyBwZXIgbGluZSBpbiB0aGUgaW1hZ2UgcGxhbmUuCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuICBOT1RFOiB0aGlzIGlzIHRoZQotICAgKiBoZWlnaHQgb2YgdGhlIHdob2xlIGltYWdlLCBub3QgdGhlIHBsYW5lIGhlaWdodC4KLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVVgotICAgKiBpbWFnZSAob25lIG9mIHtAbGluayBUSiBUSi5TQU1QXyp9KQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBzaXplIG9mIHRoZSBidWZmZXIgKGluIGJ5dGVzKSByZXF1aXJlZCB0byBob2xkIGEgWVVWIHBsYW5hcgotICAgKiBpbWFnZSB3aXRoIHRoZSBnaXZlbiBwYXJhbWV0ZXJzLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBuYXRpdmUgaW50IHBsYW5lU2l6ZVlVVihpbnQgY29tcG9uZW50SUQsIGludCB3aWR0aCwgaW50IHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LCBpbnQgc3Vic2FtcCk7Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHBsYW5lIHdpZHRoIG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqIFJlZmVyIHRvIHtAbGluayBZVVZJbWFnZSBZVVZJbWFnZX0gZm9yIGEgZGVzY3JpcHRpb24gb2YgcGxhbmUgd2lkdGguCi0gICAqCi0gICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBudW1iZXIgb2YgdGhlIGltYWdlIHBsYW5lICgwID0gWSwgMSA9IFUvQ2IsCi0gICAqIDIgPSBWL0NyKQotICAgKgotICAgKiBAcGFyYW0gd2lkdGggd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZQotICAgKgotICAgKiBAcGFyYW0gc3Vic2FtcCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlCi0gICAqIChvbmUgb2Yge0BsaW5rIFRKIFRKLlNBTVBfKn0pCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIHBsYW5lIHdpZHRoIG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgcGxhbmVXaWR0aChpbnQgY29tcG9uZW50SUQsIGludCB3aWR0aCwgaW50IHN1YnNhbXApOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBwbGFuZSBoZWlnaHQgb2YgYSBZVVYgaW1hZ2UgcGxhbmUgd2l0aCB0aGUgZ2l2ZW4gcGFyYW1ldGVycy4KLSAgICogUmVmZXIgdG8ge0BsaW5rIFlVVkltYWdlIFlVVkltYWdlfSBmb3IgYSBkZXNjcmlwdGlvbiBvZiBwbGFuZSBoZWlnaHQuCi0gICAqCi0gICAqIEBwYXJhbSBjb21wb25lbnRJRCBJRCBudW1iZXIgb2YgdGhlIGltYWdlIHBsYW5lICgwID0gWSwgMSA9IFUvQ2IsCi0gICAqIDIgPSBWL0NyKQotICAgKgotICAgKiBAcGFyYW0gaGVpZ2h0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBzdWJzYW1wIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2UKLSAgICogKG9uZSBvZiB7QGxpbmsgVEogVEouU0FNUF8qfSkKLSAgICoKLSAgICogQHJldHVybiB0aGUgcGxhbmUgaGVpZ2h0IG9mIGEgWVVWIGltYWdlIHBsYW5lIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBpbnQgcGxhbmVIZWlnaHQoaW50IGNvbXBvbmVudElELCBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHN1YnNhbXApOwotCi0gIC8qKgotICAgKiBSZXR1cm5zIGEgbGlzdCBvZiBmcmFjdGlvbmFsIHNjYWxpbmcgZmFjdG9ycyB0aGF0IHRoZSBKUEVHIGRlY29tcHJlc3NvciBpbgotICAgKiB0aGlzIGltcGxlbWVudGF0aW9uIG9mIFR1cmJvSlBFRyBzdXBwb3J0cy4KLSAgICoKLSAgICogQHJldHVybiBhIGxpc3Qgb2YgZnJhY3Rpb25hbCBzY2FsaW5nIGZhY3RvcnMgdGhhdCB0aGUgSlBFRyBkZWNvbXByZXNzb3IgaW4KLSAgICogdGhpcyBpbXBsZW1lbnRhdGlvbiBvZiBUdXJib0pQRUcgc3VwcG9ydHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIG5hdGl2ZSBUSlNjYWxpbmdGYWN0b3JbXSBnZXRTY2FsaW5nRmFjdG9ycygpOwotCi0gIHN0YXRpYyB7Ci0gICAgVEpMb2FkZXIubG9hZCgpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjaGVja1BpeGVsRm9ybWF0KGludCBwaXhlbEZvcm1hdCkgewotICAgIGlmIChwaXhlbEZvcm1hdCA8IDAgfHwgcGl4ZWxGb3JtYXQgPj0gTlVNUEYpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIHBpeGVsIGZvcm1hdCIpOwotICB9Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgdm9pZCBjaGVja1N1YnNhbXBsaW5nKGludCBzdWJzYW1wKSB7Ci0gICAgaWYgKHN1YnNhbXAgPCAwIHx8IHN1YnNhbXAgPj0gTlVNU0FNUCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgc3Vic2FtcGxpbmcgdHlwZSIpOwotICB9Ci0KLX0KZGlmZiAtLWdpdCBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmphdmEgYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKQ29tcHJlc3Nvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmY4ZTRkLi4wMDAwMDAwCi0tLSBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDb21wcmVzc29yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw2NTggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDExLTIwMTUgRC4gUi4gQ29tbWFuZGVyLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqIENvcHlyaWdodCAoQykyMDE1IFZpa3RvciBTemF0aG3DoXJ5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICoKLSAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiwKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXBhY2thZ2Ugb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc7Ci0KLWltcG9ydCBqYXZhLmF3dC5pbWFnZS4qOwotaW1wb3J0IGphdmEubmlvLio7Ci1pbXBvcnQgamF2YS5pby4qOwotCi0vKioKLSAqIFR1cmJvSlBFRyBjb21wcmVzc29yCi0gKi8KLXB1YmxpYyBjbGFzcyBUSkNvbXByZXNzb3IgaW1wbGVtZW50cyBDbG9zZWFibGUgewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOT19BU1NPQ19FUlJPUiA9Ci0gICAgIk5vIHNvdXJjZSBpbWFnZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZSI7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlLgotICAgKi8KLSAgcHVibGljIFRKQ29tcHJlc3NvcigpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaW5pdCgpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIHVuY29tcHJlc3NlZAotICAgKiBzb3VyY2UgaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPnNyY0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkCi0gICAqIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0gc3JjSW1hZ2Ugc2VlIHtAbGluayAjc2V0U291cmNlSW1hZ2V9IGZvciBkZXNjcmlwdGlvbgotICAgKgotICAgKiBAcGFyYW0geCBzZWUge0BsaW5rICNzZXRTb3VyY2VJbWFnZX0gZm9yIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSB5IHNlZSB7QGxpbmsgI3NldFNvdXJjZUltYWdlfSBmb3IgZGVzY3JpcHRpb24KLSAgICoKLSAgICogQHBhcmFtIHdpZHRoIHNlZSB7QGxpbmsgI3NldFNvdXJjZUltYWdlfSBmb3IgZGVzY3JpcHRpb24KLSAgICoKLSAgICogQHBhcmFtIHBpdGNoIHNlZSB7QGxpbmsgI3NldFNvdXJjZUltYWdlfSBmb3IgZGVzY3JpcHRpb24KLSAgICoKLSAgICogQHBhcmFtIGhlaWdodCBzZWUge0BsaW5rICNzZXRTb3VyY2VJbWFnZX0gZm9yIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSBwaXhlbEZvcm1hdCBwaXhlbCBmb3JtYXQgb2YgdGhlIHNvdXJjZSBpbWFnZSAob25lIG9mCi0gICAqIHtAbGluayBUSiNQRl9SR0IgVEouUEZfKn0pCi0gICAqLwotICBwdWJsaWMgVEpDb21wcmVzc29yKGJ5dGVbXSBzcmNJbWFnZSwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBwaXRjaCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgc2V0U291cmNlSW1hZ2Uoc3JjSW1hZ2UsIHgsIHksIHdpZHRoLCBwaXRjaCwgaGVpZ2h0LCBwaXhlbEZvcm1hdCk7Ci0gIH0KLQotICAvKioKLSAgICogQGRlcHJlY2F0ZWQgVXNlCi0gICAqIHtAbGluayAjVEpDb21wcmVzc29yKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgVEpDb21wcmVzc29yKGJ5dGVbXSBzcmNJbWFnZSwgaW50IHdpZHRoLCBpbnQgcGl0Y2gsIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgaW50IHBpeGVsRm9ybWF0KSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIHNldFNvdXJjZUltYWdlKHNyY0ltYWdlLCB3aWR0aCwgcGl0Y2gsIGhlaWdodCwgcGl4ZWxGb3JtYXQpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIFR1cmJvSlBFRyBjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIHVuY29tcHJlc3NlZAotICAgKiBzb3VyY2UgaW1hZ2Ugc3RvcmVkIGluIDxjb2RlPnNyY0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkCi0gICAqIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0gc3JjSW1hZ2Ugc2VlCi0gICAqIHtAbGluayAjc2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KX0gZm9yIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSB4IHNlZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCl9IGZvciBkZXNjcmlwdGlvbgotICAgKgotICAgKiBAcGFyYW0geSBzZWUKLSAgICoge0BsaW5rICNzZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpfSBmb3IgZGVzY3JpcHRpb24KLSAgICoKLSAgICogQHBhcmFtIHdpZHRoIHNlZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCl9IGZvciBkZXNjcmlwdGlvbgotICAgKgotICAgKiBAcGFyYW0gaGVpZ2h0IHNlZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCl9IGZvciBkZXNjcmlwdGlvbgotICAgKi8KLSAgcHVibGljIFRKQ29tcHJlc3NvcihCdWZmZXJlZEltYWdlIHNyY0ltYWdlLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0KSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIHNldFNvdXJjZUltYWdlKHNyY0ltYWdlLCB4LCB5LCB3aWR0aCwgaGVpZ2h0KTsKLSAgfQotCi0gIC8qKgotICAgKiBBc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiwgZ3JheXNjYWxlLCBvciBDTVlLIHNvdXJjZSBpbWFnZSB3aXRoIHRoaXMKLSAgICogY29tcHJlc3NvciBpbnN0YW5jZS4KLSAgICoKLSAgICogQHBhcmFtIHNyY0ltYWdlIGltYWdlIGJ1ZmZlciBjb250YWluaW5nIFJHQiwgZ3JheXNjYWxlLCBvciBDTVlLIHBpeGVscyB0bwotICAgKiBiZSBjb21wcmVzc2VkIG9yIGVuY29kZWQuICBUaGlzIGJ1ZmZlciBpcyBub3QgbW9kaWZpZWQuCi0gICAqCi0gICAqIEBwYXJhbSB4IHggb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIHNvdXJjZSBpbWFnZSBmcm9tIHdoaWNoCi0gICAqIHRoZSBKUEVHIG9yIFlVViBpbWFnZSBzaG91bGQgYmUgY29tcHJlc3NlZC9lbmNvZGVkCi0gICAqCi0gICAqIEBwYXJhbSB5IHkgb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIHNvdXJjZSBpbWFnZSBmcm9tIHdoaWNoCi0gICAqIHRoZSBKUEVHIG9yIFlVViBpbWFnZSBzaG91bGQgYmUgY29tcHJlc3NlZC9lbmNvZGVkCi0gICAqCi0gICAqIEBwYXJhbSB3aWR0aCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbQotICAgKiB3aGljaCB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZAotICAgKgotICAgKiBAcGFyYW0gcGl0Y2ggYnl0ZXMgcGVyIGxpbmUgb2YgdGhlIHNvdXJjZSBpbWFnZS4gIE5vcm1hbGx5LCB0aGlzIHNob3VsZCBiZQotICAgKiA8Y29kZT53aWR0aCAqIFRKLnBpeGVsU2l6ZShwaXhlbEZvcm1hdCk8L2NvZGU+IGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMKLSAgICogdW5wYWRkZWQsIGJ1dCB5b3UgY2FuIHVzZSB0aGlzIHBhcmFtZXRlciB0bywgZm9yIGluc3RhbmNlLCBzcGVjaWZ5IHRoYXQKLSAgICogdGhlIHNjYW5saW5lcyBpbiB0aGUgc291cmNlIGltYWdlIGFyZSBwYWRkZWQgdG8gYSA0LWJ5dGUgYm91bmRhcnkgb3IgdG8KLSAgICogY29tcHJlc3MvZW5jb2RlIGEgSlBFRyBvciBZVVYgaW1hZ2UgZnJvbSBhIHJlZ2lvbiBvZiBhIGxhcmdlciBzb3VyY2UKLSAgICogaW1hZ2UuICBZb3UgY2FuIGFsc28gYmUgY2xldmVyIGFuZCB1c2UgdGhpcyBwYXJhbWV0ZXIgdG8gc2tpcCBsaW5lcywgZXRjLgotICAgKiBTZXR0aW5nIHRoaXMgcGFyYW1ldGVyIHRvIDAgaXMgdGhlIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0bwotICAgKiA8Y29kZT53aWR0aCAqIFRKLnBpeGVsU2l6ZShwaXhlbEZvcm1hdCk8L2NvZGU+LgotICAgKgotICAgKiBAcGFyYW0gaGVpZ2h0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbQotICAgKiB3aGljaCB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZAotICAgKgotICAgKiBAcGFyYW0gcGl4ZWxGb3JtYXQgcGl4ZWwgZm9ybWF0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKG9uZSBvZgotICAgKiB7QGxpbmsgVEojUEZfUkdCIFRKLlBGXyp9KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U291cmNlSW1hZ2UoYnl0ZVtdIHNyY0ltYWdlLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpdGNoLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGhhbmRsZSA9PSAwKSBpbml0KCk7Ci0gICAgaWYgKHNyY0ltYWdlID09IG51bGwgfHwgeCA8IDAgfHwgeSA8IDAgfHwgd2lkdGggPCAxIHx8IGhlaWdodCA8IDEgfHwKLSAgICAgICAgcGl0Y2ggPCAwIHx8IHBpeGVsRm9ybWF0IDwgMCB8fCBwaXhlbEZvcm1hdCA+PSBUSi5OVU1QRikKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gc2V0U291cmNlSW1hZ2UoKSIpOwotICAgIHNyY0J1ZiA9IHNyY0ltYWdlOwotICAgIHNyY1dpZHRoID0gd2lkdGg7Ci0gICAgaWYgKHBpdGNoID09IDApCi0gICAgICBzcmNQaXRjaCA9IHdpZHRoICogVEouZ2V0UGl4ZWxTaXplKHBpeGVsRm9ybWF0KTsKLSAgICBlbHNlCi0gICAgICBzcmNQaXRjaCA9IHBpdGNoOwotICAgIHNyY0hlaWdodCA9IGhlaWdodDsKLSAgICBzcmNQaXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0OwotICAgIHNyY1ggPSB4OwotICAgIHNyY1kgPSB5OwotICAgIHNyY0J1ZkludCA9IG51bGw7Ci0gICAgc3JjWVVWSW1hZ2UgPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgdm9pZCBzZXRTb3VyY2VJbWFnZShieXRlW10gc3JjSW1hZ2UsIGludCB3aWR0aCwgaW50IHBpdGNoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgc2V0U291cmNlSW1hZ2Uoc3JjSW1hZ2UsIDAsIDAsIHdpZHRoLCBwaXRjaCwgaGVpZ2h0LCBwaXhlbEZvcm1hdCk7Ci0gICAgc3JjWCA9IHNyY1kgPSAtMTsKLSAgfQotCi0gIC8qKgotICAgKiBBc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFJHQiBvciBncmF5c2NhbGUgc291cmNlIGltYWdlIHdpdGggdGhpcwotICAgKiBjb21wcmVzc29yIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0gc3JjSW1hZ2UgYSA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIFJHQiBvcgotICAgKiBncmF5c2NhbGUgcGl4ZWxzIHRvIGJlIGNvbXByZXNzZWQgb3IgZW5jb2RlZC4gIFRoaXMgaW1hZ2UgaXMgbm90IG1vZGlmaWVkLgotICAgKgotICAgKiBAcGFyYW0geCB4IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbSB3aGljaAotICAgKiB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZAotICAgKgotICAgKiBAcGFyYW0geSB5IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBzb3VyY2UgaW1hZ2UgZnJvbSB3aGljaAotICAgKiB0aGUgSlBFRyBvciBZVVYgaW1hZ2Ugc2hvdWxkIGJlIGNvbXByZXNzZWQvZW5jb2RlZAotICAgKgotICAgKiBAcGFyYW0gd2lkdGggd2lkdGggKGluIHBpeGVscykgb2YgdGhlIHJlZ2lvbiBpbiB0aGUgc291cmNlIGltYWdlIGZyb20KLSAgICogd2hpY2ggdGhlIEpQRUcgb3IgWVVWIGltYWdlIHNob3VsZCBiZSBjb21wcmVzc2VkL2VuY29kZWQgKDAgPSB1c2UgdGhlCi0gICAqIHdpZHRoIG9mIHRoZSBzb3VyY2UgaW1hZ2UpCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIHNvdXJjZSBpbWFnZSBmcm9tCi0gICAqIHdoaWNoIHRoZSBKUEVHIG9yIFlVViBpbWFnZSBzaG91bGQgYmUgY29tcHJlc3NlZC9lbmNvZGVkICgwID0gdXNlIHRoZQotICAgKiBoZWlnaHQgb2YgdGhlIHNvdXJjZSBpbWFnZSkKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2Ugc3JjSW1hZ2UsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgaGVpZ2h0KSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChoYW5kbGUgPT0gMCkgaW5pdCgpOwotICAgIGlmIChzcmNJbWFnZSA9PSBudWxsIHx8IHggPCAwIHx8IHkgPCAwIHx8IHdpZHRoIDwgMCB8fCBoZWlnaHQgPCAwKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBzZXRTb3VyY2VJbWFnZSgpIik7Ci0gICAgc3JjWCA9IHg7Ci0gICAgc3JjWSA9IHk7Ci0gICAgc3JjV2lkdGggPSAod2lkdGggPT0gMCkgPyBzcmNJbWFnZS5nZXRXaWR0aCgpOiB3aWR0aDsKLSAgICBzcmNIZWlnaHQgPSAoaGVpZ2h0ID09IDApID8gc3JjSW1hZ2UuZ2V0SGVpZ2h0KCkgOiBoZWlnaHQ7Ci0gICAgaWYgKHggKyB3aWR0aCA+IHNyY0ltYWdlLmdldFdpZHRoKCkgfHwgeSArIGhlaWdodCA+IHNyY0ltYWdlLmdldEhlaWdodCgpKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiQ29tcHJlc3Npb24gcmVnaW9uIGV4Y2VlZHMgdGhlIGJvdW5kcyBvZiB0aGUgc291cmNlIGltYWdlIik7Ci0KLSAgICBpbnQgcGl4ZWxGb3JtYXQ7Ci0gICAgYm9vbGVhbiBpbnRQaXhlbHMgPSBmYWxzZTsKLSAgICBpZiAoYnl0ZU9yZGVyID09IG51bGwpCi0gICAgICBieXRlT3JkZXIgPSBCeXRlT3JkZXIubmF0aXZlT3JkZXIoKTsKLSAgICBzd2l0Y2goc3JjSW1hZ2UuZ2V0VHlwZSgpKSB7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV8zQllURV9CR1I6Ci0gICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfQkdSOyAgYnJlYWs7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV80QllURV9BQkdSOgotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfNEJZVEVfQUJHUl9QUkU6Ci0gICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfWEJHUjsgIGJyZWFrOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfQllURV9HUkFZOgotICAgICAgICBwaXhlbEZvcm1hdCA9IFRKLlBGX0dSQVk7ICBicmVhazsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9CR1I6Ci0gICAgICAgIGlmIChieXRlT3JkZXIgPT0gQnl0ZU9yZGVyLkJJR19FTkRJQU4pCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9YQkdSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9SR0JYOwotICAgICAgICBpbnRQaXhlbHMgPSB0cnVlOyAgYnJlYWs7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfUkdCOgotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0I6Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQVJHQl9QUkU6Ci0gICAgICAgIGlmIChieXRlT3JkZXIgPT0gQnl0ZU9yZGVyLkJJR19FTkRJQU4pCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9YUkdCOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9CR1JYOwotICAgICAgICBpbnRQaXhlbHMgPSB0cnVlOyAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBCdWZmZXJlZEltYWdlIGZvcm1hdCIpOwotICAgIH0KLSAgICBzcmNQaXhlbEZvcm1hdCA9IHBpeGVsRm9ybWF0OwotCi0gICAgV3JpdGFibGVSYXN0ZXIgd3IgPSBzcmNJbWFnZS5nZXRSYXN0ZXIoKTsKLSAgICBpZiAoaW50UGl4ZWxzKSB7Ci0gICAgICBTaW5nbGVQaXhlbFBhY2tlZFNhbXBsZU1vZGVsIHNtID0KLSAgICAgICAgKFNpbmdsZVBpeGVsUGFja2VkU2FtcGxlTW9kZWwpc3JjSW1hZ2UuZ2V0U2FtcGxlTW9kZWwoKTsKLSAgICAgIHNyY1N0cmlkZSA9IHNtLmdldFNjYW5saW5lU3RyaWRlKCk7Ci0gICAgICBEYXRhQnVmZmVySW50IGRiID0gKERhdGFCdWZmZXJJbnQpd3IuZ2V0RGF0YUJ1ZmZlcigpOwotICAgICAgc3JjQnVmSW50ID0gZGIuZ2V0RGF0YSgpOwotICAgICAgc3JjQnVmID0gbnVsbDsKLSAgICB9IGVsc2UgewotICAgICAgQ29tcG9uZW50U2FtcGxlTW9kZWwgc20gPQotICAgICAgICAoQ29tcG9uZW50U2FtcGxlTW9kZWwpc3JjSW1hZ2UuZ2V0U2FtcGxlTW9kZWwoKTsKLSAgICAgIGludCBwaXhlbFNpemUgPSBzbS5nZXRQaXhlbFN0cmlkZSgpOwotICAgICAgaWYgKHBpeGVsU2l6ZSAhPSBUSi5nZXRQaXhlbFNpemUocGl4ZWxGb3JtYXQpKQotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbmNvbnNpc3RlbmN5IGJldHdlZW4gcGl4ZWwgZm9ybWF0IGFuZCBwaXhlbCBzaXplIGluIEJ1ZmZlcmVkSW1hZ2UiKTsKLSAgICAgIHNyY1BpdGNoID0gc20uZ2V0U2NhbmxpbmVTdHJpZGUoKTsKLSAgICAgIERhdGFCdWZmZXJCeXRlIGRiID0gKERhdGFCdWZmZXJCeXRlKXdyLmdldERhdGFCdWZmZXIoKTsKLSAgICAgIHNyY0J1ZiA9IGRiLmdldERhdGEoKTsKLSAgICAgIHNyY0J1ZkludCA9IG51bGw7Ci0gICAgfQotICAgIHNyY1lVVkltYWdlID0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBBc3NvY2lhdGUgYW4gdW5jb21wcmVzc2VkIFlVViBwbGFuYXIgc291cmNlIGltYWdlIHdpdGggdGhpcyBjb21wcmVzc29yCi0gICAqIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0gc3JjSW1hZ2UgWVVWIHBsYW5hciBpbWFnZSB0byBiZSBjb21wcmVzc2VkLiAgVGhpcyBpbWFnZSBpcyBub3QKLSAgICogbW9kaWZpZWQuCi0gICAqLwotICBwdWJsaWMgdm9pZCBzZXRTb3VyY2VJbWFnZShZVVZJbWFnZSBzcmNJbWFnZSkgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpZiAoaGFuZGxlID09IDApIGluaXQoKTsKLSAgICBpZiAoc3JjSW1hZ2UgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gc2V0U291cmNlSW1hZ2UoKSIpOwotICAgIHNyY1lVVkltYWdlID0gc3JjSW1hZ2U7Ci0gICAgc3JjQnVmID0gbnVsbDsKLSAgICBzcmNCdWZJbnQgPSBudWxsOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgZm9yIHN1YnNlcXVlbnQgY29tcHJlc3MvZW5jb2RlCi0gICAqIG9wZXJhdGlvbnMuICBXaGVuIHBpeGVscyBhcmUgY29udmVydGVkIGZyb20gUkdCIHRvIFlDYkNyIChzZWUKLSAgICoge0BsaW5rIFRKI0NTX1lDYkNyfSkgb3IgZnJvbSBDTVlLIHRvIFlDQ0sgKHNlZSB7QGxpbmsgVEojQ1NfWUNDS30pIGFzIHBhcnQKLSAgICogb2YgdGhlIEpQRUcgY29tcHJlc3Npb24gcHJvY2Vzcywgc29tZSBvZiB0aGUgQ2IgYW5kIENyIChjaHJvbWluYW5jZSkKLSAgICogY29tcG9uZW50cyBjYW4gYmUgZGlzY2FyZGVkIG9yIGF2ZXJhZ2VkIHRvZ2V0aGVyIHRvIHByb2R1Y2UgYSBzbWFsbGVyCi0gICAqIGltYWdlIHdpdGggbGl0dGxlIHBlcmNlcHRpYmxlIGxvc3Mgb2YgaW1hZ2UgY2xhcml0eSAodGhlIGh1bWFuIGV5ZSBpcyBtb3JlCi0gICAqIHNlbnNpdGl2ZSB0byBzbWFsbCBjaGFuZ2VzIGluIGJyaWdodG5lc3MgdGhhbiB0byBzbWFsbCBjaGFuZ2VzIGluIGNvbG9yLikKLSAgICogVGhpcyBpcyBjYWxsZWQgImNocm9taW5hbmNlIHN1YnNhbXBsaW5nIi4KLSAgICogPHA+Ci0gICAqIE5PVEU6IFRoaXMgbWV0aG9kIGhhcyBubyBlZmZlY3Qgd2hlbiBjb21wcmVzc2luZyBhIEpQRUcgaW1hZ2UgZnJvbSBhIFlVVgotICAgKiBwbGFuYXIgc291cmNlLiAgSW4gdGhhdCBjYXNlLCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaW4KLSAgICogdGhlIEpQRUcgaW1hZ2UgaXMgZGV0ZXJtaW5lZCBieSB0aGUgc291cmNlLiAgRnVydGhlciwgdGhpcyBtZXRob2QgaGFzIG5vCi0gICAqIGVmZmVjdCB3aGVuIGVuY29kaW5nIHRvIGEgcHJlLWFsbG9jYXRlZCB7QGxpbmsgWVVWSW1hZ2V9IGluc3RhbmNlLiAgSW4KLSAgICogdGhhdCBjYXNlLCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgaXMgZGV0ZXJtaW5lZCBieSB0aGUKLSAgICogZGVzdGluYXRpb24uCi0gICAqCi0gICAqIEBwYXJhbSBuZXdTdWJzYW1wIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB0byB1c2UgaW4KLSAgICogc3Vic2VxdWVudCBjb21wcmVzcy9lbmNvZGUgb2VwcmF0aW9ucyAob25lIG9mCi0gICAqIHtAbGluayBUSiNTQU1QXzQ0NCBUSi5TQU1QXyp9KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U3Vic2FtcChpbnQgbmV3U3Vic2FtcCkgewotICAgIGlmIChuZXdTdWJzYW1wIDwgMCB8fCBuZXdTdWJzYW1wID49IFRKLk5VTVNBTVApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIHNldFN1YnNhbXAoKSIpOwotICAgIHN1YnNhbXAgPSBuZXdTdWJzYW1wOwotICB9Ci0KLSAgLyoqCi0gICAqIFNldCB0aGUgSlBFRyBpbWFnZSBxdWFsaXR5IGxldmVsIGZvciBzdWJzZXF1ZW50IGNvbXByZXNzIG9wZXJhdGlvbnMuCi0gICAqCi0gICAqIEBwYXJhbSBxdWFsaXR5IHRoZSBuZXcgSlBFRyBpbWFnZSBxdWFsaXR5IGxldmVsICgxIHRvIDEwMCwgMSA9IHdvcnN0LAotICAgKiAxMDAgPSBiZXN0KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0SlBFR1F1YWxpdHkoaW50IHF1YWxpdHkpIHsKLSAgICBpZiAocXVhbGl0eSA8IDEgfHwgcXVhbGl0eSA+IDEwMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gc2V0SlBFR1F1YWxpdHkoKSIpOwotICAgIGpwZWdRdWFsaXR5ID0gcXVhbGl0eTsKLSAgfQotCi0gIC8qKgotICAgKiBDb21wcmVzcyB0aGUgdW5jb21wcmVzc2VkIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yCi0gICAqIGluc3RhbmNlIGFuZCBvdXRwdXQgYSBKUEVHIGltYWdlIHRvIHRoZSBnaXZlbiBkZXN0aW5hdGlvbiBidWZmZXIuCi0gICAqCi0gICAqIEBwYXJhbSBkc3RCdWYgYnVmZmVyIHRoYXQgd2lsbCByZWNlaXZlIHRoZSBKUEVHIGltYWdlLiAgVXNlCi0gICAqIHtAbGluayBUSiNidWZTaXplfSB0byBkZXRlcm1pbmUgdGhlIG1heGltdW0gc2l6ZSBmb3IgdGhpcyBidWZmZXIgYmFzZWQgb24KLSAgICogdGhlIHNvdXJjZSBpbWFnZSdzIHdpZHRoIGFuZCBoZWlnaHQgYW5kIHRoZSBkZXNpcmVkIGxldmVsIG9mIGNocm9taW5hbmNlCi0gICAqIHN1YnNhbXBsaW5nLgotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKi8KLSAgcHVibGljIHZvaWQgY29tcHJlc3MoYnl0ZVtdIGRzdEJ1ZiwgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChkc3RCdWYgPT0gbnVsbCB8fCBmbGFncyA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIGNvbXByZXNzKCkiKTsKLSAgICBpZiAoc3JjQnVmID09IG51bGwgJiYgc3JjQnVmSW50ID09IG51bGwgJiYgc3JjWVVWSW1hZ2UgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIGlmIChqcGVnUXVhbGl0eSA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJKUEVHIFF1YWxpdHkgbm90IHNldCIpOwotICAgIGlmIChzdWJzYW1wIDwgMCAmJiBzcmNZVVZJbWFnZSA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU3Vic2FtcGxpbmcgbGV2ZWwgbm90IHNldCIpOwotCi0gICAgaWYgKHNyY1lVVkltYWdlICE9IG51bGwpCi0gICAgICBjb21wcmVzc2VkU2l6ZSA9IGNvbXByZXNzRnJvbVlVVihzcmNZVVZJbWFnZS5nZXRQbGFuZXMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1lVVkltYWdlLmdldE9mZnNldHMoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1lVVkltYWdlLmdldFdpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNZVVZJbWFnZS5nZXRTdHJpZGVzKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNZVVZJbWFnZS5nZXRIZWlnaHQoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1lVVkltYWdlLmdldFN1YnNhbXAoKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdEJ1ZiwganBlZ1F1YWxpdHksIGZsYWdzKTsKLSAgICBlbHNlIGlmIChzcmNCdWYgIT0gbnVsbCkgewotICAgICAgaWYgKHNyY1ggPj0gMCAmJiBzcmNZID49IDApCi0gICAgICAgIGNvbXByZXNzZWRTaXplID0gY29tcHJlc3Moc3JjQnVmLCBzcmNYLCBzcmNZLCBzcmNXaWR0aCwgc3JjUGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjSGVpZ2h0LCBzcmNQaXhlbEZvcm1hdCwgZHN0QnVmLCBzdWJzYW1wLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZWdRdWFsaXR5LCBmbGFncyk7Ci0gICAgICBlbHNlCi0gICAgICAgIGNvbXByZXNzZWRTaXplID0gY29tcHJlc3Moc3JjQnVmLCBzcmNXaWR0aCwgc3JjUGl0Y2gsIHNyY0hlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzcmNQaXhlbEZvcm1hdCwgZHN0QnVmLCBzdWJzYW1wLCBqcGVnUXVhbGl0eSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmbGFncyk7Ci0gICAgfSBlbHNlIGlmIChzcmNCdWZJbnQgIT0gbnVsbCkgewotICAgICAgaWYgKHNyY1ggPj0gMCAmJiBzcmNZID49IDApCi0gICAgICAgIGNvbXByZXNzZWRTaXplID0gY29tcHJlc3Moc3JjQnVmSW50LCBzcmNYLCBzcmNZLCBzcmNXaWR0aCwgc3JjU3RyaWRlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY0hlaWdodCwgc3JjUGl4ZWxGb3JtYXQsIGRzdEJ1Ziwgc3Vic2FtcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnUXVhbGl0eSwgZmxhZ3MpOwotICAgICAgZWxzZQotICAgICAgICBjb21wcmVzc2VkU2l6ZSA9IGNvbXByZXNzKHNyY0J1ZkludCwgc3JjV2lkdGgsIHNyY1N0cmlkZSwgc3JjSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyY1BpeGVsRm9ybWF0LCBkc3RCdWYsIHN1YnNhbXAsIGpwZWdRdWFsaXR5LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogQ29tcHJlc3MgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLgotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKgotICAgKiBAcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgYSBKUEVHIGltYWdlLiAgVGhlIGxlbmd0aCBvZiB0aGlzIGJ1ZmZlciB3aWxsCi0gICAqIG5vdCBiZSBlcXVhbCB0byB0aGUgc2l6ZSBvZiB0aGUgSlBFRyBpbWFnZS4gIFVzZSB7QGxpbmsKLSAgICogI2dldENvbXByZXNzZWRTaXplfSB0byBvYnRhaW4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgYnl0ZVtdIGNvbXByZXNzKGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBjaGVja1NvdXJjZUltYWdlKCk7Ci0gICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlW1RKLmJ1ZlNpemUoc3JjV2lkdGgsIHNyY0hlaWdodCwgc3Vic2FtcCldOwotICAgIGNvbXByZXNzKGJ1ZiwgZmxhZ3MpOwotICAgIHJldHVybiBidWY7Ci0gIH0KLQotICAvKioKLSAgICogQGRlcHJlY2F0ZWQgVXNlCi0gICAqIHtAbGluayAjc2V0U291cmNlSW1hZ2UoQnVmZmVyZWRJbWFnZSwgaW50LCBpbnQsIGludCwgaW50KX0gYW5kCi0gICAqIHtAbGluayAjY29tcHJlc3MoYnl0ZVtdLCBpbnQpfSBpbnN0ZWFkLgotICAgKi8KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIHZvaWQgY29tcHJlc3MoQnVmZmVyZWRJbWFnZSBzcmNJbWFnZSwgYnl0ZVtdIGRzdEJ1ZiwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIHNldFNvdXJjZUltYWdlKHNyY0ltYWdlLCAwLCAwLCAwLCAwKTsKLSAgICBjb21wcmVzcyhkc3RCdWYsIGZsYWdzKTsKLSAgfQotCi0gIC8qKgotICAgKiBAZGVwcmVjYXRlZCBVc2UKLSAgICoge0BsaW5rICNzZXRTb3VyY2VJbWFnZShCdWZmZXJlZEltYWdlLCBpbnQsIGludCwgaW50LCBpbnQpfSBhbmQKLSAgICoge0BsaW5rICNjb21wcmVzcyhpbnQpfSBpbnN0ZWFkLgotICAgKi8KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIGJ5dGVbXSBjb21wcmVzcyhCdWZmZXJlZEltYWdlIHNyY0ltYWdlLCBpbnQgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBzZXRTb3VyY2VJbWFnZShzcmNJbWFnZSwgMCwgMCwgMCwgMCk7Ci0gICAgcmV0dXJuIGNvbXByZXNzKGZsYWdzKTsKLSAgfQotCi0gIC8qKgotICAgKiBFbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBpbnRvIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgc3RvcmUgaXQgaW4gdGhlIGdpdmVuCi0gICAqIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS4gICBUaGlzIG1ldGhvZCB1c2VzIHRoZSBhY2NlbGVyYXRlZCBjb2xvcgotICAgKiBjb252ZXJzaW9uIHJvdXRpbmVzIGluIFR1cmJvSlBFRydzIHVuZGVybHlpbmcgY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUKLSAgICogYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRyBjb21wcmVzc2lvbiBwcm9jZXNzLiAgRW5jb2RpbmcKLSAgICogQ01ZSyBzb3VyY2UgaW1hZ2VzIHRvIFlVViBpcyBub3Qgc3VwcG9ydGVkLgotICAgKgotICAgKiBAcGFyYW0gZHN0SW1hZ2Uge0BsaW5rIFlVVkltYWdlfSBpbnN0YW5jZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgWVVWIHBsYW5hcgotICAgKiBpbWFnZQotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKi8KLSAgcHVibGljIHZvaWQgZW5jb2RlWVVWKFlVVkltYWdlIGRzdEltYWdlLCBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGRzdEltYWdlID09IG51bGwgfHwgZmxhZ3MgPCAwKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBlbmNvZGVZVVYoKSIpOwotICAgIGlmIChzcmNCdWYgPT0gbnVsbCAmJiBzcmNCdWZJbnQgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIGlmIChzcmNZVVZJbWFnZSAhPSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiU291cmNlIGltYWdlIGlzIG5vdCBjb3JyZWN0IHR5cGUiKTsKLSAgICBjaGVja1N1YnNhbXBsaW5nKCk7Ci0gICAgaWYgKHNyY1dpZHRoICE9IGRzdEltYWdlLmdldFdpZHRoKCkgfHwgc3JjSGVpZ2h0ICE9IGRzdEltYWdlLmdldEhlaWdodCgpKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiRGVzdGluYXRpb24gaW1hZ2UgaXMgdGhlIHdyb25nIHNpemUiKTsKLQotICAgIGlmIChzcmNCdWZJbnQgIT0gbnVsbCkgewotICAgICAgZW5jb2RlWVVWKHNyY0J1ZkludCwgc3JjWCwgc3JjWSwgc3JjV2lkdGgsIHNyY1N0cmlkZSwgc3JjSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNyY1BpeGVsRm9ybWF0LCBkc3RJbWFnZS5nZXRQbGFuZXMoKSwgZHN0SW1hZ2UuZ2V0T2Zmc2V0cygpLAotICAgICAgICAgICAgICAgIGRzdEltYWdlLmdldFN0cmlkZXMoKSwgZHN0SW1hZ2UuZ2V0U3Vic2FtcCgpLCBmbGFncyk7Ci0gICAgfSBlbHNlIHsKLSAgICAgIGVuY29kZVlVVihzcmNCdWYsIHNyY1gsIHNyY1ksIHNyY1dpZHRoLCBzcmNQaXRjaCwgc3JjSGVpZ2h0LAotICAgICAgICAgICAgICAgIHNyY1BpeGVsRm9ybWF0LCBkc3RJbWFnZS5nZXRQbGFuZXMoKSwgZHN0SW1hZ2UuZ2V0T2Zmc2V0cygpLAotICAgICAgICAgICAgICAgIGRzdEltYWdlLmdldFN0cmlkZXMoKSwgZHN0SW1hZ2UuZ2V0U3Vic2FtcCgpLCBmbGFncyk7Ci0gICAgfQotICAgIGNvbXByZXNzZWRTaXplID0gMDsKLSAgfQotCi0gIC8qKgotICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rICNlbmNvZGVZVVYoWVVWSW1hZ2UsIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgdm9pZCBlbmNvZGVZVVYoYnl0ZVtdIGRzdEJ1ZiwgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmKGRzdEJ1ZiA9PSBudWxsKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBlbmNvZGVZVVYoKSIpOwotICAgIGNoZWNrU291cmNlSW1hZ2UoKTsKLSAgICBjaGVja1N1YnNhbXBsaW5nKCk7Ci0gICAgWVVWSW1hZ2UgeXV2SW1hZ2UgPSBuZXcgWVVWSW1hZ2UoZHN0QnVmLCBzcmNXaWR0aCwgNCwgc3JjSGVpZ2h0LCBzdWJzYW1wKTsKLSAgICBlbmNvZGVZVVYoeXV2SW1hZ2UsIGZsYWdzKTsKLSAgfQotCi0gIC8qKgotICAgKiBFbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBpbnRvIGEgdW5pZmllZCBZVVYgcGxhbmFyIGltYWdlIGJ1ZmZlciBhbmQgcmV0dXJuIGEKLSAgICogPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGVuY29kZWQgaW1hZ2UuICBUaGlzIG1ldGhvZAotICAgKiB1c2VzIHRoZSBhY2NlbGVyYXRlZCBjb2xvciBjb252ZXJzaW9uIHJvdXRpbmVzIGluIFR1cmJvSlBFRydzIHVuZGVybHlpbmcKLSAgICogY29kZWMgYnV0IGRvZXMgbm90IGV4ZWN1dGUgYW55IG9mIHRoZSBvdGhlciBzdGVwcyBpbiB0aGUgSlBFRyBjb21wcmVzc2lvbgotICAgKiBwcm9jZXNzLiAgRW5jb2RpbmcgQ01ZSyBzb3VyY2UgaW1hZ2VzIHRvIFlVViBpcyBub3Qgc3VwcG9ydGVkLgotICAgKgotICAgKiBAcGFyYW0gcGFkIHRoZSB3aWR0aCBvZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgWVVWIGltYWdlIHdpbGwgYmUKLSAgICogcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YKLSAgICogMi4pCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqCi0gICAqIEByZXR1cm4gYSBZVVYgcGxhbmFyIGltYWdlLgotICAgKi8KLSAgcHVibGljIFlVVkltYWdlIGVuY29kZVlVVihpbnQgcGFkLCBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgY2hlY2tTb3VyY2VJbWFnZSgpOwotICAgIGNoZWNrU3Vic2FtcGxpbmcoKTsKLSAgICBpZihwYWQgPCAxIHx8ICgocGFkICYgKHBhZCAtIDEpKSAhPSAwKSkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZW5jb2RlWVVWKCkiKTsKLSAgICBZVVZJbWFnZSB5dXZJbWFnZSA9IG5ldyBZVVZJbWFnZShzcmNXaWR0aCwgcGFkLCBzcmNIZWlnaHQsIHN1YnNhbXApOwotICAgIGVuY29kZVlVVih5dXZJbWFnZSwgZmxhZ3MpOwotICAgIHJldHVybiB5dXZJbWFnZTsKLSAgfQotCi0gIC8qKgotICAgKiBFbmNvZGUgdGhlIHVuY29tcHJlc3NlZCBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZCB3aXRoIHRoaXMgY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBpbnRvIHNlcGFyYXRlIFksIFUgKENiKSwgYW5kIFYgKENyKSBpbWFnZSBwbGFuZXMgYW5kIHJldHVybiBhCi0gICAqIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBjb250YWluaW5nIHRoZSBlbmNvZGVkIGltYWdlIHBsYW5lcy4gIFRoaXMKLSAgICogbWV0aG9kIHVzZXMgdGhlIGFjY2VsZXJhdGVkIGNvbG9yIGNvbnZlcnNpb24gcm91dGluZXMgaW4gVHVyYm9KUEVHJ3MKLSAgICogdW5kZXJseWluZyBjb2RlYyBidXQgZG9lcyBub3QgZXhlY3V0ZSBhbnkgb2YgdGhlIG90aGVyIHN0ZXBzIGluIHRoZSBKUEVHCi0gICAqIGNvbXByZXNzaW9uIHByb2Nlc3MuICBFbmNvZGluZyBDTVlLIHNvdXJjZSBpbWFnZXMgdG8gWVVWIGlzIG5vdCBzdXBwb3J0ZWQuCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGVzIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotICAgKiBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgb3V0cHV0IGltYWdlLiAgU2V0dGluZyB0aGUKLSAgICogc3RyaWRlIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBjb21wb25lbnQgd2lkdGgKLSAgICogb2YgdGhlIHBsYW5lLiAgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgbnVsbCwgdGhlbiB0aGUgc3RyaWRlcyBmb3IgYWxsCi0gICAqIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIGNvbXBvbmVudCB3aWR0aHMuICBZb3UgY2FuIGFkanVzdAotICAgKiB0aGUgc3RyaWRlcyBpbiBvcmRlciB0byBhZGQgYW4gYXJiaXRyYXJ5IGFtb3VudCBvZiBsaW5lIHBhZGRpbmcgdG8gZWFjaAotICAgKiBwbGFuZS4KLSAgICoKLSAgICogQHBhcmFtIGZsYWdzIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gICAqIHtAbGluayBUSiNGTEFHX0JPVFRPTVVQIFRKLkZMQUdfKn0KLSAgICoKLSAgICogQHJldHVybiBhIFlVViBwbGFuYXIgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgWVVWSW1hZ2UgZW5jb2RlWVVWKGludFtdIHN0cmlkZXMsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBjaGVja1NvdXJjZUltYWdlKCk7Ci0gICAgY2hlY2tTdWJzYW1wbGluZygpOwotICAgIFlVVkltYWdlIHl1dkltYWdlID0gbmV3IFlVVkltYWdlKHNyY1dpZHRoLCBzdHJpZGVzLCBzcmNIZWlnaHQsIHN1YnNhbXApOwotICAgIGVuY29kZVlVVih5dXZJbWFnZSwgZmxhZ3MpOwotICAgIHJldHVybiB5dXZJbWFnZTsKLSAgfQotCi0gIC8qKgotICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rICNlbmNvZGVZVVYoaW50LCBpbnQpfSBpbnN0ZWFkLgotICAgKi8KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIGJ5dGVbXSBlbmNvZGVZVVYoaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGNoZWNrU291cmNlSW1hZ2UoKTsKLSAgICBjaGVja1N1YnNhbXBsaW5nKCk7Ci0gICAgWVVWSW1hZ2UgeXV2SW1hZ2UgPSBuZXcgWVVWSW1hZ2Uoc3JjV2lkdGgsIDQsIHNyY0hlaWdodCwgc3Vic2FtcCk7Ci0gICAgZW5jb2RlWVVWKHl1dkltYWdlLCBmbGFncyk7Ci0gICAgcmV0dXJuIHl1dkltYWdlLmdldEJ1ZigpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCl9IGFuZAotICAgKiB7QGxpbmsgI2VuY29kZVlVVihieXRlW10sIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgdm9pZCBlbmNvZGVZVVYoQnVmZmVyZWRJbWFnZSBzcmNJbWFnZSwgYnl0ZVtdIGRzdEJ1ZiwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBzZXRTb3VyY2VJbWFnZShzcmNJbWFnZSwgMCwgMCwgMCwgMCk7Ci0gICAgZW5jb2RlWVVWKGRzdEJ1ZiwgZmxhZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZQotICAgKiB7QGxpbmsgI3NldFNvdXJjZUltYWdlKEJ1ZmZlcmVkSW1hZ2UsIGludCwgaW50LCBpbnQsIGludCl9IGFuZAotICAgKiB7QGxpbmsgI2VuY29kZVlVVihpbnQsIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgYnl0ZVtdIGVuY29kZVlVVihCdWZmZXJlZEltYWdlIHNyY0ltYWdlLCBpbnQgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgc2V0U291cmNlSW1hZ2Uoc3JjSW1hZ2UsIDAsIDAsIDAsIDApOwotICAgIHJldHVybiBlbmNvZGVZVVYoZmxhZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIGltYWdlIChpbiBieXRlcykgZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudAotICAgKiBjb21wcmVzcyBvcGVyYXRpb24uCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIHNpemUgb2YgdGhlIGltYWdlIChpbiBieXRlcykgZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudAotICAgKiBjb21wcmVzcyBvcGVyYXRpb24uCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbXByZXNzZWRTaXplKCkgewotICAgIHJldHVybiBjb21wcmVzc2VkU2l6ZTsKLSAgfQotCi0gIC8qKgotICAgKiBGcmVlIHRoZSBuYXRpdmUgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBjb21wcmVzc29yIGluc3RhbmNlLgotICAgKi8KLSAgQE92ZXJyaWRlCi0gIHB1YmxpYyB2b2lkIGNsb3NlKCkgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpZiAoaGFuZGxlICE9IDApCi0gICAgICBkZXN0cm95KCk7Ci0gIH0KLQotICBAT3ZlcnJpZGUKLSAgcHJvdGVjdGVkIHZvaWQgZmluYWxpemUoKSB0aHJvd3MgVGhyb3dhYmxlIHsKLSAgICB0cnkgewotICAgICAgY2xvc2UoKTsKLSAgICB9IGNhdGNoKFRKRXhjZXB0aW9uIGUpIHsKLSAgICB9IGZpbmFsbHkgewotICAgICAgc3VwZXIuZmluYWxpemUoKTsKLSAgICB9Ci0gIH07Ci0KLSAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBpbml0KCkgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZGVzdHJveSgpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICAvLyBKUEVHIHNpemUgaW4gYnl0ZXMgaXMgcmV0dXJuZWQKLSAgQERlcHJlY2F0ZWQKLSAgcHJpdmF0ZSBuYXRpdmUgaW50IGNvbXByZXNzKGJ5dGVbXSBzcmNCdWYsIGludCB3aWR0aCwgaW50IHBpdGNoLAotICAgIGludCBoZWlnaHQsIGludCBwaXhlbEZvcm1hdCwgYnl0ZVtdIGRzdEJ1ZiwgaW50IGpwZWdTdWJzYW1wLCBpbnQganBlZ1F1YWwsCi0gICAgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb247Ci0KLSAgcHJpdmF0ZSBuYXRpdmUgaW50IGNvbXByZXNzKGJ5dGVbXSBzcmNCdWYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLAotICAgIGludCBwaXRjaCwgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCBieXRlW10gZHN0QnVmLCBpbnQganBlZ1N1YnNhbXAsCi0gICAgaW50IGpwZWdRdWFsLCBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBARGVwcmVjYXRlZAotICBwcml2YXRlIG5hdGl2ZSBpbnQgY29tcHJlc3MoaW50W10gc3JjQnVmLCBpbnQgd2lkdGgsIGludCBzdHJpZGUsCi0gICAgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCBieXRlW10gZHN0QnVmLCBpbnQganBlZ1N1YnNhbXAsIGludCBqcGVnUXVhbCwKLSAgICBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBwcml2YXRlIG5hdGl2ZSBpbnQgY29tcHJlc3MoaW50W10gc3JjQnVmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwKLSAgICBpbnQgc3RyaWRlLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGJ5dGVbXSBkc3RCdWYsIGludCBqcGVnU3Vic2FtcCwKLSAgICBpbnQganBlZ1F1YWwsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIGludCBjb21wcmVzc0Zyb21ZVVYoYnl0ZVtdW10gc3JjUGxhbmVzLCBpbnRbXSBzcmNPZmZzZXRzLAotICAgIGludCB3aWR0aCwgaW50W10gc3JjU3RyaWRlcywgaW50IGhlaWdodCwgaW50IHN1YnNhbXAsIGJ5dGVbXSBkc3RCdWYsCi0gICAgaW50IGpwZWdRdWFsLCBpbnQgZmxhZ3MpCi0gICAgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIEBEZXByZWNhdGVkCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZW5jb2RlWVVWKGJ5dGVbXSBzcmNCdWYsIGludCB3aWR0aCwgaW50IHBpdGNoLAotICAgIGludCBoZWlnaHQsIGludCBwaXhlbEZvcm1hdCwgYnl0ZVtdIGRzdEJ1ZiwgaW50IHN1YnNhbXAsIGludCBmbGFncykKLSAgICB0aHJvd3MgVEpFeGNlcHRpb247Ci0KLSAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBlbmNvZGVZVVYoYnl0ZVtdIHNyY0J1ZiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsCi0gICAgaW50IHBpdGNoLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGJ5dGVbXVtdIGRzdFBsYW5lcywKLSAgICBpbnRbXSBkc3RPZmZzZXRzLCBpbnRbXSBkc3RTdHJpZGVzLCBpbnQgc3Vic2FtcCwgaW50IGZsYWdzKQotICAgIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBARGVwcmVjYXRlZAotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGVuY29kZVlVVihpbnRbXSBzcmNCdWYsIGludCB3aWR0aCwgaW50IHN0cmlkZSwKLSAgICBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGJ5dGVbXSBkc3RCdWYsIGludCBzdWJzYW1wLCBpbnQgZmxhZ3MpCi0gICAgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZW5jb2RlWVVWKGludFtdIHNyY0J1ZiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsCi0gICAgaW50IHNyY1N0cmlkZSwgaW50IGhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCBieXRlW11bXSBkc3RQbGFuZXMsCi0gICAgaW50W10gZHN0T2Zmc2V0cywgaW50W10gZHN0U3RyaWRlcywgaW50IHN1YnNhbXAsIGludCBmbGFncykKLSAgICB0aHJvd3MgVEpFeGNlcHRpb247Ci0KLSAgc3RhdGljIHsKLSAgICBUSkxvYWRlci5sb2FkKCk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgY2hlY2tTb3VyY2VJbWFnZSgpIHsKLSAgICBpZiAoc3JjV2lkdGggPCAxIHx8IHNyY0hlaWdodCA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgfQotCi0gIHByaXZhdGUgdm9pZCBjaGVja1N1YnNhbXBsaW5nKCkgewotICAgIGlmIChzdWJzYW1wIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlN1YnNhbXBsaW5nIGxldmVsIG5vdCBzZXQiKTsKLSAgfQotCi0gIHByaXZhdGUgbG9uZyBoYW5kbGUgPSAwOwotICBwcml2YXRlIGJ5dGVbXSBzcmNCdWYgPSBudWxsOwotICBwcml2YXRlIGludFtdIHNyY0J1ZkludCA9IG51bGw7Ci0gIHByaXZhdGUgaW50IHNyY1dpZHRoID0gMDsKLSAgcHJpdmF0ZSBpbnQgc3JjSGVpZ2h0ID0gMDsKLSAgcHJpdmF0ZSBpbnQgc3JjWCA9IC0xOwotICBwcml2YXRlIGludCBzcmNZID0gLTE7Ci0gIHByaXZhdGUgaW50IHNyY1BpdGNoID0gMDsKLSAgcHJpdmF0ZSBpbnQgc3JjU3RyaWRlID0gMDsKLSAgcHJpdmF0ZSBpbnQgc3JjUGl4ZWxGb3JtYXQgPSAtMTsKLSAgcHJpdmF0ZSBZVVZJbWFnZSBzcmNZVVZJbWFnZSA9IG51bGw7Ci0gIHByaXZhdGUgaW50IHN1YnNhbXAgPSAtMTsKLSAgcHJpdmF0ZSBpbnQganBlZ1F1YWxpdHkgPSAtMTsKLSAgcHJpdmF0ZSBpbnQgY29tcHJlc3NlZFNpemUgPSAwOwotICBwcml2YXRlIGludCB5dXZQYWQgPSA0OwotICBwcml2YXRlIEJ5dGVPcmRlciBieXRlT3JkZXIgPSBudWxsOwotfQpkaWZmIC0tZ2l0IGEvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5qYXZhIGIvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkN1c3RvbUZpbHRlci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTM0NTg3Li4wMDAwMDAwCi0tLSBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpDdXN0b21GaWx0ZXIuamF2YQorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpMjAxMSwgMjAxMyBELiBSLiBDb21tYW5kZXIuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6Ci0gKgotICogLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotICogICBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KLSAqIC0gTmVpdGhlciB0aGUgbmFtZSBvZiB0aGUgbGlianBlZy10dXJibyBQcm9qZWN0IG5vciB0aGUgbmFtZXMgb2YgaXRzCi0gKiAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSAqICAgc29mdHdhcmUgd2l0aG91dCBzcGVjaWZpYyBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiLAotICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UKLSAqIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIENPTlRSSUJVVE9SUyBCRQotICogTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUgotICogQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgUFJPQ1VSRU1FTlQgT0YKLSAqIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotICogSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWSBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4KLSAqIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpCi0gKiBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotICogUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gKi8KLQotcGFja2FnZSBvcmcubGlianBlZ3R1cmJvLnR1cmJvanBlZzsKLQotaW1wb3J0IGphdmEuYXd0Lio7Ci1pbXBvcnQgamF2YS5uaW8uKjsKLQotLyoqCi0gKiBDdXN0b20gZmlsdGVyIGNhbGxiYWNrIGludGVyZmFjZQotICovCi1wdWJsaWMgaW50ZXJmYWNlIFRKQ3VzdG9tRmlsdGVyIHsKLQotICAvKioKLSAgICogQSBjYWxsYmFjayBmdW5jdGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIG1vZGlmeSB0aGUgRENUIGNvZWZmaWNpZW50cyBhZnRlcgotICAgKiB0aGV5IGFyZSBsb3NzbGVzc2x5IHRyYW5zZm9ybWVkIGJ1dCBiZWZvcmUgdGhleSBhcmUgdHJhbnNjb2RlZCB0byBhIG5ldwotICAgKiBKUEVHIGltYWdlLiAgVGhpcyBhbGxvd3MgZm9yIGN1c3RvbSBmaWx0ZXJzIG9yIG90aGVyIHRyYW5zZm9ybWF0aW9ucyB0byBiZQotICAgKiBhcHBsaWVkIGluIHRoZSBmcmVxdWVuY3kgZG9tYWluLgotICAgKgotICAgKiBAcGFyYW0gY29lZmZCdWZmZXIgYSBidWZmZXIgY29udGFpbmluZyB0cmFuc2Zvcm1lZCBEQ1QgY29lZmZpY2llbnRzLgotICAgKiAoTk9URTogdGhpcyBidWZmZXIgaXMgbm90IGd1YXJhbnRlZWQgdG8gYmUgdmFsaWQgb25jZSB0aGUgY2FsbGJhY2sKLSAgICogcmV0dXJucywgc28gYXBwbGljYXRpb25zIHdpc2hpbmcgdG8gaGFuZCBvZmYgdGhlIERDVCBjb2VmZmljaWVudHMgdG8KLSAgICogYW5vdGhlciBmdW5jdGlvbiBvciBsaWJyYXJ5IHNob3VsZCBtYWtlIGEgY29weSBvZiB0aGVtIHdpdGhpbiB0aGUgYm9keSBvZgotICAgKiB0aGUgY2FsbGJhY2suKQotICAgKgotICAgKiBAcGFyYW0gYnVmZmVyUmVnaW9uIHJlY3RhbmdsZSBjb250YWluaW5nIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mCi0gICAqIDxjb2RlPmNvZWZmQnVmZmVyPC9jb2RlPiBhcyB3ZWxsIGFzIGl0cyBvZmZzZXQgcmVsYXRpdmUgdG8gdGhlIGNvbXBvbmVudAotICAgKiBwbGFuZS4gIFR1cmJvSlBFRyBpbXBsZW1lbnRhdGlvbnMgbWF5IGNob29zZSB0byBzcGxpdCBlYWNoIGNvbXBvbmVudCBwbGFuZQotICAgKiBpbnRvIG11bHRpcGxlIERDVCBjb2VmZmljaWVudCBidWZmZXJzIGFuZCBjYWxsIHRoZSBjYWxsYmFjayBmdW5jdGlvbiBvbmNlCi0gICAqIGZvciBlYWNoIGJ1ZmZlci4KLSAgICoKLSAgICogQHBhcmFtIHBsYW5lUmVnaW9uIHJlY3RhbmdsZSBjb250YWluaW5nIHRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIHRoZQotICAgKiBjb21wb25lbnQgcGxhbmUgdG8gd2hpY2ggPGNvZGU+Y29lZmZCdWZmZXI8L2NvZGU+IGJlbG9uZ3MKLSAgICoKLSAgICogQHBhcmFtIGNvbXBvbmVudElEIElEIG51bWJlciBvZiB0aGUgY29tcG9uZW50IHBsYW5lIHRvIHdoaWNoCi0gICAqIDxjb2RlPmNvZWZmQnVmZmVyPC9jb2RlPiBiZWxvbmdzIChZLCBDYiwgYW5kIENyIGhhdmUsIHJlc3BlY3RpdmVseSwgSUQncwotICAgKiBvZiAwLCAxLCBhbmQgMiBpbiB0eXBpY2FsIEpQRUcgaW1hZ2VzLikKLSAgICoKLSAgICogQHBhcmFtIHRyYW5zZm9ybUlEIElEIG51bWJlciBvZiB0aGUgdHJhbnNmb3JtZWQgaW1hZ2UgdG8gd2hpY2gKLSAgICogPGNvZGU+Y29lZmZCdWZmZXI8L2NvZGU+IGJlbG9uZ3MuICBUaGlzIGlzIHRoZSBzYW1lIGFzIHRoZSBpbmRleCBvZiB0aGUKLSAgICogdHJhbnNmb3JtIGluIHRoZSA8Y29kZT50cmFuc2Zvcm1zPC9jb2RlPiBhcnJheSB0aGF0IHdhcyBwYXNzZWQgdG8ge0BsaW5rCi0gICAqIFRKVHJhbnNmb3JtZXIjdHJhbnNmb3JtIFRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCl9LgotICAgKgotICAgKiBAcGFyYW0gdHJhbnNmb3JtIGEge0BsaW5rIFRKVHJhbnNmb3JtfSBpbnN0YW5jZSB0aGF0IHNwZWNpZmllcyB0aGUKLSAgICogcGFyYW1ldGVycyBhbmQvb3IgY3JvcHBpbmcgcmVnaW9uIGZvciB0aGlzIHRyYW5zZm9ybQotICAgKi8KLSAgdm9pZCBjdXN0b21GaWx0ZXIoU2hvcnRCdWZmZXIgY29lZmZCdWZmZXIsIFJlY3RhbmdsZSBidWZmZXJSZWdpb24sCi0gICAgICAgICAgICAgICAgICAgIFJlY3RhbmdsZSBwbGFuZVJlZ2lvbiwgaW50IGNvbXBvbmVudElELCBpbnQgdHJhbnNmb3JtSUQsCi0gICAgICAgICAgICAgICAgICAgIFRKVHJhbnNmb3JtIHRyYW5zZm9ybSkKLSAgICB0aHJvd3MgVEpFeGNlcHRpb247Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmphdmEgYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRGVjb21wcmVzc29yLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkMGU2OTQuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkRlY29tcHJlc3Nvci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsOTA5ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpMjAxMS0yMDE1IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpMjAxNSBWaWt0b3IgU3phdGhtw6FyeS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi1pbXBvcnQgamF2YS5hd3QuaW1hZ2UuKjsKLWltcG9ydCBqYXZhLm5pby4qOwotaW1wb3J0IGphdmEuaW8uKjsKLQotLyoqCi0gKiBUdXJib0pQRUcgZGVjb21wcmVzc29yCi0gKi8KLXB1YmxpYyBjbGFzcyBUSkRlY29tcHJlc3NvciBpbXBsZW1lbnRzIENsb3NlYWJsZSB7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgU3RyaW5nIE5PX0FTU09DX0VSUk9SID0KLSAgICAiTm8gSlBFRyBpbWFnZSBpcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBpbnN0YW5jZSI7Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIFR1cmJvSlBFRyBkZWNvbXByZXNzc29yIGluc3RhbmNlLgotICAgKi8KLSAgcHVibGljIFRKRGVjb21wcmVzc29yKCkgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpbml0KCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHIHNvdXJjZQotICAgKiBpbWFnZSBzdG9yZWQgaW4gPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0ganBlZ0ltYWdlIEpQRUcgaW1hZ2UgYnVmZmVyIChzaXplIG9mIHRoZSBKUEVHIGltYWdlIGlzIGFzc3VtZWQgdG8KLSAgICogYmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuKSAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLgotICAgKi8KLSAgcHVibGljIFRKRGVjb21wcmVzc29yKGJ5dGVbXSBqcGVnSW1hZ2UpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaW5pdCgpOwotICAgIHNldFNvdXJjZUltYWdlKGpwZWdJbWFnZSwganBlZ0ltYWdlLmxlbmd0aCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgVHVyYm9KUEVHIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgYXNzb2NpYXRlIHRoZSBKUEVHIHNvdXJjZQotICAgKiBpbWFnZSBvZiBsZW5ndGggPGNvZGU+aW1hZ2VTaXplPC9jb2RlPiBieXRlcyBzdG9yZWQgaW4KLSAgICogPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0ganBlZ0ltYWdlIEpQRUcgaW1hZ2UgYnVmZmVyLiAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLgotICAgKgotICAgKiBAcGFyYW0gaW1hZ2VTaXplIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKQotICAgKi8KLSAgcHVibGljIFRKRGVjb21wcmVzc29yKGJ5dGVbXSBqcGVnSW1hZ2UsIGludCBpbWFnZVNpemUpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaW5pdCgpOwotICAgIHNldFNvdXJjZUltYWdlKGpwZWdJbWFnZSwgaW1hZ2VTaXplKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBUdXJib0pQRUcgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBhc3NvY2lhdGUgdGhlIFlVViBwbGFuYXIKLSAgICogc291cmNlIGltYWdlIHN0b3JlZCBpbiA8Y29kZT55dXZJbWFnZTwvY29kZT4gd2l0aCB0aGUgbmV3bHkgY3JlYXRlZAotICAgKiBpbnN0YW5jZS4KLSAgICoKLSAgICogQHBhcmFtIHl1dkltYWdlIHtAbGluayBZVVZJbWFnZX0gaW5zdGFuY2UgY29udGFpbmluZyBhIFlVViBwbGFuYXIKLSAgICogaW1hZ2UgdG8gYmUgZGVjb2RlZC4gIFRoaXMgaW1hZ2UgaXMgbm90IG1vZGlmaWVkLgotICAgKi8KLSAgcHVibGljIFRKRGVjb21wcmVzc29yKFlVVkltYWdlIHl1dkltYWdlKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGluaXQoKTsKLSAgICBzZXRTb3VyY2VJbWFnZSh5dXZJbWFnZSk7Ci0gIH0KLQotICAvKioKLSAgICogQXNzb2NpYXRlIHRoZSBKUEVHIGltYWdlIG9mIGxlbmd0aCA8Y29kZT5pbWFnZVNpemU8L2NvZGU+IGJ5dGVzIHN0b3JlZCBpbgotICAgKiA8Y29kZT5qcGVnSW1hZ2U8L2NvZGU+IHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuICBUaGlzIGltYWdlIHdpbGwKLSAgICogYmUgdXNlZCBhcyB0aGUgc291cmNlIGltYWdlIGZvciBzdWJzZXF1ZW50IGRlY29tcHJlc3Mgb3BlcmF0aW9ucy4KLSAgICoKLSAgICogQHBhcmFtIGpwZWdJbWFnZSBKUEVHIGltYWdlIGJ1ZmZlci4gIFRoaXMgYnVmZmVyIGlzIG5vdCBtb2RpZmllZC4KLSAgICoKLSAgICogQHBhcmFtIGltYWdlU2l6ZSBzaXplIG9mIHRoZSBKUEVHIGltYWdlIChpbiBieXRlcykKLSAgICovCi0gIHB1YmxpYyB2b2lkIHNldFNvdXJjZUltYWdlKGJ5dGVbXSBqcGVnSW1hZ2UsIGludCBpbWFnZVNpemUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGpwZWdJbWFnZSA9PSBudWxsIHx8IGltYWdlU2l6ZSA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIHNldFNvdXJjZUltYWdlKCkiKTsKLSAgICBqcGVnQnVmID0ganBlZ0ltYWdlOwotICAgIGpwZWdCdWZTaXplID0gaW1hZ2VTaXplOwotICAgIGRlY29tcHJlc3NIZWFkZXIoanBlZ0J1ZiwganBlZ0J1ZlNpemUpOwotICAgIHl1dkltYWdlID0gbnVsbDsKLSAgfQotCi0gIC8qKgotICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rICNzZXRTb3VyY2VJbWFnZShieXRlW10sIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgdm9pZCBzZXRKUEVHSW1hZ2UoYnl0ZVtdIGpwZWdJbWFnZSwgaW50IGltYWdlU2l6ZSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgc2V0U291cmNlSW1hZ2UoanBlZ0ltYWdlLCBpbWFnZVNpemUpOwotICB9Ci0KLSAgLyoqCi0gICAqIEFzc29jaWF0ZSB0aGUgc3BlY2lmaWVkIFlVViBwbGFuYXIgc291cmNlIGltYWdlIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSAgICogaW5zdGFuY2UuICBTdWJzZXF1ZW50IGRlY29tcHJlc3Mgb3BlcmF0aW9ucyB3aWxsIGRlY29kZSB0aGlzIGltYWdlIGludG8gYW4KLSAgICogUkdCIG9yIGdyYXlzY2FsZSBkZXN0aW5hdGlvbiBpbWFnZS4KLSAgICoKLSAgICogQHBhcmFtIHNyY0ltYWdlIHtAbGluayBZVVZJbWFnZX0gaW5zdGFuY2UgY29udGFpbmluZyBhIFlVViBwbGFuYXIgaW1hZ2UgdG8KLSAgICogYmUgZGVjb2RlZC4gIFRoaXMgaW1hZ2UgaXMgbm90IG1vZGlmaWVkLgotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0U291cmNlSW1hZ2UoWVVWSW1hZ2Ugc3JjSW1hZ2UpIHsKLSAgICBpZiAoc3JjSW1hZ2UgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gc2V0U291cmNlSW1hZ2UoKSIpOwotICAgIHl1dkltYWdlID0gc3JjSW1hZ2U7Ci0gICAganBlZ0J1ZiA9IG51bGw7Ci0gICAganBlZ0J1ZlNpemUgPSAwOwotICB9Ci0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIHNvdXJjZSBpbWFnZSAoSlBFRyBvciBZVVYpIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gICAqIGRlY29tcHJlc3NvciBpbnN0YW5jZS4KLSAgICoKLSAgICogQHJldHVybiB0aGUgd2lkdGggb2YgdGhlIHNvdXJjZSBpbWFnZSAoSlBFRyBvciBZVVYpIGFzc29jaWF0ZWQgd2l0aCB0aGlzCi0gICAqIGRlY29tcHJlc3NvciBpbnN0YW5jZS4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0V2lkdGgoKSB7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICByZXR1cm4geXV2SW1hZ2UuZ2V0V2lkdGgoKTsKLSAgICBpZiAoanBlZ1dpZHRoIDwgMSkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIHJldHVybiBqcGVnV2lkdGg7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgaGVpZ2h0IG9mIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotICAgKiBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIGhlaWdodCBvZiB0aGUgc291cmNlIGltYWdlIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMKLSAgICogZGVjb21wcmVzc29yIGluc3RhbmNlLgotICAgKi8KLSAgcHVibGljIGludCBnZXRIZWlnaHQoKSB7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICByZXR1cm4geXV2SW1hZ2UuZ2V0SGVpZ2h0KCk7Ci0gICAgaWYgKGpwZWdIZWlnaHQgPCAxKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgcmV0dXJuIGpwZWdIZWlnaHQ7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgc291cmNlIGltYWdlCi0gICAqIChKUEVHIG9yIFlVVikgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLiAgU2VlCi0gICAqIHtAbGluayBUSiNTQU1QXzQ0NCBUSi5TQU1QXyp9LgotICAgKgotICAgKiBAcmV0dXJuIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UKLSAgICogKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqLwotICBwdWJsaWMgaW50IGdldFN1YnNhbXAoKSB7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICByZXR1cm4geXV2SW1hZ2UuZ2V0U3Vic2FtcCgpOwotICAgIGlmIChqcGVnU3Vic2FtcCA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICBpZiAoanBlZ1N1YnNhbXAgPj0gVEouTlVNU0FNUCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkpQRUcgaGVhZGVyIGluZm9ybWF0aW9uIGlzIGludmFsaWQiKTsKLSAgICByZXR1cm4ganBlZ1N1YnNhbXA7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgY29sb3JzcGFjZSB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkCi0gICAqIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuICBTZWUge0BsaW5rIFRKI0NTX1JHQiBUSi5DU18qfS4gIElmIHRoZQotICAgKiBzb3VyY2UgaW1hZ2UgaXMgWVVWLCB0aGVuIHRoaXMgYWx3YXlzIHJldHVybnMge0BsaW5rIFRKI0NTX1lDYkNyfS4KLSAgICoKLSAgICogQHJldHVybiB0aGUgY29sb3JzcGFjZSB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UgKEpQRUcgb3IgWVVWKSBhc3NvY2lhdGVkCi0gICAqIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqLwotICBwdWJsaWMgaW50IGdldENvbG9yc3BhY2UoKSB7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICByZXR1cm4gVEouQ1NfWUNiQ3I7Ci0gICAgaWYgKGpwZWdDb2xvcnNwYWNlIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIGlmIChqcGVnQ29sb3JzcGFjZSA+PSBUSi5OVU1DUykKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkpQRUcgaGVhZGVyIGluZm9ybWF0aW9uIGlzIGludmFsaWQiKTsKLSAgICByZXR1cm4ganBlZ0NvbG9yc3BhY2U7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgSlBFRyBpbWFnZSBidWZmZXIgYXNzb2NpYXRlZCB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlLgotICAgKgotICAgKiBAcmV0dXJuIHRoZSBKUEVHIGltYWdlIGJ1ZmZlciBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqLwotICBwdWJsaWMgYnl0ZVtdIGdldEpQRUdCdWYoKSB7Ci0gICAgaWYgKGpwZWdCdWYgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIHJldHVybiBqcGVnQnVmOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotICAgKiBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKSBhc3NvY2lhdGVkIHdpdGggdGhpcwotICAgKiBkZWNvbXByZXNzb3IgaW5zdGFuY2UuCi0gICAqLwotICBwdWJsaWMgaW50IGdldEpQRUdTaXplKCkgewotICAgIGlmIChqcGVnQnVmU2l6ZSA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICByZXR1cm4ganBlZ0J1ZlNpemU7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gICAqIGRlY29tcHJlc3NvciBjYW4gZ2VuZXJhdGUgd2l0aG91dCBleGNlZWRpbmcgdGhlIGRlc2lyZWQgaW1hZ2Ugd2lkdGggYW5kCi0gICAqIGhlaWdodC4KLSAgICoKLSAgICogQHBhcmFtIGRlc2lyZWRXaWR0aCBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuCi0gICAqIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlCi0gICAqIChpbiBvdGhlciB3b3JkcywgdGhlIHdpZHRoIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKLSAgICogc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcGFyYW0gZGVzaXJlZEhlaWdodCBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlLgotICAgKiBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcKLSAgICogaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgaGVpZ2h0IHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZwotICAgKiB0aGUgc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcmV0dXJuIHRoZSB3aWR0aCBvZiB0aGUgbGFyZ2VzdCBzY2FsZWQtZG93biBpbWFnZSB0aGF0IHRoZSBUdXJib0pQRUcKLSAgICogZGVjb21wcmVzc29yIGNhbiBnZW5lcmF0ZSB3aXRob3V0IGV4Y2VlZGluZyB0aGUgZGVzaXJlZCBpbWFnZSB3aWR0aCBhbmQKLSAgICogaGVpZ2h0LgotICAgKi8KLSAgcHVibGljIGludCBnZXRTY2FsZWRXaWR0aChpbnQgZGVzaXJlZFdpZHRoLCBpbnQgZGVzaXJlZEhlaWdodCkgewotICAgIGlmIChqcGVnV2lkdGggPCAxIHx8IGpwZWdIZWlnaHQgPCAxKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgaWYgKGRlc2lyZWRXaWR0aCA8IDAgfHwgZGVzaXJlZEhlaWdodCA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIGdldFNjYWxlZFdpZHRoKCkiKTsKLSAgICBUSlNjYWxpbmdGYWN0b3JbXSBzZiA9IFRKLmdldFNjYWxpbmdGYWN0b3JzKCk7Ci0gICAgaWYgKGRlc2lyZWRXaWR0aCA9PSAwKQotICAgICAgZGVzaXJlZFdpZHRoID0ganBlZ1dpZHRoOwotICAgIGlmIChkZXNpcmVkSGVpZ2h0ID09IDApCi0gICAgICBkZXNpcmVkSGVpZ2h0ID0ganBlZ0hlaWdodDsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBqcGVnV2lkdGgsIHNjYWxlZEhlaWdodCA9IGpwZWdIZWlnaHQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZi5sZW5ndGg7IGkrKykgewotICAgICAgc2NhbGVkV2lkdGggPSBzZltpXS5nZXRTY2FsZWQoanBlZ1dpZHRoKTsKLSAgICAgIHNjYWxlZEhlaWdodCA9IHNmW2ldLmdldFNjYWxlZChqcGVnSGVpZ2h0KTsKLSAgICAgIGlmIChzY2FsZWRXaWR0aCA8PSBkZXNpcmVkV2lkdGggJiYgc2NhbGVkSGVpZ2h0IDw9IGRlc2lyZWRIZWlnaHQpCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc2NhbGVkV2lkdGggPiBkZXNpcmVkV2lkdGggfHwgc2NhbGVkSGVpZ2h0ID4gZGVzaXJlZEhlaWdodCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvdWxkIG5vdCBzY2FsZSBkb3duIHRvIGRlc2lyZWQgaW1hZ2UgZGltZW5zaW9ucyIpOwotICAgIHJldHVybiBzY2FsZWRXaWR0aDsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBoZWlnaHQgb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gICAqIGRlY29tcHJlc3NvciBjYW4gZ2VuZXJhdGUgd2l0aG91dCBleGNlZWRpbmcgdGhlIGRlc2lyZWQgaW1hZ2Ugd2lkdGggYW5kCi0gICAqIGhlaWdodC4KLSAgICoKLSAgICogQHBhcmFtIGRlc2lyZWRXaWR0aCBkZXNpcmVkIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuCi0gICAqIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8gdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlCi0gICAqIChpbiBvdGhlciB3b3JkcywgdGhlIHdpZHRoIHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUKLSAgICogc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcGFyYW0gZGVzaXJlZEhlaWdodCBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlLgotICAgKiBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcKLSAgICogaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgaGVpZ2h0IHdpbGwgbm90IGJlIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZwotICAgKiB0aGUgc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIGxhcmdlc3Qgc2NhbGVkLWRvd24gaW1hZ2UgdGhhdCB0aGUgVHVyYm9KUEVHCi0gICAqIGRlY29tcHJlc3NvciBjYW4gZ2VuZXJhdGUgd2l0aG91dCBleGNlZWRpbmcgdGhlIGRlc2lyZWQgaW1hZ2Ugd2lkdGggYW5kCi0gICAqIGhlaWdodC4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0U2NhbGVkSGVpZ2h0KGludCBkZXNpcmVkV2lkdGgsIGludCBkZXNpcmVkSGVpZ2h0KSB7Ci0gICAgaWYgKGpwZWdXaWR0aCA8IDEgfHwganBlZ0hlaWdodCA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICBpZiAoZGVzaXJlZFdpZHRoIDwgMCB8fCBkZXNpcmVkSGVpZ2h0IDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZ2V0U2NhbGVkSGVpZ2h0KCkiKTsKLSAgICBUSlNjYWxpbmdGYWN0b3JbXSBzZiA9IFRKLmdldFNjYWxpbmdGYWN0b3JzKCk7Ci0gICAgaWYgKGRlc2lyZWRXaWR0aCA9PSAwKQotICAgICAgZGVzaXJlZFdpZHRoID0ganBlZ1dpZHRoOwotICAgIGlmIChkZXNpcmVkSGVpZ2h0ID09IDApCi0gICAgICBkZXNpcmVkSGVpZ2h0ID0ganBlZ0hlaWdodDsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBqcGVnV2lkdGgsIHNjYWxlZEhlaWdodCA9IGpwZWdIZWlnaHQ7Ci0gICAgZm9yIChpbnQgaSA9IDA7IGkgPCBzZi5sZW5ndGg7IGkrKykgewotICAgICAgc2NhbGVkV2lkdGggPSBzZltpXS5nZXRTY2FsZWQoanBlZ1dpZHRoKTsKLSAgICAgIHNjYWxlZEhlaWdodCA9IHNmW2ldLmdldFNjYWxlZChqcGVnSGVpZ2h0KTsKLSAgICAgIGlmIChzY2FsZWRXaWR0aCA8PSBkZXNpcmVkV2lkdGggJiYgc2NhbGVkSGVpZ2h0IDw9IGRlc2lyZWRIZWlnaHQpCi0gICAgICAgIGJyZWFrOwotICAgIH0KLSAgICBpZiAoc2NhbGVkV2lkdGggPiBkZXNpcmVkV2lkdGggfHwgc2NhbGVkSGVpZ2h0ID4gZGVzaXJlZEhlaWdodCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkNvdWxkIG5vdCBzY2FsZSBkb3duIHRvIGRlc2lyZWQgaW1hZ2UgZGltZW5zaW9ucyIpOwotICAgIHJldHVybiBzY2FsZWRIZWlnaHQ7Ci0gIH0KLQotICAvKioKLSAgICogRGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2Ugb3IgZGVjb2RlIHRoZSBZVVYgc291cmNlIGltYWdlIGFzc29jaWF0ZWQKLSAgICogd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgb3V0cHV0IGEgZ3JheXNjYWxlLCBSR0IsIG9yIENNWUsgaW1hZ2UKLSAgICogdG8gdGhlIGdpdmVuIGRlc3RpbmF0aW9uIGJ1ZmZlci4KLSAgICoKLSAgICogQHBhcmFtIGRzdEJ1ZiBidWZmZXIgdGhhdCB3aWxsIHJlY2VpdmUgdGhlIGRlY29tcHJlc3NlZC9kZWNvZGVkIGltYWdlLgotICAgKiBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzIGJ1ZmZlciBzaG91bGQgbm9ybWFsbHkgYmUKLSAgICogPGNvZGU+cGl0Y2ggKiBzY2FsZWRIZWlnaHQ8L2NvZGU+IGJ5dGVzIGluIHNpemUsIHdoZXJlCi0gICAqIDxjb2RlPnNjYWxlZEhlaWdodDwvY29kZT4gY2FuIGJlIGRldGVybWluZWQgYnkgY2FsbGluZyA8Y29kZT4KLSAgICogc2NhbGluZ0ZhY3Rvci57QGxpbmsgVEpTY2FsaW5nRmFjdG9yI2dldFNjYWxlZCBnZXRTY2FsZWR9KGpwZWdIZWlnaHQpCi0gICAqIDwvY29kZT4gd2l0aCBvbmUgb2YgdGhlIHNjYWxpbmcgZmFjdG9ycyByZXR1cm5lZCBmcm9tIHtAbGluawotICAgKiBUSiNnZXRTY2FsaW5nRmFjdG9yc30gb3IgYnkgY2FsbGluZyB7QGxpbmsgI2dldFNjYWxlZEhlaWdodH0uICBJZiB0aGUKLSAgICogc291cmNlIGltYWdlIGlzIGEgWVVWIGltYWdlLCB0aGVuIHRoaXMgYnVmZmVyIHNob3VsZCBub3JtYWxseSBiZQotICAgKiA8Y29kZT5waXRjaCAqIGhlaWdodDwvY29kZT4gYnl0ZXMgaW4gc2l6ZSwgd2hlcmUgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpcwotICAgKiB0aGUgaGVpZ2h0IG9mIHRoZSBZVVYgaW1hZ2UuICBIb3dldmVyLCB0aGUgYnVmZmVyIG1heSBhbHNvIGJlIGxhcmdlciB0aGFuCi0gICAqIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBzb3VyY2UgaW1hZ2UsIGluIHdoaWNoIGNhc2UgdGhlIDxjb2RlPng8L2NvZGU+LAotICAgKiA8Y29kZT55PC9jb2RlPiwgYW5kIDxjb2RlPnBpdGNoPC9jb2RlPiBwYXJhbWV0ZXJzIGNhbiBiZSB1c2VkIHRvIHNwZWNpZnkKLSAgICogdGhlIHJlZ2lvbiBpbnRvIHdoaWNoIHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIGJlIGRlY29tcHJlc3NlZC9kZWNvZGVkLgotICAgKgotICAgKiBAcGFyYW0geCB4IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBpbnRvCi0gICAqIHdoaWNoIHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIGJlIGRlY29tcHJlc3NlZC9kZWNvZGVkCi0gICAqCi0gICAqIEBwYXJhbSB5IHkgb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlIGludG8KLSAgICogd2hpY2ggdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgYmUgZGVjb21wcmVzc2VkL2RlY29kZWQKLSAgICoKLSAgICogQHBhcmFtIGRlc2lyZWRXaWR0aCBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzCi0gICAqIHNwZWNpZmllcyB0aGUgZGVzaXJlZCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIChvcgotICAgKiBpbWFnZSByZWdpb24uKSAgSWYgdGhlIGRlc2lyZWQgZGVzdGluYXRpb24gaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50Ci0gICAqIHRoYW4gdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZQotICAgKiBKUEVHIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0Ci0gICAqIHdpdGhpbiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZwotICAgKiBpdCB0byB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSAgICogY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pICBUaGlzIHBhcmFtZXRlciBpcwotICAgKiBpZ25vcmVkIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBwaXRjaCBieXRlcyBwZXIgbGluZSBvZiB0aGUgZGVzdGluYXRpb24gaW1hZ2UuICBOb3JtYWxseSwgdGhpcwotICAgKiBzaG91bGQgYmUgc2V0IHRvIDxjb2RlPnNjYWxlZFdpZHRoICogVEoucGl4ZWxTaXplKHBpeGVsRm9ybWF0KTwvY29kZT4gaWYKLSAgICogdGhlIGRlc3RpbmF0aW9uIGltYWdlIGlzIHVucGFkZGVkLCBidXQgeW91IGNhbiB1c2UgdGhpcyB0bywgZm9yIGluc3RhbmNlLAotICAgKiBwYWQgZWFjaCBsaW5lIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSB0byBhIDQtYnl0ZSBib3VuZGFyeSBvciB0bwotICAgKiBkZWNvbXByZXNzL2RlY29kZSB0aGUgc291cmNlIGltYWdlIGludG8gYSByZWdpb24gb2YgYSBsYXJnZXIgaW1hZ2UuICBOT1RFOgotICAgKiBpZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiA8Y29kZT5zY2FsZWRXaWR0aDwvY29kZT4gY2FuIGJlCi0gICAqIGRldGVybWluZWQgYnkgY2FsbGluZyA8Y29kZT4KLSAgICogc2NhbGluZ0ZhY3Rvci57QGxpbmsgVEpTY2FsaW5nRmFjdG9yI2dldFNjYWxlZCBnZXRTY2FsZWR9KGpwZWdXaWR0aCkKLSAgICogPC9jb2RlPiBvciBieSBjYWxsaW5nIHtAbGluayAjZ2V0U2NhbGVkV2lkdGh9LiAgSWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhCi0gICAqIFlVViBpbWFnZSwgdGhlbiA8Y29kZT5zY2FsZWRXaWR0aDwvY29kZT4gaXMgdGhlIHdpZHRoIG9mIHRoZSBZVVYgaW1hZ2UuCi0gICAqIFNldHRpbmcgdGhpcyBwYXJhbWV0ZXIgdG8gMCBpcyB0aGUgZXF1aXZhbGVudCBvZiBzZXR0aW5nIGl0IHRvCi0gICAqIDxjb2RlPnNjYWxlZFdpZHRoICogVEoucGl4ZWxTaXplKHBpeGVsRm9ybWF0KTwvY29kZT4uCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkSGVpZ2h0IElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIHRoaXMKLSAgICogc3BlY2lmaWVzIHRoZSBkZXNpcmVkIGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIChvcgotICAgKiBpbWFnZSByZWdpb24uKSAgSWYgdGhlIGRlc2lyZWQgZGVzdGluYXRpb24gaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50Ci0gICAqIHRoYW4gdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZQotICAgKiBKUEVHIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0Ci0gICAqIHdpdGhpbiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZwotICAgKiBpdCB0byB0aGUgaGVpZ2h0IG9mIHRoZSBKUEVHIGltYWdlIChpbiBvdGhlciB3b3JkcywgdGhlIGhlaWdodCB3aWxsIG5vdCBiZQotICAgKiBjb25zaWRlcmVkIHdoZW4gZGV0ZXJtaW5pbmcgdGhlIHNjYWxlZCBpbWFnZSBzaXplLikgIFRoaXMgcGFyYW1ldGVyIGlzCi0gICAqIGlnbm9yZWQgaWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZS4KLSAgICoKLSAgICogQHBhcmFtIHBpeGVsRm9ybWF0IHBpeGVsIGZvcm1hdCBvZiB0aGUgZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UgKG9uZSBvZgotICAgKiB7QGxpbmsgVEojUEZfUkdCIFRKLlBGXyp9KQotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKi8KLSAgcHVibGljIHZvaWQgZGVjb21wcmVzcyhieXRlW10gZHN0QnVmLCBpbnQgeCwgaW50IHksIGludCBkZXNpcmVkV2lkdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IHBpdGNoLCBpbnQgZGVzaXJlZEhlaWdodCwgaW50IHBpeGVsRm9ybWF0LAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpZiAoanBlZ0J1ZiA9PSBudWxsICYmIHl1dkltYWdlID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICBpZiAoZHN0QnVmID09IG51bGwgfHwgeCA8IDAgfHwgeSA8IDAgfHwgcGl0Y2ggPCAwIHx8Ci0gICAgICAgICh5dXZJbWFnZSAhPSBudWxsICYmIChkZXNpcmVkV2lkdGggPCAwIHx8IGRlc2lyZWRIZWlnaHQgPCAwKSkgfHwKLSAgICAgICAgcGl4ZWxGb3JtYXQgPCAwIHx8IHBpeGVsRm9ybWF0ID49IFRKLk5VTVBGIHx8IGZsYWdzIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZGVjb21wcmVzcygpIik7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICBkZWNvZGVZVVYoeXV2SW1hZ2UuZ2V0UGxhbmVzKCksIHl1dkltYWdlLmdldE9mZnNldHMoKSwKLSAgICAgICAgICAgICAgICB5dXZJbWFnZS5nZXRTdHJpZGVzKCksIHl1dkltYWdlLmdldFN1YnNhbXAoKSwgZHN0QnVmLCB4LCB5LAotICAgICAgICAgICAgICAgIHl1dkltYWdlLmdldFdpZHRoKCksIHBpdGNoLCB5dXZJbWFnZS5nZXRIZWlnaHQoKSwgcGl4ZWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgZmxhZ3MpOwotICAgIGVsc2UgewotICAgICAgaWYgKHggPiAwIHx8IHkgPiAwKQotICAgICAgICBkZWNvbXByZXNzKGpwZWdCdWYsIGpwZWdCdWZTaXplLCBkc3RCdWYsIHgsIHksIGRlc2lyZWRXaWR0aCwgcGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgZGVzaXJlZEhlaWdodCwgcGl4ZWxGb3JtYXQsIGZsYWdzKTsKLSAgICAgIGVsc2UKLSAgICAgICAgZGVjb21wcmVzcyhqcGVnQnVmLCBqcGVnQnVmU2l6ZSwgZHN0QnVmLCBkZXNpcmVkV2lkdGgsIHBpdGNoLAotICAgICAgICAgICAgICAgICAgIGRlc2lyZWRIZWlnaHQsIHBpeGVsRm9ybWF0LCBmbGFncyk7Ci0gICAgfQotICB9Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZQotICAgKiB7QGxpbmsgI2RlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpfSBpbnN0ZWFkLgotICAgKi8KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIHZvaWQgZGVjb21wcmVzcyhieXRlW10gZHN0QnVmLCBpbnQgZGVzaXJlZFdpZHRoLCBpbnQgcGl0Y2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGRlc2lyZWRIZWlnaHQsIGludCBwaXhlbEZvcm1hdCwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgZGVjb21wcmVzcyhkc3RCdWYsIDAsIDAsIGRlc2lyZWRXaWR0aCwgcGl0Y2gsIGRlc2lyZWRIZWlnaHQsIHBpeGVsRm9ybWF0LAotICAgICAgICAgICAgICAgZmxhZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgYnVmZmVyIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4KLSAgICoKLSAgICogQHBhcmFtIGRlc2lyZWRXaWR0aCBzZWUKLSAgICoge0BsaW5rICNkZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KX0KLSAgICogZm9yIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSBwaXRjaCBzZWUKLSAgICoge0BsaW5rICNkZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KX0KLSAgICogZm9yIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkSGVpZ2h0IHNlZQotICAgKiB7QGxpbmsgI2RlY29tcHJlc3MoYnl0ZVtdLCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQpfQotICAgKiBmb3IgZGVzY3JpcHRpb24KLSAgICoKLSAgICogQHBhcmFtIHBpeGVsRm9ybWF0IHBpeGVsIGZvcm1hdCBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIChvbmUgb2YKLSAgICoge0BsaW5rIFRKI1BGX1JHQiBUSi5QRl8qfSkKLSAgICoKLSAgICogQHBhcmFtIGZsYWdzIHRoZSBiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mCi0gICAqIHtAbGluayBUSiNGTEFHX0JPVFRPTVVQIFRKLkZMQUdfKn0KLSAgICoKLSAgICogQHJldHVybiBhIGJ1ZmZlciBjb250YWluaW5nIHRoZSBkZWNvbXByZXNzZWQgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgYnl0ZVtdIGRlY29tcHJlc3MoaW50IGRlc2lyZWRXaWR0aCwgaW50IHBpdGNoLCBpbnQgZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBwaXhlbEZvcm1hdCwgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChwaXRjaCA8IDAgfHwKLSAgICAgICAgKHl1dkltYWdlID09IG51bGwgJiYgKGRlc2lyZWRXaWR0aCA8IDAgfHwgZGVzaXJlZEhlaWdodCA8IDApKSB8fAotICAgICAgICBwaXhlbEZvcm1hdCA8IDAgfHwgcGl4ZWxGb3JtYXQgPj0gVEouTlVNUEYgfHwgZmxhZ3MgPCAwKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBkZWNvbXByZXNzKCkiKTsKLSAgICBpbnQgcGl4ZWxTaXplID0gVEouZ2V0UGl4ZWxTaXplKHBpeGVsRm9ybWF0KTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBnZXRTY2FsZWRXaWR0aChkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQpOwotICAgIGludCBzY2FsZWRIZWlnaHQgPSBnZXRTY2FsZWRIZWlnaHQoZGVzaXJlZFdpZHRoLCBkZXNpcmVkSGVpZ2h0KTsKLSAgICBpZiAocGl0Y2ggPT0gMCkKLSAgICAgIHBpdGNoID0gc2NhbGVkV2lkdGggKiBwaXhlbFNpemU7Ci0gICAgYnl0ZVtdIGJ1ZiA9IG5ldyBieXRlW3BpdGNoICogc2NhbGVkSGVpZ2h0XTsKLSAgICBkZWNvbXByZXNzKGJ1ZiwgZGVzaXJlZFdpZHRoLCBwaXRjaCwgZGVzaXJlZEhlaWdodCwgcGl4ZWxGb3JtYXQsIGZsYWdzKTsKLSAgICByZXR1cm4gYnVmOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBpbnRvIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgc3RvcmUgaXQgaW4gdGhlIGdpdmVuCi0gICAqIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZS4gIFRoaXMgbWV0aG9kIHBlcmZvcm1zIEpQRUcgZGVjb21wcmVzc2lvbgotICAgKiBidXQgbGVhdmVzIG91dCB0aGUgY29sb3IgY29udmVyc2lvbiBzdGVwLCBzbyBhIHBsYW5hciBZVVYgaW1hZ2UgaXMKLSAgICogZ2VuZXJhdGVkIGluc3RlYWQgb2YgYW4gUkdCIG9yIGdyYXlzY2FsZSBpbWFnZS4gIFRoaXMgbWV0aG9kIGNhbm5vdCBiZQotICAgKiB1c2VkIHRvIGRlY29tcHJlc3MgSlBFRyBzb3VyY2UgaW1hZ2VzIHdpdGggdGhlIENNWUsgb3IgWUNDSyBjb2xvcnNwYWNlLgotICAgKgotICAgKiBAcGFyYW0gZHN0SW1hZ2Uge0BsaW5rIFlVVkltYWdlfSBpbnN0YW5jZSB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgWVVWIHBsYW5hcgotICAgKiBpbWFnZS4gIFRoZSBsZXZlbCBvZiBzdWJzYW1wbGluZyBzcGVjaWZpZWQgaW4gdGhpcyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4KLSAgICogaW5zdGFuY2UgbXVzdCBtYXRjaCB0aGF0IG9mIHRoZSBKUEVHIGltYWdlLCBhbmQgdGhlIHdpZHRoIGFuZCBoZWlnaHQKLSAgICogc3BlY2lmaWVkIGluIHRoZSA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgbXVzdCBtYXRjaCBvbmUgb2YgdGhlCi0gICAqIHNjYWxlZCBpbWFnZSBzaXplcyB0aGF0IFR1cmJvSlBFRyBpcyBjYXBhYmxlIG9mIGdlbmVyYXRpbmcgZnJvbSB0aGUgSlBFRwotICAgKiBzb3VyY2UgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqLwotICBwdWJsaWMgdm9pZCBkZWNvbXByZXNzVG9ZVVYoWVVWSW1hZ2UgZHN0SW1hZ2UsIGludCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGpwZWdCdWYgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIGlmIChkc3RJbWFnZSA9PSBudWxsIHx8IGZsYWdzIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZGVjb21wcmVzc1RvWVVWKCkiKTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBnZXRTY2FsZWRXaWR0aChkc3RJbWFnZS5nZXRXaWR0aCgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRzdEltYWdlLmdldEhlaWdodCgpKTsKLSAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gZ2V0U2NhbGVkSGVpZ2h0KGRzdEltYWdlLmdldFdpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkc3RJbWFnZS5nZXRIZWlnaHQoKSk7Ci0gICAgaWYgKHNjYWxlZFdpZHRoICE9IGRzdEltYWdlLmdldFdpZHRoKCkgfHwKLSAgICAgICAgc2NhbGVkSGVpZ2h0ICE9IGRzdEltYWdlLmdldEhlaWdodCgpKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiWVVWSW1hZ2UgZGltZW5zaW9ucyBkbyBub3QgbWF0Y2ggb25lIG9mIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZXMgdGhhdCBUdXJib0pQRUcgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nLiIpOwotICAgIGlmIChqcGVnU3Vic2FtcCAhPSBkc3RJbWFnZS5nZXRTdWJzYW1wKCkpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJZVVZJbWFnZSBzdWJzYW1wbGluZyBsZXZlbCBkb2VzIG5vdCBtYXRjaCB0aGF0IG9mIHRoZSBKUEVHIGltYWdlIik7Ci0KLSAgICBkZWNvbXByZXNzVG9ZVVYoanBlZ0J1ZiwganBlZ0J1ZlNpemUsIGRzdEltYWdlLmdldFBsYW5lcygpLAotICAgICAgICAgICAgICAgICAgICBkc3RJbWFnZS5nZXRPZmZzZXRzKCksIGRzdEltYWdlLmdldFdpZHRoKCksCi0gICAgICAgICAgICAgICAgICAgIGRzdEltYWdlLmdldFN0cmlkZXMoKSwgZHN0SW1hZ2UuZ2V0SGVpZ2h0KCksIGZsYWdzKTsKLSAgfQotCi0gIC8qKgotICAgKiBAZGVwcmVjYXRlZCBVc2Uge0BsaW5rICNkZWNvbXByZXNzVG9ZVVYoWVVWSW1hZ2UsIGludCl9IGluc3RlYWQuCi0gICAqLwotICBARGVwcmVjYXRlZAotICBwdWJsaWMgdm9pZCBkZWNvbXByZXNzVG9ZVVYoYnl0ZVtdIGRzdEJ1ZiwgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIFlVVkltYWdlIGRzdEltYWdlID0gbmV3IFlVVkltYWdlKGRzdEJ1ZiwganBlZ1dpZHRoLCA0LCBqcGVnSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGpwZWdTdWJzYW1wKTsKLSAgICBkZWNvbXByZXNzVG9ZVVYoZHN0SW1hZ2UsIGZsYWdzKTsKLSAgfQotCi0gIC8qKgotICAgKiBEZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkIHdpdGggdGhpcyBkZWNvbXByZXNzb3IKLSAgICogaW5zdGFuY2UgaW50byBhIHNldCBvZiBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGFuZCByZXR1cm4gYQotICAgKiA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkIGltYWdlIHBsYW5lcy4KLSAgICogVGhpcyBtZXRob2QgcGVyZm9ybXMgSlBFRyBkZWNvbXByZXNzaW9uIGJ1dCBsZWF2ZXMgb3V0IHRoZSBjb2xvcgotICAgKiBjb252ZXJzaW9uIHN0ZXAsIHNvIGEgcGxhbmFyIFlVViBpbWFnZSBpcyBnZW5lcmF0ZWQgaW5zdGVhZCBvZiBhbiBSR0Igb3IKLSAgICogZ3JheXNjYWxlIGltYWdlLiAgVGhpcyBtZXRob2QgY2Fubm90IGJlIHVzZWQgdG8gZGVjb21wcmVzcyBKUEVHIHNvdXJjZQotICAgKiBpbWFnZXMgd2l0aCB0aGUgQ01ZSyBvciBZQ0NLIGNvbG9yc3BhY2UuCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkV2lkdGggZGVzaXJlZCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlLiAgSWYgdGhlCi0gICAqIGRlc2lyZWQgaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50IHRoYW4gdGhlIGRpbWVuc2lvbnMgb2YgdGhlIEpQRUcKLSAgICogaW1hZ2UgYmVpbmcgZGVjb21wcmVzc2VkLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZSBKUEVHCi0gICAqIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0IHdpdGhpbgotICAgKiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZyBpdCB0bwotICAgKiB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSAgICogY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGVzIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotICAgKiBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgb3V0cHV0IGltYWdlLiAgU2V0dGluZyB0aGUKLSAgICogc3RyaWRlIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBzY2FsZWQKLSAgICogY29tcG9uZW50IHdpZHRoIG9mIHRoZSBwbGFuZS4gIElmIDx0dD5zdHJpZGVzPC90dD4gaXMgTlVMTCwgdGhlbiB0aGUKLSAgICogc3RyaWRlcyBmb3IgYWxsIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIHNjYWxlZCBjb21wb25lbnQKLSAgICogd2lkdGhzLiAgWW91IGNhbiBhZGp1c3QgdGhlIHN0cmlkZXMgaW4gb3JkZXIgdG8gYWRkIGFuIGFyYml0cmFyeSBhbW91bnQgb2YKLSAgICogbGluZSBwYWRkaW5nIHRvIGVhY2ggcGxhbmUuCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkSGVpZ2h0IGRlc2lyZWQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuICBJZiB0aGUKLSAgICogZGVzaXJlZCBpbWFnZSBkaW1lbnNpb25zIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgSlBFRwotICAgKiBpbWFnZSBiZWluZyBkZWNvbXByZXNzZWQsIHRoZW4gVHVyYm9KUEVHIHdpbGwgdXNlIHNjYWxpbmcgaW4gdGhlIEpQRUcKLSAgICogZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQgd2l0aGluCi0gICAqIHRoZSBkZXNpcmVkIGRpbWVuc2lvbnMuICBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvCi0gICAqIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgaGVpZ2h0IHdpbGwgbm90IGJlCi0gICAqIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKgotICAgKiBAcmV0dXJuIGEgWVVWIHBsYW5hciBpbWFnZS4KLSAgICovCi0gIHB1YmxpYyBZVVZJbWFnZSBkZWNvbXByZXNzVG9ZVVYoaW50IGRlc2lyZWRXaWR0aCwgaW50W10gc3RyaWRlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZGVzaXJlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGZsYWdzIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZGVjb21wcmVzc1RvWVVWKCkiKTsKLSAgICBpZiAoanBlZ1dpZHRoIDwgMSB8fCBqcGVnSGVpZ2h0IDwgMSB8fCBqcGVnU3Vic2FtcCA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICBpZiAoanBlZ1N1YnNhbXAgPj0gVEouTlVNU0FNUCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkpQRUcgaGVhZGVyIGluZm9ybWF0aW9uIGlzIGludmFsaWQiKTsKLSAgICBpZiAoeXV2SW1hZ2UgIT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIlNvdXJjZSBpbWFnZSBpcyB0aGUgd3JvbmcgdHlwZSIpOwotCi0gICAgaW50IHNjYWxlZFdpZHRoID0gZ2V0U2NhbGVkV2lkdGgoZGVzaXJlZFdpZHRoLCBkZXNpcmVkSGVpZ2h0KTsKLSAgICBpbnQgc2NhbGVkSGVpZ2h0ID0gZ2V0U2NhbGVkSGVpZ2h0KGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCk7Ci0gICAgWVVWSW1hZ2UgeXV2SW1hZ2UgPSBuZXcgWVVWSW1hZ2Uoc2NhbGVkV2lkdGgsIG51bGwsIHNjYWxlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnU3Vic2FtcCk7Ci0gICAgZGVjb21wcmVzc1RvWVVWKHl1dkltYWdlLCBmbGFncyk7Ci0gICAgcmV0dXJuIHl1dkltYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvcgotICAgKiBpbnN0YW5jZSBpbnRvIGEgdW5pZmllZCBZVVYgcGxhbmFyIGltYWdlIGJ1ZmZlciBhbmQgcmV0dXJuIGEKLSAgICogPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGNvbnRhaW5pbmcgdGhlIGRlY29tcHJlc3NlZCBpbWFnZS4gIFRoaXMKLSAgICogbWV0aG9kIHBlcmZvcm1zIEpQRUcgZGVjb21wcmVzc2lvbiBidXQgbGVhdmVzIG91dCB0aGUgY29sb3IgY29udmVyc2lvbgotICAgKiBzdGVwLCBzbyBhIHBsYW5hciBZVVYgaW1hZ2UgaXMgZ2VuZXJhdGVkIGluc3RlYWQgb2YgYW4gUkdCIG9yIGdyYXlzY2FsZQotICAgKiBpbWFnZS4gIFRoaXMgbWV0aG9kIGNhbm5vdCBiZSB1c2VkIHRvIGRlY29tcHJlc3MgSlBFRyBzb3VyY2UgaW1hZ2VzIHdpdGgKLSAgICogdGhlIENNWUsgb3IgWUNDSyBjb2xvcnNwYWNlLgotICAgKgotICAgKiBAcGFyYW0gZGVzaXJlZFdpZHRoIGRlc2lyZWQgd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZS4gIElmIHRoZQotICAgKiBkZXNpcmVkIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudCB0aGFuIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBKUEVHCi0gICAqIGltYWdlIGJlaW5nIGRlY29tcHJlc3NlZCwgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUgSlBFRwotICAgKiBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdCB3aXRoaW4KLSAgICogdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgaXQgdG8KLSAgICogdGhlIHdpZHRoIG9mIHRoZSBKUEVHIGltYWdlIChpbiBvdGhlciB3b3JkcywgdGhlIHdpZHRoIHdpbGwgbm90IGJlCi0gICAqIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcGFyYW0gcGFkIHRoZSB3aWR0aCBvZiBlYWNoIGxpbmUgaW4gZWFjaCBwbGFuZSBvZiB0aGUgWVVWIGltYWdlIHdpbGwgYmUKLSAgICogcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoaXMgbnVtYmVyIG9mIGJ5dGVzIChtdXN0IGJlIGEgcG93ZXIgb2YKLSAgICogMi4pCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkSGVpZ2h0IGRlc2lyZWQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UuICBJZiB0aGUKLSAgICogZGVzaXJlZCBpbWFnZSBkaW1lbnNpb25zIGFyZSBkaWZmZXJlbnQgdGhhbiB0aGUgZGltZW5zaW9ucyBvZiB0aGUgSlBFRwotICAgKiBpbWFnZSBiZWluZyBkZWNvbXByZXNzZWQsIHRoZW4gVHVyYm9KUEVHIHdpbGwgdXNlIHNjYWxpbmcgaW4gdGhlIEpQRUcKLSAgICogZGVjb21wcmVzc29yIHRvIGdlbmVyYXRlIHRoZSBsYXJnZXN0IHBvc3NpYmxlIGltYWdlIHRoYXQgd2lsbCBmaXQgd2l0aGluCi0gICAqIHRoZSBkZXNpcmVkIGRpbWVuc2lvbnMuICBTZXR0aW5nIHRoaXMgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvCi0gICAqIHRoZSBoZWlnaHQgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgaGVpZ2h0IHdpbGwgbm90IGJlCi0gICAqIGNvbnNpZGVyZWQgd2hlbiBkZXRlcm1pbmluZyB0aGUgc2NhbGVkIGltYWdlIHNpemUuKQotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKgotICAgKiBAcmV0dXJuIGEgWVVWIHBsYW5hciBpbWFnZS4KLSAgICovCi0gIHB1YmxpYyBZVVZJbWFnZSBkZWNvbXByZXNzVG9ZVVYoaW50IGRlc2lyZWRXaWR0aCwgaW50IHBhZCwgaW50IGRlc2lyZWRIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChmbGFncyA8IDApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIGRlY29tcHJlc3NUb1lVVigpIik7Ci0gICAgaWYgKGpwZWdXaWR0aCA8IDEgfHwganBlZ0hlaWdodCA8IDEgfHwganBlZ1N1YnNhbXAgPCAwKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgaWYgKGpwZWdTdWJzYW1wID49IFRKLk5VTVNBTVApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJKUEVHIGhlYWRlciBpbmZvcm1hdGlvbiBpcyBpbnZhbGlkIik7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJTb3VyY2UgaW1hZ2UgaXMgdGhlIHdyb25nIHR5cGUiKTsKLQotICAgIGludCBzY2FsZWRXaWR0aCA9IGdldFNjYWxlZFdpZHRoKGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCk7Ci0gICAgaW50IHNjYWxlZEhlaWdodCA9IGdldFNjYWxlZEhlaWdodChkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQpOwotICAgIFlVVkltYWdlIHl1dkltYWdlID0gbmV3IFlVVkltYWdlKHNjYWxlZFdpZHRoLCBwYWQsIHNjYWxlZEhlaWdodCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBqcGVnU3Vic2FtcCk7Ci0gICAgZGVjb21wcmVzc1RvWVVWKHl1dkltYWdlLCBmbGFncyk7Ci0gICAgcmV0dXJuIHl1dkltYWdlOwotICB9Ci0KLSAgLyoqCi0gICAqIEBkZXByZWNhdGVkIFVzZSB7QGxpbmsgI2RlY29tcHJlc3NUb1lVVihpbnQsIGludCwgaW50LCBpbnQpfSBpbnN0ZWFkLgotICAgKi8KLSAgQERlcHJlY2F0ZWQKLSAgcHVibGljIGJ5dGVbXSBkZWNvbXByZXNzVG9ZVVYoaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIFlVVkltYWdlIGRzdEltYWdlID0gbmV3IFlVVkltYWdlKGpwZWdXaWR0aCwgNCwganBlZ0hlaWdodCwganBlZ1N1YnNhbXApOwotICAgIGRlY29tcHJlc3NUb1lVVihkc3RJbWFnZSwgZmxhZ3MpOwotICAgIHJldHVybiBkc3RJbWFnZS5nZXRCdWYoKTsKLSAgfQotCi0gIC8qKgotICAgKiBEZWNvbXByZXNzIHRoZSBKUEVHIHNvdXJjZSBpbWFnZSBvciBkZWNvZGUgdGhlIFlVViBzb3VyY2UgaW1hZ2UgYXNzb2NpYXRlZAotICAgKiB3aXRoIHRoaXMgZGVjb21wcmVzc29yIGluc3RhbmNlIGFuZCBvdXRwdXQgYSBncmF5c2NhbGUsIFJHQiwgb3IgQ01ZSyBpbWFnZQotICAgKiB0byB0aGUgZ2l2ZW4gZGVzdGluYXRpb24gYnVmZmVyLgotICAgKgotICAgKiBAcGFyYW0gZHN0QnVmIGJ1ZmZlciB0aGF0IHdpbGwgcmVjZWl2ZSB0aGUgZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UuCi0gICAqIElmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIHRoaXMgYnVmZmVyIHNob3VsZCBub3JtYWxseSBiZQotICAgKiA8Y29kZT5zdHJpZGUgKiBzY2FsZWRIZWlnaHQ8L2NvZGU+IHBpeGVscyBpbiBzaXplLCB3aGVyZQotICAgKiA8Y29kZT5zY2FsZWRIZWlnaHQ8L2NvZGU+IGNhbiBiZSBkZXRlcm1pbmVkIGJ5IGNhbGxpbmcgPGNvZGU+Ci0gICAqIHNjYWxpbmdGYWN0b3Iue0BsaW5rIFRKU2NhbGluZ0ZhY3RvciNnZXRTY2FsZWQgZ2V0U2NhbGVkfShqcGVnSGVpZ2h0KQotICAgKiA8L2NvZGU+IHdpdGggb25lIG9mIHRoZSBzY2FsaW5nIGZhY3RvcnMgcmV0dXJuZWQgZnJvbSB7QGxpbmsKLSAgICogVEojZ2V0U2NhbGluZ0ZhY3RvcnN9IG9yIGJ5IGNhbGxpbmcge0BsaW5rICNnZXRTY2FsZWRIZWlnaHR9LiAgSWYgdGhlCi0gICAqIHNvdXJjZSBpbWFnZSBpcyBhIFlVViBpbWFnZSwgdGhlbiB0aGlzIGJ1ZmZlciBzaG91bGQgbm9ybWFsbHkgYmUKLSAgICogPGNvZGU+c3RyaWRlICogaGVpZ2h0PC9jb2RlPiBwaXhlbHMgaW4gc2l6ZSwgd2hlcmUgPGNvZGU+aGVpZ2h0PC9jb2RlPiBpcwotICAgKiB0aGUgaGVpZ2h0IG9mIHRoZSBZVVYgaW1hZ2UuICBIb3dldmVyLCB0aGUgYnVmZmVyIG1heSBhbHNvIGJlIGxhcmdlciB0aGFuCi0gICAqIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBKUEVHIGltYWdlLCBpbiB3aGljaCBjYXNlIHRoZSA8Y29kZT54PC9jb2RlPiwKLSAgICogPGNvZGU+eTwvY29kZT4sIGFuZCA8Y29kZT5zdHJpZGU8L2NvZGU+IHBhcmFtZXRlcnMgY2FuIGJlIHVzZWQgdG8gc3BlY2lmeQotICAgKiB0aGUgcmVnaW9uIGludG8gd2hpY2ggdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgYmUgZGVjb21wcmVzc2VkLgotICAgKgotICAgKiBAcGFyYW0geCB4IG9mZnNldCAoaW4gcGl4ZWxzKSBvZiB0aGUgcmVnaW9uIGluIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBpbnRvCi0gICAqIHdoaWNoIHRoZSBzb3VyY2UgaW1hZ2Ugc2hvdWxkIGJlIGRlY29tcHJlc3NlZC9kZWNvZGVkCi0gICAqCi0gICAqIEBwYXJhbSB5IHkgb2Zmc2V0IChpbiBwaXhlbHMpIG9mIHRoZSByZWdpb24gaW4gdGhlIGRlc3RpbmF0aW9uIGltYWdlIGludG8KLSAgICogd2hpY2ggdGhlIHNvdXJjZSBpbWFnZSBzaG91bGQgYmUgZGVjb21wcmVzc2VkL2RlY29kZWQKLSAgICoKLSAgICogQHBhcmFtIGRlc2lyZWRXaWR0aCBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzCi0gICAqIHNwZWNpZmllcyB0aGUgZGVzaXJlZCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgZGVjb21wcmVzc2VkIGltYWdlIChvcgotICAgKiBpbWFnZSByZWdpb24uKSAgSWYgdGhlIGRlc2lyZWQgZGVzdGluYXRpb24gaW1hZ2UgZGltZW5zaW9ucyBhcmUgZGlmZmVyZW50Ci0gICAqIHRoYW4gdGhlIHNvdXJjZSBpbWFnZSBkaW1lbnNpb25zLCB0aGVuIFR1cmJvSlBFRyB3aWxsIHVzZSBzY2FsaW5nIGluIHRoZQotICAgKiBKUEVHIGRlY29tcHJlc3NvciB0byBnZW5lcmF0ZSB0aGUgbGFyZ2VzdCBwb3NzaWJsZSBpbWFnZSB0aGF0IHdpbGwgZml0Ci0gICAqIHdpdGhpbiB0aGUgZGVzaXJlZCBkaW1lbnNpb25zLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlIHNhbWUgYXMgc2V0dGluZwotICAgKiBpdCB0byB0aGUgd2lkdGggb2YgdGhlIEpQRUcgaW1hZ2UgKGluIG90aGVyIHdvcmRzLCB0aGUgd2lkdGggd2lsbCBub3QgYmUKLSAgICogY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pICBUaGlzIHBhcmFtZXRlciBpcwotICAgKiBpZ25vcmVkIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGUgcGl4ZWxzIHBlciBsaW5lIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZS4gIE5vcm1hbGx5LCB0aGlzCi0gICAqIHNob3VsZCBiZSBzZXQgdG8gPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+LCBidXQgeW91IGNhbiB1c2UgdGhpcyB0bywgZm9yCi0gICAqIGluc3RhbmNlLCBkZWNvbXByZXNzIHRoZSBKUEVHIGltYWdlIGludG8gYSByZWdpb24gb2YgYSBsYXJnZXIgaW1hZ2UuCi0gICAqIE5PVEU6IGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBKUEVHIGltYWdlLCB0aGVuIDxjb2RlPnNjYWxlZFdpZHRoPC9jb2RlPgotICAgKiBjYW4gYmUgZGV0ZXJtaW5lZCBieSBjYWxsaW5nIDxjb2RlPgotICAgKiBzY2FsaW5nRmFjdG9yLntAbGluayBUSlNjYWxpbmdGYWN0b3IjZ2V0U2NhbGVkIGdldFNjYWxlZH0oanBlZ1dpZHRoKQotICAgKiA8L2NvZGU+IG9yIGJ5IGNhbGxpbmcge0BsaW5rICNnZXRTY2FsZWRXaWR0aH0uICBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEKLSAgICogWVVWIGltYWdlLCB0aGVuIDxjb2RlPnNjYWxlZFdpZHRoPC9jb2RlPiBpcyB0aGUgd2lkdGggb2YgdGhlIFlVViBpbWFnZS4KLSAgICogU2V0dGluZyB0aGlzIHBhcmFtZXRlciB0byAwIGlzIHRoZSBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8KLSAgICogPGNvZGU+c2NhbGVkV2lkdGg8L2NvZGU+LgotICAgKgotICAgKiBAcGFyYW0gZGVzaXJlZEhlaWdodCBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgSlBFRyBpbWFnZSwgdGhlbiB0aGlzCi0gICAqIHNwZWNpZmllcyB0aGUgZGVzaXJlZCBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSAob3IKLSAgICogaW1hZ2UgcmVnaW9uLikgIElmIHRoZSBkZXNpcmVkIGRlc3RpbmF0aW9uIGltYWdlIGRpbWVuc2lvbnMgYXJlIGRpZmZlcmVudAotICAgKiB0aGFuIHRoZSBzb3VyY2UgaW1hZ2UgZGltZW5zaW9ucywgdGhlbiBUdXJib0pQRUcgd2lsbCB1c2Ugc2NhbGluZyBpbiB0aGUKLSAgICogSlBFRyBkZWNvbXByZXNzb3IgdG8gZ2VuZXJhdGUgdGhlIGxhcmdlc3QgcG9zc2libGUgaW1hZ2UgdGhhdCB3aWxsIGZpdAotICAgKiB3aXRoaW4gdGhlIGRlc2lyZWQgZGltZW5zaW9ucy4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcKLSAgICogaXQgdG8gdGhlIGhlaWdodCBvZiB0aGUgSlBFRyBpbWFnZSAoaW4gb3RoZXIgd29yZHMsIHRoZSBoZWlnaHQgd2lsbCBub3QgYmUKLSAgICogY29uc2lkZXJlZCB3aGVuIGRldGVybWluaW5nIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZS4pICBUaGlzIHBhcmFtZXRlciBpcwotICAgKiBpZ25vcmVkIGlmIHRoZSBzb3VyY2UgaW1hZ2UgaXMgYSBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBwaXhlbEZvcm1hdCBwaXhlbCBmb3JtYXQgb2YgdGhlIGRlY29tcHJlc3NlZCBpbWFnZSAob25lIG9mCi0gICAqIHtAbGluayBUSiNQRl9SR0IgVEouUEZfKn0pCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqLwotICBwdWJsaWMgdm9pZCBkZWNvbXByZXNzKGludFtdIGRzdEJ1ZiwgaW50IHgsIGludCB5LCBpbnQgZGVzaXJlZFdpZHRoLAotICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJpZGUsIGludCBkZXNpcmVkSGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChqcGVnQnVmID09IG51bGwgJiYgeXV2SW1hZ2UgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIGlmIChkc3RCdWYgPT0gbnVsbCB8fCB4IDwgMCB8fCB5IDwgMCB8fCBzdHJpZGUgPCAwIHx8Ci0gICAgICAgICh5dXZJbWFnZSAhPSBudWxsICYmIChkZXNpcmVkV2lkdGggPCAwIHx8IGRlc2lyZWRIZWlnaHQgPCAwKSkgfHwKLSAgICAgICAgcGl4ZWxGb3JtYXQgPCAwIHx8IHBpeGVsRm9ybWF0ID49IFRKLk5VTVBGIHx8IGZsYWdzIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZGVjb21wcmVzcygpIik7Ci0gICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICBkZWNvZGVZVVYoeXV2SW1hZ2UuZ2V0UGxhbmVzKCksIHl1dkltYWdlLmdldE9mZnNldHMoKSwKLSAgICAgICAgICAgICAgICB5dXZJbWFnZS5nZXRTdHJpZGVzKCksIHl1dkltYWdlLmdldFN1YnNhbXAoKSwgZHN0QnVmLCB4LCB5LAotICAgICAgICAgICAgICAgIHl1dkltYWdlLmdldFdpZHRoKCksIHN0cmlkZSwgeXV2SW1hZ2UuZ2V0SGVpZ2h0KCksIHBpeGVsRm9ybWF0LAotICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICBlbHNlCi0gICAgICBkZWNvbXByZXNzKGpwZWdCdWYsIGpwZWdCdWZTaXplLCBkc3RCdWYsIHgsIHksIGRlc2lyZWRXaWR0aCwgc3RyaWRlLAotICAgICAgICAgICAgICAgICBkZXNpcmVkSGVpZ2h0LCBwaXhlbEZvcm1hdCwgZmxhZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIERlY29tcHJlc3MgdGhlIEpQRUcgc291cmNlIGltYWdlIG9yIGRlY29kZSB0aGUgWVVWIHNvdXJjZSBpbWFnZSBhc3NvY2lhdGVkCi0gICAqIHdpdGggdGhpcyBkZWNvbXByZXNzb3IgaW5zdGFuY2UgYW5kIG91dHB1dCBhIGRlY29tcHJlc3NlZC9kZWNvZGVkIGltYWdlIHRvCi0gICAqIHRoZSBnaXZlbiA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZS4KLSAgICoKLSAgICogQHBhcmFtIGRzdEltYWdlIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4gaW5zdGFuY2UgdGhhdCB3aWxsIHJlY2VpdmUKLSAgICogdGhlIGRlY29tcHJlc3NlZC9kZWNvZGVkIGltYWdlLiAgSWYgdGhlIHNvdXJjZSBpbWFnZSBpcyBhIEpQRUcgaW1hZ2UsIHRoZW4KLSAgICogdGhlIHdpZHRoIGFuZCBoZWlnaHQgb2YgdGhlIDxjb2RlPkJ1ZmZlcmVkSW1hZ2U8L2NvZGU+IGluc3RhbmNlIG11c3QgbWF0Y2gKLSAgICogb25lIG9mIHRoZSBzY2FsZWQgaW1hZ2Ugc2l6ZXMgdGhhdCBUdXJib0pQRUcgaXMgY2FwYWJsZSBvZiBnZW5lcmF0aW5nIGZyb20KLSAgICogdGhlIEpQRUcgaW1hZ2UuICBJZiB0aGUgc291cmNlIGltYWdlIGlzIGEgWVVWIGltYWdlLCB0aGVuIHRoZSB3aWR0aCBhbmQKLSAgICogaGVpZ2h0IG9mIHRoZSA8Y29kZT5CdWZmZXJlZEltYWdlPC9jb2RlPiBpbnN0YW5jZSBtdXN0IG1hdGNoIHRoZSB3aWR0aCBhbmQKLSAgICogaGVpZ2h0IG9mIHRoZSBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqLwotICBwdWJsaWMgdm9pZCBkZWNvbXByZXNzKEJ1ZmZlcmVkSW1hZ2UgZHN0SW1hZ2UsIGludCBmbGFncykKLSAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChkc3RJbWFnZSA9PSBudWxsIHx8IGZsYWdzIDwgMCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIkludmFsaWQgYXJndW1lbnQgaW4gZGVjb21wcmVzcygpIik7Ci0gICAgaW50IGRlc2lyZWRXaWR0aCA9IGRzdEltYWdlLmdldFdpZHRoKCk7Ci0gICAgaW50IGRlc2lyZWRIZWlnaHQgPSBkc3RJbWFnZS5nZXRIZWlnaHQoKTsKLSAgICBpbnQgc2NhbGVkV2lkdGgsIHNjYWxlZEhlaWdodDsKLQotICAgIGlmICh5dXZJbWFnZSAhPSBudWxsKSB7Ci0gICAgICBpZiAoZGVzaXJlZFdpZHRoICE9IHl1dkltYWdlLmdldFdpZHRoKCkgfHwKLSAgICAgICAgICBkZXNpcmVkSGVpZ2h0ICE9IHl1dkltYWdlLmdldEhlaWdodCgpKQotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCdWZmZXJlZEltYWdlIGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoIHRoZSBkaW1lbnNpb25zIG9mIHRoZSBzb3VyY2UgaW1hZ2UuIik7Ci0gICAgICBzY2FsZWRXaWR0aCA9IHl1dkltYWdlLmdldFdpZHRoKCk7Ci0gICAgICBzY2FsZWRIZWlnaHQgPSB5dXZJbWFnZS5nZXRIZWlnaHQoKTsKLSAgICB9IGVsc2UgewotICAgICAgc2NhbGVkV2lkdGggPSBnZXRTY2FsZWRXaWR0aChkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQpOwotICAgICAgc2NhbGVkSGVpZ2h0ID0gZ2V0U2NhbGVkSGVpZ2h0KGRlc2lyZWRXaWR0aCwgZGVzaXJlZEhlaWdodCk7Ci0gICAgICBpZiAoc2NhbGVkV2lkdGggIT0gZGVzaXJlZFdpZHRoIHx8IHNjYWxlZEhlaWdodCAhPSBkZXNpcmVkSGVpZ2h0KQotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJCdWZmZXJlZEltYWdlIGRpbWVuc2lvbnMgZG8gbm90IG1hdGNoIG9uZSBvZiB0aGUgc2NhbGVkIGltYWdlIHNpemVzIHRoYXQgVHVyYm9KUEVHIGlzIGNhcGFibGUgb2YgZ2VuZXJhdGluZy4iKTsKLSAgICB9Ci0gICAgaW50IHBpeGVsRm9ybWF0OyAgYm9vbGVhbiBpbnRQaXhlbHMgPSBmYWxzZTsKLSAgICBpZiAoYnl0ZU9yZGVyID09IG51bGwpCi0gICAgICBieXRlT3JkZXIgPSBCeXRlT3JkZXIubmF0aXZlT3JkZXIoKTsKLSAgICBzd2l0Y2goZHN0SW1hZ2UuZ2V0VHlwZSgpKSB7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV8zQllURV9CR1I6Ci0gICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfQkdSOyAgYnJlYWs7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV80QllURV9BQkdSOgotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfNEJZVEVfQUJHUl9QUkU6Ci0gICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfWEJHUjsgIGJyZWFrOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfQllURV9HUkFZOgotICAgICAgICBwaXhlbEZvcm1hdCA9IFRKLlBGX0dSQVk7ICBicmVhazsKLSAgICAgIGNhc2UgQnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9CR1I6Ci0gICAgICAgIGlmIChieXRlT3JkZXIgPT0gQnl0ZU9yZGVyLkJJR19FTkRJQU4pCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9YQkdSOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9SR0JYOwotICAgICAgICBpbnRQaXhlbHMgPSB0cnVlOyAgYnJlYWs7Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfUkdCOgotICAgICAgICBpZiAoYnl0ZU9yZGVyID09IEJ5dGVPcmRlci5CSUdfRU5ESUFOKQotICAgICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfWFJHQjsKLSAgICAgICAgZWxzZQotICAgICAgICAgIHBpeGVsRm9ybWF0ID0gVEouUEZfQkdSWDsKLSAgICAgICAgaW50UGl4ZWxzID0gdHJ1ZTsgIGJyZWFrOwotICAgICAgY2FzZSBCdWZmZXJlZEltYWdlLlRZUEVfSU5UX0FSR0I6Ci0gICAgICBjYXNlIEJ1ZmZlcmVkSW1hZ2UuVFlQRV9JTlRfQVJHQl9QUkU6Ci0gICAgICAgIGlmIChieXRlT3JkZXIgPT0gQnl0ZU9yZGVyLkJJR19FTkRJQU4pCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9BUkdCOwotICAgICAgICBlbHNlCi0gICAgICAgICAgcGl4ZWxGb3JtYXQgPSBUSi5QRl9CR1JBOwotICAgICAgICBpbnRQaXhlbHMgPSB0cnVlOyAgYnJlYWs7Ci0gICAgICBkZWZhdWx0OgotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJVbnN1cHBvcnRlZCBCdWZmZXJlZEltYWdlIGZvcm1hdCIpOwotICAgIH0KLSAgICBXcml0YWJsZVJhc3RlciB3ciA9IGRzdEltYWdlLmdldFJhc3RlcigpOwotICAgIGlmIChpbnRQaXhlbHMpIHsKLSAgICAgIFNpbmdsZVBpeGVsUGFja2VkU2FtcGxlTW9kZWwgc20gPQotICAgICAgICAoU2luZ2xlUGl4ZWxQYWNrZWRTYW1wbGVNb2RlbClkc3RJbWFnZS5nZXRTYW1wbGVNb2RlbCgpOwotICAgICAgaW50IHN0cmlkZSA9IHNtLmdldFNjYW5saW5lU3RyaWRlKCk7Ci0gICAgICBEYXRhQnVmZmVySW50IGRiID0gKERhdGFCdWZmZXJJbnQpd3IuZ2V0RGF0YUJ1ZmZlcigpOwotICAgICAgaW50W10gYnVmID0gZGIuZ2V0RGF0YSgpOwotICAgICAgaWYgKHl1dkltYWdlICE9IG51bGwpCi0gICAgICAgIGRlY29kZVlVVih5dXZJbWFnZS5nZXRQbGFuZXMoKSwgeXV2SW1hZ2UuZ2V0T2Zmc2V0cygpLAotICAgICAgICAgICAgICAgICAgeXV2SW1hZ2UuZ2V0U3RyaWRlcygpLCB5dXZJbWFnZS5nZXRTdWJzYW1wKCksIGJ1ZiwgMCwgMCwKLSAgICAgICAgICAgICAgICAgIHl1dkltYWdlLmdldFdpZHRoKCksIHN0cmlkZSwgeXV2SW1hZ2UuZ2V0SGVpZ2h0KCksCi0gICAgICAgICAgICAgICAgICBwaXhlbEZvcm1hdCwgZmxhZ3MpOwotICAgICAgZWxzZSB7Ci0gICAgICAgIGlmIChqcGVnQnVmID09IG51bGwpCi0gICAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgICAgIGRlY29tcHJlc3MoanBlZ0J1ZiwganBlZ0J1ZlNpemUsIGJ1ZiwgMCwgMCwgc2NhbGVkV2lkdGgsIHN0cmlkZSwKLSAgICAgICAgICAgICAgICAgICBzY2FsZWRIZWlnaHQsIHBpeGVsRm9ybWF0LCBmbGFncyk7Ci0gICAgICB9Ci0gICAgfSBlbHNlIHsKLSAgICAgIENvbXBvbmVudFNhbXBsZU1vZGVsIHNtID0KLSAgICAgICAgKENvbXBvbmVudFNhbXBsZU1vZGVsKWRzdEltYWdlLmdldFNhbXBsZU1vZGVsKCk7Ci0gICAgICBpbnQgcGl4ZWxTaXplID0gc20uZ2V0UGl4ZWxTdHJpZGUoKTsKLSAgICAgIGlmIChwaXhlbFNpemUgIT0gVEouZ2V0UGl4ZWxTaXplKHBpeGVsRm9ybWF0KSkKLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW5jb25zaXN0ZW5jeSBiZXR3ZWVuIHBpeGVsIGZvcm1hdCBhbmQgcGl4ZWwgc2l6ZSBpbiBCdWZmZXJlZEltYWdlIik7Ci0gICAgICBpbnQgcGl0Y2ggPSBzbS5nZXRTY2FubGluZVN0cmlkZSgpOwotICAgICAgRGF0YUJ1ZmZlckJ5dGUgZGIgPSAoRGF0YUJ1ZmZlckJ5dGUpd3IuZ2V0RGF0YUJ1ZmZlcigpOwotICAgICAgYnl0ZVtdIGJ1ZiA9IGRiLmdldERhdGEoKTsKLSAgICAgIGRlY29tcHJlc3MoYnVmLCAwLCAwLCBzY2FsZWRXaWR0aCwgcGl0Y2gsIHNjYWxlZEhlaWdodCwgcGl4ZWxGb3JtYXQsCi0gICAgICAgICAgICAgICAgIGZsYWdzKTsKLSAgICB9Ci0gIH0KLQotICAvKioKLSAgICogRGVjb21wcmVzcyB0aGUgSlBFRyBzb3VyY2UgaW1hZ2Ugb3IgZGVjb2RlIHRoZSBZVVYgc291cmNlIGltYWdlIGFzc29jaWF0ZWQKLSAgICogd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZSBhbmQgcmV0dXJuIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4KLSAgICogaW5zdGFuY2UgY29udGFpbmluZyB0aGUgZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSBkZXNpcmVkV2lkdGggc2VlCi0gICAqIHtAbGluayAjZGVjb21wcmVzcyhieXRlW10sIGludCwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCl9IGZvcgotICAgKiBkZXNjcmlwdGlvbgotICAgKgotICAgKiBAcGFyYW0gZGVzaXJlZEhlaWdodCBzZWUKLSAgICoge0BsaW5rICNkZWNvbXByZXNzKGJ5dGVbXSwgaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgaW50KX0gZm9yCi0gICAqIGRlc2NyaXB0aW9uCi0gICAqCi0gICAqIEBwYXJhbSBidWZmZXJlZEltYWdlVHlwZSB0aGUgaW1hZ2UgdHlwZSBvZiB0aGUgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4KLSAgICogaW5zdGFuY2UgdGhhdCB3aWxsIGJlIGNyZWF0ZWQgKGZvciBpbnN0YW5jZSwKLSAgICogPGNvZGU+QnVmZmVyZWRJbWFnZS5UWVBFX0lOVF9SR0I8L2NvZGU+KQotICAgKgotICAgKiBAcGFyYW0gZmxhZ3MgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YKLSAgICoge0BsaW5rIFRKI0ZMQUdfQk9UVE9NVVAgVEouRkxBR18qfQotICAgKgotICAgKiBAcmV0dXJuIGEgPGNvZGU+QnVmZmVyZWRJbWFnZTwvY29kZT4gaW5zdGFuY2UgY29udGFpbmluZyB0aGUKLSAgICogZGVjb21wcmVzc2VkL2RlY29kZWQgaW1hZ2UuCi0gICAqLwotICBwdWJsaWMgQnVmZmVyZWRJbWFnZSBkZWNvbXByZXNzKGludCBkZXNpcmVkV2lkdGgsIGludCBkZXNpcmVkSGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBidWZmZXJlZEltYWdlVHlwZSwgaW50IGZsYWdzKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKCh5dXZJbWFnZSA9PSBudWxsICYmIChkZXNpcmVkV2lkdGggPCAwIHx8IGRlc2lyZWRIZWlnaHQgPCAwKSkgfHwKLSAgICAgICAgZmxhZ3MgPCAwKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBkZWNvbXByZXNzKCkiKTsKLSAgICBpbnQgc2NhbGVkV2lkdGggPSBnZXRTY2FsZWRXaWR0aChkZXNpcmVkV2lkdGgsIGRlc2lyZWRIZWlnaHQpOwotICAgIGludCBzY2FsZWRIZWlnaHQgPSBnZXRTY2FsZWRIZWlnaHQoZGVzaXJlZFdpZHRoLCBkZXNpcmVkSGVpZ2h0KTsKLSAgICBCdWZmZXJlZEltYWdlIGltZyA9IG5ldyBCdWZmZXJlZEltYWdlKHNjYWxlZFdpZHRoLCBzY2FsZWRIZWlnaHQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWZmZXJlZEltYWdlVHlwZSk7Ci0gICAgZGVjb21wcmVzcyhpbWcsIGZsYWdzKTsKLSAgICByZXR1cm4gaW1nOwotICB9Ci0KLSAgLyoqCi0gICAqIEZyZWUgdGhlIG5hdGl2ZSBzdHJ1Y3R1cmVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGRlY29tcHJlc3NvciBpbnN0YW5jZS4KLSAgICovCi0gIEBPdmVycmlkZQotICBwdWJsaWMgdm9pZCBjbG9zZSgpIHRocm93cyBUSkV4Y2VwdGlvbiB7Ci0gICAgaWYgKGhhbmRsZSAhPSAwKQotICAgICAgZGVzdHJveSgpOwotICB9Ci0KLSAgQE92ZXJyaWRlCi0gIHByb3RlY3RlZCB2b2lkIGZpbmFsaXplKCkgdGhyb3dzIFRocm93YWJsZSB7Ci0gICAgdHJ5IHsKLSAgICAgIGNsb3NlKCk7Ci0gICAgfSBjYXRjaChUSkV4Y2VwdGlvbiBlKSB7Ci0gICAgfSBmaW5hbGx5IHsKLSAgICAgIHN1cGVyLmZpbmFsaXplKCk7Ci0gICAgfQotICB9OwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgaW5pdCgpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGRlc3Ryb3koKSB0aHJvd3MgVEpFeGNlcHRpb247Ci0KLSAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBkZWNvbXByZXNzSGVhZGVyKGJ5dGVbXSBzcmNCdWYsIGludCBzaXplKQotICAgIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBARGVwcmVjYXRlZAotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGRlY29tcHJlc3MoYnl0ZVtdIHNyY0J1ZiwgaW50IHNpemUsIGJ5dGVbXSBkc3RCdWYsCi0gICAgaW50IGRlc2lyZWRXaWR0aCwgaW50IHBpdGNoLCBpbnQgZGVzaXJlZEhlaWdodCwgaW50IHBpeGVsRm9ybWF0LCBpbnQgZmxhZ3MpCi0gICAgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZGVjb21wcmVzcyhieXRlW10gc3JjQnVmLCBpbnQgc2l6ZSwgYnl0ZVtdIGRzdEJ1ZiwgaW50IHgsCi0gICAgaW50IHksIGludCBkZXNpcmVkV2lkdGgsIGludCBwaXRjaCwgaW50IGRlc2lyZWRIZWlnaHQsIGludCBwaXhlbEZvcm1hdCwKLSAgICBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBARGVwcmVjYXRlZAotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGRlY29tcHJlc3MoYnl0ZVtdIHNyY0J1ZiwgaW50IHNpemUsIGludFtdIGRzdEJ1ZiwKLSAgICBpbnQgZGVzaXJlZFdpZHRoLCBpbnQgc3RyaWRlLCBpbnQgZGVzaXJlZEhlaWdodCwgaW50IHBpeGVsRm9ybWF0LAotICAgIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZGVjb21wcmVzcyhieXRlW10gc3JjQnVmLCBpbnQgc2l6ZSwgaW50W10gZHN0QnVmLCBpbnQgeCwKLSAgICBpbnQgeSwgaW50IGRlc2lyZWRXaWR0aCwgaW50IHN0cmlkZSwgaW50IGRlc2lyZWRIZWlnaHQsIGludCBwaXhlbEZvcm1hdCwKLSAgICBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBARGVwcmVjYXRlZAotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGRlY29tcHJlc3NUb1lVVihieXRlW10gc3JjQnVmLCBpbnQgc2l6ZSwgYnl0ZVtdIGRzdEJ1ZiwKLSAgICBpbnQgZmxhZ3MpIHRocm93cyBUSkV4Y2VwdGlvbjsKLQotICBwcml2YXRlIG5hdGl2ZSB2b2lkIGRlY29tcHJlc3NUb1lVVihieXRlW10gc3JjQnVmLCBpbnQgc2l6ZSwKLSAgICBieXRlW11bXSBkc3RQbGFuZXMsIGludFtdIGRzdE9mZnNldHMsIGludCBkZXNpcmVkV2lkdGgsIGludFtdIGRzdFN0cmlkZXMsCi0gICAgaW50IGRlc2lyZWRoZWlnaHQsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZGVjb2RlWVVWKGJ5dGVbXVtdIHNyY1BsYW5lcywgaW50W10gc3JjT2Zmc2V0cywKLSAgICBpbnRbXSBzcmNTdHJpZGVzLCBpbnQgc3Vic2FtcCwgYnl0ZVtdIGRzdEJ1ZiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsCi0gICAgaW50IHBpdGNoLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIHZvaWQgZGVjb2RlWVVWKGJ5dGVbXVtdIHNyY1BsYW5lcywgaW50W10gc3JjT2Zmc2V0cywKLSAgICBpbnRbXSBzcmNTdHJpZGVzLCBpbnQgc3Vic2FtcCwgaW50W10gZHN0QnVmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwKLSAgICBpbnQgc3RyaWRlLCBpbnQgaGVpZ2h0LCBpbnQgcGl4ZWxGb3JtYXQsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHN0YXRpYyB7Ci0gICAgVEpMb2FkZXIubG9hZCgpOwotICB9Ci0KLSAgcHJvdGVjdGVkIGxvbmcgaGFuZGxlID0gMDsKLSAgcHJvdGVjdGVkIGJ5dGVbXSBqcGVnQnVmID0gbnVsbDsKLSAgcHJvdGVjdGVkIGludCBqcGVnQnVmU2l6ZSA9IDA7Ci0gIHByb3RlY3RlZCBZVVZJbWFnZSB5dXZJbWFnZSA9IG51bGw7Ci0gIHByb3RlY3RlZCBpbnQganBlZ1dpZHRoID0gMDsKLSAgcHJvdGVjdGVkIGludCBqcGVnSGVpZ2h0ID0gMDsKLSAgcHJvdGVjdGVkIGludCBqcGVnU3Vic2FtcCA9IC0xOwotICBwcm90ZWN0ZWQgaW50IGpwZWdDb2xvcnNwYWNlID0gLTE7Ci0gIHByaXZhdGUgQnl0ZU9yZGVyIGJ5dGVPcmRlciA9IG51bGw7Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmphdmEgYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKRXhjZXB0aW9uLmphdmEKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5YzIwNDEuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkV4Y2VwdGlvbi5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDE1IFZpa3RvciBTemF0aG3DoXJ5LiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICoKLSAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiwKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXBhY2thZ2Ugb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc7Ci0KLWltcG9ydCBqYXZhLmlvLklPRXhjZXB0aW9uOwotCi1wdWJsaWMgY2xhc3MgVEpFeGNlcHRpb24gZXh0ZW5kcyBJT0V4Y2VwdGlvbiB7Ci0KLSAgcHJpdmF0ZSBzdGF0aWMgZmluYWwgbG9uZyBzZXJpYWxWZXJzaW9uVUlEID0gMUw7Ci0KLSAgcHVibGljIFRKRXhjZXB0aW9uKCkgewotICAgIHN1cGVyKCk7Ci0gIH0KLQotICBwdWJsaWMgVEpFeGNlcHRpb24oU3RyaW5nIG1lc3NhZ2UsIFRocm93YWJsZSBjYXVzZSkgewotICAgIHN1cGVyKG1lc3NhZ2UsIGNhdXNlKTsKLSAgfQotCi0gIHB1YmxpYyBUSkV4Y2VwdGlvbihTdHJpbmcgbWVzc2FnZSkgewotICAgIHN1cGVyKG1lc3NhZ2UpOwotICB9Ci0KLSAgcHVibGljIFRKRXhjZXB0aW9uKFRocm93YWJsZSBjYXVzZSkgewotICAgIHN1cGVyKGNhdXNlKTsKLSAgfQotCi19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEuaW4gYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzOTc3ODAuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USkxvYWRlci5qYXZhLmluCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDExIEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi1maW5hbCBjbGFzcyBUSkxvYWRlciB7Ci0gIHN0YXRpYyB2b2lkIGxvYWQoKSB7Ci0gICAgU3lzdGVtLmxvYWRMaWJyYXJ5KCJAVFVSQk9KUEVHX0RMTF9OQU1FQCIpOwotICB9Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKTG9hZGVyLmphdmEudG1wbCBiL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YS50bXBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZWYzMTE4Li4wMDAwMDAwCi0tLSBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpMb2FkZXIuamF2YS50bXBsCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDExLTIwMTMgRC4gUi4gQ29tbWFuZGVyLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucyBhcmUgbWV0OgotICoKLSAqIC0gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0gKiAgIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24KLSAqICAgYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKiAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cwotICogICBjb250cmlidXRvcnMgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzCi0gKiAgIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiwKLSAqIEFORCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0gKiBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUKLSAqIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IKLSAqIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0gKiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MKLSAqIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOCi0gKiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotICogQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUKLSAqIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLXBhY2thZ2Ugb3JnLmxpYmpwZWd0dXJiby50dXJib2pwZWc7Ci0KLWZpbmFsIGNsYXNzIFRKTG9hZGVyIHsKLSAgc3RhdGljIHZvaWQgbG9hZCgpIHsKLSAgICB0cnkgewotICAgICAgU3lzdGVtLmxvYWRMaWJyYXJ5KCJ0dXJib2pwZWciKTsKLSAgICB9IGNhdGNoIChqYXZhLmxhbmcuVW5zYXRpc2ZpZWRMaW5rRXJyb3IgZSkgewotICAgICAgU3RyaW5nIG9zID0gU3lzdGVtLmdldFByb3BlcnR5KCJvcy5uYW1lIikudG9Mb3dlckNhc2UoKTsKLSAgICAgIGlmIChvcy5pbmRleE9mKCJtYWMiKSA+PSAwKSB7Ci0gICAgICAgIHRyeSB7Ci0gICAgICAgICAgU3lzdGVtLmxvYWQoIiV7X19saWJkaXJ9L2xpYnR1cmJvanBlZy5qbmlsaWIiKTsKLSAgICAgICAgfSBjYXRjaCAoamF2YS5sYW5nLlVuc2F0aXNmaWVkTGlua0Vycm9yIGUyKSB7Ci0gICAgICAgICAgU3lzdGVtLmxvYWQoIi91c3IvbGliL2xpYnR1cmJvanBlZy5qbmlsaWIiKTsKLSAgICAgICAgfQotICAgICAgfSBlbHNlIHsKLSAgICAgICAgdHJ5IHsKLSAgICAgICAgICBTeXN0ZW0ubG9hZCgiJXtfX2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvIik7Ci0gICAgICAgIH0gY2F0Y2ggKGphdmEubGFuZy5VbnNhdGlzZmllZExpbmtFcnJvciBlMykgewotICAgICAgICAgIFN0cmluZyBsaWJkaXIgPSAiJXtfX2xpYmRpcn0iOwotICAgICAgICAgIGlmIChsaWJkaXIuZXF1YWxzKCIvb3B0L2xpYmpwZWctdHVyYm8vbGliNjQiKSkgewotICAgICAgICAgICAgU3lzdGVtLmxvYWQoIi9vcHQvbGlianBlZy10dXJiby9saWIzMi9saWJ0dXJib2pwZWcuc28iKTsKLSAgICAgICAgICB9IGVsc2UgaWYgKGxpYmRpci5lcXVhbHMoIi9vcHQvbGlianBlZy10dXJiby9saWIzMiIpKSB7Ci0gICAgICAgICAgICBTeXN0ZW0ubG9hZCgiL29wdC9saWJqcGVnLXR1cmJvL2xpYjY0L2xpYnR1cmJvanBlZy5zbyIpOwotICAgICAgICAgIH0gZWxzZSB7Ci0gICAgICAgICAgICB0aHJvdyBlMzsKLSAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICAgIH0KLSAgICB9Ci0gIH0KLX0KZGlmZiAtLWdpdCBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmphdmEgYi9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKU2NhbGluZ0ZhY3Rvci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGIxZDc1Li4wMDAwMDAwCi0tLSBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDExIEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpMjAxNSBWaWt0b3IgU3phdGhtw6FyeS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi0vKioKLSAqIEZyYWN0aW9uYWwgc2NhbGluZyBmYWN0b3IKLSAqLwotcHVibGljIGNsYXNzIFRKU2NhbGluZ0ZhY3RvciB7Ci0KLSAgcHVibGljIFRKU2NhbGluZ0ZhY3RvcihpbnQgbnVtLCBpbnQgZGVub20pIHsKLSAgICBpZiAobnVtIDwgMSB8fCBkZW5vbSA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJOdW1lcmF0b3IgYW5kIGRlbm9taW5hdG9yIG11c3QgYmUgPj0gMSIpOwotICAgIHRoaXMubnVtID0gbnVtOwotICAgIHRoaXMuZGVub20gPSBkZW5vbTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIG51bWVyYXRvcgotICAgKgotICAgKiBAcmV0dXJuIG51bWVyYXRvcgotICAgKi8KLSAgcHVibGljIGludCBnZXROdW0oKSB7Ci0gICAgcmV0dXJuIG51bTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIGRlbm9taW5hdG9yCi0gICAqCi0gICAqIEByZXR1cm4gZGVub21pbmF0b3IKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0RGVub20oKSB7Ci0gICAgcmV0dXJuIGRlbm9tOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNjYWxlZCB2YWx1ZSBvZiA8Y29kZT5kaW1lbnNpb248L2NvZGU+LiAgVGhpcyBmdW5jdGlvbgotICAgKiBwZXJmb3JtcyB0aGUgaW50ZWdlciBlcXVpdmFsZW50IG9mCi0gICAqIDxjb2RlPmNlaWwoZGltZW5zaW9uICogc2NhbGluZ0ZhY3Rvcik8L2NvZGU+LgotICAgKgotICAgKiBAcmV0dXJuIHRoZSBzY2FsZWQgdmFsdWUgb2YgPGNvZGU+ZGltZW5zaW9uPC9jb2RlPi4KLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0U2NhbGVkKGludCBkaW1lbnNpb24pIHsKLSAgICByZXR1cm4gKGRpbWVuc2lvbiAqIG51bSArIGRlbm9tIC0gMSkgLyBkZW5vbTsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRydWUgb3IgZmFsc2UsIGRlcGVuZGluZyBvbiB3aGV0aGVyIHRoaXMgaW5zdGFuY2UgYW5kCi0gICAqIDxjb2RlPm90aGVyPC9jb2RlPiBoYXZlIHRoZSBzYW1lIG51bWVyYXRvciBhbmQgZGVub21pbmF0b3IuCi0gICAqCi0gICAqIEByZXR1cm4gdHJ1ZSBvciBmYWxzZSwgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhpcyBpbnN0YW5jZSBhbmQKLSAgICogPGNvZGU+b3RoZXI8L2NvZGU+IGhhdmUgdGhlIHNhbWUgbnVtZXJhdG9yIGFuZCBkZW5vbWluYXRvci4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGVxdWFscyhUSlNjYWxpbmdGYWN0b3Igb3RoZXIpIHsKLSAgICByZXR1cm4gdGhpcy5udW0gPT0gb3RoZXIubnVtICYmIHRoaXMuZGVub20gPT0gb3RoZXIuZGVub207Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGluc3RhbmNlIGlzIGVxdWFsIHRvCi0gICAqIDEvMS4KLSAgICoKLSAgICogQHJldHVybiB0cnVlIG9yIGZhbHNlLCBkZXBlbmRpbmcgb24gd2hldGhlciB0aGlzIGluc3RhbmNlIGlzIGVxdWFsIHRvCi0gICAqIDEvMS4KLSAgICovCi0gIHB1YmxpYyBib29sZWFuIGlzT25lKCkgewotICAgIHJldHVybiBudW0gPT0gMSAmJiBkZW5vbSA9PSAxOwotICB9Ci0KLSAgLyoqCi0gICAqIE51bWVyYXRvcgotICAgKi8KLSAgcHJpdmF0ZSBpbnQgbnVtID0gMTsKLQotICAvKioKLSAgICogRGVub21pbmF0b3IKLSAgICovCi0gIHByaXZhdGUgaW50IGRlbm9tID0gMTsKLX0KZGlmZiAtLWdpdCBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uamF2YSBiL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm0uamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzM4MWYzNi4uMDAwMDAwMAotLS0gYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDExLCAyMDEzIEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi1pbXBvcnQgamF2YS5hd3QuKjsKLQotLyoqCi0gKiBMb3NzbGVzcyB0cmFuc2Zvcm0gcGFyYW1ldGVycwotICovCi1wdWJsaWMgY2xhc3MgVEpUcmFuc2Zvcm0gZXh0ZW5kcyBSZWN0YW5nbGUgewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIGxvbmcgc2VyaWFsVmVyc2lvblVJRCA9IC0xMjczNjc3MDU3NjE0MzAzNzFMOwotCi0gIC8qKgotICAgKiBUaGUgbnVtYmVyIG9mIGxvc3NsZXNzIHRyYW5zZm9ybSBvcGVyYXRpb25zCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBOVU1PUCAgICAgICAgID0gODsKLSAgLyoqCi0gICAqIERvIG5vdCB0cmFuc2Zvcm0gdGhlIHBvc2l0aW9uIG9mIHRoZSBpbWFnZSBwaXhlbHMuCi0gICAqLwotICBwdWJsaWMgc3RhdGljIGZpbmFsIGludCBPUF9OT05FICAgICAgID0gMDsKLSAgLyoqCi0gICAqIEZsaXAgKG1pcnJvcikgaW1hZ2UgaG9yaXpvbnRhbGx5LiAgVGhpcyB0cmFuc2Zvcm0gaXMgaW1wZXJmZWN0IGlmIHRoZXJlCi0gICAqIGFyZSBhbnkgcGFydGlhbCBNQ1UgYmxvY2tzIG9uIHRoZSByaWdodCBlZGdlLgotICAgKiBAc2VlICNPUFRfUEVSRkVDVAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BfSEZMSVAgICAgICA9IDE7Ci0gIC8qKgotICAgKiBGbGlwIChtaXJyb3IpIGltYWdlIHZlcnRpY2FsbHkuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlCi0gICAqIGFueSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlIGJvdHRvbSBlZGdlLgotICAgKiBAc2VlICNPUFRfUEVSRkVDVAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BfVkZMSVAgICAgICA9IDI7Ci0gIC8qKgotICAgKiBUcmFuc3Bvc2UgaW1hZ2UgKGZsaXAvbWlycm9yIGFsb25nIHVwcGVyIGxlZnQgdG8gbG93ZXIgcmlnaHQgYXhpcykuICBUaGlzCi0gICAqIHRyYW5zZm9ybSBpcyBhbHdheXMgcGVyZmVjdC4KLSAgICogQHNlZSAjT1BUX1BFUkZFQ1QKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QX1RSQU5TUE9TRSAgPSAzOwotICAvKioKLSAgICogVHJhbnN2ZXJzZSB0cmFuc3Bvc2UgaW1hZ2UgKGZsaXAvbWlycm9yIGFsb25nIHVwcGVyIHJpZ2h0IHRvIGxvd2VyIGxlZnQKLSAgICogYXhpcykuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlIGFueSBwYXJ0aWFsIE1DVSBibG9ja3MgaW4KLSAgICogdGhlIGltYWdlLgotICAgKiBAc2VlICNPUFRfUEVSRkVDVAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BfVFJBTlNWRVJTRSA9IDQ7Ci0gIC8qKgotICAgKiBSb3RhdGUgaW1hZ2UgY2xvY2t3aXNlIGJ5IDkwIGRlZ3JlZXMuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYKLSAgICogdGhlcmUgYXJlIGFueSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlIGJvdHRvbSBlZGdlLgotICAgKiBAc2VlICNPUFRfUEVSRkVDVAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BfUk9UOTAgICAgICA9IDU7Ci0gIC8qKgotICAgKiBSb3RhdGUgaW1hZ2UgMTgwIGRlZ3JlZXMuICBUaGlzIHRyYW5zZm9ybSBpcyBpbXBlcmZlY3QgaWYgdGhlcmUgYXJlIGFueQotICAgKiBwYXJ0aWFsIE1DVSBibG9ja3MgaW4gdGhlIGltYWdlLgotICAgKiBAc2VlICNPUFRfUEVSRkVDVAotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BfUk9UMTgwICAgICA9IDY7Ci0gIC8qKgotICAgKiBSb3RhdGUgaW1hZ2UgY291bnRlci1jbG9ja3dpc2UgYnkgOTAgZGVncmVlcy4gIFRoaXMgdHJhbnNmb3JtIGlzIGltcGVyZmVjdAotICAgKiBpZiB0aGVyZSBhcmUgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyBvbiB0aGUgcmlnaHQgZWRnZS4KLSAgICogQHNlZSAjT1BUX1BFUkZFQ1QKLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QX1JPVDI3MCAgICAgPSA3OwotCi0KLSAgLyoqCi0gICAqIFRoaXMgb3B0aW9uIHdpbGwgY2F1c2Uge0BsaW5rIFRKVHJhbnNmb3JtZXIjdHJhbnNmb3JtCi0gICAqIFRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCl9IHRvIHRocm93IGFuIGV4Y2VwdGlvbiBpZiB0aGUgdHJhbnNmb3JtIGlzIG5vdAotICAgKiBwZXJmZWN0LiAgTG9zc2xlc3MgdHJhbnNmb3JtcyBvcGVyYXRlIG9uIE1DVSBibG9ja3MsIHdob3NlIHNpemUgZGVwZW5kcyBvbgotICAgKiB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZC4gIElmIHRoZSBpbWFnZSdzIHdpZHRoIG9yIGhlaWdodAotICAgKiBpcyBub3QgZXZlbmx5IGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIHNpemUgKHNlZSB7QGxpbmsgVEojZ2V0TUNVV2lkdGh9Ci0gICAqIGFuZCB7QGxpbmsgVEojZ2V0TUNVSGVpZ2h0fSksIHRoZW4gdGhlcmUgd2lsbCBiZSBwYXJ0aWFsIE1DVSBibG9ja3Mgb24gdGhlCi0gICAqIHJpZ2h0IGFuZC9vciBib3R0b20gZWRnZXMuICAgSXQgaXMgbm90IHBvc3NpYmxlIHRvIG1vdmUgdGhlc2UgcGFydGlhbCBNQ1UKLSAgICogYmxvY2tzIHRvIHRoZSB0b3Agb3IgbGVmdCBvZiB0aGUgaW1hZ2UsIHNvIGFueSB0cmFuc2Zvcm0gdGhhdCB3b3VsZAotICAgKiByZXF1aXJlIHRoYXQgaXMgImltcGVyZmVjdC4iICBJZiB0aGlzIG9wdGlvbiBpcyBub3Qgc3BlY2lmaWVkLCB0aGVuIGFueQotICAgKiBwYXJ0aWFsIE1DVSBibG9ja3MgdGhhdCBjYW5ub3QgYmUgdHJhbnNmb3JtZWQgd2lsbCBiZSBsZWZ0IGluIHBsYWNlLCB3aGljaAotICAgKiB3aWxsIGNyZWF0ZSBvZGQtbG9va2luZyBzdHJpcHMgb24gdGhlIHJpZ2h0IG9yIGJvdHRvbSBlZGdlIG9mIHRoZSBpbWFnZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QVF9QRVJGRUNUICA9IDE7Ci0gIC8qKgotICAgKiBUaGlzIG9wdGlvbiB3aWxsIGRpc2NhcmQgYW55IHBhcnRpYWwgTUNVIGJsb2NrcyB0aGF0IGNhbm5vdCBiZQotICAgKiB0cmFuc2Zvcm1lZC4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QVF9UUklNICAgICA9IDI7Ci0gIC8qKgotICAgKiBUaGlzIG9wdGlvbiB3aWxsIGVuYWJsZSBsb3NzbGVzcyBjcm9wcGluZy4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QVF9DUk9QICAgICA9IDQ7Ci0gIC8qKgotICAgKiBUaGlzIG9wdGlvbiB3aWxsIGRpc2NhcmQgdGhlIGNvbG9yIGRhdGEgaW4gdGhlIGlucHV0IGltYWdlIGFuZCBwcm9kdWNlCi0gICAqIGEgZ3JheXNjYWxlIG91dHB1dCBpbWFnZS4KLSAgICovCi0gIHB1YmxpYyBzdGF0aWMgZmluYWwgaW50IE9QVF9HUkFZICAgICA9IDg7Ci0gIC8qKgotICAgKiBUaGlzIG9wdGlvbiB3aWxsIHByZXZlbnQge0BsaW5rIFRKVHJhbnNmb3JtZXIjdHJhbnNmb3JtCi0gICAqIFRKVHJhbnNmb3JtZXIudHJhbnNmb3JtKCl9IGZyb20gb3V0cHV0dGluZyBhIEpQRUcgaW1hZ2UgZm9yIHRoaXMKLSAgICogcGFydGljdWxhciB0cmFuc2Zvcm0uICBUaGlzIGNhbiBiZSB1c2VkIGluIGNvbmp1bmN0aW9uIHdpdGggYSBjdXN0b20KLSAgICogZmlsdGVyIHRvIGNhcHR1cmUgdGhlIHRyYW5zZm9ybWVkIERDVCBjb2VmZmljaWVudHMgd2l0aG91dCB0cmFuc2NvZGluZwotICAgKiB0aGVtLgotICAgKi8KLSAgcHVibGljIHN0YXRpYyBmaW5hbCBpbnQgT1BUX05PT1VUUFVUID0gMTY7Ci0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IGxvc3NsZXNzIHRyYW5zZm9ybSBpbnN0YW5jZS4KLSAgICovCi0gIHB1YmxpYyBUSlRyYW5zZm9ybSgpIHsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgbG9zc2xlc3MgdHJhbnNmb3JtIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqCi0gICAqIEBwYXJhbSB4IHRoZSBsZWZ0IGJvdW5kYXJ5IG9mIHRoZSBjcm9wcGluZyByZWdpb24uICBUaGlzIG11c3QgYmUgZXZlbmx5Ci0gICAqIGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIHdpZHRoIChzZWUge0BsaW5rIFRKI2dldE1DVVdpZHRofSkKLSAgICoKLSAgICogQHBhcmFtIHkgdGhlIHVwcGVyIGJvdW5kYXJ5IG9mIHRoZSBjcm9wcGluZyByZWdpb24uICBUaGlzIG11c3QgYmUgZXZlbmx5Ci0gICAqIGRpdmlzaWJsZSBieSB0aGUgTUNVIGJsb2NrIGhlaWdodCAoc2VlIHtAbGluayBUSiNnZXRNQ1VIZWlnaHR9KQotICAgKgotICAgKiBAcGFyYW0gdyB0aGUgd2lkdGggb2YgdGhlIGNyb3BwaW5nIHJlZ2lvbi4gIFNldHRpbmcgdGhpcyB0byAwIGlzIHRoZQotICAgKiBlcXVpdmFsZW50IG9mIHNldHRpbmcgaXQgdG8gKHdpZHRoIG9mIHRoZSBzb3VyY2UgSlBFRyBpbWFnZSAtCi0gICAqIDxjb2RlPng8L2NvZGU+KS4KLSAgICoKLSAgICogQHBhcmFtIGggdGhlIGhlaWdodCBvZiB0aGUgY3JvcHBpbmcgcmVnaW9uLiAgU2V0dGluZyB0aGlzIHRvIDAgaXMgdGhlCi0gICAqIGVxdWl2YWxlbnQgb2Ygc2V0dGluZyBpdCB0byAoaGVpZ2h0IG9mIHRoZSBzb3VyY2UgSlBFRyBpbWFnZSAtCi0gICAqIDxjb2RlPnk8L2NvZGU+KS4KLSAgICoKLSAgICogQHBhcmFtIG9wIG9uZSBvZiB0aGUgdHJhbnNmb3JtIG9wZXJhdGlvbnMgKDxjb2RlPk9QXyo8L2NvZGU+KQotICAgKgotICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZiB0aGUgdHJhbnNmb3JtIG9wdGlvbnMKLSAgICogKDxjb2RlPk9QVF8qPC9jb2RlPikKLSAgICoKLSAgICogQHBhcmFtIGNmIGFuIGluc3RhbmNlIG9mIGFuIG9iamVjdCB0aGF0IGltcGxlbWVudHMgdGhlIHtAbGluawotICAgKiBUSkN1c3RvbUZpbHRlcn0gaW50ZXJmYWNlLCBvciBudWxsIGlmIG5vIGN1c3RvbSBmaWx0ZXIgaXMgbmVlZGVkCi0gICAqLwotICBwdWJsaWMgVEpUcmFuc2Zvcm0oaW50IHgsIGludCB5LCBpbnQgdywgaW50IGgsIGludCBvcCwgaW50IG9wdGlvbnMsCi0gICAgICAgICAgICAgICAgICAgICBUSkN1c3RvbUZpbHRlciBjZikgewotICAgIHN1cGVyKHgsIHksIHcsIGgpOwotICAgIHRoaXMub3AgPSBvcDsKLSAgICB0aGlzLm9wdGlvbnMgPSBvcHRpb25zOwotICAgIHRoaXMuY2YgPSBjZjsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgbG9zc2xlc3MgdHJhbnNmb3JtIGluc3RhbmNlIHdpdGggdGhlIGdpdmVuIHBhcmFtZXRlcnMuCi0gICAqCi0gICAqIEBwYXJhbSByIGEgPGNvZGU+UmVjdGFuZ2xlPC9jb2RlPiBpbnN0YW5jZSB0aGF0IHNwZWNpZmllcyB0aGUgY3JvcHBpbmcKLSAgICogcmVnaW9uLiAgU2VlIHtAbGluawotICAgKiAjVEpUcmFuc2Zvcm0oaW50LCBpbnQsIGludCwgaW50LCBpbnQsIGludCwgVEpDdXN0b21GaWx0ZXIpfSBmb3IgbW9yZQotICAgKiBkZXRhaWwuCi0gICAqCi0gICAqIEBwYXJhbSBvcCBvbmUgb2YgdGhlIHRyYW5zZm9ybSBvcGVyYXRpb25zICg8Y29kZT5PUF8qPC9jb2RlPikKLSAgICoKLSAgICogQHBhcmFtIG9wdGlvbnMgdGhlIGJpdHdpc2UgT1Igb2Ygb25lIG9yIG1vcmUgb2YgdGhlIHRyYW5zZm9ybSBvcHRpb25zCi0gICAqICg8Y29kZT5PUFRfKjwvY29kZT4pCi0gICAqCi0gICAqIEBwYXJhbSBjZiBhbiBpbnN0YW5jZSBvZiBhbiBvYmplY3QgdGhhdCBpbXBsZW1lbnRzIHRoZSB7QGxpbmsKLSAgICogVEpDdXN0b21GaWx0ZXJ9IGludGVyZmFjZSwgb3IgbnVsbCBpZiBubyBjdXN0b20gZmlsdGVyIGlzIG5lZWRlZAotICAgKi8KLSAgcHVibGljIFRKVHJhbnNmb3JtKFJlY3RhbmdsZSByLCBpbnQgb3AsIGludCBvcHRpb25zLAotICAgICAgICAgICAgICAgICAgICAgVEpDdXN0b21GaWx0ZXIgY2YpIHsKLSAgICBzdXBlcihyKTsKLSAgICB0aGlzLm9wID0gb3A7Ci0gICAgdGhpcy5vcHRpb25zID0gb3B0aW9uczsKLSAgICB0aGlzLmNmID0gY2Y7Ci0gIH0KLQotICAvKioKLSAgICogVHJhbnNmb3JtIG9wZXJhdGlvbiAob25lIG9mIDxjb2RlPk9QXyo8L2NvZGU+KQotICAgKi8KLSAgcHVibGljIGludCBvcCA9IDA7Ci0KLSAgLyoqCi0gICAqIFRyYW5zZm9ybSBvcHRpb25zIChiaXR3aXNlIE9SIG9mIG9uZSBvciBtb3JlIG9mIDxjb2RlPk9QVF8qPC9jb2RlPikKLSAgICovCi0gIHB1YmxpYyBpbnQgb3B0aW9ucyA9IDA7Ci0KLSAgLyoqCi0gICAqIEN1c3RvbSBmaWx0ZXIgaW5zdGFuY2UKLSAgICovCi0gIHB1YmxpYyBUSkN1c3RvbUZpbHRlciBjZiA9IG51bGw7Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1RKVHJhbnNmb3JtZXIuamF2YSBiL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5qYXZhCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzY2NDdmLi4wMDAwMDAwCi0tLSBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpUcmFuc2Zvcm1lci5qYXZhCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpMjAxMSwgMjAxMy0yMDE1IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpMjAxNSBWaWt0b3IgU3phdGhtw6FyeS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi0vKioKLSAqIFR1cmJvSlBFRyBsb3NzbGVzcyB0cmFuc2Zvcm1lcgotICovCi1wdWJsaWMgY2xhc3MgVEpUcmFuc2Zvcm1lciBleHRlbmRzIFRKRGVjb21wcmVzc29yIHsKLQotICAvKioKLSAgICogQ3JlYXRlIGEgVHVyYm9KUEVHIGxvc3NsZXNzIHRyYW5zZm9ybWVyIGluc3RhbmNlLgotICAgKi8KLSAgcHVibGljIFRKVHJhbnNmb3JtZXIoKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGluaXQoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRwotICAgKiBpbWFnZSBzdG9yZWQgaW4gPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0ganBlZ0ltYWdlIEpQRUcgaW1hZ2UgYnVmZmVyIChzaXplIG9mIHRoZSBKUEVHIGltYWdlIGlzIGFzc3VtZWQgdG8KLSAgICogYmUgdGhlIGxlbmd0aCBvZiB0aGUgYXJyYXkuKSAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLgotICAgKi8KLSAgcHVibGljIFRKVHJhbnNmb3JtZXIoYnl0ZVtdIGpwZWdJbWFnZSkgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpbml0KCk7Ci0gICAgc2V0U291cmNlSW1hZ2UoanBlZ0ltYWdlLCBqcGVnSW1hZ2UubGVuZ3RoKTsKLSAgfQotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBUdXJib0pQRUcgbG9zc2xlc3MgdHJhbnNmb3JtZXIgaW5zdGFuY2UgYW5kIGFzc29jaWF0ZSB0aGUgSlBFRwotICAgKiBpbWFnZSBvZiBsZW5ndGggPGNvZGU+aW1hZ2VTaXplPC9jb2RlPiBieXRlcyBzdG9yZWQgaW4KLSAgICogPGNvZGU+anBlZ0ltYWdlPC9jb2RlPiB3aXRoIHRoZSBuZXdseSBjcmVhdGVkIGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0ganBlZ0ltYWdlIEpQRUcgaW1hZ2UgYnVmZmVyLiAgVGhpcyBidWZmZXIgaXMgbm90IG1vZGlmaWVkLgotICAgKgotICAgKiBAcGFyYW0gaW1hZ2VTaXplIHNpemUgb2YgdGhlIEpQRUcgaW1hZ2UgKGluIGJ5dGVzKQotICAgKi8KLSAgcHVibGljIFRKVHJhbnNmb3JtZXIoYnl0ZVtdIGpwZWdJbWFnZSwgaW50IGltYWdlU2l6ZSkgdGhyb3dzIFRKRXhjZXB0aW9uIHsKLSAgICBpbml0KCk7Ci0gICAgc2V0U291cmNlSW1hZ2UoanBlZ0ltYWdlLCBpbWFnZVNpemUpOwotICB9Ci0KLSAgLyoqCi0gICAqIExvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gICAqIGluc3RhbmNlIGludG8gb25lIG9yIG1vcmUgSlBFRyBpbWFnZXMgc3RvcmVkIGluIHRoZSBnaXZlbiBkZXN0aW5hdGlvbgotICAgKiBidWZmZXJzLiAgTG9zc2xlc3MgdHJhbnNmb3JtcyB3b3JrIGJ5IG1vdmluZyB0aGUgcmF3IGNvZWZmaWNpZW50cyBmcm9tIG9uZQotICAgKiBKUEVHIGltYWdlIHN0cnVjdHVyZSB0byBhbm90aGVyIHdpdGhvdXQgYWx0ZXJpbmcgdGhlIHZhbHVlcyBvZiB0aGUKLSAgICogY29lZmZpY2llbnRzLiAgV2hpbGUgdGhpcyBpcyB0eXBpY2FsbHkgZmFzdGVyIHRoYW4gZGVjb21wcmVzc2luZyB0aGUKLSAgICogaW1hZ2UsIHRyYW5zZm9ybWluZyBpdCwgYW5kIHJlLWNvbXByZXNzaW5nIGl0LCBsb3NzbGVzcyB0cmFuc2Zvcm1zIGFyZSBub3QKLSAgICogZnJlZS4gIEVhY2ggbG9zc2xlc3MgdHJhbnNmb3JtIHJlcXVpcmVzIHJlYWRpbmcgYW5kIHBlcmZvcm1pbmcgSHVmZm1hbgotICAgKiBkZWNvZGluZyBvbiBhbGwgb2YgdGhlIGNvZWZmaWNpZW50cyBpbiB0aGUgc291cmNlIGltYWdlLCByZWdhcmRsZXNzIG9mIHRoZQotICAgKiBzaXplIG9mIHRoZSBkZXN0aW5hdGlvbiBpbWFnZS4gIFRodXMsIHRoaXMgbWV0aG9kIHByb3ZpZGVzIGEgbWVhbnMgb2YKLSAgICogZ2VuZXJhdGluZyBtdWx0aXBsZSB0cmFuc2Zvcm1lZCBpbWFnZXMgZnJvbSB0aGUgc2FtZSBzb3VyY2Ugb3Igb2YgYXBwbHlpbmcKLSAgICogbXVsdGlwbGUgdHJhbnNmb3JtYXRpb25zIHNpbXVsdGFuZW91c2x5LCBpbiBvcmRlciB0byBlbGltaW5hdGUgdGhlIG5lZWQgdG8KLSAgICogcmVhZCB0aGUgc291cmNlIGNvZWZmaWNpZW50cyBtdWx0aXBsZSB0aW1lcy4KLSAgICoKLSAgICogQHBhcmFtIGRzdEJ1ZnMgYW4gYXJyYXkgb2YgaW1hZ2UgYnVmZmVycy4gIDxjb2RlPmRzdGJ1ZnNbaV08L2NvZGU+IHdpbGwKLSAgICogcmVjZWl2ZSBhIEpQRUcgaW1hZ2UgdGhhdCBoYXMgYmVlbiB0cmFuc2Zvcm1lZCB1c2luZyB0aGUgcGFyYW1ldGVycyBpbgotICAgKiA8Y29kZT50cmFuc2Zvcm1zW2ldPC9jb2RlPi4gIFVzZSB7QGxpbmsgVEojYnVmU2l6ZX0gdG8gZGV0ZXJtaW5lIHRoZQotICAgKiBtYXhpbXVtIHNpemUgZm9yIGVhY2ggYnVmZmVyIGJhc2VkIG9uIHRoZSB0cmFuc2Zvcm1lZCBvciBjcm9wcGVkIHdpZHRoIGFuZAotICAgKiBoZWlnaHQgYW5kIHRoZSBsZXZlbCBvZiBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBzb3VyY2UgaW1hZ2UuCi0gICAqCi0gICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGFuIGFycmF5IG9mIHtAbGluayBUSlRyYW5zZm9ybX0gaW5zdGFuY2VzLCBlYWNoIG9mCi0gICAqIHdoaWNoIHNwZWNpZmllcyB0aGUgdHJhbnNmb3JtIHBhcmFtZXRlcnMgYW5kL29yIGNyb3BwaW5nIHJlZ2lvbiBmb3IgdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdHJhbnNmb3JtZWQgb3V0cHV0IGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqLwotICBwdWJsaWMgdm9pZCB0cmFuc2Zvcm0oYnl0ZVtdW10gZHN0QnVmcywgVEpUcmFuc2Zvcm1bXSB0cmFuc2Zvcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgaW50IGZsYWdzKSB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGlmIChqcGVnQnVmID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJKUEVHIGJ1ZmZlciBub3QgaW5pdGlhbGl6ZWQiKTsKLSAgICB0cmFuc2Zvcm1lZFNpemVzID0gdHJhbnNmb3JtKGpwZWdCdWYsIGpwZWdCdWZTaXplLCBkc3RCdWZzLCB0cmFuc2Zvcm1zLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmxhZ3MpOwotICB9Ci0KLSAgLyoqCi0gICAqIExvc3NsZXNzbHkgdHJhbnNmb3JtIHRoZSBKUEVHIGltYWdlIGFzc29jaWF0ZWQgd2l0aCB0aGlzIHRyYW5zZm9ybWVyCi0gICAqIGluc3RhbmNlIGFuZCByZXR1cm4gYW4gYXJyYXkgb2Yge0BsaW5rIFRKRGVjb21wcmVzc29yfSBpbnN0YW5jZXMsIGVhY2ggb2YKLSAgICogd2hpY2ggaGFzIGEgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZSBhc3NvY2lhdGVkIHdpdGggaXQuCi0gICAqCi0gICAqIEBwYXJhbSB0cmFuc2Zvcm1zIGFuIGFycmF5IG9mIHtAbGluayBUSlRyYW5zZm9ybX0gaW5zdGFuY2VzLCBlYWNoIG9mCi0gICAqIHdoaWNoIHNwZWNpZmllcyB0aGUgdHJhbnNmb3JtIHBhcmFtZXRlcnMgYW5kL29yIGNyb3BwaW5nIHJlZ2lvbiBmb3IgdGhlCi0gICAqIGNvcnJlc3BvbmRpbmcgdHJhbnNmb3JtZWQgb3V0cHV0IGltYWdlCi0gICAqCi0gICAqIEByZXR1cm4gYW4gYXJyYXkgb2Yge0BsaW5rIFRKRGVjb21wcmVzc29yfSBpbnN0YW5jZXMsIGVhY2ggb2YKLSAgICogd2hpY2ggaGFzIGEgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZSBhc3NvY2lhdGVkIHdpdGggaXQuCi0gICAqCi0gICAqIEBwYXJhbSBmbGFncyB0aGUgYml0d2lzZSBPUiBvZiBvbmUgb3IgbW9yZSBvZgotICAgKiB7QGxpbmsgVEojRkxBR19CT1RUT01VUCBUSi5GTEFHXyp9Ci0gICAqLwotICBwdWJsaWMgVEpEZWNvbXByZXNzb3JbXSB0cmFuc2Zvcm0oVEpUcmFuc2Zvcm1bXSB0cmFuc2Zvcm1zLCBpbnQgZmxhZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aHJvd3MgVEpFeGNlcHRpb24gewotICAgIGJ5dGVbXVtdIGRzdEJ1ZnMgPSBuZXcgYnl0ZVt0cmFuc2Zvcm1zLmxlbmd0aF1bXTsKLSAgICBpZiAoanBlZ1dpZHRoIDwgMSB8fCBqcGVnSGVpZ2h0IDwgMSkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkpQRUcgYnVmZmVyIG5vdCBpbml0aWFsaXplZCIpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykgewotICAgICAgaW50IHcgPSBqcGVnV2lkdGgsIGggPSBqcGVnSGVpZ2h0OwotICAgICAgaWYgKCh0cmFuc2Zvcm1zW2ldLm9wdGlvbnMgJiBUSlRyYW5zZm9ybS5PUFRfQ1JPUCkgIT0gMCkgewotICAgICAgICBpZiAodHJhbnNmb3Jtc1tpXS53aWR0aCAhPSAwKSB3ID0gdHJhbnNmb3Jtc1tpXS53aWR0aDsKLSAgICAgICAgaWYgKHRyYW5zZm9ybXNbaV0uaGVpZ2h0ICE9IDApIGggPSB0cmFuc2Zvcm1zW2ldLmhlaWdodDsKLSAgICAgIH0KLSAgICAgIGRzdEJ1ZnNbaV0gPSBuZXcgYnl0ZVtUSi5idWZTaXplKHcsIGgsIGpwZWdTdWJzYW1wKV07Ci0gICAgfQotICAgIFRKRGVjb21wcmVzc29yW10gdGpkID0gbmV3IFRKRGVjb21wcmVzc29yW3RyYW5zZm9ybXMubGVuZ3RoXTsKLSAgICB0cmFuc2Zvcm0oZHN0QnVmcywgdHJhbnNmb3JtcywgZmxhZ3MpOwotICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdHJhbnNmb3Jtcy5sZW5ndGg7IGkrKykKLSAgICAgIHRqZFtpXSA9IG5ldyBUSkRlY29tcHJlc3Nvcihkc3RCdWZzW2ldLCB0cmFuc2Zvcm1lZFNpemVzW2ldKTsKLSAgICByZXR1cm4gdGpkOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgYW4gYXJyYXkgY29udGFpbmluZyB0aGUgc2l6ZXMgb2YgdGhlIHRyYW5zZm9ybWVkIEpQRUcgaW1hZ2VzCi0gICAqIGdlbmVyYXRlZCBieSB0aGUgbW9zdCByZWNlbnQgdHJhbnNmb3JtIG9wZXJhdGlvbi4KLSAgICoKLSAgICogQHJldHVybiBhbiBhcnJheSBjb250YWluaW5nIHRoZSBzaXplcyBvZiB0aGUgdHJhbnNmb3JtZWQgSlBFRyBpbWFnZXMKLSAgICogZ2VuZXJhdGVkIGJ5IHRoZSBtb3N0IHJlY2VudCB0cmFuc2Zvcm0gb3BlcmF0aW9uLgotICAgKi8KLSAgcHVibGljIGludFtdIGdldFRyYW5zZm9ybWVkU2l6ZXMoKSB7Ci0gICAgaWYgKHRyYW5zZm9ybWVkU2l6ZXMgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIk5vIGltYWdlIGhhcyBiZWVuIHRyYW5zZm9ybWVkIHlldCIpOwotICAgIHJldHVybiB0cmFuc2Zvcm1lZFNpemVzOwotICB9Ci0KLSAgcHJpdmF0ZSBuYXRpdmUgdm9pZCBpbml0KCkgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHByaXZhdGUgbmF0aXZlIGludFtdIHRyYW5zZm9ybShieXRlW10gc3JjQnVmLCBpbnQgc3JjU2l6ZSwgYnl0ZVtdW10gZHN0QnVmcywKLSAgICBUSlRyYW5zZm9ybVtdIHRyYW5zZm9ybXMsIGludCBmbGFncykgdGhyb3dzIFRKRXhjZXB0aW9uOwotCi0gIHN0YXRpYyB7Ci0gICAgVEpMb2FkZXIubG9hZCgpOwotICB9Ci0KLSAgcHJpdmF0ZSBpbnRbXSB0cmFuc2Zvcm1lZFNpemVzID0gbnVsbDsKLX0KZGlmZiAtLWdpdCBhL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuamF2YSBiL2phdmEvb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvWVVWSW1hZ2UuamF2YQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWEwNWU2Mi4uMDAwMDAwMAotLS0gYS9qYXZhL29yZy9saWJqcGVndHVyYm8vdHVyYm9qcGVnL1lVVkltYWdlLmphdmEKKysrIC9kZXYvbnVsbApAQCAtMSw0NDAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDE0IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKiBDb3B5cmlnaHQgKEMpMjAxNSBWaWt0b3IgU3phdGhtw6FyeS4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi1wYWNrYWdlIG9yZy5saWJqcGVndHVyYm8udHVyYm9qcGVnOwotCi0vKioKLSAqIFRoaXMgY2xhc3MgZW5jYXBzdWxhdGVzIGEgWVVWIHBsYW5hciBpbWFnZSBhbmQgdGhlIG1ldGFkYXRhCi0gKiBhc3NvY2lhdGVkIHdpdGggaXQuICBUaGUgVHVyYm9KUEVHIEFQSSBhbGxvd3MgYm90aCB0aGUgSlBFRyBjb21wcmVzc2lvbiBhbmQKLSAqIGRlY29tcHJlc3Npb24gcGlwZWxpbmVzIHRvIGJlIHNwbGl0IGludG8gc3RhZ2VzOiAgWVVWIGVuY29kZSwgY29tcHJlc3MgZnJvbQotICogWVVWLCBkZWNvbXByZXNzIHRvIFlVViwgYW5kIFlVViBkZWNvZGUuICBBIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZQotICogc2VydmVzIGFzIHRoZSBkZXN0aW5hdGlvbiBpbWFnZSBmb3IgWVVWIGVuY29kZSBhbmQgZGVjb21wcmVzcy10by1ZVVYKLSAqIG9wZXJhdGlvbnMgYW5kIGFzIHRoZSBzb3VyY2UgaW1hZ2UgZm9yIGNvbXByZXNzLWZyb20tWVVWIGFuZCBZVVYgZGVjb2RlCi0gKiBvcGVyYXRpb25zLgotICogPHA+Ci0gKiBUZWNobmljYWxseSwgdGhlIEpQRUcgZm9ybWF0IHVzZXMgdGhlIFlDYkNyIGNvbG9yc3BhY2UgKHdoaWNoIHRlY2huaWNhbGx5IGlzCi0gKiBub3QgYSAiY29sb3JzcGFjZSIgYnV0IHJhdGhlciBhICJjb2xvciB0cmFuc2Zvcm0iKSwgYnV0IHBlciB0aGUgY29udmVudGlvbgotICogb2YgdGhlIGRpZ2l0YWwgdmlkZW8gY29tbXVuaXR5LCB0aGUgVHVyYm9KUEVHIEFQSSB1c2VzICJZVVYiIHRvIHJlZmVyIHRvIGFuCi0gKiBpbWFnZSBmb3JtYXQgY29uc2lzdGluZyBvZiBZLCBDYiwgYW5kIENyIGltYWdlIHBsYW5lcy4KLSAqIDxwPgotICogRWFjaCBwbGFuZSBpcyBzaW1wbHkgYSAyRCBhcnJheSBvZiBieXRlcywgZWFjaCBieXRlIHJlcHJlc2VudGluZyB0aGUgdmFsdWUKLSAqIG9mIG9uZSBvZiB0aGUgY29tcG9uZW50cyAoWSwgQ2IsIG9yIENyKSBhdCBhIHBhcnRpY3VsYXIgbG9jYXRpb24gaW4gdGhlCi0gKiBpbWFnZS4gIFRoZSB3aWR0aCBhbmQgaGVpZ2h0IG9mIGVhY2ggcGxhbmUgYXJlIGRldGVybWluZWQgYnkgdGhlIGltYWdlCi0gKiB3aWR0aCwgaGVpZ2h0LCBhbmQgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcuICBUaGUgbHVtaW5hbmNlIHBsYW5lCi0gKiB3aWR0aCBpcyB0aGUgaW1hZ2Ugd2lkdGggcGFkZGVkIHRvIHRoZSBuZWFyZXN0IG11bHRpcGxlIG9mIHRoZSBob3Jpem9udGFsCi0gKiBzdWJzYW1wbGluZyBmYWN0b3IgKDIgaW4gdGhlIGNhc2Ugb2YgNDoyOjAgYW5kIDQ6MjoyLCA0IGluIHRoZSBjYXNlIG9mCi0gKiA0OjE6MSwgMSBpbiB0aGUgY2FzZSBvZiA0OjQ6NCBvciBncmF5c2NhbGUuKSAgU2ltaWxhcmx5LCB0aGUgbHVtaW5hbmNlIHBsYW5lCi0gKiBoZWlnaHQgaXMgdGhlIGltYWdlIGhlaWdodCBwYWRkZWQgdG8gdGhlIG5lYXJlc3QgbXVsdGlwbGUgb2YgdGhlIHZlcnRpY2FsCi0gKiBzdWJzYW1wbGluZyBmYWN0b3IgKDIgaW4gdGhlIGNhc2Ugb2YgNDoyOjAgb3IgNDo0OjAsIDEgaW4gdGhlIGNhc2Ugb2YgNDo0OjQKLSAqIG9yIGdyYXlzY2FsZS4pICBUaGUgY2hyb21pbmFuY2UgcGxhbmUgd2lkdGggaXMgZXF1YWwgdG8gdGhlIGx1bWluYW5jZSBwbGFuZQotICogd2lkdGggZGl2aWRlZCBieSB0aGUgaG9yaXpvbnRhbCBzdWJzYW1wbGluZyBmYWN0b3IsIGFuZCB0aGUgY2hyb21pbmFuY2UKLSAqIHBsYW5lIGhlaWdodCBpcyBlcXVhbCB0byB0aGUgbHVtaW5hbmNlIHBsYW5lIGhlaWdodCBkaXZpZGVkIGJ5IHRoZSB2ZXJ0aWNhbAotICogc3Vic2FtcGxpbmcgZmFjdG9yLgotICogPHA+Ci0gKiBGb3IgZXhhbXBsZSwgaWYgdGhlIHNvdXJjZSBpbWFnZSBpcyAzNSB4IDM1IHBpeGVscyBhbmQgNDoyOjIgc3Vic2FtcGxpbmcgaXMKLSAqIHVzZWQsIHRoZW4gdGhlIGx1bWluYW5jZSBwbGFuZSB3b3VsZCBiZSAzNiB4IDM1IGJ5dGVzLCBhbmQgZWFjaCBvZiB0aGUKLSAqIGNocm9taW5hbmNlIHBsYW5lcyB3b3VsZCBiZSAxOCB4IDM1IGJ5dGVzLiAgSWYgeW91IHNwZWNpZnkgYSBsaW5lIHBhZGRpbmcgb2YKLSAqIDQgYnl0ZXMgb24gdG9wIG9mIHRoaXMsIHRoZW4gdGhlIGx1bWluYW5jZSBwbGFuZSB3b3VsZCBiZSAzNiB4IDM1IGJ5dGVzLCBhbmQKLSAqIGVhY2ggb2YgdGhlIGNocm9taW5hbmNlIHBsYW5lcyB3b3VsZCBiZSAyMCB4IDM1IGJ5dGVzLgotICovCi1wdWJsaWMgY2xhc3MgWVVWSW1hZ2UgewotCi0gIHByaXZhdGUgc3RhdGljIGZpbmFsIFN0cmluZyBOT19BU1NPQ19FUlJPUiA9Ci0gICAgIk5vIGltYWdlIGRhdGEgaXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgaW5zdGFuY2UiOwotCi0gIC8qKgotICAgKiBDcmVhdGUgYSBuZXcgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlIGJhY2tlZCBieSBzZXBhcmF0ZSBpbWFnZQotICAgKiBwbGFuZXMsIGFuZCBhbGxvY2F0ZSBtZW1vcnkgZm9yIHRoZSBpbWFnZSBwbGFuZXMuCi0gICAqCi0gICAqIEBwYXJhbSB3aWR0aCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGVzIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotICAgKiBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgWVVWIGltYWdlLiAgU2V0dGluZyB0aGUgc3RyaWRlCi0gICAqIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBwbGFuZSB3aWR0aCAoc2VlCi0gICAqIHtAbGluayBZVVZJbWFnZSBhYm92ZX0uKSAgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgbnVsbCwgdGhlbiB0aGUKLSAgICogc3RyaWRlcyBmb3IgYWxsIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIHBsYW5lIHdpZHRocy4gIFdoZW4KLSAgICogdXNpbmcgdGhpcyBjb25zdHJ1Y3RvciwgdGhlIHN0cmlkZSBmb3IgZWFjaCBwbGFuZSBtdXN0IGJlIGVxdWFsIHRvIG9yCi0gICAqIGdyZWF0ZXIgdGhhbiB0aGUgcGxhbmUgd2lkdGguCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UKLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHRvIGJlIHVzZWQgaW4gdGhlIFlVVgotICAgKiBpbWFnZSAob25lIG9mIHtAbGluayBUSiNTQU1QXzQ0NCBUSi5TQU1QXyp9KQotICAgKi8KLSAgcHVibGljIFlVVkltYWdlKGludCB3aWR0aCwgaW50W10gc3RyaWRlcywgaW50IGhlaWdodCwgaW50IHN1YnNhbXApIHsKLSAgICBzZXRCdWYobnVsbCwgbnVsbCwgd2lkdGgsIHN0cmlkZXMsIGhlaWdodCwgc3Vic2FtcCwgdHJ1ZSk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBiYWNrZWQgYnkgYSB1bmlmaWVkIGltYWdlCi0gICAqIGJ1ZmZlciwgYW5kIGFsbG9jYXRlIG1lbW9yeSBmb3IgdGhlIGltYWdlIGJ1ZmZlci4KLSAgICoKLSAgICogQHBhcmFtIHdpZHRoIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UKLSAgICoKLSAgICogQHBhcmFtIHBhZCBFYWNoIGxpbmUgb2YgZWFjaCBwbGFuZSBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlciB3aWxsIGJlIHBhZGRlZAotICAgKiB0byB0aGlzIG51bWJlciBvZiBieXRlcyAobXVzdCBiZSBhIHBvd2VyIG9mIDIuKQotICAgKgotICAgKiBAcGFyYW0gaGVpZ2h0IGhlaWdodCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlCi0gICAqCi0gICAqIEBwYXJhbSBzdWJzYW1wIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB0byBiZSB1c2VkIGluIHRoZSBZVVYKLSAgICogaW1hZ2UgKG9uZSBvZiB7QGxpbmsgVEojU0FNUF80NDQgVEouU0FNUF8qfSkKLSAgICovCi0gIHB1YmxpYyBZVVZJbWFnZShpbnQgd2lkdGgsIGludCBwYWQsIGludCBoZWlnaHQsIGludCBzdWJzYW1wKSB7Ci0gICAgc2V0QnVmKG5ldyBieXRlW1RKLmJ1ZlNpemVZVVYod2lkdGgsIHBhZCwgaGVpZ2h0LCBzdWJzYW1wKV0sIHdpZHRoLCBwYWQsCi0gICAgICAgICAgIGhlaWdodCwgc3Vic2FtcCk7Ci0gIH0KLQotICAvKioKLSAgICogQ3JlYXRlIGEgbmV3IDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBmcm9tIGEgc2V0IG9mIGV4aXN0aW5nIGltYWdlCi0gICAqIHBsYW5lcy4KLSAgICoKLSAgICogQHBhcmFtIHBsYW5lcyBhbiBhcnJheSBvZiBidWZmZXJzIHJlcHJlc2VudGluZyB0aGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpCi0gICAqIGltYWdlIHBsYW5lcyAob3IganVzdCB0aGUgWSBwbGFuZSwgaWYgdGhlIGltYWdlIGlzIGdyYXlzY2FsZS4pICAgVGhlc2UKLSAgICogcGxhbmVzIGNhbiBiZSBjb250aWd1b3VzIG9yIG5vbi1jb250aWd1b3VzIGluIG1lbW9yeS4gIFBsYW5lCi0gICAqIDxjb2RlPmk8L2NvZGU+IHNob3VsZCBiZSBhdCBsZWFzdCA8Y29kZT5vZmZzZXRzW2ldICsKLSAgICoge0BsaW5rIFRKI3BsYW5lU2l6ZVlVViBUSi5wbGFuZVNpemVZVVZ9KGksIHdpZHRoLCBzdHJpZGVzW2ldLCBoZWlnaHQsIHN1YnNhbXApPC9jb2RlPgotICAgKiBieXRlcyBpbiBzaXplLgotICAgKgotICAgKiBAcGFyYW0gb2Zmc2V0cyBJZiB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSByZXByZXNlbnRzIGEKLSAgICogc3VicmVnaW9uIG9mIGEgbGFyZ2VyIGltYWdlLCB0aGVuIDxjb2RlPm9mZnNldHNbaV08L2NvZGU+IHNwZWNpZmllcyB0aGUKLSAgICogb2Zmc2V0IChpbiBieXRlcykgb2YgdGhlIHN1YnJlZ2lvbiB3aXRoaW4gcGxhbmUgPGNvZGU+aTwvY29kZT4gb2YgdGhlCi0gICAqIGxhcmdlciBpbWFnZS4gIFNldHRpbmcgdGhpcyB0byBudWxsIGlzIHRoZSBzYW1lIGFzIHNldHRpbmcgdGhlIG9mZnNldHMgZm9yCi0gICAqIGFsbCBwbGFuZXMgdG8gMC4KLSAgICoKLSAgICogQHBhcmFtIHdpZHRoIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBuZXcgWVVWIGltYWdlIChvciBzdWJyZWdpb24pCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGVzIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotICAgKiBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgWVVWIGltYWdlLiAgU2V0dGluZyB0aGUgc3RyaWRlCi0gICAqIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBwbGFuZSB3aWR0aCAoc2VlCi0gICAqIHtAbGluayBZVVZJbWFnZSBhYm92ZX0uKSAgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgbnVsbCwgdGhlbiB0aGUKLSAgICogc3RyaWRlcyBmb3IgYWxsIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIHBsYW5lIHdpZHRocy4gIFlvdQotICAgKiBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZwotICAgKiB0byBlYWNoIHBsYW5lIG9yIHRvIHNwZWNpZnkgdGhhdCB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbnN0YW5jZSBpcyBhCi0gICAqIHN1YnJlZ2lvbiBvZiBhIGxhcmdlciBpbWFnZSAoaW4gd2hpY2ggY2FzZSwgPGNvZGU+c3RyaWRlc1tpXTwvY29kZT4gc2hvdWxkCi0gICAqIGJlIHNldCB0byB0aGUgcGxhbmUgd2lkdGggb2YgcGxhbmUgPGNvZGU+aTwvY29kZT4gaW4gdGhlIGxhcmdlciBpbWFnZS4pCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBuZXcgWVVWIGltYWdlIChvciBzdWJyZWdpb24pCi0gICAqCi0gICAqIEBwYXJhbSBzdWJzYW1wIHRoZSBsZXZlbCBvZiBjaHJvbWluYW5jZSBzdWJzYW1wbGluZyB1c2VkIGluIHRoZSBZVVYKLSAgICogaW1hZ2UgKG9uZSBvZiB7QGxpbmsgVEojU0FNUF80NDQgVEouU0FNUF8qfSkKLSAgICovCi0gIHB1YmxpYyBZVVZJbWFnZShieXRlW11bXSBwbGFuZXMsIGludFtdIG9mZnNldHMsIGludCB3aWR0aCwgaW50W10gc3RyaWRlcywKLSAgICAgICAgICAgICAgICAgIGludCBoZWlnaHQsIGludCBzdWJzYW1wKSB7Ci0gICAgc2V0QnVmKHBsYW5lcywgb2Zmc2V0cywgd2lkdGgsIHN0cmlkZXMsIGhlaWdodCwgc3Vic2FtcCwgZmFsc2UpOwotICB9Ci0KLSAgLyoqCi0gICAqIENyZWF0ZSBhIG5ldyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgZnJvbSBhbiBleGlzdGluZyB1bmlmaWVkIGltYWdlCi0gICAqIGJ1ZmZlci4KLSAgICoKLSAgICogQHBhcmFtIHl1dkltYWdlIGltYWdlIGJ1ZmZlciB0aGF0IGNvbnRhaW5zIG9yIHdpbGwgY29udGFpbiBZVVYgcGxhbmFyCi0gICAqIGltYWdlIGRhdGEuICBVc2Uge0BsaW5rIFRKI2J1ZlNpemVZVVZ9IHRvIGRldGVybWluZSB0aGUgbWluaW11bSBzaXplIGZvcgotICAgKiB0aGlzIGJ1ZmZlci4gIFRoZSBZLCBVIChDYiksIGFuZCBWIChDcikgaW1hZ2UgcGxhbmVzIGFyZSBzdG9yZWQKLSAgICogc2VxdWVudGlhbGx5IGluIHRoZSBidWZmZXIgKHNlZSB7QGxpbmsgWVVWSW1hZ2UgYWJvdmV9IGZvciBhIGRlc2NyaXB0aW9uCi0gICAqIG9mIHRoZSBpbWFnZSBmb3JtYXQuKQotICAgKgotICAgKiBAcGFyYW0gd2lkdGggd2lkdGggKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZQotICAgKgotICAgKiBAcGFyYW0gcGFkIHRoZSBsaW5lIHBhZGRpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlIGJ1ZmZlci4gIEZvcgotICAgKiBpbnN0YW5jZSwgaWYgZWFjaCBsaW5lIGluIGVhY2ggcGxhbmUgb2YgdGhlIGJ1ZmZlciBpcyBwYWRkZWQgdG8gdGhlCi0gICAqIG5lYXJlc3QgbXVsdGlwbGUgb2YgNCBieXRlcywgdGhlbiA8Y29kZT5wYWQ8L2NvZGU+IHNob3VsZCBiZSBzZXQgdG8gNC4KLSAgICoKLSAgICogQHBhcmFtIGhlaWdodCBoZWlnaHQgKGluIHBpeGVscykgb2YgdGhlIFlVViBpbWFnZQotICAgKgotICAgKiBAcGFyYW0gc3Vic2FtcCB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWCi0gICAqIGltYWdlIChvbmUgb2Yge0BsaW5rIFRKI1NBTVBfNDQ0IFRKLlNBTVBfKn0pCi0gICAqLwotICBwdWJsaWMgWVVWSW1hZ2UoYnl0ZVtdIHl1dkltYWdlLCBpbnQgd2lkdGgsIGludCBwYWQsIGludCBoZWlnaHQsCi0gICAgICAgICAgICAgICAgICBpbnQgc3Vic2FtcCkgewotICAgIHNldEJ1Zih5dXZJbWFnZSwgd2lkdGgsIHBhZCwgaGVpZ2h0LCBzdWJzYW1wKTsKLSAgfQotCi0gIC8qKgotICAgKiBBc3NpZ24gYSBzZXQgb2YgaW1hZ2UgcGxhbmVzIHRvIHRoaXMgPGNvZGU+WVVWSW1hZ2U8L2NvZGU+IGluc3RhbmNlLgotICAgKgotICAgKiBAcGFyYW0gcGxhbmVzIGFuIGFycmF5IG9mIGJ1ZmZlcnMgcmVwcmVzZW50aW5nIHRoZSBZLCBVIChDYiksIGFuZCBWIChDcikKLSAgICogaW1hZ2UgcGxhbmVzIChvciBqdXN0IHRoZSBZIHBsYW5lLCBpZiB0aGUgaW1hZ2UgaXMgZ3JheXNjYWxlLikgIFRoZXNlCi0gICAqIHBsYW5lcyBjYW4gYmUgY29udGlndW91cyBvciBub24tY29udGlndW91cyBpbiBtZW1vcnkuICBQbGFuZQotICAgKiA8Y29kZT5pPC9jb2RlPiBzaG91bGQgYmUgYXQgbGVhc3QgPGNvZGU+b2Zmc2V0c1tpXSArCi0gICAqIHtAbGluayBUSiNwbGFuZVNpemVZVVYgVEoucGxhbmVTaXplWVVWfShpLCB3aWR0aCwgc3RyaWRlc1tpXSwgaGVpZ2h0LCBzdWJzYW1wKTwvY29kZT4KLSAgICogYnl0ZXMgaW4gc2l6ZS4KLSAgICoKLSAgICogQHBhcmFtIG9mZnNldHMgSWYgdGhpcyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UgcmVwcmVzZW50cyBhCi0gICAqIHN1YnJlZ2lvbiBvZiBhIGxhcmdlciBpbWFnZSwgdGhlbiA8Y29kZT5vZmZzZXRzW2ldPC9jb2RlPiBzcGVjaWZpZXMgdGhlCi0gICAqIG9mZnNldCAoaW4gYnl0ZXMpIG9mIHRoZSBzdWJyZWdpb24gd2l0aGluIHBsYW5lIDxjb2RlPmk8L2NvZGU+IG9mIHRoZQotICAgKiBsYXJnZXIgaW1hZ2UuICBTZXR0aW5nIHRoaXMgdG8gbnVsbCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIHRoZSBvZmZzZXRzIGZvcgotICAgKiBhbGwgcGxhbmVzIHRvIDAuCi0gICAqCi0gICAqIEBwYXJhbSB3aWR0aCB3aWR0aCAoaW4gcGl4ZWxzKSBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24pCi0gICAqCi0gICAqIEBwYXJhbSBzdHJpZGVzIGFuIGFycmF5IG9mIGludGVnZXJzLCBlYWNoIHNwZWNpZnlpbmcgdGhlIG51bWJlciBvZiBieXRlcwotICAgKiBwZXIgbGluZSBpbiB0aGUgY29ycmVzcG9uZGluZyBwbGFuZSBvZiB0aGUgWVVWIGltYWdlLiAgU2V0dGluZyB0aGUgc3RyaWRlCi0gICAqIGZvciBhbnkgcGxhbmUgdG8gMCBpcyB0aGUgc2FtZSBhcyBzZXR0aW5nIGl0IHRvIHRoZSBwbGFuZSB3aWR0aCAoc2VlCi0gICAqIHtAbGluayBZVVZJbWFnZSBhYm92ZX0uKSAgSWYgPGNvZGU+c3RyaWRlczwvY29kZT4gaXMgbnVsbCwgdGhlbiB0aGUKLSAgICogc3RyaWRlcyBmb3IgYWxsIHBsYW5lcyB3aWxsIGJlIHNldCB0byB0aGVpciByZXNwZWN0aXZlIHBsYW5lIHdpZHRocy4gIFlvdQotICAgKiBjYW4gYWRqdXN0IHRoZSBzdHJpZGVzIGluIG9yZGVyIHRvIGFkZCBhbiBhcmJpdHJhcnkgYW1vdW50IG9mIGxpbmUgcGFkZGluZwotICAgKiB0byBlYWNoIHBsYW5lIG9yIHRvIHNwZWNpZnkgdGhhdCB0aGlzIDxjb2RlPllVVkltYWdlPC9jb2RlPiBpbWFnZSBpcyBhCi0gICAqIHN1YnJlZ2lvbiBvZiBhIGxhcmdlciBpbWFnZSAoaW4gd2hpY2ggY2FzZSwgPGNvZGU+c3RyaWRlc1tpXTwvY29kZT4gc2hvdWxkCi0gICAqIGJlIHNldCB0byB0aGUgcGxhbmUgd2lkdGggb2YgcGxhbmUgPGNvZGU+aTwvY29kZT4gaW4gdGhlIGxhcmdlciBpbWFnZS4pCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UgKG9yIHN1YnJlZ2lvbikKLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVVgotICAgKiBpbWFnZSAob25lIG9mIHtAbGluayBUSiNTQU1QXzQ0NCBUSi5TQU1QXyp9KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QnVmKGJ5dGVbXVtdIHBsYW5lcywgaW50W10gb2Zmc2V0cywgaW50IHdpZHRoLCBpbnQgc3RyaWRlc1tdLAotICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IHN1YnNhbXApIHsKLSAgICBzZXRCdWYocGxhbmVzLCBvZmZzZXRzLCB3aWR0aCwgc3RyaWRlcywgaGVpZ2h0LCBzdWJzYW1wLCBmYWxzZSk7Ci0gIH0KLQotICBwcml2YXRlIHZvaWQgc2V0QnVmKGJ5dGVbXVtdIHBsYW5lcywgaW50W10gb2Zmc2V0cywgaW50IHdpZHRoLCBpbnQgc3RyaWRlc1tdLAotICAgICAgICAgICAgICAgICAgICAgaW50IGhlaWdodCwgaW50IHN1YnNhbXAsIGJvb2xlYW4gYWxsb2MpIHsKLSAgICBpZiAoKHBsYW5lcyA9PSBudWxsICYmICFhbGxvYykgfHwgd2lkdGggPCAxIHx8IGhlaWdodCA8IDEgfHwgc3Vic2FtcCA8IDAgfHwKLSAgICAgICAgc3Vic2FtcCA+PSBUSi5OVU1TQU1QKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBZVVZJbWFnZTo6c2V0QnVmKCkiKTsKLQotICAgIGludCBuYyA9IChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSA/IDEgOiAzKTsKLSAgICBpZiAocGxhbmVzLmxlbmd0aCAhPSBuYyB8fCAob2Zmc2V0cyAhPSBudWxsICYmIG9mZnNldHMubGVuZ3RoICE9IG5jKSB8fAotICAgICAgICAoc3RyaWRlcyAhPSBudWxsICYmIHN0cmlkZXMubGVuZ3RoICE9IG5jKSkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIllVVkltYWdlOjpzZXRCdWYoKTogcGxhbmVzLCBvZmZzZXRzLCBvciBzdHJpZGVzIGFycmF5IGlzIHRoZSB3cm9uZyBzaXplIik7Ci0KLSAgICBpZiAob2Zmc2V0cyA9PSBudWxsKQotICAgICAgb2Zmc2V0cyA9IG5ldyBpbnRbbmNdOwotICAgIGlmIChzdHJpZGVzID09IG51bGwpCi0gICAgICBzdHJpZGVzID0gbmV3IGludFtuY107Ci0KLSAgICBmb3IgKGludCBpID0gMDsgaSA8IG5jOyBpKyspIHsKLSAgICAgIGludCBwdyA9IFRKLnBsYW5lV2lkdGgoaSwgd2lkdGgsIHN1YnNhbXApOwotICAgICAgaW50IHBoID0gVEoucGxhbmVIZWlnaHQoaSwgaGVpZ2h0LCBzdWJzYW1wKTsKLSAgICAgIGludCBwbGFuZVNpemUgPSBUSi5wbGFuZVNpemVZVVYoaSwgd2lkdGgsIHN0cmlkZXNbaV0sIGhlaWdodCwgc3Vic2FtcCk7Ci0KLSAgICAgIGlmIChzdHJpZGVzW2ldID09IDApCi0gICAgICAgIHN0cmlkZXNbaV0gPSBwdzsKLSAgICAgIGlmIChhbGxvYykgewotICAgICAgICBpZiAoc3RyaWRlc1tpXSA8IHB3KQotICAgICAgICAgIHRocm93IG5ldyBJbGxlZ2FsQXJndW1lbnRFeGNlcHRpb24oIlN0cmlkZSBtdXN0IGJlID49IHBsYW5lIHdpZHRoIHdoZW4gYWxsb2NhdGluZyBhIG5ldyBZVVYgaW1hZ2UiKTsKLSAgICAgICAgcGxhbmVzW2ldID0gbmV3IGJ5dGVbc3RyaWRlc1tpXSAqIHBoXTsKLSAgICAgIH0KLSAgICAgIGlmIChwbGFuZXNbaV0gPT0gbnVsbCB8fCBvZmZzZXRzW2ldIDwgMCkKLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW52YWxpZCBhcmd1bWVudCBpbiBZVVZJbWFnZTo6c2V0QnVmKCkiKTsKLSAgICAgIGlmIChzdHJpZGVzW2ldIDwgMCAmJiBvZmZzZXRzW2ldIC0gcGxhbmVTaXplICsgcHcgPCAwKQotICAgICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJTdHJpZGUgZm9yIHBsYW5lICIgKyBpICsgIiB3b3VsZCBjYXVzZSBtZW1vcnkgdG8gYmUgYWNjZXNzZWQgYmVsb3cgcGxhbmUgYm91bmRhcnkiKTsKLSAgICAgIGlmIChwbGFuZXNbaV0ubGVuZ3RoIDwgb2Zmc2V0c1tpXSArIHBsYW5lU2l6ZSkKLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxBcmd1bWVudEV4Y2VwdGlvbigiSW1hZ2UgcGxhbmUgIiArIGkgKyAiIGlzIG5vdCBsYXJnZSBlbm91Z2giKTsKLSAgICB9Ci0KLSAgICB5dXZQbGFuZXMgPSBwbGFuZXM7Ci0gICAgeXV2T2Zmc2V0cyA9IG9mZnNldHM7Ci0gICAgeXV2V2lkdGggPSB3aWR0aDsKLSAgICB5dXZTdHJpZGVzID0gc3RyaWRlczsKLSAgICB5dXZIZWlnaHQgPSBoZWlnaHQ7Ci0gICAgeXV2U3Vic2FtcCA9IHN1YnNhbXA7Ci0gIH0KLQotICAvKioKLSAgICogQXNzaWduIGEgdW5pZmllZCBpbWFnZSBidWZmZXIgdG8gdGhpcyA8Y29kZT5ZVVZJbWFnZTwvY29kZT4gaW5zdGFuY2UuCi0gICAqCi0gICAqIEBwYXJhbSB5dXZJbWFnZSBpbWFnZSBidWZmZXIgdGhhdCBjb250YWlucyBvciB3aWxsIGNvbnRhaW4gWVVWIHBsYW5hcgotICAgKiBpbWFnZSBkYXRhLiAgVXNlIHtAbGluayBUSiNidWZTaXplWVVWfSB0byBkZXRlcm1pbmUgdGhlIG1pbmltdW0gc2l6ZSBmb3IKLSAgICogdGhpcyBidWZmZXIuICBUaGUgWSwgVSAoQ2IpLCBhbmQgViAoQ3IpIGltYWdlIHBsYW5lcyBhcmUgc3RvcmVkCi0gICAqIHNlcXVlbnRpYWxseSBpbiB0aGUgYnVmZmVyIChzZWUge0BsaW5rIFlVVkltYWdlIGFib3ZlfSBmb3IgYSBkZXNjcmlwdGlvbgotICAgKiBvZiB0aGUgaW1hZ2UgZm9ybWF0LikKLSAgICoKLSAgICogQHBhcmFtIHdpZHRoIHdpZHRoIChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UKLSAgICoKLSAgICogQHBhcmFtIHBhZCB0aGUgbGluZSBwYWRkaW5nIHVzZWQgaW4gdGhlIFlVViBpbWFnZSBidWZmZXIuICBGb3IKLSAgICogaW5zdGFuY2UsIGlmIGVhY2ggbGluZSBpbiBlYWNoIHBsYW5lIG9mIHRoZSBidWZmZXIgaXMgcGFkZGVkIHRvIHRoZQotICAgKiBuZWFyZXN0IG11bHRpcGxlIG9mIDQgYnl0ZXMsIHRoZW4gPGNvZGU+cGFkPC9jb2RlPiBzaG91bGQgYmUgc2V0IHRvIDQuCi0gICAqCi0gICAqIEBwYXJhbSBoZWlnaHQgaGVpZ2h0IChpbiBwaXhlbHMpIG9mIHRoZSBZVVYgaW1hZ2UKLSAgICoKLSAgICogQHBhcmFtIHN1YnNhbXAgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVVgotICAgKiBpbWFnZSAob25lIG9mIHtAbGluayBUSiNTQU1QXzQ0NCBUSi5TQU1QXyp9KQotICAgKi8KLSAgcHVibGljIHZvaWQgc2V0QnVmKGJ5dGVbXSB5dXZJbWFnZSwgaW50IHdpZHRoLCBpbnQgcGFkLCBpbnQgaGVpZ2h0LAotICAgICAgICAgICAgICAgICAgICAgaW50IHN1YnNhbXApIHsKLSAgICBpZiAoeXV2SW1hZ2UgPT0gbnVsbCB8fCB3aWR0aCA8IDEgfHwgcGFkIDwgMSB8fCAoKHBhZCAmIChwYWQgLSAxKSkgIT0gMCkgfHwKLSAgICAgICAgaGVpZ2h0IDwgMSB8fCBzdWJzYW1wIDwgMCB8fCBzdWJzYW1wID49IFRKLk5VTVNBTVApCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJJbnZhbGlkIGFyZ3VtZW50IGluIFlVVkltYWdlOjpzZXRCdWYoKSIpOwotICAgIGlmICh5dXZJbWFnZS5sZW5ndGggPCBUSi5idWZTaXplWVVWKHdpZHRoLCBwYWQsIGhlaWdodCwgc3Vic2FtcCkpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbEFyZ3VtZW50RXhjZXB0aW9uKCJZVVYgaW1hZ2UgYnVmZmVyIGlzIG5vdCBsYXJnZSBlbm91Z2giKTsKLQotICAgIGludCBuYyA9IChzdWJzYW1wID09IFRKLlNBTVBfR1JBWSA/IDEgOiAzKTsKLSAgICBieXRlW11bXSBwbGFuZXMgPSBuZXcgYnl0ZVtuY11bXTsKLSAgICBpbnRbXSBzdHJpZGVzID0gbmV3IGludFtuY107Ci0gICAgaW50W10gb2Zmc2V0cyA9IG5ldyBpbnRbbmNdOwotCi0gICAgcGxhbmVzWzBdID0geXV2SW1hZ2U7Ci0gICAgc3RyaWRlc1swXSA9IFBBRChUSi5wbGFuZVdpZHRoKDAsIHdpZHRoLCBzdWJzYW1wKSwgcGFkKTsKLSAgICBpZiAoc3Vic2FtcCAhPSBUSi5TQU1QX0dSQVkpIHsKLSAgICAgIHN0cmlkZXNbMV0gPSBzdHJpZGVzWzJdID0gUEFEKFRKLnBsYW5lV2lkdGgoMSwgd2lkdGgsIHN1YnNhbXApLCBwYWQpOwotICAgICAgcGxhbmVzWzFdID0gcGxhbmVzWzJdID0geXV2SW1hZ2U7Ci0gICAgICBvZmZzZXRzWzFdID0gb2Zmc2V0c1swXSArCi0gICAgICAgIHN0cmlkZXNbMF0gKiBUSi5wbGFuZUhlaWdodCgwLCBoZWlnaHQsIHN1YnNhbXApOwotICAgICAgb2Zmc2V0c1syXSA9IG9mZnNldHNbMV0gKwotICAgICAgICBzdHJpZGVzWzFdICogVEoucGxhbmVIZWlnaHQoMSwgaGVpZ2h0LCBzdWJzYW1wKTsKLSAgICB9Ci0KLSAgICB5dXZQYWQgPSBwYWQ7Ci0gICAgc2V0QnVmKHBsYW5lcywgb2Zmc2V0cywgd2lkdGgsIHN0cmlkZXMsIGhlaWdodCwgc3Vic2FtcCk7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgd2lkdGggb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uLikKLSAgICoKLSAgICogQHJldHVybiB0aGUgd2lkdGggb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uKQotICAgKi8KLSAgcHVibGljIGludCBnZXRXaWR0aCgpIHsKLSAgICBpZiAoeXV2V2lkdGggPCAxKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgcmV0dXJuIHl1dldpZHRoOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGhlaWdodCBvZiB0aGUgWVVWIGltYWdlIChvciBzdWJyZWdpb24uKQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBoZWlnaHQgb2YgdGhlIFlVViBpbWFnZSAob3Igc3VicmVnaW9uKQotICAgKi8KLSAgcHVibGljIGludCBnZXRIZWlnaHQoKSB7Ci0gICAgaWYgKHl1dkhlaWdodCA8IDEpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICByZXR1cm4geXV2SGVpZ2h0OwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxpbmUgcGFkZGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2UgYnVmZmVyIChpZiB0aGlzIGltYWdlIGlzCi0gICAqIHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIHJhdGhlciB0aGFuIHNlcGFyYXRlIGltYWdlIHBsYW5lcy4pCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIGxpbmUgcGFkZGluZyB1c2VkIGluIHRoZSBZVVYgaW1hZ2UgYnVmZmVyCi0gICAqLwotICBwdWJsaWMgaW50IGdldFBhZCgpIHsKLSAgICBpZiAoeXV2UGxhbmVzID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICBpZiAoeXV2UGFkIDwgMSB8fCAoKHl1dlBhZCAmICh5dXZQYWQgLSAxKSkgIT0gMCkpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKCJJbWFnZSBpcyBub3Qgc3RvcmVkIGluIGEgdW5pZmllZCBidWZmZXIiKTsKLSAgICByZXR1cm4geXV2UGFkOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIG51bWJlciBvZiBieXRlcyBwZXIgbGluZSBvZiBlYWNoIHBsYW5lIGluIHRoZSBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIG51bWJlciBvZiBieXRlcyBwZXIgbGluZSBvZiBlYWNoIHBsYW5lIGluIHRoZSBZVVYgaW1hZ2UKLSAgICovCi0gIHB1YmxpYyBpbnRbXSBnZXRTdHJpZGVzKCkgewotICAgIGlmICh5dXZTdHJpZGVzID09IG51bGwpCi0gICAgICB0aHJvdyBuZXcgSWxsZWdhbFN0YXRlRXhjZXB0aW9uKE5PX0FTU09DX0VSUk9SKTsKLSAgICByZXR1cm4geXV2U3RyaWRlczsKLSAgfQotCi0gIC8qKgotICAgKiBSZXR1cm5zIHRoZSBvZmZzZXRzIChpbiBieXRlcykgb2YgZWFjaCBwbGFuZSB3aXRoaW4gdGhlIHBsYW5lcyBvZiBhIGxhcmdlcgotICAgKiBZVVYgaW1hZ2UuCi0gICAqCi0gICAqIEByZXR1cm4gdGhlIG9mZnNldHMgKGluIGJ5dGVzKSBvZiBlYWNoIHBsYW5lIHdpdGhpbiB0aGUgcGxhbmVzIG9mIGEgbGFyZ2VyCi0gICAqIFlVViBpbWFnZQotICAgKi8KLSAgcHVibGljIGludFtdIGdldE9mZnNldHMoKSB7Ci0gICAgaWYgKHl1dk9mZnNldHMgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIHJldHVybiB5dXZPZmZzZXRzOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIGxldmVsIG9mIGNocm9taW5hbmNlIHN1YnNhbXBsaW5nIHVzZWQgaW4gdGhlIFlVViBpbWFnZS4gIFNlZQotICAgKiB7QGxpbmsgVEojU0FNUF80NDQgVEouU0FNUF8qfS4KLSAgICoKLSAgICogQHJldHVybiB0aGUgbGV2ZWwgb2YgY2hyb21pbmFuY2Ugc3Vic2FtcGxpbmcgdXNlZCBpbiB0aGUgWVVWIGltYWdlCi0gICAqLwotICBwdWJsaWMgaW50IGdldFN1YnNhbXAoKSB7Ci0gICAgaWYgKHl1dlN1YnNhbXAgPCAwIHx8IHl1dlN1YnNhbXAgPj0gVEouTlVNU0FNUCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIHJldHVybiB5dXZTdWJzYW1wOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIFlVViBpbWFnZSBwbGFuZXMuICBJZiB0aGUgaW1hZ2UgaXMgc3RvcmVkIGluIGEgdW5pZmllZCBidWZmZXIsCi0gICAqIHRoZW4gYWxsIGltYWdlIHBsYW5lcyB3aWxsIHBvaW50IHRvIHRoYXQgYnVmZmVyLgotICAgKgotICAgKiBAcmV0dXJuIHRoZSBZVVYgaW1hZ2UgcGxhbmVzCi0gICAqLwotICBwdWJsaWMgYnl0ZVtdW10gZ2V0UGxhbmVzKCkgewotICAgIGlmICh5dXZQbGFuZXMgPT0gbnVsbCkKLSAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oTk9fQVNTT0NfRVJST1IpOwotICAgIHJldHVybiB5dXZQbGFuZXM7Ci0gIH0KLQotICAvKioKLSAgICogUmV0dXJucyB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcyBzdG9yZWQgaW4gYSB1bmlmaWVkCi0gICAqIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBZVVYgaW1hZ2UgYnVmZmVyCi0gICAqLwotICBwdWJsaWMgYnl0ZVtdIGdldEJ1ZigpIHsKLSAgICBpZiAoeXV2UGxhbmVzID09IG51bGwgfHwgeXV2U3Vic2FtcCA8IDAgfHwgeXV2U3Vic2FtcCA+PSBUSi5OVU1TQU1QKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgaW50IG5jID0gKHl1dlN1YnNhbXAgPT0gVEouU0FNUF9HUkFZID8gMSA6IDMpOwotICAgIGZvciAoaW50IGkgPSAxOyBpIDwgbmM7IGkrKykgewotICAgICAgaWYgKHl1dlBsYW5lc1tpXSAhPSB5dXZQbGFuZXNbMF0pCi0gICAgICAgIHRocm93IG5ldyBJbGxlZ2FsU3RhdGVFeGNlcHRpb24oIkltYWdlIGlzIG5vdCBzdG9yZWQgaW4gYSB1bmlmaWVkIGJ1ZmZlciIpOwotICAgIH0KLSAgICByZXR1cm4geXV2UGxhbmVzWzBdOwotICB9Ci0KLSAgLyoqCi0gICAqIFJldHVybnMgdGhlIHNpemUgKGluIGJ5dGVzKSBvZiB0aGUgWVVWIGltYWdlIGJ1ZmZlciAoaWYgdGhpcyBpbWFnZSBpcwotICAgKiBzdG9yZWQgaW4gYSB1bmlmaWVkIGJ1ZmZlciByYXRoZXIgdGhhbiBzZXBhcmF0ZSBpbWFnZSBwbGFuZXMuKQotICAgKgotICAgKiBAcmV0dXJuIHRoZSBzaXplIChpbiBieXRlcykgb2YgdGhlIFlVViBpbWFnZSBidWZmZXIKLSAgICovCi0gIHB1YmxpYyBpbnQgZ2V0U2l6ZSgpIHsKLSAgICBpZiAoeXV2UGxhbmVzID09IG51bGwgfHwgeXV2U3Vic2FtcCA8IDAgfHwgeXV2U3Vic2FtcCA+PSBUSi5OVU1TQU1QKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbihOT19BU1NPQ19FUlJPUik7Ci0gICAgaW50IG5jID0gKHl1dlN1YnNhbXAgPT0gVEouU0FNUF9HUkFZID8gMSA6IDMpOwotICAgIGlmICh5dXZQYWQgPCAxKQotICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSW1hZ2UgaXMgbm90IHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIik7Ci0gICAgZm9yIChpbnQgaSA9IDE7IGkgPCBuYzsgaSsrKSB7Ci0gICAgICBpZiAoeXV2UGxhbmVzW2ldICE9IHl1dlBsYW5lc1swXSkKLSAgICAgICAgdGhyb3cgbmV3IElsbGVnYWxTdGF0ZUV4Y2VwdGlvbigiSW1hZ2UgaXMgbm90IHN0b3JlZCBpbiBhIHVuaWZpZWQgYnVmZmVyIik7Ci0gICAgfQotICAgIHJldHVybiBUSi5idWZTaXplWVVWKHl1dldpZHRoLCB5dXZQYWQsIHl1dkhlaWdodCwgeXV2U3Vic2FtcCk7Ci0gIH0KLQotICBwcml2YXRlIHN0YXRpYyBmaW5hbCBpbnQgUEFEKGludCB2LCBpbnQgcCkgewotICAgIHJldHVybiAodiArIHAgLSAxKSAmICh+KHAgLSAxKSk7Ci0gIH0KLQotICBwcm90ZWN0ZWQgbG9uZyBoYW5kbGUgPSAwOwotICBwcm90ZWN0ZWQgYnl0ZVtdW10geXV2UGxhbmVzID0gbnVsbDsKLSAgcHJvdGVjdGVkIGludFtdIHl1dk9mZnNldHMgPSBudWxsOwotICBwcm90ZWN0ZWQgaW50W10geXV2U3RyaWRlcyA9IG51bGw7Ci0gIHByb3RlY3RlZCBpbnQgeXV2UGFkID0gMDsKLSAgcHJvdGVjdGVkIGludCB5dXZXaWR0aCA9IDA7Ci0gIHByb3RlY3RlZCBpbnQgeXV2SGVpZ2h0ID0gMDsKLSAgcHJvdGVjdGVkIGludCB5dXZTdWJzYW1wID0gLTE7Ci19CmRpZmYgLS1naXQgYS9qYXZhL29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKLmggYi9qYXZhL29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZWU4NzEuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USi5oCisrKyAvZGV2L251bGwKQEAgLTEsMTI5ICswLDAgQEAKLS8qIERPIE5PVCBFRElUIFRISVMgRklMRSAtIGl0IGlzIG1hY2hpbmUgZ2VuZXJhdGVkICovCi0jaW5jbHVkZSA8am5pLmg+Ci0vKiBIZWFkZXIgZm9yIGNsYXNzIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKICovCi0KLSNpZm5kZWYgX0luY2x1ZGVkX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKCi0jZGVmaW5lIF9JbmNsdWRlZF9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USgotI2lmZGVmIF9fY3BsdXNwbHVzCi1leHRlcm4gIkMiIHsKLSNlbmRpZgotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX05VTVNBTVAKLSNkZWZpbmUgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfTlVNU0FNUCA2TAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1NBTVBfNDQ0Ci0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1NBTVBfNDQ0IDBMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfU0FNUF80MjIKLSNkZWZpbmUgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfU0FNUF80MjIgMUwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9TQU1QXzQyMAotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9TQU1QXzQyMCAyTAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1NBTVBfR1JBWQotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9TQU1QX0dSQVkgM0wKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9TQU1QXzQ0MAotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9TQU1QXzQ0MCA0TAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1NBTVBfNDExCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1NBTVBfNDExIDVMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfTlVNUEYKLSNkZWZpbmUgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfTlVNUEYgMTJMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfUEZfUkdCCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX1JHQiAwTAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0JHUgotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9CR1IgMUwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9SR0JYCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX1JHQlggMkwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9CR1JYCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0JHUlggM0wKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9YQkdSCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX1hCR1IgNEwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9YUkdCCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX1hSR0IgNUwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9HUkFZCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0dSQVkgNkwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9SR0JBCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX1JHQkEgN0wKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9CR1JBCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0JHUkEgOEwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9BQkdSCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0FCR1IgOUwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9BUkdCCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX1BGX0FSR0IgMTBMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfUEZfQ01ZSwotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9QRl9DTVlLIDExTAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX05VTUNTCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX05VTUNTIDVMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfQ1NfUkdCCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX0NTX1JHQiAwTAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX0NTX1lDYkNyCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX0NTX1lDYkNyIDFMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfQ1NfR1JBWQotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9DU19HUkFZIDJMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfQ1NfQ01ZSwotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9DU19DTVlLIDNMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfQ1NfWUNDSwotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9DU19ZQ0NLIDRMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfRkxBR19CT1RUT01VUAotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9GTEFHX0JPVFRPTVVQIDJMCi0jdW5kZWYgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfRkxBR19GQVNUVVBTQU1QTEUKLSNkZWZpbmUgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfRkxBR19GQVNUVVBTQU1QTEUgMjU2TAotI3VuZGVmIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX0ZMQUdfRkFTVERDVAotI2RlZmluZSBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9GTEFHX0ZBU1REQ1QgMjA0OEwKLSN1bmRlZiBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9GTEFHX0FDQ1VSQVRFRENUCi0jZGVmaW5lIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX0ZMQUdfQUNDVVJBVEVEQ1QgNDA5NkwKLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKCi0gKiBNZXRob2Q6ICAgIGJ1ZlNpemUKLSAqIFNpZ25hdHVyZTogKElJSSlJCi0gKi8KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9idWZTaXplCi0gIChKTklFbnYgKiwgamNsYXNzLCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEoKLSAqIE1ldGhvZDogICAgYnVmU2l6ZVlVVgotICogU2lnbmF0dXJlOiAoSUlJSSlJCi0gKi8KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9idWZTaXplWVVWX19JSUlJCi0gIChKTklFbnYgKiwgamNsYXNzLCBqaW50LCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEoKLSAqIE1ldGhvZDogICAgYnVmU2l6ZVlVVgotICogU2lnbmF0dXJlOiAoSUlJKUkKLSAqLwotSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX2J1ZlNpemVZVVZfX0lJSQotICAoSk5JRW52ICosIGpjbGFzcywgamludCwgamludCwgamludCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKCi0gKiBNZXRob2Q6ICAgIHBsYW5lU2l6ZVlVVgotICogU2lnbmF0dXJlOiAoSUlJSUkpSQotICovCi1KTklFWFBPUlQgamludCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpfcGxhbmVTaXplWVVWX19JSUlJSQotICAoSk5JRW52ICosIGpjbGFzcywgamludCwgamludCwgamludCwgamludCwgamludCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKCi0gKiBNZXRob2Q6ICAgIHBsYW5lV2lkdGgKLSAqIFNpZ25hdHVyZTogKElJSSlJCi0gKi8KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9wbGFuZVdpZHRoX19JSUkKLSAgKEpOSUVudiAqLCBqY2xhc3MsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USgotICogTWV0aG9kOiAgICBwbGFuZUhlaWdodAotICogU2lnbmF0dXJlOiAoSUlJKUkKLSAqLwotSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKX3BsYW5lSGVpZ2h0X19JSUkKLSAgKEpOSUVudiAqLCBqY2xhc3MsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USgotICogTWV0aG9kOiAgICBnZXRTY2FsaW5nRmFjdG9ycwotICogU2lnbmF0dXJlOiAoKVtMb3JnL2xpYmpwZWd0dXJiby90dXJib2pwZWcvVEpTY2FsaW5nRmFjdG9yOwotICovCi1KTklFWFBPUlQgam9iamVjdEFycmF5IEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USl9nZXRTY2FsaW5nRmFjdG9ycwotICAoSk5JRW52ICosIGpjbGFzcyk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2phdmEvb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yLmggYi9qYXZhL29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3Nvci5oCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzZiZDBlLi4wMDAwMDAwCi0tLSBhL2phdmEvb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyogRE8gTk9UIEVESVQgVEhJUyBGSUxFIC0gaXQgaXMgbWFjaGluZSBnZW5lcmF0ZWQgKi8KLSNpbmNsdWRlIDxqbmkuaD4KLS8qIEhlYWRlciBmb3IgY2xhc3Mgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yICovCi0KLSNpZm5kZWYgX0luY2x1ZGVkX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3NvcgotI2RlZmluZSBfSW5jbHVkZWRfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkNvbXByZXNzb3IKLSAqIE1ldGhvZDogICAgaW5pdAotICogU2lnbmF0dXJlOiAoKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3Nvcl9pbml0Ci0gIChKTklFbnYgKiwgam9iamVjdCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZXN0cm95Ci0gKiBTaWduYXR1cmU6ICgpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yX2Rlc3Ryb3kKLSAgKEpOSUVudiAqLCBqb2JqZWN0KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbQklJSUlbQklJSSlJCi0gKi8KLUpOSUVYUE9SVCBqaW50IEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkNvbXByZXNzb3JfY29tcHJlc3NfX18zQklJSUlfM0JJSUkKLSAgKEpOSUVudiAqLCBqb2JqZWN0LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbQklJSUlJSVtCSUlJKUkKLSAqLwotSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3Nvcl9jb21wcmVzc19fXzNCSUlJSUlJXzNCSUlJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamJ5dGVBcnJheSwgamludCwgamludCwgamludCwgamludCwgamludCwgamludCwgamJ5dGVBcnJheSwgamludCwgamludCwgamludCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3NvcgotICogTWV0aG9kOiAgICBjb21wcmVzcwotICogU2lnbmF0dXJlOiAoW0lJSUlJW0JJSUkpSQotICovCi1KTklFWFBPUlQgamludCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yX2NvbXByZXNzX19fM0lJSUlJXzNCSUlJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamludEFycmF5LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbSUlJSUlJSVtCSUlJKUkKLSAqLwotSk5JRVhQT1JUIGppbnQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3Nvcl9jb21wcmVzc19fXzNJSUlJSUlJXzNCSUlJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamludEFycmF5LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGNvbXByZXNzRnJvbVlVVgotICogU2lnbmF0dXJlOiAoW1tCW0lJW0lJSVtCSUkpSQotICovCi1KTklFWFBPUlQgamludCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yX2NvbXByZXNzRnJvbVlVVl9fXzNfM0JfM0lJXzNJSUlfM0JJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpvYmplY3RBcnJheSwgamludEFycmF5LCBqaW50LCBqaW50QXJyYXksIGppbnQsIGppbnQsIGpieXRlQXJyYXksIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkNvbXByZXNzb3IKLSAqIE1ldGhvZDogICAgZW5jb2RlWVVWCi0gKiBTaWduYXR1cmU6IChbQklJSUlbQklJKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3Nvcl9lbmNvZGVZVVZfX18zQklJSUlfM0JJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpieXRlQXJyYXksIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGpieXRlQXJyYXksIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkNvbXByZXNzb3IKLSAqIE1ldGhvZDogICAgZW5jb2RlWVVWCi0gKiBTaWduYXR1cmU6IChbQklJSUlJSVtbQltJW0lJSSlWCi0gKi8KLUpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkNvbXByZXNzb3JfZW5jb2RlWVVWX19fM0JJSUlJSUlfM18zQl8zSV8zSUlJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamJ5dGVBcnJheSwgamludCwgamludCwgamludCwgamludCwgamludCwgamludCwgam9iamVjdEFycmF5LCBqaW50QXJyYXksIGppbnRBcnJheSwgamludCwgamludCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKQ29tcHJlc3NvcgotICogTWV0aG9kOiAgICBlbmNvZGVZVVYKLSAqIFNpZ25hdHVyZTogKFtJSUlJSVtCSUkpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yX2VuY29kZVlVVl9fXzNJSUlJSV8zQklJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamludEFycmF5LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGVuY29kZVlVVgotICogU2lnbmF0dXJlOiAoW0lJSUlJSUlbW0JbSVtJSUkpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpDb21wcmVzc29yX2VuY29kZVlVVl9fXzNJSUlJSUlJXzNfM0JfM0lfM0lJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGppbnRBcnJheSwgamludCwgamludCwgamludCwgamludCwgamludCwgamludCwgam9iamVjdEFycmF5LCBqaW50QXJyYXksIGppbnRBcnJheSwgamludCwgamludCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2phdmEvb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3IuaCBiL2phdmEvb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3IuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ1OGU3My4uMDAwMDAwMAotLS0gYS9qYXZhL29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yLmgKKysrIC9kZXYvbnVsbApAQCAtMSwxMDEgKzAsMCBAQAotLyogRE8gTk9UIEVESVQgVEhJUyBGSUxFIC0gaXQgaXMgbWFjaGluZSBnZW5lcmF0ZWQgKi8KLSNpbmNsdWRlIDxqbmkuaD4KLS8qIEhlYWRlciBmb3IgY2xhc3Mgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3IgKi8KLQotI2lmbmRlZiBfSW5jbHVkZWRfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3IKLSNkZWZpbmUgX0luY2x1ZGVkX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yCi0jaWZkZWYgX19jcGx1c3BsdXMKLWV4dGVybiAiQyIgewotI2VuZGlmCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBpbml0Ci0gKiBTaWduYXR1cmU6ICgpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3JfaW5pdAotICAoSk5JRW52ICosIGpvYmplY3QpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZXN0cm95Ci0gKiBTaWduYXR1cmU6ICgpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3JfZGVzdHJveQotICAoSk5JRW52ICosIGpvYmplY3QpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvbXByZXNzSGVhZGVyCi0gKiBTaWduYXR1cmU6IChbQkkpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3JfZGVjb21wcmVzc0hlYWRlcgotICAoSk5JRW52ICosIGpvYmplY3QsIGpieXRlQXJyYXksIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbQklbQklJSUlJKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yX2RlY29tcHJlc3NfX18zQklfM0JJSUlJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpieXRlQXJyYXksIGppbnQsIGpieXRlQXJyYXksIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbQklbQklJSUlJSUkpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fXzNCSV8zQklJSUlJSUkKLSAgKEpOSUVudiAqLCBqb2JqZWN0LCBqYnl0ZUFycmF5LCBqaW50LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqaW50LCBqaW50KTsKLQotLyoKLSAqIENsYXNzOiAgICAgb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3IKLSAqIE1ldGhvZDogICAgZGVjb21wcmVzcwotICogU2lnbmF0dXJlOiAoW0JJW0lJSUlJSSlWCi0gKi8KLUpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzX19fM0JJXzNJSUlJSUkKLSAgKEpOSUVudiAqLCBqb2JqZWN0LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50QXJyYXksIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvbXByZXNzCi0gKiBTaWduYXR1cmU6IChbQklbSUlJSUlJSUkpVgotICovCi1KTklFWFBPUlQgdm9pZCBKTklDQUxMIEphdmFfb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpEZWNvbXByZXNzb3JfZGVjb21wcmVzc19fXzNCSV8zSUlJSUlJSUkKLSAgKEpOSUVudiAqLCBqb2JqZWN0LCBqYnl0ZUFycmF5LCBqaW50LCBqaW50QXJyYXksIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvbXByZXNzVG9ZVVYKLSAqIFNpZ25hdHVyZTogKFtCSVtCSSlWCi0gKi8KLUpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzVG9ZVVZfX18zQklfM0JJCi0gIChKTklFbnYgKiwgam9iamVjdCwgamJ5dGVBcnJheSwgamludCwgamJ5dGVBcnJheSwgamludCk7Ci0KLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yCi0gKiBNZXRob2Q6ICAgIGRlY29tcHJlc3NUb1lVVgotICogU2lnbmF0dXJlOiAoW0JJW1tCW0lJW0lJSSlWCi0gKi8KLUpOSUVYUE9SVCB2b2lkIEpOSUNBTEwgSmF2YV9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3Nvcl9kZWNvbXByZXNzVG9ZVVZfX18zQklfM18zQl8zSUlfM0lJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpieXRlQXJyYXksIGppbnQsIGpvYmplY3RBcnJheSwgamludEFycmF5LCBqaW50LCBqaW50QXJyYXksIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvZGVZVVYKLSAqIFNpZ25hdHVyZTogKFtbQltJW0lJW0JJSUlJSUlJKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yX2RlY29kZVlVVl9fXzNfM0JfM0lfM0lJXzNCSUlJSUlJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpvYmplY3RBcnJheSwgamludEFycmF5LCBqaW50QXJyYXksIGppbnQsIGpieXRlQXJyYXksIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQsIGppbnQpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USkRlY29tcHJlc3NvcgotICogTWV0aG9kOiAgICBkZWNvZGVZVVYKLSAqIFNpZ25hdHVyZTogKFtbQltJW0lJW0lJSUlJSUlJKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKRGVjb21wcmVzc29yX2RlY29kZVlVVl9fXzNfM0JfM0lfM0lJXzNJSUlJSUlJSQotICAoSk5JRW52ICosIGpvYmplY3QsIGpvYmplY3RBcnJheSwgamludEFycmF5LCBqaW50QXJyYXksIGppbnQsIGppbnRBcnJheSwgamludCwgamludCwgamludCwgamludCwgamludCwgamludCwgamludCk7Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotfQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL2phdmEvb3JnX2xpYmpwZWd0dXJib190dXJib2pwZWdfVEpUcmFuc2Zvcm1lci5oIGIvamF2YS9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USlRyYW5zZm9ybWVyLmgKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE5ZGFkNGQuLjAwMDAwMDAKLS0tIGEvamF2YS9vcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USlRyYW5zZm9ybWVyLmgKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi0vKiBETyBOT1QgRURJVCBUSElTIEZJTEUgLSBpdCBpcyBtYWNoaW5lIGdlbmVyYXRlZCAqLwotI2luY2x1ZGUgPGpuaS5oPgotLyogSGVhZGVyIGZvciBjbGFzcyBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USlRyYW5zZm9ybWVyICovCi0KLSNpZm5kZWYgX0luY2x1ZGVkX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXIKLSNkZWZpbmUgX0luY2x1ZGVkX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXIKLSNpZmRlZiBfX2NwbHVzcGx1cwotZXh0ZXJuICJDIiB7Ci0jZW5kaWYKLS8qCi0gKiBDbGFzczogICAgIG9yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXIKLSAqIE1ldGhvZDogICAgaW5pdAotICogU2lnbmF0dXJlOiAoKVYKLSAqLwotSk5JRVhQT1JUIHZvaWQgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXJfaW5pdAotICAoSk5JRW52ICosIGpvYmplY3QpOwotCi0vKgotICogQ2xhc3M6ICAgICBvcmdfbGlianBlZ3R1cmJvX3R1cmJvanBlZ19USlRyYW5zZm9ybWVyCi0gKiBNZXRob2Q6ICAgIHRyYW5zZm9ybQotICogU2lnbmF0dXJlOiAoW0JJW1tCW0xvcmcvbGlianBlZ3R1cmJvL3R1cmJvanBlZy9USlRyYW5zZm9ybTtJKVtJCi0gKi8KLUpOSUVYUE9SVCBqaW50QXJyYXkgSk5JQ0FMTCBKYXZhX29yZ19saWJqcGVndHVyYm9fdHVyYm9qcGVnX1RKVHJhbnNmb3JtZXJfdHJhbnNmb3JtCi0gIChKTklFbnYgKiwgam9iamVjdCwgamJ5dGVBcnJheSwgamludCwgam9iamVjdEFycmF5LCBqb2JqZWN0QXJyYXksIGppbnQpOwotCi0jaWZkZWYgX19jcGx1c3BsdXMKLX0KLSNlbmRpZgotI2VuZGlmCmRpZmYgLS1naXQgYS9tZDUvQ01ha2VMaXN0cy50eHQgYi9tZDUvQ01ha2VMaXN0cy50eHQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyNmVmMDguLjAwMDAwMDAKLS0tIGEvbWQ1L0NNYWtlTGlzdHMudHh0CisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotYWRkX2V4ZWN1dGFibGUobWQ1Y21wIG1kNWNtcC5jIG1kNS5jIG1kNWhsLmMpCmRpZmYgLS1naXQgYS9tZDUvTWFrZWZpbGUuYW0gYi9tZDUvTWFrZWZpbGUuYW0KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzNmYwMTkuLjAwMDAwMDAKLS0tIGEvbWQ1L01ha2VmaWxlLmFtCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1ub2luc3RfUFJPR1JBTVMgPSBtZDVjbXAKLQotbWQ1Y21wX1NPVVJDRVMgPSBtZDVjbXAuYyBtZDUuYyBtZDVobC5jIG1kNS5oCi1tZDVjbXBfQ0ZMQUdTID0gLUkkKHNyY2RpcikKZGlmZiAtLWdpdCBhL21kNS9tZDUuYyBiL21kNS9tZDUuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg3ZjRiMC4uMDAwMDAwMAotLS0gYS9tZDUvbWQ1LmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMzEgKzAsMCBAQAotLyoKLSAqIE1ENUMuQyAtIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuLCBNRDUgbWVzc2FnZS1kaWdlc3QgYWxnb3JpdGhtCi0gKgotICogQ29weXJpZ2h0IChDKSAxOTkxLTIsIFJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIENyZWF0ZWQgMTk5MS4gQWxsCi0gKiByaWdodHMgcmVzZXJ2ZWQuCi0gKgotICogTGljZW5zZSB0byBjb3B5IGFuZCB1c2UgdGhpcyBzb2Z0d2FyZSBpcyBncmFudGVkIHByb3ZpZGVkIHRoYXQgaXQKLSAqIGlzIGlkZW50aWZpZWQgYXMgdGhlICJSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZS1EaWdlc3QKLSAqIEFsZ29yaXRobSIgaW4gYWxsIG1hdGVyaWFsIG1lbnRpb25pbmcgb3IgcmVmZXJlbmNpbmcgdGhpcyBzb2Z0d2FyZQotICogb3IgdGhpcyBmdW5jdGlvbi4KLSAqCi0gKiBMaWNlbnNlIGlzIGFsc28gZ3JhbnRlZCB0byBtYWtlIGFuZCB1c2UgZGVyaXZhdGl2ZSB3b3JrcyBwcm92aWRlZAotICogdGhhdCBzdWNoIHdvcmtzIGFyZSBpZGVudGlmaWVkIGFzICJkZXJpdmVkIGZyb20gdGhlIFJTQSBEYXRhCi0gKiBTZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtIiBpbiBhbGwgbWF0ZXJpYWwKLSAqIG1lbnRpb25pbmcgb3IgcmVmZXJlbmNpbmcgdGhlIGRlcml2ZWQgd29yay4KLSAqCi0gKiBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBtYWtlcyBubyByZXByZXNlbnRhdGlvbnMgY29uY2VybmluZyBlaXRoZXIKLSAqIHRoZSBtZXJjaGFudGFiaWxpdHkgb2YgdGhpcyBzb2Z0d2FyZSBvciB0aGUgc3VpdGFiaWxpdHkgb2YgdGhpcwotICogc29mdHdhcmUgZm9yIGFueSBwYXJ0aWN1bGFyIHB1cnBvc2UuIEl0IGlzIHByb3ZpZGVkICJhcyBpcyIKLSAqIHdpdGhvdXQgZXhwcmVzcyBvciBpbXBsaWVkIHdhcnJhbnR5IG9mIGFueSBraW5kLgotICoKLSAqIFRoZXNlIG5vdGljZXMgbXVzdCBiZSByZXRhaW5lZCBpbiBhbnkgY29waWVzIG9mIGFueSBwYXJ0IG9mIHRoaXMKLSAqIGRvY3VtZW50YXRpb24gYW5kL29yIHNvZnR3YXJlLgotICoKLSAqIFRoaXMgY29kZSBpcyB0aGUgc2FtZSBhcyB0aGUgY29kZSBwdWJsaXNoZWQgYnkgUlNBIEluYy4gIEl0IGhhcyBiZWVuCi0gKiBlZGl0ZWQgZm9yIGNsYXJpdHkgYW5kIHN0eWxlIG9ubHkuCi0gKi8KLQotI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotI2luY2x1ZGUgPHN0cmluZy5oPgotCi0jaW5jbHVkZSAiLi9tZDUuaCIKLQotc3RhdGljIHZvaWQgTUQ1VHJhbnNmb3JtKHVuc2lnbmVkIGludCBbNF0sIGNvbnN0IHVuc2lnbmVkIGNoYXIgWzY0XSk7Ci0KLSNpZiAoQllURV9PUkRFUiA9PSBMSVRUTEVfRU5ESUFOKQotI2RlZmluZSBFbmNvZGUgbWVtY3B5Ci0jZGVmaW5lIERlY29kZSBtZW1jcHkKLSNlbHNlCi0KLS8qCi0gKiBPUyBYIGRvZXNuJ3QgaGF2ZSBsZTMydG9oKCkgb3IgaHRvbGUzMigpCi0gKi8KLSNpZmRlZiBfX0FQUExFX18KLSNpbmNsdWRlIDxsaWJrZXJuL09TQnl0ZU9yZGVyLmg+Ci0jZGVmaW5lIGxlMzJ0b2goeCkgT1NTd2FwTGl0dGxlVG9Ib3N0SW50MzIoeCkKLSNkZWZpbmUgaHRvbGUzMih4KSBPU1N3YXBIb3N0VG9MaXR0bGVJbnQzMih4KQotI2VuZGlmCi0KLS8qCi0gKiBFbmNvZGVzIGlucHV0ICh1bnNpZ25lZCBpbnQpIGludG8gb3V0cHV0ICh1bnNpZ25lZCBjaGFyKS4gQXNzdW1lcyBsZW4gaXMKLSAqIGEgbXVsdGlwbGUgb2YgNC4KLSAqLwotCi1zdGF0aWMgdm9pZAotRW5jb2RlICh1bnNpZ25lZCBjaGFyICpvdXRwdXQsIHVuc2lnbmVkIGludCAqaW5wdXQsIHVuc2lnbmVkIGludCBsZW4pCi17Ci0JdW5zaWduZWQgaW50IGk7Ci0JdW5zaWduZWQgaW50ICpvcCA9ICh1bnNpZ25lZCBpbnQgKilvdXRwdXQ7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbGVuIC8gNDsgaSsrKQotCQlvcFtpXSA9IGh0b2xlMzIoaW5wdXRbaV0pOwotfQotCi0vKgotICogRGVjb2RlcyBpbnB1dCAodW5zaWduZWQgY2hhcikgaW50byBvdXRwdXQgKHVuc2lnbmVkIGludCkuIEFzc3VtZXMgbGVuIGlzCi0gKiBhIG11bHRpcGxlIG9mIDQuCi0gKi8KLQotc3RhdGljIHZvaWQKLURlY29kZSAodW5zaWduZWQgaW50ICpvdXRwdXQsIGNvbnN0IHVuc2lnbmVkIGNoYXIgKmlucHV0LCB1bnNpZ25lZCBpbnQgbGVuKQotewotCXVuc2lnbmVkIGludCBpOwotCWNvbnN0IHVuc2lnbmVkIGludCAqaXAgPSAoY29uc3QgdW5zaWduZWQgaW50ICopaW5wdXQ7Ci0KLQlmb3IgKGkgPSAwOyBpIDwgbGVuIC8gNDsgaSsrKQotCQlvdXRwdXRbaV0gPSBsZTMydG9oKGlwW2ldKTsKLX0KLSNlbmRpZgotCi1zdGF0aWMgdW5zaWduZWQgY2hhciBQQURESU5HWzY0XSA9IHsKLSAgMHg4MCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwKLSAgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMCwgMAotfTsKLQotLyogRiwgRywgSCBhbmQgSSBhcmUgYmFzaWMgTUQ1IGZ1bmN0aW9ucy4gKi8KLSNkZWZpbmUgRih4LCB5LCB6KSAoKCh4KSAmICh5KSkgfCAoKH54KSAmICh6KSkpCi0jZGVmaW5lIEcoeCwgeSwgeikgKCgoeCkgJiAoeikpIHwgKCh5KSAmICh+eikpKQotI2RlZmluZSBIKHgsIHksIHopICgoeCkgXiAoeSkgXiAoeikpCi0jZGVmaW5lIEkoeCwgeSwgeikgKCh5KSBeICgoeCkgfCAofnopKSkKLQotLyogUk9UQVRFX0xFRlQgcm90YXRlcyB4IGxlZnQgbiBiaXRzLiAqLwotI2RlZmluZSBST1RBVEVfTEVGVCh4LCBuKSAoKCh4KSA8PCAobikpIHwgKCh4KSA+PiAoMzItKG4pKSkpCi0KLS8qCi0gKiBGRiwgR0csIEhILCBhbmQgSUkgdHJhbnNmb3JtYXRpb25zIGZvciByb3VuZHMgMSwgMiwgMywgYW5kIDQuCi0gKiBSb3RhdGlvbiBpcyBzZXBhcmF0ZSBmcm9tIGFkZGl0aW9uIHRvIHByZXZlbnQgcmVjb21wdXRhdGlvbi4KLSAqLwotI2RlZmluZSBGRihhLCBiLCBjLCBkLCB4LCBzLCBhYykgeyBcCi0JKGEpICs9IEYgKChiKSwgKGMpLCAoZCkpICsgKHgpICsgKHVuc2lnbmVkIGludCkoYWMpOyBcCi0JKGEpID0gUk9UQVRFX0xFRlQgKChhKSwgKHMpKTsgXAotCShhKSArPSAoYik7IFwKLQl9Ci0jZGVmaW5lIEdHKGEsIGIsIGMsIGQsIHgsIHMsIGFjKSB7IFwKLQkoYSkgKz0gRyAoKGIpLCAoYyksIChkKSkgKyAoeCkgKyAodW5zaWduZWQgaW50KShhYyk7IFwKLQkoYSkgPSBST1RBVEVfTEVGVCAoKGEpLCAocykpOyBcCi0JKGEpICs9IChiKTsgXAotCX0KLSNkZWZpbmUgSEgoYSwgYiwgYywgZCwgeCwgcywgYWMpIHsgXAotCShhKSArPSBIICgoYiksIChjKSwgKGQpKSArICh4KSArICh1bnNpZ25lZCBpbnQpKGFjKTsgXAotCShhKSA9IFJPVEFURV9MRUZUICgoYSksIChzKSk7IFwKLQkoYSkgKz0gKGIpOyBcCi0JfQotI2RlZmluZSBJSShhLCBiLCBjLCBkLCB4LCBzLCBhYykgeyBcCi0JKGEpICs9IEkgKChiKSwgKGMpLCAoZCkpICsgKHgpICsgKHVuc2lnbmVkIGludCkoYWMpOyBcCi0JKGEpID0gUk9UQVRFX0xFRlQgKChhKSwgKHMpKTsgXAotCShhKSArPSAoYik7IFwKLQl9Ci0KLS8qIE1ENSBpbml0aWFsaXphdGlvbi4gQmVnaW5zIGFuIE1ENSBvcGVyYXRpb24sIHdyaXRpbmcgYSBuZXcgY29udGV4dC4gKi8KLQotdm9pZAotTUQ1SW5pdCAoY29udGV4dCkKLQlNRDVfQ1RYICpjb250ZXh0OwotewotCi0JY29udGV4dC0+Y291bnRbMF0gPSBjb250ZXh0LT5jb3VudFsxXSA9IDA7Ci0KLQkvKiBMb2FkIG1hZ2ljIGluaXRpYWxpemF0aW9uIGNvbnN0YW50cy4gICovCi0JY29udGV4dC0+c3RhdGVbMF0gPSAweDY3NDUyMzAxOwotCWNvbnRleHQtPnN0YXRlWzFdID0gMHhlZmNkYWI4OTsKLQljb250ZXh0LT5zdGF0ZVsyXSA9IDB4OThiYWRjZmU7Ci0JY29udGV4dC0+c3RhdGVbM10gPSAweDEwMzI1NDc2OwotfQotCi0vKgotICogTUQ1IGJsb2NrIHVwZGF0ZSBvcGVyYXRpb24uIENvbnRpbnVlcyBhbiBNRDUgbWVzc2FnZS1kaWdlc3QKLSAqIG9wZXJhdGlvbiwgcHJvY2Vzc2luZyBhbm90aGVyIG1lc3NhZ2UgYmxvY2ssIGFuZCB1cGRhdGluZyB0aGUKLSAqIGNvbnRleHQuCi0gKi8KLQotdm9pZAotTUQ1VXBkYXRlIChjb250ZXh0LCBpbiwgaW5wdXRMZW4pCi0JTUQ1X0NUWCAqY29udGV4dDsKLQljb25zdCB2b2lkICppbjsKLQl1bnNpZ25lZCBpbnQgaW5wdXRMZW47Ci17Ci0JdW5zaWduZWQgaW50IGksIGlkeCwgcGFydExlbjsKLQljb25zdCB1bnNpZ25lZCBjaGFyICppbnB1dCA9IGluOwotCi0JLyogQ29tcHV0ZSBudW1iZXIgb2YgYnl0ZXMgbW9kIDY0ICovCi0JaWR4ID0gKHVuc2lnbmVkIGludCkoKGNvbnRleHQtPmNvdW50WzBdID4+IDMpICYgMHgzRik7Ci0KLQkvKiBVcGRhdGUgbnVtYmVyIG9mIGJpdHMgKi8KLQlpZiAoKGNvbnRleHQtPmNvdW50WzBdICs9ICgodW5zaWduZWQgaW50KWlucHV0TGVuIDw8IDMpKQotCSAgICA8ICgodW5zaWduZWQgaW50KWlucHV0TGVuIDw8IDMpKQotCQljb250ZXh0LT5jb3VudFsxXSsrOwotCWNvbnRleHQtPmNvdW50WzFdICs9ICgodW5zaWduZWQgaW50KWlucHV0TGVuID4+IDI5KTsKLQotCXBhcnRMZW4gPSA2NCAtIGlkeDsKLQotCS8qIFRyYW5zZm9ybSBhcyBtYW55IHRpbWVzIGFzIHBvc3NpYmxlLiAqLwotCWlmIChpbnB1dExlbiA+PSBwYXJ0TGVuKSB7Ci0JCW1lbWNweSgodm9pZCAqKSZjb250ZXh0LT5idWZmZXJbaWR4XSwgKGNvbnN0IHZvaWQgKilpbnB1dCwKLQkJICAgIHBhcnRMZW4pOwotCQlNRDVUcmFuc2Zvcm0gKGNvbnRleHQtPnN0YXRlLCBjb250ZXh0LT5idWZmZXIpOwotCi0JCWZvciAoaSA9IHBhcnRMZW47IGkgKyA2MyA8IGlucHV0TGVuOyBpICs9IDY0KQotCQkJTUQ1VHJhbnNmb3JtIChjb250ZXh0LT5zdGF0ZSwgJmlucHV0W2ldKTsKLQotCQlpZHggPSAwOwotCX0KLQllbHNlCi0JCWkgPSAwOwotCi0JLyogQnVmZmVyIHJlbWFpbmluZyBpbnB1dCAqLwotCW1lbWNweSAoKHZvaWQgKikmY29udGV4dC0+YnVmZmVyW2lkeF0sIChjb25zdCB2b2lkICopJmlucHV0W2ldLAotCSAgICBpbnB1dExlbi1pKTsKLX0KLQotLyoKLSAqIE1ENSBwYWRkaW5nLiBBZGRzIHBhZGRpbmcgZm9sbG93ZWQgYnkgb3JpZ2luYWwgbGVuZ3RoLgotICovCi0KLXZvaWQKLU1ENVBhZCAoY29udGV4dCkKLQlNRDVfQ1RYICpjb250ZXh0OwotewotCXVuc2lnbmVkIGNoYXIgYml0c1s4XTsKLQl1bnNpZ25lZCBpbnQgaWR4LCBwYWRMZW47Ci0KLQkvKiBTYXZlIG51bWJlciBvZiBiaXRzICovCi0JRW5jb2RlIChiaXRzLCBjb250ZXh0LT5jb3VudCwgOCk7Ci0KLQkvKiBQYWQgb3V0IHRvIDU2IG1vZCA2NC4gKi8KLQlpZHggPSAodW5zaWduZWQgaW50KSgoY29udGV4dC0+Y291bnRbMF0gPj4gMykgJiAweDNmKTsKLQlwYWRMZW4gPSAoaWR4IDwgNTYpID8gKDU2IC0gaWR4KSA6ICgxMjAgLSBpZHgpOwotCU1ENVVwZGF0ZSAoY29udGV4dCwgUEFERElORywgcGFkTGVuKTsKLQotCS8qIEFwcGVuZCBsZW5ndGggKGJlZm9yZSBwYWRkaW5nKSAqLwotCU1ENVVwZGF0ZSAoY29udGV4dCwgYml0cywgOCk7Ci19Ci0KLS8qCi0gKiBNRDUgZmluYWxpemF0aW9uLiBFbmRzIGFuIE1ENSBtZXNzYWdlLWRpZ2VzdCBvcGVyYXRpb24sIHdyaXRpbmcgdGhlCi0gKiB0aGUgbWVzc2FnZSBkaWdlc3QgYW5kIHplcm9pemluZyB0aGUgY29udGV4dC4KLSAqLwotCi12b2lkCi1NRDVGaW5hbCAoZGlnZXN0LCBjb250ZXh0KQotCXVuc2lnbmVkIGNoYXIgZGlnZXN0WzE2XTsKLQlNRDVfQ1RYICpjb250ZXh0OwotewotCS8qIERvIHBhZGRpbmcuICovCi0JTUQ1UGFkIChjb250ZXh0KTsKLQotCS8qIFN0b3JlIHN0YXRlIGluIGRpZ2VzdCAqLwotCUVuY29kZSAoZGlnZXN0LCBjb250ZXh0LT5zdGF0ZSwgMTYpOwotCi0JLyogWmVyb2l6ZSBzZW5zaXRpdmUgaW5mb3JtYXRpb24uICovCi0JbWVtc2V0ICgodm9pZCAqKWNvbnRleHQsIDAsIHNpemVvZiAoKmNvbnRleHQpKTsKLX0KLQotLyogTUQ1IGJhc2ljIHRyYW5zZm9ybWF0aW9uLiBUcmFuc2Zvcm1zIHN0YXRlIGJhc2VkIG9uIGJsb2NrLiAqLwotCi1zdGF0aWMgdm9pZAotTUQ1VHJhbnNmb3JtIChzdGF0ZSwgYmxvY2spCi0JdW5zaWduZWQgaW50IHN0YXRlWzRdOwotCWNvbnN0IHVuc2lnbmVkIGNoYXIgYmxvY2tbNjRdOwotewotCXVuc2lnbmVkIGludCBhID0gc3RhdGVbMF0sIGIgPSBzdGF0ZVsxXSwgYyA9IHN0YXRlWzJdLCBkID0gc3RhdGVbM10sIHhbMTZdOwotCi0JRGVjb2RlICh4LCBibG9jaywgNjQpOwotCi0JLyogUm91bmQgMSAqLwotI2RlZmluZSBTMTEgNwotI2RlZmluZSBTMTIgMTIKLSNkZWZpbmUgUzEzIDE3Ci0jZGVmaW5lIFMxNCAyMgotCUZGIChhLCBiLCBjLCBkLCB4WyAwXSwgUzExLCAweGQ3NmFhNDc4KTsgLyogMSAqLwotCUZGIChkLCBhLCBiLCBjLCB4WyAxXSwgUzEyLCAweGU4YzdiNzU2KTsgLyogMiAqLwotCUZGIChjLCBkLCBhLCBiLCB4WyAyXSwgUzEzLCAweDI0MjA3MGRiKTsgLyogMyAqLwotCUZGIChiLCBjLCBkLCBhLCB4WyAzXSwgUzE0LCAweGMxYmRjZWVlKTsgLyogNCAqLwotCUZGIChhLCBiLCBjLCBkLCB4WyA0XSwgUzExLCAweGY1N2MwZmFmKTsgLyogNSAqLwotCUZGIChkLCBhLCBiLCBjLCB4WyA1XSwgUzEyLCAweDQ3ODdjNjJhKTsgLyogNiAqLwotCUZGIChjLCBkLCBhLCBiLCB4WyA2XSwgUzEzLCAweGE4MzA0NjEzKTsgLyogNyAqLwotCUZGIChiLCBjLCBkLCBhLCB4WyA3XSwgUzE0LCAweGZkNDY5NTAxKTsgLyogOCAqLwotCUZGIChhLCBiLCBjLCBkLCB4WyA4XSwgUzExLCAweDY5ODA5OGQ4KTsgLyogOSAqLwotCUZGIChkLCBhLCBiLCBjLCB4WyA5XSwgUzEyLCAweDhiNDRmN2FmKTsgLyogMTAgKi8KLQlGRiAoYywgZCwgYSwgYiwgeFsxMF0sIFMxMywgMHhmZmZmNWJiMSk7IC8qIDExICovCi0JRkYgKGIsIGMsIGQsIGEsIHhbMTFdLCBTMTQsIDB4ODk1Y2Q3YmUpOyAvKiAxMiAqLwotCUZGIChhLCBiLCBjLCBkLCB4WzEyXSwgUzExLCAweDZiOTAxMTIyKTsgLyogMTMgKi8KLQlGRiAoZCwgYSwgYiwgYywgeFsxM10sIFMxMiwgMHhmZDk4NzE5Myk7IC8qIDE0ICovCi0JRkYgKGMsIGQsIGEsIGIsIHhbMTRdLCBTMTMsIDB4YTY3OTQzOGUpOyAvKiAxNSAqLwotCUZGIChiLCBjLCBkLCBhLCB4WzE1XSwgUzE0LCAweDQ5YjQwODIxKTsgLyogMTYgKi8KLQotCS8qIFJvdW5kIDIgKi8KLSNkZWZpbmUgUzIxIDUKLSNkZWZpbmUgUzIyIDkKLSNkZWZpbmUgUzIzIDE0Ci0jZGVmaW5lIFMyNCAyMAotCUdHIChhLCBiLCBjLCBkLCB4WyAxXSwgUzIxLCAweGY2MWUyNTYyKTsgLyogMTcgKi8KLQlHRyAoZCwgYSwgYiwgYywgeFsgNl0sIFMyMiwgMHhjMDQwYjM0MCk7IC8qIDE4ICovCi0JR0cgKGMsIGQsIGEsIGIsIHhbMTFdLCBTMjMsIDB4MjY1ZTVhNTEpOyAvKiAxOSAqLwotCUdHIChiLCBjLCBkLCBhLCB4WyAwXSwgUzI0LCAweGU5YjZjN2FhKTsgLyogMjAgKi8KLQlHRyAoYSwgYiwgYywgZCwgeFsgNV0sIFMyMSwgMHhkNjJmMTA1ZCk7IC8qIDIxICovCi0JR0cgKGQsIGEsIGIsIGMsIHhbMTBdLCBTMjIsICAweDI0NDE0NTMpOyAvKiAyMiAqLwotCUdHIChjLCBkLCBhLCBiLCB4WzE1XSwgUzIzLCAweGQ4YTFlNjgxKTsgLyogMjMgKi8KLQlHRyAoYiwgYywgZCwgYSwgeFsgNF0sIFMyNCwgMHhlN2QzZmJjOCk7IC8qIDI0ICovCi0JR0cgKGEsIGIsIGMsIGQsIHhbIDldLCBTMjEsIDB4MjFlMWNkZTYpOyAvKiAyNSAqLwotCUdHIChkLCBhLCBiLCBjLCB4WzE0XSwgUzIyLCAweGMzMzcwN2Q2KTsgLyogMjYgKi8KLQlHRyAoYywgZCwgYSwgYiwgeFsgM10sIFMyMywgMHhmNGQ1MGQ4Nyk7IC8qIDI3ICovCi0JR0cgKGIsIGMsIGQsIGEsIHhbIDhdLCBTMjQsIDB4NDU1YTE0ZWQpOyAvKiAyOCAqLwotCUdHIChhLCBiLCBjLCBkLCB4WzEzXSwgUzIxLCAweGE5ZTNlOTA1KTsgLyogMjkgKi8KLQlHRyAoZCwgYSwgYiwgYywgeFsgMl0sIFMyMiwgMHhmY2VmYTNmOCk7IC8qIDMwICovCi0JR0cgKGMsIGQsIGEsIGIsIHhbIDddLCBTMjMsIDB4Njc2ZjAyZDkpOyAvKiAzMSAqLwotCUdHIChiLCBjLCBkLCBhLCB4WzEyXSwgUzI0LCAweDhkMmE0YzhhKTsgLyogMzIgKi8KLQotCS8qIFJvdW5kIDMgKi8KLSNkZWZpbmUgUzMxIDQKLSNkZWZpbmUgUzMyIDExCi0jZGVmaW5lIFMzMyAxNgotI2RlZmluZSBTMzQgMjMKLQlISCAoYSwgYiwgYywgZCwgeFsgNV0sIFMzMSwgMHhmZmZhMzk0Mik7IC8qIDMzICovCi0JSEggKGQsIGEsIGIsIGMsIHhbIDhdLCBTMzIsIDB4ODc3MWY2ODEpOyAvKiAzNCAqLwotCUhIIChjLCBkLCBhLCBiLCB4WzExXSwgUzMzLCAweDZkOWQ2MTIyKTsgLyogMzUgKi8KLQlISCAoYiwgYywgZCwgYSwgeFsxNF0sIFMzNCwgMHhmZGU1MzgwYyk7IC8qIDM2ICovCi0JSEggKGEsIGIsIGMsIGQsIHhbIDFdLCBTMzEsIDB4YTRiZWVhNDQpOyAvKiAzNyAqLwotCUhIIChkLCBhLCBiLCBjLCB4WyA0XSwgUzMyLCAweDRiZGVjZmE5KTsgLyogMzggKi8KLQlISCAoYywgZCwgYSwgYiwgeFsgN10sIFMzMywgMHhmNmJiNGI2MCk7IC8qIDM5ICovCi0JSEggKGIsIGMsIGQsIGEsIHhbMTBdLCBTMzQsIDB4YmViZmJjNzApOyAvKiA0MCAqLwotCUhIIChhLCBiLCBjLCBkLCB4WzEzXSwgUzMxLCAweDI4OWI3ZWM2KTsgLyogNDEgKi8KLQlISCAoZCwgYSwgYiwgYywgeFsgMF0sIFMzMiwgMHhlYWExMjdmYSk7IC8qIDQyICovCi0JSEggKGMsIGQsIGEsIGIsIHhbIDNdLCBTMzMsIDB4ZDRlZjMwODUpOyAvKiA0MyAqLwotCUhIIChiLCBjLCBkLCBhLCB4WyA2XSwgUzM0LCAgMHg0ODgxZDA1KTsgLyogNDQgKi8KLQlISCAoYSwgYiwgYywgZCwgeFsgOV0sIFMzMSwgMHhkOWQ0ZDAzOSk7IC8qIDQ1ICovCi0JSEggKGQsIGEsIGIsIGMsIHhbMTJdLCBTMzIsIDB4ZTZkYjk5ZTUpOyAvKiA0NiAqLwotCUhIIChjLCBkLCBhLCBiLCB4WzE1XSwgUzMzLCAweDFmYTI3Y2Y4KTsgLyogNDcgKi8KLQlISCAoYiwgYywgZCwgYSwgeFsgMl0sIFMzNCwgMHhjNGFjNTY2NSk7IC8qIDQ4ICovCi0KLQkvKiBSb3VuZCA0ICovCi0jZGVmaW5lIFM0MSA2Ci0jZGVmaW5lIFM0MiAxMAotI2RlZmluZSBTNDMgMTUKLSNkZWZpbmUgUzQ0IDIxCi0JSUkgKGEsIGIsIGMsIGQsIHhbIDBdLCBTNDEsIDB4ZjQyOTIyNDQpOyAvKiA0OSAqLwotCUlJIChkLCBhLCBiLCBjLCB4WyA3XSwgUzQyLCAweDQzMmFmZjk3KTsgLyogNTAgKi8KLQlJSSAoYywgZCwgYSwgYiwgeFsxNF0sIFM0MywgMHhhYjk0MjNhNyk7IC8qIDUxICovCi0JSUkgKGIsIGMsIGQsIGEsIHhbIDVdLCBTNDQsIDB4ZmM5M2EwMzkpOyAvKiA1MiAqLwotCUlJIChhLCBiLCBjLCBkLCB4WzEyXSwgUzQxLCAweDY1NWI1OWMzKTsgLyogNTMgKi8KLQlJSSAoZCwgYSwgYiwgYywgeFsgM10sIFM0MiwgMHg4ZjBjY2M5Mik7IC8qIDU0ICovCi0JSUkgKGMsIGQsIGEsIGIsIHhbMTBdLCBTNDMsIDB4ZmZlZmY0N2QpOyAvKiA1NSAqLwotCUlJIChiLCBjLCBkLCBhLCB4WyAxXSwgUzQ0LCAweDg1ODQ1ZGQxKTsgLyogNTYgKi8KLQlJSSAoYSwgYiwgYywgZCwgeFsgOF0sIFM0MSwgMHg2ZmE4N2U0Zik7IC8qIDU3ICovCi0JSUkgKGQsIGEsIGIsIGMsIHhbMTVdLCBTNDIsIDB4ZmUyY2U2ZTApOyAvKiA1OCAqLwotCUlJIChjLCBkLCBhLCBiLCB4WyA2XSwgUzQzLCAweGEzMDE0MzE0KTsgLyogNTkgKi8KLQlJSSAoYiwgYywgZCwgYSwgeFsxM10sIFM0NCwgMHg0ZTA4MTFhMSk7IC8qIDYwICovCi0JSUkgKGEsIGIsIGMsIGQsIHhbIDRdLCBTNDEsIDB4Zjc1MzdlODIpOyAvKiA2MSAqLwotCUlJIChkLCBhLCBiLCBjLCB4WzExXSwgUzQyLCAweGJkM2FmMjM1KTsgLyogNjIgKi8KLQlJSSAoYywgZCwgYSwgYiwgeFsgMl0sIFM0MywgMHgyYWQ3ZDJiYik7IC8qIDYzICovCi0JSUkgKGIsIGMsIGQsIGEsIHhbIDldLCBTNDQsIDB4ZWI4NmQzOTEpOyAvKiA2NCAqLwotCi0Jc3RhdGVbMF0gKz0gYTsKLQlzdGF0ZVsxXSArPSBiOwotCXN0YXRlWzJdICs9IGM7Ci0Jc3RhdGVbM10gKz0gZDsKLQotCS8qIFplcm9pemUgc2Vuc2l0aXZlIGluZm9ybWF0aW9uLiAqLwotCW1lbXNldCAoKHZvaWQgKil4LCAwLCBzaXplb2YgKHgpKTsKLX0KZGlmZiAtLWdpdCBhL21kNS9tZDUuaCBiL21kNS9tZDUuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTUxZTI1Mi4uMDAwMDAwMAotLS0gYS9tZDUvbWQ1LmgKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0vKiBNRDUuSCAtIGhlYWRlciBmaWxlIGZvciBNRDVDLkMKLSAqICRGcmVlQlNEJAotICovCi0KLS8qLQotIENvcHlyaWdodCAoQykgMTk5MS0yLCBSU0EgRGF0YSBTZWN1cml0eSwgSW5jLiBDcmVhdGVkIDE5OTEuIEFsbAotcmlnaHRzIHJlc2VydmVkLgotCi1MaWNlbnNlIHRvIGNvcHkgYW5kIHVzZSB0aGlzIHNvZnR3YXJlIGlzIGdyYW50ZWQgcHJvdmlkZWQgdGhhdCBpdAotaXMgaWRlbnRpZmllZCBhcyB0aGUgIlJTQSBEYXRhIFNlY3VyaXR5LCBJbmMuIE1ENSBNZXNzYWdlLURpZ2VzdAotQWxnb3JpdGhtIiBpbiBhbGwgbWF0ZXJpYWwgbWVudGlvbmluZyBvciByZWZlcmVuY2luZyB0aGlzIHNvZnR3YXJlCi1vciB0aGlzIGZ1bmN0aW9uLgotCi1MaWNlbnNlIGlzIGFsc28gZ3JhbnRlZCB0byBtYWtlIGFuZCB1c2UgZGVyaXZhdGl2ZSB3b3JrcyBwcm92aWRlZAotdGhhdCBzdWNoIHdvcmtzIGFyZSBpZGVudGlmaWVkIGFzICJkZXJpdmVkIGZyb20gdGhlIFJTQSBEYXRhCi1TZWN1cml0eSwgSW5jLiBNRDUgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtIiBpbiBhbGwgbWF0ZXJpYWwKLW1lbnRpb25pbmcgb3IgcmVmZXJlbmNpbmcgdGhlIGRlcml2ZWQgd29yay4KLQotUlNBIERhdGEgU2VjdXJpdHksIEluYy4gbWFrZXMgbm8gcmVwcmVzZW50YXRpb25zIGNvbmNlcm5pbmcgZWl0aGVyCi10aGUgbWVyY2hhbnRhYmlsaXR5IG9mIHRoaXMgc29mdHdhcmUgb3IgdGhlIHN1aXRhYmlsaXR5IG9mIHRoaXMKLXNvZnR3YXJlIGZvciBhbnkgcGFydGljdWxhciBwdXJwb3NlLiBJdCBpcyBwcm92aWRlZCAiYXMgaXMiCi13aXRob3V0IGV4cHJlc3Mgb3IgaW1wbGllZCB3YXJyYW50eSBvZiBhbnkga2luZC4KLQotVGhlc2Ugbm90aWNlcyBtdXN0IGJlIHJldGFpbmVkIGluIGFueSBjb3BpZXMgb2YgYW55IHBhcnQgb2YgdGhpcwotZG9jdW1lbnRhdGlvbiBhbmQvb3Igc29mdHdhcmUuCi0gKi8KLQotI2lmbmRlZiBfU1lTX01ENV9IXwotI2RlZmluZSBfU1lTX01ENV9IXwotCi0jZGVmaW5lIE1ENV9CTE9DS19MRU5HVEgJCTY0Ci0jZGVmaW5lIE1ENV9ESUdFU1RfTEVOR1RICQkxNgotI2RlZmluZSBNRDVfRElHRVNUX1NUUklOR19MRU5HVEgJKE1ENV9ESUdFU1RfTEVOR1RIICogMiArIDEpCi0KLS8qIE1ENSBjb250ZXh0LiAqLwotdHlwZWRlZiBzdHJ1Y3QgTUQ1Q29udGV4dCB7Ci0gIHVuc2lnbmVkIGludCBzdGF0ZVs0XTsJLyogc3RhdGUgKEFCQ0QpICovCi0gIHVuc2lnbmVkIGludCBjb3VudFsyXTsJLyogbnVtYmVyIG9mIGJpdHMsIG1vZHVsbyAyXjY0IChsc2IgZmlyc3QpICovCi0gIHVuc2lnbmVkIGNoYXIgYnVmZmVyWzY0XTsJLyogaW5wdXQgYnVmZmVyICovCi19IE1ENV9DVFg7Ci0KLXZvaWQgICBNRDVJbml0IChNRDVfQ1RYICopOwotdm9pZCAgIE1ENVVwZGF0ZSAoTUQ1X0NUWCAqLCBjb25zdCB2b2lkICosIHVuc2lnbmVkIGludCk7Ci12b2lkICAgTUQ1RmluYWwgKHVuc2lnbmVkIGNoYXIgWzE2XSwgTUQ1X0NUWCAqKTsKLWNoYXIgKiBNRDVFbmQoTUQ1X0NUWCAqLCBjaGFyICopOwotY2hhciAqIE1ENUZpbGUoY29uc3QgY2hhciAqLCBjaGFyICopOwotY2hhciAqIE1ENUZpbGVDaHVuayhjb25zdCBjaGFyICosIGNoYXIgKiwgb2ZmX3QsIG9mZl90KTsKLWNoYXIgKiBNRDVEYXRhKGNvbnN0IHZvaWQgKiwgdW5zaWduZWQgaW50LCBjaGFyICopOwotI2VuZGlmIC8qIF9TWVNfTUQ1X0hfICovCmRpZmYgLS1naXQgYS9tZDUvbWQ1Y21wLmMgYi9tZDUvbWQ1Y21wLmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmZDYwYmQuLjAwMDAwMDAKLS0tIGEvbWQ1L21kNWNtcC5jCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykyMDEzLCAyMDE2IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSAqCi0gKiAtIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKLSAqICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIC0gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAotICogICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCi0gKiAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICogLSBOZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMKLSAqICAgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcwotICogICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTICJBUyBJUyIsCi0gKiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRQotICogQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUlMgT1IgQ09OVFJJQlVUT1JTIEJFCi0gKiBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0gKiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRgotICogU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7IE9SIEJVU0lORVNTCi0gKiBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotICogQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkKLSAqIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRSBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFCi0gKiBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAqLwotCi0jaW5jbHVkZSA8c3RkaW8uaD4KLSNpbmNsdWRlIDxzdHJpbmcuaD4KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlICIuL21kNS5oIgotI2luY2x1ZGUgIi4uL3RqdXRpbC5oIgotCi1pbnQgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQotewotCWNoYXIgKm1kNXN1bSA9IE5VTEwsIGJ1Zls2NV07Ci0KLQlpZiAoYXJnYyA8IDMpIHsKLQkJZnByaW50ZihzdGRlcnIsICJVU0FHRTogJXMgPGNvcnJlY3QgTUQ1IHN1bT4gPGZpbGU+XG4iLCBhcmd2WzBdKTsKLQkJcmV0dXJuIC0xOwotCX0KLQotCWlmIChzdHJsZW4oYXJndlsxXSkgIT0gMzIpCi0JCWZwcmludGYoc3RkZXJyLCAiV0FSTklORzogTUQ1IGhhc2ggc2l6ZSBpcyB3cm9uZy5cbiIpOwotCi0JbWQ1c3VtID0gTUQ1RmlsZShhcmd2WzJdLCBidWYpOwotCWlmICghbWQ1c3VtKSB7Ci0JCXBlcnJvcigiQ291bGQgbm90IG9idGFpbiBNRDUgc3VtIik7Ci0JCXJldHVybiAtMTsKLQl9Ci0KLQlpZiAoIXN0cmNhc2VjbXAobWQ1c3VtLCBhcmd2WzFdKSkgewotCQlmcHJpbnRmKHN0ZGVyciwgIiVzOiBPS1xuIiwgYXJndlsyXSk7Ci0JCXJldHVybiAwOwotCX0gZWxzZSB7Ci0JCWZwcmludGYoc3RkZXJyLCAiJXM6IEZBSUxFRC4gIENoZWNrc3VtIGlzICVzXG4iLCBhcmd2WzJdLCBtZDVzdW0pOwotCQlyZXR1cm4gLTE7Ci0JfQotfQpkaWZmIC0tZ2l0IGEvbWQ1L21kNWhsLmMgYi9tZDUvbWQ1aGwuYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTgzZWE3Ni4uMDAwMDAwMAotLS0gYS9tZDUvbWQ1aGwuYworKysgL2Rldi9udWxsCkBAIC0xLDExNCArMCwwIEBACi0vKiBtZFhobC5jICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICogIlRIRSBCRUVSLVdBUkUgTElDRU5TRSIgKFJldmlzaW9uIDQyKToKLSAqIDxwaGtARnJlZUJTRC5vcmc+IHdyb3RlIHRoaXMgZmlsZS4gIEFzIGxvbmcgYXMgeW91IHJldGFpbiB0aGlzIG5vdGljZSB5b3UKLSAqIGNhbiBkbyB3aGF0ZXZlciB5b3Ugd2FudCB3aXRoIHRoaXMgc3R1ZmYuIElmIHdlIG1lZXQgc29tZSBkYXksIGFuZCB5b3UgdGhpbmsKLSAqIHRoaXMgc3R1ZmYgaXMgd29ydGggaXQsIHlvdSBjYW4gYnV5IG1lIGEgYmVlciBpbiByZXR1cm4uICAgUG91bC1IZW5uaW5nIEthbXAKLSAqIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAqIGxpYmpwZWctdHVyYm8gTW9kaWZpY2F0aW9uczoKLSAqIENvcHlyaWdodCAoQykgMjAxNiwgRC4gUi4gQ29tbWFuZGVyLgotICogTW9kaWZpY2F0aW9ucyBhcmUgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgb3JpZ2luYWwgY29kZSAoc2VlIGFib3ZlKQotICogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICovCi0KLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgotI2luY2x1ZGUgPGZjbnRsLmg+Ci0jaWZkZWYgX1dJTjMyCi0jaW5jbHVkZSA8aW8uaD4KLSNkZWZpbmUgY2xvc2UgX2Nsb3NlCi0jZGVmaW5lIGZzdGF0IF9mc3RhdAotI2RlZmluZSBsc2VlayBfbHNlZWsKLSNkZWZpbmUgcmVhZCBfcmVhZAotI2RlZmluZSBzdGF0IF9zdGF0Ci0jZWxzZQotI2luY2x1ZGUgPHVuaXN0ZC5oPgotI2VuZGlmCi0KLSNpbmNsdWRlIDxlcnJuby5oPgotI2luY2x1ZGUgPHN0ZGlvLmg+Ci0jaW5jbHVkZSA8c3RkbGliLmg+Ci0KLSNkZWZpbmUgTEVOR1RIIDE2Ci0KLSNpbmNsdWRlICIuL21kNS5oIgotCi1jaGFyICoKLU1ENUVuZChNRDVfQ1RYICpjdHgsIGNoYXIgKmJ1ZikKLXsKLQlpbnQgaTsKLQl1bnNpZ25lZCBjaGFyIGRpZ2VzdFtMRU5HVEhdOwotCXN0YXRpYyBjb25zdCBjaGFyIGhleFtdPSIwMTIzNDU2Nzg5YWJjZGVmIjsKLQotCWlmICghYnVmKQotCQlidWYgPSBtYWxsb2MoMipMRU5HVEggKyAxKTsKLQlpZiAoIWJ1ZikKLQkJcmV0dXJuIDA7Ci0JTUQ1RmluYWwoZGlnZXN0LCBjdHgpOwotCWZvciAoaSA9IDA7IGkgPCBMRU5HVEg7IGkrKykgewotCQlidWZbaStpXSA9IGhleFtkaWdlc3RbaV0gPj4gNF07Ci0JCWJ1ZltpK2krMV0gPSBoZXhbZGlnZXN0W2ldICYgMHgwZl07Ci0JfQotCWJ1ZltpK2ldID0gJ1wwJzsKLQlyZXR1cm4gYnVmOwotfQotCi1jaGFyICoKLU1ENUZpbGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNoYXIgKmJ1ZikKLXsKLQlyZXR1cm4gKE1ENUZpbGVDaHVuayhmaWxlbmFtZSwgYnVmLCAwLCAwKSk7Ci19Ci0KLWNoYXIgKgotTUQ1RmlsZUNodW5rKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjaGFyICpidWYsIG9mZl90IG9mcywgb2ZmX3QgbGVuKQotewotCXVuc2lnbmVkIGNoYXIgYnVmZmVyW0JVRlNJWl07Ci0JTUQ1X0NUWCBjdHg7Ci0Jc3RydWN0IHN0YXQgc3RidWY7Ci0JaW50IGYsIGksIGU7Ci0Jb2ZmX3QgbjsKLQotCU1ENUluaXQoJmN0eCk7Ci0jaWYgX1dJTjMyCi0JZiA9IF9vcGVuKGZpbGVuYW1lLCBPX1JET05MWXxPX0JJTkFSWSk7Ci0jZWxzZQotCWYgPSBvcGVuKGZpbGVuYW1lLCBPX1JET05MWSk7Ci0jZW5kaWYKLQlpZiAoZiA8IDApCi0JCXJldHVybiAwOwotCWlmIChmc3RhdChmLCAmc3RidWYpIDwgMCkKLQkJcmV0dXJuIDA7Ci0JaWYgKG9mcyA+IHN0YnVmLnN0X3NpemUpCi0JCW9mcyA9IHN0YnVmLnN0X3NpemU7Ci0JaWYgKChsZW4gPT0gMCkgfHwgKGxlbiA+IHN0YnVmLnN0X3NpemUgLSBvZnMpKQotCQlsZW4gPSBzdGJ1Zi5zdF9zaXplIC0gb2ZzOwotCWlmIChsc2VlayhmLCBvZnMsIFNFRUtfU0VUKSA8IDApCi0JCXJldHVybiAwOwotCW4gPSBsZW47Ci0JaSA9IDA7Ci0Jd2hpbGUgKG4gPiAwKSB7Ci0JCWlmIChuID4gc2l6ZW9mKGJ1ZmZlcikpCi0JCQlpID0gcmVhZChmLCBidWZmZXIsIHNpemVvZihidWZmZXIpKTsKLQkJZWxzZQotCQkJaSA9IHJlYWQoZiwgYnVmZmVyLCBuKTsKLQkJaWYgKGkgPCAwKQotCQkJYnJlYWs7Ci0JCU1ENVVwZGF0ZSgmY3R4LCBidWZmZXIsIGkpOwotCQluIC09IGk7Ci0JfQotCWUgPSBlcnJubzsKLQljbG9zZShmKTsKLQllcnJubyA9IGU7Ci0JaWYgKGkgPCAwKQotCQlyZXR1cm4gMDsKLQlyZXR1cm4gKE1ENUVuZCgmY3R4LCBidWYpKTsKLX0KLQotY2hhciAqCi1NRDVEYXRhIChjb25zdCB2b2lkICpkYXRhLCB1bnNpZ25lZCBpbnQgbGVuLCBjaGFyICpidWYpCi17Ci0JTUQ1X0NUWCBjdHg7Ci0KLQlNRDVJbml0KCZjdHgpOwotCU1ENVVwZGF0ZSgmY3R4LGRhdGEsbGVuKTsKLQlyZXR1cm4gKE1ENUVuZCgmY3R4LCBidWYpKTsKLX0KZGlmZiAtLWdpdCBhL3JlbGVhc2UvRGlzdHJpYnV0aW9uLnhtbCBiL3JlbGVhc2UvRGlzdHJpYnV0aW9uLnhtbApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWU3M2FiMC4uMDAwMDAwMAotLS0gYS9yZWxlYXNlL0Rpc3RyaWJ1dGlvbi54bWwKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi08P3htbCB2ZXJzaW9uPSIxLjAiIGVuY29kaW5nPSJ1dGYtOCI/PgotPGluc3RhbGxlci1ndWktc2NyaXB0IG1pblNwZWNWZXJzaW9uPSIxIj4KLQk8dGl0bGU+bGlianBlZy10dXJibzwvdGl0bGU+Ci0JPHdlbGNvbWUgZmlsZT0iV2VsY29tZS5ydGYiIC8+Ci0JPHJlYWRtZSBmaWxlPSJSZWFkTWUudHh0IiAvPgotCTxsaWNlbnNlIGZpbGU9IkxpY2Vuc2UucnRmIiAvPgotCTxkb21haW5zCi0JCWVuYWJsZV9hbnl3aGVyZT0iZmFsc2UiCi0JCWVuYWJsZV9jdXJyZW50VXNlckhvbWU9ImZhbHNlIgotCQllbmFibGVfbG9jYWxTeXN0ZW09InRydWUiCi0JLz4KLQk8b3B0aW9ucyBjdXN0b21pemU9Im5ldmVyIiAvPgotCTxjaG9pY2VzLW91dGxpbmU+Ci0JCTxsaW5lIGNob2ljZT0iZGVmYXVsdCI+Ci0JCQk8bGluZSBjaG9pY2U9ImNvbS5saWJqcGVnLXR1cmJvLmxpYmpwZWctdHVyYm8iLz4KLQkJPC9saW5lPgotCTwvY2hvaWNlcy1vdXRsaW5lPgotCTxjaG9pY2UgaWQ9ImRlZmF1bHQiLz4KLQk8Y2hvaWNlIGlkPSJjb20ubGlianBlZy10dXJiby5saWJqcGVnLXR1cmJvIiB2aXNpYmxlPSJmYWxzZSI+Ci0JCTxwa2ctcmVmIGlkPSJjb20ubGlianBlZy10dXJiby5saWJqcGVnLXR1cmJvIi8+Ci0JPC9jaG9pY2U+Ci0JPHBrZy1yZWYgYXV0aD0icm9vdCIKLQkJaWQ9ImNvbS5saWJqcGVnLXR1cmJvLmxpYmpwZWctdHVyYm8iPmxpYmpwZWctdHVyYm8ucGtnPC9wa2ctcmVmPgotPC9pbnN0YWxsZXItZ3VpLXNjcmlwdD4KZGlmZiAtLWdpdCBhL3JlbGVhc2UvTGljZW5zZS5ydGYgYi9yZWxlYXNlL0xpY2Vuc2UucnRmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCA1MDczYTI3Li4wMDAwMDAwCi0tLSBhL3JlbGVhc2UvTGljZW5zZS5ydGYKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEwMzhcY29jb2FzdWJydGYzNTAKLXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTt9Ci17XGNvbG9ydGJsO1xyZWQyNTVcZ3JlZW4yNTVcYmx1ZTI1NTt9Ci17XCpcbGlzdHRhYmxle1xsaXN0XGxpc3R0ZW1wbGF0ZWlkMVxsaXN0aHlicmlke1xsaXN0bGV2ZWxcbGV2ZWxuZmMyM1xsZXZlbG5mY24yM1xsZXZlbGpjMFxsZXZlbGpjbjBcbGV2ZWxmb2xsb3cwXGxldmVsc3RhcnRhdDFcbGV2ZWxzcGFjZTM2MFxsZXZlbGluZGVudDB7XCpcbGV2ZWxtYXJrZXIgXHtkaXNjXH19e1xsZXZlbHRleHRcbGV2ZWx0ZW1wbGF0ZWlkMVwnMDFcdWMwXHU4MjI2IDt9e1xsZXZlbG51bWJlcnM7fVxmaS0zNjBcbGk3MjBcbGluNzIwIH17XGxpc3RuYW1lIDt9XGxpc3RpZDF9fQote1wqXGxpc3RvdmVycmlkZXRhYmxle1xsaXN0b3ZlcnJpZGVcbGlzdGlkMVxsaXN0b3ZlcnJpZGVjb3VudDBcbHMxfX0KLVxtYXJnbDE0NDBcbWFyZ3IxNDQwXHZpZXd3OTgyMFx2aWV3aDg0ODBcdmlld2tpbmQwCi1cZGVmdGFiNzIwCi1ccGFyZFxwYXJkZWZ0YWI3MjAKLQotXGYwXGZzMjQgXGNmMCBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6XAotXAotXHBhcmRcdHgyMjBcdHg3MjBccGFyZGVmdGFiNzIwXGxpNzIwXGZpLTcyMAotXGxzMVxpbHZsMFxjZjAge1xsaXN0dGV4dAlcJzk1CX1SZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuXAote1xsaXN0dGV4dAlcJzk1CX1SZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uXAote1xsaXN0dGV4dAlcJzk1CX1OZWl0aGVyIHRoZSBuYW1lIG9mIHRoZSBsaWJqcGVnLXR1cmJvIFByb2plY3Qgbm9yIHRoZSBuYW1lcyBvZiBpdHMgY29udHJpYnV0b3JzIG1heSBiZSB1c2VkIHRvIGVuZG9yc2Ugb3IgcHJvbW90ZSBwcm9kdWN0cyBkZXJpdmVkIGZyb20gdGhpcyBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi5cCi1ccGFyZFxwYXJkZWZ0YWI3MjBccWMKLVxjZjAgXAotXHBhcmRccGFyZGVmdGFiNzIwCi1cY2YwIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIiwgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSUyBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwgRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyAgTE9TUyBPRiBVU0UsIERBVEEsIE9SIFBST0ZJVFM7ICBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS5cCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcmVsZWFzZS9SZWFkTWUudHh0IGIvcmVsZWFzZS9SZWFkTWUudHh0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmI4ZDBmLi4wMDAwMDAwCi0tLSBhL3JlbGVhc2UvUmVhZE1lLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotbGlianBlZy10dXJibyBpcyBhIEpQRUcgaW1hZ2UgY29kZWMgdGhhdCB1c2VzIFNJTUQgaW5zdHJ1Y3Rpb25zIChNTVgsIFNTRTIsIE5FT04sIEFsdGlWZWMpIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBvbiB4ODYsIHg4Ni02NCwgQVJNLCBhbmQgUG93ZXJQQyBzeXN0ZW1zLiAgT24gc3VjaCBzeXN0ZW1zLCBsaWJqcGVnLXR1cmJvIGlzIGdlbmVyYWxseSAyLTZ4IGFzIGZhc3QgYXMgbGlianBlZywgYWxsIGVsc2UgYmVpbmcgZXF1YWwuICBPbiBvdGhlciB0eXBlcyBvZiBzeXN0ZW1zLCBsaWJqcGVnLXR1cmJvIGNhbiBzdGlsbCBvdXRwZXJmb3JtIGxpYmpwZWcgYnkgYSBzaWduaWZpY2FudCBhbW91bnQsIGJ5IHZpcnR1ZSBvZiBpdHMgaGlnaGx5LW9wdGltaXplZCBIdWZmbWFuIGNvZGluZyByb3V0aW5lcy4gIEluIG1hbnkgY2FzZXMsIHRoZSBwZXJmb3JtYW5jZSBvZiBsaWJqcGVnLXR1cmJvIHJpdmFscyB0aGF0IG9mIHByb3ByaWV0YXJ5IGhpZ2gtc3BlZWQgSlBFRyBjb2RlY3MuCi0KLWxpYmpwZWctdHVyYm8gaW1wbGVtZW50cyBib3RoIHRoZSB0cmFkaXRpb25hbCBsaWJqcGVnIEFQSSBhcyB3ZWxsIGFzIHRoZSBsZXNzIHBvd2VyZnVsIGJ1dCBtb3JlIHN0cmFpZ2h0Zm9yd2FyZCBUdXJib0pQRUcgQVBJLiAgbGlianBlZy10dXJibyBhbHNvIGZlYXR1cmVzIGNvbG9yc3BhY2UgZXh0ZW5zaW9ucyB0aGF0IGFsbG93IGl0IHRvIGNvbXByZXNzIGZyb20vZGVjb21wcmVzcyB0byAzMi1iaXQgYW5kIGJpZy1lbmRpYW4gcGl4ZWwgYnVmZmVycyAoUkdCWCwgWEJHUiwgZXRjLiksIGFzIHdlbGwgYXMgYSBmdWxsLWZlYXR1cmVkIEphdmEgaW50ZXJmYWNlLgotCi1saWJqcGVnLXR1cmJvIHdhcyBvcmlnaW5hbGx5IGJhc2VkIG9uIGxpYmpwZWcvU0lNRCwgYW4gTU1YLWFjY2VsZXJhdGVkIGRlcml2YXRpdmUgb2YgbGlianBlZyB2NmIgZGV2ZWxvcGVkIGJ5IE1peWFzYWthIE1hc2FydS4gIFRoZSBUaWdlclZOQyBhbmQgVmlydHVhbEdMIHByb2plY3RzIG1hZGUgbnVtZXJvdXMgZW5oYW5jZW1lbnRzIHRvIHRoZSBjb2RlYyBpbiAyMDA5LCBhbmQgaW4gZWFybHkgMjAxMCwgbGlianBlZy10dXJibyBzcHVuIG9mZiBpbnRvIGFuIGluZGVwZW5kZW50IHByb2plY3QsIHdpdGggdGhlIGdvYWwgb2YgbWFraW5nIGhpZ2gtc3BlZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIHRlY2hub2xvZ3kgYXZhaWxhYmxlIHRvIGEgYnJvYWRlciByYW5nZSBvZiB1c2VycyBhbmQgZGV2ZWxvcGVycy4KZGlmZiAtLWdpdCBhL3JlbGVhc2UvV2VsY29tZS5ydGYgYi9yZWxlYXNlL1dlbGNvbWUucnRmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBhNTcwYzViLi4wMDAwMDAwCi0tLSBhL3JlbGVhc2UvV2VsY29tZS5ydGYKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi17XHJ0ZjFcYW5zaVxhbnNpY3BnMTI1Mlxjb2NvYXJ0ZjEwMzhcY29jb2FzdWJydGYzNjAKLXtcZm9udHRibFxmMFxmc3dpc3NcZmNoYXJzZXQwIEhlbHZldGljYTtcZjFcZm1vZGVyblxmY2hhcnNldDAgQ291cmllck5ld1BTTVQ7fQote1xjb2xvcnRibDtccmVkMjU1XGdyZWVuMjU1XGJsdWUyNTU7fQotXG1hcmdsMTQ0MFxtYXJncjE0NDBcdmlld3c5MDAwXHZpZXdoODQwMFx2aWV3a2luZDAKLVxkZWZ0YWI3MjAKLVxwYXJkXHBhcmRlZnRhYjcyMFxxbFxxbmF0dXJhbAotCi1cZjBcZnMyNCBcY2YwIFRoaXMgaW5zdGFsbGVyIHdpbGwgaW5zdGFsbCB0aGUgbGlianBlZy10dXJibyBTREsgYW5kIHJ1bi10aW1lIGxpYnJhcmllcyBvbnRvIHlvdXIgY29tcHV0ZXIgc28gdGhhdCB5b3UgY2FuIHVzZSBsaWJqcGVnLXR1cmJvIHRvIGJ1aWxkIG5ldyBhcHBsaWNhdGlvbnMgb3IgYWNjZWxlcmF0ZSBleGlzdGluZyBvbmVzLiAgVG8gcmVtb3ZlIHRoZSBsaWJqcGVnLXR1cmJvIHBhY2thZ2UsIHJ1blwKLVwKLVxwYXJkXHBhcmRlZnRhYjcyMFxxbFxxbmF0dXJhbAotCi1cZjEgXGNmMCAgIC9vcHQvbGlianBlZy10dXJiby9iaW4vdW5pbnN0YWxsXAotXHBhcmRccGFyZGVmdGFiNzIwXHFsXHFuYXR1cmFsCi0KLVxmMCBcY2YwIFwKLWZyb20gdGhlIGNvbW1hbmQgbGluZS5cCi19ClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvcmVsZWFzZS9kZWItY29udHJvbC50bXBsIGIvcmVsZWFzZS9kZWItY29udHJvbC50bXBsCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODE3MjFkLi4wMDAwMDAwCi0tLSBhL3JlbGVhc2UvZGViLWNvbnRyb2wudG1wbAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVBhY2thZ2U6IHtfX1BLR05BTUV9Ci1WZXJzaW9uOiB7X19WRVJTSU9OfS17X19CVUlMRH0KLVNlY3Rpb246IG1pc2MKLVByaW9yaXR5OiBvcHRpb25hbAotQXJjaGl0ZWN0dXJlOiB7X19BUkNIfQotRXNzZW50aWFsOiBubwotTWFpbnRhaW5lcjogVGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCA8aW5mb3JtYXRpb25AbGlianBlZy10dXJiby5vcmc+Ci1Ib21lcGFnZTogaHR0cDovL3d3dy5saWJqcGVnLXR1cmJvLm9yZwotSW5zdGFsbGVkLVNpemU6IHtfX1NJWkV9Ci1EZXNjcmlwdGlvbjogQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgdGhhdCBwcm92aWRlcyBib3RoIHRoZSBsaWJqcGVnIGFuZCBUdXJib0pQRUcgQVBJcwotIGxpYmpwZWctdHVyYm8gaXMgYSBKUEVHIGltYWdlIGNvZGVjIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLAotIE5FT04sIEFsdGlWZWMpIHRvIGFjY2VsZXJhdGUgYmFzZWxpbmUgSlBFRyBjb21wcmVzc2lvbiBhbmQgZGVjb21wcmVzc2lvbiBvbgotIHg4NiwgeDg2LTY0LCBBUk0sIGFuZCBQb3dlclBDIHN5c3RlbXMuICBPbiBzdWNoIHN5c3RlbXMsIGxpYmpwZWctdHVyYm8gaXMKLSBnZW5lcmFsbHkgMi02eCBhcyBmYXN0IGFzIGxpYmpwZWcsIGFsbCBlbHNlIGJlaW5nIGVxdWFsLiAgT24gb3RoZXIgdHlwZXMgb2YKLSBzeXN0ZW1zLCBsaWJqcGVnLXR1cmJvIGNhbiBzdGlsbCBvdXRwZXJmb3JtIGxpYmpwZWcgYnkgYSBzaWduaWZpY2FudCBhbW91bnQsCi0gYnkgdmlydHVlIG9mIGl0cyBoaWdobHktb3B0aW1pemVkIEh1ZmZtYW4gY29kaW5nIHJvdXRpbmVzLiAgSW4gbWFueSBjYXNlcywgdGhlCi0gcGVyZm9ybWFuY2Ugb2YgbGlianBlZy10dXJibyByaXZhbHMgdGhhdCBvZiBwcm9wcmlldGFyeSBoaWdoLXNwZWVkIEpQRUcKLSBjb2RlY3MuCi0gLgotIGxpYmpwZWctdHVyYm8gaW1wbGVtZW50cyBib3RoIHRoZSB0cmFkaXRpb25hbCBsaWJqcGVnIEFQSSBhcyB3ZWxsIGFzIHRoZSBsZXNzCi0gcG93ZXJmdWwgYnV0IG1vcmUgc3RyYWlnaHRmb3J3YXJkIFR1cmJvSlBFRyBBUEkuICBsaWJqcGVnLXR1cmJvIGFsc28gZmVhdHVyZXMKLSBjb2xvcnNwYWNlIGV4dGVuc2lvbnMgdGhhdCBhbGxvdyBpdCB0byBjb21wcmVzcyBmcm9tL2RlY29tcHJlc3MgdG8gMzItYml0IGFuZAotIGJpZy1lbmRpYW4gcGl4ZWwgYnVmZmVycyAoUkdCWCwgWEJHUiwgZXRjLiksIGFzIHdlbGwgYXMgYSBmdWxsLWZlYXR1cmVkIEphdmEKLSBpbnRlcmZhY2UuCi0gLgotIGxpYmpwZWctdHVyYm8gd2FzIG9yaWdpbmFsbHkgYmFzZWQgb24gbGlianBlZy9TSU1ELCBhbiBNTVgtYWNjZWxlcmF0ZWQKLSBkZXJpdmF0aXZlIG9mIGxpYmpwZWcgdjZiIGRldmVsb3BlZCBieSBNaXlhc2FrYSBNYXNhcnUuICBUaGUgVGlnZXJWTkMgYW5kCi0gVmlydHVhbEdMIHByb2plY3RzIG1hZGUgbnVtZXJvdXMgZW5oYW5jZW1lbnRzIHRvIHRoZSBjb2RlYyBpbiAyMDA5LCBhbmQgaW4KLSBlYXJseSAyMDEwLCBsaWJqcGVnLXR1cmJvIHNwdW4gb2ZmIGludG8gYW4gaW5kZXBlbmRlbnQgcHJvamVjdCwgd2l0aCB0aGUgZ29hbAotIG9mIG1ha2luZyBoaWdoLXNwZWVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiB0ZWNobm9sb2d5IGF2YWlsYWJsZSB0byBhCi0gYnJvYWRlciByYW5nZSBvZiB1c2VycyBhbmQgZGV2ZWxvcGVycy4KZGlmZiAtLWdpdCBhL3JlbGVhc2UvbGlianBlZy10dXJiby5uc2kuaW4gYi9yZWxlYXNlL2xpYmpwZWctdHVyYm8ubnNpLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmNDU4YjgxLi4wMDAwMDAwCi0tLSBhL3JlbGVhc2UvbGlianBlZy10dXJiby5uc2kuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxNjIgKzAsMCBAQAotIWluY2x1ZGUgeDY0Lm5zaAotTmFtZSAiQENNQUtFX1BST0pFQ1RfTkFNRUAgU0RLIGZvciBASU5TVF9QTEFURk9STUAiCi1PdXRGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcJHtCVUlMRERJUn1ASU5TVF9OQU1FQC5leGUiCi1JbnN0YWxsRGlyIEBJTlNUX0RJUkAKLQotU2V0Q29tcHJlc3NvciBiemlwMgotCi1QYWdlIGRpcmVjdG9yeQotUGFnZSBpbnN0ZmlsZXMKLQotVW5pbnN0UGFnZSB1bmluc3RDb25maXJtCi1Vbmluc3RQYWdlIGluc3RmaWxlcwotCi1TZWN0aW9uICJAQ01BS0VfUFJPSkVDVF9OQU1FQCBTREsgZm9yIEBJTlNUX1BMQVRGT1JNQCAocmVxdWlyZWQpIgotIWlmZGVmIFdJTjY0Ci0JJHtJZn0gJHtSdW5uaW5nWDY0fQotCSR7RGlzYWJsZVg2NEZTUmVkaXJlY3Rpb259Ci0JJHtFbmRpZn0KLSFlbmRpZgotCVNlY3Rpb25JbiBSTwotIWlmZGVmIEdDQwotCUlmRmlsZUV4aXN0cyAkU1lTRElSL2xpYnR1cmJvanBlZy5kbGwgZXhpc3RzIDAKLSFlbHNlCi0JSWZGaWxlRXhpc3RzICRTWVNESVIvdHVyYm9qcGVnLmRsbCBleGlzdHMgMAotIWVuZGlmCi0JZ290byBub3RleGlzdHMKLQlleGlzdHM6Ci0haWZkZWYgR0NDCi0JTWVzc2FnZUJveCBNQl9PSyAiQW4gZXhpc3RpbmcgdmVyc2lvbiBvZiB0aGUgQENNQUtFX1BST0pFQ1RfTkFNRUAgU0RLIGZvciBASU5TVF9QTEFURk9STUAgaXMgYWxyZWFkeSBpbnN0YWxsZWQuICBQbGVhc2UgdW5pbnN0YWxsIGl0IGZpcnN0LiIKLSFlbHNlCi0JTWVzc2FnZUJveCBNQl9PSyAiQW4gZXhpc3RpbmcgdmVyc2lvbiBvZiB0aGUgQENNQUtFX1BST0pFQ1RfTkFNRUAgU0RLIGZvciBASU5TVF9QTEFURk9STUAgb3IgdGhlIFR1cmJvSlBFRyBTREsgaXMgYWxyZWFkeSBpbnN0YWxsZWQuICBQbGVhc2UgdW5pbnN0YWxsIGl0IGZpcnN0LiIKLSFlbmRpZgotCXF1aXQKLQotCW5vdGV4aXN0czoKLQlTZXRPdXRQYXRoICRTWVNESVIKLSFpZmRlZiBHQ0MKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcbGlidHVyYm9qcGVnLmRsbCIKLSFlbHNlCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXCR7QlVJTERESVJ9dHVyYm9qcGVnLmRsbCIKLSFlbmRpZgotCVNldE91dFBhdGggJElOU1RESVJcYmluCi0haWZkZWYgR0NDCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXGxpYnR1cmJvanBlZy5kbGwiCi0hZWxzZQotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFwke0JVSUxERElSfXR1cmJvanBlZy5kbGwiCi0hZW5kaWYKLSFpZmRlZiBHQ0MKLQlGaWxlICIvb25hbWU9bGlianBlZy1ARExMX1ZFUlNJT05ALmRsbCIgIkBDTUFLRV9CSU5BUllfRElSQFxzaGFyZWRsaWJcbGlianBlZy0qLmRsbCIKLSFlbHNlCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXHNoYXJlZGxpYlwke0JVSUxERElSfWpwZWdARExMX1ZFUlNJT05ALmRsbCIKLSFlbmRpZgotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFxzaGFyZWRsaWJcJHtCVUlMRERJUn1janBlZy5leGUiCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXHNoYXJlZGxpYlwke0JVSUxERElSfWRqcGVnLmV4ZSIKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcc2hhcmVkbGliXCR7QlVJTERESVJ9anBlZ3RyYW4uZXhlIgotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFwke0JVSUxERElSfXRqYmVuY2guZXhlIgotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFwke0JVSUxERElSfXJkanBnY29tLmV4ZSIKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcJHtCVUlMRERJUn13cmpwZ2NvbS5leGUiCi0JU2V0T3V0UGF0aCAkSU5TVERJUlxsaWIKLSFpZmRlZiBHQ0MKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcbGlidHVyYm9qcGVnLmRsbC5hIgotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFxsaWJ0dXJib2pwZWcuYSIKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcc2hhcmVkbGliXGxpYmpwZWcuZGxsLmEiCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXGxpYmpwZWcuYSIKLSFlbHNlCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXCR7QlVJTERESVJ9dHVyYm9qcGVnLmxpYiIKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcJHtCVUlMRERJUn10dXJib2pwZWctc3RhdGljLmxpYiIKLQlGaWxlICJAQ01BS0VfQklOQVJZX0RJUkBcc2hhcmVkbGliXCR7QlVJTERESVJ9anBlZy5saWIiCi0JRmlsZSAiQENNQUtFX0JJTkFSWV9ESVJAXCR7QlVJTERESVJ9anBlZy1zdGF0aWMubGliIgotIWVuZGlmCi0haWZkZWYgSkFWQQotCVNldE91dFBhdGggJElOU1RESVJcY2xhc3NlcwotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFxqYXZhXCR7QlVJTERESVJ9dHVyYm9qcGVnLmphciIKLSFlbmRpZgotCVNldE91dFBhdGggJElOU1RESVJcaW5jbHVkZQotCUZpbGUgIkBDTUFLRV9CSU5BUllfRElSQFxqY29uZmlnLmgiCi0JRmlsZSAiQENNQUtFX1NPVVJDRV9ESVJAXGplcnJvci5oIgotCUZpbGUgIkBDTUFLRV9TT1VSQ0VfRElSQFxqbW9yZWNmZy5oIgotCUZpbGUgIkBDTUFLRV9TT1VSQ0VfRElSQFxqcGVnbGliLmgiCi0JRmlsZSAiQENNQUtFX1NPVVJDRV9ESVJAXHR1cmJvanBlZy5oIgotCVNldE91dFBhdGggJElOU1RESVJcZG9jCi0JRmlsZSAiQENNQUtFX1NPVVJDRV9ESVJAXFJFQURNRS5pamciCi0JRmlsZSAiQENNQUtFX1NPVVJDRV9ESVJAXFJFQURNRS5tZCIKLQlGaWxlICJAQ01BS0VfU09VUkNFX0RJUkBcTElDRU5TRS5tZCIKLQlGaWxlICJAQ01BS0VfU09VUkNFX0RJUkBcZXhhbXBsZS5jIgotCUZpbGUgIkBDTUFLRV9TT1VSQ0VfRElSQFxsaWJqcGVnLnR4dCIKLQlGaWxlICJAQ01BS0VfU09VUkNFX0RJUkBcc3RydWN0dXJlLnR4dCIKLQlGaWxlICJAQ01BS0VfU09VUkNFX0RJUkBcdXNhZ2UudHh0IgotCUZpbGUgIkBDTUFLRV9TT1VSQ0VfRElSQFx3aXphcmQudHh0IgotCi0JV3JpdGVSZWdTdHIgSEtMTSAiU09GVFdBUkVcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIgIkluc3RhbGxfRGlyIiAiJElOU1RESVIiCi0KLQlXcml0ZVJlZ1N0ciBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIgIkRpc3BsYXlOYW1lIiAiQENNQUtFX1BST0pFQ1RfTkFNRUAgU0RLIHZAVkVSU0lPTkAgZm9yIEBJTlNUX1BMQVRGT1JNQCIKLQlXcml0ZVJlZ1N0ciBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIgIlVuaW5zdGFsbFN0cmluZyIgJyIkSU5TVERJUlx1bmluc3RhbGxfQFZFUlNJT05ALmV4ZSInCi0JV3JpdGVSZWdEV09SRCBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIgIk5vTW9kaWZ5IiAxCi0JV3JpdGVSZWdEV09SRCBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIgIk5vUmVwYWlyIiAxCi0JV3JpdGVVbmluc3RhbGxlciAidW5pbnN0YWxsX0BWRVJTSU9OQC5leGUiCi1TZWN0aW9uRW5kCi0KLVNlY3Rpb24gIlVuaW5zdGFsbCIKLSFpZmRlZiBXSU42NAotCSR7SWZ9ICR7UnVubmluZ1g2NH0KLQkke0Rpc2FibGVYNjRGU1JlZGlyZWN0aW9ufQotCSR7RW5kaWZ9Ci0hZW5kaWYKLQotCVNldFNoZWxsVmFyQ29udGV4dCBhbGwKLQotCURlbGV0ZVJlZ0tleSBIS0xNICJTb2Z0d2FyZVxNaWNyb3NvZnRcV2luZG93c1xDdXJyZW50VmVyc2lvblxVbmluc3RhbGxcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIKLQlEZWxldGVSZWdLZXkgSEtMTSAiU09GVFdBUkVcQElOU1RfUkVHX05BTUVAIEBWRVJTSU9OQCIKLQotIWlmZGVmIEdDQwotCURlbGV0ZSAkSU5TVERJUlxiaW5cbGlianBlZy1ARExMX1ZFUlNJT05ALmRsbAotCURlbGV0ZSAkSU5TVERJUlxiaW5cbGlidHVyYm9qcGVnLmRsbAotCURlbGV0ZSAkU1lTRElSXGxpYnR1cmJvanBlZy5kbGwKLQlEZWxldGUgJElOU1RESVJcbGliXGxpYnR1cmJvanBlZy5kbGwuYSIKLQlEZWxldGUgJElOU1RESVJcbGliXGxpYnR1cmJvanBlZy5hIgotCURlbGV0ZSAkSU5TVERJUlxsaWJcbGlianBlZy5kbGwuYSIKLQlEZWxldGUgJElOU1RESVJcbGliXGxpYmpwZWcuYSIKLSFlbHNlCi0JRGVsZXRlICRJTlNURElSXGJpblxqcGVnQERMTF9WRVJTSU9OQC5kbGwKLQlEZWxldGUgJElOU1RESVJcYmluXHR1cmJvanBlZy5kbGwKLQlEZWxldGUgJFNZU0RJUlx0dXJib2pwZWcuZGxsCi0JRGVsZXRlICRJTlNURElSXGxpYlxqcGVnLmxpYgotCURlbGV0ZSAkSU5TVERJUlxsaWJcanBlZy1zdGF0aWMubGliCi0JRGVsZXRlICRJTlNURElSXGxpYlx0dXJib2pwZWcubGliCi0JRGVsZXRlICRJTlNURElSXGxpYlx0dXJib2pwZWctc3RhdGljLmxpYgotIWVuZGlmCi0haWZkZWYgSkFWQQotCURlbGV0ZSAkSU5TVERJUlxjbGFzc2VzXHR1cmJvanBlZy5qYXIKLSFlbmRpZgotCURlbGV0ZSAkSU5TVERJUlxiaW5cY2pwZWcuZXhlCi0JRGVsZXRlICRJTlNURElSXGJpblxkanBlZy5leGUKLQlEZWxldGUgJElOU1RESVJcYmluXGpwZWd0cmFuLmV4ZQotCURlbGV0ZSAkSU5TVERJUlxiaW5cdGpiZW5jaC5leGUKLQlEZWxldGUgJElOU1RESVJcYmluXHJkanBnY29tLmV4ZQotCURlbGV0ZSAkSU5TVERJUlxiaW5cd3JqcGdjb20uZXhlCi0JRGVsZXRlICRJTlNURElSXGluY2x1ZGVcamNvbmZpZy5oIgotCURlbGV0ZSAkSU5TVERJUlxpbmNsdWRlXGplcnJvci5oIgotCURlbGV0ZSAkSU5TVERJUlxpbmNsdWRlXGptb3JlY2ZnLmgiCi0JRGVsZXRlICRJTlNURElSXGluY2x1ZGVcanBlZ2xpYi5oIgotCURlbGV0ZSAkSU5TVERJUlxpbmNsdWRlXHR1cmJvanBlZy5oIgotCURlbGV0ZSAkSU5TVERJUlx1bmluc3RhbGxfQFZFUlNJT05ALmV4ZQotCURlbGV0ZSAkSU5TVERJUlxkb2NcUkVBRE1FLmlqZwotCURlbGV0ZSAkSU5TVERJUlxkb2NcUkVBRE1FLm1kCi0JRGVsZXRlICRJTlNURElSXGRvY1xMSUNFTlNFLm1kCi0JRGVsZXRlICRJTlNURElSXGRvY1xleGFtcGxlLmMKLQlEZWxldGUgJElOU1RESVJcZG9jXGxpYmpwZWcudHh0Ci0JRGVsZXRlICRJTlNURElSXGRvY1xzdHJ1Y3R1cmUudHh0Ci0JRGVsZXRlICRJTlNURElSXGRvY1x1c2FnZS50eHQKLQlEZWxldGUgJElOU1RESVJcZG9jXHdpemFyZC50eHQKLQotCVJNRGlyICIkSU5TVERJUlxpbmNsdWRlIgotCVJNRGlyICIkSU5TVERJUlxsaWIiCi0JUk1EaXIgIiRJTlNURElSXGRvYyIKLSFpZmRlZiBKQVZBCi0JUk1EaXIgIiRJTlNURElSXGNsYXNzZXMiCi0hZW5kaWYKLQlSTURpciAiJElOU1RESVJcYmluIgotCVJNRGlyICIkSU5TVERJUiIKLQotU2VjdGlvbkVuZApkaWZmIC0tZ2l0IGEvcmVsZWFzZS9saWJqcGVnLXR1cmJvLnNwZWMuaW4gYi9yZWxlYXNlL2xpYmpwZWctdHVyYm8uc3BlYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGI3OTJkNy4uMDAwMDAwMAotLS0gYS9yZWxlYXNlL2xpYmpwZWctdHVyYm8uc3BlYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDE1MyArMCwwIEBACi0jIFBhdGggdW5kZXIgd2hpY2ggbGlianBlZy10dXJibyBzaG91bGQgYmUgaW5zdGFsbGVkCi0lZGVmaW5lIF9wcmVmaXggJXtfX3ByZWZpeH0KLQotIyBQYXRoIHVuZGVyIHdoaWNoIGV4ZWN1dGFibGVzIHNob3VsZCBiZSBpbnN0YWxsZWQKLSVkZWZpbmUgX2JpbmRpciAle19fYmluZGlyfQotCi0jIFBhdGggdW5kZXIgd2hpY2ggSmF2YSBjbGFzc2VzIGFuZCBtYW4gcGFnZXMgc2hvdWxkIGJlIGluc3RhbGxlZAotJWRlZmluZSBfZGF0YWRpciAle19fZGF0YWRpcn0KLQotIyBQYXRoIHVuZGVyIHdoaWNoIGRvY3Mgc2hvdWxkIGJlIGluc3RhbGxlZAotJWRlZmluZSBfZG9jZGlyIC91c3Ivc2hhcmUvZG9jLyV7bmFtZX0tJXt2ZXJzaW9ufQotCi0jIFBhdGggdW5kZXIgd2hpY2ggaGVhZGVycyBzaG91bGQgYmUgaW5zdGFsbGVkCi0lZGVmaW5lIF9pbmNsdWRlZGlyICV7X19pbmNsdWRlZGlyfQotCi0jIF9saWJkaXIgaXMgc2V0IHRvICV7X3ByZWZpeH0vJXtfbGlifSBieSBkZWZhdWx0Ci0laWZhcmNoIHg4Nl82NAotJWRlZmluZSBfbGliIGxpYjY0Ci0lZWxzZQotJWlmICIle19wcmVmaXh9IiA9PSAiL29wdC9saWJqcGVnLXR1cmJvIgotJWRlZmluZSBfbGliIGxpYjMyCi0lZW5kaWYKLSVlbmRpZgotCi0jIFBhdGggdW5kZXIgd2hpY2ggbWFuIHBhZ2VzIHNob3VsZCBiZSBpbnN0YWxsZWQKLSVkZWZpbmUgX21hbmRpciAle19fbWFuZGlyfQotCi1TdW1tYXJ5OiBBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB0aGF0IHByb3ZpZGVzIGJvdGggdGhlIGxpYmpwZWcgYW5kIFR1cmJvSlBFRyBBUElzCi1OYW1lOiBAUEtHTkFNRUAKLVZlcnNpb246IEBWRVJTSU9OQAotVmVuZG9yOiBUaGUgbGlianBlZy10dXJibyBQcm9qZWN0Ci1VUkw6IGh0dHA6Ly93d3cubGlianBlZy10dXJiby5vcmcKLUdyb3VwOiBTeXN0ZW0gRW52aXJvbm1lbnQvTGlicmFyaWVzCi0jLS0+U291cmNlMDogaHR0cDovL3ByZG93bmxvYWRzLnNvdXJjZWZvcmdlLm5ldC9saWJqcGVnLXR1cmJvL2xpYmpwZWctdHVyYm8tJXt2ZXJzaW9ufS50YXIuZ3oKLVJlbGVhc2U6IEBCVUlMREAKLUxpY2Vuc2U6IEJTRC1zdHlsZQotQnVpbGRSb290OiAle19ibGRkaXJ9LyV7bmFtZX0tYnVpbGRyb290LSV7dmVyc2lvbn0tJXtyZWxlYXNlfQotUHJlcmVxOiAvc2Jpbi9sZGNvbmZpZwotJWlmYXJjaCB4ODZfNjQKLVByb3ZpZGVzOiAle25hbWV9ID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCBAUEFDS0FHRV9OQU1FQCA9ICV7dmVyc2lvbn0tJXtyZWxlYXNlfSwgbGlidHVyYm9qcGVnLnNvKCkoNjRiaXQpCi0lZWxzZQotUHJvdmlkZXM6ICV7bmFtZX0gPSAle3ZlcnNpb259LSV7cmVsZWFzZX0sIEBQQUNLQUdFX05BTUVAID0gJXt2ZXJzaW9ufS0le3JlbGVhc2V9LCBsaWJ0dXJib2pwZWcuc28KLSVlbmRpZgotCi0lZGVzY3JpcHRpb24KLWxpYmpwZWctdHVyYm8gaXMgYSBKUEVHIGltYWdlIGNvZGVjIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLAotTkVPTiwgQWx0aVZlYykgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIG9uCi14ODYsIHg4Ni02NCwgQVJNLCBhbmQgUG93ZXJQQyBzeXN0ZW1zLiAgT24gc3VjaCBzeXN0ZW1zLCBsaWJqcGVnLXR1cmJvIGlzCi1nZW5lcmFsbHkgMi02eCBhcyBmYXN0IGFzIGxpYmpwZWcsIGFsbCBlbHNlIGJlaW5nIGVxdWFsLiAgT24gb3RoZXIgdHlwZXMgb2YKLXN5c3RlbXMsIGxpYmpwZWctdHVyYm8gY2FuIHN0aWxsIG91dHBlcmZvcm0gbGlianBlZyBieSBhIHNpZ25pZmljYW50IGFtb3VudCwgYnkKLXZpcnR1ZSBvZiBpdHMgaGlnaGx5LW9wdGltaXplZCBIdWZmbWFuIGNvZGluZyByb3V0aW5lcy4gIEluIG1hbnkgY2FzZXMsIHRoZQotcGVyZm9ybWFuY2Ugb2YgbGlianBlZy10dXJibyByaXZhbHMgdGhhdCBvZiBwcm9wcmlldGFyeSBoaWdoLXNwZWVkIEpQRUcgY29kZWNzLgotCi1saWJqcGVnLXR1cmJvIGltcGxlbWVudHMgYm90aCB0aGUgdHJhZGl0aW9uYWwgbGlianBlZyBBUEkgYXMgd2VsbCBhcyB0aGUgbGVzcwotcG93ZXJmdWwgYnV0IG1vcmUgc3RyYWlnaHRmb3J3YXJkIFR1cmJvSlBFRyBBUEkuICBsaWJqcGVnLXR1cmJvIGFsc28gZmVhdHVyZXMKLWNvbG9yc3BhY2UgZXh0ZW5zaW9ucyB0aGF0IGFsbG93IGl0IHRvIGNvbXByZXNzIGZyb20vZGVjb21wcmVzcyB0byAzMi1iaXQgYW5kCi1iaWctZW5kaWFuIHBpeGVsIGJ1ZmZlcnMgKFJHQlgsIFhCR1IsIGV0Yy4pLCBhcyB3ZWxsIGFzIGEgZnVsbC1mZWF0dXJlZCBKYXZhCi1pbnRlcmZhY2UuCi0KLWxpYmpwZWctdHVyYm8gd2FzIG9yaWdpbmFsbHkgYmFzZWQgb24gbGlianBlZy9TSU1ELCBhbiBNTVgtYWNjZWxlcmF0ZWQKLWRlcml2YXRpdmUgb2YgbGlianBlZyB2NmIgZGV2ZWxvcGVkIGJ5IE1peWFzYWthIE1hc2FydS4gIFRoZSBUaWdlclZOQyBhbmQKLVZpcnR1YWxHTCBwcm9qZWN0cyBtYWRlIG51bWVyb3VzIGVuaGFuY2VtZW50cyB0byB0aGUgY29kZWMgaW4gMjAwOSwgYW5kIGluCi1lYXJseSAyMDEwLCBsaWJqcGVnLXR1cmJvIHNwdW4gb2ZmIGludG8gYW4gaW5kZXBlbmRlbnQgcHJvamVjdCwgd2l0aCB0aGUgZ29hbAotb2YgbWFraW5nIGhpZ2gtc3BlZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIHRlY2hub2xvZ3kgYXZhaWxhYmxlIHRvIGEKLWJyb2FkZXIgcmFuZ2Ugb2YgdXNlcnMgYW5kIGRldmVsb3BlcnMuCi0KLSMtLT4lcHJlcAotIy0tPiVzZXR1cCAtcSAtbiBsaWJqcGVnLXR1cmJvLSV7dmVyc2lvbn0KLQotIy0tPiVidWlsZAotIy0tPi4vY29uZmlndXJlIHByZWZpeD0le19wcmVmaXh9IGJpbmRpcj0le19iaW5kaXJ9IGRhdGFkaXI9JXtfZGF0YWRpcn0gXAotIy0tPglkb2NkaXI9JXtfZG9jZGlyfSBpbmNsdWRlZGlyPSV7X2luY2x1ZGVkaXJ9IGxpYmRpcj0le19saWJkaXJ9IFwKLSMtLT4JbWFuZGlyPSV7X21hbmRpcn0gSlBFR19MSUJfVkVSU0lPTj1ASlBFR19MSUJfVkVSU0lPTkAgXAotIy0tPglTT19NQUpPUl9WRVJTSU9OPUBTT19NQUpPUl9WRVJTSU9OQCBTT19NSU5PUl9WRVJTSU9OPUBTT19NSU5PUl9WRVJTSU9OQCBcCi0jLS0+CS0td2l0aC1waWMgQFJQTV9DT05GSUdfQVJHU0AKLSMtLT5tYWtlIERFU1RESVI9JFJQTV9CVUlMRF9ST09UCi0KLSVpbnN0YWxsCi0KLXJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKLW1ha2UgaW5zdGFsbCBERVNURElSPSRSUE1fQlVJTERfUk9PVCBkb2NkaXI9JXtfZG9jZGlyfSBleGFtcGxlZGlyPSV7X2RvY2Rpcn0KLXJtIC1mICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vKi5sYQotL3NiaW4vbGRjb25maWcgLW4gJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfQotCi0jLS0+JWlmIDAKLQotTEpUX0xJQkRJUj0le19fbGliZGlyfQotaWYgWyAhICIkTEpUX0xJQkRJUiIgPSAiJXtfbGliZGlyfSIgXTsgdGhlbgotCWVjaG8gRVJST1I6IGxpYmpwZWctdHVyYm8gbXVzdCBiZSBjb25maWd1cmVkIHdpdGggbGliZGlyPSV7X3ByZWZpeH0vJXtfbGlifSB3aGVuIGdlbmVyYXRpbmcgYW4gaW4tdHJlZSBSUE0gZm9yIHRoaXMgYXJjaGl0ZWN0dXJlLgotCWV4aXQgMQotZmkKLQotIy0tPiVlbmRpZgotCi1MSlRfRE9DRElSPSV7X19kb2NkaXJ9Ci1pZiBbICIle19wcmVmaXh9IiA9ICIvb3B0L2xpYmpwZWctdHVyYm8iIC1hICIkTEpUX0RPQ0RJUiIgPSAiL29wdC9saWJqcGVnLXR1cmJvL2RvYyIgXTsgdGhlbgotCWxuIC1mcyAle19kb2NkaXJ9ICRSUE1fQlVJTERfUk9PVC8kTEpUX0RPQ0RJUgotZmkKLQotJXBvc3QgLXAgL3NiaW4vbGRjb25maWcKLQotJXBvc3R1biAtcCAvc2Jpbi9sZGNvbmZpZwotCi0lY2xlYW4KLXJtIC1yZiAkUlBNX0JVSUxEX1JPT1QKLQotJWZpbGVzCi0lZGVmYXR0cigtLHJvb3Qscm9vdCkKLSVkaXIgJXtfZG9jZGlyfQotJWRvYyAle19kb2NkaXJ9LyoKLSVkaXIgJXtfcHJlZml4fQotJWlmICIle19wcmVmaXh9IiA9PSAiL29wdC9saWJqcGVnLXR1cmJvIiAmJiAiJXtfZG9jZGlyfSIgIT0gIiV7X3ByZWZpeH0vZG9jIgotICV7X3ByZWZpeH0vZG9jCi0lZW5kaWYKLSVkaXIgJXtfYmluZGlyfQotJXtfYmluZGlyfS9janBlZwotJXtfYmluZGlyfS9kanBlZwotJXtfYmluZGlyfS9qcGVndHJhbgotJXtfYmluZGlyfS90amJlbmNoCi0le19iaW5kaXJ9L3JkanBnY29tCi0le19iaW5kaXJ9L3dyanBnY29tCi0lZGlyICV7X2xpYmRpcn0KLSV7X2xpYmRpcn0vbGlianBlZy5zby5AU09fTUFKT1JfVkVSU0lPTkAuQFNPX0FHRUAuQFNPX01JTk9SX1ZFUlNJT05ACi0le19saWJkaXJ9L2xpYmpwZWcuc28uQFNPX01BSk9SX1ZFUlNJT05ACi0le19saWJkaXJ9L2xpYmpwZWcuc28KLSV7X2xpYmRpcn0vbGlianBlZy5hCi0le19saWJkaXJ9L3BrZ2NvbmZpZwotJXtfbGliZGlyfS9wa2djb25maWcvbGlianBlZy5wYwotJXtfbGliZGlyfS9saWJ0dXJib2pwZWcuc28uMC4xLjAKLSV7X2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLjAKLSV7X2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvCi0le19saWJkaXJ9L2xpYnR1cmJvanBlZy5hCi0le19saWJkaXJ9L3BrZ2NvbmZpZy9saWJ0dXJib2pwZWcucGMKLSVkaXIgJXtfaW5jbHVkZWRpcn0KLSV7X2luY2x1ZGVkaXJ9L2pjb25maWcuaAotJXtfaW5jbHVkZWRpcn0vamVycm9yLmgKLSV7X2luY2x1ZGVkaXJ9L2ptb3JlY2ZnLmgKLSV7X2luY2x1ZGVkaXJ9L2pwZWdsaWIuaAotJXtfaW5jbHVkZWRpcn0vdHVyYm9qcGVnLmgKLSVkaXIgJXtfbWFuZGlyfQotJWRpciAle19tYW5kaXJ9L21hbjEKLSV7X21hbmRpcn0vbWFuMS9janBlZy4xKgotJXtfbWFuZGlyfS9tYW4xL2RqcGVnLjEqCi0le19tYW5kaXJ9L21hbjEvanBlZ3RyYW4uMSoKLSV7X21hbmRpcn0vbWFuMS9yZGpwZ2NvbS4xKgotJXtfbWFuZGlyfS9tYW4xL3dyanBnY29tLjEqCi0laWYgIiV7X3ByZWZpeH0iICE9ICIle19kYXRhZGlyfSIKLSAlZGlyICV7X2RhdGFkaXJ9Ci0lZW5kaWYKLUBKQVZBX1JQTV9DT05URU5UU18xQAotQEpBVkFfUlBNX0NPTlRFTlRTXzJACi0KLSVjaGFuZ2Vsb2cKZGlmZiAtLWdpdCBhL3JlbGVhc2UvbGlianBlZy5wYy5pbiBiL3JlbGVhc2UvbGlianBlZy5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3OTVmNy4uMDAwMDAwMAotLS0gYS9yZWxlYXNlL2xpYmpwZWcucGMuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1wcmVmaXg9QHByZWZpeEAKLWV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLWxpYmRpcj1AbGliZGlyQAotaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLQotTmFtZTogbGlianBlZwotRGVzY3JpcHRpb246IEEgU0lNRC1hY2NlbGVyYXRlZCBKUEVHIGNvZGVjIHRoYXQgcHJvdmlkZXMgdGhlIGxpYmpwZWcgQVBJCi1WZXJzaW9uOiBAUEFDS0FHRV9WRVJTSU9OQAotTGliczogLUwke2xpYmRpcn0gLWxqcGVnCi1DZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvcmVsZWFzZS9saWJ0dXJib2pwZWcucGMuaW4gYi9yZWxlYXNlL2xpYnR1cmJvanBlZy5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0YjY1Ni4uMDAwMDAwMAotLS0gYS9yZWxlYXNlL2xpYnR1cmJvanBlZy5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXByZWZpeD1AcHJlZml4QAotZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotbGliZGlyPUBsaWJkaXJACi1pbmNsdWRlZGlyPUBpbmNsdWRlZGlyQAotCi1OYW1lOiBsaWJ0dXJib2pwZWcKLURlc2NyaXB0aW9uOiBBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB0aGF0IHByb3ZpZGVzIHRoZSBUdXJib0pQRUcgQVBJCi1WZXJzaW9uOiBAUEFDS0FHRV9WRVJTSU9OQAotTGliczogLUwke2xpYmRpcn0gLWx0dXJib2pwZWcKLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9yZWxlYXNlL21ha2VjeWd3aW5wa2cuaW4gYi9yZWxlYXNlL21ha2VjeWd3aW5wa2cuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IGYzMDM1NDYuLjAwMDAwMDAKLS0tIGEvcmVsZWFzZS9tYWtlY3lnd2lucGtnLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotIyEvYmluL3NoCi0KLXNldCAtdQotc2V0IC1lCi10cmFwIG9uZXhpdCBJTlQKLXRyYXAgb25leGl0IFRFUk0KLXRyYXAgb25leGl0IEVYSVQKLQotVE1QRElSPQotCi1vbmV4aXQoKQotewotCWlmIFsgISAiJFRNUERJUiIgPSAiIiBdOyB0aGVuCi0JCXJtIC1yZiAkVE1QRElSCi0JZmkKLX0KLQotUEFDS0FHRV9OQU1FPUBQS0dOQU1FQAotVkVSU0lPTj1AVkVSU0lPTkAKLUJVSUxEPUBCVUlMREAKLVNSQ0RJUj1AYWJzX3RvcF9zcmNkaXJACi0KLVBSRUZJWD0le19fcHJlZml4fQotRE9DRElSPSV7X19kb2NkaXJ9Ci1MSUJESVI9JXtfX2xpYmRpcn0KLQotdW1hc2sgMDIyCi1ybSAtZiAkUEFDS0FHRV9OQU1FLSRWRVJTSU9OLSRCVUlMRC50YXIuYnoyCi1UTVBESVI9YG1rdGVtcCAtZCAvdG1wL2xqdGJ1aWxkLlhYWFhYWGAKLV9fUFdEPWBwd2RgCi1tYWtlIGluc3RhbGwgREVTVERJUj0kVE1QRElSL3BrZyBkb2NkaXI9L3Vzci9zaGFyZS9kb2MvJFBBQ0tBR0VfTkFNRS0kVkVSU0lPTiBcCi0JZXhhbXBsZWRpcj0vdXNyL3NoYXJlL2RvYy8kUEFDS0FHRV9OQU1FLSRWRVJTSU9OCi1ybSAkVE1QRElSL3BrZyRMSUJESVIvKi5sYQotaWYgWyAiJFBSRUZJWCIgPSAiL29wdC9saWJqcGVnLXR1cmJvIiAtYSAiJERPQ0RJUiIgPSAiL29wdC9saWJqcGVnLXR1cmJvL2RvYyIgXTsgdGhlbgotCWxuIC1mcyAvdXNyL3NoYXJlL2RvYy8kUEFDS0FHRV9OQU1FLSRWRVJTSU9OICRUTVBESVIvcGtnJERPQ0RJUgotZmkKLWNkICRUTVBESVIvcGtnCi10YXIgY2ZqIC4uLyRQQUNLQUdFX05BTUUtJFZFUlNJT04tJEJVSUxELnRhci5iejIgKgotY2QgJF9fUFdECi1tdiAkVE1QRElSLyoudGFyLmJ6MiAuCi0KLWV4aXQgMApkaWZmIC0tZ2l0IGEvcmVsZWFzZS9tYWtlZHBrZy5pbiBiL3JlbGVhc2UvbWFrZWRwa2cuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwY2M4OWIuLjAwMDAwMDAKLS0tIGEvcmVsZWFzZS9tYWtlZHBrZy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDgyICswLDAgQEAKLSMhL2Jpbi9zaAotCi1zZXQgLXUKLXNldCAtZQotdHJhcCBvbmV4aXQgSU5UCi10cmFwIG9uZXhpdCBURVJNCi10cmFwIG9uZXhpdCBFWElUCi0KLVRNUERJUj0KLVNVRE89Ci0KLW9uZXhpdCgpCi17Ci0JaWYgWyAhICIkVE1QRElSIiA9ICIiIF07IHRoZW4KLQkJJFNVRE8gcm0gLXJmICRUTVBESVIKLQlmaQotfQotCi11aWQoKQotewotCWlkIHwgY3V0IC1mMiAtZCA9IHwgY3V0IC1mMSAtZCBcKDsKLX0KLQotbWFrZWRlYigpCi17Ci0JU1VQUExFTUVOVD0kMQotCURJUk5BTUU9JFBBQ0tBR0VfTkFNRQotCi0JaWYgWyAkU1VQUExFTUVOVCA9IDEgXTsgdGhlbgotCQlQQUNLQUdFX05BTUU9JFBBQ0tBR0VfTkFNRVwzMgotCQlERUJBUkNIPWFtZDY0Ci0JZmkKLQotCXVtYXNrIDAyMgotCXJtIC1mICRQQUNLQUdFX05BTUVcXyRWRVJTSU9OXF8kREVCQVJDSC5kZWIKLQlUTVBESVI9YG1rdGVtcCAtZCAvdG1wLyRQQUNLQUdFX05BTUUtYnVpbGQuWFhYWFhYYAotCW1rZGlyICRUTVBESVIvREVCSUFOCi0KLQlpZiBbICRTVVBQTEVNRU5UID0gMSBdOyB0aGVuCi0JCW1ha2UgaW5zdGFsbCBERVNURElSPSRUTVBESVIgYmluZGlyPS9kdW1teS9iaW4gZGF0YWRpcj0vZHVtbXkvZGF0YSBcCi0JCQlkb2NkaXI9L2R1bW15L2RvYyBpbmNsdWRlZGlyPS9kdW1teS9pbmNsdWRlIG1hbmRpcj0vZHVtbXkvbWFuCi0JCXJtIC1mICRUTVBESVIkTElCRElSLyoubGEKLQkJcm0gLXJmICRUTVBESVIvZHVtbXkKLQllbHNlCi0JCW1ha2UgaW5zdGFsbCBERVNURElSPSRUTVBESVIgZG9jZGlyPS91c3Ivc2hhcmUvZG9jLyRESVJOQU1FLSRWRVJTSU9OIFwKLQkJCWV4YW1wbGVkaXI9L3Vzci9zaGFyZS9kb2MvJERJUk5BTUUtJFZFUlNJT04KLQkJcm0gLWYgJFRNUERJUiRMSUJESVIvKi5sYQotCQlpZiBbICIkUFJFRklYIiA9ICIvb3B0L2xpYmpwZWctdHVyYm8iIC1hICIkRE9DRElSIiA9ICIvb3B0L2xpYmpwZWctdHVyYm8vZG9jIiBdOyB0aGVuCi0JCQlsbiAtZnMgL3Vzci9zaGFyZS9kb2MvJERJUk5BTUUtJFZFUlNJT04gJFRNUERJUiRET0NESVIKLQkJZmkKLQlmaQotCi0JU0laRT1gZHUgLXMgJFRNUERJUiB8IGN1dCAtZjFgCi0JKGNhdCAkU1JDRElSL3JlbGVhc2UvZGViLWNvbnRyb2wudG1wbCB8IHNlZCBzL3tfX1BLR05BTUV9LyRQQUNLQUdFX05BTUUvZyBcCi0JCXwgc2VkIHMve19fVkVSU0lPTn0vJFZFUlNJT04vZyB8IHNlZCBzL3tfX0JVSUxEfS8kQlVJTEQvZyBcCi0JCXwgc2VkIHMve19fQVJDSH0vJERFQkFSQ0gvZyB8IHNlZCBzL3tfX1NJWkV9LyRTSVpFL2cgXAotCQk+ICRUTVBESVIvREVCSUFOL2NvbnRyb2wpCi0KLQotCS9zYmluL2xkY29uZmlnIC1uICRUTVBESVIkTElCRElSCi0KLQkkU1VETyBjaG93biAtUmggcm9vdDpyb290ICRUTVBESVIvKgotCWRwa2cgLWIgJFRNUERJUiAkUEFDS0FHRV9OQU1FXF8kVkVSU0lPTlxfJERFQkFSQ0guZGViCi19Ci0KLVBBQ0tBR0VfTkFNRT1AUEtHTkFNRUAKLVZFUlNJT049QFZFUlNJT05ACi1CVUlMRD1AQlVJTERACi1ERUJBUkNIPUBERUJBUkNIQAotU1JDRElSPUBhYnNfdG9wX3NyY2RpckAKLVBSRUZJWD0le19fcHJlZml4fQotRE9DRElSPSV7X19kb2NkaXJ9Ci1MSUJESVI9JXtfX2xpYmRpcn0KLQotaWYgWyAhIGB1aWRgIC1lcSAwIF07IHRoZW4KLQlTVURPPXN1ZG8KLWZpCi0KLW1ha2VkZWIgMAotaWYgWyAiJERFQkFSQ0giID0gImkzODYiIF07IHRoZW4gbWFrZWRlYiAxOyBmaQotCi1leGl0CmRpZmYgLS1naXQgYS9yZWxlYXNlL21ha2VtYWNwa2cuaW4gYi9yZWxlYXNlL21ha2VtYWNwa2cuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxNjM3NTcuLjAwMDAwMDAKLS0tIGEvcmVsZWFzZS9tYWtlbWFjcGtnLmluCisrKyAvZGV2L251bGwKQEAgLTEsNDcwICswLDAgQEAKLSMhL2Jpbi9zaAotCi1zZXQgLXUKLXNldCAtZQotdHJhcCBvbmV4aXQgSU5UCi10cmFwIG9uZXhpdCBURVJNCi10cmFwIG9uZXhpdCBFWElUCi0KLVRNUERJUj0KLQotb25leGl0KCkKLXsKLQlpZiBbICEgIiRUTVBESVIiID0gIiIgXTsgdGhlbgotCQlybSAtcmYgJFRNUERJUgotCWZpCi19Ci0KLXVzYWdlKCkKLXsKLQllY2hvICIkMCBbLWJ1aWxkMzIgWzMyLWJpdCBidWlsZCBkaXJdXSBbLWJ1aWxkYXJtdjYgW0FSTXY2IGJ1aWxkIGRpcl1dIFstYnVpbGRhcm12NyBbQVJNdjcgYnVpbGQgZGlyXV0gWy1idWlsZGFybXY3cyBbQVJNdjdzIGJ1aWxkIGRpcl0gWy1idWlsZGFybXY4IFtBUk12OCBidWlsZCBkaXJdXSBbLWxpcG8gW3BhdGggdG8gbGlwb11dIgotCWV4aXQgMQotfQotCi1QQUNLQUdFX05BTUU9QFBLR05BTUVACi1WRVJTSU9OPUBWRVJTSU9OQAotQlVJTEQ9QEJVSUxEQAotU1JDRElSPUBhYnNfdG9wX3NyY2RpckAKLUJVSUxERElSMzI9QGFic190b3Bfc3JjZGlyQC9vc3h4ODYKLUJVSUxEMzI9MAotQlVJTERESVJBUk1WNj1AYWJzX3RvcF9zcmNkaXJAL2lvc2FybXY2Ci1CVUlMREFSTVY2PTAKLUJVSUxERElSQVJNVjc9QGFic190b3Bfc3JjZGlyQC9pb3Nhcm12NwotQlVJTERBUk1WNz0wCi1CVUlMRERJUkFSTVY3Uz1AYWJzX3RvcF9zcmNkaXJAL2lvc2FybXY3cwotQlVJTERBUk1WN1M9MAotQlVJTERESVJBUk1WOD1AYWJzX3RvcF9zcmNkaXJAL2lvc2FybXY4Ci1CVUlMREFSTVY4PTAKLVdJVEhfSkFWQT1AV0lUSF9KQVZBQAotTElQTz1saXBvCi0KLVBSRUZJWD0le19fcHJlZml4fQotQklORElSPSV7X19iaW5kaXJ9Ci1ET0NESVI9JXtfX2RvY2Rpcn0KLUxJQkRJUj0le19fbGliZGlyfQotCi13aGlsZSBbICQjIC1ndCAwIF07IGRvCi0JY2FzZSAkMSBpbgotCS1oKikgICAgICAgICAgICAgdXNhZ2UgMCAgICAgICAgICAgICAgICAgICA7OwotCS1idWlsZDMyKQotCQlCVUlMRDMyPTEKLQkJaWYgWyAkIyAtZ3QgMSBdOyB0aGVuCi0JCQlpZiBbWyAhICIkMiIgPX4gLS4qIF1dOyB0aGVuCi0JCQkJQlVJTERESVIzMj0kMjsgIHNoaWZ0Ci0JCQlmaQotCQlmaQotCQk7OwotCS1idWlsZGFybXY2KQotCQlCVUlMREFSTVY2PTEKLQkJaWYgWyAkIyAtZ3QgMSBdOyB0aGVuCi0JCQlpZiBbWyAhICIkMiIgPX4gLS4qIF1dOyB0aGVuCi0JCQkJQlVJTERESVJBUk1WNj0kMjsgIHNoaWZ0Ci0JCQlmaQotCQlmaQotCQk7OwotCS1idWlsZGFybXY3KQotCQlCVUlMREFSTVY3PTEKLQkJaWYgWyAkIyAtZ3QgMSBdOyB0aGVuCi0JCQlpZiBbWyAhICIkMiIgPX4gLS4qIF1dOyB0aGVuCi0JCQkJQlVJTERESVJBUk1WNz0kMjsgIHNoaWZ0Ci0JCQlmaQotCQlmaQotCQk7OwotCS1idWlsZGFybXY3cykKLQkJQlVJTERBUk1WN1M9MQotCQlpZiBbICQjIC1ndCAxIF07IHRoZW4KLQkJCWlmIFtbICEgIiQyIiA9fiAtLiogXV07IHRoZW4KLQkJCQlCVUlMRERJUkFSTVY3Uz0kMjsgIHNoaWZ0Ci0JCQlmaQotCQlmaQotCQk7OwotCS1idWlsZGFybXY4KQotCQlCVUlMREFSTVY4PTEKLQkJaWYgWyAkIyAtZ3QgMSBdOyB0aGVuCi0JCQlpZiBbWyAhICIkMiIgPX4gLS4qIF1dOyB0aGVuCi0JCQkJQlVJTERESVJBUk1WOD0kMjsgIHNoaWZ0Ci0JCQlmaQotCQlmaQotCQk7OwotCS1saXBvKQotCQlpZiBbICQjIC1ndCAxIF07IHRoZW4KLQkJCWlmIFtbICEgIiQyIiA9fiAtLiogXV07IHRoZW4KLQkJCQlMSVBPPSQyOyAgc2hpZnQKLQkJCWZpCi0JCWZpCi0JCTs7Ci0JZXNhYwotCXNoaWZ0Ci1kb25lCi0KLWlmIFsgLWYgJFBBQ0tBR0VfTkFNRS0kVkVSU0lPTi5kbWcgXTsgdGhlbgotCXJtIC1mICRQQUNLQUdFX05BTUUtJFZFUlNJT04uZG1nCi1maQotCi11bWFzayAwMjIKLVRNUERJUj1gbWt0ZW1wIC1kIC90bXAvJFBBQ0tBR0VfTkFNRS1idWlsZC5YWFhYWFhgCi1QS0dST09UPSRUTVBESVIvcGtnL1BhY2thZ2VfUm9vdAotbWtkaXIgLXAgJFBLR1JPT1QKLW1ha2UgaW5zdGFsbCBERVNURElSPSRQS0dST09UIGRvY2Rpcj0vTGlicmFyeS9Eb2N1bWVudGF0aW9uLyRQQUNLQUdFX05BTUUgXAotCWV4YW1wbGVkaXI9L0xpYnJhcnkvRG9jdW1lbnRhdGlvbi8kUEFDS0FHRV9OQU1FCi1ybSAtZiAkUEtHUk9PVCRMSUJESVIvKi5sYQotCi1pZiBbICIkUFJFRklYIiA9ICIvb3B0L2xpYmpwZWctdHVyYm8iIC1hICIkRE9DRElSIiA9ICIvb3B0L2xpYmpwZWctdHVyYm8vZG9jIiBdOyB0aGVuCi0JbG4gLWZzIC9MaWJyYXJ5L0RvY3VtZW50YXRpb24vJFBBQ0tBR0VfTkFNRSAkUEtHUk9PVCRET0NESVIKLWZpCi0KLWlmIFsgJEJVSUxEMzIgPSAxIF07IHRoZW4KLQlpZiBbICEgLWQgJEJVSUxERElSMzIgXTsgdGhlbgotCQllY2hvIEVSUk9SOiAzMi1iaXQgYnVpbGQgZGlyZWN0b3J5ICRCVUlMRERJUjMyIGRvZXMgbm90IGV4aXN0Ci0JCWV4aXQgMQotCWZpCi0JaWYgWyAhIC1mICRCVUlMRERJUjMyL01ha2VmaWxlIF07IHRoZW4KLQkJZWNobyBFUlJPUjogMzItYml0IGJ1aWxkIGRpcmVjdG9yeSAkQlVJTERESVIzMiBpcyBub3QgY29uZmlndXJlZAotCQlleGl0IDEKLQlmaQotCW1rZGlyIC1wICRUTVBESVIvZGlzdC54ODYKLQlwdXNoZCAkQlVJTERESVIzMgotCW1ha2UgaW5zdGFsbCBERVNURElSPSRUTVBESVIvZGlzdC54ODYKLQlwb3BkCi0JaWYgWyAhIC1oICRUTVBESVIvZGlzdC54ODYvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC5keWxpYiAtYSBcCi0JCSEgLWggJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC5keWxpYiBdOyB0aGVuCi0JCSRMSVBPIC1jcmVhdGUgXAotCQkJLWFyY2ggaTM4NiAkVE1QRElSL2Rpc3QueDg2LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLWFyY2ggeDg2XzY0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliCi0JZWxpZiBbICEgLWggJFRNUERJUi9kaXN0Lng4Ni8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIC1hIFwKLQkJISAtaCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIF07IHRoZW4KLQkJJExJUE8gLWNyZWF0ZSBcCi0JCQktYXJjaCBpMzg2ICRUTVBESVIvZGlzdC54ODYvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiBcCi0JCQktYXJjaCB4ODZfNjQgJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiBcCi0JCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIKLQlmaQotCSRMSVBPIC1jcmVhdGUgXAotCQktYXJjaCBpMzg2ICRUTVBESVIvZGlzdC54ODYvJExJQkRJUi9saWJqcGVnLmEgXAotCQktYXJjaCB4ODZfNjQgJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5hCi0JJExJUE8gLWNyZWF0ZSBcCi0JCS1hcmNoIGkzODYgJFRNUERJUi9kaXN0Lng4Ni8kTElCRElSL2xpYnR1cmJvanBlZy4wLmR5bGliIFwKLQkJLWFyY2ggeDg2XzY0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIKLQkkTElQTyAtY3JlYXRlIFwKLQkJLWFyY2ggaTM4NiAkVE1QRElSL2Rpc3QueDg2LyRMSUJESVIvbGlidHVyYm9qcGVnLmEgXAotCQktYXJjaCB4ODZfNjQgJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuYSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuYQotCSRMSVBPIC1jcmVhdGUgXAotCQktYXJjaCBpMzg2ICRUTVBESVIvZGlzdC54ODYvJEJJTkRJUi9janBlZyBcCi0JCS1hcmNoIHg4Nl82NCAkUEtHUk9PVC8kQklORElSL2NqcGVnIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL2NqcGVnCi0JJExJUE8gLWNyZWF0ZSBcCi0JCS1hcmNoIGkzODYgJFRNUERJUi9kaXN0Lng4Ni8kQklORElSL2RqcGVnIFwKLQkJLWFyY2ggeDg2XzY0ICRQS0dST09ULyRCSU5ESVIvZGpwZWcgXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvZGpwZWcKLQkkTElQTyAtY3JlYXRlIFwKLQkJLWFyY2ggaTM4NiAkVE1QRElSL2Rpc3QueDg2LyRCSU5ESVIvanBlZ3RyYW4gXAotCQktYXJjaCB4ODZfNjQgJFBLR1JPT1QvJEJJTkRJUi9qcGVndHJhbiBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi9qcGVndHJhbgotCSRMSVBPIC1jcmVhdGUgXAotCQktYXJjaCBpMzg2ICRUTVBESVIvZGlzdC54ODYvJEJJTkRJUi90amJlbmNoIFwKLQkJLWFyY2ggeDg2XzY0ICRQS0dST09ULyRCSU5ESVIvdGpiZW5jaCBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoCi0JJExJUE8gLWNyZWF0ZSBcCi0JCS1hcmNoIGkzODYgJFRNUERJUi9kaXN0Lng4Ni8kQklORElSL3JkanBnY29tIFwKLQkJLWFyY2ggeDg2XzY0ICRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20KLQkkTElQTyAtY3JlYXRlIFwKLQkJLWFyY2ggaTM4NiAkVE1QRElSL2Rpc3QueDg2LyRCSU5ESVIvd3JqcGdjb20gXAotCQktYXJjaCB4ODZfNjQgJFBLR1JPT1QvJEJJTkRJUi93cmpwZ2NvbSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi93cmpwZ2NvbQotCi1maQotCi1pZiBbICRCVUlMREFSTVY2ID0gMSBdOyB0aGVuCi0JaWYgWyAhIC1kICRCVUlMRERJUkFSTVY2IF07IHRoZW4KLQkJZWNobyBFUlJPUjogQVJNdjYgYnVpbGQgZGlyZWN0b3J5ICRCVUlMRERJUkFSTVY2IGRvZXMgbm90IGV4aXN0Ci0JCWV4aXQgMQotCWZpCi0JaWYgWyAhIC1mICRCVUlMRERJUkFSTVY2L01ha2VmaWxlIF07IHRoZW4KLQkJZWNobyBFUlJPUjogQVJNdjYgYnVpbGQgZGlyZWN0b3J5ICRCVUlMRERJUkFSTVY2IGlzIG5vdCBjb25maWd1cmVkCi0JCWV4aXQgMQotCWZpCi0JbWtkaXIgLXAgJFRNUERJUi9kaXN0LmFybXY2Ci0JcHVzaGQgJEJVSUxERElSQVJNVjYKLQltYWtlIGluc3RhbGwgREVTVERJUj0kVE1QRElSL2Rpc3QuYXJtdjYKLQlwb3BkCi0JaWYgWyAhIC1oICRUTVBESVIvZGlzdC5hcm12Ni8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIC1hIFwKLQkJISAtaCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIF07IHRoZW4KLQkJJExJUE8gLWNyZWF0ZSBcCi0JCQkkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIFwKLQkJCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjYvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC5keWxpYiBcCi0JCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIKLQllbGlmIFsgISAtaCAkVE1QRElSL2Rpc3QuYXJtdjYvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiAtYSBcCi0JCSEgLWggJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiBdOyB0aGVuCi0JCSRMSVBPIC1jcmVhdGUgXAotCQkJJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiBcCi0JCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY2LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliCi0JZmkKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLmEgXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY2LyRMSUJESVIvbGlianBlZy5hIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuYQotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kTElCRElSL2xpYnR1cmJvanBlZy4wLmR5bGliIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ni8kTElCRElSL2xpYnR1cmJvanBlZy4wLmR5bGliIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYnR1cmJvanBlZy4wLmR5bGliCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLmEgXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY2LyRMSUJESVIvbGlidHVyYm9qcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLmEKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9janBlZyBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjYvJEJJTkRJUi9janBlZyBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi9janBlZwotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL2RqcGVnIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ni8kQklORElSL2RqcGVnIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL2RqcGVnCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvanBlZ3RyYW4gXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY2LyRCSU5ESVIvanBlZ3RyYW4gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvanBlZ3RyYW4KLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ni8kQklORElSL3RqYmVuY2ggXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvdGpiZW5jaAotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL3JkanBnY29tIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ni8kQklORElSL3JkanBnY29tIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL3JkanBnY29tCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvd3JqcGdjb20gXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY2LyRCSU5ESVIvd3JqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvd3JqcGdjb20KLWZpCi0KLWlmIFsgJEJVSUxEQVJNVjcgPSAxIF07IHRoZW4KLQlpZiBbICEgLWQgJEJVSUxERElSQVJNVjcgXTsgdGhlbgotCQllY2hvIEVSUk9SOiBBUk12NyBidWlsZCBkaXJlY3RvcnkgJEJVSUxERElSQVJNVjcgZG9lcyBub3QgZXhpc3QKLQkJZXhpdCAxCi0JZmkKLQlpZiBbICEgLWYgJEJVSUxERElSQVJNVjcvTWFrZWZpbGUgXTsgdGhlbgotCQllY2hvIEVSUk9SOiBBUk12NyBidWlsZCBkaXJlY3RvcnkgJEJVSUxERElSQVJNVjcgaXMgbm90IGNvbmZpZ3VyZWQKLQkJZXhpdCAxCi0JZmkKLQlta2RpciAtcCAkVE1QRElSL2Rpc3QuYXJtdjcKLQlwdXNoZCAkQlVJTERESVJBUk1WNwotCW1ha2UgaW5zdGFsbCBERVNURElSPSRUTVBESVIvZGlzdC5hcm12NwotCXBvcGQKLQlpZiBbICEgLWggJFRNUERJUi9kaXN0LmFybXY3LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgLWEgXAotCQkhIC1oICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXTsgdGhlbgotCQkkTElQTyAtY3JlYXRlIFwKLQkJCSRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ny8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIFwKLQkJCS1vdXRwdXQgJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC5keWxpYgotCWVsaWYgWyAhIC1oICRUTVBESVIvZGlzdC5hcm12Ny8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIC1hIFwKLQkJISAtaCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIF07IHRoZW4KLQkJJExJUE8gLWNyZWF0ZSBcCi0JCQkkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIFwKLQkJCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjcvJExJQkRJUi9saWJqcGVnLkBTT19NQUpPUl9WRVJTSU9OQC4wLkBTT19NSU5PUl9WRVJTSU9OQC5keWxpYiBcCi0JCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIKLQlmaQotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuYSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjcvJExJQkRJUi9saWJqcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5hCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIgXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY3LyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuYSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjcvJExJQkRJUi9saWJ0dXJib2pwZWcuYSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuYQotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL2NqcGVnIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12Ny8kQklORElSL2NqcGVnIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL2NqcGVnCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvZGpwZWcgXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY3LyRCSU5ESVIvZGpwZWcgXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvZGpwZWcKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9qcGVndHJhbiBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjcvJEJJTkRJUi9qcGVndHJhbiBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi9qcGVndHJhbgotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL3RqYmVuY2ggXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY3LyRCSU5ESVIvdGpiZW5jaCBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20gXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY3LyRCSU5ESVIvcmRqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20KLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi93cmpwZ2NvbSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjcvJEJJTkRJUi93cmpwZ2NvbSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi93cmpwZ2NvbQotZmkKLQotaWYgWyAkQlVJTERBUk1WN1MgPSAxIF07IHRoZW4KLQlpZiBbICEgLWQgJEJVSUxERElSQVJNVjdTIF07IHRoZW4KLQkJZWNobyBFUlJPUjogQVJNdjdzIGJ1aWxkIGRpcmVjdG9yeSAkQlVJTERESVJBUk1WN1MgZG9lcyBub3QgZXhpc3QKLQkJZXhpdCAxCi0JZmkKLQlpZiBbICEgLWYgJEJVSUxERElSQVJNVjdTL01ha2VmaWxlIF07IHRoZW4KLQkJZWNobyBFUlJPUjogQVJNdjdzIGJ1aWxkIGRpcmVjdG9yeSAkQlVJTERESVJBUk1WN1MgaXMgbm90IGNvbmZpZ3VyZWQKLQkJZXhpdCAxCi0JZmkKLQlta2RpciAtcCAkVE1QRElSL2Rpc3QuYXJtdjdzCi0JcHVzaGQgJEJVSUxERElSQVJNVjdTCi0JbWFrZSBpbnN0YWxsIERFU1RESVI9JFRNUERJUi9kaXN0LmFybXY3cwotCXBvcGQKLQlpZiBbICEgLWggJFRNUERJUi9kaXN0LmFybXY3cy8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIC1hIFwKLQkJISAtaCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIF07IHRoZW4KLQkJJExJUE8gLWNyZWF0ZSBcCi0JCQkkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliIFwKLQkJCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliCi0JZWxpZiBbICEgLWggJFRNUERJUi9kaXN0LmFybXY3cy8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIC1hIFwKLQkJISAtaCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIF07IHRoZW4KLQkJJExJUE8gLWNyZWF0ZSBcCi0JCQkkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliIFwKLQkJCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliCi0JZmkKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLmEgXAotCQktYXJjaCBhcm0gJFRNUERJUi9kaXN0LmFybXY3cy8kTElCRElSL2xpYmpwZWcuYSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLmEKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuMC5keWxpYiBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuYSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRMSUJESVIvbGlidHVyYm9qcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLmEKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9janBlZyBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRCSU5ESVIvY2pwZWcgXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvY2pwZWcKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9kanBlZyBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRCSU5ESVIvZGpwZWcgXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvZGpwZWcKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9qcGVndHJhbiBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRCSU5ESVIvanBlZ3RyYW4gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvanBlZ3RyYW4KLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoIFwKLQkJLWFyY2ggYXJtICRUTVBESVIvZGlzdC5hcm12N3MvJEJJTkRJUi90amJlbmNoIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL3RqYmVuY2gKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9yZGpwZ2NvbSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRCSU5ESVIvcmRqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20KLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi93cmpwZ2NvbSBcCi0JCS1hcmNoIGFybSAkVE1QRElSL2Rpc3QuYXJtdjdzLyRCSU5ESVIvd3JqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvd3JqcGdjb20KLWZpCi0KLWlmIFsgJEJVSUxEQVJNVjggPSAxIF07IHRoZW4KLQlpZiBbICEgLWQgJEJVSUxERElSQVJNVjggXTsgdGhlbgotCQllY2hvIEVSUk9SOiBBUk12OCBidWlsZCBkaXJlY3RvcnkgJEJVSUxERElSQVJNVjggZG9lcyBub3QgZXhpc3QKLQkJZXhpdCAxCi0JZmkKLQlpZiBbICEgLWYgJEJVSUxERElSQVJNVjgvTWFrZWZpbGUgXTsgdGhlbgotCQllY2hvIEVSUk9SOiBBUk12OCBidWlsZCBkaXJlY3RvcnkgJEJVSUxERElSQVJNVjggaXMgbm90IGNvbmZpZ3VyZWQKLQkJZXhpdCAxCi0JZmkKLQlta2RpciAtcCAkVE1QRElSL2Rpc3QuYXJtdjgKLQlwdXNoZCAkQlVJTERESVJBUk1WOAotCW1ha2UgaW5zdGFsbCBERVNURElSPSRUTVBESVIvZGlzdC5hcm12OAotCXBvcGQKLQlpZiBbICEgLWggJFRNUERJUi9kaXN0LmFybXY4LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgLWEgXAotCQkhIC1oICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXTsgdGhlbgotCQkkTElQTyAtY3JlYXRlIFwKLQkJCSRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliCi0JZWxpZiBbICEgLWggJFRNUERJUi9kaXN0LmFybXY4LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgLWEgXAotCQkhIC1oICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgXTsgdGhlbgotCQkkTElQTyAtY3JlYXRlIFwKLQkJCSRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuMC5AU09fTUlOT1JfVkVSU0lPTkAuZHlsaWIgXAotCQkJLW91dHB1dCAkUEtHUk9PVC8kTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALjAuQFNPX01JTk9SX1ZFUlNJT05ALmR5bGliCi0JZmkKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJExJQkRJUi9saWJqcGVnLmEgXAotCQktYXJjaCBhcm02NCAkVE1QRElSL2Rpc3QuYXJtdjgvJExJQkRJUi9saWJqcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlianBlZy5hCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIgXAotCQktYXJjaCBhcm02NCAkVE1QRElSL2Rpc3QuYXJtdjgvJExJQkRJUi9saWJ0dXJib2pwZWcuMC5keWxpYiBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJExJQkRJUi9saWJ0dXJib2pwZWcuMC5keWxpYgotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kTElCRElSL2xpYnR1cmJvanBlZy5hIFwKLQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRMSUJESVIvbGlidHVyYm9qcGVnLmEgXAotCQktb3V0cHV0ICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLmEKLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi9janBlZyBcCi0JCS1hcmNoIGFybTY0ICRUTVBESVIvZGlzdC5hcm12OC8kQklORElSL2NqcGVnIFwKLQkJLW91dHB1dCAkUEtHUk9PVC8kQklORElSL2NqcGVnCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvZGpwZWcgXAotCQktYXJjaCBhcm02NCAkVE1QRElSL2Rpc3QuYXJtdjgvJEJJTkRJUi9kanBlZyBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi9kanBlZwotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL2pwZWd0cmFuIFwKLQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRCSU5ESVIvanBlZ3RyYW4gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvanBlZ3RyYW4KLQkkTElQTyAtY3JlYXRlIFwKLQkJJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoIFwKLQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRCSU5ESVIvdGpiZW5jaCBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi90amJlbmNoCi0JJExJUE8gLWNyZWF0ZSBcCi0JCSRQS0dST09ULyRCSU5ESVIvcmRqcGdjb20gXAotCQktYXJjaCBhcm02NCAkVE1QRElSL2Rpc3QuYXJtdjgvJEJJTkRJUi9yZGpwZ2NvbSBcCi0JCS1vdXRwdXQgJFBLR1JPT1QvJEJJTkRJUi9yZGpwZ2NvbQotCSRMSVBPIC1jcmVhdGUgXAotCQkkUEtHUk9PVC8kQklORElSL3dyanBnY29tIFwKLQkJLWFyY2ggYXJtNjQgJFRNUERJUi9kaXN0LmFybXY4LyRCSU5ESVIvd3JqcGdjb20gXAotCQktb3V0cHV0ICRQS0dST09ULyRCSU5ESVIvd3JqcGdjb20KLWZpCi0KLWluc3RhbGxfbmFtZV90b29sIC1pZCAkTElCRElSL2xpYmpwZWcuQFNPX01BSk9SX1ZFUlNJT05ALmR5bGliICRQS0dST09ULyRMSUJESVIvbGlianBlZy5AU09fTUFKT1JfVkVSU0lPTkAuZHlsaWIKLWluc3RhbGxfbmFtZV90b29sIC1pZCAkTElCRElSL2xpYnR1cmJvanBlZy4wLmR5bGliICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLjAuZHlsaWIKLQotaWYgWyAkV0lUSF9KQVZBID0gMSBdOyB0aGVuCi0JbG4gLWZzIGxpYnR1cmJvanBlZy4wLmR5bGliICRQS0dST09ULyRMSUJESVIvbGlidHVyYm9qcGVnLmpuaWxpYgotZmkKLWlmIFsgIiRQUkVGSVgiID0gIi9vcHQvbGlianBlZy10dXJibyIgLWEgIiRMSUJESVIiID0gIi9vcHQvbGlianBlZy10dXJiby9saWIiIF07IHRoZW4KLQlpZiBbICEgLWggJFBLR1JPT1QvJFBSRUZJWC9saWIzMiBdOyB0aGVuCi0JCWxuIC1mcyBsaWIgJFBLR1JPT1QvJFBSRUZJWC9saWIzMgotCWZpCi0JaWYgWyAhIC1oICRQS0dST09ULyRQUkVGSVgvbGliNjQgXTsgdGhlbgotCQlsbiAtZnMgbGliICRQS0dST09ULyRQUkVGSVgvbGliNjQKLQlmaQotZmkKLQotbWtkaXIgLXAgJFRNUERJUi9wa2cKLQotaW5zdGFsbCAtbSA3NTUgcGtnc2NyaXB0cy91bmluc3RhbGwgJFBLR1JPT1QvJEJJTkRJUi8KLQotZmluZCAkUEtHUk9PVCAtdHlwZSBmIHwgd2hpbGUgcmVhZCBmaWxlOyBkbyB4YXR0ciAtYyAkZmlsZTsgZG9uZQotCi1jcCAkU1JDRElSL3JlbGVhc2UvTGljZW5zZS5ydGYgJFNSQ0RJUi9yZWxlYXNlL1dlbGNvbWUucnRmICRTUkNESVIvcmVsZWFzZS9SZWFkTWUudHh0ICRUTVBESVIvcGtnLwotCi1ta2RpciAkVE1QRElSL2RtZwotcGtnYnVpbGQgLS1yb290ICRQS0dST09UIC0tdmVyc2lvbiAkVkVSU0lPTi4kQlVJTEQgXAotCS0taWRlbnRpZmllciBjb20ubGlianBlZy10dXJiby5saWJqcGVnLXR1cmJvICRUTVBESVIvcGtnLyRQQUNLQUdFX05BTUUucGtnCi1wcm9kdWN0YnVpbGQgLS1kaXN0cmlidXRpb24gJFNSQ0RJUi9yZWxlYXNlL0Rpc3RyaWJ1dGlvbi54bWwgXAotCS0tcGFja2FnZS1wYXRoICRUTVBESVIvcGtnLyAtLXJlc291cmNlcyAkVE1QRElSL3BrZy8gXAotCSRUTVBESVIvZG1nLyRQQUNLQUdFX05BTUUucGtnCi1oZGl1dGlsIGNyZWF0ZSAtZnMgSEZTKyAtdm9sbmFtZSAkUEFDS0FHRV9OQU1FLSRWRVJTSU9OIFwKLQktc3JjZm9sZGVyICIkVE1QRElSL2RtZyIgJFRNUERJUi8kUEFDS0FHRV9OQU1FLSRWRVJTSU9OLmRtZwotY3AgJFRNUERJUi8kUEFDS0FHRV9OQU1FLSRWRVJTSU9OLmRtZyAuCi0KLWV4aXQKZGlmZiAtLWdpdCBhL3JlbGVhc2UvdW5pbnN0YWxsLmluIGIvcmVsZWFzZS91bmluc3RhbGwuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjZDFmODYuLjAwMDAwMDAKLS0tIGEvcmVsZWFzZS91bmluc3RhbGwuaW4KKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotIyBDb3B5cmlnaHQgKEMpMjAwOS0yMDExLCAyMDEzLCAyMDE2IEQuIFIuIENvbW1hbmRlci4gIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCi0jCi0jIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotIyBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKLSMKLSMgLSBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0jICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSMgLSBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UsCi0jICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUgZG9jdW1lbnRhdGlvbgotIyAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotIyAtIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIGxpYmpwZWctdHVyYm8gUHJvamVjdCBub3IgdGhlIG5hbWVzIG9mIGl0cwotIyAgIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tIHRoaXMKLSMgICBzb2Z0d2FyZSB3aXRob3V0IHNwZWNpZmljIHByaW9yIHdyaXR0ZW4gcGVybWlzc2lvbi4KLSMKLSMgVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBUSEUgQ09QWVJJR0hUIEhPTERFUlMgQU5EIENPTlRSSUJVVE9SUyAiQVMgSVMiLAotIyBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCi0jIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFCi0jIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIENPUFlSSUdIVCBIT0xERVJTIE9SIENPTlRSSUJVVE9SUyBCRQotIyBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLCBFWEVNUExBUlksIE9SCi0jIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GCi0jIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUwotIyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTgotIyBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKQotIyBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRQotIyBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLQotIyEvYmluL3NoCi0KLWlmIFsgISAiYGlkIC11YCIgPSAiMCIgXTsgdGhlbgotCWVjaG8gIkVSUk9SOiBUaGlzIHNjcmlwdCBtdXN0IGJlIGV4ZWN1dGVkIGFzIHJvb3QiCi0JZXhpdCAtMQotZmkKLQotUEFDS0FHRT1AUEtHTkFNRUAKLU1BQ1BBQ0tBR0U9Y29tLiRQQUNLQUdFLiRQQUNLQUdFCi1SRUNFSVBUPS9MaWJyYXJ5L1JlY2VpcHRzLyRQQUNLQUdFLnBrZwotCi1MU0JPTT0KLWlmIFsgLWQgJFJFQ0VJUFQgXTsgdGhlbgotCUxTQk9NPSdsc2JvbSAtcyAtZiAtbCAnJFJFQ0VJUFQnL0NvbnRlbnRzL0FyY2hpdmUuYm9tJwotZWxzZQotCUxTQk9NPSdwa2d1dGlsIC0tZmlsZXMgJyRNQUNQQUNLQUdFCi1maQotCi1teWxzYm9tKCkKLXsKLQkkTFNCT00gfHwgKGVjaG8gIkVSUk9SOiBDb3VsZCBub3QgbGlzdCBwYWNrYWdlIGNvbnRlbnRzIjsgZXhpdCAtMSkKLX0KLQotZWNobyBSZW1vdmluZyBwYWNrYWdlIGZpbGVzIC4uLgotRVhJVFNUQVRVUz0wCi1wdXNoZCAvCi1teWxzYm9tIHwgd2hpbGUgcmVhZCBmaWxlOyBkbwotCWlmIFsgISAtZCAiJGZpbGUiIF07IHRoZW4gcm0gIiRmaWxlIiAyPiYxIHx8IEVYSVRTVEFUVVM9LTE7IGZpCi1kb25lCi1wb3BkCi0KLWVjaG8gUmVtb3ZpbmcgcGFja2FnZSBkaXJlY3RvcmllcyAuLi4KLVBSRUZJWD0le19fcHJlZml4fQotQklORElSPSV7X19iaW5kaXJ9Ci1EQVRBRElSPSV7X19kYXRhZGlyfQotSU5DTFVERURJUj0le19faW5jbHVkZWRpcn0KLUxJQkRJUj0le19fbGliZGlyfQotTUFORElSPSV7X19tYW5kaXJ9Ci0KLWlmIFsgLWQgJEJJTkRJUiBdOyB0aGVuCi0Jcm1kaXIgJEJJTkRJUiAyPiYxIHx8IEVYSVRTVEFUVVM9LTEKLWZpCi1pZiBbIC1kICRMSUJESVIvcGtnY29uZmlnIF07IHRoZW4KLQlybWRpciAkTElCRElSL3BrZ2NvbmZpZyAyPiYxIHx8IEVYSVRTVEFUVVM9LTEKLWZpCi1pZiBbIC1kICRMSUJESVIgXTsgdGhlbgotCXJtZGlyICRMSUJESVIgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi1maQotaWYgWyAtZCAkSU5DTFVERURJUiBdOyB0aGVuCi0Jcm1kaXIgJElOQ0xVREVESVIgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi1maQotaWYgWyAiJFBSRUZJWCIgPSAiL29wdC9saWJqcGVnLXR1cmJvIiAtYSAiJExJQkRJUiIgPSAiL29wdC9saWJqcGVnLXR1cmJvL2xpYiIgXTsgdGhlbgotCWlmIFsgLWggJExJQkRJUlwzMiBdOyB0aGVuCi0JCXJtICRMSUJESVJcMzIgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi0JZmkKLQlpZiBbIC1oICRMSUJESVJcNjQgXTsgdGhlbgotCQlybSAkTElCRElSXDY0IDI+JjEgfHwgRVhJVFNUQVRVUz0tMQotCWZpCi1maQotaWYgWyAtZCAkTUFORElSL21hbjEgXTsgdGhlbgotCXJtZGlyICRNQU5ESVIvbWFuMSAyPiYxIHx8IEVYSVRTVEFUVVM9LTEKLWZpCi1pZiBbIC1kICRNQU5ESVIgXTsgdGhlbgotCXJtZGlyICRNQU5ESVIgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi1maQotaWYgWyAtZCAkREFUQURJUi9jbGFzc2VzIF07IHRoZW4KLQlybWRpciAkREFUQURJUi9jbGFzc2VzIDI+JjEgfHwgRVhJVFNUQVRVUz0tMQotZmkKLWlmIFsgLWQgJERBVEFESVIgLWEgIiREQVRBRElSIiAhPSAiJFBSRUZJWCIgXTsgdGhlbgotCXJtZGlyICREQVRBRElSIDI+JjEgfHwgRVhJVFNUQVRVUz0tMQotZmkKLWlmIFsgIiRQUkVGSVgiID0gIi9vcHQvbGlianBlZy10dXJibyIgLWEgLWggIiRQUkVGSVgvZG9jIiBdOyB0aGVuCi0Jcm0gJFBSRUZJWC9kb2MgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi1maQotcm1kaXIgJFBSRUZJWCAyPiYxIHx8IEVYSVRTVEFUVVM9LTEKLXJtZGlyIC9MaWJyYXJ5L0RvY3VtZW50YXRpb24vJFBBQ0tBR0UgMj4mMSB8fCBFWElUU1RBVFVTPS0xCi0KLWlmIFsgLWQgJFJFQ0VJUFQgXTsgdGhlbgotCWVjaG8gUmVtb3ZpbmcgcGFja2FnZSByZWNlaXB0IC4uLgotCXJtIC1yICRSRUNFSVBUIDI+JjEgfHwgRVhJVFNUQVRVUz0tMQotZWxzZQotCWVjaG8gRm9yZ2V0dGluZyBwYWNrYWdlICRNQUNQQUNLQUdFIC4uLgotCXBrZ3V0aWwgLS1mb3JnZXQgJE1BQ1BBQ0tBR0UKLWZpCi0KLWV4aXQgJEVYSVRTVEFUVVMKZGlmZiAtLWdpdCBhL3NoYXJlZGxpYi9DTWFrZUxpc3RzLnR4dCBiL3NoYXJlZGxpYi9DTWFrZUxpc3RzLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggZDQyM2NjZS4uMDAwMDAwMAotLS0gYS9zaGFyZWRsaWIvQ01ha2VMaXN0cy50eHQKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi0jIEFueXRoaW5nIHRoYXQgbXVzdCBiZSBsaW5rZWQgYWdhaW5zdCB0aGUgc2hhcmVkIEMgbGlicmFyeSBvbiBXaW5kb3dzIG11c3QKLSMgYmUgYnVpbHQgaW4gdGhpcyBzdWJkaXJlY3RvcnksIGJlY2F1c2UgQ01ha2UgZG9lc24ndCBhbGxvdyB1cyB0byBvdmVycmlkZQotIyB0aGUgY29tcGlsZXIgZmxhZ3MgZm9yIGVhY2ggYnVpbGQgdHlwZSBleGNlcHQgYXQgZGlyZWN0b3J5IHNjb3BlLiAgTm90ZQotIyB0byBDTWFrZSBkZXZlbG9wZXJzOiAgQWRkIGEgQ09NUElMRV9GTEFHU188Q09ORklHPiB0YXJnZXQgcHJvcGVydHksIG9yCi0jIGJldHRlciB5ZXQsIHByb3ZpZGUgYSBmcmllbmRseSB3YXkgb2YgY29uZmlndXJpbmcgYSBXaW5kb3dzIHRhcmdldCB0byB1c2UgdGhlCi0jIHN0YXRpYyBDIGxpYnJhcnkuCi0KLWlmKE1TVkMpCi0gICMgQnVpbGQgYWxsIGNvbmZpZ3VyYXRpb25zIGFnYWluc3Qgc2hhcmVkIEMgbGlicmFyeQotICBmb3JlYWNoKHZhciBDTUFLRV9DX0ZMQUdTIENNQUtFX0NfRkxBR1NfREVCVUcgQ01BS0VfQ19GTEFHU19SRUxFQVNFCi0gICAgQ01BS0VfQ19GTEFHU19NSU5TSVpFUkVMIENNQUtFX0NfRkxBR1NfUkVMV0lUSERFQklORk8pCi0gICAgaWYoJHt2YXJ9IE1BVENIRVMgIi9NVCIpCi0gICAgICBzdHJpbmcoUkVHRVggUkVQTEFDRSAiL01UIiAiL01EIiAke3Zhcn0gIiR7JHt2YXJ9fSIpCi0gICAgZW5kaWYoKQotICBlbmRmb3JlYWNoKCkKLWVuZGlmKCkKLQotZm9yZWFjaChzcmMgJHtKUEVHX1NPVVJDRVN9KQotICBzZXQoSlBFR19TUkNTICR7SlBFR19TUkNTfSAke0NNQUtFX1NPVVJDRV9ESVJ9LyR7c3JjfSkKLWVuZGZvcmVhY2goKQotCi1pZihXSVRIX1NJTUQpCi0gICMgVGhpcyB0ZWxscyBDTWFrZSB0aGF0IHRoZSAic291cmNlIiBmaWxlcyBoYXZlbid0IGJlZW4gZ2VuZXJhdGVkIHlldAotICBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtTSU1EX09CSlN9IFBST1BFUlRJRVMgR0VORVJBVEVEIDEpCi1lbmRpZigpCi0KLWlmKFdJVEhfTUVNX1NSQ0RTVCBBTkQgTk9UIFdJVEhfSlBFRzgpCi0gIGFkZF9saWJyYXJ5KGpwZWcgU0hBUkVEICR7SlBFR19TUkNTfSAke1NJTURfT0JKU30KLSAgICAke0NNQUtFX1NPVVJDRV9ESVJ9L3dpbi9qcGVnJHtETExfVkVSU0lPTn0tbWVtc3JjZHN0LmRlZikKLWVsc2UoKQotICBhZGRfbGlicmFyeShqcGVnIFNIQVJFRCAke0pQRUdfU1JDU30gJHtTSU1EX09CSlN9Ci0gICAgJHtDTUFLRV9TT1VSQ0VfRElSfS93aW4vanBlZyR7RExMX1ZFUlNJT059LmRlZikKLWVuZGlmKCkKLXNldF90YXJnZXRfcHJvcGVydGllcyhqcGVnIFBST1BFUlRJRVMgU09WRVJTSU9OICR7RExMX1ZFUlNJT059Ci0gIFZFUlNJT04gJHtGVUxMVkVSU0lPTn0pCi1pZihNU1ZDKQotICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoanBlZyBQUk9QRVJUSUVTIFNVRkZJWCAke0RMTF9WRVJTSU9OfS5kbGwpCi1lbHNlaWYoTUlOR1cgT1IgQ1lHV0lOKQotICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoanBlZyBQUk9QRVJUSUVTIFNVRkZJWCAtJHtETExfVkVSU0lPTn0uZGxsKQotZW5kaWYoTVNWQykKLWlmKFdJVEhfU0lNRCkKLSAgYWRkX2RlcGVuZGVuY2llcyhqcGVnIHNpbWQpCi1lbmRpZigpCi0KLWlmKFdJVEhfMTJCSVQpCi0gIHNldChDT01QSUxFX0ZMQUdTICItREdJRl9TVVBQT1JURUQgLURQUE1fU1VQUE9SVEVEIC1EVVNFX1NFVE1PREUiKQotZWxzZSgpCi0gIHNldChDT01QSUxFX0ZMQUdTICItREJNUF9TVVBQT1JURUQgLURHSUZfU1VQUE9SVEVEIC1EUFBNX1NVUFBPUlRFRCAtRFRBUkdBX1NVUFBPUlRFRCAtRFVTRV9TRVRNT0RFIikKLQlzZXQoQ0pQRUdfQk1QX1NPVVJDRVMgLi4vcmRibXAuYyAuLi9yZHRhcmdhLmMpCi0Jc2V0KERKUEVHX0JNUF9TT1VSQ0VTIC4uL3dyYm1wLmMgLi4vd3J0YXJnYS5jKQotZW5kaWYoKQotCi1hZGRfZXhlY3V0YWJsZShjanBlZyAuLi9janBlZy5jIC4uL2NkanBlZy5jIC4uL3JkZ2lmLmMgLi4vcmRwcG0uYwotICAuLi9yZHN3aXRjaC5jICR7Q0pQRUdfQk1QX1NPVVJDRVN9KQotc2V0X3Byb3BlcnR5KFRBUkdFVCBjanBlZyBQUk9QRVJUWSBDT01QSUxFX0ZMQUdTICR7Q09NUElMRV9GTEFHU30pCi10YXJnZXRfbGlua19saWJyYXJpZXMoY2pwZWcganBlZykKLQotYWRkX2V4ZWN1dGFibGUoZGpwZWcgLi4vZGpwZWcuYyAuLi9jZGpwZWcuYyAuLi9yZGNvbG1hcC5jIC4uL3Jkc3dpdGNoLmMKLSAgLi4vd3JnaWYuYyAuLi93cnBwbS5jICR7REpQRUdfQk1QX1NPVVJDRVN9KQotc2V0X3Byb3BlcnR5KFRBUkdFVCBkanBlZyBQUk9QRVJUWSBDT01QSUxFX0ZMQUdTICR7Q09NUElMRV9GTEFHU30pCi10YXJnZXRfbGlua19saWJyYXJpZXMoZGpwZWcganBlZykKLQotYWRkX2V4ZWN1dGFibGUoanBlZ3RyYW4gLi4vanBlZ3RyYW4uYyAuLi9jZGpwZWcuYyAuLi9yZHN3aXRjaC5jIC4uL3RyYW5zdXBwLmMpCi10YXJnZXRfbGlua19saWJyYXJpZXMoanBlZ3RyYW4ganBlZykKLXNldF9wcm9wZXJ0eShUQVJHRVQganBlZ3RyYW4gUFJPUEVSVFkgQ09NUElMRV9GTEFHUyAiLURVU0VfU0VUTU9ERSIpCi0KLWFkZF9leGVjdXRhYmxlKGpjc3Rlc3QgLi4vamNzdGVzdC5jKQotdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGpjc3Rlc3QganBlZykKLQotaW5zdGFsbChUQVJHRVRTIGpwZWcgY2pwZWcgZGpwZWcganBlZ3RyYW4KLSAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIKLSAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIKLSAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4pCmRpZmYgLS1naXQgYS90ZXN0aW1hZ2VzL25pZ2h0c2hvdF9pc29fMTAwLmJtcCBiL3Rlc3RpbWFnZXMvbmlnaHRzaG90X2lzb18xMDAuYm1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YTI3MTUxLi4wMDAwMDAwCi0tLSBhL3Rlc3RpbWFnZXMvbmlnaHRzaG90X2lzb18xMDAuYm1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdGltYWdlcy9uaWdodHNob3RfaXNvXzEwMC50eHQgYi90ZXN0aW1hZ2VzL25pZ2h0c2hvdF9pc29fMTAwLnR4dApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMyMDg4Ni4uMDAwMDAwMAotLS0gYS90ZXN0aW1hZ2VzL25pZ2h0c2hvdF9pc29fMTAwLnR4dAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLWxpYmpwZWctdHVyYm8gbm90ZTogIFRoaXMgaW1hZ2Ugd2FzIGV4dHJhY3RlZCBmcm9tIHRoZSA4LWJpdCBuaWdodHNob3RfaXNvXzEwMAotaW1hZ2UuICBUaGUgb3JpZ2luYWwgY2FuIGJlIGRvd25sb2FkZWQgYXQgdGhlIGxpbmsgYmVsb3cuCi0KLVRoZSBOZXcgSW1hZ2UgQ29tcHJlc3Npb24gVGVzdCBTZXQgLSBKYW4gMjAwOAotaHR0cDovL3d3dy5pbWFnZWNvbXByZXNzaW9uLmluZm8vdGVzdF9pbWFnZXMKLQotVGhlIGltYWdlcyBoaXN0b3JpY2FsbHkgdXNlZCBmb3IgY29tcHJlc3Npb24gcmVzZWFyY2ggKGxlbmEsIGJhcmJyYSwgcGVwcGVyIGV0Yy4uLikgaGF2ZSBvdXRsaXZlZCB0aGVpciB1c2VmdWwgbGlmZSBhbmQgaXRzIGFib3V0IHRpbWUgdGhleSBiZWNvbWUgYSBwYXJ0IG9mIGhpc3Rvcnkgb25seS4gVGhleSBhcmUgdG9vIHNtYWxsLCBjb21lIGZyb20gZGF0YSBzb3VyY2VzIHRvbyBvbGQgYW5kIGFyZSBhdmFpbGFibGUgaW4gb25seSA4LWJpdCBwcmVjaXNpb24uCi0KLVRoZXNlIGltYWdlcyBoYXZlIGJlZW4gY2FyZWZ1bGx5IHNlbGVjdGVkIHRvIGFpZCBpbiBpbWFnZSBjb21wcmVzc2lvbiBhbGdvcml0aG0gcmVzZWFyY2ggYW5kIGV2YWx1YXRpb24uIFRoZXNlIGFyZSBwaG90b2dyYXBoaWMgaW1hZ2VzIGNob3NlbiB0byBjb21lIGZyb20gYSB3aWRlIHZhcmlldHkgb2Ygc291cmNlcyBhbmQgZWFjaCBvbmUgcGlja2VkIHRvIHN0cmVzcyBkaWZmZXJlbnQgYXNwZWN0cyBvZiBhbGdvcml0aG1zLiBJbWFnZXMgYXJlIGF2YWlsYWJsZSBpbiA4LWJpdCwgMTYtYml0IGFuZCAxNi1iaXQgbGluZWFyIHZhcmlhdGlvbnMsIFJHQiBhbmQgZ3JheS4KLQotSW1hZ2VzIGFyZSBhdmFpbGFibGUgd2l0aG91dCBhbnkgcHJvaGliaXRpdmUgY29weXJpZ2h0IHJlc3RyaWN0aW9ucy4KLQotVGhlc2UgaW1hZ2VzIGFyZSAoYykgdGhlcmUgcmVzcGVjdGl2ZSBvd25lcnMuIFlvdSBhcmUgZ3JhbnRlZCBmdWxsIHJlZGlzdHJpYnV0aW9uIGFuZCBwdWJsaWNhdGlvbiByaWdodHMgb24gdGhlc2UgaW1hZ2VzIHByb3ZpZGVkOgotCi0xLiBUaGUgb3JpZ2luIG9mIHRoZSBwaWN0dXJlcyBtdXN0IG5vdCBiZSBtaXNyZXByZXNlbnRlZDsgeW91IG11c3Qgbm90IGNsYWltIHRoYXQgeW91IHRvb2sgdGhlIG9yaWdpbmFsIHBpY3R1cmVzLiBJZiB5b3UgdXNlLCBwdWJsaXNoIG9yIHJlZGlzdHJpYnV0ZSB0aGVtLCBhbiBhY2tub3dsZWRnbWVudCB3b3VsZCBiZSBhcHByZWNpYXRlZCBidXQgaXMgbm90IHJlcXVpcmVkLgotMi4gQWx0ZXJlZCB2ZXJzaW9ucyBtdXN0IGJlIHBsYWlubHkgbWFya2VkIGFzIHN1Y2gsIGFuZCBtdXN0IG5vdCBiZSBtaXNpbnRlcnByZXRlZCBhcyBiZWluZyB0aGUgb3JpZ2luYWxzLgotMy4gTm8gcGF5bWVudCBpcyByZXF1aXJlZCBmb3IgZGlzdHJpYnV0aW9uIHRoaXMgbWF0ZXJpYWwsIGl0IG11c3QgYmUgYXZhaWxhYmxlIGZyZWVseSB1bmRlciB0aGUgY29uZGl0aW9ucyBzdGF0ZWQgaGVyZS4gVGhhdCBpcywgaXQgaXMgcHJvaGliaXRlZCB0byBzZWxsIHRoZSBtYXRlcmlhbC4KLTQuIFRoaXMgbm90aWNlIG1heSBub3QgYmUgcmVtb3ZlZCBvciBhbHRlcmVkIGZyb20gYW55IGRpc3RyaWJ1dGlvbi4KLQotQWNrbm93bGVkZ21lbnRzOiBBIGxvdCBvZiBwZW9wbGUgY29udHJpYnV0ZWQgYSBsb3Qgb2YgdGltZSBhbmQgZWZmb3J0IGluIG1ha2luZyB0aGlzIHRlc3Qgc2V0IHBvc3NpYmxlLiBUaGFua3MgdG8gZXZlcnlvbmUgd2hvIHZvaWNlZCB0aGVpciBvcGluaW9uIGluIGFueSBvZiB0aGUgZGlzY3Vzc2lvbnMgb25saW5lLiBUaGFua3MgdG8gQXhlbCBCZWNrZXIsIFRob21hcyBSaWNodGVyIGFuZCBOaWVscyBGcsO2aGxpbmcgZm9yIHRoZWlyIGV4dGVuc2l2ZSBoZWxwIGluIHBpY2tpbmcgaW1hZ2VzLCBydW5uaW5nIGFsbCB0aGUgdmFyaW91cyB0ZXN0cyBldGMuLi4gVGhhbmtzIHRvIFBldGUgRnJhc2VyLCBUb255IFN0b3J5LCBXYXluZSBKLiBDb3NzaGFsbCwgRGF2aWQgQ29mZmluLCBCcnVjZSBMaW5kYmxvb20gYW5kIHJhdy5mb3Rvc2l0ZS5wbCBmb3IgdGhlIGltYWdlcyB3aGljaCBtYWtlIHVwIHRoaXMgc2V0LgotCi1TYWNoaW4gR2FyZyBbSW5kaWFdCi1zYWNoaW5nYXJnQGMxMG4uaW5mbwotCi13d3cuc2FjaGluZ2FyZy5jb20gfCB3d3cuYzEwbi5pbmZvIHwgd3d3LmltYWdlY29tcHJlc3Npb24uaW5mbwpkaWZmIC0tZ2l0IGEvdGVzdGltYWdlcy90ZXN0aW1nYXJpLmpwZyBiL3Rlc3RpbWFnZXMvdGVzdGltZ2FyaS5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5NjY0ODcuLjAwMDAwMDAKLS0tIGEvdGVzdGltYWdlcy90ZXN0aW1nYXJpLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RpbWFnZXMvdGVzdGltZ2ludC5qcGcgYi90ZXN0aW1hZ2VzL3Rlc3RpbWdpbnQuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTAxYzYxLi4wMDAwMDAwCi0tLSBhL3Rlc3RpbWFnZXMvdGVzdGltZ2ludC5qcGcKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0aW1hZ2VzL3Rlc3RvcmlnLmpwZyBiL3Rlc3RpbWFnZXMvdGVzdG9yaWcuanBnCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODE2YTBjLi4wMDAwMDAwCi0tLSBhL3Rlc3RpbWFnZXMvdGVzdG9yaWcuanBnCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdGltYWdlcy90ZXN0b3JpZy5wcG0gYi90ZXN0aW1hZ2VzL3Rlc3RvcmlnLnBwbQpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE1ZDFlOS4uMDAwMDAwMAotLS0gYS90ZXN0aW1hZ2VzL3Rlc3RvcmlnLnBwbQorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotUDYKLTIyNyAxNDkKLTI1NQotMC8tMC8tMTAuMjEvNTEuNTEuNjIvNjIvODMvODMvOjIvOjIvOjMtOjMtOjMtOjMtOjIvOjIvOTEuODAtODAtOTEuOjIvOjIvODAtODAtODAtODAtODAtODAtODAtODAtNi4rNi4rNi4rNS0qNS0qNS0qNCwpNCwpNCwpNCwpNCwpNCwpNCwpNCwpNCwpMi0pLyokLywlMC0mMC0mMS4nMi8oMzApMzApNjMsNjMsNzQtODUuOTYvOTYvOjcwOjcuQTowQjwwRD4yRkA0SUE0SkI1S0M2S0M2TkU2TUQ1T0MzTkIyT0MzT0MzUEQ0UkU1Uj8xWT8yYkA0bkI1fUU2i0g4mUc5o0Y3sEg7uEY7v0Y7xUY9x0c+y0hAy0hA0EVC50ZM7UNM7EVN60VJ7kNJ70JE8j9D9D1B+DtB9zpA9Do/8Dw/6T9C4j9A1z88y0E3uz0vtUAutUAutD8ttD8ts0Atsj8tr0AtrT8uqkEupkEtokIsoEEtm0ArmUErlkEslD4tkj8vkj8vkT4ukT4skT4skjwrkjwrlD4tlD4tlD0qlD0qlT4rlT4rlj8slkAvlj82lT41lz00nz8zqUIzs0QzvEQ0v0Q0uT8wtkIzrEY6nkg7h0c7b0EyVTkrQzMmPTUyOjY1OTU0ODQzNzExNjAwNS8vNS8vNzIvNzIvNzIvNjEuNjEtNjEtNTAsNDEsLy8tLjAtLy8tLy8tMC8tMC8tMi4tMi4tNSwtNCssNCorMykqNygrPS4xRTY5UDo8akFFfEhKjk5PlU9Rn1dbqmRuqm+Dn3SQlHujh3+ugIa6foi9dHquYGGRVEt2UUVpU0pnUEhfTUheVFFiZmRvfH2CjZGQmZ6Yo6mfoqianqCTj5GDe3xsZmdXWVhGUU5FVVJbVVFiVVFiMC8tMC8tMTAuMTAuNDAtNTEuNjIvNjIvODMvODMvOjIvOjIvOjMtOjMtOjMtOjMtOjIvOTEuODAtODAtODAtODAtOTEuOjIvODAtODAtODAtODAtODAtODAtODAtODAtNi4rNi4rNi4rNS0qNS0qNCwpNCwpNCwpNS0qNS0qNS0qNS0qNS0qNS0qNS0qMy4qMSwoMC0mMC0mMS4nMi8oMzApNDEqNDEqNjMsNjMsNzQtODUuODUuOTYvOjcwOjcuQDkvQjwwQz0xRT8zSEAzSUE0SkI1SkI1TEM0TEM0TUEzTUExTUExTkIyT0MzUUQ0UD4wVT8xXkEzakM0eEQ2hUY1kkU1nEMzp0M0r0E0tUA2vEI3wEQ6xEU8xUY9zUNA4UVJ50JJ6ENJ6kRI7URH8ENF80BD9j9D+DtB9zpA9Do/8Dw/6T9A4EBA1UA8ykA2uT4vtUAutD8ttD8ttD8tsj8ssD8tr0AtrT8uqkEupkEtokIsn0Asm0ArmEAqlkEslD4tkj8vkj8vkT4ukT4skD0rkjwrkjwrlD4tkz0slD0qlD0qlD0qlT4rlj8slkAxlUE2lj82mD41oT80q0EztUQ0vUM0v0Q1u0Eyt0M2rEY6nEg9hUc6bEAzUzkqQjQpPjYzOjY1OjY1ODQzODIyNzExNjAwNjAwNzIvNzIvNzIvNjEuNjEtNjEtNTAsNDEsLy8tLjAtLy8tLy8tMC8tMC8tMi4tMi4tNC4uNSwtNSssMykqNSkrPC0wQzQ3Tjg6ZD0+dkRDhkpJj01OmlRWpGFqpWx9nXKOkXuihoCuf4W5e4S7b3WpW1uNUkl2T0NpT0ZlUEhgUEhfUk5fW1lmbm90hYaIlJmVmZ6XmqCUmZ2Pj5GDfn9xamtbXVtMVlNKWFNaVlJhWFFhLy4sMC8tMC8tMTAuNDAvNDAvNTEuNTEuNzIuNzIuNzIuNzIuOTIsOTIsOTIsOTIsOTEuODAuODAuNy8tNy8tODAuODAuOTEvODAuODAuODAuODAuODAuODAuODAuODAuNi4sNi4sNS0rNS0rNS0rNCwqNCwqNCwqNi4sNi4sNi4sNi4sNi4sNi4sNi4sNC8rMi0pMS4pMi8qMzArMzArNDEsNTItNTItNjMuNjMuNzQvNzQvODUwOTYxOTYxOjcwPzguQDouQjwwRD4yRz80SEA1SEAzSEAzSkA0SUAxSz8xSz8xSz8xTEAyTUExTkIyTUEzUUEyWUI0ZEM0cUM0fEMyh0IykkEwmDwtoTsspzsurz0ytUA2ukQ6v0Y9xUQ+2UNF4UBG40JH6ENH6kRG8ENF9EFE+D9E+jtA+To/9TtA8D1A6EBA3UI+0UA7xkA1tz0us0Ats0Ats0Atsj8tsD8trz4srUAsqj8tp0AtpUAuoUAtnUEsm0ArmEAqlUArlD4tkj8vkT4ukT4ukT4ukD0tkD0rkD0rkT4skT4skjwrkjwrkz0slD4tlT8ulT8wlUE2lj81mj4zpD8zr0E0uUM1v0Q1wUM1wEQ4uUc8rkk9mUo9gUc7aEA0UTosQjUsPzc0PTc3PDY2OzU1OTQxODMwNzIvNzIvNjIvNjIvNjIvNTEuNTItNTItNDEsMjEsLzEuLTIuLzEuLzEuMDAuMDAuMTAuMy8uNS8vNC4uNSwtNCorNCorOS0vPjI0STU2Wzk3bD86fUZBhklEkE9NmFtgm2Z2lW6JjHeeg32tfYK5dX63Z2ykVVWJTUV2TEFrTUFlT0ZjUUhjTklfTktcW1tlc3R5h4mIh4yGio+IjZCFhop8eHpsZmhaWltNVlNMWlVbWlRgW1NgLi0rLy4sLy4sMC8tMy8uNDAvNDAtNTEuNjEtNjEtNjEtNjEtODErODErODErODAtODAuNy8tNi4sNi4sNi4sNi4sNy8tODAuODAuODAuODAuODAuODAuODAuODAuODAuNS0rNS0rNS0rNS0rNCwqNCwqMyspMyspNi4sNi4sNi4sNi4sNi4sNi4sNi4sNC8sMzArMzArMzArNDEsNDEsNTItNTItNTItNTItNjMuNjMuNzQvODUwOTYxOTYxOTYvPjctPzktQTsvQjwwRT0yRT0yRj4zRj4xRz0xRz0xSDwuST0vST0vSj4wTEAwSkEwTEU1TkU0VkU1XkQzaUQyc0IxfkEvhj8tjDkplDknnTkqpD0urEAzs0U4uEg8wUY+0kRD2kFD3kJF4kRF6ERF7EJD80BD9z9B+jtA+To/9jxB7j5A5UFA2kI9zUA5wkAztj4usEAssEAssEAsrz4srj8srj8srD8rqUAtpj8so0AtoD8snEArmEAqlkAplD8qkT4skT4ukT4ukT4ukD0tkD0tjzwqjzwqkD0rkD0rkD0rkD0rkjwrkT4slD4tkj8vlUE2l0A2nD4ypkA0skI2vEM4wUM3wkI3wkY8uko/rEtCl0pAfEY6YkA0TDouQTctQDg1Pjg4PTc3PDY2OjUyOTQxODMwODMwNjIvNjIvNjIvMzIuNTItMzItMjEsMTItLTIuLTIuLzEuLzEuMDAuMDAuMTAuMTAuNTEwNjAwNS8vNSwtNCssNiwtOjAxRDIyVDcxYzszckI4e0U7g0lFiVJVjV9si2mCg3OYfXmreH21b3e1YWWiU1KMTUR5TEBwTEBoUEVnUUZmTENeSENXTkxaXl5mam5xdXl4eX54eoB2d3pva29hYGJVV1lMVFRMXVdZXVZdXVZeLS0tLS0tLy4sLy4sMC8tMTAuMy8sNDAtNDAtNDAtNTAsNTAsNTAsNTAsNy8sNy8sNC8sNC8sMy4rMy4rMy4rMy4rNC8sNC8sNTAtNTAtNTAtNTAtNTAtNTAtNTAtNTAtMy4rMy4rMy4rMi0qMi0qMSwpMSwpMSwpNC8sNC8sNC8sNC8sNC8sNC8sNC8sNC8sNDEsNDEsNDEsNDEsNTItNTItNTItNTItNTItNTItNjMuNzQvNzQvODUwOTYxOTYvPDUtPTYsPzguQDkvQjkwQzswQzswQzswRTsvRDouRjouRzsvSDwuST0vSj4wSUAxSkc2TUg1Ukc1WUY1YkUzakQxdUIvfD8sgjspizopkzoqmj0so0IyrEY4sko9vEpAzEdC1ERD2ERE3UVE40ND6UFB8D1A9Dw++To/+Ts99Dw+7T8+4UI+00M6xUE1uT8wsj8tr0Atrj8srj8srj8urD4trD4tqj8tqD4upD8toD8snj8rmj8slz8rlT4qlD8rkT4skD8ukD8ujz4tjz4tjj0sjj0sjj0sjj0sjj0sjj0sjj0sjzwsjz4tkT4ukUAvlEI0l0E0nkA0qEAztkE3v0M5xUI6xEE5vkM7t0g/pkxDkUtDdEU7Wj4yRTktPTYsQTk2QDg2Pzc1PjY0PTUzPDQyOTQxODMwNjIvNDMvNDMvMjMuMzIuMjMuMTItMDItLTIuLDIuLTIuLTIuLzEuLzEuMDAuMTAuMzIwNTEwNTEwNC4uMiwsNSwtNy4vPjAvTjUuWTkuZT0xb0E0dEM8eUtLgFplhGiBf3CXeniqdXu3bHS1X2SmVFSUT0eDTEJ3TkFtTkJoTUFlSkFgR0JZSEVYS0tXTVBVXmJjYGZiYmlhYGZcWmBWV1pPVVhNWFhQXllWYFdYYFdaLCwsLCwsLi0rLy4sLy4sMC8tMy8uMy8sMi4rMi4rMy4qMy4qMy4qMy4qNS0qNS0qMy4rMy4rMi0qMi0qMi0qMi0qMy4rMy4rMy4rMy4rMy4rMy4rMy4rMy4rMy4rMy4rMy4rMi0qMi0qMi0qMSwpMSwpMSwpMCsoNC8sNC8sNC8sNC8sNC8sNC8sNC8sNC8sNDAtNDEsNDEsNDEsNDEsNDEsNDEsNDEsNDEsNTItNTItNjMuNzQvODUwODUwOTYvOzQsPDUrPTYsPzguQDcuQTgvQTgvQTkuQzkvQzktRTktRjouRzsvST0vSj4wSEExSkc2Skk3Tkc1VkY2XEUzZEMybEEwdD8tfD0sgzwqjDsqlD0snEAxo0Y1qko6tEo9xEhAzEVB0UZB1kVA3kNB5UE/7D4/8js99zs89Do78Dw96UA93EM9zUM4vkAysj8trj8sq0Asq0Asqj8rqj8tqT4sqT4sqD8spT4to0AtoD8snD8tlz8rlT4qkz4pkT8qkD8sjz4tjz4tjz4tjj0sjj0sjj0sjTwrjj0sizwrjTwrizwrizwtjD0sjT4vjj8wlEI0mEIzoUEzrEI1uUM5wkM6xUI6w0I8u0I6sUhCo05HjU5FcEg+VEA1QTsvOTYtQDg1QTc1Pzc1PjYzPTUzOTQxOTQxNzMwNDMvNDMvMzQvMjMuMjMuMTMuMDItLjMtLTMvLTMvLjMvLjMvMDIvMDIvMTEvMTEvMjEvMzIwMzIwNDAvMi4tMS0sNC4uOC4sRzQtTzQpWDgrYDwwZT82bUdGeVlkgmuFgHWffHyyd3y8bnW7ZGivW1uhU0yPTEJ+T0FyTEBoST1jSD5gSEJeRUNYQEJPPEFHQ0hLRE1KSlFKSlFJSVBIS1FHT1VLVldPXllTYFlTYFhVKysrLCwsLCwsLS0tLy0uMC8tMC8tMC8tMS0qMS0qMS0qMS0qMi0pMi0pMi0pMi0pMi0qMiwsMSsrMSsrMSsrMSsrMiwsMiwsMSsrMSsrMSsrMSsrMSsrMSsrMSsrMSsrMiwsMiwsMiwsMSsrMSsrMSsrMCoqMCoqMy0tMy0tMy0tMy0tMy0tMy0tMy0tMy4rNDAtNDAtNDAtNDAtMy8sMy8sMy8sMy8sNDAtNDAtNTEuNjIvNzMwNzMwODQxODUwOjMtOzQsPDUtPTYuPzYvPzYtPzYtPzYtQzkwQzkvRTgvRjkwRzoxST0xSj4ySEAzSEU2R0U2S0U1UUQ0WUQzX0IyZ0Avbj0sdj0sfDoqhTkrjDoskz0um0IyokY3rEY4vEc9wkY+yUY+0EU+2URA4kM/6kBA8D4+8jo68Ts67Dw85EE81kM7xkQ2tUAvqj0pqj8tqUAtqUAtqUAtqD4uqD4upz0tpT4toz0uoD8unj8tmj8tlj8slD8rkT8qjz4pjz4rjT4tjT4tjD0sjD0ujD0uizwtizwtizwtij0tijssiTwsijwviz4ujD4xjD8vkkM0mEIzoUEzrkI2vEM6w0Q9xEM9wEM9ukdCslFLpllTj1hRc1JJV0k+Q0M3PD82PjkzQDcyPjYzPTYwOjUxOTQwODMvNjMuNDMuNDMuMzQvMjMuMTMuMTMuMDItLjMtLTMvLTMvLjMvLjMvLjMvLjMvMDIvMDIvMDAuMTEvMjIwMjEvMTAuLy4sMi4tNC8sPzArRDApSzMpVDgtWjw0ZUdHdV1qg3ONiYCrhYS+foPHdHrGbXC9ZWWvVlOaTEOCSz9xSj1oRztjRT5fRkJdREJXP0FOOz9IOkJFPkhHRE1IR1FJR1FISlJHTlZLVVhNXlpPYVlOYVhPKysrKysrLCwsLS0tLiwtLy0uMC8tMC8tMS0sMS0qMS0qMS0qMi0pMi0pMi0pMi0qMiwsMSsrMSsrMCoqMCoqMSsrMSsrMiwsMCoqMCoqMCoqMCoqMCoqMCoqMCoqMCoqMiwsMiwsMiwsMSsrMSsrMCoqMCoqMCoqMiwsMiwsMiwsMiwsMiwsMiwsMiwsMiwsMy8sMy8sMy8sMy8sMy8sMy8sMy8sMy8sNDAtNDAtNTEuNjIvNjIvNzMwODQxODUwOTIsOjMrOzQsPDUtPjUuPjUuPjUuPjUsQjgvQjgvRTgwRjkwRzoxSTwzSj00ST81RkI2RkI2SkI1T0E0VUIzXEAyYz8xajwtcTwudzkqfTgphTcqjDoslj4wm0I0pEI1skY6ukU7wUY+ykc/1EdA3kZB50NB7kJA7Ts76zs75z4730I70UQ6v0Q0sEEupD4opkEtpkEtpkEtpUAupUAupD8tpD8tpD4voj4un0AunD8umD8tlT4rkT8qjz4pjz4rjT4tjT4tjT4tjD0sjD0uizwtizwtij0tij0tiT0viDwuiDwuiDwvhz0wiD4xiz8xkUQ0lkMzokI0rUM2ukM7wUQ+wURAu0VBuVBMsltUpmZdkWZddV9UW1VJSE5CQ0k/PDkyPzgyPjcxOzYwOTQuNzQtNjMuNDMuNDMuNDMuMzQvMjMuMTMuMTMuLjMtLjMtLjMvLTMvLjMvLjMvLjMvLjMvMDIvMDIvLy8tMTEvMjIwMjIwMTAuMC8tMC8tMy8sOCwsPC0qQzAqSzcwUzw2XkhKdGJuh3qUkIq2jI3GhIjPeoDMdHfGamy3WVegSUSERT1uRzxkRDxhQz5eQ0FZQENWQERQPkVLR1FSS1dVUV5XVWBYVGBWU11UVF5TWV9TXltMYVpKYVpKLC0vLC0vLS0vLS0vLS0tLS0tLiwtLi0rLy4sLy4sMS0qMCwpMCwpMCwpLysoLysoLysqLysqLysqLysqLysqLysqMCwrMCwrLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqMCwrMCwrMS0sMS0sMi4tMi4tMi4tMS0sMS0sMS0sMS0sMS0sMS0sMCwpMS0qMi4rMy8sMy8sMy8sMy8sMy8sMy8sMy8sMy8sMy8sNDAtNTEuNjIvNzMwODAtOTIsOjMtOzQuPTQvPjUuPjUuPjUuQDUvQDYtQjUtQzYuRDcvRjkxSDszRz00Rz41SEA1SkA2UD81VD4zWDwxXjkwYzcsbTkudDgtfDgtgzkujTsvkz0wmD8xnj4wp0EzrUE0tUM4vkU6ykc91Ec+3kU/5UNA6EA/6kJB5kRB2kU+yEQ4t0IxqkEuokIsokEuoUAtoj8soj4uoT0toT0toj4uoD8vnDwsmj0smDwtlT4tkz0skD0rjj0qjD0sizwrizwrij0tiTwsiTwsiTwsiDothzstiT0vhz0whz0whz0wiD4ziEA0iUE1i0E0kUU1l0Q0o0U5sUk+ukdAu0Q+u0VBuE1HtVtTr2Zfo3FmkXNofnJkampeVl5TSlJHTExCSkY9Qj41PTkwOjYtNzQrNjMsMzMrNTQvMzQuMzQvMjMuMDItLzEsLjAtLDEtLTIuLTIuLTIuLTIuLzEuLzEuLzEuLzEuMDIvMDIvMTEvMTEvMTEvMTEvMTEvNDAvNCswOy8zQTMyQzQxSjs4XU5ReW17i4Wfk5C7lJbPkJXZg4nTdHrGam63YGOoWluUTEl0SEJkQT5dPj5YP0JVQUlWTFVcVWBiYnFub355doZ8c4B2bHlvaHRoX2tfV19QXl1JYlxGY11HLC0vLC0vLS0vLS0vLS0tLS0tLiwtLiwtLy4sLy4sMCwrMCwpMCwpLysoLysoLysoLiopLiopLiopLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqLysqMCwrMCwrMS0sMS0sMS0sMS0sMS0sMS0sMS0sMS0sMS0sMS0sMS0sMCwrMS0qMi4rMi4rMy8sMy8sMy8sMi4rMi4rMi4rMi4rMi4rMy8sNDAtNjIvNjIvODAuOTEuOjIvOzQuPTQvPjUwPjUwPjUuPzQuPzQuQjUvQjUtRDcvRTgwRzoySDszSD41SD41TD02Tz42Uj41VjsyWjkwXzcvaTgxcDcueDgugTgvijovkDwxljwxmz0xokAzp0EzrUM2tEQ4vkU6yUY81EU920M+30RA4EVB30dC1Ec+xEY6s0QzpUIvnkItn0MunkEvn0Aunj8tnj8tnj8tnj4unz8vmj0smT4slj0tlD0skD0rjz4rjD0sjD0sizwrij0riTwsiTwsiTwshzsrhzsthTwthjwvhT0vhT0xgz0xhT8zhkA2iEI4iEI2k0c5mEY4o0c8r0pCuEhEuEdDt0tIs1ROsWRcqnFmn35vkH9vf3xtbXNlWmZaTlhNTE5DS0k9RUM3QT41PToxODguNDQsMTEpMjMtMjMtMTItMDEsLzEsLzEsLjAtLjAtLzEuLTIuLzEuLzEuLzEuLzEuLzEuLzEuMDIvMDIvMTEvMTEvMTEvMTEvMTEvMjAxNSs0OS03PDE1PzU0ST89XlVWeXN9ioiek5O5lJfKkJbUhIvPeYHCcXm4a3StaG6eXWCBWFpxU1VqUldqVF5oWmdtZnZ2coJ/dIh/fpKHg5WJfo6Bd4d6coBxZnRnWmVUW1pFYFpCYlxELS4wLS4wLS4wLS4wLS4wLS4wLi4uLi4uLiwtLi0rLi0rLSwqLysqLiopLionLionLCspLCorLCorLCorLCorLCorKykqKykqLSssLSssLSssLSssLSssLSssLSssLSssLCorLSssLSssLSssLSssLiwtLiwtLiwtLiwtLy0uLy0uLy0uLy0uLy0uLy0uLy4sMCwrMCwrMS0sMi4tMi4tMi4tMi4tMS0sMS0sMS0sMS0sMS0sMi4tMy8uNDAvNTEuODAuOTEvOjIwPDQxPTMxPjQyPTMxPTQvPzQwPzQuQTQuQTQuQzYwRDcxRjkzRzo0SDs1Sjs2Szw3Tj02UDs2Uzo1VzgzWzYuYzYwazYudDUsfTcvhzkvjTswlDwylz0ynkA2oEA0okAzqEAzsUM2ukQ4xUU8zUQ81UZA10hC1ElCzEk/vkU6rkMzoUIwnEEunUIvnEEvnD8umz4tmz4tmz4tmz4vmz8wmDwtlj0tlDwukz0ujz4tjD0sjD0uij0tiTwsiTwsiTwsiDwshzsthTwthDotgzsthDwwgjwwgjwygj4zgz80hUE4h0M6iEQ5lEo9l0g7oEg+rEtEsktGs0xHslNNrmBWrXNnpoFxnYx6kY57gol3c4BvY3FiWGNVTlJETU5ASEk7REQ4QEA0OjwvNDYrLzEmMTIqMDErLzArLzArLi8qLzArLy8tLy8tLy8tLjAtLy8tLy8tLy8tLy8tLy8tLy8tMDAuMDAuMDAuMDAuMDAuMDAuMDAuMS8yNis5OCw6OC80OzYzSEVAX15Zenl+i42akJSxkpe/j5XHhI7DfYm7e4m2fIuyfYyrfYiaeYOPcX6Hb36Dbn5+cIN/eY6Fg5mNi6GUkaiYkKWUiJ2Mg5WFfI17antrXGhUWFhAXVk+X1tALS4wLS4wLS4wLS4wLS4wLS4wLi4uLi4uLiwtLiwtLSwqLSwqLysqLiopLionLiopLCorLCorKykqKykqKykqKykqKigpKigpLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLSssLSssLSssLSssLiwtLiwtLiwtLiwtLiwtLy0uLy0uLy0uLysqMCwrMS0sMS0sMS0sMS0sMCwrMCwrMCwrMCwrMCwrMCwrMS0sMi4tMy8uNDAvOTEvOjIwOzMxPDQyPTMxPTMxPTMxPTMxPjMvPjMvQDIvQDMtQTQuQzYwRDcxRTgyRjkzSDk0STo1Sjs2TDo2Tjk0UTgzVDUwXjcyZTYwbzYveDgvgjkwizsykDwylD0zmkA3mz80mz8ynz8xpUEyrkI1uEM5v0U6yEg/y0hAykpBw0hAtkY6qkI1nkEwmUAumkEvmUAumD8tlz4slz4smT4smT0umD8vlj0tlD0skz0ukD0tjj0sij0rij0tiTwsiTwsiDsrhzsrhzsrhDsshDssgzstgDssgTsvgDwxgT0ygT41g0A3g0M6h0Q8iEU8lEtClkg+nkdAp0pFrkxJrlFMrV1Wqmpep4BvoY95mpqCj5uDhpWAeot4bXtsYm1fU1pKUVVGS09ARUk6QEQ2Oz0wNTcsMTMoMDEpLzAoLi8qLi0pLi0pLy4qMC8tMC8tMC8tMC8tMC8tMC8tMC8tLy8tMC8tLy8tMTAuMDAuMTAuMDAuMDAuMDAuMDAuMy4yNyw6Nio4My0xOTYxSEo/YmZYe4B6i5CTjZOjj5awjJW2g5CygZCvhZmyjaS2kqizlKerkaOjjKCeh56YgpmPfZiJgZyLiKOQlLCamLGblK2Xi6ONhZuGfpF9a3xpWGZPU1U9WlY7Xlo/Ky8yKy8yLS4yLS4yLS4wLS4wLi4wLi4wLS0tLS0tLi0rLSwqLSwqLSwqLCspLCspLCorLCorLCorKykqKykqKigpKigpKigpLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorKykqKykqLSssLSssLSssLiwtLiwtLy0uLy0uLy0uLysqMCwrMCwrMS0sMCwrMCwrLysqLysqMCwrLysqLysqMCwrMCwrMi4tMy8uNDAvOjEyOjEyOzMxPDQyPTMyPTMyPDIwPDIwPjMxPTIuPzEuPzEuQDIvQTMwQjQxQzUyRDYzQzg0RDk1RTo2Rzk2SDk0Szg0TjUwWDcyXzYwaTcwczgwfToxhjwxjD4ykD4yl0A2lz81lz81lz8znEAzo0M1q0M2s0U4ukU7vUc9vkg+uUc9sEQ4pkE1nEAxl0Avl0Atl0Atlj8ulT4tlD0slj0tlj0vlj0vlTwukzstkjwvjjwuizwtij0tiTsuiDwuhzsrhzsrhjoqhjoqhDssgzorgjosgDougDowgDwxgD00fz82gkI5g0Q9h0ZAiEg/kUtDkkg/mkdBo0tHqFBMqVlSqWZdpnZooox3m5mAlaSHjKOHhp2DfpF9dIJxanVlXGVUVl9MTlVDRUw6P0Y2PEAyNzovNTgtMTIqLzAoLi0pLysoLysqMCwrMS0sMi4tMS0sMS0sMS0sMS0sMS0sLy4sMS0sLy4sMi4tMC8tMi4tMC8tMC8tMC8tMC8tMi0xOCw6NSk1MSsrNjYsR0w4YWlSeoNwiJKHjZeWj5qgjZmliJajh5uikKqpm7mxob+zmraomranm7eomLelkbGciauSiauQkLGUkrOWlbSVkK2PiKKFhJuBe5J4Z3pkVGJJUVQ5VlU5WVg8LDAzLDAzLi8zLi8zLi8xLi8xLy8xLy8xLi4uLi4uLy4sLi0rLi0rLi0rLSwqLSwqLiwtLSssLSssLCorKykqKykqKigpKigpLCorLCorLCorLCorLCorLCorLCorLCorLCorLCorKykqKykqKykqKigpKigpKigpLCorLCorLCorLSssLiwtLy0uLy0uLy0uLysqLysqMCwrMCwrMCwrLysqLiopLSkoMCwrMCwrMCwrMCwrMS0sMi4tMy8uNDAvOjEyOzIzOzMxPDQyPTMyPTMyPDIxPDIwPTIwPTIwPjAtPjAtPzEuQDIvQTMwPzQwQDUxQDcyQDkzQTo0Qjk0Qzg0Rjc0SDUvUTUxWDUvYTYvbDgtdjovgDwvhj4wiz0xkz81lT41kz81kz80lUI0mkI0oEM0pUQ0rEI1sEQ4tEU6sUU7qkI3okA1mj4xlj4wlT8ulUAslD4tkz0skzwrkzwrlDwulDwukzstkjwtjzwujTstizwtiTwshzsthzsthjoqhjoqhjoqgzopgzorgTkrfzktfzktgDwxfzwzfz82gEE4gkM8hUY/iElCiklDjklCkEdAl0hEoE9Lp1ZTp2BaqXBlpINynJR9lqCFj6iKiKeIg6CEfpZ+eod1cXxrZHBcXWlVUl5KSlNAQks6PkU1PEAyOTwxMzQsMjIqMS0qLysoLykpMCoqMSsrMiwsMSsrMSsrMSsrMSsrMSsrMCwrMCwrMCwrMS0sMS0sMS0sMS0sLy4sLy4sLy4sMiwuOCo3NSgxMysoNTYmRUsxXGdHdYJkhpN5jpuKkZ6Ukp6ajZ6YjaWXl7SeosWlqc6tpcmtp8mwp8uxpMisl76fi7ORiLCNjbKQjrKOkLKPjayKhKGCgJl7d45yZHhdUmBGTlI3UVE1U1I2LDAzLDAzLDAzLDAzLi8xLi8xLi8xLi8xMDAwLy8vLy8vLy8vLy4sLy4sLy4sLi0rLy0uLy0uLiwtLSssLCorKykqKykqKigpKykqKykqKykqKykqKykqKykqKykqKykqLCorKykqKykqKykqKigpKigpKScoKScoKykqKykqLCorLSssLiwtLy0uLy0uMC4vLysqLysqLysqLysqLysqLiopLSkoLCgnMCwrMCwrMCwrMCwrMS0sMy8uNDAvNTEwOjEyOzIzPDM0PDM0PTM0PDIxPDIxOzEwPDEvPDEvPjAvPS8uPjAtPzEuQDIvPjMvPTUyOzYyOzgzPDk0PTo1PjkzQDcyQzYwRzQuTzQtWTQsZDUrbjgseDotfzsuhTsujzw0kTw1kD4zj0AzkEEyk0Ixl0EymkExoD4xpkA0qkI3qkI5pkE3nz41mD4zlT8ykj8tkj8tkT4skD0rkTsskjwtkjwtkjwtkTsukTsujzwujTstijsuiDothzsthDsshTkphTkpgzopgzopgjkqgTkrfjgsfjgsgT0ygD00gEA3gUI5hEU+hUhDiEtGjE1GjElDjkdBmEpIoVNPqF1aqWhiqXtupI55mZyBkqeIiayLgqqIgKGEgJiAfot3eIFuandjZHJbWmdTUV1JS1RDRUw8QEQ2PD80NjcvNDQsMy8sMSwpMSgpMSgpMyorNCssMikqMikqMikqMikqMikqMCoqMCoqMCoqMSsrMSsrMCwrMCwrMCwrMCwrMCwrMSstNikyNSktNC0lNDYhQkknV2M7cYBXgpJtjZx9kKCGkqGMjaCKjaiJlbiOoMiUpNCdqdOrqNKup9Gtoculk72Xha+HgqyEh7CGiK6FjLGIi6uGgZ97e5R0cYhrX3NXTV1CSU8zSk0wS0svLi8xLDAxLi8xLi8xLjAvLjAvLjAvLy8vMDAuMDAuMDAuMTAuMC8tMC8rLy4sMS0sMi4tMS0sMS0sMCwrLyssLCorKykqKykqKykqKykqKykqKykqKykqKykqKyksKykqKyksKykqLSgsKigpLCgpKScoKScoKScoKykqKykqLCorLSwqLiwtLi0rLy4sMC8tLSwqLSwqLysqLysqLysqLiopLCgnLCgnMS0sMi0qMi0qMi0qMy4rNC8sNTAtNjEuOzMxOzMxPDQyPDQyPTMyPDIxOzEwOzEvPDEvPDEvPS8uPS8uPS8sPjAtPzEuPTIuPTQvPTYwOzgxOjoyOTo0OTo0OzgxPzYxQzIrSjEsVDErXjMsZzctbzktdT0uez0whz00iz0ziz8yjEAyjkAzj0Axkj8xlT0vmDwvnD4yokI2oUM3nkI3mT80lj4ylT8ylD4vkz0ukD0tjzwsjjwujD0ujD0ujT4vjjwujjwuizwvijsuiTsuiDothjoshDssgjorgjorgDsrfjsrfjsrfDosfTksfDougD4ygT41gEA3gkM6g0c/hktDiE9Ii09HjEhFjkhGk09MmFtWnmdgnXVpnod1npiAlKGFj6qLiayLg6iHgKGEfpt/fI95dIhvan5jY3peXXFYV2ZPT1xISVJBQUg4PkAzOTkvODUuNy8sMyspMigpMigpMykqNCorMCosLysqMCosMCoqMCosMCosMiksMiksMyotMSstMSstMSstMCwtMCwtMCwtMSsvNSowNSssNC0lNDYhP0YlVGA4bn1SgZBniZl0jZ56jaF+iKF6iqd7kbaCm8SIn8uQn8mZnsedncaamMGVjLeKgq2Aha6CjLWJhKt/ia6FiamCfpx4do9vbINmWm5TSlpAR00zRkoxREYuLzArLjArLzArMDEsMDEsMTItMTItMjEtNDMvNDMvNDMvNjIvNTEuNDEsMy8sNC8sNTAtNTAtNC8sMy4rMy0tMS0sMCwrMCwrLiwtLiwtLi4wLS0vLCwuKystKikuKSkrLikvLiktLygvLiktLyktLiktLiorLiorLysqLysqLSwqLi0pLS0rLi8qLi8qLi8qLS0tLS0tLiwtLy0uLy4sMC8tMi4rMi4rMi0qNCwpNS0qNi4rOTArOjEsOzIrOzIrPTQtPTQtPjUwPjUwPjUwPTQvPDMuPDMuPTIuPDEtPDEvOzAuPS8uPjAvPjAvQDEuQTApQDEqOzQqNzctMzkvMzkvNTYwOjMtPy0rRionTCknUyomWi8oYDUsZDwwa0AweUEygEEwhkEyi0Izj0Azkz0wkzsvkjgtkzsvlD4vlEExlUIylEMykkEwkT4ukTsulzoylzoykjsxjT4xiD8whD8vgj8ugz4uiEAxiD8wij4xijwwiTsviDouhjotgzstezkrfkAzdzwucTcpdz0vdz0vdjstfT8yezsvgkA0iEU8ikpBiExChk1ChFBFh05FkUtJl1NSlGJbkW9jjH1qiYlxiZZ8ip6CjaSHjaaJjqeKjaeMh6SIfp+CdZp7b5d1aY1pYoRfW3pYWnNVW21TV2VOUFdFSks9Qz82QDkzOzAuNioqNCgqMycrMycrMSYqLCotKSsqKiosKigpLCcrLigsMSgtMictMyguMyguMygwMigwMCkwMCkwLyoxLyowLyktMSsrMC0oLy8jPD8sVlxCcHpYf4tnjZx1i51zjKF2jKZ3iqh2iap1jrR7mb+Gn8GPnb6PlrqKj7ODiK59hat8g6p7hap+g6h9g6Z+gJ58eZR1coltaHxjWWtVTltHSVA+Q0g0P0IvMDErMDErMDErMDErMTIsMTIsMjEsMzItNDMuNDMuNzQvNzQvNjMuNTItNTAsNTAsNy8sNy8sNi4sNi4sMy4rMi0qMS0sMCwrLy0uLy0uLy0wLi4wLSwxKyovKSouKSgtLikvLygvLygvLygvLyktLyktLiorLiorLysqMCwrLi0pLi0pLi8qLi8qLi8pLzArLi4uLi4wLi4uLi4uLy4sLy4sMi4rMy4rNS0qNS0qNy4pOC8oOi8pPDErPDIpPTMqPjUsPjUsPjUuPzYvPjUuPTQtPTQvPDMuPTIuPDEtPDEvOzAuPS8uPjAvPjAwQDEuQzAqQzApQTIrPjMtOjUvOTQuOjIvPDEvPy0rRCopSSooTisnVC8pWjUtYDsyZT0xcEExeEAvgEEwiEAyjz80kj40lDszkzsxjTkuizwviz0wjEAwjUExjUExj0IykkAylTsylTsykDwyiz0whz8xg0AvgT8vgj8uhUAxhj4viT0wiDwuhzsuhDssgzstgDsseDgseDwxdDoubjkrdD8vcz4ucjgqdTosfT0xg0E1iUU8i0g/iktChk1ChFBDiE9GkUpIl1NSkmZdjXdphIZwgJN3gZ5/hKWGiKeIjaeKkKeNkKeNiqSJgZ+Dd5x9b5h2ZZJpYYxhWoNbWXtYXHdYWm5TU2FKTlVDRkg7Q0A3PDczNy8tMyorMikqMSgrLigqLCotKiosKyksKyksLSgsLyktMigwMigwNCkxMykxMykyMSoyMCsyLisyLis0LisyMi0xMy8uMCwpLS0lODotU1hEb3hdgItph5Zvhplshp5uiKNwhqRwhKVwiq13k7aAmbmHlraEk7OBja98hqt4gqh3gqh5g6h8g6Z8hKR/f517eJJ1cYhuaHtlWWpXTltJRUw8QEQ1Oz0vMTIsMTIsMTIsMjMtMjMtMjMtNDMuNDMuNTQvNjUwODUwODUwODUwNzQvNzIuNzIuODAtODAtNy8sNy8sNC8sMy4rMS0sMS0sMS0uMC4vMC4xLy0wLi4wLCwuKyovKykuLygvMScvLyktLyktLyktLyktLiorLiorMCwrMCwrLy4qLy4qMC8qMC8qLzAqLzArLy8tLy8vMC4vMC4vMC8tLy4sMS0qMi0qNi4rNy8sOTArOjEqPDErPTMqPjQrPzUsPzYtQDcuQDcuQDcuPzYvPjUuPTQvPTQvPTIuPDEtPDEvOzAuOzAuPDEvPDEvPzEuQzIrRTArSC8rSy0tTCwvSysuSSovRSsuQS0sQC4qQS4oRi8pTi8qWDEqYjMtZzUuajosbzsteDwxgT00hzw2jDw1jTo0jTo0ijs0hz0yhj4yhT8zhkA0ikI2jEI1j0M2jj8yjz0vjD4xij4uhz4vhj8thj0uiDwsiTsuiTwsiDothzsrgzssfzwpfj0rezwrfT0xejwxdjovdjwweEAxeEAxdjwudjstfz81g0M5iUY9i0g/iUpBiExCh05Fik5GkktJmFRRlmZckXdoh4VugpF0f517gaSDhaiHiKqJjaqMkKmMjqWJiJ+DgZp9eZh4aZZtYZJlXIthXIZgXoNhW3xdVXJWUWdQSFlHQlBBOkQ5MzoyLjMsKzAqKiwpKiooMSgrMSYqMSYqMSYqMCcqMSgrMikuMSsvLyouLSsuLCswKywwKS0wKC0wKC0xKS0wMS8yMy8uLysoKioiNTcqUVZCbXVdfIppgJBrfpNqf5lsg59vgKBvfqBtgqRxiat4ja98i616iKp4hKl2gqZ2gKZ1gKZ3gKV5gKN5gqJ9fZt5d5F0cIdtaHtlWWtVTltJREg5PkAzOTktMjMtMjMtMzQuMzQuNDUvNDUvNTQvNTQvNzYxNzYxOjcyOjcyOjcyOTYxOjUxOTQwOjIvOjIvOTEuODAtNTAtNTAtMy8uMy8uMy8wMy8wMS8wMS8yMC4xLi4wLS0vLSsuMCkwMikuMCouMCouMCouMCosLyssLysqMS0sMi4tMC8rMC8rMTArMTArMDErMTItMTEvMTExMS8wMTAuMTAuMi4rMy4rMy4qOTEuOTIsOzIrPDMsPzUsQDYtQTcuQTcuQjgvQTgvQjkwQTgvQTgxQDcwPjUwPjUwPTIuPTIuPDEvPDEvPDEvPDEvPTIwPTIuQjMuRTIuTS8vUiswVygwVSYuUCcvSSkuQy8uPDErOzIrPzIpSDEpUzAqXy4qZC8paTkvazsvdTwzfTw2hjw5iTs5ijs3iDo2iT45hj85hkI5hUI5hUI5hkI5h0E3ikI2iEAxiEEviEEvh0Auhz4tiDwsiTwsiTorizkriDkqhzoqgzopfzwpez0oeD4oeD4qgj4zezcuejcuejwxdjstdz0vfEEze0AygEI3g0U6hkg9iElAh0tBh01CiE9GilFIjlNLkFxRjmhbi3RihX9ngIttfpZ2f558g6eDhKmHiKqJi6qKi6aHh6CCg5p+fZh5cZVvapNpZo9nZoxlZ4tnZIZlX35fXHZbUGhSS15LQlBBOEQ2MjovLjQqLC8oKyolMiYoNSUoNCUoMiYoMSYqLykrLyssLiwtKystKistKistKCwtKCwvJywvJywvKistLyssMSsrMCsoLywlOTktUFRDaXFZdoNle4xoeY9ofJVrf5xufZ5veZ5re6BtgKVygqd0gKVxfaNwfaNwfqRzfqV2fqV4faR4fKF4fZ96epl3dZBxbodqZXxiWGxTTltHREY5Pz0xOjgsNDUvNDUvNDUvNTYwNTYwNjcxNzYxNzYxODcyOTgzOzgzPDk0PDk0PDk0PDczPDczPDQxPDQxOzMwOzMwODMwNzIvNjEuNjEuNTEwNjIxNjIxMzEyMzEyMS8wMC4vMS0uMiwwNCsuNCsuNCsuMiwuMiwsMiwsMiwsMy8uMy8sMy8sNDAtMjEsMjEsMzItMzIuMjIwMjIwMzIwMzIwNTEwNTEuNjEuNjEtOzMwPDUvPjUuPzYtQTcuQjgvRTgvQzkvRTsyRTsyRTsyRDoxQzkwQjgvQTYwQDUvPjMvPjMvPTIuPTIuPTIwPTIwPjMxPjMxQDUxRjQyTTAyVCw0WCkzVygyUikxSywxQjMwOjYtNzctOjYqQjQpTTIpWC8pXi8pZjoxajszczw3ej06gjw6hjw7hzs7hjo6gjs3gT44gUA6gkM8g0M6g0M6hUA5hEA3gkMygkMxg0IwhD8vhz4viDwuiTotizktijgshzgrhTkrgjorfj0reD4qdj8qeD0rgTktfC8ngjgvhD40dzQrdDYrfUE2fUM3f0U6gEc8gkk+hEtChEtChk1EiFJIhVdKfWBOe2lRgHBZgXVdgnxig4ZphpN1iJ18hKJ+gqaCgqqFgqyGgamEf6WAe559epl3epJwe49seYxsd4xrdY1tc4ptbYRna39kYHJaW2hUUltKSU0+QEA0OzcsNzAmNSokNignNScnMycnMScmLigoLCspKyspKy0qKCwrKCwrKiwrKiwrKystLCotLCotLiorLCMkMysoNTAqODUsQkM1VVpGZnBXbn1edIhlcYpidZBleJhpdppqc5lodJppd59reqJueKBsd59teKBue6Jze6V1e6V3fKN3eZ51epx3d5Z0c45vbYZoZHtfV2tQTltHQ0M3PjoxOTUsNTYwNjcxNjcxNjcxNzgyNzgyODcyOTgzOTgzOjk0PTo1Pjs2Pjs2Pjs2Pjk1Pjk1Pzc0Pzc0PjYzPjYzOzYzOjUyOTQxOTQxODQxOTU0OTU0ODQzODQzNDMxNTEyNDAvNi0wNi0uNi0wNi0uNC4uNC4uNC4uNC8sNDAtNDAtNDAtNTEuMzItMzItNDMuNDMuNDMvNDQyNTQyNTQwODQxODUwOjUxOjUvPjcxPjcvQDcuQTgvQzkwRDowRzoxSDsyRz00Rz00RjwzRjwzRTsyQzkwQjcxQTYwQDUxQDUxPzQwPzQwPzQyPzQyQDUzPzUzQDcyRDYzSTM1UDE2VC82Uy41UDA1SjIyQzUyPTkwPDouPTktQzcpSTYoUTMpVzIpXTIrZDMsbDUwdjY0fTc3gjg3gzc3gzc3fjc1fTo0fTw2fj84gD85g0A4hj87hUE4gUM0gEMxgUIxg0AwhT0vhzsuiDouhzkthTksgzksgjosfzwsfD0seT4seD8sfD0shzQsizIsoUxFqFhRi0E4fDkwgkY7gEs9eUg6eko8e01AfE5BfU9CgVFFh1VKgl9McmtPcHRTfHVYh3ddj3limH9pn4tzoJR6l5Z6kZx8i6N/iKiDhaeCgKR+e595fpl2g5FwhY5vhI1wgY5wf49ye45wd4xtdIhsan5jZnZcX2hTVltHT00+R0EzQTcrPTAnOywnOSsoNispMysoLywnLC0nKy0oKS4oKS4oKy0oLSwqLysqMykqNCgqNycqNycoMygkPDMsRT40SUc6UVJAXmNNZ3FWanlab4Nea4RcbIldcJFicZVlb5Vkb5dlcppmdZ9tcpxqcZtpdJ5ueKJyeqR2eaJ2eZ92dpp0d5l2dZRyb41ra4RmY3xeVWxPTlxFQ0M3QDkxOzQsNzgyNzgyNzgyNzgyODkzODkzOjk0Ojk0Ojk0Ozo1Pjs2Pzw3QD04QD04QDs3QDs3Qjo3Qjo3QTk2QDg1PTg0PTg0PDczPDczPDczPDc0PDc0PDc0OzYzOTUyOTMzODMwOC8wOS8uOC8wODAuODAuODAuNjEuNjEtNjEtNjEtNTItNjMuNjMuNjMuNzQvNTQvNTQwNjUxODQxOTUyOzc0PDk0PTg0QDkzQDcwQTgvQzkwRDowRzoxSDwwST0xSj4ySj00Sj00Sj00STwzRjwzRDoxQzkwQjgvQTgxQTgxQDcyPzYxPzYxQDcyQTgzQTgzPzc0QDg1Qjg2RTo4Rzk2STo3SDk2SDk0RTgwRTgvRTktRTkrRzksSTkqSzkrUTcqWi8mZC8nbjMtejYzgzk4iTs5izs6iz07i0E+h0A6gz43fzw0fzozgjw0iD04iUA5g0E1gUIzgkAygz8ygz0xhDwwgTsvgDwvfz0vfT4vfD4vfD4vfD4vfT4vfz0vhjkvkDErozs4zmtm2355rVpUjUQ9iExBf05AdEo8ck4+cFE/cVJAdFNCe1dHgltKfmVPbXNPcHpVhHlbmHVfqW9jtm1mvnFrvXdvu4J3sYx6p5d+np6ClqGBjaF+hZ15hZl2iJFyi5ByiJFyhZNygZR0fZVzeJNwdJJwbYtpaYRlZHhdXWtSVl5HTVA7RUQwQjsrQDMrPzIsOzAsNzAqMzApMDAoLi8pLi8pMDErMzArNy0sOyssPyksRCcsRiUsRCcrRjUtTEM0VlBAW1hFYGJMZ21TanhXantXbIJbZ4JXZ4ZabI1eb5NjbpRhbpZicppmc51rcJpqb5lpcpxudp9zeaJ4eJ53dpp2c5dzdZd2c5Jybotsa4RkYntbVW1NTlxDR0g6RTw1QDcwNzgyNzgyODkzODkzODkzOTo0Ojk0Ojk0Ozo1PDs2Pzw3QD04QD04QD04QTw4QTw4RDw5Qzs4Qzs4Qjo3Pzo2Pjk1Pjk1PTg0Pjk1Pjk1Pjk1Pjk1PTg1PDczOjUyPDQxOjAvOjAuOTEvOTEuOTEvOTEuOTEuNzIuNjEtNjEtNjMuNjMuNjMuNzQvNzQvNzQvNTQwNjUxOTUyOzgzPDk0Pzo0Qjs1Qzw0QTgvQjovRDowRTsvSDwwST0xSj4ySj4ySz41Sz41Sz41Sj00RjwzRTsyQzkwQjgvQjkyQjkyQTgzQTgzQTgzQTgzQjk0QTo0QDg1QTk2Qjs1RD03Rj04Rzw2Szw1Tjs0TTYuTzctUTYrUTYrUjgrUDkrUDkpVzcoZjYqcjYsfjsziUA5lURAm0hEn0pHn0xGoFFKmUxEjkQ7hjwxhDcthjgujDkxjT02iD41hz43hj02hTw1hTw1gT00fT0zej4zeEAzdkEzeEAzej4zfzwzgzoziTg0kjQymCgmsz077Xt6/pWSxWhjlkdAiUtAeEg6bk08alE9ZlQ+aFZAbFdCdFtFf2BMgGhQe3JRhXZVnnRctGxeyV9f01Zc2VFb11Rc5G912Xp4zIZ+wI+AtZWAq5V9o5J4n492nIpynIp0mY11lY91kZF1i5F1hpFzgpFyfItueYZqdXthbnBaZ2JOX1RCVUU1UjwvTzQtTjIuSTAsRC8qPi8oOS8mNy4nNi8nOTIqOzAqPi8sQi0sRyosSSksTCcuSSkqVEI2WVE8ZF5IZ2VMaWxPbnVWbXtYbH5YboVbaINWZ4dYbY9dcJVicZZicplkdpxpdJtscZhrb5Zqcpltd512ep54eJp5dJZ1dZR1dZR1c5Byb4praoNlYntbVW1NTV1CTU5AS0I7Rj02OTo0OTo0OTo0OTo0Ojs1Ozw2PTw3PTw3PTw3PTw3QD04QD04QT45Qj86RD87RD87RUA8RUA8RUA8RD87RD85Qz44RT44RT44Qjs1Qjs1Qjs1Qjs1Qjo3Qjs1Qjo3QTo0QTc1QTgzQTc1QDcyQDY0PjcxPjcxPjcxPDcxPDcxOzYwOjUvOTYxODUwNzQvNzQvOTYxOTYxOTYxOjcyPDczPjkzQToyQjsxQzoxRDwxRjwySj4yTEA0TEAyTkAzTkA1TkA3TkA3TD82Sz41Sj00SDsyRjwzRTsyQjkwQjkwQDkxPzgwPzgyPzgyQDkzQDkzPDUvTUQ/TUA6SzozVD86UzczTzArYTw2XDMtYDUuYDQrXi8nXi8lZjYsbT0xcT0wiko+j0c7l0k/n0tBn0Y+mz43mz43nkQ7pk5EpVFGqVdLq1lLpU9CmUE1lzswmz42kzk4kjo5jDY1hjUyhjg0hD84fEA2cj4xckI0b0EycT0wdzsxgjcyjDQzki0xmicsyEhJ6GJhxUVEzVdV4Xl2q1ZPhkY8hFZGblM+aVtBaWJGamVIamBFbl5EfGRMjWpUkmJMtGxd0W5o21hd4DtM5y1F8itI9TBM9kBZ7Elc5Ftl5W5y4nt824B924N/2ImCw353vYF3uoR4toZ4soh4rYl5qIt5pYx4moBvmX5tmHhpk29jjWJZhFVNe0lCeEE+dTo8aS4yZDA0YjE0UCYnRyUjTDAtTTUxRzQuRTIsRDEtRjEuRi4sRysqSy0vUTUxWUg2YFY7Zl9DZ2RFa29OdXxadYRdb4FZbINXbIdacI1fcpJhdJRjdZdkd5lmeJpocZVpc5hvdJZxcpRvdZR0eZh4e5h8eZZ6eJV5c41ybYdsa4RnaYJkYXpaVG1NT19ETk9BU0pBUUg/OTo0OTo0OTo0OTo0Ojs1Ozw2Pj04Pz45Pj04Pj04QT45QT45Qj86Q0A7RD87RD87RkE9RkE9RUA8RUA8RD85RD85RT44RT44RT44RT44RT44RD01RD03Qzw0RDs0QzozQjkyQjkyQjkyQjkyQjk0QTgzQDkzQDkzPjcxPDcxPDcxOzYwOTYxODUwODUwNzQvOTYxOTYxOTYxOjcwPDcxPjoxQTowQjwwQzswRTsvST0xSj4wTEAyTEAyTkAzTkAzTkA1TkA3TT82Sz41STwzSDsyRTsyRTsyQzoxQjkwQToyQDkxQDkzQDkzQTo0Qjk0RTo0SjcxTC4sVi4uajY4dTk7ezs7hUVDhEVAhUlBhUlBh0g/jklCmU5IoVBMok9Hk0Q3lEI0mkI2oEQ5oD4znDctnDctnz0yo0M1nEAxmUAwoEQ1pEc2p0Y2rkg6tk5FtExNr0hMpUBEmTk7kTk4jT46g0A4eD4zbz4wekk7hUxBhD84hS0skikuszlE0kxX3EtO301Nyj49wEA/0GBcs1lRhEA1g1VFeWFJZVtAX15AaWhJc2xPdmdKfmRLlmNOvGRY1l9b5lVa60FO8ixF/yZF/yZI/ydJ/y5O+TNO8jxS8Elb61Be5VFd41Nd4Fhi22Jr1WZs1Glv0m1xz3FyzXV0yXh3x3l3ynx8yXl6yHZ4x3F0xmtyxWZuxWFrw19rxWBus1NhpkxYmkdRjkVMhkVJbTY5SBwbVDEtTTAqSTIsSjYvTDkySzoyTz43VUU4W083Y1o7aGJCaWZFbnJPe4NeeolidIZecolfcIlfcItgco1gdZJkd5Rkd5Rkd5Rmc5FreJZ0fJd4e5V4f5d9hJyEhZ2Hg5uFgZmDepJ8cohxbYRqaIFkYHlbVG1NUGBFUlNDVlBEVU9DODkzODkzODkzOTo0Ozw2PT44Pz45QD86QD86QD86Q0A7Q0A7Q0A7Q0A7RUA8RUA8RkE7RkE7RkE7RkE7RUA6RUA6R0A4R0A4SkE6SUA5SUA5SD82Rj02RTwzRjwzRTsyRDoxRDoxRDoxRDoxRDs0RDs0RDs0Qzw0PzgwPzgwPDcxOzYwOzYwOjUvOTQuOTQuOTYvOTYvOjUvOzcuPjcvQDkvQzoxQzswRTsxRjwwST0xSz8xTT8yTkExUEAxUEAzUD81TT80TD4zSz0ySTwzSDsyRTsxRTsxRDsyQzoxQjsxQTowPzsyQDwzQT00RDs0VkU+VTQvajI1jkFHrUxXw1Viy11mxl9jm0I+l0k/lkxBnE5ErFFMvlVSzE9TxExNpUA2nUIwoEAwpT8xpTsuozcrpDgrpz0vq0U2oT0tmDcknTonpT4trEExskMyt0U7pzAyrzpCuURMvUxSuk1SrUtMlkE+gjcxezgvdjYseDIqhDEtnDM3uT1H1UdX6E1b4kZJzzUz0Do5vTMxyE5LxmNdlUtAjFtKfWNMa2BEZ2RFdG9Pf3BTgWdMjWhOsGhZ5GJi9VFa9ERR9jdJ/jJL/zJO/y9N/ytJ/zJP/DBL9zFK9TVO8zVO8DJL8zNM9DhR8kBa70Nb7kZf7Ulh605j6lFm6FRq6FZr5VNq5FJp5FBq5E5p505s61Bv8lNz81Z1/meG8WB95Vt11VVszlptyWRyqFJdci0yXiYnWTAsVzo0UT81QzsuOjgpPkIzTE45Vk8zYVY2ZV8/aGVEcXVUf4ZlgItpeIhkeIxpdYtldIpkcotjdoxleY9oepBpepBqgJV2hJt/ip6FjaCKkqOQl6iWmKmZlqaZkaKSh5iGeo15cINtaH9jX3ZZVG1NUGNHVFdEWVZHWVZHNzgyNzgyODkzOTo0Ozw2PT44QD86QUA7QkE8QkE8REE8REE8REE8REE8RUA8RUA8R0I8R0I8R0I8R0I8RkE7RkE7SEE5SEE5TEM8S0I5SkE4SUA3SD41Rz0zRjwyRTsxRDowRDowRTsxRTsyRDsyRTwzRTw1RTw1QDkxPzgwPTgyPDcxOzYwOzYwOjUvOjUvOjcwOjcwOzcuOzcuPzguQDkvQzswRDwvRjwwRz4vSj4wSz8vTUAwTkExUEAxTz8wTz8yTz40TD4zSz0ySjwzSDsyRTsxRDowRDsyRDsyQjsxQDwxQDwzQT00Qj41Rz00UzgxWyomijtAvlRg2VRl5lRn41Vjy0pPoDQxlzswkj8xmUEzrkY9xUlH1UJIzj9DsUI3p0Y1qUIzrEAzrz8zsD4zs0I0tUU3skc3qUIxozwppDsoqTsqqzoqrjYmrTMotjk3ujk9vTc+vDc8vzxCxkpMxFRTvlhTmT83jDQqiSwlnTYxw0hL3E9X40JS2zNA3jo5zS4q0zg0yDc0xkVAyF1VqVdLkVhHd1dAdmVJfnBTgHFShGZMkGNMqW9b1XVp7lNX/ERQ9ztK+TpK/j1O/0BR/ztP+TRI/z9T/zlQ+zRL/TNL/TFK/y9J/zBO/zZT/zNU/TRW/TZX+jdX+Tpb+D1c9z5g9UBh+ENm90Fn9T9l9T9n+D9o/ENt/0Vy/0lz/093/1F1/lV28lNx51Rw5WF41mZ2t1difjE3ajAvWTIrUDgsRz4vPkEuO0QvP0cvUUwvX1Q4Z2BDb2tOfHxgiI5yh5F2fotxfIxxfI50fI9zeo1xeoptfYxvg5J1iJZ8laOMnKmVo66dprGhrLSpsbiwsLewq7WtoauilaGVg5GCc4RxaHxjXXRYU2xOUWRIUlpDV1lEWVpINjcxNjcxNzgyODkzOjs1PD03Pz45QD86QkE8QkE8REE8REE8RUI9RUI9RkE9RkE9RkM8R0Q9SEM9SEM9SEQ7SEQ7SkM7SkM7TEM6S0I5S0E4SkA2Sz41ST0xSDwwSDwwRTsvRTsvRTsvRTsxRTsxRTsxRDsyRDsyQToyQDkxQDkxPzgwPDcxOzYwOzYwOjUvOzcuOzcuOzcuPDgvPzguQTowQzswRDwvRz0xRz4vSz8xTUAwTkExTkEwUEAwTz8wTz8yTz40Tj0zSz0ySTswRzsvRDowRDowRDwxRDwxQjsxQDwxQT0yQT8zQj82Sz00XDUwdzMyrUxT211p5k1f5T9T1zZFtyYrqDErnTcokzsnlzwprEAzw0Q91D4/zTs8sT81qEI0qkAzrT4zskA1uEM5vEc9u0k+rD4vqj8vqD0rpjspqjkpsDostzsvvDwxykZBz0VC0D4/0Dc51jc83kJF4kxO3lNQxEM+x0xEzVRM1FNN2UtK3EBD4DU+4TI32zQu2jcu0DErzzo0vzg0s0A5tVtQllREe045gmJJhmtQhWFHkltGrmdVy3Jk521o6kVL8jpE6jlD5zxE50JI50ZL6EdN6kZN9UtU80FP8zhJ9jVI+TJH/jBH/zNN/zhS/zlW/zlY/zpY/Tpa/jtd/z1f/z9k/0Fl/0Np/kRr/kRt/ENt/ENv/ENv/UNy/kNw/0dw/0Bo/0dt/01w8klq6U9r5Vty2WNzvVlljj9EYCYkUSsiVkAzVk89SUw3QEQtUkozZVlDdmtXgHtnjo15mZyLlZyMiJODgo6AipaIj5uNjJiKh5KCipOCl56OpKiZsraouLyuv8G2wMG5wsO+xcXDw8PDvr6+sLWxoqmijZeMeYd2aXtlXHNZVG1PUmZKUVtCVVpDV1xGNTYwNjcxNjcxNzgyODkzOjs1PTw3Pj04QD86QD86Q0A7REE8RUI9RUI9R0I+R0I+R0Q9R0Q9SEM9SUQ+SUU8SUU8TEU9TEU7TEM6TEQ5TEI4S0E1TEA0Sz8zSj4ySj4yRz0xRz0xRjwwRjwwRTsxRTsxRDsyQzoxQToyQToyQDkxQDkxPTgyPDcxPDcxOzYwOzcuOzcuPDgvPDgtQDkvQTsvRDwvRT0wSD8wSj4wTD8vTUAwTkEwTkEwTz8vTz8vTz8yTj0zTTwyTDsxSTswRzsvRjkwQzkvQzswQjwwQjsxQDwxQD4yQT8zQj82Tjs0bjk1l0ZFxFlf21di30NR3jhG1DM7vSsrrTEnoTglmDohlzkgpDsmtj4uwzoyvjcxpzcsojotpTkvpzcsrzoxuEE5ukU8t0U6rj4yrT8wpzwspDYnqjYptj4ww0Q7ykc9vjgtzkA24kVA7EJC9D1B8zk+6zI33i4w2zc14kdC6FNM5U5H3D052TEw4y8y6jY32TEo3jwvzSwi0DcxvjMssDcvyWdcuGxejldDh1pDg1Y/iVI9qVxMzmxh4Wdi5VVV8EVL8T1G5DtA2T0+0kE+0kdE3U9N61dX7U5T70RN8jlH9jVG+DFG+C5E+zFH/jdO/jhT/ThU/jlX/zpY/ztc/z5h/0Fl/0Nr/zxm/Txo/T5q/T9t+j5u+D5v9D1t9jpq/0hy/zth/z9k/0pw/0tu905t71Vv41lw6HKCxGBqmElOdDo4XDYtUDkrUEMyVU06XlFBcmVViHxulY2Cn52RpqefoaaflpyYlZ6bnqekpq+spqyqoqejpqijtbSwwsG9zMnC0c7H1dDM1dDN1M7Q1c/T0cvPy8bKv73AsLKvmJ+YgIx+bX5rYXVcWG9TVmpOU2BGVmBFWGBINTYwNTYwNTYwNjcxNzgyODkzOjk0Ozo1Pj04Pj04QT45Q0A7REE8RkM+SEM/SEM/SEU+SEU+SUQ+SkU/SkY9SkY9TUY8TUY8TUQ7TUU6TUM5TUM3TkI2TkI0TkAzTUEzSkEySkEySUAxSD8wRz0xRjwwRDwxRDwxQzoxQzoxQToyQDkxPzgyPzgyPDcxPDcxPDgvPDgtPDgtPTkuQDkvQTsvRDwvRT0wSD8wSz8xTUAwTkExUEAwUEAwT0AtTz8vTz0xTz0xTTwyTDsxSTswRjouRjkwQzkvQjovQTsvQTowPzswPz0xQD4yQEA0UToycjEvqUtMwVJYuz5EvTA2wjAzwS8vujEpqjIiozkjnT4imTsfmzwgoT0jpTslpDYlnjYpoDgtozYvpTQsrjkyt0A6uEM8skA2sUI3rUE0qDwvpjgrrzowvEM4xEU+xUA3wz4tzz4t2TUr4Som7SIl+iUr/ysy/y407Skq5y4r4TMs3zQs4DMs5DMt6TAt5zIr2jIl1jYm0DImzzcsxTYuvT43yGBV0n9xpmVTj1ZCik06o1dJyGZb32Rf51JU6ENJ9UZN7kFF3z8/1EA8yUA4xj850UZB401M70pQ9EBL+TlI/TdI/DVI+DNF9zZH+jtN+zlR/DdS+zZS/TZV/zZY/zld/zth/zxn/z5r/z9t/0Bx/0J0/0J1/kJ1/EJ0+UJw/0Zt+kFh/kVl/0ps/ktr/1Z0/1969V128mp+5nB+0214r11hg0NBZzYvaEI3c1VKeWVcjH12o5aQraOhsq6rtra2sra5qq+zsLe9tr3FvsHKwsLKxMPLycbN1c7W3dfb4trY593b6d3d5trc5djf5Nfg4NTe2c/YysXLurq6oqejiJKHdIJxZXhiXHNZW29TW2pNXGlLXWdMNTYxNTYxNTYxNTYwNTYxNjcxOTgzOTgzPDs2PTw3QD04Qj86REE8RkM8R0Q/SEU+SEU+SEU+SEU8SkY9S0c8S0c7S0c7Tkg6TUc7TUc7TkY7TUQ7TUQ7TUQ9TkM/TkM9TUM3TUQ1TEM0SkEySD4yRz0xRT0yRDsyQzoxQzozQToyQTo0QDkzPzc0PDczPDcxPjcvPjcvPDgvPTkwPjoxQjszQzwyRD0zSEA1ST8zTEAyTUExTkExUEAwT0AtT0AtTD8vTD4xTTwyTDsxSjkxSTgxRTgwQzkwQDkvPjovOzsvPDwwPT4wPj8xQT8wUzgthzw3xFxbylpZrjg2qy4qsjErry8mrTIjrDkmrEIqqkYspkQpo0Emo0Emoz0knzkjoTorozswpjowpjcurTw0tkM8t0U7sUE2qz0wqT0wqTsurT0xu0U5x01CxUU8vDgsvzYkzjsp3Tsu5jMs8Ssq+Sgr/SYr+yUn+Coq9S4r7zIs6zQs6DMq5TMp5DIo4DMl4Doq0TIf3D8wzzcqyDgtwj81s0E20Wxgv2dZpVJCqE5Dy2Na52hi5lJS6kFG9ENL6z5E4Ts91jw8zUA5wT40tjgsuTYuxDk04khI6UBF8DpG9ztJ+jpJ+DhH9ztJ+z9O/kFV/z9W/jxU/jlU/zhV/zla/zpe/ztj/z5p/z9t/z5v/z5w/j9y+kBy+EB090Fx90Nq/01t/1Nz90po7EFh/VRz/2eF/2WC911371946Gd73HB/xnF4p2dnjV5Ye1pRl353qpmSvrCtxLy6xsLDyMfMx8fPw8PPy8rYzcnY0cra187f39Tk5tvp6uDr7ePr7+Xm8ujm9Ojo8OTm7uHo7eDp6t3n5Nji0crRwb/Cq6upkZaPeoZ4bHppYnVfYHJaY3FXY3BUY21UMjEvMzIwNTQyNjUxODc1OTg0OTg0OTg0Ozo1PDs2PT01Pz83QUE5Q0M5RUU9RUU9SEhASEg+SEg8Skg7S0o4TEs3TUw4T0w5Tks6SkY6SEU8SkZDTklNTklQSUNPRT5FTkU+TEM0SkA0S0E1TUM5TEI4Rj00QjkwRTw1Qzo1QDkzQDg1QDg1QDg2PDc0PDQyQzk3Qjk0QTk2Pjk1Pzo3Pjo3Pzs4QDw5Qj86REA3R0A2SkA0TEAwT0AtT0ArTD8sR0AuR0AwSTswSzgxTTUzTDc2Sjg4Rjs5Q0A7NjkwNDwvOUQ0OkEvNjkkPz0oYkMxvGpeuUpBpjcspTUppzcrpTUnpTcmqD0rozgkpTwmqkAqrUArrD0prTonrjYlqzYlpDYnoTcpozkrpjwuqkAyrEI0rEIyrEExqT4uqz0urTwssz0vvkQ3xUc7wT8yujImxzkrzDgq0Dgr1jgt3Dgu4jUu6TMv7jEt8i8t9C4t8zAs8TEs6jUs5Dgs3Top2zoo3Dkm1DMf0DMizzgnxjcnvjYowkI1z1NJyE1F0FRM4VtY7lxc8FBS7T5D8jk/9z9H6kFG30NE1kJCyD85uzwzsTsvsDwvsjwwyktC1EtD3EZF4T4/6zxB9z9H/T9J+TtH/kRR/ENR/kRS/0RV/UBW/DxV/zxa/0Jk/0Zr/0Fq+jtn9Tpn9z1u+UN0/Uh7/0t7/015/010+FBz8E9w501p6k1q/Fl4/2eI/1+D9Uds91Z46F97w15uvXqBh2Fej3hwp5GEu6ec0cS73dbQ3dza3Nvg3tzn4tvr5tfs69ju8tjx9t3z9+Lz9+f09ev09O7y+fTx+fTw+fHv9u3u8+js7uPp6d7k5t3i1tDUzcnKu7q4o6Wgi5CJeYN4cn1vcHtrfYZzeIFsdn1rMC4vMS8wMzIwNTQyNjUzODczODczOTg0Ozo1Ozo1PT01Pz83QUE3Q0M5REQ6RUU7SEhASEg+SEg8Skg5S0o2TEs2TUw3Tk04TEs5S0k9S0pFUFBSV1VgWVhqVlRqU09gUUhLTUQ/SD86Rj04Rz45SD86Rj04Qjs1RDo4QTk2Pzc0Pzc0QDg1QDg1PTg1PDczPTMxPTMxPTUyPTg1PTk2Pjo5Pj07Pj05Qj86RD85R0A2SkA0TUAwT0AtUD8rTEAqQj8sQj8uRjwwSDoxSjY1STU2RjM1QDY1QT06Oj02Oz41QEA0RTwtSjkpXkI0gEw+rlFCqzstoDIjoTYmozonnjcknjkloz4qoTslpzworj8ss0Autj0stzkquTcptjgqqjkppToqpToqpjwsqT8vq0Exq0Ivq0Aurj8uqzoqsj0swEY3xkg6wT8yvDgrwDYpyzcrzzcs0Dku0Tst1Dwv2Dou4Dgv5zQt7jEt9C4t9S8s8jEs6jMr4Tcq1zon1Tom3jso2TYj1Tgl1D0szDsqwTUmxDovz0Y80UY/2klG6U9P81BR9EdL8TxB9TpB+ENI5UJF20VE0kJBxT44tzsxrjotqjwtqz0utkU1xkw/1E5F3EdD5EBB7z9C+0BJ/kBK+URN90NM+kRQ/0ZU/kNU+j9U/D5Y/0Jh/0dp/0Np/D9p+UBq+UJw/EZ2/kp6/0t8/0p6/0h09Utw8VFz9Vx6+V97+ld2/E5x/UVr+kRs70Vq2ktpyF5ysW51a0xJkH50sJaJzLKl5NPJ7OPc6+fm6unu6ufy7eLz9uP5++H6/+L9/+f//+z///H9//b+//n7/vr3/fr1/Pf0+vXy+O/y9Ovu8ejt7+br5t3g3NbYysbFtLOxnqCbjpOMiY+Fh4+Cj5WHiZCAhox+Ly4sMC8tMTAuMjEvNDMvNjUxNzYyNzYxOjk0Ojk0PDw0Pj42QEA2QkI4Q0M5REQ6SUY9Skg8Skg7TEk6TUo3Tks4T0w5T0w5S0k6TktCVFJTX15maWh4bW2FbGuKa2iDYFlpWVFcT0dSSEBLSD5HRz1FRTxBQTs9RDs8Pzo3PTg1PDczPTgyPjkzPjoxPjoxOTQuOjUvOzYwPDkyPjs0Pzw1Pzw1QDwzRT40Rz80ST8zTEAyTz8wUD8vUD8tTD8sPDsmOj0oPzwrQTstQjcxQTYyPjQyOzMwPTg0Qjs1SDk0TjIuWSwpbC8uiDw+okdGozswojIknzEipDkppTwpnzglnjckojsopDsmqz4qsUEttkEvuT4uvD0uvjotvjwvsjwurDwuqjosqTkrqzwrrT4trT4trTwssj8tsDgouT4vy0s+y0c6vDYqujImyTku0DYs1DYr1Dgs1jou2Dov3Tkv4zYv6TQt8DAt9C4r9C4r8DAr5zIn3TYm1Dck0jcj3Tgl3DUj2jkn2j4v0z0uyDYpxTksy0E3yTw1zj852UVB5UtJ6kpK6UND7UBC60ND3kNB1UQ/zUI9wj00tjourjgqqzoqrDsrrDgpwEQ41U5I3kpI4j9C6j1B90JL/0hS9EBJ9EBJ+UNP/UdU/kVV+kBV+z9Y/kFf/0Vn/0Np/0Nr/0Zw/0l3/0t7/0x8/0p6/0Z4/0h3/0t0+091/1p8/2GA/VV28UNk+0lr/1R23D9czUlg2HuGuHx8YUM7j3twro6B1bOn89vR++zl+vLw+ff69/T99Oz7+uv//+r//+z//+7///P///f///v///38//77//35//r4//j2//T4/fL2+/D0+fDz8Ofq5d/h08/Ovr27ra6poqWenaOZnaOXo6uenqaXm6OWLy4sLy4sMC8tMTAsMjEtNDMvNTQvNjUwOTgzOTgzOzszPT01Pz81QUE3QkI4Q0M5SUY9SkY7TEk6TUo5UEs4T0w5UUw5T0w9TEo+UVBMXl1ibWx6enqSgYKhgIKogICme3WXcmuKZV97WVNtVExkTUVaR0BQQjxIRD9GQDs/PDg3OzYzPDcxPTkwPTkwOzgvOjcwOTkxOzszPjsyPz0xQDwxPzsvQTstRj8vSD8wSz8xTUAwTz8wTz8vUD4wTD8vQD0qPz4sQD0uPzsvPzsyPjkzPTo1Ojk0PDk0RTo2TTUxVi0raikthjE4njhDrD1DpzgvpTcopToqqj8vqD8soDkmoTglpDsmpTomqzwptD8tuUAvvj8wwT0wxT0xxD4yvT8ztj0ysjkurjgqrzkrsDossjosszkqtjssujwuxEI1y0U5yD4zvzIowDIozTkv1jUr2TUr2jYt2zct3jcu4jct5zQt7DEq8zAs9S8s9C4r7zAo5DIm2zQk0jUi0DUh1zIf2jAf2jQm3Dwu1j0v0TovzT0y0kQ6xDUtxTYwyjs12UVB405K5UtJ3kM/1j0400A5zkE4yD81vz0wtTktsTkrrzkrsTstrDQmvT8z0UhC2UhF30FC5kBE9EdN/U5V8D9H8D9H9kJN/khV/khX/EJX+kBY/EFe/0Fj/0Nm/0Zt/0ly/015/098/0x7/0l5/0R2/05+/1J9/kty+E1v/1Z1/1V1901q8Udk8Exn0j5W4WR0/p+n04+OZDkybEpApXlw0KWc9dTL/+nj//Ty//3///z/+fP//O///+////D///L///T///f///v9//z7//36//z4//r4//n3//b3//T4//T4/vP39uvv7OPk2tTUycXCurm0s7SssbSpsLaqtr6zsLitrLSpMTAsMTAsMC8rMC8rMTAsMjEsNDMuNTQvNzcvODgwOjoyOzszPj40Pz81QUE3REE4SUU6TEY6Tkg6UEo6Uks5Uk06U0w8UkxAT0pEVlRVZmRxd3iNh4epjZC5j5PDj5DGjovAh4O2e3epcG2aaWSNX1t+VVBuTkphS0dYRkNOPz1CPDg5OTUyOTYvODUsODUuNjcxNzgzODkxOzsxPjwvQD0sQj0qQzwpRz8sSj8tS0AuTEAwTUAwTT8yTEA0Sz41TUA3Sz41RjwzQjkyPTgyOjk0Njs0Nzw1OTw1PjoxSDQtWTIteDg5lD9Epj5FqTg8qjswqz0sq0AurEEvqUAtpTwppjsnqz4qpzglrjsotj0svD0uwTwtxTsuyjwwyj0zxT82vj4zujovtzcsuDgtuDgrujgrujgruzcrx0E1zUM4xjkvwTEoxjMpzDguzzUr2zQr3zMp4TQt4jYs5DYt5zQt7TIt8C8q9S8s9i8q8i8p7TEo4zMm2TQh0DUfzzQe1zIf2S8e2DIk2DYp1zkt1Tsx1j822EU91kY+zUA3yTw1y0A51ktE2U5H0kU+xTsxxT0xwz0xwDwvujsstzkrtDortjwtuT8wtTktvzwyyUA60kM/20JE40RI7UpP9k9W7UBG7T5F8kJM+0lV/0pZ/UZY+kNZ+0Nd+0Bf+0Jk/0Vs/0pz/056/098/0x5/kl2/0p3/1SB/1R9/Upx+Ult/1N0/1Z0+E5p60Re5EZd6lhr/5ai/7W8852ejkhGay4ppmtlzZaP88jB/+Pe//Hw//z9//3//Pf+/vb///b///j///j///r///z///3///38//z5//v4//n4//j3//b4//X3//T4//T4/fHz8+nq5Nza1tHNzcrDycm/ysrAys3CydDIvsi/uMK5NjUxNTQvMzIuMjEsMTArMjEsMzItNDMuNjYuNzcvODgwOjoyPDwyPj40QEA2Q0E1SkQ4TUU4T0g4Uks7VEs6VE09U0s+UktBUUxJWldebGl8f36djY+4lpnMmZ7Ymp7emZjalJHUjIrJhoW/gX61eHanbmuWZmWHXlt4V1RpTUtZREFKPjw/Ozo4Ozc2ODc1NTU3NDU3NjY0ODcyPDouPzwrQz4qRkAqRz8qSEArSUEuSUIwSUE0SEI2SEE5R0A6Sz08STs7Qzk6PTc3ODc1Mzg0LzgzLzkxNzw1NzQrQzEnXTgwfkM9lkdDnj4/njUyqDwwqjwrqj8tqj8tqj8tqT4qrD8rsD8tqzglsjkouTorvzktwzksyDouzTowzzw0yz41xjs0wjkxwTguwTguwjkvwjguwzYsxjgu0UM50UE4wzAmwywj0Dcv1jw00zIq4DMs5DEq5zIr6DMs6jMt7TIr8C8q8y0q9i8q9i8q8i8p7DEo4TQk2jUi0TYg0DUf2Dcj2TMj1jMk1TMm1TUp1Dgs1Dwx1j827FlR4VJK1ElCzEM7y0Y9zUpAyEU7wD4xvDoqvTsrvDoquToptzkquTssvD4wv0EzwUE2wj00xj03z0E910VF3UdI5ElN7E1R6EJG6kBD8EJL+UtU/k5b/Epa/EZc/EZf+EFf+UJh/UVp/0pw/053/096/054/0x2/1F7/1J7/k92/U90/1Z5/117/1Nv7kRe+lRs7lFk92R0/5Ke/4uV9IOJx2Bkp01NtWpnzo+K77y4/97Z/+/u//r6//z+/fv//fr//vv///v///v///z///v9//v7//v4//v4//z5//v6//v6//j6//b4//P3/fHz+e3v8ubm593b39jS29fO3dvP4N7S3+HW3OPbz9jTxc7JPTo1OzgxODUwNjMsNDEqNDEqNTIrNjMsNzQtODUuOjcwOzgxPjsyPzwzQT41Qz80S0M4TUM3UEc4U0o7V0s7VUw9VUs/U0pDU0pLXVdjb22DgoKmkpTFm6Dan6bqoqnxoaXvnqDrmZvllZjdlJXWkJHKiYm9goOxenmhcnGRZmN+WldsUE5cSUdSRkNOQ0FMPz9LPT1HOzpAOzk6PTo1PzsvQz0tRUAsRkAqRkErRUIvRUM0Q0M3QkM7QUM+QEFDQjxGRD5MREBORUVPQ0hOQUlMP0lKP0hFQ0hBQT0yTDouZ0Y3g09Bjko9jz80lDgrpT4vqT4sqz0srD4trUAsr0AtsD8tsj0rsTgntjgpvTkqwzksyDgtzDgu0jkx1Ds1zzo0zTozyzgxyzgxzDkyzToyzDcwyzYv1D021T410jkxzDIozjQq2Twz2jwz2DQr5DEq6TEp7DEq7jEr8DAr8i8p9C0o9iwo+C4q9i8q8TAp6jIo4jUn2TYl0zYjzzci1Dkl1Tgl0zYl0jUm0jQo0zcr0jgu0Dcv405H6FhQ51pT2lFJzEc+xEQ5v0A3uT4vuTwquTwouTwouTonuDkoujsqwD4ww0E0yUQ7xkA3yUA60UZD1UlI1khH2EdK30lL5kZI6EJE7URL9UxT/FBc+09d+0xd+0tg9kRe90Rh+UZm/Uls/051/094/094/1B591V681V49FR2/Fl4/117/1p3+1Fr8klg/Vdr9lVn6k1e9l5t4kta5lRh5VRj11hjwWVmyIN+5aun/9TR/+vp//P0//j5//7/+/z/+/z/+/z//Pv//Pr9/fn6/ff3/Pf0//r3//v4//z7//v6//j6//P1/e7x+uvu8OHk6d3d5NnX4tnU5t/V6+fb8e3h8fHl7fLs3OXiz9jVQD02Pjs0OjcwNzQtNTIrNTIrNTIrNjMsNzQtODUuOTYvOzgxPToxPzwzQD00Qj4zSkI3TUM3U0c5Vko8V0s7WEw+V0s/VElDU0pNXlhmcG2IhIOrk5bLnKTjpKz1p7D9q7D/pqz6oafzoKTun6PqnaHhmZvWlZbMkpLEiYi0enifammLYF18WFVwUlBoT01lT0tkS0deRkJTQD1IPzo+Pzo2QDwxQT4vQ0AvQ0IwQkMzQkQ3P0Q9PkRAPEVEO0JKPkNWREhhTVJoVltuXGJyYGRvYmJqZWBkZlhXYUpEbEc+hFRGlVhGk0o3kUAtmT4rqEEwrkAvrkAvr0AtsEEutEEvsj0rsTgntTcovDgrwjgryDgtzTYt0Tcv1Tgx2Ds00jcy0Tgz0Dcy0jkz1Dk01Dk00zgz0zYv3kE61Tgv0TMq1jgv3D413j012jkx3TYu5zIr6zAp7y8q8TAr9C8p9y0p9ywo9ywo9y0p9C8p8DEp6jQp4TUn2jcm1Dck0DgjzjcizzglzzgnzzYm0Dcp0jkr0TcrzzUrzDUs405H82Rc62BZ1U9GxEE3ujsytTktuD4puD4nuj0nuTslujkmvTkqwDwvxD4yykQ7ykE5zkU/1UtI1E1KzkdEzUVF1khH40lJ5kNE6UZJ8k1T+FNa+VJc909e+k9h9Ehe9Udg+Edk+0lp/05y/1F4/1J5/1R68FV171p4+V59/V58+VRy9U1n+U9p/1lu/1tt/2N08E1e+FVm9E9g/FVn9Uxf5FJfwF5fu3Zx15yY+snF/+Xj/+3t//T0///9/P//+///+///+////f39/fv8/vj4/fj1//j1//n2//r5//r5//b4/PDy+Ons9Obm693d6NrZ5NnV6N3X8Ojd+fPl//rs/v7y9fr24+zr1N3cQj41QT00QDwzPjoxPDgvOjYtODQrODQrNjIpNjIpNzIsODMtOzYwPjkzQTw2RT42SUA3TUM3UkY4VUk7V0o6WEs7WkxBW05IVElNWFJgZ2SBfH6njZLKl6DjoKn2pbD/qrP/q7L/rLT/rLL8qrH5qq/zqKzsqavon6HamZrSjY3BgX+xdXKhaGWSXVqHWFJ+WFF7WVF4Vk9wTklgQz9NPzpAPzs6Qj84Pj40QUM2QkU6P0Q9PEI+OkNCPkZIP0xVRVdvU2aEYnGOaXOOdHaNgXiNhG+AgV9tiltjk1hanldVplZNpk0/n0AunToloDokqD0prD0qrj8ssUAus0AutD8ttj0suTssujYnvzcpxDYqyzct0Tct1jgv2jkx2jgz1zg02Dk12To22Dkz2DYx2DYx2jgz3js050Q94D022jcw40A3/ltS/2xj/11U5z825TMp7TIp8TIq9C8p9Com9Sgl+Cgo+Coq9y0r8zAs7TIr4zEn2jAj1DEi1DQk0zoozDsmyjwozTwpzzwq0jos0jkr0jgs0Tct2kA4zzgx3EdB9GNe5VhRy0I8xkE8tzQqtzomtjwkuTwmujwmvToovzorxDwwxj4yxz42zEM72VBK31hU1E5Lwz87wD86z0hE30lI4kdF5kpL71BU8VJX705W7kxZ8Uxc+VJm+E9m90pm90po/E1u/1F1/1J2/VJ29Fd27lh19Vh3+1t3/1x4/1pz/1du/1Zr/2J1/VZn/1xt/1ts8UZY9ERY/1Fl7lZlxmZnqmllyo+L57ay+NLP/+rp/e/u/Pj3+f38+f//+f//+v/+/P79//3+//r6/vb0/vn1//v3//n2//b0//b2//X19ujo5tjY49XU3tDN4dbQ8efe/PTn/vjo//zp///z+v/56PHw2OHgQz82Qj4zQT00PzsyPTkwOzcuOjYtOTUsNzMqNzMqNzIsODMtOjUvPjkzQTw2RD01SD82TEI4T0U5VEg4Vkk4V0o6WUtAWk1HVUpOWFBfZmF/eXukio/JlJ3im6b1o67+q7T/rLX/rrb/r7f/sLf/r7b8r7T4r7L1qarroqPjmJjYjIrJgH+7dXGuamahZF+ZYFeOYFaKXVR/VlB0TUliRkNUQkFJQUFDPDw6QUI9RkVBQ0Q/QT9AREJFT01SV1ZkY2iGcXWaf32iiH2flHycoHyYpXCKpGB1rFlptlZhulFVuEhGsEA0rDsprDwmrj4oqDgkqDclrDknrjkosTkosjkotTcouDYouzMlwjQoyjct0zoy2Twz3j013zw13zw14T453zw33zw34T455UI96EM96EM95kE75UA65kI55EA33Dgv1DEo2DUs60g//1pR8UA27jYs6ywk7ikj+C0p/y8v/iwt9igo+jAu9TQv7zYx5zYu3jMp1jIm1DIlzzYmyzonyDsnyjwozToozzkq0Dcp0TUp0TUp1DowzzUt1D025VBK5VRR20xIzUI/tzEovDsouz0mvTwnvjsnvjkowTkrwjouxDovyD40y0I61U5I3VhR01JMw0Q9v0M7zEhD20xI30pG5U1M61NS7VRX61BW6U5W7E9a91Zm+FVo+VNr+lJs/lFv/1Jz/1N0/1J18k1t+FV0/1x8/199/1x2/1Vv+1Jp+1Jl/FVn91Ji/1pq/1pq805e+FNj/llp31NetmBfl15XtoF92aml7sjF/eHe+enp/fj1+vz5+f//+P//9//9+v79//////v7//b3/fj1/vn1/vn1/vbz//f2//X19urq6tzb5NbT3dDK39XM7+Xb/PXl//nn//3p///v+v/46PHu2+HfRkI3RUE1Qz80QT0yPzswPTkuPDgtOzcsODQrODQrODMtODMtOjUvPTgyPzo0QT00Rj81SkI3TkQ4UkY2VEc2V0c3V0k8WEtDV0tLWFBdYl55c3WchYrCkJncmKTwoKv6qrP+rbX+r7f/sbn/s7r/tLv/tbn/tbn/r7L5rKz0o6PrmZfgjo3Tg4DHeHW8c22za2CkaV2bY1qRXVeFVlJ3TktoRURWQEBMODU8QTxAS0FCTEBCUT5CW0ZLcFddgmN1l3OXpHunrn+rsnujuHacwHCTwmODwFNwwkZe0Etc0UhSxDw8ujUuuDkqtTwnsDwlsDspsDsqsjoptDsqtzwsuzwtwDwtxDwuxDYqyzgu0zwx2T8130E44T434T003zo03Tg02TQw2TQw3jkz50I87EU/6UI85D014zw03DUt2DQr2zct1DInzCwg1jYq6Uc69Us+8kA27zQt8C0p9iwq+y0v/Csu+Cos8Cop7C8r6TMv4zUu3DQr2TIp1TEn0TMnzTcoyzopzToo0Dop0jsq0zoq1Dgr1Dgs0TQr1jw01To11Tw35U9O7VlX2UVFwjMvwTwtvzwowDsqwDsqwTkrwTkrwDgswDgsxj0zx0E2z0pB2FVL01NKxkc+wEQ6x0c+1ktE2UpE3UxJ5FNQ5VNU4lBT4k1T5U5X8lhk9lpo/Vtw/lpy/VVv+1Fu/VBu/1Fy/Udt/1B2/1p9/1t7/1Zy/VNt/lZt/1xt+1hp+Fpo+2Bu9mBs7V1n72Zu7GZtyVxfoF1Xe09GmG1mwZiU3bq48NTT9ODf//X0+fn3+f/9+f//9///+v79//////3///j5/Pj1/Pn0/Pn0/fj0//n2//j2+e7s7+Ti5drW29DK3NLI7uTY/fbk//vo//3n///t+v306vDs3uPfSUU5SEQ4RkI2RUE1Qj4zQT0yPzswPjovOjYtOjYtOTQuOTQuOjUvPDcxPzo0QDs1Qz82SEE3TEQ3T0Y1U0Y1VUU1VUg4Vko+WU5MWE5XXlpxcHCWgIa6jJbUlaHpnan1qLD5qbH5rbP9sLf/sbf/srn/tLj/tLj/r7H8q634pafyn57ql5bijIvXg4DNfXnFdW22cGeqZmCeX1qQWViEUVF1R0djQj9SPTVESDhCVD1DYEBFbkNKgE9Vl15nqmd4vWuPyW6ay2+YyWmPyGCDyVd4xklnxDtVxjJI2UFQ4ERP0Ts9xzgyxD8wvUAssTokrTUkrTUlrzYlszUmtjcovTkswzstyDwv00A210A32kA23UA33j013jkz3TYu2zQs0y4o0i0n0y4o2DMt4To04zw04Tgx3DUt3DUt0Cwiziog2Tcs4kI23D4y0TUmyy4f6UY380k8/Ug//Dw59Cws8SMl9Scp+y8y8S0u7DAv5DIu3jMs2jEq1zAq1i8p0zAn0zcr0jkr1jot2Dwt2j4v2z8w3EAz3EAz0jYq5kxC5UpFzjUw30dG81pc30lL1UE/yDwvxDsrwzoqwzoqwjoswjoswTktvjgswjwxwj4yyEY5z09CzlBExkg8v0M3wUM3zkg/0UY/1UpF21BL3VJP2U1M2ktN3UxR61hg81tn/GFx/2F1+1dv9U5o9U1n/01t/091/1J5/1V3/1Rx/FRt/Vtw/2N1/2l6/2d1+mJv9WFt7WRu42Zs2WhqzmdotWZhjV5UZUc8f15VqYiBzaup5sjI79rZ//Pz+fj2+f38+P//9///+/////7///z///n8/vr3+/r1+/r1/vv2//35//v4/vTy+O3p6t/Z3tTL3dPJ7ebW//jm//7o///m///r+Prv6u/o4+bfTkg6TUc5TEY4SkQ2SEI2RkA0RD0zRD0zPzgwPjcvPTYwPTYwPTYwPzgyQDg1Pzo0Qz44RUE4TEQ5TkU2UkU0UkUyVkY2Vkg7Wk1HVk1SW1dobGuLfoKxipPOlJ7jnKbup633qa/5rbD9r7P9sLP/sLT+sLP/r7P9q677qKv4pKf0oKLvmpzpk5XijIvZhoXRg3/JfHa8bWusZGWeX2GSWVuEUlFzTkhiV0ZZX0NRbUJMgkZQmExWrFVevFtkylpo2VJw4lJ131R12VBs0kpizUJXxzhKxS4/1DhF40NN5kdM2D4+zT44zEY6w0g2t0Astz4tuD0tujwtvT4vwz8wykI00EQ31UU62UU52kI32z412Tsy2TYt2TUs2jMr2TIq1TAq1zQt2zYw3Tkw3zgw3jcv3TYu3TYt1i8m2jYs2DgszzIjzjIj0jkp1T4t1Dsr2Dwt6EQ4+EpB/URB+TU29Sot9iot9y8y9zY37TU14zQx2jEs1zAq1y8s2TAt2jEu4zgx5Dkx4zsy4jsy4T0x3z0w3D8w2j4x0Tcr71dM+GFa0zs20Ts65lBR3EZI5lBRzzw0yjovxjgsxTksxDotxDwuxDwwwDouvjotvjwuw0Ezx0g5x0k7wkQ2vkAyvD4wyUY8ykU8zklC1VBJ11JN1U5L1ExM10xP6Vpg8F5o/GV0/2h6/F1x809n801l/U5r/1Z6/1R4/1Jy+FRt9l1x+2h4+2p392Vy/GV0819t7GBr6mt033J1w2pmqmRcnmxhfWZWWUk6a1hKlHt0vaCc3sLB7tXY/u7v+/X1+/v7+///+f///f7///7///v///r9//76+/71+/z2//75///6//76//v1//fy8ejh5NzR4dnM8OnX//nm//7o//7l///q9/nr7fDn6OnhUUs9UEo8T0k7TUc5S0U5SUM3R0A2R0A2QjszQToyQDkzPzgyPzgyQDkzQTk2QDs3Qj84RUI5S0U5TUY2UEUzUkUyVkc0VUg3WUxEVUtMWlNjaWmFfIGriZPIk57emqTrpqz4qaz7rK39rbD/rrH/rrH+rbD9rbD9qaz5p6r3pKjyoqbwn6Ptm5/plpjjkpTekpLaiYnPfIDAdHmzb3WpbXCdaWeOal99eV94gldqjlBfo09cu1NezVRd1lBX20hS5UBR6D9S5ENS3ERQ1kNLz0BEyjk8yTQ25EpM50lK4UFB1jg3zjk1zkE4yEQ4vj4xw0U2w0U2xUY3yUU4zkY40Uc610c82kc91j4z1Tsx1jgv1jUt1jMq2DQr2zQs2zcu2zgx3js04D004Dwz3Tkw3DUt3DUs2zct0i4k3Tsw2j0uzTEixy4ezjcm0jwrzToozjgn1Dgp4jox8z05/0BA/zw+/jM38ywv6iwu4Ssq2Cop1Cso1y8s3jQ05Dg46Tk78Dg48Dc17jcz6Dcx4zct3DYq1zUo0TUmzTUo51BF/21j20hByDQy10ND1D9D6lZW2UE80j40yzgwxzcsxjotxjwvwz0xwT0wvDosuzwtvj8wwEEyv0EyvUAuvD0uuzwtxEQ3xEQ5yEg/0FBH01JM0VBK0k5M1U9O519j7mFp+2l0/218/2R39VZq9VFp/1Vv/1d2/1Z0+lhw8V5w9G559neA7Wtz3lhh8WBt8WBt7GJv73N97IiKzIF8qnRomXlqc2tYT048X1ZHhHJor5aS3MC/79XY/Onr/vP3/fv8/f7/+v7//v3///3///v///n+///7+f/1+v32///6///6///6//33//72+fDn7eXa6eHU9O/c//vn//7l///j///o+frq8vTn7vDlU009U009UUs9T0k7TUc7S0U5SkM5SUI4RT42RD01Qjs1QTo0QDkzQTo0Qjo3QDs3QUA7Q0M7SUU6TUc3T0c0UkYwVkcyVUg1V0pBU0lIWFJeameCfYGni5PEkp7amKLnpKf2pqf6q6n8q6z+rK3/ra7+rK77rK77qKz2pqr0pKjxo6fwo6fuoKftn6TonaLmmZ7ilJnbi5PSho/Kg43ChIi3g4GoiHmaj22ImmN6qVhpu1Ff0E5a4ElS6EFJ6j1B6T075D853UM51kg6zkk4xkc0wkMwxUAx5FRJ4Ec/2js32DY02Dg42Ts80Tk4yDc0wDovvjwuvzsuwDouwjgrwzcqxjMpxjIozzUr0DMq0TMo1DMp1jMq2TUs3TYu3Dgv3z403Twy3Dsx2zgv2zcu2jYt2DQq1zMp1TMm0zMl0DQl0Dcn0j0p0T4qyjkkwDIeyDomyjQl1TEo5zUx+jw8/z1A/zg+9zM36i0x4S0u2S0t2DAv3DQz4zk66Ts98Dk99jI2+DAz9DAx7TEv5TIr3jIo1TElzzMkyTEk0T0x+mpf5FRMyDk10EA/yzo95FJT5EpI3EM90Tk0yTYuxzkvxTswwjwwvz0vujsqvD8tvkEvvD8tujsqujsovTsrvjwsvD4wvD4ywEQ6yExCzFBIyk5GzExJ0E5M52Bk7GFo+Ghy/297/2h491pr91Vq/lpy/1lz+1107mFy5mp0632A8YeJ6Hd52l9k8Wd0/m1882V162x39pGV7KKfxJSKoo18aWtWSFE8V1VGdGdepIyI277A8tXZ+ePm//P4//r8/v7//P3//vv///z///r///j9///7+f/19/z1/f/5///6//34//33///2//nv9e/h8uzc+vXh//3n//3k//7i///n/f7s+frs9/frVk8/VE4+U0s+UEo8T0c8TUc7TEQ5SkM5SD82Rj81RTw1QjszQjkyQToyQzo1QTw2Q0A5REQ6SkY7TUc3T0cyUUYwVEgyVUg1VUg/UUdGV1FdamiAfoKojJTFk53YmaLnn6Dyo6D3pqP6p6f9qKr/qav+qaz9p637pav1o6ryo6fuoqfrpKntpqnupajto6fumKDolqDllJ/flJ/XlZvNmpW+oIyvqoOgpWV/tF1ww1Jk0ElX3EJO5T5G6zxB7Dw860A540E03EU01Ek0ykkzwkYuv0Iswj8t4lNF3kQ83Tk35j4+6kRG5UBE2Tg9zjY1zUI7yUU5yUM4x0E1xj4ywzkuwjUrwjInxjIoyzMozjQq0zUs2DUu2TQu2zQu2zQs5EE43j4y2Tcs2jYs3zgv4Dou2zUp1TEl2DgozTIgyjEhzzkozzkoxzQiyjcl1EMwyDcmzjgq2Dct3jUu5zQw7jUz9jo5+z8+/0xL+khG8kJC7D4/6jw96Dg75TI25isy9Csx+Ckv9Cwu7y8u6DEr4DQq2TUp0zcoxjAhwC4f9GRZ611Tz0A61ERDyzs7301N6lJR4EhF1Dw5yTYvxjguxjkvwzsvvjorvjwswUAtwEEuvD0qtzgluDkmvTwpvj8utTcptDgsuD4zwUc8xUtAxUlBxkpCy0pF5WFf5l5g8WRq/m53/mt1811p8Fhl+F1t+l5z9WJ06GRx42xy7H5/+Y2L9oaF6XFz+HJ5/3mG9WFx4Fhm9oiR/7S00K6ioJuHXWpQRFI5UVRBamJVnImC2sC/8tjb9uDj//T3//r9//7//fz//vz///3///v//vn9+//69P/08v7y+f/2/P/2+/z0//32///2///z+/Xn9/Hh/vnl//3n/vzj/v3h///q///x/f3z/PzyWE5CV09CV01BVU1AVEo+Uko9Ukg8UEg9TUM5S0M4S0E3SEA1SD40Rz80SD40Rj81R0M6R0U5SkY6Tkk2Uko1VUo0Vks1Vks5WE5FVUxNWlRia2iDe36niY/DkZnXmJ/no6T2paL5pKH8oaL8oaX/oqj/o6v/pK38oar1oanxoajspajtqqnvranzsan2rKn4oKn4l6fykqHilp/WpqPOtp6+uYWcuGd6v0xd0UVS3z5N5ztH5zxE5j1C4EBA4EBA4j4/3zw93UVCyTo0ykQ7ykU8ujEp3EtG6EpJ6UNF6z5C6TxA5jw/4T0+2jw91Dw7z0I7yD83ykQ70U1BzUs+vz0wuDYpvTksvzcrwzYsyDUtyzIq0S8q1TAs2zIv3jUw50A33zkt2jIl3TMm5Tkr5zst3zgo1TIfzzIfzDQfyjUhxzQixzQiyjQlzTUozzUpyjAmzTMp0TUp0jYq0zUp1TMm1zMn3DQp4DIp5jMu6zUy6zMz6S8y5y0y6C007S419i0z9isv7yss7TAu6jUu4zks2Tco0DQlwy0cxDMi51hI6VlOyzsz305JxTQx2khI4U9Q3EpK1EJCzTw3yDgwxjguyDouyDwtxj0rwjsovjkmvDsouzwpuz4suj0rtzwstDgstTswuT0xuz8zuz8zvkA0wEA1xEE372ph9XBp6mNf9G1q+3Fx7GFk9Gdt/3B5/2x6+2h48GRv6WJp62Rq7mxu7nFv7nFv+3l7/32F+Vps/GN332Jw+6yvtqqafZF1XXJRSlk6TFI4c25apZWIy7ew7dXT/+7w//b5//f7/fj8/Pz+//////7///7/+//+8P/05f7r5vvq7//w+P/2/P/0/v/z//7x//3x//vu//rq//nm//nj//nh//nh/Prl///1///7///7WU9DWU9DWE5CVkxAVUs/VEo+U0k9Ukg8TkQ4TkQ4TEI2S0E1SkA0SkA0SkA0SUE2R0M4SEQ5TEY4T0g2Uko1U0s0Vks3VEs6WE5FVUxNWVVja2iDe32mhozAjZXTlprhn57soJ7yoJ30np/5naL9n6b/oKr/oaz7oKz0oKvtn6fooqXopaTqqaPtq6DupJ/voKf3mqbwnKHho5zQsZjAv42qwnGExFRi0UNP4jxG7DhB7zc/6jo95Tw/3EBB20FD4DxD2zpA2kFEzDw8zUNBykA+wTMx5U9Q50RH6UBF6jtC5zg/4jg73Dk61To4zzs31EU/xj01xj01zEc+zExBwkQ2uDostzkruTcqvzcrxjYtzDUu0jMv2DMv4TU15Dg05T414Tst3jYp3zUm4jYo4TUn2zYj0zQf0TkkyzkixzklxzomyTwryzwszDguzjQs0zQu1jUt0zYtzzcpyzUmyDUjyzQhzzQi2DIk3jIo4zAr5i4s5iwt5iwv5i0y6S807Csu7Swt7DAv6DIu4TUr2zUn1Tgn0jkn1T8uuyoZ1kQ10T8y2UY+61ZQ2kI/2EJB51VW4lJS3EpK1ENAzj42yjovyDgtxzgqyTwrxDsovzonvTwpvT4tuj8tuUAvtj4usjostDswtz0wuD4xuj4yvT8xwUE0xUM162lc8m1k52Jb8Gtm9W9s6GJh8Wts/HR4/3F+/2989mh07V1m6llg8WJm93Fw/np4+3Z3/3h++VJk/ltw5F1u9qapqaaTaoxrW3NPT187U1o7dXNcqZ2N1sS69uHc//Tz//r7//r7//v8/Pz8/P79+///+v7/9f/67f/z4f/p4f3m6f/r8//x+P/y/f/y///x//3v//3t//rp//bl+/Pg+vLd/PTf/Pfk/frz/Pz6///9XFBCW09BW09BWk5AWEw+V0s9V0s9Vko8U0c5UkY4UUU3UEQ2T0M1T0M1T0M1TUM3S0Q6SkY7TUc5UEk3U0s2Vks1Vks3VEs6V01DVk1OWldia2mBenyihYm5i5HLkZbWmJjemZnjmpnpmp3um6D0naP3n6f4oKn0oKrvnqfonKTjnKLgnp/gnp3hn5njnJjilpvfmprapJXQsYzAv4Ksx3KTyVlxyENU10FM3z5E4z0/5T095Tw/4z0/4T5D4T1E4DxD1zg91kBCz0FAykM/wzw4xDk26VdX4EJD5D5C6DtB4zg+3DY41jY20Tk2zTw31UhBxDsxvjUrxUE1zUs+xkg6uz0vtzgpujYpvzcpxzcszzYu1zUw3jcx5jg36T051zMq1zUq2jYs3DYq3TUq3Tcp2joq1z4sxTQhvzQfuTQhujcjvDgpvjkqvjQqwC0l4z895T443z421TwuzjgpyDckyDcizTgk0jcl1TMm1y8m2S4n3C8r3S8u2y8v3C4v2ywp3zAr4DUu3DUs1TMm0DQl0Dkm0T4q1EEvwjEg51NF0jsw2kE73kM/6UtK8FRV7VRW6FRU409N3UlF1kM8zzwyyjctxTYoxTgnwDclvDcmuTonuj0rtz4ttT0tsj0ssDossTsvtTwxtT0vtz0wuT8wvkM0w0U33FxR6mdd5GFZ8Gxn9nBv52Fi7GZn82px4FJe715r9Wdz8mVt8WBn9WZq+XFx/nh3+nR1/25180pd+FJo5Ftt8Zyho5yKYn9gVm9IUmQ+V2BBeHheraWS4dHE/+7m//jx//z4//76//76/f/8+//9+///+f/98//36P/u3P7j2vje4fnh6fzm7/zo9v3r/f7u/frr//rq//jn+vHg9OjY8ufV9uvZ+PHh/vrx/fz4//77XFBCXFBCW09BW09BWk5AWU0/WEw+WEw+VUk7VEg6U0c5UkY4UkY4UkY4UkY4UUc7TEU7S0c8T0k7Uks5VEw3V0w2V0w4V0s7VkxCVU1LXFZgamh+eXmbgoWyio3Cj5TOk5XSlZTWlZXblpjjmJvomJ7smqLtm6PrnKXomaHflp/alZvVlJjVlZbWkpPWkZDShYS9kYO2pX2xt3OiyGaP01d71Udh1DxL3kFK4EJD3kNB4EI/4UFB5D9D5z1G5z1G4z9G1jo+0T9A0UVExkE8ujYxxT466lpZ3UFC40BD5j1C4zo/2zg50zk30Dw4zkE4z0U7wjouuzIowDwvx0U4xEU2vT4vuDkovTgpwjkpzDkv0jov2jkx4Dkx6Ds36z442TIs2TIq3DMs3TUs4DUt3zcu3Dov1j0vyTcoxjopwTwrvjwsvzsvwTswxTw2zjk160NC7kE95EA32jwxzzkqyTglyDomyTsl0D0p0DcnzzEl0TEl1DEo1jMs1DEs0S8q0zIq0zUs0zcr0DYqzTUnyjclzDsozD4qzDsozzws9F5Q4EY80jMv0y8t5kBA+1dY/3R1/3Jx/2pn9l5Z51BJ1UE3xzUovS4gxDgnwDgouzgmuDsptzwstT0tsj0ssDwtrzsurj0vsDwvsDwvsTsttj4wvEIzwEY5y01B32BX4mFb9HBs+HN05l9j5F1h5l1k1khU51ll82dy9Gdv9mVs/Gtw/nN2/nZ2+3Bz+2Vu8URY9Eti5Vhr65KWoJWDX3pZUmtDU2g/XGdFeXxfsKqU59zK//Xo//nw//vx//30/f/3+//6+f/69v/48vz06vrt2vjezvPSyuvMz+zO1+7U4O/Y6fLd8vfj9vXj+/bj/PXj9ezb7eHR6d3N7eHR8ejZ/PXt/Pfx/vnzXFBCXFBCW09BW09BWk5AWU0/WU0/WU0/V0s9Vko8Vko8VUk7VUk7VUk7VUk7VEo+T0c8T0k9UUk8U0w6VU06WE05WUw5WEw8VUtBVkxKXFVdaGV4dXSTfH6lhYe3jI/CjpDDj5DIkJLPkpPUkpXclJbglJjflZrel5zclJrWjpTOiZDHhYvFgYfDfYPBfn+4fXSfjnCUqGePwVyE1k524kFj6DpV6jlL5kFH4EVD3EdB20dD30VF5kFH7jxK7T1K5kJJ1z5B0EA/0ElFwD85tDMtyEM84FVQ3ERD4UFD5EBB4T4/2j891EA80UQ7z0Y8xz0ywDgqvTUpvTkqwD4wvz0tvTsrvTwpwjoqxzsqzzsv1Tsv2zgv4Tkw5zgz6To15zo25TYz5DIw5jIx6DQz5jQw3TIr1DAnzDIoyzctyTsxxTgvwTMvwzQwzTs83T9A6zg77Tc25Dcx2DUszDQmxjUixDcjxTolyz0pyzgmzDQmzjUn1Dgs1Tsx0zkv0Dgt0D4xyjstxTgnxTgnxzooxzwpxzwpyDspzT4tzToq2D4y4UM61C8t5Do64DI04DY31zUz1js33kM/5ktG6lFJ61RJ6FRI5FVHyz8wxD8uvjwsuD0ttz0utD4wsD8vrj4wrDwurDwwrT0vrDwurTwssT0ut0EzukQ2x01C3WJa4GNd729s9HJy5WBj5WBl52Bn92t2+29692t27WBo8F9m/Wxx/3l8/3l8+m1z+F5q80FX9URe6FVo5oeNpJODaIBeW3RKX3ZKaHdQgohms7KW6OLM//rp//3t//7v/v/y+//0+P/09P/x7fvq5fHj2u3ZxujHu+S8ut66v968x+DAzeLD2ObM4+vT7O7Y8/Dd9/Lf8+rb7ODS6NrN6tzP7+HW8ujf8ejh8uniW09BW09BW09BWk5AWk5AWU0/WU0/WU0/WEw+WEw+V0s9Vko8Vko8V0s9V0s9WEw+UUk+Uko/U0s+VUw7WE07WU46Wk06WUw7WExAVUxHWVNXZV5ubmqDdXSWfn2lhIWxhom0h4m5iovBi43Ijo3Pjo7Uj4/Vj5DTkJTTi5DKhInBfIG4dXyyb3ataW+rbGqcgGuKlGR6rll2y1Bv40Jk8DdW9jRM+DlJ70BF5UZC3UpD20pF4UdH6ENK8j1O8D5O5ENJ10JEzEE+zklEuzw1sDQsykpB1UxG2EJB2j4/2zs72z082UE+1EU/zUc8y0c6wDgqwTcqwDgqvjkovDgpvDknvToowDsoxDspyj0s0jwu1zsu3Dgu4TYu5DYv6DUw6TMy6C4v6i0x7jAy9TQ39Tc57jQ15jIx2i4s1zQv1TYz0TMyzy8x0i803Dc+6jpE7TA27jAy5jIx3DMs0TUpyjcnyDkoyTwoxjgkyTYkzzcp1Dst2j4y3UE13UA32UI300c4yUExwzwpwTonwzwpxj0qxTwqxTgmzDorzjgqzTAn5kM82zIv7z9B4y4z2ios1TEv0zYv1Tgz1jky0jguzDUqxjImwDEjzkU1xkEyvD0utTorsTkrrzkrqzosqjosrDwwqz0wrD4vrDwuqzwrrj0tsz8wtUE0yVNJ4Gdf32Rf6Gtp7m5v5mNo8Gpx9W94+nB9/HN99m137mJr9mRu/3J6/3h+/3F1+mlw+Fdm+UFZ9EBb6lFm4n2DrZaGeo5rboddb4laeYpgjZdytreY397C+fTe/Prl///v+//v9f/v7//r5/rk3O/Z0ePNxd7BsdWvqNOmqtCnsNOrttSuvNaxydq60t/B4ObM6OrU8u3a8+rb7uLW7NvR6tnR7NvT6drT5tnR5NfPW04+W04+W04+W04+Wk09Wk09Wk09Wk09Wk09WUw8WUw8WEs7WEs7WUw8WUw8WU0/U0k/VEo+VUw9WEw8WU48Wk06Wk06Wk08Wk5AVktFWE9SX1diZF9zamaBc2+QenqefH6kfoCpgYKyg4S8h4XGiIfLiYjMiYjKiIjIg4O/fH21dnetcXKoa2ykZmegbGCOgl9zlVZfs05e0kpe7EBY+DdM/jNG/jlD8z9C6URA4UhC3klD4kZJ6UJK8j1O7z5O3UFF1EZEyEE9yUhCtDovsTcsz1BHykM9zz450DY00DIx0DUz0z440kU8yUc6w0Q1wDgqwzoqwjoqvzonvTgnvjkmvzonwTomxTonyzop0zos2Tkr3Tcr4TUr5TQs6jMt6yor8Sot+C0z/C80/zE3/zM5/zQ5/TU4+Tg79Tg88jk/8jlB9DlE+DhH+zZI/jVH9Cs19C0y7TEy4zQv2TYt0Dgrzjoszj0syzUm0Tgq2Tsv4D4z4j405D005T4230E22Uo80Eg4yUExxDwswzoqwjknxjgqyDkpyTIn0zkv4UA460Q+3jAv4C4u7DU56DU42DMv1Tcu1zgy1zox1Tsx0jswzTowyTsv1kw/zEY6v0AxtDkqsDYprDYqqzcqqTgqrDstrT0vrj4wrT0vrD0sqzwrrTwusT0wwUxC2mNb3mNe6Gtp8G9z6mlu9XJ6/HaB7mZy9295+XF79mpz/mx2/3d//3V8+Whv+WNu91Ji/kJb9zxZ6kth3XR7tZqJjZ56fZhre5dmgpVokZ11rLKQy8yt4ODE6ezR7vbe5fPZ2e3Rz+bJxd7AvNW3tMuurMekmsGUlsKRmcOTociZp8udrMuht82nwdKwztm72d3E5eLP7OXV7+HW69rS59LN49DK4M/I2szD1ce+W04+W04+Wk09Wk09Wk09Wk09WUw8WUw8Wk09WUw8WUw8WEs7WEs7WUw8Wk09Wkw/Vko+Vko+WEw+WU48Wk08W047Wk06Wk08W09BV01EV01MXFJaXlhmYl1xamZ/c3CNd3aWeHicfHungX61hH+/h4LFiILIiYTHgn2/f3m3enWteHGndm+ldGuicGegemGLhFBcmUhHs0VI00hP7kJO+DpG/jZB/zpB9T097kE95kRB40VC5ENI6EFL7j1N6z9N2D9C0UdExUE8xEhAsjkuszov0VVLwz43yTgzxy8sxSooyC8qzjs0zUM5w0M2vD4vwTwtxDsrwzwpwTonwjsowzwpwjsnwzglxDUkyjcl1Dgp2Tcq3jYr4TMq5TMp6zMr9TMz/zU4/zg8/zQ6/y0y/ygt/ygv/isx/C0z9ikw8iYx9yk2/yw//ypB/SE68xov9iIx8ycw7Swx5jAv2zIt1DMr0TQr0DYq1DYr3Tkw5j026z436zo06Dcx6DUx4jky30g910s800U3yz0vxDYowjMlyDUrzzgtzjQs1DYt5kM84Dkz4DIx0iAg7Dg55TU11TAq0jQr0jQrzzUrzjYryjYqyDUrxTcr41lO2FJGykg7vkA0tzsvtTswtTwxtTwxrzktsTsvsj4xsT0urzssrTkqrTksrjotsTwy0FlR3GJd7HBw9HZ57m1y9XF89nJ9/3qF/3+J/3iC9Ghx92Vw/3F8/3V//2t2+F5q9k9h/0Fe9zhX6Ude2250up2LmamFgp5ufZlmgJZnjZxxoamEtLqYyM2t1dy9zNm7wdS0ssypp8KfnryYmraQlrKMkLCHibOBhrV/jbmElcCLnMKPocORqMWZssihvs6qy9G12tnE5t/N6t7S6dbP4czJ28bD1MG7zr21yLewWk09Wk09Wk09Wk09Wk09Wk09Wk09Wk09WEs7WEs7WUw8WUw8WUw8Wk09Wk09Wkw/WkxBWkxBW01AW049XU09Xk88XE88XE8+WU09WUxDWE1JWE5PW1FZXVViYFlpYVxyamaBb2uOc3CbdnGne3WzhH3BioPJjILHiH/Ain68iHmyg3Koh3OojXSrh2yjhlyEkEdOpEI5tkA8zUNA3kA/6Do79T0//0RF9z489D497T9A6kBD60JJ6kNN60FO40FM0T8/xUA5vj82tz4zsDwvsjwwwEQ40k1EyDcy1Do4zTIuzDMu1kM8yT80tTYnuz4suzYlwTonwzwpwjsowDklwjkmxjsoxzooyzon0Dko1jYo2DIk2i4i4TAm7Dcu9T019Tgy9zQw9zAt+Coq+yYo+yUn+yUn+yQp+yYs9yEp+CIu/yc3/yg+/yE7/xk3/Rcx/yc47yMu5iMr4yst3S0t1Cso0y4q3DQx4jY06DY07zc38jY18zIz7y4v7iws5S8s3Dky0Tox0jkx7FNLvCMbxCsj30ZAyC4mzS4q3jw36EVA4jo32C8q2i4q4jUx5Tw33z401TsvzzUpyzMmzDUqzTsuyzswxTgu7GJY4FpPyEM6uTYsujovuDgtsTMntDYqsTEmsDImrjImsDUmsDYnsjoqtDwusz0xsDowukM71lxX7HBw8XN29nh8+3mD9XF8/3yE/XeA+nR9/HN7/3J+/3J+/215/2d0/GBu9Elc/z5c/z5d5EBY1GVstZSBkqB8g51tfZlmfpRjh5dqlJ93nqaBoKeFnKeFkqN/iqN8gJ92eppxeZpvfJ1ygaB2g6R1gq13g7N5i7h/kbyElb6Gl76HnL6Mor2Qp7yTsbyavsKnz8y539PH49LK3MfE1L+8zLq2wbKruaqlWk09Wk09Wk09Wk09Wk09Wk09Wk09Wk09WEs7WEs7WUw8WUw8WUw8Wk09Wk09Wk09Wkw/Wkw/XU0+XU09XU47Xk88XE88XE8+XVBAW09DW05GWU5KWlBRXFNYX1VeX1dmZFx0aWKDbmeRcWqdeHCsgHm8iX/Ei4DEj4G/kH66jXSrjG6il3GkoXWom2ufmVd9nTxDqjUrsjYswjwz00A43T446D8680E99T079Ts89DtA8T5E7kBJ6EFJ4kBL20JHxzw5vT00tjwxsTsvqzosrjotvUE10EpB2kZC3EE91DYz0DUx1kE6zUM4vDossjUjvTgnwjsoxD0qxD0qxDsoxjsoyDspyzopzzkozzYm1DIl2jIl4zUq6jgu8Dkx8Dkx5zEm6DAm6i4l7ywm9isn+ysp/iwr/y0u/Ckv+iQs+iQw/yc3/yQ7/x04/xQz/BMw9R4w9i459TM85isy2ygs3C4w3jAy2ysu8To+9Dc99zQ69jI29zA1+DAz+TI19Dg32zIt2js11zgy5EU/5EVBzi8r0TIuwSIe1DUx4T886EVA4D042DMt2TIs3TYw3Tox1DouzzkqyTUnxzUoyDkryjwwyjwyxjkv7WNZ4VhOyUA4ujQrwjkxwzowvzYswjkvvzUrvzUrvTQquzUpuDYptTUosjcosDYptDswvEM601lU6Gxq73F09nh8/nyE+HaA/nyE/HmB+XZ+/nV//3N//3B9/2t3/GRx/V9u9kld/z5c/z5c6kRa02Rqro55i5dxepRkdZJceI5df5BjipVrjZhwi5VwhZRtcodgbYhdaYpdZ41ebJBicZVleZtpep9rgax0hLF2ird8jbt9kLx/k7yCl7yGm7uJm7WIorKNrbaXvr2oz8a32Me/1sG8z7y4xre0u62qsqSjXEw8XEw8XEw8XEw8XEw8XEw8XEw8XEw8Wko6Wko6W0s7W0s7W0s7XEw8XEw8XEw9XEw9XEw9Xkw+XU09XU47Xk88Xk88XE88X1JBXVFBXFBEW05GWk9LW1BOXVFTXVJaX1NnY1h2aF2Fa2KRc2ukf3a1h3y+iX27l4W/mYC3m3apnnCernWiunaltWmYsFJ2uDxEvjUvujQrwDwwy0M300U520M45D858T089zo++TpB9j1F70BH5kFI2UBFz0BCwDs2uDkwsTgtrTksqjkprTkquz8zz0Y+2UQ+2Do32Tc12js33EM93lBGzkg8tTMjvjkowTonxDspxj0ryT0syDwryTopzDkpzzcp0DMk0y8j4DUr7j019UA58joy6TQr4DQm3zUm4jIl5S8k7C0l7isl8Sso8ywp8yst8Cgr8iYv+Cg2/iU6/R03/BYz+Bgz9CU38jA78zVB8jhD8TxF8DxF6jY/5Cw28DI88y879i459i039S4z9S4x8y8x7TQy3DAs4j052jY03zs5/21r5UNB0jAuzi8s2js430A84EE72zw21Tcu1jUt1jUr0jYqyDYnxDcmwjYnxDgpxTsuxjwxxjwxxTsx62BZ4VRNyTwzvzAoyzsz0T42zjsz0j022D041zw31T430D0zyjwywjouuzcqtjYpuTsvvEA2z1RN42dl7W9y+Hp+/4GI+3yD+3yD+3mB+3iA/3eB/3OB/259/2d2+2Bw/Ftt9Ude/zxa/z5c7EZazmBjnn5neYVdaYRRaIVPbYNSdIVYfIlefYhgeIRccYJYYXpQX39QYYVVZo5abpRhdZxnfaBqfqNtg6xyhLJ0iLZ4i7l5i7l5jbl6kbp+lLqBk7F/layAm6mGqa2UurWix7muy7iyyLa0uKysqqGioJeaW0s7W0s7W0s7W0s7W0s7W0s7W0s7W0s7Wko6Wko6W0s7W0s7W0s7XEw8XEw8XEw8XUs9XUs9Xk09Xk09Xk07Xk88Xk88Xk88XlFAXlFAXU9CW09DXE5FXE9HXVBKXU9PXlBfYlRtZFl7aV6JcGecfXWuhXu3iHuzmYW4pYW0r4CquHqhxnif0XWcymSMxk1s3EZS30FA1UE9z0U7zEg7zUc700U53kE67kBB9TxB+j1E+D9H8UJJ40JH0kBBxj88vz82tjwxsDourDstqjkprzkrvD4yzkQ61Tw31TMx4Ds55UE/4UQ/6FNM31VKvzorwjoqvzglwDclxDspyT0syj0syzkqzjgpzjUn0jIm2TIp5Tkv8T439T448DUw5C8m4DUr3jYp4DQq4zEn5y4p6i0p7Ssp7Ssr6iks6Ccs6ycx8ik59yc9+CI8/B8++yVB+zZI5Cg25y48/1Bc/2Bs/1Bc8jxJ8zlH6Ck47So48i469DA68TI36jAx4Ssq2Ckm2DAt2jcy1DIv5UNA/3Nw9VZT3T095UdG2z082jw51To10jgw0Tct0DYqzTQmxjMjvjUjuTYkuzgmvzsswDwvvzkuwDovxTw05VhR3E1HyjcwxzAp1zw33kE62zw23zw15z456T055j854UA42T81zzwyyDouwTktuzksuzwzzE9J4GNf7G5v+nx//4SI/X6F+HmA+HmA/HmB/3iC/3SC/259/WV0+V5u91Zo80Vc/ThW/zxa7khcx1lai21TY3JHXXVDXHlDZHpJbX5RdIFWdoNYc4JZb4FXbYdabI5cb5VidZ1oe6NugahxhKpxhatwha1xhbF0iLR1ibd2ibd2ibd2i7d4j7h8kbR+j6t7kqR+m6SHrauWvrKkyLevx7i1tKuwoZ6ll5KZW0s7W0s7W0s7W0s7W0s7W0s7W0s7W0s7Wko6Wko6W0s7W0s7W0s7XEw8XEw8XEw8XUs9Xks9X0w9Xk09Xk07X048Xk88Xk88Xk88Xk4+Xk4+XE8/X09CXU9CXlBFXk9KYk5ZY1JlY1RxZFp9bGWReHKif3eog3aklH2nrIarwompzoKe2neU4WyJ21h32kRf9ENV+0VR70pQ4UlI0UY/y0U80EU+2kVB6UND8EBD9UBH9UJI7URJ30NEz0E/w0A4v0A3tT0vrjorqzoqqjkprjgquzsuzD824UZC4j077kJC60FB3js25EtD5lhM1Us+yUEzwDgovDMjwTgoyDwtyToqyzcp0DgrzjAl1zMp4Dgv6Ts07To17TYy6y8t5Swp4zAs4zEt5zEw7DMx8zI19jM39zQ49zY77C016iw27S498TBD8y1G9ilI/StO/zNS9DlM5TM/8EBN/19s/2t5/1dm9UNT9T5Q7jNE7TNB7TNA6jc94zk52zgzzjQqxy8kyzIqxy4o0Dcy8llU9lxa8lhW20FB4khG3EJA1Dw3zjcwzTYt0DkuzzkryjcnwjUjuTglszgmtToouT4uuTsttjYrvDcuxz42205H2UVBzjUw0DEt4T4550A64zgx5zUx6zIw7jIx6zUy5zgz4Toy2Dov0DkuyDouvjUrujctyElC3F9Z625s+32A/4WJ/X+D9XZ99nd+/HmB/3iC/3OD/2t9/WR2+V5w9FJn9EZf/ThW/j1a70xdwFRSe2BDV2g8WXE/W3ZDZnlLbn5RdIFWeIVaeYhfd4xheZVleJpoeqBtfKdxgapyhKtyhatwhqlvh61yiLB0ibN0iLV0h7V0hbdyibd2i7h3kLZ7jqx4jqN4maSCra2VwLmnzsC10sTBvLnAqKq2nJyoW0s7W0s7W0s7W0s7W0s7W0s7W0s7W0s7Wko6Wko6W0s7W0s7W0s7XEw8XEw8XUw8Xks9Xks9X0w9X0w9Xk07X048Xk88Xk88XU47XU47Xk88X08/YFBAYFBAYVFBYlBGYk5QY05dX1BlYFVzZ2GFdG+Xe3SdfnKYj3aWroOfzIuh24KW5nKF62R16VBk6TtS+TNM/zxR+0VS6URL1T9AzkA+0UNB1kVC40VG6EJE7kFF7UNG50RH2kRDy0I8wEA1uz8zsTstqTgoqTopqjkpsDgqvDotyjsz6ElF6kBA6z0+5Tc42jIv30I77lpQ9Ghb21FEyUEzvjQnwjYnyDosyDkryzcr0jgs0TAm2jYt5js06Ts06jQw6C8s6i0r6y0t8zQ59TM7+DM9/DM9/zE+/zE+/TE9+TE+9TBB8jFE9DRL9TVO9S9Q9i1R/zJZ/z5f5jNI+U9c/2Fu/19u/1dm+1Bg9ERY6ThK80FR6jpH3TI70i8yyjItwjgtvTsrvTsrxDovwDIo2UpC+mtj3UxH4VBLzzs5zzs54ExK1EA8yzgxyjctzjwvzj0syzopxDsotDsmrjsmrzwpsz4tsTkrrzMnujoxykM91kdB2UQ+1Dcy1zIu5zs37Do26DIu7TIt8iwt9Cws8y8w7zMx6Dcx4jox2jwx0j4ywzYsujQpxUI62FlT52po+nx9/4aJ/oCE9XZ993h//XqC/3iC/3GB/2l7+2J0+F1v8lBl90li/zpY/kBc8E9fulFOcVg6U2Y4XXVFYXxJboFTdoZZe4hdfotggZBngpdsgJxsfZ9tfKRvfahwgKlvgqpug6lshalsiKtxiK5xiLByhrNyhLNvg7Vwhbdyibh0i7V2iax0jqV3mqiEsLSZyMOv2MzA29HPwsLMq7HBm6GxWks4Wks4Wks4Wks4Wks4Wks4Wks4Wks4Wks4Wks4W0w5W0w5W0w5XE06XE06XUw6Xks8YEo8X0w9X0w9Xk09X04+Xk88Xk88Xk88X1A9YVA+YVA+YVA+YVA+YVA+Yk9BZU1NZE1XYE9fYVVtZ2KAdXGSfHaYgHORj3WOrYCUzoaU336H7nF5+WNs+lBb+jtN/ypG/zJR/zxT8TxN4DxF10BF1UNE1EJD3ENF4EJD5EFE40NF3kRC1EM+yUA4vj4zuD4xrzkrqDcnqToprTwqtDwswT0xzz834D475Tk54zAz4i8y4DQy2zk0505G/Gxh8mhd2VFDxjwvxjotyDouyTcqzTYr1Tgv1TQs3jcv5jkz6Tcz6TEv6C8t7jEv9TE1/zJD/zBF/y1G/ypC/yZB/yM9/CA69iA69yZD9SpH9S5N9S9Q8ytS9ClU/zJg/0Fo80NY/2Bt/2h1+FZl7Uta8Uxc60JV2jJD60BS3TdDySwzuigosS4kqzgmpT8mqEAnuD8uvDos3VlN4V1RzUc+zUQ+wTYzyTs35FVR1UZAyTkxyDgtyjstyTopyDkoxD0psT4ppjwmqDsnrD0qqzcorDMovD0000xG1kdB3UVA2zk23DMw6Tcz7TYy6zAr9DEt/Swv/yst+i4v9DEv7TQv5jgx3zsx2D4yyTkuvTMowDsyz05I4WFe93l6/4iK/4OH+XqB+3yD/3uG/3iE/25+/mV3915w9Vps60xg9Ulh/DlX+z1Z7k1ds0tIaFExUWQ2XHREZn5Ododbf45jhJBohpJqiJduiZ5ziKR0hKZ0f6dyfahwf6hugaltg6lshalshahuh6tuha1vha9vgbBsgLJrgrZuhbdyh7N0h610jad3nKyFsrmayMav186/2dLMu7/KpKy/kpqtW0o4Wks4W0o4Wks4W0o4Wks4W0o4Wks4W0o4Wks4XEs5W0w5XEs5XE06XUw6XUw6Xks8Xks8X0w9Xk09Xk09Xk4+Xk4+XE88YVI/YVI/YVI/YlE/YlE/YVA+YU49Ykw/aE9LZ05SYlBcY1dramZ/d3aVfXycgXiXkXqWq4GVxoSS2n2F8HV6/Wts/1lb/URM/zBK/zVU/zxV9D1R6T9M40NN3UJI1j1A20FD3EBD3kBB20E/2EM/0EE5xz40vT0wtT8xrDsrqTgorTwstD8uu0AxykE32EM92Tc04Tg13y8v4jMw5zs30zAn0TUp61VH/3Zs61tQ0UM3yjwwyzswyjgrzTYr1Dow2jcw3zgy5TYz5zMy6jAx7TEy9DM2/TQ8/yY3/yM5/yI5/yI5/yE4/x84/h42+B427xs07h858CVC8ClI7iZK8SdN/zNe/0Vo/2J1/2Bs91dj8VFd8lBd701a4kBN1DI92j1GzDc7uy8uri8opjUnojsonEAnnD4lqjknsjgr0lZKuzsyxD84vjQxvTIvzkNA5VdT1UhByDkxxDYsxjcpxDUlxjUkwzoosTwopzomqDclrTkqrDQmrzElwj8121JK2klE4UhD3js23jIu6jQx7TEv7y0r/DIy/iwv/Ssu+Sst8ysr7S0q5jEq3zQs1jgs0T0xvzIovDcuyElC2VxY83d3/4mL/4eK+4CF/n+I/32I/3aE/2p8/l9z91hs9lRp60Vd9URe9TZV8TpW4ExapUhDXkstTWM1V28/Yn1KdYtcgpVnh5hsiJtuiqByi6V2jKx6hqt3gapyfqdtfKVpfaVngaVogqZpgqVrgqhtg6ttgqxsf65ofrBpgbNqhLZvibZzia9yjqx4mbCErbuYv8Wpy8q1y83Ctr3Fnqq6i5enXUs3XEs3XUs3XEs3XUs3XEs3XUs3XEs3Xkw4XUw4Xkw4XUw4Xkw4XUw4Xkw4XUw6XUo8XUs9Xkw+XU0+XEw9W049XVA/XlNBYFNCX1JBYFBAYlFBY1JCZFFCZE5BZExCak1JaEtNZFBZZltsbmuGeHuegYStiYiyj4OppYepvoig0IKS4nl+8HNx+mpi/2Fe+UpX8T5R6zpM7j9Q70NR6kBN5z1I5T5G4j1D3zxB2jw91jw6zz45yj00wTswuTstqDcnr0EwrTwsrDYov0E1zEY9zT420Dcy2jg13Dcx3jUu3jYt3jgq3Twq2Ton0zYl2Tsy8FNM8llR2UU5xzgqzT4u1EIz0jot1DMr8EdC4S8v7jU68zY97iw3/0JN8Scz+iYy/yky/ygy+R0n/SEr/ycw/ygw8R4n8B4p+Ss36iAu7CY38S1D5yM7/1hz6C5F/11s/19p/lpj+VVc9VBX60hN3T9Azjk1yz43xEE3tz8xpjcmmjMimTYjmjsnnzwppzgtrzgwwkU/vzs3vTMxxTc1xTU01ERD20xI2ktF0UQ7yDowxDQpxzUozDUqxTUqvDwvszksrS8jqygesy0kwzkv0kM72Eg/5E9I30U92jcw3TAq5y8t8jIx+jI0/TE09y8y9i8y9jAx8zAu8jAu7jMu5jUt3Tkv1T0wvjIlwD4xuT0z1l9Z6XNx/4+P+4SG+4aM/4OO/3iI/2h9/193/1t1/1Vv+Exm+EVj8TpZ9Dtb5j9Z211pi0A7VkYtTF42WnVCaIdOd5ZdfZxjf51ngKFqg6ZwgqdxgKduf6ZtfqVsfaVpfaNof6Nmf6Nmf6NmfqRrf6Ztgapuf6xrfq1nf65mgbFng7Nph7Vti7RyjbB2kK58mrOJqLyZscGkssGuprKwjZieeoWLXUs3XUs3XUs3XUs3XUs3XUs3XUs3XUs3Xkw4Xkw4Xkw4Xkw4Xkw4Xkw4Xkw4Xks6XUs9Xkw+YE5AXk4/W04+W04+XFBAXlJCX1NDXVFDXU9CX05EYU9FYlBGY09IZU5IaU1KZ05RZVNfaF90b26QeX6ogIe7h4rBnpXKo4u7q3+juXiQ03mD6nx79HZq9mlg+F1h809a7EZS8khV+UpZ9kZT7z9K6ztF5DlB4Do+2jo61T04zj83yD81wDwvtzwsqzwrqj8tqjkpsjoswUE2xj01yDcy1Dw30jUw1jUt1zUq2TUp2jcm2zom2zsl2jkn3TYu5kE7601E4ko90T8wxzgoyzkq1Dwv3js09kpG5TEy8DY79jZB8S48/0BO7yc08yQs9yUo+yks/Ssu/Ssu+Cgo9igq9yss7yQn7SUo6yYt/jxF2Rop8DRD/EFU2CY2/2p1/2Jq/lph/Fdd9E9T5UJD2D050T42vjgsv0Q1uUg2qT4smS8fkCkajygZkigbni0lsTs30VRSzkhHwzU0xzU20T0961dV2EdC1kdB0EE5xzkvxjMpyjYs0Dcvzzgxxz0zwjkxwjUuxDMuyTQu0Tgz2D8530ZA5EpC3kE42jYt3TAq5y8t8jEy+zAz+zAz9DA08zEy9DAy8y8w8zAu7zIu5zQt3zkt1z0xvzMkvjwvtz0y015X6XZz/5CQ+YWI+IWK/4GM/3SF/2Z8/1x2/1h0/1Fv/klo/UFi8zpa8T9f4kphwVNcfEA4U0cxTV85W3ZDZ4ZLc5VZeJxfd51ie6FmfaRrfaZsfKVpfKVpfKRoe6Nne6FkfaFkfqBjfqJlfKNqfaZufalsfappfKtlfa1jf69jgrBlhbBoh7JriK9wiKtzi6t8kKyEkKqHjKKLeIeAZHBwUl5eXUw6XUw6XUw6XUw6XUw6XUw6XUw6XUw6Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xks8X04+YVBAYFBAXVA/XE8/XFBAW1JDXFJGW1FHXE9HXE9JX1BNY1FPZlRUZ1VVaFZWaFddaF1ubWiGc3ajfIO6gorLio3UmJHXoIrKqoK0uX2fz4CT5ISG7n9283Nq/GZo91Nc7UdR8EZR9kdU90VR8kBM7j1H5Tg+4Dc62Tk51Dw3zUA3xUE0vj8wtj4trT4tqjwrqzosuEI2x0g/wDsyvDEqyjoyzTYv0DYu1Tcs2Dgs2Tco2Tgm3Dkm4Doq3TQt2zQu4kE56U9D3kg6yDUlyTMk2UAy4j419UhE6DEz8jU7+TdA+DRA/0VT+DI/8Ckw6yMm7CQn+TEz9S0v7ycn7CYn9TEy6ykq9jg66Csx4ikx7DRA/1Je7z1N/1xp/l5m8VZc7k9U8U5T6kVJ3To71Tc01D85wDYswT8yvEI1sz0xrDctpTMpoSwlnCcgmiUeqjArx0VDwjo6vS0tyDM110FC9F5d0UA70kM90EE5yz0zzDkv1D0020E520A720A82D073T0940BB5D4+4Do64z897EpH4EE73Tw02TUs3TIr5zEt8DMx9TEy+DAy9DA09DAy9DAy8y8w8zAu7zIu5zQt3zkt2D4ywDQlujgrtTsw0FtU7Xp3/5OS+4eK+oOJ/X6J/3KC/2R5/1t0/1Rx/05t/0Zn+z1h9Dxe70Zj31RnokFIcDszU0gyUWE8XnlGaIdOcpNadZhedJpfeJ5je6NnfKRoeaJmeaJmeaFjeKBieZ9ie59ifZ9ifKBjeqFoe6Rqe6doe6hle6lhe6lgfatgf61ih7JqirVui7Jziax0hqZ3gp51eZNucIdtVGRZQ09NNEA+Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xkw4YE46YVA8YFE+XVA/Wk4+WU9DWFBFWE9IW1FPX1VUYlhZZVhfaVljbFxma15nbGFpbWVyb2uCdHSaeX61f4bKhozajY7hjofXn4vTrYrEs4CpvXmOzHuB3oF68oJ3/3Ny/2Nn+VVc9E1U9UdR9ENN8j5J7ztE5TY74Dg42zk31Dw3zUA2xkI1vEExtz8uqzoqrT4tsT0wvEY6zVNIx0g/ujUuujEpyDkxzTgx1Dwx2T0x2zst2TYn3DYm4Dgr4DUt2zIr4T417E5C5Ew+0jos0Tgq4EI23zcu8D466S8w8DE29zQ8/DhC/05a/0xV/T5F8jM44iQm7S8x6iws8DIy6Coq6y8u8jo60hsd5jM33Swy6DhC8EVO/1hj8k5X2D1D20JF4UJH4T5D3zo+3Tg82Dg40zk3yTgzwjkxvToywEE6zU5I1lZT0E5Ow0NCsjcytjk1z0tJ2U1M5FJT71la61NS8VlWyTUxzj420kI50EA30z812UI54EM840E+6T9A5zg97Dk/8j9D8DtA6DU47D4/9k1K3jkz2zYw2jMr3jMs5TQu7TQx8jIx9DAx9DAy9i8y9i8y9S8w9S8u8TEu6TQt4Dgt2T8zwjYntzUotDovy1ZP73x5/5OS/IiL/YGJ/nqH/W9//GN3/1hx/09s/0Zo/0Bj+Tle9D9g6Utk2FpohTM1ZzswV084WGhEYXtLaolQc5JZdJVcdZhed51ieaFleqJmd6BkdqBhd59hdp5geJ5heJ5he59hfKBjeqJmeqNnfKZmeqdkeqhgeqhdfKtdfq1fhrJni7RujLN0iq1zhqZ1gJ1xdI5paYBkUmJVRlNMOkdAX048X048X048X048X048X048X048X048Xk07Xk07Xk07Xk07Xk07Xk07Xk07Xk05XUs1X001YFA5X1A7XE8/Wk5CWE9GWFFLWVBRYFdcZ2BobmZzc2h5c2d7c2d9cml+cG1+cHGGc3aXeHyrfIHBgIbShYngjIzmlY3jnYzaoIS/nnWfoGyCrG5xvHZs0nZp8nNt/2xs/2dp/l5g+1JZ9UZN7ztE6jc95zY84jg53Tk41j03zkE3xkI1vUIwuEAvrTcptUE0sDsxsDsxyFJI1VxTyU1FuzsyvjkwwTctzDkv1z802z0x2jYq3DQn4jYq4DMs4jcw5D015UU54kY53kIz3kEy4j4y2zAm6jcy7DAv7y4x8S40+jc//1BY/11k/1pf/09T4S4x4zAz4Cwv90RH6DY23Cws2y0u6z5A3TM22TM3/2Jo4DxDyyoyyi00wSYq1Ts94UBF2zY62TM33zk93Dc7zS8wzDQzzTs71UdG3lJT7GBj9Whu9GVr6l1jxEA+xkVA5V5b+Ghn/29w/2pq5UtL1z07yTQw0T432EU91kM71T411Tw02Dkz3DQz7zY88S058Cw28i448Cw26ywz8zk+/kpL3zMv3DMu2jMr3DMs4zUu6jQw7zQv8jIx9DAy9i8y9y8y9i4w9S8u8TEu6jMt4jct2T8zxjgqtDIlsjgtw05H73x5/5KR/4iM/3+J/3eF+mx8+GF0+1Ru/Uhn/z5i/zpf+jZc9EJi4E5lwldhcTAsXz8wW1c+XmxJZn5Oa4lTdJJcdZZfdplfeJ5jeaFleKBkdp5gdp5gdZ1fdp5fd55feJ9ge59hfKBieqJke6VlfKZkfKdieadeeadce6pcfaxegKxhha9nh65th6pwhaVzg6Bye5VucopqZndlW2teUmJVX048X048X048X048X048X048X048X048X048X048X048X048X048X048X048X046Xkw0X040YE44Xk88W04+WU9FWlNNWlRUX1phaGJwcm2BenWMfXSRe3GTenCTdnCScXSTcniadXyoeYC2e4PEf4XPhonajYvelo/cmYrNm4W2ooOjqoSRq355n2xbm1I/vE1C1FFJ4ldS61dV8VNU8UtP7T5D5jU76Tk85jk74Ds52T4500A4ykI2wUIxuj8vtDotukE2qzUroy4kvkk/2Wdc2WRay1VLuT0zuDUrwDMpzjow2Tsw2jYs3jMp5DYt3zEq5Tgy4zsy3Tkv3j4w40Y35EI13zkt3zEo6jUu8DMx8C4v7Sou9DE3/0VK/1Zb/11i/1xh4jk84zk81Ssu9EpN4jg52DAw2zU3zCgpzCcr+Fdc3T5D1jo+0jc9uh8jxSks3Dw+50JG3TQ52Swy3jE32jE2zSgu0jM35EtO9mFl+2hu+WNs919r+mBs+GJr1kxM1U5K6lxa6lZU501N40hGzzQyzjMv2UE84EtE5E9I30pD2UA41zoz1zUw3C4t9TE7+yw8+Co39Sc09Sk0+DA6/z5D/0pM4DEu3jMs3DMs3TUs4TQt5zQv7TQv8TQy9DAy9y8y+S4y+C0w9i4u8jAu6zIt4jct2T0xyTsttDIlsTcsu0Q+7Hl2/42N/4iN/3yI/3GB9mh49l9y+VJs+URj/zle/zZd+jhd8Udk0U5goklNZTUrVkQwW1lAXmxJZXxOa4hSdJFbd5VfeJlge55keqBldp5gc5tdc5tcc5tcdJxddp1ed55fe59heqFieqFie6RifKdie6ZfeKZbeKdZeqlZe6pafqpfg61lhaxrh6ltiadziaV1hJ11fJRydohwbn9sZndlX08/X08/X08/X08/X08/X08/X08/X08/Xk4+Xk4+Xk4+Xk4+Xk4+Xk4+Xk4+X046YU83YVA2YU85Xk88W09DW1JLXFZWX1pha2d2c2+GfXqXgn6hgXylfXeje3WleHanc3mpc32weoG4fYO/gIbEhYnJjY7OlJPNmpPHoJW9q5u1vKayya2pxaaUqohtnGZKnEUyr0E0t0E1w0M610lF6U9P7kpL7D9D6z0/6Ts95Dw73z062UA60EA3yD4xwT0wvToyvEA4rzQspzEnvEpA0WJX1mdc1WVZw09Cuj4yujQpxzcu1jkw2TUs3zIr5zYw4zEt5DUw4jcv3zgv4D4x5kQ35D4w3jQn5jQq6TAr8DMv8C4u7y0u8jE08zc49kJF9k1S/Fle6UZL9lFX2TQ460ZK3Tg85kFF2jc6zy8x0TA15EhL0zg80Dc6uSMl1To+2zg75Ts+6zxB6Dc94i023Sky4TE75zxE8ExT/V1l/2tz/2pz+mBs9lpo+Vho91to9GRk6FpW6FdU2EA9zzEw1DQ00zMz4UNA40pF6VJL6lNM4UpB2T832Dkz2zgx4zMz8y44/zA+/zA++io4/C46/ztF/0NI+0FE4zEv3zQt3TQt3TUs4jQt5jMs7TQv8jUz9DAy9y8y+S4y+C0w9i4u8jAu6zIt4zct2DovzT4wtTElsTcssjs16XNx/4qK/4eN/3aG/ml982F081tw91Bq+kNi/zhg/zhh+Tth7Exov09bfjg2XT0wTkYxVlhAWmVFY3hNaoVSco5bdpReeZphe55keJ5hdJpdcJhacJhZcZlacZpYdJtcdZxdeZ1feJ9geaBfeaJeeqVeeaRceKRZeKRXeaVWe6dYf6lfgqxkhKtohqhsh6VvhqJxgJlveJFqcoVpbH5kZHZeX08/X08/X08/X08/X08/X08/X08/X08/Xk4+Xk4+Xk4+Xk4+Xk4+Xk4+Xk4+X048Y1E5Y1E5YVA8XVBAWlBHXFRSX1phYV9tdHKKenmZgYCog4Gwf32ve3ivenaxd3e1d3y+eIDBfYXEgojEh4rBjY+/l5a+oJ28rKe7tqy1vrOxyLir0L6m1sGi0buW0KyIr29Ur11IpUg2qD4wwkc/4FdR71dW8U5P6UBD6j0/5jw94z483z062D040ToxyTkwwTgwwDw3uToztz41wlBGx1hNx11Q0WVY02NVw00/vDkvxTgu0jkx1zQt3zIs5zYw5jQw4jMu4DUu4zwz50M35kI24jot3zMn6jUs5i4m8DAt8DAt8DMx8TU05y0u4zM150JG91hd9ldc/2915URK60hN4T1E/ltg/2913z5D/32C/21x6lFU1D5AxjAy1jo980lM7jlA8ThA+D1G8jdC6C049D5K/11o/213/2py/2Nu911n+l5r/2Fw/11u+Vll8lxd409L4kpH1Tc00zAx2TU00jAu2Dk130Q/40pE40pC2UA40zYv1jQv3Dcx6Tc36icv/DA8/jI++Cw3+TA6/z5F/T5D7DQ04jMu4DUu3jYt3zQs4TMq6DMs7zQv9DQz9i8y9y8y+S4y+C0w+C4u8zAu6zIt4zct1zku0T8ytjAlsjYssDYx529u/4eI/4aO/3CC/GN48Vxw9Fhu909p+0Ji/zlh/zxk9kFk5FJpsFFXZC8nV0QzR0cvUlQ8VV4/Y3VNaYFRcYtbdpJfephifJ1keJxfcplabpZXbpdVbpdVb5hWcpladJtcd5tdd55dd55beKFbeaNbd6NYdqJXdqJVd6NUeaVYeqRafqZfgaZjf6Fkfpxme5dmcoxfa4FaYHZSW25QU2ZIXEw8Xk4+YFBAYFBAX08/X08/YFBAYVFBYlJCX08/XU09Xk4+YVFBY1NDYlJCYFE+ZFM/YVA+XVBAXlFJW1FQWlNaZWFwc3GJeXiaenylfoCxgIG5fn66eXm3c3K0bm62dHfIdnvMgIPKi43GlpfDpKS+srC7vLm0y8az08yw2c+s28+n3M+j3dCj2cuc2cKY0aiIuIBnoV9Jy3pn1nRnvUg/11FO92Nj6UtM5T9B4jg55Do74jo53Dc12TUz1js2yzczwDUwx0I7uT0zv0k/xlhLuU9BzmRW0WNUzFhJxUc7xDovzTYt2Dcv4TYv4zQv3zAt3zIs4Dcw5D004T0x3Tcr3zUo5Tcs5TAn6i8o7C8r7jEt7jIw6zQw6DUx4zc11zc55kpO9Vld7k9U1zg91zY8+Vhg/36E/36G/291/2dv/2lw/2Zs9Vxh8Vhb+1pf/1Vc/0RM/DhC+zdD9zNB7yw67DA+8T1J/1Nf/2Bp/2dy/2Vw/mJt/2Jw/2Bv/V1n7VNT30ZB1jg11jQx1zEx1y8u2DMx2zk04UQ93EI62T831jw01zkw2zgx4Dkz5jY28Tc89DU89jQ89jQ89zU98jU56zM14zEv3jMs3jUu3zcu4TYu5DMr6TIs7zIs9jMx9zAz+DAz+i8z+S4x+S8v9DEv7DMu5Tcu4D81zDgsvzYsry8muDs30lhX/5ia/nuD/22A/2V8+Fx08FBq9Uhm/ENl/ztk+Tlg9U5s01JkiT0/UiwhQzsmQ0cuS001WmBEWmpFY3hNcYhaeJJieJZgdJVccpZZcZhZbJVTbZZSbpdTb5hUcplYdJtadZxddZxbdJtYdJ1XdqBYd6FXdqJXdqJVdaFUdKBTe6Vbe6Ndep5edZdbbYtVYn5NWHJDU2o+QVcwP1UvPFIsXEw8Xk4+YFBAYVFBYFBAX08/YFBAYVFBY1NDYFBAX08/YFBAYlJCY1NDYlJCYFBAZlZHX1FGXVBIXlRTYVphZGBvbWuDdneWeHqje32ufX+4eHy5cna2bG+0bXC3b3G+dXbQfH7ViYnTmJjOqKfHubbBycW6086x29eq4tul596l5t2i5Nuk4tij29Gg1Meb07ycu5yAqXxlxYt3yn1ttFZK0mFb9nJw7Fpb50tM4z9A6D4/6z5A6Dw84jY22zU11j04yTgzyj84uTYuuD4zvkxBtkg7yF1N3W9g1GBRxkg6vTUpxTEn1DYt3DUt2zAp4jUx5Tk15D034Dwz3Dgu2zUp3zQq4zUq7Dcu7TUt7TIt6zAr5zAs4zIs4TQu3TUy1jg32D5A5UpO81db+l1k/Fxk/l1l/2Fp9FNb705W8VFb/19n/2px/2Zs9Vpg805U7TQ68Sw19Co29y058Sc15SEv5ic27TdE/k9c/1pk/2Js/2Rt/2Vu/2Nt/Vto9VFa5UVF3jw32zY03jYz3zU13DMw2jIv2zYy4D452z432Tw11zoz2zgx3zgy5Tk15zo26zg76zc67TY67zY77zc57DU35TMx3zIs3TQt3TYt3zcu4jYs5TIr6jEs8jEs9TIw9zAz9zAz+i8z+S4x9y8v9DEv7DMu5Tcu3zwz1D0ywjgutjEqtzc02Fpb/5CT+3N9/2Z6/152+VZx905r+kdn/EBj/Dxj9UFk5U9oukxXeTw5TDIjPDojPEIoRUcvUFQ5VmRBYHJKboNYdY9fdpJfdJNacZNXcJRUa5JPa5RQbJVRbZZScJdWcplYc5pbc5pZdZxZdZ1XdZ9XdZ9XdJ5Ucp5RcZ1ScZtRb5dQbJROaYxMYoFGWHU/Tmk2Rl0vQFcrQFctQVguQVguWUw8W04+XlFBXlFBXlFBXlFBX1JCYFNDYVREYFNDX1JCYFNDYlVFYlVFYFNDXlBDYlVNXFFNW1FSY1lia2R0cW2EdnWVenyleXuseX62eHy7b3S2ZWmwYmavam64cnXGfX3Xh4Tdl5TbqafYu7nPzcnI3Ni/5eG06eSq7eim8Oml7eWk5+Gn4tun18+hy8OeuK+SqZuBm4JsqINwp29gnFJHul1V3W1p93V1719f5EpM5kFF60FE7D5A6Dg74zY43z071Ds21EE6wzgxtzcstz4zrj0vt0c522pc32lb2lxOykI2xjMp0TQr2TYt2TIs3jUy6UE+7EdD4D021TIp1TEn2zMo3jAn5zQt6DEr5y4p5i8p4zIs4zgw4T004EI5xi0oyjQz3ENF8FZY+l5i91ph81Nb8VFb6UdS6khT709b/Fxm/212/2509Flf4z5E6S419C00+zI8/DI+9Ss57Sc29jZF/0tX90lT9VBX+Fdf/l5m/2Nr/2Bp91JZ6UJJ3jk33jcx4zc16Tw47Dw85jk14TUx3TYw3Toz2Tsy1zkw1zkw3Dcx4jk06Ds36Tw44zk54zk55jg36Dg46Dg45jY24TQw2zIr2jYt2zct3jcu4jYs5zIr6zAp8zAs9zEw9TEz9TEz+DAz9y8x9y8v8zEv7jMu5zYu3jox3EQ5yDkxuzQutS8u5F9i/4OI+Gx3/mJ4/ldz+lBt/kxs/0Jo9zpg9Dxg7Elm1FNnnURKbTw1Tz4sPTwnOj8oRUQvRkgwUVw8WWtFZ3xRcolbdI9ccZBXbY9SbJBQaZBNaZFLapNNa5RQbpVUb5ZVcJdYcZhZdZxZdZ1XdJxWcpxUcJpSbZdNa5VNapRMZo5IYYhFXH5BVXQ7TGkzRWAtQVgqPlUnRFsvRV8ySWM2V0o6Wk09XVBAXlFBXlFBXlFBX1JCYVREYFNDYFNDYVREYVREYVREYVREX1JCXVFFWk9NW1JXYlhjamNzcW2GdnWVeHqjenytd3y0c3m3bXK0ZGivXWSsYWexbHK+eHvKiYnflZHlpKHkt7Thx8TZ1dHO4d3E5+S56+av7uqt7uis6eKr49uq2tOpy8Khu7aZpaWNm5iFk4h2mIFxmXJjm2JXs2lgz3Jt+4uJ9XV06ltd5kxO6URI7UBE7DtB6Ts93zo42zw430ZA00M7wzowujovsDYppzEjv0k722FS6mpd21NHyjovzDQp1DYr1zQt2TQy8U1L/lpY7UtG2jkx1zQr2zQr3jIo3y4m4i0m4Swl3i0l3DEp2jYs2Tsw1z80wi8nxDQszjo42UNC30ZI4EVJ5EdO6k1W8VFd9lZi+Fhk+Vxn/2dy/2119Flh3jtA6zI48S408y438io06yUy7Sk1+zxL/1Nf7T9J6EFJ6kdM9FFW/1lg/1hd9EdN5Tc54TUz5Tg06zw58kA+9EA/7z075jk14Dcy3Tgy2jkx2Tgw2Tgw3Dcx5Dg06Dk26js44jo34Ds54zo35jo45zk45Tg04DUu2jMr2jYs3Dgu3jgs4jYs5zIp6zAp8i8r9jAv9DIz9DIz9zAz9jAx9jAv8zEv7jMu5zYu3Dgv4EY8yTkxvzQvtiws7mZq/3mA+Gd0/2J5/VRx/ktr/0dq/z1l8zZc6z1e41FoxFhliEJCZ0M3W047R0YxQUMtSkgzRUUtTFU2U2M+YnRMbINVcItYb4xUbYxQaY5LaY5JaJBKaJFLapNNbJNSbpVUb5VYcJdYdJtYc5tVcZlTb5dRa5ROaJFLZY5IZI1HYIdEXYFBV3k9UnE4TWk2TGY2T2U3T2Y4TmU3T2k5U20+VUg4WEs7W04+XE8/XVBAXVBAX1JCYVREX1JCYFNDYVREYVREYFNDYFNDX1JCXlFJVk1SX1hobmZ7dXGKeHSXeHeheHqreXu0dHi3bHGzYmatXGOrYGawa3G7dnzGgITOk5Xgn57krq3nvbzmy8nf1NPY3dvO4d/G5eG+5uK85N+54Ne22tC1zsaxvrWmraebmZmNjI6Bi4V5inxxkXZrm3NpqG1lum9p5omE7oF+83Ny8WVk8VdZ8E1O7kRH7D9B4zo34Ds35EI93kU/zDwzxj0zxEI1sDIkrjAiyEo83FhL1k5AzD0vzjcs0Tcr0TMq1jQy9VVV/2to+l1Y40Q+3Dsz3zsy4zgw4jQt4zIs4jEr3TAp1DAnzS8kxi8kwjAjxTkswDQnwTIqzDs210NB20VH20JH2kBI4ERP7FBb8lZj8lZh+l5p/2dv81lh4UJH6jo87TU37zI47zI48jI99zlD/0hV/1Zh5TdA3TQ73zY760FE+UpP/ElN9TxC6TEz6TU06zk18D058z068zs58Do36Tcz4zgx3zsy3Dsx2zoy3Dky3zgy5Dcz6DY06Tc15jo45Ds45jo46Do56Ds35jk14TYv3DMs2zct3Dgu3zkt4TYs5TMp6TEp8TAp9DEt8zIz8TMz9DIz9DAx9DEv8zEv7jMu5zYu3jcv4EM6yjcwwDEtwDEz+Gtx/3F6+mZ0+110+lBt/0Jo/z5n/zlj9The5kVk2Vptq1Zbd0U+ZEo9YVlGVE87S0k0UEk3R0UwR1AzTV05WmxGZntQbYVTbYpSbIxNaI1KaY5JZ49IZ5BKaZJMa5RSbJVTbpRXb5ZXdJhYc5hVbpVSa5JPZo9LY4xIYYpGX4hGW4JDWX1AU3Q7UG44T2s6Umw9WG5AWnFDV28/VnE+V3FBUkU1VUg4WEs7Wk09W04+XE8/XlFBYFNDYFNDYVREYVREYVREYFNDYFNDYlVFYldRXlZja2Z9eXWQfnqbenmheHmpdnmwdHi1bHGzY2qwXGOrXmSuaW+5d33HgYfRiIzTmZ3do6XgsLLjvL7lxsfjz87e1NPY19bR2dfL2dbH2NDF0snAzMO+xbm5tKiso5qdiouGeXp0eXZxdWxlf2xljnBojmFbnWBbwHNt2Hl18H59/Hx5/3Jx/WNj9lNU8EhI8ERC6j464Tw24UI80Toz00M63lVLwj4yuDYpvTkswj0uyD8v0EI010M11kAx0Tct0TMw6kxN+l9d8ldT30Q/2To02zgx4Tgx5jkz5zky5zky4jox2zow0TksyjgrxTkqsSkZuDMiyEAy00k+0kRAyzs6zDc7zzpA0jhC4khS7VVh8Fhk9V5n92Bp6lVb3EFF5UA+7D8780BD+0dK/0xU/1FZ/1Rd/1Zg4TM82i813TA06Dg79T5C+Ds/9zQ48zA07TQy7zk28Tk37jUz6zIw6jIw5zQw4TQu4zw04D003zw13js04Tgz5Dcz6DQz6DQz6Tk55zk46Dg46zk56zk36Tc14jUv3jMs3Dgu3Tkt3Tkt3zcq5DMp6DEp7zAo8jEs8TMz8DQz8zIz8zEx8zEv8jIv7DMu5zYu4Dkx2TwzzDcxwTAt0UBD/251/Wt1+WJx8FJp9Uhm/ztj/zVh/zZi/D9l5E5py11qi0dGakY6Xk09XldEWVI/Uko3T0Y1SUQwREouR1UyU2M+XnNIZ39NaodPaopLZ4xHZ4xGZo5HZo9JaJFLaZJOa5RSbZNWbZRVcZVVcJVSa5JPZ45LY4xIYIlFX4hGX4ZHXoJFW35EWXdBVnI/VW9AWXBCXXJHXnVHW3NDWXRBWHNATkIyUUU1VUk5V0s7WEw8Wk4+XFBAXlJCYVVFYlZGYlZGYVVFYFREYVVFZlpKaV5abmd3dXCOfHiZe3mgd3imdnetcHWvam+vY2isYGevYGawZW22cXjAfoXNiZDYj5fYmaDWoajWqrHbtLnfur/fwMHdw8Pbx8bYxsPUxcHQwrrJvLPEu7DBtai8ppivlouciIWMcXFxdXFwcGZld2hlhm5qhF9ZlWRfm1pUuWZg2XNv8Hp2/3t5/3Z1/2ho/FpY/lJO9UhC5j046EU+2Tw120c96lxSxTswxDwwvTcrvzcpxz4u0UM11EIz1EEx2EI00jg22D4+3UND3EJA1j031Tgx2Dcv3jcv5Toz5jkz5Toz4jsz2z411kI20UU4zEc2ri0YvDslzUo40Uw9xj01uzArwDAwyjk+10FK4kxX61Vg8Fpl8F1l7Flh30xU1D5AzzQv2Dcv4Ds56kBA8kNI9URK8UJJ7j9G4jU73zI24zM27zg89jg6+DE0+y8y/DE07zIw8Dk18Tg17DAu6Cwq5zAs5jMv4TQu5D014T414D004Dwz4zo15jk16jY17DY17DU37DU37TU37jY47jY26zU05DIu3jEr3jcu3Tkt3Tkt3zcq4TMo5jEm7TEo8TEs8DQz7jUz8TMz8jIx8zEv8jIv7DMu5zYu4jsz0jQr0jo1xjIw6FZZ/3B4+WNu8lpp50lg80Vm/zhi/zBe/zVi/0Jo3ExlsVBZazYwXkc3WEs6VU47W08/Vkk5TUAwSkMwQEYsQU8uTFw3WGpAYnhHZoFKaIhJZotGZYpEY4tCZI5GZY5IZ5BMaJFPapBTa5JTbpJSbZFRaI9OZYxLYolIYYhHYIdIYIdIYYVIX4JIX31JXXlIXXdIYHdLY3hPY3pOXXVDW3ZBW3ZBSkMzTUY2Ukk6VEs8V0s9WU0/XE8/XlFBZFdGZVhHZFhIYlZGX1VJYlhOZ15VbGNmd3KJenabenWedHOfc3OldHWtbHCvYmepXGCpYWWvZmy4bnTAeHvIg4bTj5Pdl5zem6HVoKfTqa3arrPdsbTdsrTbtLTatrTbtbHWs63RrqfJq6HEqp7CpZm9mYuviH6ZfHiGZGJnaWVmZFpbaltYe2NfeVZQkmNdik5GolVNvWBZ1mtl8Xdy/397/3p3/25q/mFc91RP6UdE7k9L3UI93kdA6ldPuiwivjEnvjQnyD8v0UU2yz4twTIiyjcn20U33kU/0zk3zDMuzjYx1Ds11z013Tw04T005Ds05Dky3jUu1zQrzzUpyjgrxTwswj8t1VQ/yEcyvTwpvzsuwz0yxDs1wjc0wjM13EtQ3k1S4VBV5VRZ6Fld5VZY3E1R00NCyTUr0Tcr2Tgw3TUy4jI05TI25jE45y857DQ+7DM78zU/+zlC/TQ++is1/ygz/zA6+C0z+TU5+TU58C4v6yor6jEv6DQz4jUx4zw24D004D004T005Ds25zo27Dg37zc37DQ26zM17DI17TM07TU16jQx4zEt2zAo3jgs3Tor3Tor3jgo4DQm4zMk6TMm7DQs7jUy7jUz8DQy8DMv8jIv8DMt7DMu5zYu5D00zS8m1z45zDM1+WJn/29591tp8E5j6kNd+UVo/zpl/zBd/zZh9kZqyUpdk0JIUy0kV0o5U0w6T0g2W08/VUk5Rj8vSEYxPkInQEooSVUxU2Q6X3JFZX1LZ4RKZYhIY4hDYYlCY4tEY41FZY5KZ45NaI9QaZBRbJBQa5BNZo1KY4pJYYhHYoZGYoZIY4dKX4BHXn9IX31JYHxLYXtLZHtNZnxOZn5OXXhDXXpAXntDREI2RkQ4S0c8UEc+Ukg+WEo/XU0+YFBAYFE+YVI/YFNCX1ZHY1pTZ2Jfb2puc29+d3GTenSgfnioeXepcHCmZ2ejYGGiXF+kYGKtZmi1b3DAeXrMhILWjorflpLnnJnmoJ7doaHXo6PZpKTapqPYpqHXpaHUpp/TpZ7RpJzNoprJopnIn5bDmY27joKwg3yecm59aWdsZF5gZ1tba1lVcldQfVdOjFdPlVJJqVtRtVhQwVpT2Gtk7Hly+YJ8/4uG+XVx/3Vz7V9d4FFN2UVD71pUzDcxxTIqxTcrwzcowDcnwzcmxjkoyjsr0T0v1T8x0jgu1jwy2EA11DwxzTUozjQo2Dov40E24Dkw4Tkw3jcu1zcrzzcpyToqxj8sxEEvwj0uxkA0y0U6zUc8zEM7xTw0vDMttismxzw50EVC2lBN4FZT41lW4VhS2E5L0EM6zDsq0zoo3Dgs4jUu6C4v7Coy8Cgz9Cc4+i0++yxA+yo//Sk//yg//yY//yU9/yU9/yM6/yc6/ys8/iw59Cw27S416DQ15zs53Tg03Toz3js04Ds14zo15jk16Tcz6zU06zM17DQ26zU06TU05zUz4jUv3TUs2zUp3Dgs2zkq3Dko3jkm3zgm4jcl4zYl5jQm7DUv7TQx8DUw8TQu8TQu7TUr6zYt5Tcs4Dkw2Dcv1To22z9C/213/2Jz+1Nq9Ulj/0tq9jZb/zZf/zxn+D5j505qr0lWXiQjRS0hPzonSEU0UE08UEk5RUIxPkIxP0cvQkgmRUslS1MuU104W2tEYXZLZH5OZINKY4ZGYIhCYYlAY4tCZY1Gao9KbJBQbpJSbJFMao9JZ4xHZotIZopKZolJY4VIYYNHZYRLZIFJYn9JZH9KZ39LZ4BJZX5HYX1DXHw9XH89X4JCPT80QEI3RkM8SkU/UEU/VEc+W0s+Xk4+YVA+YFE8XlNBXlZJY1tYaGNpbmx5c2+GdW+VdnCedHCicG2iZ2afYWGfXV6hXV2lZWSwa2q6dXPGfXvPhoLZjojglI7mmJPlm5bZnJjVnZnWnprXnpjWnZfVnpXUnZXRnpbRnJTNnJPKm5LHmpDEk4m7iH+ugniddGt8bWRpZl1eZltZaVpTb1dNe1VKilZLmlZLsV1Tu1pTwVhS02Zh4HFq43Zv7X53/YeF/4eF93V17mdk41VT61pVxzIswi8lxTcpwzcmwTgmwTgmxDgnyDsqzzst0z0v1Tks1Tks0zos0jos0Tkr0Tkr1Dgr2Dgs3zsx4Dkw3Dgu1jgszzkqyDkowTomvjkmvjYqwTgwxj01yUA4ykE5yD83xTw0wzoyvzQtxz420klB2E9H2lFJ105GzEM7wzcqyzgm0zgk3Tcp5TQs7S8v9Csz+Sk3/ik7/ytC/ypB/ylB/ydC/yNA/yE8/x49/x47/x86/yA7/yU7/yk79y058DE56jc65Ts73Dk03Do13js04Ds14zo15jk16Tcz6zU07DQ27DQ27DY16DY05Dcx3zYv3DUs2TUp2zkq2zkq3Dko3Dkm3jkm3zgl4Tgl4zYm5zUr6jMt6zQs6zQs6zUq6jUq5Dcp4jgr4Dwy1TMu0zU081RZ/2Vz/1tw9khj/0lo/0Fk/ztg/jRc+jxi8k1tzUxiiTg/UyomQTUpNzopOzwsQkAxRkAwQD8tPUIuP0gtPUMdS1AnXGI8ZnBLaHZSZntSZn1RZYFOYYNGYYZBYYlAY4xAZ4xGao9Ka5BNbZJPbZJMapBHaI1IZ4xHZ4pKZ4pKZoVKZYRJZoNLZIFJZH9IZH9IZ4BHZ4BHZn9FYn5BXoE/X4Q/YodCNzovOz0yQEA4RUI7S0I9T0U8Vkg9WUw8Xk4+XVA/XFNEXldNY11daWZtb217c3GJc2+UcWuZamaYY2CVXFuUWlqYXF2gXF+maGq1bm+/d3jKgX/Sh4PYi4fckIrgko3dk5DTk5HQk5HQk5HQlI/Rk47Qk4zPkovOlYzNk4vHlIvElIvAk4u+jISzg3qlgHKVfGV3dV5maVtbZVxXZFtSZ1lMclZIhFRIo1pRvWBZyVxZ0FpY22Ni4Wtp329r43Zx+4qG/4qG/4WD/315925o7mFYxTUswDImxTkqwTonwDkmwDklwjknxjopzDor0Dos1jot1DYqzjUn0Dgq1D4v1D4vzzcpyy8i2jou2jgt2Tcs1jgs0DoryTopwjkmvjckvjYqwDYswjguxTsxxz0zykA2y0E3zEI4xzoxy0E3z0U70EY80kg+0Uc9ykA2xTcrzDYl1jYm3zcs6DUw8TAz9i03+ys5/yo8/Cc9/Cc9+yU9+SM7+yE6+h43/Bw3/hs2/x44/x82/yQ4/So79zI88TY96zg75Do63Dk03Do13js24Ds35Tk15zg16Tc16zU07TM27jQ37TU16jY15jcy4TYv3DUs2TUp2jgp2Tkp2jkn2zgl3Tgl3jck4Dck4TYl4TUp4jQp4zUq4zYo5Dcp4Tco3zcq2zcr3Twy0DEr2Dg4/2ty/11u/lBp8Txb/0hs/zdd/z5l+TVb7j5i5lZxqj9RYSMoTC8rOzcrMTgoMzcmOjspQj0qQTwoQD4pQkImP0YdWGE0c35UgIxkd4dgaYBUYnxNYX9JYIJFYIVAYYlAZI1BaI1Hao9Ka5BNbJFObpNNa5FIaY5JZ4xHaItLaItLaIdMZ4ZLZoNLZYJKY4BIZIFJZoJIZoJIZYFGYoBCY4ZEZYpFaI1IMjUqNjkuOzw0QT43R0A6S0I9U0Y+Vko+WEw+WU0/WVFEXldPY15iaWdyb26Acm+Mcm2VameUYV+QV1eLVFWOV1iYXF+iYWOtbG67cnPDe3zOgoPViIbZi4fbjIjcjYrXkI3Sj43Oj4zPjovOj4nPjojQjobPjYXOj4XKjoXGj4XBkIe8j4e2iYKsgHidf2+MgF9wfFlgbFhZZFtUXl9RX1xJaldGfVNFnlVMvlxZ0Vpc2Vhc5GNn52tr4XBs5Xhz7Hx47Xp1/oN+/4aB/4F79WthyTwyxDgpwjsowDsovzsmvjolwTonxTkoyDkpzjgq2Tsv1DYqzjUnzzkq0T4u0T4uyzgoxy8h0jYp0zUp0zUp0zcq0TkrzTwryD0qxDspxDotxDovxjkwxjkvxzoxyDsxyTwzyz0z1EU900U70EE5yz0zzD01z0E3z0A4zjsxzzYo2TUp4zYv6zMx8i819ys2+io6/Ck8+SY59yY7+Cc8+Cc8+yY8/SU6/yQ6/yM6/yM4/iM3+yY4+Sw79zU+8jk/6Dg64Dg33Dk03Do13js24Ds35Tk15zg16Tc16zU07jQ37zU47jY26jY15jcy4TYv3DUs1zUq2Tkr2Tkp2Tkp2jkn2zgn3Tgl3jcl3jcl2zUl3DYo3Tcn3Dko3Dko2zoo2Tkp1zor1zox0TQv7ElM/295/1Zq+UVg+Dxf/0Fn/zNc/zhi+D5j6E1sxU9lgDA9Sh0gQzEtMTEnLzcoNTwsPkEuQkArQjwkRT4kSUYlVVwwcH5Nj59yl6h8g5htaoRXX3tKXX5FX4NDYYZBY4tCZo9Da5BKbZJNbZJPbZJPb5RObJFLaY5JaI1IaYxMaYxMaolOaYhNZ4RMZYJKZIFJZYJIZ4NJaIRJZ4NIZIJEZ4pIaY5JbJFMLjQoMzYrODkxPDs2Qj05SEA9TUQ9UUc9U0k9U0s+VU5EWlVRYV5laWd1bWuBbGuKa2mRYmCPWFaIUFCGUVGNWFmaYGOqZmq0b3LBdXjJfH/Qg4TWhofZiYjYionZi4rWjIvPi4rMionNiYfQiYXRiITRioPRiYLQjITPi4TIjYXBjYa6jYawh4GlfneWf22FhFlqgFNablZUY1xSWmFPWl9IZVpEeFVCk01FuFRS0FNX21JZ5V5k6GVq42ts5nVx5HVu4m9o9352/4J7/4d+9GxgyT8ywTgowDsovzwovz0nwDwnwjsnxTonyDkpzTcp2Dov2Tgu0jgszzkrzDoryToqyDkpyTcozzkr0Tcr0jgs0TcrzzcqzDgqyzwsyz4tyjwwyT0wyjwyyTsvyDowxzktxTctxTUq0EA30EA1zT00yTkuyzgwzjsxzToyzDUs0C8l2TAp5DIw7DI19C84+S05+ys7/Cs+/C0//C9A/C9A/C9A/i9B/y8//y5A/y5A/yk5/Ck4+Cw49TA68TY97Tg94zc33DQz3Dg23Do33js24jo35Tk35zc36jY17DQ08TQ48TQ48DY37Tc25jc04TYv2jYs1zUq2Dgq1jko1jko2Dkm2Dkm2Tgm2jcm2Tgm1Tgl1Tom1jsn1T0o1D0o1D0q1D0s1Dwu0Tcv2zw5/15l/2Fx/1Bp9zxb/0Fp/zRf/zVh+zFZ9Ets21lxlT5OWiUtQyksOjIwLjEqMDgtOEEwPUIsPDwiQTweVUgoYFs1fIZUkKJuqr6NqL6PjqV3b4tbYX9LXn9GYIREY4hCZ41EbJJHb5ROcJVQb5NTb5NTb5RPbJFLaY5JZ4xHaYxMaYxMaYtPaIpOZ4ZLZYRJZINIZYRJaIZKaIZIZ4VHZYVGaY5LaZFLbJROKzElLjQqNDcwODk0Pjo3Qj06SEE7S0Q8Tkc9Tkc9UEtFV1NSX15mZmV1Z2d/Z2aGYmGJW1mKUlKGTk+HUlOTW16jZWmzbG++dXfKenzRf4HWg4XYhofZhofXiIfViYnTh4jLhofIhoXLhYPOhYDQhYDSh3/Sh4DQjYXSjIXLjYXBjIW4i4WrhH+de3aNfWt7hFZjgVBWblVRZF5QW2VNWWNKYl5Fc1hDj09FtFdS0FVa21Rb51xj6GFn5Wdq6HBv7Hly5nFo93x083Nq/nht5lxRxDsrvjUjwzwpwT0owT0owzwoxDsoyDspyzkqzzcq1zYs2Dct1DouzjosxzopxDgnxzsqyj0szz0u1kAy2UE01j4xzjgqyTUnyjgpyzwsyTosyDosyTsvyjwuyjovyDkryDUrxzUoyjYszzsv0j400z8z1j821T4zzjcuySwj0isl3C0q5zAy8DM59jE7+jA+/TBB/jFC+jFB9zFA9zFA9jA99y889y05+iw5+io3/DA8+S879DA68TQ77TY75jY53zU12jUz3Dg23Tk33zo24jo35Tk35zc36jY17DQ08jU58jU58DY37Tc25jc04Dcy2jYt1jYq1Tcr1Dgp1Dgp1Dkn1Tgn1Tgl1zcn1Dkl0Dkkzjwlzz0mzz8nzkAozkAq0D8u0zwx0TYx60hJ/2Zy/09k/0hm+zdb/0Ft/S9d/zdh8jRY5FFrvFVmbTE5RSgsRTY5NzMyNTQyNjkyNj0tNTojMzgYQ0MfamE6hYFUn653qcGHtc2Zr8eVkq59dpRiZYZRYIJGYIVCY4hCaY9Gb5VKcphPcpdScZVVcJRUb5RPbJFLaI1IZotGaItLaYxMaoxPaYtPZ4ZLZoVKZYRJZoVJaYdJaohKaYdJZ4dGao9Ka5NNbpZQKDAjKzEnMTQtNTYxNzY0PDg3QDw5Qz44SUU8SEU8S0hDUlBRXFplY2J0YmJ8YGCCX16IWliKVFSKVFSQXF2gZ2mzcHPEdnjNe3/YfoLbg4TehIbdhIXYg4TWhYTUhoXRg4bLgoXIg4PLgoHNg4DRhYDUiIDViIDTjYXSi4TIi4O+i4OyiYKkgXyTd3CAd2ZwflVbfFBRblVOZl9PXmZOWmRJYWFHcV1FiVRGrV1UyFpb1FZa4lth5l1k6WFl7mxs9Xpz7XJq93hv3llQ5VtQ0kQ4wzUnxzopxTkoxDsoxTwpyD0oyjsqzjsr0Tks1DYr0zAn1TQq0jgszTssxzsqwjsowDsowzwpyDsq1UM04Us93kg60z0vyzUnyjYozTssyDkpyDkpyDkryDkpyjgryzkqzDgsyzcpzTYr0jwu1z802EAz20E320E11zox0jEp3DAu5TE07zU69TY++TQ++jI/+jBA+TBA8i487y887S857TA37y017ywy8isy8isy9jM78zQ78jU77TY65TU34TU13jY13Dc13Dg23Tk33zo44zk55jg36Tc36jY37DQ29DU69DU68Tc67jc55zg14Dcy2jYt1DYr0zcr0Tgq0Dgq0Dko0Dko0Dkm0Tgo0DkmyzkiyDoiyD0mxz8nyEAoyEAqzD0tzzsx1zk2/FVc/15x/0dj/z9h/zti/zdn/jNi+zhg7UZkxU5hiUBJVDE1QTU1QDo8OjQ2PzU2PjYzODkrNjwiOUMeU1ougoFRoqdxscWKr8uOsMuUpsONkq59e5llaIlSX4FFXoNAY4lAaY9Eb5VKc5lQc5hTcZVVb5NTb5JObJBKaItHZolFZ4pKaYxMaYtOaYtOZohLZIZJZIZJZYdKaYlKaopJaYlIZolFapJMbJZOb5lRJi4hKS8lLTIrMTMuMzMzNzY0Ojk3PTw3R0Q9REQ8SEdDUFBSWlpkX2FwYGB6XFx+YF+JXVuNWViRXV2bZ2etcnTBenzRf4DcgYThgoXkhYbjhIXhg4PbgYLVg4LSg4LOhIfMg4bJhITMg4LOhYLTh4LWioLXjIPUjYXQjIPEi4K3ioKrhoCcf3iIc251cWJld1hWdFNMalZLZ2BOYmZPX2VJY2FIcF5Ge1JAnlxOt1pTxlRT11Za4ldc6llg8mNl93Fu8G1l93Fo0UQ71EE3xTElyDQm1EMyxzgnxzooyTsnzTwp0Tss0zos2Dct2TYtzywjzzEmzjYpyzwsx0Atwj8rvjsnvDckwDQj0UIy409B5U9B2EI0yzcpyzcp0D4vyjsryToqxzgoxjcnyDYnyjYozjgq0Dgr0zsu1Tsv1Tkt0jYq1Tcs2jwx3Twy3Dcx6Dg48Tg9+DtC+zlC+jRB9jA98iw77yw67S876jE56jI66zQ47TQ58TQ49DM28zU38DM37zY77Tk86TY54jQ13jQ03zc24Ds53Tg23jk34Tk44zk55jg36Tc36jY37DQ29DU69DU68Tc67Dg55jk13zgy2Dcv0zcr0DgrzTkrzTkrzDsqzToqzToozToqzDsoxTkiwzsjwz0kwj4nwz8oxj8syjwu0Dky3zw//1xm/1Fo/0lm/zld/z1o+S5d/Txo6Ttc5VxwpkxWXi0wRzg1QkM+PDg5PzQ4RjM3QzQxPTopPkQoR1YtYnM/kJthrb1/scuMq8mLpsOLnbqEjqx6e5llZodQWnxAXoE/YYc+aY9Eb5VKcphPcpdScJRUbpJSb5JObJBKZ4pGZYhEZolJaItLaYtOaYtOZohLZYdKZIZJZYhIZ4pIaItHaopHZ4tFa5NMbZdPcJpSKS8jKS8lKC0mKy0oLy8vMzMxNzc1OTo0PT01P0A4REVAS0tLUVFZVlhlW1tzXl19WViCW1mLXl2WZWWjbm62d3jIf4HYhIXijIzujIzwiorshofkgoLcgIDWgoDTg4LOgoLIg4THg4PLhITOhoPQiIPTi4TSjITPioDFioC8iYCvh32fgHiNd296a2VnZl1YbVtRbVtNaVxMZl5LZF9JZWFIaGBJb19Gb1A7hVVBpl5QwGJa0VlY3VFU7lNb+Fxg+Wdn5llS1EQ8zjcw0Tcv1zox1jww1DstzzkqzToo0Dop0Top1Dgr2Dgs3DUs3DUt0C8lzTMpzDgsyj4vxUAvwkEuvj0qvToowjkpvjAi6VdK4ExAwy8j0T0xzjwvxzgoyjsryTopyDkoxzgnyDcmyTYmyzUmzDQm0Dcp1zsu3D4y3Dww2Tcs2jgt4j407EM89UJF8jk/8TM99jQ/9jJA8S077S067TI97DdA5jU75DU65Tc46zg78Dk78jg57zc38js97jw86jo65jg34Tc33zc23Dc13Dc13jk34Tk44zk55jo66Tk77Dk87Tk87zg89Dc78zY68Dg67Tk65zs54Ds11zkwzzcsyjgryDkrxzkrxjopxzopyDspyDsqxzwpwTkjxD0nvjojtjQevDklyUQzzz82yjAu/15l/1Zn/0li/zxc+DFY9zBZ+zZj9UJp51lvrEZRbzMzTjMsQj82PkM8QTg5QC0xTC8zSzIuQjkoREkpWm0/fppfnrh3qMWCq8mLn76CmLaAlLJ+gqBuZoRSWXdDWXs/XoE/Y4dBaY9GbpRJbZVMbJROa5JRbJBQao1JZopEY4ZCY4ZCZolJaItLZ4lMZohLaIxOaIxOZ4tLZotIZYpHZ4xHa49JbZJMcZtTcp1VdJ9XKjAkKS8jKS4nLC4pLy8tMjIwNTYxNzgyOzw0Pj83Q0Q+SUlHT1BUU1VhWFlrW1t1XFp/Xl2JZGKUa2qkdXS6f37Oh4ffi4zpjY3vjIzwiYnrhYTigIDYgH7SgH/PgYHLhYbJhofIh4jLiYjOi4jPjIbOjYbMjoXIioC8iX+xhnyhgniRe3OAdGtubGJgZV1SZV9PZV5MZl5LZl5LaF1Jal5Ia19Jb19Gd19Hf1tDkllGrVpMx1ZQ3lJT9VFY/1hf8FVT40tG2T451TYw2TYv3Dkw2zku1jkq0zco0Tgo0jkp1Dgp1zcr3DUs3zQs3TQtzjAnyTUpyDkrxz4uxEEvwUAtvzwqvjkoxDgpyzwu5FJF3Eg8yDQozDotyDoswjQmyj0syzwryjsqyjsqyzopzDkpzjgp0Dcp0zcq1jgs2Tcs2DQq1TEn2DEo3jcu5zw1+ERH8Tg+7S857y868DA97i476zE86zY/5TY93DM22DI03zo47kRE+UlJ+ERD8z8+6To35zk45Tk34jk24Tc34Dg34Tk44Tk44Dg34jg45Tk55zk66Tk77Dk87Tk87zg88zY68jU57jY46jg45Ds43Do10zkvyzcrxjgqwzoqwjoqwDsqwTwrwTwpwTwrwTwpvTkkwkAquzolszUfujsowTsvyjk02Dw//11p/1Bk/0Fb+ThX9jZb9Ttg9D5k40llqz9Mgz8+YDszRzsvOj4wOD4yRjw6Uj49TjAuUzgvVks3Y2lFeI9bjbBwncJ9ocaBmrl9mrmAmraDjal4co5eWXVFVHA9XHtCX39AYoZAaY1FbZNIbJRLa5NNapFQaZBPZ4xHZYlDY4ZCZIdFZ4pKaYxMaYtOaIpNaY1PaY1NaY5LaI1IZ4xHaI1HbJJJbZVMcJtTcZxUdJ9XLTEjLTEjLC8mLC4pLy8tMTEvMzQvNTYuOjwxPD4xQEI3RkdBS01MUVJXVlZiWFdpXFl0Xl1/ZmSMcG6geni3hYPOjYvfkJDqkI7vjoztionnh4TfgX/Tf3zLf33IgH/FhoXHiIjGiorKjIrJjonJjYfFjIS/i4K3iYCthnyhgHaPe3CAdWpwb2VjaV9WY11NX2FMX2FLY15KZ1xKbFtJblxIb11Jcl5Gd2FJeFg/h1M9o1ZEx1hP41VT+E9U/k1T4j493jw33Tg03jcx4TYv4jcv3Tcr2jco1Dcm0zgm1Dkn1Tgn2DYp3TUq4DMs3TQtyzMoxDYqwjgrwTwtwj4vwj4vwTwtwDgqwzUp3Ek/2kY81UE3zzwyxDYqxDotvjYmxjopxzopyDsqyToqyzkqyzcpzDYozjQo1Tkt1Tcs1zQr1zMq2jMr3zYv5Toz6Tw48Dw97TQ56zA37TI57jM87TQ86zdA6j1D3Tc74UFB7E5N+FlV/VlX+lFO70I+5Tg04jYy4Dcy4Dc04Dc04Tg14jk25Do65Do64Tc35Dg45jg66Tk86zg87Dk96zg87Dg77zU47zU47DU35zc34jo32To0zzgvxzcswjgrvzorvTsruzwruzwruzwpuzwruzwpuDkmvUAqszkksTYktjsrtTAnwzQw7FBU/1tp/0pg9TpV8DdW8UBd70hm50hkzU5hgjg5ZT82UkAyREEwOT0sNTcpPzcsTDowRi4kUj0sZ11CgYhfk6p0l7t7lsF6lr97lLN6nLiHmrSFgJptXXZMSGI1Tmg4XHdCX30/Y4NAaIxEbJJHa5NKaZFKZ5BMZ5BOZIlEZIdDY4ZEZYhGaItLa45Oa49Pa49Pa49Pa49PaZBNaJBKZ49IaZFIbJRLb5lNdaFWdKJXdqRZMjQmMDQmMTIqMDErMTItMjMuMzQuNDYrOTstOz4tP0EzREY5SktFTlBPUlFXVFReWFZkXFpvZGF+bmyUeneshILDjInWkY/jlJHqk5DrjoviiYXZgn/Mf3zDf3y/gH6/hILBhoXBiYjCjYrDjIe/i4S4h3+uhX2khXudgHaOeW5+cmdtbWFha15WaVtQY1xKXmFMXWFKY15KaFtKbVpLcVpKdFpJdltGc1dBeFI7ilE9q1pHzVtQ41RQ8EZJ8T5B2zIv3DUv4TUx4zYw4zUu4TUr4DYp2zgp1jYm0zgm0jkn1Dkn2DYp3DYq4DMs2jYtyTcqwDgqvDcovTkqvz0twj4vwzstxDgrxjMp6VVL1D00zDgu0UE2vjQnwDwtwDwtwDgoxDgnxTkoxzopyDkpyzcpzDYozTMn0jYq1DMp1TIp3DUt4zoz6T437D857D066DQ17DU57zY87jU76jI65jM55Dc94jxA81VW/GJi/21q/2lk81ZR5EE83zYz3jUw3zYx3jcx3jYz3zc04Tg14jk25Tk55jo65Tc45jg56Dg76Tk86zg86zg86zg87Dc87zY77jY46jY35Tk33zw31jw0zDkvxTksvjkqujsqtzwqtTwptTwrtD0ptDwrszwoszont0AsrTgmrTgnszstqysiwzU0/WBp/1Rk+kdd8DxV6z1Y6Ehg4U9k0k9ftFNadkdBWEg5S0QyRkUxQkUwPT8qOjgjOzMePzMdUEcqbmtIipNml6t2k7N0jrdzkbp4nrqHobiMkKZ/bIJbS186QlcwTWI3WXE/YHxBZINAaYpDbJBGaZFIZ5FJZZBLZY5KYodCY4ZCZIdFZ4pIao1NbI9PbZFRbpJSbJBQapFOapJMaZFKaZFIaZNHbZdLcJxPdqRZd6VaeadcNzgoNjgqNzctNTYwNTYxNjcyNjcvNjgrOz4tPUAtQEMuREc0SUs+TU5GUVBOUlJSVlVTWVhdYV9sa2mBdXObgH2yiIbHjIrTlZLhlJHikI3ci4fThIHEgX26f3y1f3yzgX63hIG6h4S5iYW3ioSyhn+ogXqbgHiQgHSIem56cmZqbV9ealtUaVtQalpLZlpKYl9MYl9MZV5MaVxLbltMcltLd1xLfFtIf1ZCh1M+m1JBtlZGz1NJ2kdA4jg45TMz3TEt3zMv4jUx4zQv4TMs3zMp3jYp3Dko0zgk0Dkk0Dsn0Ton1Tgp2Tcq3TUs2DctxjoruzkptTYltzgnvTsrwz4vxzsuxzcs0Dkw9VxU1j01yTUrz0E1uTQltzoovD8twDsqwzoqxjoryDosyjstzDotzzgt0Tct0DMq0jEp1jEr3jcx5Tw36j466Tw45jc06Tc37zs88Dw/6zY75TI45DU66EJG7U1P/3h3/3Fu8WBb3UpD0Tgz0TIu3Dc15z884Dkz4Dkz4Dcy4Dcy4jY04zc15Tc25Tc25zc55zc56jc76zg86zg+6zg+6Dc96jc77zg87jc76jc65Do63z061j03yzsywzsvujgqtToqszsqrzwprzwqrDworDsprDspqzwprT4rpzkopzkqqjgtrC8py0BD/2hy9E1e80hb7kVa5Uhb2U9eyVRdt1RXnFhVZE0/UE06TEc0S0YyRkQtQEMoPkUkP0kkS1YuXGc8eIFUjJhokaRtj6huj7Jyl7l9n7aIkqeAdYZkUmNDP1AwQlMxT2E5V20+YntCZYJCaYpDa49FaZFIZpBIYpBIY45HYodCZoZDZ4pIaYxKa45ObZBQbpJSb5NTa5JPa5JPa5NNaZNLaZNJa5VJb5lNcp5RdqRZdqZad6dbPz0uPT4wPT0zPT01PTw3PD03Oz0yOz0vP0IvQEQtQ0cuRkozS0w6Tk9BUVFJUlJIWVdKWlpOYF9dZ2VycW6Je3mhg4C3h4XEj4zRj4zTjYrPioXHg3+6fnmvenemeXale3asfHmugHyug32pg32jf3iXfHSLenKBdmtzcmZmbmBdalxTa1tObFpMbFtLa1tLaV1NZ15NaV1Nal1Nb15Oc15Nel1NgltKk2BPm1ZHp05AuEo9xUA3zzYw2DEr3jEr4TUx4jcw4jUv4jQt4DIp3jQn3DYm2jso0TkkzTskzTwnzjsn0Top1jkq2Tcs0zktwj0stToosDUjszYkuzkpxDwuyTsvyzct2T83+FtU40lBzjowzEAzuDYmrDMgtTwpvToovzcnwDcnwzcoxTcpyTcqzjcs0Tct2Twz3Dsz3zo05Tw36j466z465zg14zQx6Dk26zs77Do66Dg67D5A+E9S/2Jl/3Bw+Whl41VRyj02wDEryTQw1js33z074Ds54js14js14jk04Tgz4zc15DY15TU15jY26TY56jc66jc76zg86zg+6zg+6Dc96jc97zg97Dg76Dg64zs63T460z43yj0zwDwvtjgpsjoprjspqzwpqTwoqDsnpjsnpToopTwpoDkooDspoDkqojYqtT4421RY+2Vw7ktc70ld6Upe201byVFatFZWoFpSimBSUEk3SU46Tkk1SEArOzUbNzgYPk8lTGY2bIpUd5RchJtliZpkjZtmkaJslax0mLB8g5Vtbn1cUWBDPEowOUYsQVAxT187V2o9ZHtFZoNDa4pEbJBGaZFIZZFGYY9GY45HY4hDaYlGao1LbI9NbI9PbI9PbZFRbpJSbZRRbZVPbZZQbJZMbJZMbphMcp5Pc6JSe6xde6tfeqpeRUIxREIzREI2Q0M7Q0M7Q0M7QkI2QkMzREYwRUgtR0otSk0yT045UlE/VFJFVVNEXFpDXFxEXF1PYWFhaWh4cnGQe3qmgX61hoK/iIPDiITBhIG6f3uueXOhdG+XcWyVcW2fcm6hdnCed3Kad3KSdG+Fc2t6cmlubWJgbF9XalxRa1tMbVxMb1xNcF1McVtNcVtOb1tQbV1ObF9PbWBPc2BPe2BPhlpNn19TpVFHrkE6ujs0xjYuzjEq1jIp3TUs4jcw4TYv4TQu4TQt4DQq3TUo2Tgm1Dklzzoiyj0iyj4lyj4nzTwp0jsq1Tkszzstv0AtsTworDUhrjMhujgoxDwuyjovzjUt2Dkz8E5J8VRN2UI5zEI1vj8upjEdtD0pvz0twTkrwTcqwzcqxTcryTkuzzsx1Tw04kU+40E85D875z476T076Ts66Dg45zg16Dk25jk15jY26Ts89EpL/1xd/2Rl+GJhzD05wTgyvTQuxDky1UE93kVA3z072TQy4js14jsz4jk04jk05Dg05Tg05zc36jg46jY56zc67Dc86zg86zg+6Dc96Dc/6TY86zY76jc65jg54Ds52z450T42xjwyvjwvszgprjspqjsopjsnpDsoozonoTonnzomoT4rljclnD0rmjkpmjInw1BL7Wtt7lxm7FBe6Upc30hZzkxWuVJTpFtSkmNRgGpVSk04REw3SkIvSDkkQjcbRkgjVXA9Z5NWfrJwgrNxg6VofZJZg41ZjpZjipZkfIxfWGZDSFU5OkYuN0MrOkQsPUowSlg3V2g+ZXxGaYNEbItFbZFHaZNHZJJHYZFHYY9HZotGbIxJbZBObpFPbI9Pa45Oa49PbZFRcJdUcZlTcJlTcJpQb5tQcZ1QdqJTd6ZWfK1eeq1eeaxdSUMzSkQ2SUU5SkY7SUY9SUc7SEY5SEc1SUgzSkoyTEwyTk40UlA7VFE+WFJEWVRBXVk+W1o+XFlIX1xVZGFobmt+eHOTfXiggXung32rhX+tg3ymfXeddm+Qb2mFbGaCaWWIamaLbWiIbWmCbWh8bGZya2JnamBeZ11UaFxOaFtLa1xJb15McV9LcV5NcV5NcF1PcF1PcF1Pc11Pd11Ofl1Oh1xMklhMolZJpEY8qzkvujcvyjcv1Dcu2jYt3jYt3zYv4DUu3zQs4DUt3zcs3jgq2DYn0TYkzzokzDwkyz0nyz0nzjsp0Tsq0zoszjwtvkEvrzwnqTQirDMgtjknwT0uyTsvzDguzTMr4EE7+FtU4ElA0EQ3ykY3qzIfuT4sykY3zEI1ykA1yz8yzkA01EE33EU840Y/4kA74j054zo34zc14zU05DY15jo45Tw55D854D043Do130A86kxJ6lFM0z87uCkjuC0mvzYuyT430UA71j452js44zs75z094jk24jk24jk25Dg25Tk15zo26Tk56jo66jg46jg46zg76zg76Tk86Dg75zY85zY86TY65jY44jg53jo41j04zT42wjwxuTstrjgqqjsqpjspojsooDsnnzwpnjsomjsnmD8tjDUimT0umDgqly8mzVxY93l831hf5lhk21FeyktUuUxPqVZSnmBVkWhWgG5WUFc4P0oqPDscQz0bVVErbHZEhKJmlMF+h7x2hrhzfJ5iboJNdn9SgodedX1WW2JAO0QpNDwlNT0oPUQyPEUyOUMrQ1AyVmY/Z3tIaYNGbYxIbZFHapNHZpJHYpBHY45HaI1KbI9Nb5JQb5JQbI9NaY5Lao9KapJMc5tVc51Vc51Tcp5Rcp5Rc6JSeaVWe6padqZadaVbc6NZUks7Uks7Uko9Uko9Uko9Uko9Uko9Uks7VU48Vk89V1A+WFE/WVJAW1REXFVFXFVFY1xJYltJYVlMYllSZV1ba2FpcWZ0dWp7em6EfHCIf3OLf3OJfHCEdWp7bWJyZl5rY2BrYF9nX1xjX1peXlpZXllVYVpSYlpPZVtPZ1tLaVxLa1xJbF1IbV1GbVxIal5IaWJPcWZUcVpKdU9Ci1dKnFxQpFpNrFpMpU0/pkU1pzwssTcowjgt0Tgw3DQx3TEt3zYv3jcu3jcu3jcu3jcu2zcr2Tcq1zcp1Tgp1Dgp0jkp0jkp0jkr0jkr1DgrzTssvTsrtj4trjkoqTEgqzIhuDorwDwvwzkuyTYszjUt1Doy20I63Us+1Eg5wj0stzIj3VBG2UtB1EU91UU82kc/3kdA4EM+4T074Dc05jg37Ts77Do65zc34zc14Dg13D032UY+z0I5xDowvDMptzEmujYqvzsvxEA0wzowyj0000A420A74j075zs77Dg77Tk85zc65Tg65Tg65Tk55Tk35Tk35Tk15Tk14TUx4TUx5DY15Tc25jg55zk65zk75zk76zs+5jk73zk73D061kE9zUI7wUE2tz8xqTkrozwroD0qmzwomTomljknlTgmkDkmkEEwizwthy8jkjAnvExK5G1v52xvzVZavUxOtU5PqlBPolVPm1hQl11SlWFUimpTV1ovOk0WN0YPVGEpfo5Qm7Bvobx5nbx5krVzfp1haIBOXG1DWWRCVF1CSFA5P0QwOj0sQEMyPUEyOz8xPEMzOkMwQU4yUmQ+XXNCZ4NIcI9Lb5NLbJJHapJJaZNLZ5BMbJBQbZFTb5NTbpNQbZJNa5NKbZZKbZhJcZxNcZ1Ocp9OcqFQdKNSdqdWeqlZe6leeaZjbZlaY49QV04/V04/V04/V04/V04/V04/V04/V04/WE9AWVBBWlFCW1JDXFNEXVRFXlVGX1ZHZFtKZFtMY1lNY1lPZltVal9dbmJkcGRocmVsdGdwdmlydmlyc2ZtbWBnZ1tfYlhZXltWWlpSWldQWFVMWFRJWFRIXFZIXldHY1pLY1pJZltJZ1xIaV1Hal5Ga19JaWFKY2JNbmdUdlxNgVNGm1dOq1ZPsFJKuFJGr0c6rEIyrD0ssTkpvjgsyzgw1TYy2TQw3TYu3Dgu3Dgu3Dgu3Dgu2jgt2Tcs1zcr1zcr1Tcr1Tcr1Tcr1Dgr1Dgr1Dgrzjosvjwutj4urjkopjEgpzIgsjopuT4uvjwuxjotyDUryzQr0jsy3EU64U9C31FD3U9D20Y/2EA70zs20jo11j032j043Dg23jQ06Dg66zc47jc56zc45zc35Tk34j0520I8ykE3wEA1uDossTYnrzUmsjgpuD0tv0AxxUE0zUA210A33z044zo36Tc37zU48Tc86TY85zY85zc65jg55jg35Tk15Tk14zo14jky4zoz4zo15Ds25Ds45Ds45jo65Tg65Do94zo93zw92T890EE7xUA3tz0yrTwupTsroD0qnD0rlzwpljsokjomkTgmjDkngDkngDgpiTUqnTw1v1FQ12Vl0V5huE5OrE5MpFNPnVhRmFxSl15TmF9UmF9WjGZRYF8vU2cqXnIzepBPma9upb58mbJwiKBiaoJIYnZDVGU7S1k4RlA3QEk2OT8xNTgtOjwvQUI0PT80Oj0yPkI0OkMwQE0zUmQ+XnRFaIRJcZBNcJRMbpJIbZNKa5NMapFObZFTbpJUb5NTb5RRbJRNa5RIbJdIbZhIcJ1KcJ1KcKBMc6JRdaZUeKlYeKlYeKhebZdYYotRWYJIXVRFXVRFXVRFXVRFXVRFXVRFXVRFXVRFXFNEXFNEXVRFXlVGX1ZHYFdIYVhJYVhHZV1KZV1KZFtKZVtPZVtRZltVaF1ZaV5cal5eal5ga19ha19faV5cZltZYldVX1ZRWlVPV1RLVVFIUk5DUU1CU09DV1FDWFJCXldHX1hGYVlGY1tGZ1xIaV5Ia2BMaWNNYmFNbmdVeV9QiFhOoltVsVZRsklFuEVAuUA4uD4ztzsvuDgrvDgrwzkuyTsv0Tov2Tgu2zct3Dgu2zku2jgt2jgt2Tcs1zcr1zcr1Tcr1Tcr1Dgr1Dgr1Dgr0jkrzTsswD4wtz8vrTooozIgozIgqjknsz4suj8vxD8wxDgrxTIoyDQq0Dww2EY53U5A4k5E2To22DQz1DIw1jQy2zk34T085jw96Ts87Tk87jU66zI36jM36DU45Tk54Tw62UA6vjgttTorsTYnrjQlrTUlsDgotTwruz0uyEQ30EM51kI43T444jk26DY27jY27zc56zY76jc76jc66Dg46Dg45zo25jo25js04zoz5Ds05Ds24zw24zs44jo54Tk53jg43Tk63Dw82kA+00I9yD85ujsyrTcrpTcooTssnTwrmTwrlDspkzookDkmjzglijkmejYjeTYliDksoEY9uVNPwFdUuFBPq0lGok1InFNMmlpRl15Tl2FXl2FXmF9Wi2VQc3JGeo1Wk6ZupLmAq8CHnrN7fJBbW288QFMlQVMrQlEwP0wyOkMwNjwuNjkwNTgvOTsuQEEzPT80Oj0yPUEzOkMwQE0zUWM9YHZHaYVKc5JPcpZOcJRKb5VMbZVObJNQcJRUcZVVb5ZTbpZQbJRNbJVJbJdIbplJcJ1McJ1McJ9OdaRTeKlYeapbdaZXcaBYX4lKVn9HT3hAYVhJYVhJYVhJYVhJYVhJYVhJYVhJYVhJX1ZHYFdIYFdIYVhJYllKY1pLZFtMZFtKZV1IZl5JZl5LZ15NZ15PZlxQZlxSZlxTaF1XaF1XaF1XaF1XZ11UZlxSZFpQY1tQXVlOWlZLVlJGUk5CUExAUE0+VE5AVU8/WFJCWVRBW1ZDXVhEYVpHZF1KZl9MZmFNZGNRbGVVdlxPiltRqWJcuFpYtkZEuTw6wzw5xjs2xDkywjgtvjgsvTsrvj8uxz8v0zkt2Tcs2jgt2Tkt2jgt2Tkt2Dgs1Tcr1Tcr1Dgr1Dgr1Dgr1Dgr1Dgr0jkrzTsswT8xtz8vrTooojMgnjMfojcjrD0ptUAuvD8tvzorwzcqxTUqyzcrzjouzjwv0zoy3jY24DI02zEy3TM04Dg45jw96j0/7Dw/7jc87DM46TA25jI15TU44Tc32jY1zjYxtzUorzcnrjYmrDcmrDcmrjkosjoptToqw0EzykI21EE33D844zs45jg36zc27jc57TY66zc66zc46jg26jg26Dk05zo05js04jky4Toy3zo04Ds33jo43Ts53Do42Tk51jw61kE90kM/ykE7vDwzrzYrpDYnnjconDsqmDsplDspkjsojzomjjkljDcjhzklgD0qdzYkgTUnmUU6qlBIrE1HqUxHplFMnVBKmFVMlFpPlF5SlWFWlmJXl2FXjWdUiYVfmal6rb2OpriIkKF0c4ZZTmA4L0EbLT4cNEMmOkYuPUYzO0EzOj0yOj00PD01OjouP0AyPD4zOTwxPEAyOUIvP0wyUWM9YXdIaoZLdJNQc5dPcpZMcZdOb5dQbpZQcpdUc5hVcJhSb5dQbZVMbZZKbplKcJtLcZ5Ncp5PdKNTeahYfKtdd6dbbZ1TZZJNW4RIU3xETnc/ZFtMZFtMZFtMZFtMZFtMZFtMZFtMZFtMY1pLY1pLZFtMZFtMZVxNZl1OZl1OZ15NZl5JZ19IaGBJaWFMaWFOaWBPaF9QaF9QamBUamBUaWBRaF9QaF9OaF9OaGBNaGFPZF5OYFpMW1VHVlBCUE0+Tks6Tks6Tks6UU49Uk8+VFFAVlNAWFdDW1pGXVxIXl1LYmBRZl5RbVdKhltSrWpkvmNgwU1NyEJD0Ds91Dg50zg0zDcwwTktuj0rtUItvEIrzjsr1zcp2Dgq1zor2Tkr1jkq1jkq1Dgp1Dgp1Dgp1Dgp0jkp0jkp0jkp0jkpzTsswT8xtj4wqzoooTYimjQemzcgoz0mr0Itszsqujsswjosxzktyzguzjow0T0z2js16Tk87DQ85jM54zI44jM44jU54jM44jE36TY86TQ55zQ65zc64zk82zc20DIxwC8qtDYqrTkqrTooqzooqzooqzoorDkmrzcmuDorwTsvzj4z2D834T455Ds46Dk27Dg37jY47jY27jY27Tc06jg06Doz5zoz5Dwz4Toy3zsy3zw13D032z062T481z071D49zkA8ykM9xUE8uj42rTctozUonjcomjoqljspkzwpkTsqjTooijkmiTgliDckgzglg0AtdTQiezMlk0c6pVJKoU5Gnk5HoVdOmVZNk1lNkFpOjl1Pj11SlGBVl2BZj2hXjYhomKR8namDgI5qXWtIRFM0MkAmJDIZLTomMDsqNT0uOT8zPD80PT42Ozw0OjowOTktP0AyOz0yODswOz8xOEEuPksxUGI8YnhJa4dMdZRRdJhQc5dNc5lQcZlScJhScppTcppTcppTcJhPbZdNbZdLcJtMc55PdKBRdqJVeqZZe6leeqhfcZ9WZJJKWodEXYZKV35HUnlCZVxNZVxNZVxNZVxNZVxNZVxNZVxNZVxNZVxNZl1OZl1OZl1OZ15PZ15PaF9QaF9OaGBLaGBJaWFMamJNamJPamJPamFQamFQamFQaWFOaGBNaGBLaGBLaGBJaWFKamJLZl9NY15LXlhIWFJCU009TUo5S0g3SUg2TEs5TEs5TE07Tk89UFE/UVRDU1ZFVFVFW1lMXlZJY1FFelhOoWhhtmVhxFZV11JT2UBD3zo+3Dg31TgzxzsuvD8tsUMqtUEoyjsq1Tgp1Tgp1Tkq1zor1Tkq1Tkq1Tkq1Dgp0jkp0jkp0jkp0jkp0jkp0jkpzTsswT8xtj4wqzwpozolmTYflTUdmzsjp0EqskIuuUAvvzsswzcqxTIoyzQr0jsy3z066jU67jM86zY96Tg+5zo+5Ds+4zo94jk83zU44Tc64jk+4T0+2z0+0Tk2wzIvtjAnrzkrqz0sqz0sqT4qqj0pqTwoqTonqzglrzYluTcpxTsw0D0z2Tw13zw35Ds46To37jg37zc17zc17jg16zo06Ts05zw05D004j414D833kE620I82UE+1UE/0kE+zUI/wUA6u0A4sz0zqjgtoTUomzUnmTkplTwqkTsqjTwpijwoiTsnhjknhDclgzYkgDcmfTopdDMhfjkql09Bo1lOnFJHlU9FmVdLlVlOkFtNjlpNjFtNjlxRk19UmWBZkWdZfndaeYNgcnxaVmFDO0UsLzslMDsqMDwuMz0yNT0yNz0zPD82QEE5P0E2PDwyNzcrODkrPj8xOjwxNzovOz8xN0AtPksxT2E7YnhJa4dMdZRRdZlRdJhOc5lQcppTcZlSc5tSc5xQcptPcJlNbphMcJpOc55PdqBUeaVYe6dcfKhdeqVdcZ9XZ5RPXYpFWIJCYYhPWYBJU3pDZ15PZ15PZ15PZ15PZ15PZ15PZ15PZ15PZ15PZ15PZ15PaF9QaF9QaF9QaWBRaWBPamFQamJPamJPamJPaWBPaWBPaWFOaWFOaWFOaGBLaGBLaGBJaGBJaGFHaGFHaGFHZ2BNZV5LYltJXFdEV1I/UE06TUo5SUg2SUc4R0g4R0o5R0s6SEw7SU0+Sk4/S00/UFBEWFJGW09DaVJEhFpOllZMsFNM1FpZ20lK4j9C4Tk52zc1zzsxw0AutEIqszwkyTop0zco1Dgp0zoq1Tkq0zoq0zoq0zoq0jkp0Top0Top0Top0Top0Top0TopzTsswT0wtT0vrD0sozwpmDgikDQblTkgoUEprUMttkEvvz0vwDYrwi8lxzAn0DYu3jo46DU57jY+7DtD6j9F5kFF4EJD3EBB2kBAzTEy0DY20zo80T07yTs5vzgytTQurTQpqjwtpT4rpj8spUAspT4rpT8ppzwoqTonqjclsjcnvDgrxTguzDcw1Dk03jw55j476zk37Dk17Dk16zo06Ts06Ds05T004j404EI33UM52kM81UI7z0E9yj88xz07vz45sTwzqTovojgrnDYomDcnlDgpkTopjTooizwriTwqhzwpgzongjkogDcmfzYlfTYkeDMjeDUlhkMzmFVFnVdLlFBDkFBElVpMk1lNkFpOkFxRkFxRkltUlVxVmVxXjmJVa2JFV2E+SlM0PUcsNj8qMz4tND4zNT82Nj02OUA5PUI7Q0Y9RUc8REU3QD4vOzkqNzgqPT4wOjwxNzovOj4wN0AtPUowTmA6YXdIa4dMdZRRdZlRdJhOdJpRcppTcZlScZtPcp1OcZxNcJtMb5pLcp1OdaFUeaVYf6tgfqlheqVecZxXZpFMX4lHXYdFXohJYolQWYBLU3pFaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaF9QaWBRaWBRaWBRbWRVbGNUamBUaWBRaF9QZ15PaF9OaGBNaWFOaWFMaWFMaWFMaWFKaGBJaGFHaGBJZ2FLZ2BNZV5LYltIXFdEVVI/UU49TUw6RUY2RUg3REg3REg3Q0o6Q0o6Q0k7RUk7SUs+U1FEU1BBWU09ZUs6dEQ2lkk/wllT2VFR4ERF4Do63Tg21jw0yj4vuj0ptTgiyTop0Dko0Top0jsq0jsq0jsq0jsq0jsq0Top0Top0Top0Top0Top0Top0TopzTsswTswtjourTwspz4rmTkjjzMckzcenz8nojkkrzwpwD4wxz0yzDgu0Dcv2Tw14z897D1C7j9E6kRI4kRF2EA/yjs3wDUwuzEuuS8svDUxvjo2uzw2szoyqjgupDgsojssoT0tnz4roD8soUAtoUAtoUErpD8rpj0qqTsqrToosjcouTUpvzUryTkw1j454EM+5Tw36Ds16Ds15zw05Tw15D004T413kA13EQ52EQ60kM7y0I6xD86vTw3uDg1sDkzojctmTgolTUnkzYnkTopjzwsizophTgmiD0qhTwrgzwqgDwpfjkpfTkmezYmezYmejIkgDgqjEc4llNDk1FDi0w9kFJFmV9TkVdMkllOlFtSll1Ul15Xl1xWl1pVjV9SYVg7RU0oNkAeOEEmPkcyPUY1Mz0yLTcuMTgxNz42Q0Y/R0o/SEk7QkMxPz4qOzomNzgoPT4wOTswNjkuOj4wNj8sPUowTmA6YXdIaoZLdZRRdJhQdJhOdJpRcppTcZlScZxNcZxMcZxMcJtLcJtMc51Rd6NWe6dcgq1lgKtkeKNeapVQXYdFWYNBXohIZY9QY4pTWoFMU3pFaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaV9TamBXamBXal9ZamBXamBWamBWamBUamFSamFSamFQamFQamJPamJPamJPamJNamJNZ19KZ19KZl5JZV9JYl1JWlhDU1A9TUw6SEk5RUg3QUU2QEQ1P0U3P0c4P0c6P0U5R0s9SUs9QkY1S0o2XFE7YUUwg0o5wGpd3Gdg41VT5EZF5UFA4EE91T41yT0wxj0txjQlyzUmzDYnzTcozTcozzkq0Tss0z0u0jwt0jwt0jwt0jwt0jwt0Tss0TsszjwtuzIotjcusTsvqDormjcilDUfljchnDkirEEtsj0sujYpwTQqzTYv1zw34kM/6khF6ERF6UZJ3UNFyTk4uzYxtDgwrjguqTQrqzkvqTkupTkvoDgtmzksljorkzwrkjwrlj0rmD0qmT4rmj8sm0AtnUAuoEEvo0AtojsqpTooqzcosDYptzcsvjgtxDszzDw02j024D024j844kE34kE53kI22kA210A12Eg90kU7x0E4uzsysjUvqjMtpjAsnzIrmTktkjsqkTkrjToqizopiDsrhzsrhTwrgToofjkpfDkofDkofDkpezgneTYmeDMkdy0gi0E2mFBEk01Bj01BklJGk1VKjlJHmFxSmFxSkVVNkFRMl1pVlVhTlFdUk2daXVQ1SVEqQkwpQkssPkgvN0ArMj0tND8xNDwxSFBDWl1SWFxNTU86REYuQUEnPT0lOjspPj8xOz0yOj0yPEAyND0qO0guUGI8Y3lKbIhNdZRRc5dPcpZMcphPcppTcppTcp1OcZ5Lcp9Ocp9Oc59QdqJVe6dcf6pigq1meKNeapNPYIlHXoZHYYlKZo5QaZFVZIlTW4BMVHlFaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRaV9Tal9Zal9dal9dal9bal9ZamBXamBWamBUamBUamFSamFSamFSamFSamFSamFQamFQaGBNaGBLZ19KZ19KZF1KXllFVVI/T048SUo6Rkk4QkQ2QEQ1P0U3P0c4PkY5PUU2QEY4PkU1PkYxSEw1TUkwVT8of1A8vHNky2NY4F9a61VU50dH4kA+4EE+2D85zjowzTktzjwtzz0uzz0uzzstzjoszjoszjoszjos0Dos0Dos0Dos0Dos0Dos0DoszTsuyT81xUI6vEI3rj0voDcklzIeljEdmzIfpjUjsjcowzow0UE430ZA5klE6UpG6ktI3kNB20VE0EJAvDs1rzkvqT0wpT8xnz0wnz8xnD4ymD8xlD4vjz0vij4uh0AuiD8sjj0qkTsqkjwrkz0slD4tlj8slz4smj8tn0AuoT0tpDosqDgsrDgrsTgttjowvDkvyjsz0Ds00z811kI410M51kM51EQ50UU4ykI2w0E0uT0zsDowqTYvojUuoDUvmTcukjwvjj0sijssiDsrhjoqhDsqgzssgTwsfjsqfDoqezkpeTopeDkodzgndjcodzMmgDMpkEM5mE5DkkxAjUs/j1FEklRJkFJHk1NKmFhPllVPmFdRnF1YlFdSjlNPimNUXVc1WGM5X2pCWmZCSVQ2NkMpNEAqPEg0T1hHWWJRX2ZUV1xISk43QkUqPz8jPDwiOTooPT4wOjwxOj0yPEAyNT4rO0guUGI8ZHpLbIhNdZRRdJhQcpZMc5lQcppTcZtRc59Qcp9McJ1McZ1OdKBTeKRZfKdff6pje6Zhb5pVY4xKXYZEYYlKZY1OZY1OY4tPZIlTW4BMVHlFaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRamFSamFSamFSamFSamFSamFSamFSamBWa2Bca19fa19fa2Bea2Bca2Baa2FYa2FXa2FXa2FVa2FVa2FVa2FVa2FVa2FXa2FVbGFPa2BMaWFOaWFOZl9NYVxJWVZFU1JATkw9SUo6REY4QUU2QUU2P0Y2PkQ2PEQ1PUY1N0AtQEgxSUszRj8lVz8nh1pFt3JitlZK2WJa8GVi7FRT5kZI60dI5kNE2Do3yzctyTosyTosyTosyzksyjgryTcqyDYpyjgryzcryzcrzDgszDgszDgszDgsyzguwjMtvjUvtjYtrTMooTAini4goTIhpzMkvEA0x0M31kc/4UxG6E1J6UpH5UZC30RA10NBz0RBwUA6sTsxpDwvoUExnEU0mEUzk0QzkUQ0j0IyikEwhUAwgkEvfkEuf0AuhjoqizkrizopijsqizwrjTwrjj0sjzwqlj8ulz4umzsrnTkqoDgrpTktqTovrjkvuDkwvjkwwTswxD4zxT80xUE1xEI0wUE0tjousjkuqjgtozcrnjYrmjgtmTgvkzsxizwviT0thzsthDssgjorgDsrgDssfzwsfTsrezwtejssdzkqdjgpdTcodDYpdjQmiTwylUc9lk1Ejko/iEg8jU9CklRJklJJkk9JmVRPmVNRmFdTml1ak1lVjVtUjWxbgX1YfolegIthbHhSTFg0NkQjPUouTFpAZXFZZW9XXWVNUFU+RUkwP0MoPUAjOjwkODknOzwuOTswOTwxPUEzNj8sPEkvUGI8ZHpLbYlOdpVSdJhQc5dNc5lQcppTcJpQdaFScKBMbp1McJ9Pd6NWe6dcfahhfKdicJlVZo9NXIRFXIRFZYxNapFSZo1OYIZJY4hSWn9MU3hFaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRamFSamFSamFSamFSamFSamFSamFSamBWa2Bca19fa2Bea2Bca2Bca2FYa2FYa2FXa2FVa2FVa2FVa2FVa2FXa2FXa2FYa2FXbmJSbWJQamJPamJPaWJQZV5MX1lJWVZFUk9ATkw9R0g6REY4Q0U3QkQ2QEQ1PEMzPEg0OkMuRkozTUcxUDsmcUw5mmJRql5QoUE1xlNM52Nf8F5e7VNV60pP6URK4UFDzDkyxzktxTctxTcryDgvyjovyzsyzTow0T420T400j020j400z430z810z430z431EA80UI+y0Q+xkY9wkY8w0k+x01Az1FF2VNK3lFK4k1H5ElF5EZD4kNA4EE920I91UZCyUQ/uj83qz0woD8vmkMylkg0lEk2jkc1jEUziEMzhUIygEEwfkEvekEwfUAugjoshjgshTkrhjoshjoshzsthzsriDsriTorizkrjzkqkTkrlTksmTsvnT0xojwwqjovrjkvsDowsDousDousDourzkrrjgqqDcppTcqnjYpmzYqlTcrkjgtkDkvjjwwiDwuhTwthDssgjorfzorfjkqfjsrfTsrfDosejsseTssdzksczgqcTYocjcpdTUpjEM6k0k+kUtBikg8h0k8i09Ek1RLl1RMllFMm1RQl1FPlFNPllxYkF9YkGhel35qlJRwhZJmdYJXWWg/Q1IrP08qUGA8Y3JRZXRVXGlLT1k+Q0wxP0UrP0MqPUEoOz0nNzgoOjstNzkuOTwxPUEzN0AtPEkvT2E7YnhJbIhNdpVSdZlRdJhOdJpRcppTcJpSc59Qb55Nb55Nc6JSfKhdfqlheaRfdJ9aY4xKXodFW4NEX4dIZ45PapFQZo1MYIdIYodRWX5LUndEaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRamFSamFSamFSamFSamFSamFSamFSamBUa2Baa2Bca2Baa2FYa2FYa2FVa2FVa2JTa2JTa2JTa2JTa2FVa2FXa2FXa2FYa2FXb2NVbmJSa2JRbGNSa2JTaGFRZF1NYFpKWFJCU1A/Tks8SUc4R0U2REU1QkMzPkIxPUkxP0cvTEcxUz4rZz0tlVpMrV9TnD42njMrtj852FhV82ln9mRl61JV5kpO6U9R2klE00Y8zUA3yz40zj830kQ61UY+10c+2kpC2kpB3UpD3UpC3ktE3ktD4EtF4EtF61NS6FRU41NS3VNQ2FNM2FNM21RO4FVQ4ExI4UlG40VC4kNA5EJA4kNA5EVC4UdF2UlIykRBuj84rD0yoT8ymEIxkkUzkEc2jEUziUQ0h0IzhEExgT8xfj8wej8xfD4vgDougzkugzkuhDovgzstgzstgzstgzstgTkqgzorhTkrhzksijssjTstjzwukzsvmzoxnjkvnzktoDouoTksozksojgqojgqnzgpnDgpmDgolDgpjzkqjDosiTothzsthDotgjosgTkrgDgqfTcrfTcrfDgrezkrezkteTkteDotdjgtcTUqbzUpcTcrdTosjEg9jko/iUk9hEk7hkxAjFJGk1dNmFhPmFFNnFVRl1NQk1ZRkmBZiGJXg2dbh3tlbnJRWmlASlkwQlMpSVowV2lBZHZOanxWWGlFTFs6P0wuOkQpPEQsPkMtPEEtOj0sODkrOjstNzkuOTwxPkI0N0AtO0guTF44X3VGaYVKdJNQdJhQdJhOdJpRc5tUcZtTbp1NbZ5McKFQd6hZfKpheqhgcp1YapRSWoJDXIRFYYhJZYxNZ45NZ45LaI1KZ4tNY4ZQWnxKUnRCaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2FVbGJZbGJZbGJZbGJWbGJWbGNSbGNSbGRRbGRRbGRRbGNSbGNUbGJWbGJYbGJYbGJYb2NVbmJSa2JRbGNSbGNUa2JTZ2BQZF1NXldHWVNDVE5ATUo7S0g5R0U2RkM0QEMwO0guQEkuT0MtYT0thEY7rFlTtE5Kniwrsjo5uT0701NS8nBu/nZ28WVo61he8F5f41VR2lBG1EdA0EM60UQ91Ec+1kdB1kc/2UhD2kpC3EhE3UpD3kpG3ktE4EtH4EtH4khI4UdJ3EhI2UdH1khE10hE2EdE20VE4EJB5EFC5kJB6EJC50NC5EJA30E+20E/20lJykNAuTw2rj4zokAzmEAykUIzjUQzikEyiEAxhz8xhT0xgjwygDwxfz0xfz0xgTsxgTsxgzozgTsxgTsxgDwvgDwxfz0vgDwvgD0tgTsvgDssgjosgTkqgjgrgzcqjDovjzgukTktlDovlzsumj0unjwvnz4umTkrlzorkzoqkDorijsshzsrhDssgjorgjosgTkrgDgqfjYofDYqezUpezUpezcqeDYqeDgseDovczcscDQpbzUpcjotdz0xi01AiUs+hEo8gk09hVFDi1ZIklhNl1dOk05JmVRPl1ZSll1WkGVcfF9RZ1dHYV9IRU8tPk4pP08oSlw0X3FHa31TZXdNWGpATmA4QFEtNkUmN0QqPUYxPUQ0Oj4wNzstODosOjstNjgtOTwxP0M1N0AtOUYsSVs1W3FCZYFGcpFOc5dPdJhOdJpRc5tUcZtTbZxMb6BPc6RVeKhceqhgc6BbaZNRYIpIWYFCXoZHZYxNZ45NZ45LZY1HZ4xHaIxMYYROWHpIUXNBaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGJYbGJWbGJWbGNSbGNSbGRPbGRPbGRNbGRNbGRNbGRPbGRRbGNUbGJWbGJWbGJWb2NVbmJUa2JTbGNUbWRVbGNUamFSZl9PYltLXldHWFFBUkw8T0k5Skc2SUMzQUMuOkcrQUcrVUAreEc5o1BMtUlJtjg8ujM5yEFFxD9AykpJ32Jg8XFw8G5w52Jl4lpc21FO1UxE0EVAzUI7z0Q/0EU+0EI+zkE60kM/0kM91ENA1UQ/2ERC2ERA2UVD2kRD3UFE3UFE3kRG3UdI30lI4EpJ40lJ5UdI50FD6kFE7EJF7EJF50FB4kA+2z061T062kZGyT08uTgzsTwzpkA0mD8xkD4wjkExiz0wijwwiTsxiDowhzgxhjkzhTo0hDs0gTszgDwzgTo0gDwzfzwzfT0xfT0zfT0xfDwwfD0ufDwwfD0ufTstezkpejgqezcqgjougzkuhzktiTkujTkukTsulTwulj0tkjkrkTkrjjsrijsqhzsrgzwqgDsrfzwrgDgqgDgsfjYqfTUpfDMqejQqejQqeTUqdTIpdjYsdzkuczcscDQqbzUqczoveEAzi1FDhk4/gU49glFAhVZGiVhJjlVKklNKk1BKl1NQlFRSkVxWimVcbltMUEs3RUsxQU4wS1o5V2dDYHJMZ3lRZHlOV20/R1wxQVYtN0gkMUAhNkIqPUY1PEQ5OD02NzozOjwvOzwuNzkuOTwxP0M1N0AtN0QqRlgyVmw9Yn5Db45LcZVNc5dNdJpRdJxVcpxUb55QcaJRdaZXdqZac6FZapdSYoxKW4VFXoZIYIhJZItMZo1MaI1KaI1IZotGZYlJYYROWHpIUHJAaWBRaWBRaWBRaWBRaWBRaWBRaWBRaWBRa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGJWbGNUbGNUbGNSbGRRbGRPbGRPbGRNbGRNbGRPbGRPbGRRbGNSbGNUbGJWbGNUbmJUbWFTbWFTbWFTbWRVbGNUamFSZ2BQZF1NX1lJWlNDVE4+UEs4TUg1SUQxREMuQEYqREQoW0IsiFRHr1xYqz5BrC81zkhPxj9FwDs+uzs8xEZH2Fpb42Vm21lbzEdI0UpH0EVCzUI/0EI+1EZC1EZC0EI+yj84z0Q/z0Q/0kRA1EVB1kVC2UVD2kRF3URG30BE30BE3kJF30VH4UdH4EZG4EJD4T4/6EJE6UBD6D5B5z0+5D4+40E/4UNA30VD10NDxTk4tjUwsDs0pj82mj4zjz0vjT8yiDwvhzowhzowhzgxhzgziDk0iDk0iDs1gzozgTszgDoyfzsyfjwwfjwwfDwwfDwweDgseTktejouejouezwtezwtezwtejssfTsvfzkvgDcugTcshDYqhTUqhjcqhzgpijgsiDkqiDothTwthDwtgD0sfjwsfjwsfTksfTctfDYsejYrejQqeDQpeTUseDUscjIodTUrdjgtcjYrbjQpbjUqdDsweEI2ilVHhFBCgE9AhFNEiFdJjFZKjFJHjU5HlVROlFVQi1JLhFhPf2NVZltHR0syPUosSVg5WmtJaHlVY3hRWm9GU2g/UGI6TF42O00nMD8eLDkdNT4pPUM1PEI4Ojw3OTw1Oz0yOz0wNzkuOTwxP0M1OD8tOEIpRVUxVWg7YXpDbopNcpNOcpZQdJpRdJxVcpxUdKBVdaNYdqRbdKJab5pVZpBOXohIW4NEZIxOYYlLYIdIY4pJaI1KaY5LZYpFYYVFYINNV3lHUHJAaWBRaWBRamFSamFSamFSa2JTa2JTa2JTamFSamFSamFSamFSamFSamFSamFSamFSa2JTa2JTa2JTa2JTa2JRa2JRa2JRa2JRbGNSbGNSbGNSbGNSbGNUbGNUbGNUbmJUa11QcWFSdGRXcmRXbmJWamBUaWFUaGJUZ2FTZWJRY11NW1ZDVlE9VE85TkgyR0EpS0csST8kYkkzkWdXtnduu2xnuFlXulBStkJFvUJFwkRHyEZIzUhL0EpL0kxN00tNz0VF0ERF00VE1kZF1UZC0kM/z0Q9z0Y8yEM6yUQ7ykU8zEU/0kRA10ND2kFE3EBE4UJG4kJE4UNE4ERF4ERF4UVG40VE5UVF40ND5EJA5EA/5EA/4z8+4kA940E+3kM/00I/xj87tjkzqjcwnzowlz0yjj4zhj4ygz80gT8zgT0ygjw0hDkzhzgziTkyiTkyhTswhDwuhDwugzstgTsvgTsvgDougDoufjotfjotfjovfjovfTsvfTsvfTsvfTsvfTkwfTkwfjgwfjgugDcugDcugTgvfzktgDcufjgsfTkufDgtezktejgseDgseDgseDgueDgudzctdjgtdjYsdDYrczQrcTUrbTEncjYsbjQpbTMobzYrbTQpcTgtf0k9hVNIhVNKh1JKiFFKjFFJkFFKlFFLlVJMk1RNjVRLiVtOgmNRb19IWVU6TVY3T187an5ZYnhRWnBJVWpDUmdAUGE9SVk1RFIxN0QmND4jMjojNjsnPD4wQEI1QEA2PD4zNTgtMzktNDouNzovOT0vOz8uPUIsPUYpU187YXJGb4ZSdJBVdJRTdJlTc51Tc51VdZ5afqdlfqdlcJhZYopLXoZHXoZIXoRHYIZJYohLZIpNZo1OZYxNY4pLYIdIXoRHX4JMVHZES207aWBRaWBRamFSamFSamFSa2JTa2JTa2JTamFSamFSamFSamFSamFSamFSamFSamFSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbmJUcmJTcWFScmJVcmRXcmZab2dabWVYamRWZ2NXbGlabWpZamdUaGNPY15IW1U9Ukw0UEowST8mUT8pa1A9f1hJhE5EiEU9lEVBsVdWuFRUu1FRwFBPwE5NwU1Nw01Lw0tK0FRUyEhJwj0+xD060EJA00VBz0I7xz40ykQ5ykY6y0Y9zkg/1EZC2ERE3EFF3UFF4UJG4UNE4UNE4kRF4kRF4UVG4UZE4UZE4EVB30RA4EI/30E+4EE94EE94EE93kM/1EU/yEM8uj42rTsxoDkwlDovijwwgz0xgEA0fkA1fj40gD00gzozhjkxiTkyiTkwhzsuhTwthTwthDssgzstgjosgjosgjosfzktfzktfzkvfzkvfjovfjovfjovfjovfTkwfTkwfTkwfTkwfTkwfTkwfDkwfDkwfDkwejowejowejoweTkveTkveDovdzkudzgvdzgvdDguczctcjYscjYscDYrcDYrbDIncTcsbTQpbDMobzYrbDMocDcsfkg+hVNKhVNMiFFMjFFNkFFMlFBNlVFOlFNPik9HhVNIgFtLe2VQc2lQaWxNZnFRZ3hUXnRNWG5HUGZATWE8TV48TFs6SFU3Q1A0PEYtOEApNjsnNzopPD0vP0AyPj4yOz0wNDowNDwxNTsxNjwwOjwvPD8uPkEsPkQqUVs5Xm1EboFTc4xVcpJTc5hTc51Tc55WeJ9efKJleJ5ha5FUYIZJXYNGXYNGXIJFYIZJYYdKZIpNZYtOZYtOYohLYIZJXoRJXX9MUnRCSWs5aWBRaWBRamFSamFSamFSa2JTa2JTa2JTamFSamFSamFSamFSamFSamFSamFSamFSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbmJUcWNWb19SbVxSbV9UcWRbb2dcbGRZaGJWZmJXcW1he3hpfntqgHpqe3ZjcWpXZWBKVFQ8RkYuQz4oTUIuU0AvVTgqXTcqbT40bjcwdTkxfjs1h0A6kklCm1BKpVhQrVpUu15ZulJPt0dFvEI/yERC0UVE00RAz0A60EE70EM80kU+1EdA1kdD2kZG20VG3kRG30NE30NE30NE4ERF4ERF30VF30VD4EZE30VD3kRC3EQ/20M+3EM+3EM+3EM920M+1kVAz0ZAw0I8sz41ojoxlDgtiTkugzsvgkAyfz8zfj4ygD4ygzoxhjkxiTkyiTkwhzsuhTwthDothDotgzstgjosgjougjoufzktfzktfjovfjovfjovfjovfjovfjovfTkwfTkwfTkwfTkwfDkwfDkwfDkwezgvezsxezsxejoweTsweTsweDoveDoveDovdDgudDguczctczctcjYscTUrcDYrbzUqajEmcDcsbTQpazInbDYqaTMnbTcrfUc9h1BJiFFKjFFLjlFMkVJNk1RPlFVQkVZQjFdPh1tQfl5PdGJOb2lRb3JVbHdZZndVUWVCS186RVk2RFUzRVY2R1Y5R1Q4RVI4QEoyPEQvOT4qNzsqOjwuPD4wOz0vOTsuNjwyNT0yNjwyNjwwOjwvPD4wPUAtPUMpTVc1WmlAaHtNbodQcJBRc5hSdZ9VdJ9XeqFgd51gbpRXY4lMXIJFXIJFXIJFW4FEX4VIYYdKY4lMZIpNY4lMYYdKX4VIXYNIW31KUHJAR2g5aWBRaWBRamFSamFSamFSa2JTa2JTa2JTamFSamFSamFSamFSamFSamFSamFSamFSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbmJUcmRXcGJVbV9UbF9Wa2FXbGNabGVbamZdamZdeXVqiIR4kY2BlY+Bkox+iYJyfXpnYGNOT1Q+REcyR0YySEMwRj0sTDwsVkM0UDkrUjYqVjQqWTQrXDYrYTkvZT0zbj40iktCnVJMrlVRt09MvEZGxkFC0kRD2UdH1EA+1UE/1kI+1kVA2UVD2kZE20VE3UVE3kRE30NE30NE3kRE3kRE3UVE3kZD3kZD20ZC20ZC2kU/2EU+10Q910Q92UQ92EU+1EQ800Y/yUY+ukE4pzsxmDgsjDgthTsug0Awf0Axfj8wgD4wgzoxhDoviDowiDouhDothDsshDothDotgjosgjosgTktfzktfzktfzktfjovfjovfjovfjovfjovfjovfTkwfDkwfTkwezgvezgvezgvezgveTkvezsxejwxeTsweTsweDoveDoveDovdjovdDguczctczctcjYscTUrbzUqbzUqbTQpajEmbzYrbDMoaDImazUpaDImbDYqfEY8ik9HjE9KjVBLj1JNkVRPkVZQkFdQjFpRiV1ShWFVeV9QaltIZF9JZGhPXGZLTl1ARVU4QVE0Pk0wPUwvP00zRFE3RlI6R1M7Qks2PkcyOkEvOT0sOT0uOT0uODwtNzstNz0zNj01Njs0Nz0zOjwxOz0vPD8sPEEqSlM0VmU+ZHdJbIVMcJBRdZpUd6FXeKJae6JhcphbZYtOXIJFWoBDXIJFXIJFWoBDX4VIYIZJYYdKYohLYYdKYIZJXoRHXYNIWnxJTnA+RWY3aGFRaGFRaWJSaWJSaWJSamNTamNTamNTaWJSaWJSaWJSaWJSaWJSaWJSaWJSaWJSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbGNUcmZadGhcc2ZdbmRaamFYbGVdc25oe3hxgX53kI2GoJ2UqKWcq6ecqKSZo52RmZaHentrZGdUT1I/R0o3RUg1QkUyQkUyRUg1S0w8Skg5R0Q1RD4wQjotQTcrQDYqRzUpUzUqcUI4jFBIn1BLr0hJv0dJzEVJ00JF1kBC2UBC2kJB3ERD2kVB20ZC3UVC3ERB3kRE3kRG3kRG3kRG3kRE3UVE3UVE20VE2kZC10ZB1kY+1EU91EU900Y91EU91UY+1EE600M7zkU9wUI5rj4znzoukTsuiz0whD8wgT8vgD4ugT4ugTsvhDothzsuhzsuhDotgzstgzstgjosgjosgTkrfzktfzktfzkvfjovfjovfjovfToxfToxfToxfToxfDkxejoxfDkxeTkweTkweDgveDgvdzgveToxeToxeDkwdjowdjowdTkvdTkvdDovcjcvcTYucTYucDUtbzQsbzQsbjMrbTQrajEobTctajQqaDIoajQqZjInajYrfUQ7jU5Hj05IkFFKkFRMkFVPjldQillShFxSe1lNd11Qa1pKXVVCWVhEWV5IT1lBP0szOkgvN0UuNUErNUErOEQuP0gzQ0w3RU45Qks4QEk2PEU0OkExOUAwNz4uNTwsNDosNTw0NTw1Njs1Njs0OTswOjwvOz4tO0ApR1AxU2I7YnVHa4RLcZFSd5xWeaNZeaNbeJ9gbpFXYINJWn1DXH9FXoFHXoFHXYBGYINJYYRKYoVLYoVLYoVLYINJX4JIXoFJWXtJTm9ARWY5aGFRaGFRaWJSaWJSaWJSamNTamNTamNTaWJSaWJSaWJSaWJSaWJSaWJSaWJSaWJSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbGNUa2FVb2VbcGZcbGNaa2Rccm1nhIF8kZCMp6OgtbGuxMG8ycbBycS+xcC6wLmxubKopJyPiIJyZ2RVUFE/Rkk4PkUzO0QxOkYyOEUzOEUzOEMzOkIzPEI2QEM4Q0Q8SEU8PjQqUDovZT82gEVBoVBPv1hby1JXykNJ1UZK10VG2kZG3EZF3kZD3kRC3kVA3kNB3kRE3kRG3kRG3kRG3ERD3ERD3ERD2kRD2UVB10ZB1UZA00Y900Y90Uc90Uc91EU91D841UA50EM6xkM5tkE3pT0wlj0vjD0uhj4vgj8vgT4ugT4ugTwtgzsthTsuhTsugzstgjosgjosgjosgTkrfzorfzktfjgsfjovfjovfjovfjovfToxfToxfToxfToxejoxejoxejoxeTkweDgvdjcudjcudDgudzgvdTkvdTkvdDovdDguczkuczkucjgtcTYucTYucDUtbzQsbzQsbTQrbDMqajQqaDIobTctaTMpZjInaTUqZTEmaTUqe0I5jk1Hkk1IkVBKj1RMjVZPh1hOglpQfFxRc1xObFxNYFdGVlNCUVJCSlE/QEk2NEAsMzwrMjsqMDkoMDkoMjsqNT4tOUIxPEU0P0g3P0g3Pkc2O0Y1OkMyNUAvMz4tMTwsMzozMzk1NDk1NDkyODkxOTsuOz4tO0AqQ0wvT143YHNFa4RNcpJTeZ5ZeaNZd6FZcZhZZolPWn1DWHtBXH9FXoFHXoFHXoFHYINJYINJYINJYINJYINJX4JIXoFHXoFLWHpITG1AQ2Q3aGFRaGFRaWJSaWJSaWJSamNTamNTamNTaWJSaWJSaWJSaWJSaWJSaWJSaWJSaWJSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbGJWamBWamFYa2RabGhfdXBsiISBn56asLCuw8LA09LQ4uHf5+bk5+Pg4t7b3NfT2M/IzryyuKWXl4d6eW1dX1lJS0w6QUYyPEUwP0s3Pkk4PkY3O0M2Oz41OjszOTgzODcyPT0zQzwyTjcxYTg0iEhIr11fxWBkyldazVFT005P101L20tK3khH4UZE40RB4kJC30NG3kNH3kRG3UNF3UNF3UNF3EJC20NC2kRD2ERA1UQ/00Y/0kU+0EU+0Ec91EU92UA62UA60UI6yUQ7vEM6rEA0mTsvjDkriT0vgz4ugT4tgT4tgTwsgzsshDwthDwtgjosgjosgjougTktfzktfzktfjgufTkufjovfjovfToxfToxfToxfToxfToyfToyezsyeToxeToxeDkwdzgvdDguczctcjgtdDguczkucjgtcTgtcjgtcDcscDcscDcsbzYtbzYtbzYtbjUsbTQrbDMqbDMqaTMpaDIoazcsaDQpZjInaDQpYjAlZjQpekE4kE1Hk05JkVBKjlVMiFhOgVlPeFpPclxOa15OX1hIUlBBS049RUk6OUIxMzssMDgpMTcrMTctMDYsMDYsMDYqMTcrMjorNDwtOUQ0O0Y1PUg3PEk3O0Y1NkMxM0AsMT4tLjgwMDYyMTYyMjcxNzgyOTswOjwuOj8pP0grTFo2XXBDaoNMc5JWeZ5bd6FZc5xWZ41QXoFJVnlBWHtDW35GW35GW35GXYBIX4JKX4JKX4JKX4JKX4JKXoFJXYBIXYBKVXZJSmtAQWI3aGFRaGFRaWJSaWJSaWJSamNTamNTamNTaWJSaWJSaWJSaWJSaWJSaWJSaWJSaWJSa2JTa2JTa2JTa2JTa2JTa2JTa2JTa2JTbGNUbGNUbGNUbGNUbGNUbGNUbGNUbGJWcWhfbmdfbWhidHFqh4OAoaCevLy6zc/Oz8/P4ODg8vLy+vj5+/f49/Py8evr7uPf6NDG3cG1waudopGBfXViXlxHS003Q0gyQUkyQUg2QEc3QkQ5QkI6Qj05Qzk3Pzo2Oj02Pj83QzgySi4rZTc3j1FStGhqxm5twFxcx1pX0FZT11FO3U1M4khI5kNE5UJF4ERH3URH3URG3UNF3UNF3EJE3EJC3EJC3ERD2UNC10M/00Q+0kU+0EU+0Uc91EU93EM920E50kI6ykQ7v0U6sEE2nDotjDYnijwvhT0ugj0tgT4tgTwsgTwshDwthDwtgjosgjosgjoufzktfzktfjgsfTkufTkufjovfjovfToxfToxfToxfToxfToyezsyejsydzsxeDkwdjowdTkvczkucjgtcjgtcjgtcTgtcDcsbjgscDcsbTcrbzYrbzYrbzYtbzYtbjUsbTQrbTQrajQqaTMpaDQpZjInazcsaDQpYzEmZjQpYjAlZTMoeEI4j05Ikk9Jj1JNi1ZOhFhPelpPcVtNal1NWlRESUo6QEQ1PkQ2OUEyMTksLzcqNjwyNDcwNTgxNTcyNDcwMjUuMDYsMDgtMjotNkEzOkU1PUo5Pks5PEk3N0YzM0ItMT4tLDYuLjQwMDUxMTYwNjcxODovOjwuOj8rPEUqSVc0W25BaYFNcpFWeJxcdZ5YcJlVYIZJWHtDU3Y+V3pCW35GWn1FWXxEXH9HX4JKX4JKX4JKXoFJXoFJXYBIXYBIXX9MU3RJSGhBQF44aWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTamNTa2JTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbGRXamNbZ2RddnNuk5KOr6+txMbF2tzb6u7v8/T29vf5/Pz+//////7///v6/Pb2/fLu9+HU8tjH4Mm3xrWhqqCHiIRpYmJGRUgtRUkwQ0cwRkUzR0M3RjwzQzYwRzUzSTs6Pj05Pj86Qjo3STc1Y0dGkmpqxZOS6K2p0ouHx3RuwF1YxlNQ1U9O4EtN50ZL6UZL30RI30lL20VH1Tw/2D5A4UdJ4ERH1jo92kBA2kBA2UFA1kJA1EM+0kM90EE70UE53kM+20E500A5ykE5vkI4sEA1nzoukDgqjD0whz4vgz4ugT4tgD0sgD0sgTwsgTwsfzorfzktfzktfjgsfjgufTkufDgtfDgtfDkwfDkwfDkwfDkwejoxejoxejoxejoxeT01dzw0dzszdToydDkxcTgvcDcucDcubzYtbTctbTctbDgtbTctbDgtbTctbTctaTIrbTYvcDkycDkybDUuZzIqZzIqaDMrZTAoaTcuZDIpXi4kYDAmXy8lYjIocz42jE9KkFFMiFFMgVJKfVhPeF1SaFhJVE4+REU1QEQ1OkIzNz8yNDwvMzswNDowNDkyNzk0NzgzNjY0NTcyNDYxMTYvLzYuLzcsLjkrMj0tNkMyOkc2Okk2OEc0NEMuMT8uKjQrLDIuLTIuLzQuNDUvNzkuOjwvOj8rNj4mRVMyWWtDaoJSdZNdeZ1fcptZa5RSW35EWHlEVHVAVHVAWHlEWntGW3xHWntGXn9KYoNOYoNOXn9KXH1IX4BLYIFMX39OVHNKRmRAPFc2aWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTa2JTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbWRVbGRZZ2Rdb25qhoWDpKSiwcPC1trb6u7v9/v89/v++Pz//P3//v7+//7///78//z7//rz//Dg/OrU7d7H182ywLuepKOEgoNjZ2pLTFEzR0ovRUMuR0ExSD40STozTDk1Szw5Pzo3Q0JATklGXVJQeWpno46LzrKu6MW//9fR67KpzYJ8wGNeylZW2FJT30hN2kFE1kRF1UVF2EhI3EpL20VG1Tw+1jw+20FD2T8/2T8/2UFA10FA1kI+00I90kE81EE63EE820A71EE6y0I6v0M7sUE2oDsxkjgtjD0whz4vgz4ugT4tgD0sgD0sgTwsgTwtfzktfzktfzktfjgsfTkufTkufDgtfDgtfDkwfDkwfDkwfDkwezsyezsyezsyejsydzw0dTwzdToyczoxcjkwbjgucDcubTctbTctbDgtbDgtbDgtbDgtajgtbDgtbDgtazYubjcwcDkybjkxbDcvaTQsZzIqZTMqYzEoZDQqXy8lXi4kYjIoXi4kYDAmcD43gktGh1JOh1hSflhPclZLZFJGUkk6QT8wPEAxOEAxNUAyMz4wNDwxNDwxNTozNzozNzk2Nzc1Nzc1NTcyNDYxMTYvMDcvLzcsLjkrMTwuNUIxOUY1OUg1OEc0NEUyNEIxLjgvLzYvLjMtLTIrMjMrNDYrODotOT0sNz8oRFEzWWtFaoFVdpRgeZxicJhaZ49RWXxEV3hDVHRCVHVAVnZEWXpFWXlHWXpFW3tJX4BLYIBOXH1IW3tJXn9KXn5MXntNU25LRl9BOVI1aWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTa2JTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbWRVbWRVbmVWbmVWbmVWbGZaZWRfeXt4l5mYsra3zdHS5Ons9Pn8+v//+////P///f7//v7+//78///7///6///0/vzn+vnd8O/R4eXE0ti0vcWgoKiDh5FsYGdFUVg5RUgtREMuSkQ0TEQ5S0E4Sj87Qzs5U0pLaWFfgXd2nJKQvrOv2c7I6tzT/ujd//Pp/+Tb8Kmjw2VjtUJFx0RJ2lJW21VU0U1LykRBzUNB1EZF10VG2ERE2UNE1j0/1z5A2EA/1kA/1kJA00I/00I/1UE92UA72UA600M7y0U8wEQ8skI3oTwykzkujjwwiT0wgz4vgT4ufz0tfz0tgD0tgD0tfzktfzkvfjovfTkufTkufTkuezgvezgvfToxfToxezsyezsyezsyezsyejs0eDw0dDsycTsxcjkwbzkvbjgubDgtbDYsazcsbDgtajgtajgtajgtajgtaTktajgtajgtbjkxbTgybTgybTgybTgyaTcwZjQtYzEqZTMsYTApXSwlXzAoYzQsXC0lXzAoc0Q8fVBLgVZQfllRcFNLXko/T0M3QD0uNDYoMzoqMTwsMTwuMj0vNT0yNjwyNzozNzozNzk2Nzk2NjgzNjgzNTcyMjcwMTgwMDgtLjkrMDstMj8uNkMyN0U0OEc0OUg1OUY1ND4zMzoyMDUuLDIoLzAoMTMoNTcqNzsqNj4nRVI2W2xKbYRaeZZmeZxmbJNaYIdOV3dFV3VDVXJCVXNBV3REWHZEWXZGWXdFWndHXnxKX3xMXXtJXXpKX31LXntLWndLUGdKQVdAM0kyaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTaWNTamNTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbWRVbmVWbmVWbmVWb2ZXbWdbamtmg4eIo6eoub7B0NXY5e3v8/v99f3/+///+////P///P77/f75/v34//73///z+f3m9v3e7vfY5/HO3ujDztq0tsCboauGgIdlZm1MTlI3RkgwSkk3S0k8SEQ5REA3T0dEamBfi4GApJqZt6+sy8bC3tvU6ubd+vHo//vx//ft/93V+7Wz5Y+OymNmsEA/w1BLyVRNyVBIxEdByEdC1E1K1ktI0EA/0j4+0z8/1T8+1UE/1UE/1ENA00I/00I91j451UA60kM9zEU/wEU+skE5oj01lTsyjjwxiT0wgz4vgT4ufz0vfz0tgD0tgDwvfzkvfzkvfjovfTkufTkufTkuezgvezgvfjsyfjsyfDwzfDwzezsyezsyejs0eDw0cjkwbzkvbzkvbTkubDgtazcsajYraDYraTcsaTcsaTcsaDgsaDgsaDgsaDgsaDgubTs0bDcxajUvaTcwajgxajgxZjQtYTApZTQtYTIqXS4mYTIqYjMrWSoiYTIqeU5HgVxWdldSak9IWEQ7STwzQDouOjstODwuMDgpLzoqMzsuNDwvNjwyNjwyNzoxNjkyNzk0Nzk0NjgzNDkyMzgxMzkvMTkuMTkuLjkrLzosMTwsMj8uNUIxN0U0O0g2PEk4OUM4Nz80MjguLTMnLi8nLzEmMjQnNDgnNDwnRVI4X3BQdIpkfZpueZtpZo1YVXxHU3NCVHFBU3BAU3BAVHFBVXJCVnNDVnNDWHVFW3hIXXpKXXpKXntLX3xMXHlJV3JJS19GPE07Lj8tZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTaWNTamNTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbmVWbmVWb2ZXb2ZXb2ZXbmddcXFvh4yPpKmst7/CzdXY4+3v8vz+9P7/+P//+///+//8/f/6/P31+vzx+Pjs9vjq9//o8//k8vzh7vnZ6vTS3ujFytGvtr2bnaOBfYJiWV1CSU02R0o5Rko7Q0Y7QUI6Y15YhX16q6Gfwbe1zMLB18/N5uHd8e7p+vfw/PXt//Ho//Lp//Pt/+Xf6aikuGlkp01CtVBEwVlOyFxSxlFIv0Q9wkE8y0RBzEE+zkA+0EA/0UFA0kM/0UM/0UM/0kM/0z870kE80EVAyUVAvUM+r0A5oD03lTw0jjwxiTwygz0xgT0wfz0xfz0vfz0vfz0vfjovfjovfjovfTkufDkwfDkwezgvezgvfDwzfDwzfDwzezsyejs0eTozeTozdzszbjcwbTgwbTgwbDcvazYuaTcuaDYtaDYtaTcuaDguaDguZzguZzguZzguZzguaDguazkyaDYvZjQtZzUuaTcwaDcwZTQtYjEqYzIrYzQsXzAoXTEoXTEoVysiYzcue1VMdFhUYU5ITj84QTcuPTYsOzktOTsuOTwxMzktMzsuNTsvNjwwNjwwNzovNjgtNDcuNjkwNDkyMzgxMzkvMzkvMjovMTkuMTksMDgrLjkrLzosMTwuMz4uNkMyOkU1PEc3PUU4OkI1NTsvMDYoMDInMDIlMTMlMjYlMjolR1M7ZHRXeY9rfppyc5RnXYNSSnA/T28+UW4+UW4+UW4+UW4+Um8/U3BAVHFBV3REW3hIXXpKXXpKX3xMYH1NWndHU21GQ1U/NkQ3KDYpZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTaWNTamNTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbmVWbmVWb2ZXcGdYcGdYb2hebG5teoKFk5qgq7W3xM7Q3Obo7ff59P7/9f799v/8+v/6+//5+/7z+Prt9fbo8fTj9fzq9P3o9Pzl8/nf8vbb6ezP2Ne5xcSmsbCSj45yZ2dPTlA7R0s6Rkw+SFBFS1FHe3tzn5qUxb642M7M39PT59vb8+vp/Pf08O/r/Pv2///2//30//jx//Pq/+fe/9fL2JODuGVTpEs7tFRGvVdJtUY7t0A4yEtFx0M+ykM/zUNAzkNAzkM+zkM+zUQ+zUI90UI80kM/zkRBxUQ/uEE9qj04njs2lTw2jjsziTw0gz0zgT0yfz0xfz0xfz0xfz0vfjovfjovfjovfTkufDkwfDkwezgvezgvfDwzfDwzezsyejoxeTozeDkydzgxdTkxbjcwbTgwbDcvajgvaTcuaTcuaDYtZzctaDguaDguZzguZzguZzguZzguZzguZzguaDcwaDYvZzUuZzUuaDcwaDcwZzYvZjUuYTIqZTYuXjIpXDAnYDQrYTUsaT00dVNKWEdART42PDUvOjYtOzgxOTkvNTcsMzYrNzovNTsvNzovNzovNjkuNTgtNTcsMzYrMjgsMTksMjguMTksMTkuMTksMTksMTksMDgrMDgrLjkrLzosMDsrMz4uNkExOEMzPEQ1OkMyOD4wNTstNTcqMzUoMTMlMDQlMTgmSFQ+Z3dcd4xtdpJsaIhfUndLQmg5S2s8Tms7UG09UG09T2w8Tms7UG09UW4+V3REWndHXXpKXntLYH1NX3xMVnNDTmdAPEo5MDszJS8nZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTaWNTamNTa2JTbGNUbGNUbGNUbWRVbWRVbWRVbWRVbWRVbmVWb2ZXb2ZXcGdYcWhZb2heaGlrbXR6hYyUo6yxv8jN097i5fDy8Pz88vz79f75+P/3+v/2/P/y+vzu+Pnn9vfn9vbq+ffr+vfo/Pbm/fXi9+zY59jD1cavwLGanpN9dm5bWldGUFFDU1ZLXGNbZm1llZiNsrKo1c7I6N3b8+Pk+urr//H0//f5//39/v35+fr0+Pnx/Pzy///z///x//vq/+bR8aqUvG9bqVZErlJDtVBEu0xBv0pBwkdAxkVAyUVAykVAykU+yUQ9yEM8yUI80UM/0EVAzEVBwkM9sz05pjs1nDs1lTw2jDw1hzw2hTw1gT00fzwzfz0xfz0xfz0xfjovfjovfjovfTkufDkwfDkwezgwezgwezsyezsyeTozeDkydzgxdjcwdjcwdDgwbjcwazkwajgvajgvajgvaDguaDguaDguZzctZjctZjctZjctZDgtZDgtZDgtZjctZzYvaDcwaTgxaTgxaDcwaTgxajszbD01ZzgwbD01YzcuYTUsb0M6eExDdElAbk1ERDoxNjcvNDUvODkxOjs1NTYuMTQrMjUsNTgvNTgvNTcsNDYrNDYrNDYrNDYpNDgqMDgpLjkpMDgrMDgpMDgrMDgpMDgpMDgpMTksMDgrMDgrMDgrMDgrMjotMzsuNDwtOUIxOkMwO0IyOkExOjwuNjgqMzUnLzMkMjknSVU/ZXVbb4NnaINiWXlUSW5FP2Q4SGc7TGk7T2w+Tms9TWo8TGk7TWo8T2w+VXJEWXZIW3hKXXpMXntNXHlLUW5AR187NkI0KzQvIyklZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTZ2RTaWNTamNTamNTa2NWbGJWbGJWbWNXbWRVbWRVbWRVbGVVbWZWbmdXb2dab2ldb2hebWpla29ybXR6g4qQpa6zw8zR1d/h5u7x9Pz+9P369/35+f73+v/2/f/y/f/x/P/u/f7w+/jv/vrx//nv//rt//np//Lf7+DL3c63wbKbopeBfHViYl9OWFpMXmRYbXdufIZ9pqyivr+32tXP7uTi/O7u//T0//T3/vT1/vj4+/r4+/34/P/6+P/19Pzx9/3x///x//no//Tj/8y7vX9wnFJFqVNGtlRJskM6wElBxEhAx0ZAyUY+yUY+yEU9xkM7xkM7zUc+zEc+x0c+vEM7rT41oDszmDs0kT42ij01hj02gz01gT00gDwzgDwxgTsxgTsxfjovfjovfjoxfTkwfDkwfDkwezgwezgwejoxejoxeDkydzgxdjcwdjcwdTYvcTYubTgwazkwazkwajgvaTkvaTkvaTkvaTkvZzctZjctZzctZjctZjctZjctZjctZjctZjUuajgxbTs0azozajkyajowbT40b0M4bUE2b0Q7ZT0zZD4zelZKhmRaeVdNYkxBPjoxMzgxNDkyNzw1NjkyMTQtMjUsOTwzMzYtMjUsMjQpMDMoMTMoMjUqNDYrNDcsLzcqLTgqLzcqLzcqLzcqLzcqLzcqLzcqMTkuMDgtMDgtLzcsLzcsLzcsMDgtMDgrNz8wOUIxPEU0PUQ0O0EzODwuMjYnLTQkMjsqSlZCY3JbaXthXnVYUm1MR2VBQWE6SGQ7S2g8Tms/Tms/S2g8Smc5TGk9Tms9VHFFWHVJWndLW3hMXXpOWnZNTmpBQ1s7Mj40KjAwIScnaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWamRWamRWa2VZbGRZbGNabWVabWVYbWZWZ2BOa2ZTbmtYb2xdaGVcZmVhc3FygYKGio+Tlp6hq7O2w8jL2N3g6u7v9vf5+fv6/P79/v78///6/f72+/z0+vzx+/3y/P7z+fry+vry+fnt/Prr/vzn+ffg6eXK1dS2urmbmJh8cXRZX2RNZGtZcn1shJCCkZuQtLmyy8zH4+Le8u7r9/Py+/f2/fn4/Pj3//78/v78/v78/f/6/f/6/f/6/f/6/f/6+vz3///6//v2/+rl2Kego2BYnEU+tU5Hv01DwkY+xEQ5y0Y9zklAzktBy0hAx0c8xkc4w0g4vUo4s0g4pkU1mkI0kUI1i0M1hkI3hEI2g0E1gj4zgjwyhDoxhjkxhjkxgDoyfjoxfDkxfDkxezgwejcvdzcudzcudzcudzcudzgvdzgvdjcudTYtcTUrbzQsbDcvaTgxaTgxaDcwaDcwZzYvZzYvZzYvZjUuZzYvaTcwaTgxaTgxZzYvZjUuZTMsaDMtajUvbTgwazkwajowaTsuaj4xa0EzZ0Iyakk6ZEg6dl9PfmtcinhqjH9vUko9NzkuNDowNDowMzkvMzkvMzkvMjguMjguMTctMTctMzYtMDYsMjUsMDYsMTQrLzUrLzQtLjUtLzQtLzQtLzQtLzQtLzQtLzQtMDUuMDUuLzQtLjMsLjMsLzQtMDUuLzYuMTsyMz0yNkA1OUM4OUQ2N0I0NUAwMz4tND8uRFE9WGZPW2tRUmJIRVg8QlU5Qlc2SmQ/S2U+S2U+S2U+SmU8SmU6TWg/T2o/VXBHWXRLXHZPXXdQXXdSV3FOSGFBO044JjErJisuJCksaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWa2Raa2RabGNcbWRbbWVabWZWaWRRamhTbWpXamtbZ2dfbGxsfn+EkJOaqK+1uMLE0dbZ4ufq8vP1+/z+//7///7//v37//76///6//75+/z0+fry+Pvy+fzz+Pnx+Pnx+Prt9/rp+fvl8vXa3+LFzM+wtLeYkZZ2a3FVWmJKYmtWdYBvjJiKnaecv8G809PR5+fl8/Px9/f1+/v5/Pz6+/v5/v78/v78/v78/v78/v78/v78/v78+//+9f//9f///v////v6/+3q8L+6wn51n0tBr01CuUo/wkxAxUs+w0U5vD00vj82w0U5xEY3w0o3vUw6s0k5pkY2mUM0kUM2jUU3hUM3gkI4gUE3gT41gjw0gzozhjkxhDkzfzozfToyezsyejoxeTkweDgvdjcudjcudjcudjcudTkvdTkvdDgucjYscDYrbTQrbDcvaTgxajgxaDcwaTcwaDcwZzYvZzYvZTMsZjQtZzUuaDYvajgxajgxazkyazkyazYwbDcxazkwazsxbDwwaj4xakAwaUQyZ0g2bFE+Z1JBdmdUgXVli4ZzhoNyS0w8NjkuMzkvMzkvMzkvMjguMjguMjguMjguMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLzQuLzQuLzQuLzQuLzQuLzQuLzQuLzQuMDUvLzQuLzQuLjMtLjMtLzQuLzQuLzYvLjgwLzoyMj40NEA2NkI2NkI2NkI0NUIxNkMxQ1A+UF1JUmBJSVdAQU82QlA3RlY7SmJAS2VATGZBS2VASWM8SGM6SWQ7SmU8U25FWHJLXHZRXXdUXHVVVG1PQ1w/Nkk1JjEtJywwJSouaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWa2Raa2RabGNcbWRbbWVabWZWbWhVbGpVbWpXamtba2tjd3d3kZKXp6yyv8bM0tze7PH09/z//v///v////7///7//v37//76///6/v34+vvz9vfv8/br8/br9ffs9vjt9vjq9fjl9ffh7u7U29u/ycqrsLGSk5Z5dXlga3BadHtpiJCBn6ecrrWtzc/K3t7c7+/t+Pj2+/v5/v78/v78/f37/v78/v78/v78/v78/v78/v78/v78/f/++///+////v7+//v5//r0//ft/dHG2J6QlU0/pVJEqUw9p0Axt0c7z1lNz1VKvEA0xEQ3xkg6xEtAuUk9q0M4nT81l0A3k0Q9iUA5hUI6gUA6fz44fj41fT00fzw0fT00ejs0eDw0eDw0dzszdToydDkxdDkxdDkxcjkwcjkwcjkwcjkwbzkvbjgubDYsazUrbTgwajgxbDcxajgxazYwaTcwaTcwaDYvZzUuZzUuZjUuZzYvaDcwaTgxazozbDs0bDs0ajszaTowaDwxaz8yakM0aUQyZkUyZ0o4bFZBallHdWpWhn9tkY57gH9tREc2NTgtMzkvMjguMjguMTctMTctMTctMTctMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLzQuLzQuLzQuLzQuLzQuLzQuLzQuLzQuLzQuLzQuLjMtLTIsLTIsLjMtLzQuLjUuKzUtKzYuLTkvLzsxMj4yNUE1NkI0N0QzOEUzP0w6RVI+Q1E6O0kyOEYtPkwzRFQ5Sl9ASmJATGRCS2M/SWE9R2A5Rl84R2A5UmtEWHBMXXVTXnZWWnFUUGdLPVQ4LkEuJjEtJywwJSouaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWa2Raa2RabGNcbWRbbWVabWZWbmlWbGpVbGtXbG1dcHFpgIKBnqGmub7ExMvR2+Xn9fr9+////P3//P3//vz9/Pv5//78///7//75/Pz09fbu7/Hm6+7j6ezh7vDj8fPl8fTj8fTf8vHc6urQ2Ni8x8ersrGVoaGJkZN9kJOAnJ6Rqq2itru0wMW/3Nza6enn9vb0+/v5/f37///9///9/f37/v78/v78/v78/v78/v78/v78/v78/v7++/v9//7///7/9/Lv/PPs//zz//rt//Tk7MKyuYFwlVBAok8/uFhKt00/tUU5wEc8wUE2yEU7xUlBvUY+r0A5oTs2mj04l0I/jT87h0A8gUA8fUA7ej85eUA5eUA5eUA5dj00dj00dj00dTwzcz0zcjwycjwycjwybzswbzswbzswbjovazkuazkuajgtaTcubTgybjcybjcybDcxbDcxazYwaTcwaTcwbDozajkyaDcwZjcvZjcvZzgwaDkxZzsyaj82Zj40ZT0xZj4yaEMzaUU1ZkczY0cyY0o2aFZAaVxJc2tWhYJvjY96b3JfOT0sMjgsMjguMjguMTctMTctMDYsMDYsMDYsMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLTIsLTIsLTIsLTIsLjMtLTQtKjQsKTQsKjYsKzctLjowMT0xNEA0NkI0NkMyOkc1PEk3OEUxMj8rMkApOEYvPk40RFg8RV09S2BBSmJAS2A/R187SF46Rl46U2hHWHBOYHVWXnVYW29UTGNJOU00KTooJS4rJSouJCktaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWa2Raa2RabGNcbWRbbWVabWZWbGdUbGpVbm1Zb3BgdHVthYeGpKesv8TKztXb5vDy+///+///+/z+/f7///7//v37///9///7/v34+Pjw7/Do6Orf4uXa4OTW5+vc6u/b7fDb7PDZ7u7W6OjQ2ti/zMqxwr2nt7Wgsa6dtrSnwb61ycjD0tPO2dnX6Ojm8vLw+vr4/Pz6/f37///9///9/Pz6/v78/v78/v78/v78/v78/v78/v78//78//z///z///v6/Pv3/f/5/v/4///0//7t//7s+N/LxZyKnWJQlko6pUw8tVFBvEw+v0A3xkM7xUZAv0Q/sT47pjo4njo6mT49kT07ij88hEA9fUA9eEE8dEI7ckM7ckM7cT82cz42cz42cj01cj01cj01cD41cD41bj40bT0zbDwyazsxajsxaTowaTowajowbjcycDYycDYybjcybTYxbDcxaTcwaTcwbDs0azozaDkxZTkwZTkwZTkwZjsyZDwyZkI2ZEI2Y0M0ZEQ1ZEc1ZEk2YkkzX0kyXkw2ZVY/amJNcm1XhINvhIdyXGFNMzooMjgsMjguMjguMTctMTctMDYsMDYsMDYsMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLTIsLDErLDErLDErLDErLTIsLTQtLDYuKzUtKjQsKjQrLDYtLjgtMDovMj0vMj0tNUAvN0IxNUEtMj4qMT0pNUEtOEYvPU83QFQ5Rlg+SFxASl0/SV49S14+S2A/VGdJW29TY3ZaYXVaWmxUSl1HNkc0JzUmJC0qJCksIicqaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWa2Raa2RabGNcbWRbbWVabGZWamdUa2pVbG5Zb3Jhc3ZtgYWEn6SouL/H1t/k7ff5+///+///+/z//v////7//v37///7///6/Pz09PTq6+3i5ObZ3+PV3uLT4+jU5+zW6e3W6uzU6+vT6ObP39rE08640866zMa2y8O40MnB19LO4NvY6ubl8O/t8/Lw+fn3/f37/f37/f37///9/v78/Pz6/v78/v78/v78/v78/v78/v78/v78//38//v8//j5//79/v/9+f/99P/48P/19//28Pfn///t/+7bzaeUpGtYoltHqldFrUw7uUQ6wEQ8wEU+vEU/tEE+qj06ojo5mjo7lT08jT89hT89fkE8d0I8c0Q8b0Q7b0Q7cD84cT82cT84cT82cT84cT82cD84bz81b0A4bj81bT42azwyaT00aDwxaDwzbDs0bzgzcjczcDYycDYybjcybDcxajgxaTgxaDcwZzgwZTkwZToxZDwyZT80ZkA1ZEI2X0M1YUc4Y0w6ZE07Y004YEs2Xkw0XU00XlI6Ylg/bWhSc3NbgINudntlRk86ND0qMzktMzkvMjguMjguMTctMTctMTctMTctMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLjMtLjMtLjMtLjMtLjMtLjMtLjMtLjMtLTIsLDErLDErKzAqKzAqLDErLDErLDMsLzYvLDYuKzUtKjQsKjQrKzUsLTcsLjgtLTgqMDsrND8vNUAvND8uMz8rND8uM0AsN0YxOUszQE84Q1U7R1c8SFs/TV1CTWBEVWVKXG5UZHRaYHJaWGdSR1hFNEIxJDIlJC0qJCksIicqaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWamRWamRWa2Raa2RabGNcbWRbbGZabGZWbGlWbGtWa21YbG9ebHJoeoB+lZ2grre+0tvg6vP4+///+f7/+fr+/v////7/+vn3///7/v34+fnx8vLo6eve5ObY4eXW4ufT5OnS5+3T6OzT5+nR6OjQ5+XO4NvH19C+2tPD2dHG3tTL5t3Y7uTj8+nq+vH0//n7+vn3/v78///9/f37/f37///9///9/Pz6/v78/v78/v78/v78/v78/v78/v78//38//n4//r5//79/P/99//+7v/58f//8v/99//69fnr//3t//ro9M67q3dij1E6qlxIsk4+uEo9uUk+uElAtEdAr0Q+pT06nDo3lj05jz46iD85gEE6eUI7dEQ6cEY6cEU8cD84cT84cT46cT84cT46cT84cD86cD84cUI8cEE5bj85bD01aj03aj41aj03bj02bzgzcjczcTczcDYybjcybDcxajgxaTgxZDgvZDkwZDwyZD4zZEA0Y0E1Y0E1X0M1WkU0X048Z1ZCaFdDY1M8Xk84W081XFI3XVY8XVk+bmxVdHZefIFrY21VMj4oNkIuMzsuMzkvMzkvMzkvMjguMjguMjguMjguMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLDErLDErKzAqKzAqKzAqKzAqLDErKzIrLTQtKzUtKjQsKjQsKzUsKzUsLDYtLTcsLDYrLzosMj0vNkExN0IyN0IxNUAwND8uMj8tNEMuOkczPUw1QU84RFQ6Slg/TFxCVGJJXGtUY3BcXm1aVWJRRFJDMj4wIy8lJzAtJiwsJCoqaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWamRWamRWa2Raa2RabGNcbWRbbGZabGZWb2xZbWxXamxXZ2taZ21jcnt4jpiaqLG4ytPY4+zx+P3/9/z/+vv//v////7/+vn1///6/f31+Pju8fHl6evd5unY5enY5+zW5uzS6e3S6u3S6OjO6ObP6OPP4drI2NDD2M7E3dLM6d7a+O3r//T2//X5//X7//n8//3+///9///9/v78/v78///9///9/f37/v78/v78/v78/v78/v78/v78/v78//76//37//37/fz6+f38+P//9f//8///7f368//7/P/6///0//bm//Pf/+PN162VqW9ZqFdErlFArE8+r09BsU9CrUtApEM8mTw1lT43jz82iUA5gUE3e0I3dUQ2cUU4cUU6cD84cT46cz46cT46cT46cT46cj87cUA7c0I9cUI8cD86bT44bD03az44bT44bz45bzgzcTczbzgzbTgybTgyajkyaDkxZjoxZjsyZD4zZEA0YkI1YEM1XUEzXEAyV0IxVEc0XFQ/Zl5Hal9JYlg/WlM5WlM3XFc6W1c8WFc7a21Vc3dedX1mVWFJJjIcOEQwMzsuNDowNDowMzkvMzkvMzkvMjguMjguMTctMTctMTctMDYsMDYsMDYsLzUrLzUrLTIsLTIsLTIsLTIsLTIsLTIsLTIsLTIsLDErKzAqKzAqKi8pKi8pKzAqKzAqLDErKzIrKTMrKjQsKzUtLDYtLDYtLTcuLTcuLTcuLzkuMjwxNkEzOUQ2OUQ0N0I0NkExMDsrMj8tNkMxOUYyPEk1QU84RlQ9Slg/UmBJW2hUYW5cXWpZUV1PQk5AMDwwIiwjKzEvKC4uJiwsaWZXaGVWaGVWaGVWaGVWaGVWaGVWaGVWaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXa2VXbGVbbGVbbWRdbmVcbWdbbWdXcW5ba21Xa25Za3Jga3NocHl2h5GTn6qwu8TJ0Nne6u/z9vv+/P3//v////7//v35///6/v72+vrw9/fr9Pbo8fTj7PDf6e7Y8fXa7fLU6+7T7OzU6ObR4dzJ3dXI3tTL4dTO6NrZ8uTk+uvu/vL0//f7//n///z///3+/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v/6//76//76/v78/f/++///+v//+v//+////v/////9//v1//vx//zs//vl//Pb/+rRuoJppmJLl085n1Q/qFpGo1JBnks7oE0/jjwwiz0whj4yfz0veD0vdD8vc0IzdUU3cj03cz46dD06dD87dUA8dUA8dD87cT46c0A8ckE8cj87cUA7cD86b0A6bz45bz45azkybTgybDozbDs0bDs0aDwzZzwzZD4zYz8zXj4xZEc5Y0c5VD0tTjkoTTgnQDEeWFI8UE43S0kwT0syXVk+aWVKZWFEVlU3WFg8XmFEcHRbeoBmZGxVPkoyLTkjMj4qNDwvNTsxNTsxNDowNDowMzkvMzkvMzkvMzkvMzkvMzkvMjguMjguMTctMTctMDYsMTYwMTYwMDUvMDUvMDUvLzQuLzQuLzQuLDErLDErLDErLDErLDErLDErLDErKzAqLjUuLjUuLTQtLTQtLTQtLTQtLjUuLzYuKzIqLTQsMTgwNT0yOUE2PUU4QEg9P0o8N0IyNkEwMz4tMT0pMz8rOUUvQk44SVU/T1tHV2NPXWhXWmVVTFdJPEY7LzkwKTMrKS8rKC4sJy0raGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXa2VXbGVbbGVbbWRdbmVcbWdba2hXb25aamxWa25ZbHNhanRpcXx4iZSWo660vsfM0tvg6/D09/z//f7//v////3+/v35///6/v70+/vv+Pnr9Pfm8fTh7PHd6O3W6u/R5uvL5OfK5ubO4+DN39nL3tTL39TO59nY7d/f9ufq++/z//T4//f7//r+//z///78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/f/6/f/6/f/8/f7//v3///z///z///v///z///z///v5//z1//7x///t//vl//LZ/+vR4LGXp3VcklxEllpCmllDmlZDmlNBjkc1i0Y2iEU0g0QzfEMyd0Iwc0Avbz4vdUA4dD85dT47dUA6dD87cD43cD05dEI7cT46cD84cD86bz43bz45bT42bj04bT42azw0bD01bT42az82aj82Z0E2ZUE1YkI1ZEc5W0EyXkc3X0o5Tz4sRjckRzglPzciTEw0SEwzREcsQ0YrTU0xW1s/YmFDYGFCWlo+ZGdKc3dec3lfWGBJOkQsLzslN0MvNj4xNz0zNjwyNjwyNjwyNTsxNTsxNTsxNTsxNTsxNTsxNDowNDowNDowMzkvMzkvMjcxMjcxMjcxMTYwMTYwMTYwMDUvMDUvLjMtLjMtLTIsLTIsLDErLDErKzAqKzAqKjEqKjEqKTApKTApKjEqKjEqKzIrLDMsLjUuLjUtLjUtMDcvNDszOkI3P0Y+Qko/O0Y4OkU1N0IxND8uMz8rNkIuPEgyQEw2TFhEU19LWWRUV2JSTFZLPUc8MTsyKzUtKzEtKjAsKS8taGVWaGVWaGVWaGVWaGVWaGVWaGVWaGVWaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXa2VXbWRbbWRbbWRdbmVcbWdba2hXbm1ZaW1Wam9Za3RhaXVpcX15ipiZpbK4v8rQ1N3i7fL29/z//P3//f/+//3+/v35///3/f3z+vru+Pnr9Pfk8PPe6e7Y5evR4ufJ3uHC3d3B3t7G3tvI3dfL4NXP5NnX7uLk8+fr+u7y//T4//f7//n8//r9//39//78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/f/8+v/8+v/8+//+/v7+//z///r///n///j///n///r///r6//34///2///z/f/v//rm//Pd//jg/+zV47+nrIJqh1lChlI8kltGl11JjVM/f0YydT4pcj4pdEEsdEQwdkU2cT80bjwzcTw2dEI5dEI7bz81cUA5eEg+bj02bT40bT42bT40bD01aj4zbD01aj41Zz81Z0E2aEI3Z0M3ZUM3Y0M2YUQ2XkQ1Yks7VUIxWkk3YFNAUkczRDwnRT0oRkErQkYtQkguQUUqPEAlP0IlTE8yX2BBaWpLYWFFbnFUdnphZ21TSk85NT0mNT0oPUYzOT8zOD40OD40OD40Nz0zNz0zNz0zNz0zOD40OD40OD40Nz0zNz0zNz0zNjwyNjwyNTo0NTo0NDkzNDkzMzgyMzgyMzgyMzgyMDUvMDUvLzQuLjMtLTIsLDErKzAqKzAqKS4qKS4qKS4qKS4qKS4qKi8rKzAsLDEtMTYyLzQuLDErLDErMDUvNjs0PUI8QUhAQEs9Pks6PEk3OEUzNEEtMj8rM0EqNUMsRFE9S1hEUV5NUV5NSFRIPEg8Mj40LjgvLTQtLTQtLDIuZ2RVZ2RVaGVWaGVWaGVWaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXa2VXbWRbbWRbbWRdbWZcbWdbamlXa21YaW1Wam9ZanNgaHRobn14iJiYprO5v8rQ09zj6/D29vv//P3//f/+///9//76/v72/f3x+vvt+Pnp9Pfk7/Pc5+zV4+fO3N/A19q71ta82dfC3dfH3tfN5dvZ7ODg+Ozw+/D2//X7//n+//r9//v7//v7//38//78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/f/8+v/++P/++//+/v7+//z+//r///n///j+//r9//n8//n5//36///6///4+//1/P7w///v//vr//Hf//Dd/+/a8dK9tJB6eVM+dEo0dUgzdkk0ek04fk87eUw3bkEuZTcne01AdEU7cUI4c0Q6b0M4ZzswZDgtZz0xaT8zaT8zaT8zZz8zZz8zZj4yZj4yZT8yY0E1YkI1YEM1YEQ2X0M1W0Q0WkU0V0QzWEk2T0IvXFQ/b2lTY15ITUs0SUcwSUszPkQqP0gtQEYqPEImPEEjRUosWFk6ZGVGbW1ReHhcdHZeW19GQUQvNjslOj8rPkIxOT8zOT81OT81OD40OD40OD40Nz0zNz0zOT81OT81OD40OD40OD40OD40OD40OD40Nzw2Nzw2Nzw2Njs1Njs1Njs1NTo0NTo0MzgyMzgyMjcxMDUvLzQuLTIsLDErLDErKzAsKzAsKzAsKzAsKzAsLDEtLTIuLTIuMDUxLjMvKzAsKzAqLTIuMzgyOD05O0I6QUw+QE07QE07PUo2OEUxNEEtMT8oMT8oPUo2Qk87SVZESldGRFBCO0c7Mj40LjowLDYuLjUuLTQtZ2RVZ2RVZ2RVaGVWaGVWaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXbGRXbWRbbWRbbWRdbWZcbWdbamlXbG5ZaW5XaXFaZ3NfZHJlanl0hZWVo7K3vcjO0tvi6u/19Pn9+/z//f/+///9///6///4///z/v/x/P3r9/rl8fXe6O3W4+fM2dy/1dW50tC51NG+2tTI4NnR6uDf9Ont/vP5//f8//v///3///7///78//76//76/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/f/++v//+v//+////v7+//3+//z8//v8//v6//r4//n3//r4//z5///7///7/f/6/f75+fTu//72//30//zz//vu//fn++bV6dLAz7ShtpqFlHVhd1ZDbEk2bUg2ck09dVBAbUY3akM0Z0Iya0Y2bkk5bko6b0s7cEw8ZUExY0IxY0IxY0IxY0IxY0IxYkMxYEMzXUY2XEc2XUg3Wkc2Wkc2V0g1VEc0UkczUEgzT0kzZmRNfn5mcnJaVlhASkw0R00zPEUqPEYrP0grQUcrQUYoQ0gqTU4vVFU2eHdbe3pebm5WVVU9Q0IuP0EsP0AuOz4tOz4zOT81OT81OD40OD40Nz0zNz0zNz0zOD40OD40OD40OD40OD40OD40OD40OD40OT44OT44OT44OT44OD03OD03Nzw2Nzw2Njs1Njs1NTo0MzgyMjcxMDUvLzQuLzQuLTIuLTIuLDEtLDEtLDEtLDEtLTIuLTIuLTEwLDAvLDAvLTIuLjIxMTYyMzc2NDs0O0c5PUw5QE88QE86PEs2N0YvNEMsMkEqNkUuOkk0QE88QlA/P00+OEY3MT8yLTktLDYtLTQsLDMrZmNUZ2RVZ2RVaGVWaGVWaWZXamdYamdYaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXbGRXbGRXbWRbbWRbbWRdbWZcbWdbamlXa21YaW5XaXFaZ3NfYnBjZ3hygpSUo7K3wMvR1N3k6/D29fr++/z//f/+///9///6///4///0///z///v+v3o8/fg6e/V4+fM19q90dG1zcu0zsu61s/F3tfR7OLj9+7z//b+//r///3///7////9/v/6/v/5/v/6/v/6/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v7+/f7//f7//f7//f/+/f/8/v/6/v/5///3/f3z/f31/v34/v35//78/v7+//3///7//vn///z///v8+/bz//jy//30//7x//7t//rp//Pg9+TT59K/1Lqpup+On4N1j3JkfF1LfV5MdFVDYkUzWDspWTwqWz4sWD0qYEUyYEUyYEUyYEczYEczYEczYEczXkk0XEs3XE06XE06Wk06WE05VU04U003UUw2Tkw1UVE5amxUfIBnbXFYU1k/RkwyPkcsPEYrPEYrP0grREouRUosREcqSEkqTE0ueXhcdHNXZmRNVFI7TEk2S0o2RkUzPD0tPD80OkA2OT81OT81OD40OD40OD40OD40Nz0zNz0zOD40OD40OD40OT81OT81OT81O0A6Oj85Oj85Oj85OT44OT44OT44OT44OT44OD03Nzw2Njs1NTo0NDkzMzgyMzgyLzQwLjMvLTIuLDEtKzAsKzAsKzAsKzAsKy8uLDAvLTEwLjIxLzMyLzMyLzMyLjUuNEAyN0YzPUw3QE86P043PEs0OUgxOEcwNUQtOEcwPEs2Pk06PEo5N0U2MT8yLTktKzUsLTQsLDMrZmNUZmNUZ2RVaGVWaWZXaWZXamdYamdYaWZXaWZXaWZXaWZXaWZXaWZXaWZXaWZXbGRXbGRXbWRbbWRbbWRdbWZcbWdbamlXamxXaG1WaHJaZnNfY3FkaHlzhZeXpbe7x9LY2uPq8PX7+P3//P3//f/+///9//75///3///z///w/f7s+Pvm8PTd5OrQ3uLH1dW5zsyzycSwysS00Mm/2tLP6eDj9u3y//f///r///3///7////9/f/6/P/4/P/4/f/6/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v7+//z///z//v3//f/++v/6+P/5+P/1+P/z+P/z+P/1/P/4/f/6//3+//z///z///v//ff///r///z///3///7//v37+/vz+vjs///x///v///v//7t//3t//bn/+7i/erb+uPR/+bQ48q0pY94dF5HZU84Y002XEgwXkoyXEoyXEoyXUszXUszXkw0Xkw0XE02WU44WFA7WFA7VlA6VU85U044UE43Tk42TU83UFQ7YGZMZm9UVV5DRU80QUswPEYrP0kuP0kuQ0wvSE4ySE0vR0otT1AxWVg6cW1Sa2dMYVxGW1ZAWVRBVFE+TUo5QkMzPkE2O0E3O0E3O0E3OkA2OkA2OkA2OT81OD40OD40OD40OT81OT81OkA2OkA2OkA2O0A6O0A6O0A6Oj85Oj85OT44OT44OT44Oj85Oj85Oj85OT44OD03OD03OD03Nzw2NDk1Mzg0MTYyLzQwLTIuLDEtLDAvKy8uLDAvLTEwLTEwLjIxLjIzLjIzLTEyLDIuKzkqL0AtNkgyPE44PU83PE42OkwyOkwyNUcvN0kxOkw2PE06O0w6Nkc3MEAzLTsuLDYtLTQsLDMrY2RUY2RSZGVVZ2ZUaGZXaWdYaWdYamhZaGZXaWZXaWZXaWZXaWZXaWZXaWZXa2VXa2VXa2VXbWVabGVbbWRdbWZca2dbamlXaWtWaG1XaXNbZ3RgZHFna3x2iZudrLvAzdje4Oft9Pn/+v//+////f/8/v/6/v72+vrw+vvt+vvr+Pnn9Pbh6+3X3+PK2dzB09G4zMexxb6sxr6xzMO81s7L5t3g9Ory/vf///r///7///7//v7+/f/6/P/6/P/6/f/8/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78/v78//78//78//78//3+//z///z///3//f/++//8+P/59//39//1+P/2+f/2/P/4///7//79//z///v///r///r///v///z///3//v3/+/38/P77/v/6+fry+/vx/frx/vrv//ns//vs//3v//3s//Db//vi7NzDno51YFA3UkIpWEgvWEguW00zW00zWk40Wk40W081W081XFA2W1E4VU83VE85VE85UU84UE43Tk42S001SU00Sk41TFI4U1xBUFk+QEksPEUoQUwuP0osRE0wRU4xSlA0TVI0S04xTEwwWVk9a2pOaGRJYl5FXlpBX1pEYFtHWlVBUU86S0o4QUI0QEI1QEI1PkE2PkE2PkE2PUA3PUA3OT81OT81OT81OkA2OkA2OkI3OkI3O0M4O0A5O0A5O0A6Oj84Oj85Oj84OT44OT43O0A6O0A5O0A6O0A5Oj85Oj84Oj85Oj85OD84Nz05NDs0MzgyMTYwLzQuLjMvLjMvLjIxLjIxLTIuLDIuLDMsLDMrLDMrKTYlJDYeKj4iMkYrOEwzO082PE42O001O001OEoyOUszO001PU83PE44N0g1MUIwLjwtLTcuLjUtLTQsXWVQXmZPX2dSYmdRZGlVZmlWZ2pXaWpYZmdVaGdVaGVWaGVWamRWa2VXbGZabGZYbGZYa2hZbWdba2dcbWZeamZdaWVaZ2VWZ2hWZmtVZW5ZYm9dZHFodISBlqisuMfO0tvi5Onv8vf79/z/+Pz7/P75/P/4/P7z9/fr+frq+Pfl8vHf7u3Z6+rW4d/K19K+18+8y8CuvbSlvbOpwrexzMLB29LX6uDo+vP7/Pb//vv///3//v3//P3//P79/P79/v7+/v7+/v7+/v7+/v7+/v7+//78//78//78//78/v35/v35//z5//36//77//77//7///3+//z9//3+/////v/9/f/8+/34///7/P33//34//76//34//r2//f0//n5//r///z///3///7//////v78/f/+/P79//////////78//75//71//7w//3q//3m+vTc//rg5+DGj4huVU4yV00yVEsuU0orV04xV04xVU4xVU4xVE8yVE8yVE40U080UU00Uk41UU82UFA2TU83S082SE02R0w1SlA2Rk80QUotPUYpQEcoREsqRk0rRUwqUFY0UFM0S04vSUwvVFQ4YmJGY2NJWlpAW1lAXFpBXVtCXVtCW1lAWFY9VVM6U1E4SEYxR0QxRUIxQkAxQT8yPj4yPz81PkA1Oz41OT81OT81OUE2OUE0OEM1OEM1OUM4OkI3OUE2OUA4OEA1OD83OUE2OUA4OkI3OkE5OkI3OkE5OkI3O0I6PEQ5PUQ8PkU9OEI6OEI6OEI5OEA1Nj4xNDwvMzkvMjcxLjQwLzUxMDcwLjgtLjspMEAmNkYpN00nO1YrOlcrO1UwO1Q0O1I4PVA8Pk88Pk88Okw2QFI4RVc9Rlk9RFg9QFQ7NUgyKzwqLDYrLTQsKzIqWmZOW2dPXmhQX2lRYmpTY2tUZ2xYaGtYaGlXZ2hWaWZXaWZXa2VXbGZYbWVabWdZbWdZa2hZa2dba2dcamVfamZdaGZaZmdXaGlXZ2xWZm9cZXJhandueoqJnKuyusjR0Nng4+js8vf7+P7++f76+v/4+/71+f3v+Pnr9/jo9fTi7eza6ebT5eLP3NfE0su5yr+twbSkua2hvK+mwbayy8HA29DW5t/m+/P+/ff//vv///3//v3//fz//P3//P3//v7+/v7+/v7+/v7+/v7+/v7+//78//78//78//78//36//z5//z5//36//35//76//79//38//z9//3+//7///7///3+/fv8//79//77//z6//jz+O3n8uXd9ujf+/Dq//r9//z///3////9///9/v78/f/+/P3//v3//v3///3///78//33///w//7o///k+vbd/fvi5ODHi4dsUk0wU04xUksuUUsrVU8vVU8vVE8xVE8xU08yU08yUVA0UU82UU0yUE8zUE41TlE2TU83SlA2SE02RU01SFE2Rk80QksuP0gpQ0goR00rSlAsS1EtT1MwUFQxVlo5XmFCX2JDWl1AVlY8VVU9VlY+V1U+WFY9WVc+WVc+WFc7V1Y6WFQ5UUszUEo0TEc0SUQxREEyQkAzQT8zPkA1PD01OT81OT81OUE2N0I0OEM1N0M1N0M1OkI3OkI3OUE2OEA1OEA1OUE2OkI3OkI3OkI3OkI3OkI3OkI3O0M4PEQ5PUU6PEY7PUc/PEg+PEY7O0Y2PEQ1OkIzOT8zOD02Nz43Nj02Mz01Mj4wNEMsOUwsQlkvR2ExUW87TW07TGk9RmE+Qlk/PFI9PE09Oks5PU85RFY8S15CTmFDTGBESFxBOlE3MUQwKzUqKzIqKTAoWmZOW2dPXGhQYGpSYmpTZGxVZ2xYaWxZaWpYaWpYa2hZa2hZbWdZbWdZb2dcbmhabWdZa2hZa2dbamZbamVfamZdaGZaZmdXaGlXZWpUZG1aZ3Rjb3xzf4+OnayztsTNzdbd3ubp8fb6+P7++v79+f74+Pvy9Pjq8/Tm8PHh6unX4eDO3NnG19TB0Mu4x8Cuv7OjvbCgvLCkw7auy8C+1cvM49je6+Tr/PT//ff//vv///3//v3//fz//P3//f/+/v7+/v7+/v7+/v7+/v7+/v7+//78//78//78//78//36//36//z5//z5//z4//z4//38//z7//v8//z9//7///7///3+/vz9//79//77//37/PPu6t/Z4tXN693U9+zm//r9//z///3////9///9/v78/f/+/P3//v3//v3///7////9//71//7t//3n//7j+/fe/vzj49/GiYVqUEsuUk0wUUotUUotVU8vVU8vVVAyVVAyVFAzU08yUVA0UE8zUU0yT04yUE41TVA1TU83SlA2SU43R083SFE2Rk80Q0wvQ0wtR0wsS1EvT1UxU1k1UVkyWGA5anBMeX9dcXZWWV5ATE80TVA1UVE5UVE5UlA5U1E4VFI5VlQ7WVU8WlY9WFI8VlA6Uk06Tkk2SEU2REI1Q0E1P0E2PD01OT81OkA2OUE2N0I0OEM1N0M1N0M1OkI3OkI3OUE2OUE2OUE2OUE2OkI3OkI3OkI3OkI3OkI3OkI3O0M4PEQ5PkY7PEY7P0lBPkpAP0k+P0o6QEg5PkY3PkQ4PUI7PkU+PEM8N0E5NUEzOUgxQlU1UGc9WHJCYH5KXHxKWHVJTmlGRFtBOU86Nkc3NEUzPE44RVc9TmFFU2ZIU2dLTmJHQFc9Nkk1LzkuLzYuLTQsWmZOW2dPXGhQXmpSYmxUZW1WaG1ZaW5aa2xaa2xabGpbbGlabmhabmhacGhdb2lbbGlaa2hZa2dbamZbaWReaWVcaGZaZ2hYZmdVYmdRYWpXZXJhb3xzfo6NlqWsq7nCx9DX2uHn7vP39vz8+Pz79fr08/bt7vLk6erc4+TU3NvJ09LAzsu4ycazw76rvbakw7enx7mszcG11snB39TS6N7f8+ju+PH4/fX//vj///z///z//fz//f3//P79/f/+/v7+/v7+/v7+/v7+/v7+/v7+//78//78/v37//78//36//36//36//z5//v3//v3//38//z7/vr7//v8//3+//7///3+/vz9//z7//77//37/fTv7eLc5tnR8OLZ/PHr//r9//z///3+///9///7/v/6/f/+/P3//v3//v3///7////9//71//7t//zm//zj/vnj//7n5N/JioZtUEowUk0wU0wvU0wvVU8vVU8vVVAyVlEzVFAzU08yUE8zT04yUEwxT04yT000TE80TU83S1E3Sk84SFA4SlM4R1A1R1AzSVIzTlMzUFY0V105XGQ9Z3JIdIFVh5JqkJp1h45sbnVUWmFCU1c8TU83Tk42TU01Tkw1T002UlA5V1I8WVQ+WlQ+WFI8VE88UUw5S0g5R0U4RUM3QUM4PT42OkA2OkA2OUE2N0I0N0I0NkI0NkI0O0M4OkI3OkI3OUE2OUE2OkI3OkI3O0M4O0M4OkI3OkI3O0M4PEQ5PUU6PkY7PUc8PUc/PUk/Pkg9Pkk5P0c4PkY3PkQ4PUI7PUQ9O0I7NkA4NUEzOkkyRFc3Umk/W3VFXHpGWHhGVHFFSWRBPlU7MkgzL0AwLj8tNkgyQFI4TF9DUmVHU2dLT2NIQFc9Nkk1MTswMDcvLTQsWWdOWmhPXGhQXmpSYmxUZW1WaW5aam9bbW5cbG1bbWtcbWpbb2lbb2lbb2ldb2lbbGlaa2hZamZaaWVaaWReaWVcaWdbZ2hYZ2hWY2hSYWpXZXJhb3xze4uKkJ+morC5wcvU1N3k6fH08vr89Pr68fby7fDn6Oze4uPV2tvL0tG/zMm4ycSxw76rv7imvLOiyr6u08W43NDE5tnR7eLg9uzt//T6//n///f///r///z///z//fz//Pz+/P79/v///v7+/v7+/v7+/v7+/v7+/v7+//78//78/v37/v37//36//36//36//z5//r2/vn1//38//v6/fn6/vr7/vz9//3+//7///3+//z7//36//z6//jz9+zm8uXd+Orh//Tu//r9//z///3+///9///7/v/6/f/+/P3//fz//v3///7////9//71//3s//vl/vrh//zm///p5+LMjIhvUkwyVE8yVE0wVU4xVU8vVU8vVlEzVlEzVVE0U08yT04yTk0xUEwxTk0xTkwzS04zTE42S1E3TFE6SlI6TFU6SVI3SlM2T1g5VFk5VVs5XWM/Zm5HgpJjkqZzn7CDm6p/lKB6iJRwcntcXGJGTFA3TE42TEs2TEo1TEo1UUw4VE06VlA6V1E7VlA6U047UUw5TUo7SUc6R0U5Q0U6PT42OkA2OkA2OUE2N0I0N0I0NkI0NkI0O0M4O0M4OkI3OkI3OkI3OkI3O0M4O0M4O0M4O0M4O0M4O0M4PEQ5PUU6PkY7PUc8PUc/PEg+PUc8PUg4P0c4PUU2PUM3PUI7OkE6OUA5NkA4NUEzOUgxQlU1TmU7VnBAVnRAU3NBUG1BRWA9OVA2LUMuKzwsKzwqMUMtPE40SFs/UGNFUmZKTmJHQFc9NUg0LDYrKzIqJy4mClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdGVzdGltYWdlcy90ZXN0b3JpZzEyLmpwZyBiL3Rlc3RpbWFnZXMvdGVzdG9yaWcxMi5qcGcKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg2MWFmZjkuLjAwMDAwMDAKLS0tIGEvdGVzdGltYWdlcy90ZXN0b3JpZzEyLmpwZworKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Rlc3RpbWFnZXMvdmdsXzU2NzRfMDA5OC5ibXAgYi90ZXN0aW1hZ2VzL3ZnbF81Njc0XzAwOTguYm1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzRlYTY0Li4wMDAwMDAwCi0tLSBhL3Rlc3RpbWFnZXMvdmdsXzU2NzRfMDA5OC5ibXAKKysrIC9kZXYvbnVsbApCaW5hcnkgZmlsZXMgZGlmZmVyCmRpZmYgLS1naXQgYS90ZXN0aW1hZ2VzL3ZnbF82NDM0XzAwMThhLmJtcCBiL3Rlc3RpbWFnZXMvdmdsXzY0MzRfMDAxOGEuYm1wCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNWU3N2I3Li4wMDAwMDAwCi0tLSBhL3Rlc3RpbWFnZXMvdmdsXzY0MzRfMDAxOGEuYm1wCisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvdGVzdGltYWdlcy92Z2xfNjU0OF8wMDI2YS5ibXAgYi90ZXN0aW1hZ2VzL3ZnbF82NTQ4XzAwMjZhLmJtcApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDFlMzViNS4uMDAwMDAwMAotLS0gYS90ZXN0aW1hZ2VzL3ZnbF82NTQ4XzAwMjZhLmJtcAorKysgL2Rldi9udWxsCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3dpbi9qY29uZmlnLmguaW4gYi93aW4vamNvbmZpZy5oLmluCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDM1MTIxLi4wMDAwMDAwCi0tLSBhL3dpbi9qY29uZmlnLmguaW4KKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi0vKiBqY29uZmlnLnZjIC0tLSBqY29uZmlnLmggZm9yIE1pY3Jvc29mdCBWaXN1YWwgQysrIG9uIFdpbmRvd3MgOTUgb3IgTlQuICovCi0vKiBzZWUgamNvbmZpZy50eHQgZm9yIGV4cGxhbmF0aW9ucyAqLwotCi0jZGVmaW5lIEpQRUdfTElCX1ZFUlNJT04gQEpQRUdfTElCX1ZFUlNJT05ACi0jZGVmaW5lIExJQkpQRUdfVFVSQk9fVkVSU0lPTiBAVkVSU0lPTkAKLSNkZWZpbmUgTElCSlBFR19UVVJCT19WRVJTSU9OX05VTUJFUiBATElCSlBFR19UVVJCT19WRVJTSU9OX05VTUJFUkAKLSNjbWFrZWRlZmluZSBDX0FSSVRIX0NPRElOR19TVVBQT1JURUQKLSNjbWFrZWRlZmluZSBEX0FSSVRIX0NPRElOR19TVVBQT1JURUQKLSNjbWFrZWRlZmluZSBNRU1fU1JDRFNUX1NVUFBPUlRFRAotCi0vKgotICogRGVmaW5lIEJJVFNfSU5fSlNBTVBMRSBhcyBlaXRoZXIKLSAqICAgOCAgIGZvciA4LWJpdCBzYW1wbGUgdmFsdWVzICh0aGUgdXN1YWwgc2V0dGluZykKLSAqICAgMTIgIGZvciAxMi1iaXQgc2FtcGxlIHZhbHVlcwotICogT25seSA4IGFuZCAxMiBhcmUgbGVnYWwgZGF0YSBwcmVjaXNpb25zIGZvciBsb3NzeSBKUEVHIGFjY29yZGluZyB0byB0aGUKLSAqIEpQRUcgc3RhbmRhcmQsIGFuZCB0aGUgSUpHIGNvZGUgZG9lcyBub3Qgc3VwcG9ydCBhbnl0aGluZyBlbHNlIQotICogV2UgZG8gbm90IHN1cHBvcnQgcnVuLXRpbWUgc2VsZWN0aW9uIG9mIGRhdGEgcHJlY2lzaW9uLCBzb3JyeS4KLSAqLwotCi0jZGVmaW5lIEJJVFNfSU5fSlNBTVBMRSAgQEJJVFNfSU5fSlNBTVBMRUAgICAgICAvKiB1c2UgOCBvciAxMiAqLwotCi0jZGVmaW5lIEhBVkVfVU5TSUdORURfQ0hBUgotI2RlZmluZSBIQVZFX1VOU0lHTkVEX1NIT1JUCi0vKiAjZGVmaW5lIHZvaWQgY2hhciAqLwotLyogI2RlZmluZSBjb25zdCAqLwotI3VuZGVmIF9fQ0hBUl9VTlNJR05FRF9fCi0jZGVmaW5lIEhBVkVfU1REREVGX0gKLSNkZWZpbmUgSEFWRV9TVERMSUJfSAotI3VuZGVmIE5FRURfQlNEX1NUUklOR1MKLSN1bmRlZiBORUVEX1NZU19UWVBFU19ICi0jdW5kZWYgTkVFRF9GQVJfUE9JTlRFUlMJLyogd2UgcHJlc3VtZSBhIDMyLWJpdCBmbGF0IG1lbW9yeSBtb2RlbCAqLwotI3VuZGVmIElOQ09NUExFVEVfVFlQRVNfQlJPS0VOCi0KLS8qIERlZmluZSAiYm9vbGVhbiIgYXMgdW5zaWduZWQgY2hhciwgbm90IGludCwgcGVyIFdpbmRvd3MgY3VzdG9tICovCi0jaWZuZGVmIF9fUlBDTkRSX0hfXwkJLyogZG9uJ3QgY29uZmxpY3QgaWYgcnBjbmRyLmggYWxyZWFkeSByZWFkICovCi10eXBlZGVmIHVuc2lnbmVkIGNoYXIgYm9vbGVhbjsKLSNlbmRpZgotI2RlZmluZSBIQVZFX0JPT0xFQU4JCS8qIHByZXZlbnQgam1vcmVjZmcuaCBmcm9tIHJlZGVmaW5pbmcgaXQgKi8KLQotLyogRGVmaW5lICJJTlQzMiIgYXMgaW50LCBub3QgbG9uZywgcGVyIFdpbmRvd3MgY3VzdG9tICovCi0jaWYgIShkZWZpbmVkKF9CQVNFVFNEX0hfKSB8fCBkZWZpbmVkKF9CQVNFVFNEX0gpKSAgIC8qIGRvbid0IGNvbmZsaWN0IGlmIGJhc2V0c2QuaCBhbHJlYWR5IHJlYWQgKi8KLXR5cGVkZWYgc2hvcnQgSU5UMTY7Ci10eXBlZGVmIHNpZ25lZCBpbnQgSU5UMzI7Ci0jZW5kaWYKLSNkZWZpbmUgWE1EX0ggICAgICAgICAgICAgICAgICAgLyogcHJldmVudCBqbW9yZWNmZy5oIGZyb20gcmVkZWZpbmluZyBpdCAqLwotCi0jaWZkZWYgSlBFR19JTlRFUk5BTFMKLQotI3VuZGVmIFJJR0hUX1NISUZUX0lTX1VOU0lHTkVECi0KLSNlbmRpZiAvKiBKUEVHX0lOVEVSTkFMUyAqLwpkaWZmIC0tZ2l0IGEvd2luL2pjb25maWdpbnQuaC5pbiBiL3dpbi9qY29uZmlnaW50LmguaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxMzFiZjUuLjAwMDAwMDAKLS0tIGEvd2luL2pjb25maWdpbnQuaC5pbgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLSNkZWZpbmUgVkVSU0lPTiAiQFZFUlNJT05AIgotI2RlZmluZSBCVUlMRCAiQEJVSUxEQCIKLSNkZWZpbmUgUEFDS0FHRV9OQU1FICJAQ01BS0VfUFJPSkVDVF9OQU1FQCIKLQotI2lmbmRlZiBJTkxJTkUKLSNpZiBkZWZpbmVkKF9fR05VQ19fKQotI2RlZmluZSBJTkxJTkUgaW5saW5lIF9fYXR0cmlidXRlX18oKGFsd2F5c19pbmxpbmUpKQotI2VsaWYgZGVmaW5lZChfTVNDX1ZFUikKLSNkZWZpbmUgSU5MSU5FIF9fZm9yY2VpbmxpbmUKLSNlbHNlCi0jZGVmaW5lIElOTElORQotI2VuZGlmCi0jZW5kaWYKZGlmZiAtLWdpdCBhL3dpbi9qcGVnNjItbWVtc3JjZHN0LmRlZiBiL3dpbi9qcGVnNjItbWVtc3JjZHN0LmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggNjQ5OTMxNi4uMDAwMDAwMAotLS0gYS93aW4vanBlZzYyLW1lbXNyY2RzdC5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotRVhQT1JUUwotCWpjb3B5X2Jsb2NrX3JvdyBAIDEgOyAKLQlqY29weV9zYW1wbGVfcm93cyBAIDIgOyAKLQlqZGl2X3JvdW5kX3VwIEAgMyA7IAotCWppbml0XzFwYXNzX3F1YW50aXplciBAIDQgOyAKLQlqaW5pdF8ycGFzc19xdWFudGl6ZXIgQCA1IDsgCi0JamluaXRfY19jb2VmX2NvbnRyb2xsZXIgQCA2IDsgCi0JamluaXRfY19tYWluX2NvbnRyb2xsZXIgQCA3IDsgCi0JamluaXRfY19tYXN0ZXJfY29udHJvbCBAIDggOyAKLQlqaW5pdF9jX3ByZXBfY29udHJvbGxlciBAIDkgOyAKLQlqaW5pdF9jb2xvcl9jb252ZXJ0ZXIgQCAxMCA7IAotCWppbml0X2NvbG9yX2RlY29udmVydGVyIEAgMTEgOyAKLQlqaW5pdF9jb21wcmVzc19tYXN0ZXIgQCAxMiA7IAotCWppbml0X2RfY29lZl9jb250cm9sbGVyIEAgMTMgOyAKLQlqaW5pdF9kX21haW5fY29udHJvbGxlciBAIDE0IDsgCi0JamluaXRfZF9wb3N0X2NvbnRyb2xsZXIgQCAxNSA7IAotCWppbml0X2Rvd25zYW1wbGVyIEAgMTYgOyAKLQlqaW5pdF9mb3J3YXJkX2RjdCBAIDE3IDsgCi0JamluaXRfaHVmZl9kZWNvZGVyIEAgMTggOyAKLQlqaW5pdF9odWZmX2VuY29kZXIgQCAxOSA7IAotCWppbml0X2lucHV0X2NvbnRyb2xsZXIgQCAyMCA7IAotCWppbml0X2ludmVyc2VfZGN0IEAgMjEgOyAKLQlqaW5pdF9tYXJrZXJfcmVhZGVyIEAgMjIgOyAKLQlqaW5pdF9tYXJrZXJfd3JpdGVyIEAgMjMgOyAKLQlqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcyBAIDI0IDsgCi0JamluaXRfbWVtb3J5X21nciBAIDI1IDsgCi0JamluaXRfbWVyZ2VkX3Vwc2FtcGxlciBAIDI2IDsgCi0JamluaXRfcGh1ZmZfZGVjb2RlciBAIDI3IDsgCi0JamluaXRfcGh1ZmZfZW5jb2RlciBAIDI4IDsgCi0JamluaXRfdXBzYW1wbGVyIEAgMjkgOyAKLQlqcGVnX0NyZWF0ZUNvbXByZXNzIEAgMzAgOyAKLQlqcGVnX0NyZWF0ZURlY29tcHJlc3MgQCAzMSA7IAotCWpwZWdfYWJvcnQgQCAzMiA7IAotCWpwZWdfYWJvcnRfY29tcHJlc3MgQCAzMyA7IAotCWpwZWdfYWJvcnRfZGVjb21wcmVzcyBAIDM0IDsgCi0JanBlZ19hZGRfcXVhbnRfdGFibGUgQCAzNSA7IAotCWpwZWdfYWxsb2NfaHVmZl90YWJsZSBAIDM2IDsgCi0JanBlZ19hbGxvY19xdWFudF90YWJsZSBAIDM3IDsgCi0JanBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zIEAgMzggOyAKLQlqcGVnX2NvbnN1bWVfaW5wdXQgQCAzOSA7IAotCWpwZWdfY29weV9jcml0aWNhbF9wYXJhbWV0ZXJzIEAgNDAgOyAKLQlqcGVnX2RlZmF1bHRfY29sb3JzcGFjZSBAIDQxIDsgCi0JanBlZ19kZXN0cm95IEAgNDIgOyAKLQlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MgQCA0MyA7IAotCWpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEAgNDQgOyAKLQlqcGVnX2ZkY3RfZmxvYXQgQCA0NSA7IAotCWpwZWdfZmRjdF9pZmFzdCBAIDQ2IDsgCi0JanBlZ19mZGN0X2lzbG93IEAgNDcgOyAKLQlqcGVnX2ZpbGxfYml0X2J1ZmZlciBAIDQ4IDsgCi0JanBlZ19maW5pc2hfY29tcHJlc3MgQCA0OSA7IAotCWpwZWdfZmluaXNoX2RlY29tcHJlc3MgQCA1MCA7IAotCWpwZWdfZmluaXNoX291dHB1dCBAIDUxIDsgCi0JanBlZ19mcmVlX2xhcmdlIEAgNTIgOyAKLQlqcGVnX2ZyZWVfc21hbGwgQCA1MyA7IAotCWpwZWdfZ2VuX29wdGltYWxfdGFibGUgQCA1NCA7IAotCWpwZWdfZ2V0X2xhcmdlIEAgNTUgOyAKLQlqcGVnX2dldF9zbWFsbCBAIDU2IDsgCi0JanBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgQCA1NyA7IAotCWpwZWdfaHVmZl9kZWNvZGUgQCA1OCA7IAotCWpwZWdfaWRjdF8xeDEgQCA1OSA7IAotCWpwZWdfaWRjdF8yeDIgQCA2MCA7IAotCWpwZWdfaWRjdF80eDQgQCA2MSA7IAotCWpwZWdfaWRjdF9mbG9hdCBAIDYyIDsgCi0JanBlZ19pZGN0X2lmYXN0IEAgNjMgOyAKLQlqcGVnX2lkY3RfaXNsb3cgQCA2NCA7IAotCWpwZWdfaW5wdXRfY29tcGxldGUgQCA2NSA7IAotCWpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsIEAgNjYgOyAKLQlqcGVnX21ha2VfZF9kZXJpdmVkX3RibCBAIDY3IDsgCi0JanBlZ19tZW1fYXZhaWxhYmxlIEAgNjggOyAKLQlqcGVnX21lbV9pbml0IEAgNjkgOyAKLQlqcGVnX21lbV90ZXJtIEAgNzAgOyAKLQlqcGVnX25ld19jb2xvcm1hcCBAIDcxIDsgCi0JanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUgQCA3MiA7IAotCWpwZWdfcXVhbGl0eV9zY2FsaW5nIEAgNzMgOyAKLQlqcGVnX3JlYWRfY29lZmZpY2llbnRzIEAgNzQgOyAKLQlqcGVnX3JlYWRfaGVhZGVyIEAgNzUgOyAKLQlqcGVnX3JlYWRfcmF3X2RhdGEgQCA3NiA7IAotCWpwZWdfcmVhZF9zY2FubGluZXMgQCA3NyA7IAotCWpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQgQCA3OCA7IAotCWpwZWdfc2F2ZV9tYXJrZXJzIEAgNzkgOyAKLQlqcGVnX3NldF9jb2xvcnNwYWNlIEAgODAgOyAKLQlqcGVnX3NldF9kZWZhdWx0cyBAIDgxIDsgCi0JanBlZ19zZXRfbGluZWFyX3F1YWxpdHkgQCA4MiA7IAotCWpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgQCA4MyA7IAotCWpwZWdfc2V0X3F1YWxpdHkgQCA4NCA7IAotCWpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uIEAgODUgOyAKLQlqcGVnX3N0YXJ0X2NvbXByZXNzIEAgODYgOyAKLQlqcGVnX3N0YXJ0X2RlY29tcHJlc3MgQCA4NyA7IAotCWpwZWdfc3RhcnRfb3V0cHV0IEAgODggOyAKLQlqcGVnX3N0ZF9lcnJvciBAIDg5IDsgCi0JanBlZ19zdGRpb19kZXN0IEAgOTAgOyAKLQlqcGVnX3N0ZGlvX3NyYyBAIDkxIDsgCi0JanBlZ19zdXBwcmVzc190YWJsZXMgQCA5MiA7IAotCWpwZWdfd3JpdGVfY29lZmZpY2llbnRzIEAgOTMgOyAKLQlqcGVnX3dyaXRlX21fYnl0ZSBAIDk0IDsgCi0JanBlZ193cml0ZV9tX2hlYWRlciBAIDk1IDsgCi0JanBlZ193cml0ZV9tYXJrZXIgQCA5NiA7IAotCWpwZWdfd3JpdGVfcmF3X2RhdGEgQCA5NyA7IAotCWpwZWdfd3JpdGVfc2NhbmxpbmVzIEAgOTggOyAKLQlqcGVnX3dyaXRlX3RhYmxlcyBAIDk5IDsgCi0JanJvdW5kX3VwIEAgMTAwIDsgCi0Janplcm9fZmFyIEAgMTAxIDsgCi0JanBlZ19tZW1fZGVzdCBAIDEwMiA7IAotCWpwZWdfbWVtX3NyYyBAIDEwMyA7IAotCWpwZWdfc2tpcF9zY2FubGluZXMgQCAxMDQgOyAKLQlqcGVnX2Nyb3Bfc2NhbmxpbmUgQCAxMDUgOyAKZGlmZiAtLWdpdCBhL3dpbi9qcGVnNjIuZGVmIGIvd2luL2pwZWc2Mi5kZWYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDlmMzBiMWEuLjAwMDAwMDAKLS0tIGEvd2luL2pwZWc2Mi5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwxMDQgKzAsMCBAQAotRVhQT1JUUwotCWpjb3B5X2Jsb2NrX3JvdyBAIDEgOyAKLQlqY29weV9zYW1wbGVfcm93cyBAIDIgOyAKLQlqZGl2X3JvdW5kX3VwIEAgMyA7IAotCWppbml0XzFwYXNzX3F1YW50aXplciBAIDQgOyAKLQlqaW5pdF8ycGFzc19xdWFudGl6ZXIgQCA1IDsgCi0JamluaXRfY19jb2VmX2NvbnRyb2xsZXIgQCA2IDsgCi0JamluaXRfY19tYWluX2NvbnRyb2xsZXIgQCA3IDsgCi0JamluaXRfY19tYXN0ZXJfY29udHJvbCBAIDggOyAKLQlqaW5pdF9jX3ByZXBfY29udHJvbGxlciBAIDkgOyAKLQlqaW5pdF9jb2xvcl9jb252ZXJ0ZXIgQCAxMCA7IAotCWppbml0X2NvbG9yX2RlY29udmVydGVyIEAgMTEgOyAKLQlqaW5pdF9jb21wcmVzc19tYXN0ZXIgQCAxMiA7IAotCWppbml0X2RfY29lZl9jb250cm9sbGVyIEAgMTMgOyAKLQlqaW5pdF9kX21haW5fY29udHJvbGxlciBAIDE0IDsgCi0JamluaXRfZF9wb3N0X2NvbnRyb2xsZXIgQCAxNSA7IAotCWppbml0X2Rvd25zYW1wbGVyIEAgMTYgOyAKLQlqaW5pdF9mb3J3YXJkX2RjdCBAIDE3IDsgCi0JamluaXRfaHVmZl9kZWNvZGVyIEAgMTggOyAKLQlqaW5pdF9odWZmX2VuY29kZXIgQCAxOSA7IAotCWppbml0X2lucHV0X2NvbnRyb2xsZXIgQCAyMCA7IAotCWppbml0X2ludmVyc2VfZGN0IEAgMjEgOyAKLQlqaW5pdF9tYXJrZXJfcmVhZGVyIEAgMjIgOyAKLQlqaW5pdF9tYXJrZXJfd3JpdGVyIEAgMjMgOyAKLQlqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcyBAIDI0IDsgCi0JamluaXRfbWVtb3J5X21nciBAIDI1IDsgCi0JamluaXRfbWVyZ2VkX3Vwc2FtcGxlciBAIDI2IDsgCi0JamluaXRfcGh1ZmZfZGVjb2RlciBAIDI3IDsgCi0JamluaXRfcGh1ZmZfZW5jb2RlciBAIDI4IDsgCi0JamluaXRfdXBzYW1wbGVyIEAgMjkgOyAKLQlqcGVnX0NyZWF0ZUNvbXByZXNzIEAgMzAgOyAKLQlqcGVnX0NyZWF0ZURlY29tcHJlc3MgQCAzMSA7IAotCWpwZWdfYWJvcnQgQCAzMiA7IAotCWpwZWdfYWJvcnRfY29tcHJlc3MgQCAzMyA7IAotCWpwZWdfYWJvcnRfZGVjb21wcmVzcyBAIDM0IDsgCi0JanBlZ19hZGRfcXVhbnRfdGFibGUgQCAzNSA7IAotCWpwZWdfYWxsb2NfaHVmZl90YWJsZSBAIDM2IDsgCi0JanBlZ19hbGxvY19xdWFudF90YWJsZSBAIDM3IDsgCi0JanBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zIEAgMzggOyAKLQlqcGVnX2NvbnN1bWVfaW5wdXQgQCAzOSA7IAotCWpwZWdfY29weV9jcml0aWNhbF9wYXJhbWV0ZXJzIEAgNDAgOyAKLQlqcGVnX2RlZmF1bHRfY29sb3JzcGFjZSBAIDQxIDsgCi0JanBlZ19kZXN0cm95IEAgNDIgOyAKLQlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MgQCA0MyA7IAotCWpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEAgNDQgOyAKLQlqcGVnX2ZkY3RfZmxvYXQgQCA0NSA7IAotCWpwZWdfZmRjdF9pZmFzdCBAIDQ2IDsgCi0JanBlZ19mZGN0X2lzbG93IEAgNDcgOyAKLQlqcGVnX2ZpbGxfYml0X2J1ZmZlciBAIDQ4IDsgCi0JanBlZ19maW5pc2hfY29tcHJlc3MgQCA0OSA7IAotCWpwZWdfZmluaXNoX2RlY29tcHJlc3MgQCA1MCA7IAotCWpwZWdfZmluaXNoX291dHB1dCBAIDUxIDsgCi0JanBlZ19mcmVlX2xhcmdlIEAgNTIgOyAKLQlqcGVnX2ZyZWVfc21hbGwgQCA1MyA7IAotCWpwZWdfZ2VuX29wdGltYWxfdGFibGUgQCA1NCA7IAotCWpwZWdfZ2V0X2xhcmdlIEAgNTUgOyAKLQlqcGVnX2dldF9zbWFsbCBAIDU2IDsgCi0JanBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgQCA1NyA7IAotCWpwZWdfaHVmZl9kZWNvZGUgQCA1OCA7IAotCWpwZWdfaWRjdF8xeDEgQCA1OSA7IAotCWpwZWdfaWRjdF8yeDIgQCA2MCA7IAotCWpwZWdfaWRjdF80eDQgQCA2MSA7IAotCWpwZWdfaWRjdF9mbG9hdCBAIDYyIDsgCi0JanBlZ19pZGN0X2lmYXN0IEAgNjMgOyAKLQlqcGVnX2lkY3RfaXNsb3cgQCA2NCA7IAotCWpwZWdfaW5wdXRfY29tcGxldGUgQCA2NSA7IAotCWpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsIEAgNjYgOyAKLQlqcGVnX21ha2VfZF9kZXJpdmVkX3RibCBAIDY3IDsgCi0JanBlZ19tZW1fYXZhaWxhYmxlIEAgNjggOyAKLQlqcGVnX21lbV9pbml0IEAgNjkgOyAKLQlqcGVnX21lbV90ZXJtIEAgNzAgOyAKLQlqcGVnX25ld19jb2xvcm1hcCBAIDcxIDsgCi0JanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUgQCA3MiA7IAotCWpwZWdfcXVhbGl0eV9zY2FsaW5nIEAgNzMgOyAKLQlqcGVnX3JlYWRfY29lZmZpY2llbnRzIEAgNzQgOyAKLQlqcGVnX3JlYWRfaGVhZGVyIEAgNzUgOyAKLQlqcGVnX3JlYWRfcmF3X2RhdGEgQCA3NiA7IAotCWpwZWdfcmVhZF9zY2FubGluZXMgQCA3NyA7IAotCWpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQgQCA3OCA7IAotCWpwZWdfc2F2ZV9tYXJrZXJzIEAgNzkgOyAKLQlqcGVnX3NldF9jb2xvcnNwYWNlIEAgODAgOyAKLQlqcGVnX3NldF9kZWZhdWx0cyBAIDgxIDsgCi0JanBlZ19zZXRfbGluZWFyX3F1YWxpdHkgQCA4MiA7IAotCWpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgQCA4MyA7IAotCWpwZWdfc2V0X3F1YWxpdHkgQCA4NCA7IAotCWpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uIEAgODUgOyAKLQlqcGVnX3N0YXJ0X2NvbXByZXNzIEAgODYgOyAKLQlqcGVnX3N0YXJ0X2RlY29tcHJlc3MgQCA4NyA7IAotCWpwZWdfc3RhcnRfb3V0cHV0IEAgODggOyAKLQlqcGVnX3N0ZF9lcnJvciBAIDg5IDsgCi0JanBlZ19zdGRpb19kZXN0IEAgOTAgOyAKLQlqcGVnX3N0ZGlvX3NyYyBAIDkxIDsgCi0JanBlZ19zdXBwcmVzc190YWJsZXMgQCA5MiA7IAotCWpwZWdfd3JpdGVfY29lZmZpY2llbnRzIEAgOTMgOyAKLQlqcGVnX3dyaXRlX21fYnl0ZSBAIDk0IDsgCi0JanBlZ193cml0ZV9tX2hlYWRlciBAIDk1IDsgCi0JanBlZ193cml0ZV9tYXJrZXIgQCA5NiA7IAotCWpwZWdfd3JpdGVfcmF3X2RhdGEgQCA5NyA7IAotCWpwZWdfd3JpdGVfc2NhbmxpbmVzIEAgOTggOyAKLQlqcGVnX3dyaXRlX3RhYmxlcyBAIDk5IDsgCi0JanJvdW5kX3VwIEAgMTAwIDsgCi0Janplcm9fZmFyIEAgMTAxIDsgCi0JanBlZ19za2lwX3NjYW5saW5lcyBAIDEwMiA7IAotCWpwZWdfY3JvcF9zY2FubGluZSBAIDEwMyA7IApkaWZmIC0tZ2l0IGEvd2luL2pwZWc3LW1lbXNyY2RzdC5kZWYgYi93aW4vanBlZzctbWVtc3JjZHN0LmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGM5ZjUxNy4uMDAwMDAwMAotLS0gYS93aW4vanBlZzctbWVtc3JjZHN0LmRlZgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1FWFBPUlRTCi0JamNvcHlfYmxvY2tfcm93IEAgMSA7IAotCWpjb3B5X3NhbXBsZV9yb3dzIEAgMiA7IAotCWpkaXZfcm91bmRfdXAgQCAzIDsgCi0JamluaXRfMXBhc3NfcXVhbnRpemVyIEAgNCA7IAotCWppbml0XzJwYXNzX3F1YW50aXplciBAIDUgOyAKLQlqaW5pdF9jX2NvZWZfY29udHJvbGxlciBAIDYgOyAKLQlqaW5pdF9jX21haW5fY29udHJvbGxlciBAIDcgOyAKLQlqaW5pdF9jX21hc3Rlcl9jb250cm9sIEAgOCA7IAotCWppbml0X2NfcHJlcF9jb250cm9sbGVyIEAgOSA7IAotCWppbml0X2NvbG9yX2NvbnZlcnRlciBAIDEwIDsgCi0JamluaXRfY29sb3JfZGVjb252ZXJ0ZXIgQCAxMSA7IAotCWppbml0X2NvbXByZXNzX21hc3RlciBAIDEyIDsgCi0JamluaXRfZF9jb2VmX2NvbnRyb2xsZXIgQCAxMyA7IAotCWppbml0X2RfbWFpbl9jb250cm9sbGVyIEAgMTQgOyAKLQlqaW5pdF9kX3Bvc3RfY29udHJvbGxlciBAIDE1IDsgCi0JamluaXRfZG93bnNhbXBsZXIgQCAxNiA7IAotCWppbml0X2ZvcndhcmRfZGN0IEAgMTcgOyAKLQlqaW5pdF9odWZmX2RlY29kZXIgQCAxOCA7IAotCWppbml0X2h1ZmZfZW5jb2RlciBAIDE5IDsgCi0JamluaXRfaW5wdXRfY29udHJvbGxlciBAIDIwIDsgCi0JamluaXRfaW52ZXJzZV9kY3QgQCAyMSA7IAotCWppbml0X21hcmtlcl9yZWFkZXIgQCAyMiA7IAotCWppbml0X21hcmtlcl93cml0ZXIgQCAyMyA7IAotCWppbml0X21hc3Rlcl9kZWNvbXByZXNzIEAgMjQgOyAKLQlqaW5pdF9tZW1vcnlfbWdyIEAgMjUgOyAKLQlqaW5pdF9tZXJnZWRfdXBzYW1wbGVyIEAgMjYgOyAKLQlqaW5pdF9waHVmZl9kZWNvZGVyIEAgMjcgOyAKLQlqaW5pdF9waHVmZl9lbmNvZGVyIEAgMjggOyAKLQlqaW5pdF91cHNhbXBsZXIgQCAyOSA7IAotCWpwZWdfQ3JlYXRlQ29tcHJlc3MgQCAzMCA7IAotCWpwZWdfQ3JlYXRlRGVjb21wcmVzcyBAIDMxIDsgCi0JanBlZ19hYm9ydCBAIDMyIDsgCi0JanBlZ19hYm9ydF9jb21wcmVzcyBAIDMzIDsgCi0JanBlZ19hYm9ydF9kZWNvbXByZXNzIEAgMzQgOyAKLQlqcGVnX2FkZF9xdWFudF90YWJsZSBAIDM1IDsgCi0JanBlZ19hbGxvY19odWZmX3RhYmxlIEAgMzYgOyAKLQlqcGVnX2FsbG9jX3F1YW50X3RhYmxlIEAgMzcgOyAKLQlqcGVnX2NhbGNfanBlZ19kaW1lbnNpb25zIEAgMzggOyAKLQlqcGVnX2NhbGNfb3V0cHV0X2RpbWVuc2lvbnMgQCAzOSA7IAotCWpwZWdfY29uc3VtZV9pbnB1dCBAIDQwIDsgCi0JanBlZ19jb3B5X2NyaXRpY2FsX3BhcmFtZXRlcnMgQCA0MSA7IAotCWpwZWdfZGVmYXVsdF9jb2xvcnNwYWNlIEAgNDIgOyAKLQlqcGVnX2RlZmF1bHRfcXRhYmxlcyBAIDQzIDsKLQlqcGVnX2Rlc3Ryb3kgQCA0NCA7IAotCWpwZWdfZGVzdHJveV9jb21wcmVzcyBAIDQ1IDsgCi0JanBlZ19kZXN0cm95X2RlY29tcHJlc3MgQCA0NiA7IAotCWpwZWdfZmRjdF9mbG9hdCBAIDQ3IDsgCi0JanBlZ19mZGN0X2lmYXN0IEAgNDggOyAKLQlqcGVnX2ZkY3RfaXNsb3cgQCA0OSA7IAotCWpwZWdfZmlsbF9iaXRfYnVmZmVyIEAgNTAgOyAKLQlqcGVnX2ZpbmlzaF9jb21wcmVzcyBAIDUxIDsgCi0JanBlZ19maW5pc2hfZGVjb21wcmVzcyBAIDUyIDsgCi0JanBlZ19maW5pc2hfb3V0cHV0IEAgNTMgOyAKLQlqcGVnX2ZyZWVfbGFyZ2UgQCA1NCA7IAotCWpwZWdfZnJlZV9zbWFsbCBAIDU1IDsgCi0JanBlZ19nZW5fb3B0aW1hbF90YWJsZSBAIDU2IDsgCi0JanBlZ19nZXRfbGFyZ2UgQCA1NyA7IAotCWpwZWdfZ2V0X3NtYWxsIEAgNTggOyAKLQlqcGVnX2hhc19tdWx0aXBsZV9zY2FucyBAIDU5IDsgCi0JanBlZ19odWZmX2RlY29kZSBAIDYwIDsgCi0JanBlZ19pZGN0XzF4MSBAIDYxIDsgCi0JanBlZ19pZGN0XzJ4MiBAIDYyIDsgCi0JanBlZ19pZGN0XzR4NCBAIDYzIDsgCi0JanBlZ19pZGN0X2Zsb2F0IEAgNjQgOyAKLQlqcGVnX2lkY3RfaWZhc3QgQCA2NSA7IAotCWpwZWdfaWRjdF9pc2xvdyBAIDY2IDsgCi0JanBlZ19pbnB1dF9jb21wbGV0ZSBAIDY3IDsgCi0JanBlZ19tYWtlX2NfZGVyaXZlZF90YmwgQCA2OCA7IAotCWpwZWdfbWFrZV9kX2Rlcml2ZWRfdGJsIEAgNjkgOyAKLQlqcGVnX21lbV9hdmFpbGFibGUgQCA3MCA7IAotCWpwZWdfbWVtX2luaXQgQCA3MSA7IAotCWpwZWdfbWVtX3Rlcm0gQCA3MiA7IAotCWpwZWdfbmV3X2NvbG9ybWFwIEAgNzMgOyAKLQlqcGVnX29wZW5fYmFja2luZ19zdG9yZSBAIDc0IDsgCi0JanBlZ19xdWFsaXR5X3NjYWxpbmcgQCA3NSA7IAotCWpwZWdfcmVhZF9jb2VmZmljaWVudHMgQCA3NiA7IAotCWpwZWdfcmVhZF9oZWFkZXIgQCA3NyA7IAotCWpwZWdfcmVhZF9yYXdfZGF0YSBAIDc4IDsgCi0JanBlZ19yZWFkX3NjYW5saW5lcyBAIDc5IDsgCi0JanBlZ19yZXN5bmNfdG9fcmVzdGFydCBAIDgwIDsgCi0JanBlZ19zYXZlX21hcmtlcnMgQCA4MSA7IAotCWpwZWdfc2V0X2NvbG9yc3BhY2UgQCA4MiA7IAotCWpwZWdfc2V0X2RlZmF1bHRzIEAgODMgOyAKLQlqcGVnX3NldF9saW5lYXJfcXVhbGl0eSBAIDg0IDsgCi0JanBlZ19zZXRfbWFya2VyX3Byb2Nlc3NvciBAIDg1IDsgCi0JanBlZ19zZXRfcXVhbGl0eSBAIDg2IDsgCi0JanBlZ19zaW1wbGVfcHJvZ3Jlc3Npb24gQCA4NyA7IAotCWpwZWdfc3RhcnRfY29tcHJlc3MgQCA4OCA7IAotCWpwZWdfc3RhcnRfZGVjb21wcmVzcyBAIDg5IDsgCi0JanBlZ19zdGFydF9vdXRwdXQgQCA5MCA7IAotCWpwZWdfc3RkX2Vycm9yIEAgOTEgOyAKLQlqcGVnX3N0ZGlvX2Rlc3QgQCA5MiA7IAotCWpwZWdfc3RkaW9fc3JjIEAgOTMgOyAKLQlqcGVnX3N1cHByZXNzX3RhYmxlcyBAIDk0IDsgCi0JanBlZ193cml0ZV9jb2VmZmljaWVudHMgQCA5NSA7IAotCWpwZWdfd3JpdGVfbV9ieXRlIEAgOTYgOyAKLQlqcGVnX3dyaXRlX21faGVhZGVyIEAgOTcgOyAKLQlqcGVnX3dyaXRlX21hcmtlciBAIDk4IDsgCi0JanBlZ193cml0ZV9yYXdfZGF0YSBAIDk5IDsgCi0JanBlZ193cml0ZV9zY2FubGluZXMgQCAxMDAgOyAKLQlqcGVnX3dyaXRlX3RhYmxlcyBAIDEwMSA7IAotCWpyb3VuZF91cCBAIDEwMiA7IAotCWp6ZXJvX2ZhciBAIDEwMyA7IAotCWpwZWdfbWVtX2Rlc3QgQCAxMDQgOyAKLQlqcGVnX21lbV9zcmMgQCAxMDUgOyAKZGlmZiAtLWdpdCBhL3dpbi9qcGVnNy5kZWYgYi93aW4vanBlZzcuZGVmCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MjQ2M2M1Li4wMDAwMDAwCi0tLSBhL3dpbi9qcGVnNy5kZWYKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotRVhQT1JUUwotCWpjb3B5X2Jsb2NrX3JvdyBAIDEgOyAKLQlqY29weV9zYW1wbGVfcm93cyBAIDIgOyAKLQlqZGl2X3JvdW5kX3VwIEAgMyA7IAotCWppbml0XzFwYXNzX3F1YW50aXplciBAIDQgOyAKLQlqaW5pdF8ycGFzc19xdWFudGl6ZXIgQCA1IDsgCi0JamluaXRfY19jb2VmX2NvbnRyb2xsZXIgQCA2IDsgCi0JamluaXRfY19tYWluX2NvbnRyb2xsZXIgQCA3IDsgCi0JamluaXRfY19tYXN0ZXJfY29udHJvbCBAIDggOyAKLQlqaW5pdF9jX3ByZXBfY29udHJvbGxlciBAIDkgOyAKLQlqaW5pdF9jb2xvcl9jb252ZXJ0ZXIgQCAxMCA7IAotCWppbml0X2NvbG9yX2RlY29udmVydGVyIEAgMTEgOyAKLQlqaW5pdF9jb21wcmVzc19tYXN0ZXIgQCAxMiA7IAotCWppbml0X2RfY29lZl9jb250cm9sbGVyIEAgMTMgOyAKLQlqaW5pdF9kX21haW5fY29udHJvbGxlciBAIDE0IDsgCi0JamluaXRfZF9wb3N0X2NvbnRyb2xsZXIgQCAxNSA7IAotCWppbml0X2Rvd25zYW1wbGVyIEAgMTYgOyAKLQlqaW5pdF9mb3J3YXJkX2RjdCBAIDE3IDsgCi0JamluaXRfaHVmZl9kZWNvZGVyIEAgMTggOyAKLQlqaW5pdF9odWZmX2VuY29kZXIgQCAxOSA7IAotCWppbml0X2lucHV0X2NvbnRyb2xsZXIgQCAyMCA7IAotCWppbml0X2ludmVyc2VfZGN0IEAgMjEgOyAKLQlqaW5pdF9tYXJrZXJfcmVhZGVyIEAgMjIgOyAKLQlqaW5pdF9tYXJrZXJfd3JpdGVyIEAgMjMgOyAKLQlqaW5pdF9tYXN0ZXJfZGVjb21wcmVzcyBAIDI0IDsgCi0JamluaXRfbWVtb3J5X21nciBAIDI1IDsgCi0JamluaXRfbWVyZ2VkX3Vwc2FtcGxlciBAIDI2IDsgCi0JamluaXRfcGh1ZmZfZGVjb2RlciBAIDI3IDsgCi0JamluaXRfcGh1ZmZfZW5jb2RlciBAIDI4IDsgCi0JamluaXRfdXBzYW1wbGVyIEAgMjkgOyAKLQlqcGVnX0NyZWF0ZUNvbXByZXNzIEAgMzAgOyAKLQlqcGVnX0NyZWF0ZURlY29tcHJlc3MgQCAzMSA7IAotCWpwZWdfYWJvcnQgQCAzMiA7IAotCWpwZWdfYWJvcnRfY29tcHJlc3MgQCAzMyA7IAotCWpwZWdfYWJvcnRfZGVjb21wcmVzcyBAIDM0IDsgCi0JanBlZ19hZGRfcXVhbnRfdGFibGUgQCAzNSA7IAotCWpwZWdfYWxsb2NfaHVmZl90YWJsZSBAIDM2IDsgCi0JanBlZ19hbGxvY19xdWFudF90YWJsZSBAIDM3IDsgCi0JanBlZ19jYWxjX2pwZWdfZGltZW5zaW9ucyBAIDM4IDsgCi0JanBlZ19jYWxjX291dHB1dF9kaW1lbnNpb25zIEAgMzkgOyAKLQlqcGVnX2NvbnN1bWVfaW5wdXQgQCA0MCA7IAotCWpwZWdfY29weV9jcml0aWNhbF9wYXJhbWV0ZXJzIEAgNDEgOyAKLQlqcGVnX2RlZmF1bHRfY29sb3JzcGFjZSBAIDQyIDsgCi0JanBlZ19kZWZhdWx0X3F0YWJsZXMgQCA0MyA7Ci0JanBlZ19kZXN0cm95IEAgNDQgOyAKLQlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MgQCA0NSA7IAotCWpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEAgNDYgOyAKLQlqcGVnX2ZkY3RfZmxvYXQgQCA0NyA7IAotCWpwZWdfZmRjdF9pZmFzdCBAIDQ4IDsgCi0JanBlZ19mZGN0X2lzbG93IEAgNDkgOyAKLQlqcGVnX2ZpbGxfYml0X2J1ZmZlciBAIDUwIDsgCi0JanBlZ19maW5pc2hfY29tcHJlc3MgQCA1MSA7IAotCWpwZWdfZmluaXNoX2RlY29tcHJlc3MgQCA1MiA7IAotCWpwZWdfZmluaXNoX291dHB1dCBAIDUzIDsgCi0JanBlZ19mcmVlX2xhcmdlIEAgNTQgOyAKLQlqcGVnX2ZyZWVfc21hbGwgQCA1NSA7IAotCWpwZWdfZ2VuX29wdGltYWxfdGFibGUgQCA1NiA7IAotCWpwZWdfZ2V0X2xhcmdlIEAgNTcgOyAKLQlqcGVnX2dldF9zbWFsbCBAIDU4IDsgCi0JanBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgQCA1OSA7IAotCWpwZWdfaHVmZl9kZWNvZGUgQCA2MCA7IAotCWpwZWdfaWRjdF8xeDEgQCA2MSA7IAotCWpwZWdfaWRjdF8yeDIgQCA2MiA7IAotCWpwZWdfaWRjdF80eDQgQCA2MyA7IAotCWpwZWdfaWRjdF9mbG9hdCBAIDY0IDsgCi0JanBlZ19pZGN0X2lmYXN0IEAgNjUgOyAKLQlqcGVnX2lkY3RfaXNsb3cgQCA2NiA7IAotCWpwZWdfaW5wdXRfY29tcGxldGUgQCA2NyA7IAotCWpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsIEAgNjggOyAKLQlqcGVnX21ha2VfZF9kZXJpdmVkX3RibCBAIDY5IDsgCi0JanBlZ19tZW1fYXZhaWxhYmxlIEAgNzAgOyAKLQlqcGVnX21lbV9pbml0IEAgNzEgOyAKLQlqcGVnX21lbV90ZXJtIEAgNzIgOyAKLQlqcGVnX25ld19jb2xvcm1hcCBAIDczIDsgCi0JanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUgQCA3NCA7IAotCWpwZWdfcXVhbGl0eV9zY2FsaW5nIEAgNzUgOyAKLQlqcGVnX3JlYWRfY29lZmZpY2llbnRzIEAgNzYgOyAKLQlqcGVnX3JlYWRfaGVhZGVyIEAgNzcgOyAKLQlqcGVnX3JlYWRfcmF3X2RhdGEgQCA3OCA7IAotCWpwZWdfcmVhZF9zY2FubGluZXMgQCA3OSA7IAotCWpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQgQCA4MCA7IAotCWpwZWdfc2F2ZV9tYXJrZXJzIEAgODEgOyAKLQlqcGVnX3NldF9jb2xvcnNwYWNlIEAgODIgOyAKLQlqcGVnX3NldF9kZWZhdWx0cyBAIDgzIDsgCi0JanBlZ19zZXRfbGluZWFyX3F1YWxpdHkgQCA4NCA7IAotCWpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgQCA4NSA7IAotCWpwZWdfc2V0X3F1YWxpdHkgQCA4NiA7IAotCWpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uIEAgODcgOyAKLQlqcGVnX3N0YXJ0X2NvbXByZXNzIEAgODggOyAKLQlqcGVnX3N0YXJ0X2RlY29tcHJlc3MgQCA4OSA7IAotCWpwZWdfc3RhcnRfb3V0cHV0IEAgOTAgOyAKLQlqcGVnX3N0ZF9lcnJvciBAIDkxIDsgCi0JanBlZ19zdGRpb19kZXN0IEAgOTIgOyAKLQlqcGVnX3N0ZGlvX3NyYyBAIDkzIDsgCi0JanBlZ19zdXBwcmVzc190YWJsZXMgQCA5NCA7IAotCWpwZWdfd3JpdGVfY29lZmZpY2llbnRzIEAgOTUgOyAKLQlqcGVnX3dyaXRlX21fYnl0ZSBAIDk2IDsgCi0JanBlZ193cml0ZV9tX2hlYWRlciBAIDk3IDsgCi0JanBlZ193cml0ZV9tYXJrZXIgQCA5OCA7IAotCWpwZWdfd3JpdGVfcmF3X2RhdGEgQCA5OSA7IAotCWpwZWdfd3JpdGVfc2NhbmxpbmVzIEAgMTAwIDsgCi0JanBlZ193cml0ZV90YWJsZXMgQCAxMDEgOyAKLQlqcm91bmRfdXAgQCAxMDIgOyAKLQlqemVyb19mYXIgQCAxMDMgOyAKLQlqcGVnX3NraXBfc2NhbmxpbmVzIEAgMTA0IDsgCi0JanBlZ19jcm9wX3NjYW5saW5lIEAgMTA1IDsgCmRpZmYgLS1naXQgYS93aW4vanBlZzguZGVmIGIvd2luL2pwZWc4LmRlZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTkyNDZhYy4uMDAwMDAwMAotLS0gYS93aW4vanBlZzguZGVmCisrKyAvZGV2L251bGwKQEAgLTEsMTA5ICswLDAgQEAKLUVYUE9SVFMKLQlqY29weV9ibG9ja19yb3cgQCAxIDsgCi0JamNvcHlfc2FtcGxlX3Jvd3MgQCAyIDsgCi0JamRpdl9yb3VuZF91cCBAIDMgOyAKLQlqaW5pdF8xcGFzc19xdWFudGl6ZXIgQCA0IDsgCi0JamluaXRfMnBhc3NfcXVhbnRpemVyIEAgNSA7IAotCWppbml0X2NfY29lZl9jb250cm9sbGVyIEAgNiA7IAotCWppbml0X2NfbWFpbl9jb250cm9sbGVyIEAgNyA7IAotCWppbml0X2NfbWFzdGVyX2NvbnRyb2wgQCA4IDsgCi0JamluaXRfY19wcmVwX2NvbnRyb2xsZXIgQCA5IDsgCi0JamluaXRfY29sb3JfY29udmVydGVyIEAgMTAgOyAKLQlqaW5pdF9jb2xvcl9kZWNvbnZlcnRlciBAIDExIDsgCi0JamluaXRfY29tcHJlc3NfbWFzdGVyIEAgMTIgOyAKLQlqaW5pdF9kX2NvZWZfY29udHJvbGxlciBAIDEzIDsgCi0JamluaXRfZF9tYWluX2NvbnRyb2xsZXIgQCAxNCA7IAotCWppbml0X2RfcG9zdF9jb250cm9sbGVyIEAgMTUgOyAKLQlqaW5pdF9kb3duc2FtcGxlciBAIDE2IDsgCi0JamluaXRfZm9yd2FyZF9kY3QgQCAxNyA7IAotCWppbml0X2h1ZmZfZGVjb2RlciBAIDE4IDsgCi0JamluaXRfaHVmZl9lbmNvZGVyIEAgMTkgOyAKLQlqaW5pdF9pbnB1dF9jb250cm9sbGVyIEAgMjAgOyAKLQlqaW5pdF9pbnZlcnNlX2RjdCBAIDIxIDsgCi0JamluaXRfbWFya2VyX3JlYWRlciBAIDIyIDsgCi0JamluaXRfbWFya2VyX3dyaXRlciBAIDIzIDsgCi0JamluaXRfbWFzdGVyX2RlY29tcHJlc3MgQCAyNCA7IAotCWppbml0X21lbW9yeV9tZ3IgQCAyNSA7IAotCWppbml0X21lcmdlZF91cHNhbXBsZXIgQCAyNiA7IAotCWppbml0X3BodWZmX2RlY29kZXIgQCAyNyA7IAotCWppbml0X3BodWZmX2VuY29kZXIgQCAyOCA7IAotCWppbml0X3Vwc2FtcGxlciBAIDI5IDsgCi0JanBlZ19DcmVhdGVDb21wcmVzcyBAIDMwIDsgCi0JanBlZ19DcmVhdGVEZWNvbXByZXNzIEAgMzEgOyAKLQlqcGVnX2Fib3J0IEAgMzIgOyAKLQlqcGVnX2Fib3J0X2NvbXByZXNzIEAgMzMgOyAKLQlqcGVnX2Fib3J0X2RlY29tcHJlc3MgQCAzNCA7IAotCWpwZWdfYWRkX3F1YW50X3RhYmxlIEAgMzUgOyAKLQlqcGVnX2FsbG9jX2h1ZmZfdGFibGUgQCAzNiA7IAotCWpwZWdfYWxsb2NfcXVhbnRfdGFibGUgQCAzNyA7IAotCWpwZWdfY2FsY19qcGVnX2RpbWVuc2lvbnMgQCAzOCA7IAotCWpwZWdfY2FsY19vdXRwdXRfZGltZW5zaW9ucyBAIDM5IDsgCi0JanBlZ19jb25zdW1lX2lucHV0IEAgNDAgOyAKLQlqcGVnX2NvcHlfY3JpdGljYWxfcGFyYW1ldGVycyBAIDQxIDsgCi0JanBlZ19jb3JlX291dHB1dF9kaW1lbnNpb25zIEAgNDIgOyAKLQlqcGVnX2RlZmF1bHRfY29sb3JzcGFjZSBAIDQzIDsgCi0JanBlZ19kZWZhdWx0X3F0YWJsZXMgQCA0NCA7Ci0JanBlZ19kZXN0cm95IEAgNDUgOyAKLQlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MgQCA0NiA7IAotCWpwZWdfZGVzdHJveV9kZWNvbXByZXNzIEAgNDcgOyAKLQlqcGVnX2ZkY3RfZmxvYXQgQCA0OCA7IAotCWpwZWdfZmRjdF9pZmFzdCBAIDQ5IDsgCi0JanBlZ19mZGN0X2lzbG93IEAgNTAgOyAKLQlqcGVnX2ZpbGxfYml0X2J1ZmZlciBAIDUxIDsgCi0JanBlZ19maW5pc2hfY29tcHJlc3MgQCA1MiA7IAotCWpwZWdfZmluaXNoX2RlY29tcHJlc3MgQCA1MyA7IAotCWpwZWdfZmluaXNoX291dHB1dCBAIDU0IDsgCi0JanBlZ19mcmVlX2xhcmdlIEAgNTUgOyAKLQlqcGVnX2ZyZWVfc21hbGwgQCA1NiA7IAotCWpwZWdfZ2VuX29wdGltYWxfdGFibGUgQCA1NyA7IAotCWpwZWdfZ2V0X2xhcmdlIEAgNTggOyAKLQlqcGVnX2dldF9zbWFsbCBAIDU5IDsgCi0JanBlZ19oYXNfbXVsdGlwbGVfc2NhbnMgQCA2MCA7IAotCWpwZWdfaHVmZl9kZWNvZGUgQCA2MSA7IAotCWpwZWdfaWRjdF8xeDEgQCA2MiA7IAotCWpwZWdfaWRjdF8yeDIgQCA2MyA7IAotCWpwZWdfaWRjdF80eDQgQCA2NCA7IAotCWpwZWdfaWRjdF9mbG9hdCBAIDY1IDsgCi0JanBlZ19pZGN0X2lmYXN0IEAgNjYgOyAKLQlqcGVnX2lkY3RfaXNsb3cgQCA2NyA7IAotCWpwZWdfaW5wdXRfY29tcGxldGUgQCA2OCA7IAotCWpwZWdfbWFrZV9jX2Rlcml2ZWRfdGJsIEAgNjkgOyAKLQlqcGVnX21ha2VfZF9kZXJpdmVkX3RibCBAIDcwIDsgCi0JanBlZ19tZW1fYXZhaWxhYmxlIEAgNzEgOyAKLQlqcGVnX21lbV9kZXN0IEAgNzIgOwotCWpwZWdfbWVtX2luaXQgQCA3MyA7IAotCWpwZWdfbWVtX3NyYyBAIDc0IDsKLQlqcGVnX21lbV90ZXJtIEAgNzUgOyAKLQlqcGVnX25ld19jb2xvcm1hcCBAIDc2IDsgCi0JanBlZ19vcGVuX2JhY2tpbmdfc3RvcmUgQCA3NyA7IAotCWpwZWdfcXVhbGl0eV9zY2FsaW5nIEAgNzggOyAKLQlqcGVnX3JlYWRfY29lZmZpY2llbnRzIEAgNzkgOyAKLQlqcGVnX3JlYWRfaGVhZGVyIEAgODAgOyAKLQlqcGVnX3JlYWRfcmF3X2RhdGEgQCA4MSA7IAotCWpwZWdfcmVhZF9zY2FubGluZXMgQCA4MiA7IAotCWpwZWdfcmVzeW5jX3RvX3Jlc3RhcnQgQCA4MyA7IAotCWpwZWdfc2F2ZV9tYXJrZXJzIEAgODQgOyAKLQlqcGVnX3NldF9jb2xvcnNwYWNlIEAgODUgOyAKLQlqcGVnX3NldF9kZWZhdWx0cyBAIDg2IDsgCi0JanBlZ19zZXRfbGluZWFyX3F1YWxpdHkgQCA4NyA7IAotCWpwZWdfc2V0X21hcmtlcl9wcm9jZXNzb3IgQCA4OCA7IAotCWpwZWdfc2V0X3F1YWxpdHkgQCA4OSA7IAotCWpwZWdfc2ltcGxlX3Byb2dyZXNzaW9uIEAgOTAgOyAKLQlqcGVnX3N0YXJ0X2NvbXByZXNzIEAgOTEgOyAKLQlqcGVnX3N0YXJ0X2RlY29tcHJlc3MgQCA5MiA7IAotCWpwZWdfc3RhcnRfb3V0cHV0IEAgOTMgOyAKLQlqcGVnX3N0ZF9lcnJvciBAIDk0IDsgCi0JanBlZ19zdGRpb19kZXN0IEAgOTUgOyAKLQlqcGVnX3N0ZGlvX3NyYyBAIDk2IDsgCi0JanBlZ19zdXBwcmVzc190YWJsZXMgQCA5NyA7IAotCWpwZWdfd3JpdGVfY29lZmZpY2llbnRzIEAgOTggOyAKLQlqcGVnX3dyaXRlX21fYnl0ZSBAIDk5IDsgCi0JanBlZ193cml0ZV9tX2hlYWRlciBAIDEwMCA7IAotCWpwZWdfd3JpdGVfbWFya2VyIEAgMTAxIDsgCi0JanBlZ193cml0ZV9yYXdfZGF0YSBAIDEwMiA7IAotCWpwZWdfd3JpdGVfc2NhbmxpbmVzIEAgMTAzIDsgCi0JanBlZ193cml0ZV90YWJsZXMgQCAxMDQgOyAKLQlqcm91bmRfdXAgQCAxMDUgOyAKLQlqemVyb19mYXIgQCAxMDYgOyAKLQlqcGVnX3NraXBfc2NhbmxpbmVzIEAgMTA3IDsgCi0JanBlZ19jcm9wX3NjYW5saW5lIEAgMTA4IDsgCmRpZmYgLS1naXQgYS93aW4vanNpbWRjZmcuaW5jIGIvd2luL2pzaW1kY2ZnLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOWQ0YWVkZS4uMDAwMDAwMAotLS0gYS93aW4vanNpbWRjZmcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOTQgKzAsMCBAQAotOwotOyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBpbmNsdWRlIGZpbGUgZnJvbSBqc2ltZGNmZy5pbmMuaAotOwotOwotOyAtLSBqcGVnbGliLmgKLTsKLSVkZWZpbmUgRENUU0laRSA4Ci0lZGVmaW5lIERDVFNJWkUyIDY0Ci07Ci07IC0tIGptb3JlY2ZnLmgKLTsKLSVkZWZpbmUgUkdCX1JFRCAwCi0lZGVmaW5lIFJHQl9HUkVFTiAxCi0lZGVmaW5lIFJHQl9CTFVFIDIKLSVkZWZpbmUgUkdCX1BJWEVMU0laRSAzCi0lZGVmaW5lIEVYVF9SR0JfUkVEIDAKLSVkZWZpbmUgRVhUX1JHQl9HUkVFTiAxCi0lZGVmaW5lIEVYVF9SR0JfQkxVRSAyCi0lZGVmaW5lIEVYVF9SR0JfUElYRUxTSVpFIDMKLSVkZWZpbmUgRVhUX1JHQlhfUkVEIDAKLSVkZWZpbmUgRVhUX1JHQlhfR1JFRU4gMQotJWRlZmluZSBFWFRfUkdCWF9CTFVFIDIKLSVkZWZpbmUgRVhUX1JHQlhfUElYRUxTSVpFIDQKLSVkZWZpbmUgRVhUX0JHUl9SRUQgMgotJWRlZmluZSBFWFRfQkdSX0dSRUVOIDEKLSVkZWZpbmUgRVhUX0JHUl9CTFVFIDAKLSVkZWZpbmUgRVhUX0JHUl9QSVhFTFNJWkUgMwotJWRlZmluZSBFWFRfQkdSWF9SRUQgMgotJWRlZmluZSBFWFRfQkdSWF9HUkVFTiAxCi0lZGVmaW5lIEVYVF9CR1JYX0JMVUUgMAotJWRlZmluZSBFWFRfQkdSWF9QSVhFTFNJWkUgNAotJWRlZmluZSBFWFRfWEJHUl9SRUQgMwotJWRlZmluZSBFWFRfWEJHUl9HUkVFTiAyCi0lZGVmaW5lIEVYVF9YQkdSX0JMVUUgMQotJWRlZmluZSBFWFRfWEJHUl9QSVhFTFNJWkUgNAotJWRlZmluZSBFWFRfWFJHQl9SRUQgMQotJWRlZmluZSBFWFRfWFJHQl9HUkVFTiAyCi0lZGVmaW5lIEVYVF9YUkdCX0JMVUUgMwotJWRlZmluZSBFWFRfWFJHQl9QSVhFTFNJWkUgNAotJWRlZmluZSBSR0JYX0ZJTExFUl8wWEZGIDEKLTsgUmVwcmVzZW50YXRpb24gb2YgYSBzaW5nbGUgc2FtcGxlIChwaXhlbCBlbGVtZW50IHZhbHVlKS4KLTsgT24gdGhpcyBTSU1EIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgJ3Vuc2lnbmVkIGNoYXInLgotOwotJWRlZmluZSBKU0FNUExFIGJ5dGUgOyB1bnNpZ25lZCBjaGFyCi0lZGVmaW5lIFNJWkVPRl9KU0FNUExFIFNJWkVPRl9CWVRFIDsgc2l6ZW9mKEpTQU1QTEUpCi0lZGVmaW5lIENFTlRFUkpTQU1QTEUgMTI4Ci07IFJlcHJlc2VudGF0aW9uIG9mIGEgRENUIGZyZXF1ZW5jeSBjb2VmZmljaWVudC4KLTsgT24gdGhpcyBTSU1EIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgJ3Nob3J0Jy4KLTsKLSVkZWZpbmUgSkNPRUYgd29yZCA7IHNob3J0Ci0lZGVmaW5lIFNJWkVPRl9KQ09FRiBTSVpFT0ZfV09SRCA7IHNpemVvZihKQ09FRikKLTsgRGF0YXR5cGUgdXNlZCBmb3IgaW1hZ2UgZGltZW5zaW9ucy4KLTsgT24gdGhpcyBTSU1EIGltcGxlbWVudGF0aW9uLCB0aGlzIG11c3QgYmUgJ3Vuc2lnbmVkIGludCcuCi07Ci0lZGVmaW5lIEpESU1FTlNJT04gZHdvcmQgOyB1bnNpZ25lZCBpbnQKLSVkZWZpbmUgU0laRU9GX0pESU1FTlNJT04gU0laRU9GX0RXT1JEIDsgc2l6ZW9mKEpESU1FTlNJT04pCi0lZGVmaW5lIEpTQU1QUk9XIFBPSU5URVIgOyBKU0FNUExFICogKGpwZWdsaWIuaCkKLSVkZWZpbmUgSlNBTVBBUlJBWSBQT0lOVEVSIDsgSlNBTVBST1cgKiAoanBlZ2xpYi5oKQotJWRlZmluZSBKU0FNUElNQUdFIFBPSU5URVIgOyBKU0FNUEFSUkFZICogKGpwZWdsaWIuaCkKLSVkZWZpbmUgSkNPRUZQVFIgUE9JTlRFUiA7IEpDT0VGICogKGpwZWdsaWIuaCkKLSVkZWZpbmUgU0laRU9GX0pTQU1QUk9XIFNJWkVPRl9QT0lOVEVSIDsgc2l6ZW9mKEpTQU1QUk9XKQotJWRlZmluZSBTSVpFT0ZfSlNBTVBBUlJBWSBTSVpFT0ZfUE9JTlRFUiA7IHNpemVvZihKU0FNUEFSUkFZKQotJWRlZmluZSBTSVpFT0ZfSlNBTVBJTUFHRSBTSVpFT0ZfUE9JTlRFUiA7IHNpemVvZihKU0FNUElNQUdFKQotJWRlZmluZSBTSVpFT0ZfSkNPRUZQVFIgU0laRU9GX1BPSU5URVIgOyBzaXplb2YoSkNPRUZQVFIpCi07Ci07IC0tIGpkY3QuaAotOwotOyBBIGZvcndhcmQgRENUIHJvdXRpbmUgaXMgZ2l2ZW4gYSBwb2ludGVyIHRvIGEgd29yayBhcmVhIG9mIHR5cGUgRENURUxFTVtdOwotOyB0aGUgRENUIGlzIHRvIGJlIHBlcmZvcm1lZCBpbi1wbGFjZSBpbiB0aGF0IGJ1ZmZlci4KLTsgVG8gbWF4aW1pemUgcGFyYWxsZWxpc20sIFR5cGUgRENURUxFTSBpcyBjaGFuZ2VkIHRvIHNob3J0IChvcmlnaW5hbGx5LCBpbnQpLgotOwotJWRlZmluZSBEQ1RFTEVNIHdvcmQgOyBzaG9ydAotJWRlZmluZSBTSVpFT0ZfRENURUxFTSBTSVpFT0ZfV09SRCA7IHNpemVvZihEQ1RFTEVNKQotJWRlZmluZSBmbG9hdCBGUDMyIDsgZmxvYXQKLSVkZWZpbmUgU0laRU9GX0ZBU1RfRkxPQVQgU0laRU9GX0ZQMzIgOyBzaXplb2YoZmxvYXQpCi07IFRvIG1heGltaXplIHBhcmFsbGVsaXNtLCBUeXBlIHNob3J0IGlzIGNoYW5nZWQgdG8gc2hvcnQuCi07Ci0lZGVmaW5lIElTTE9XX01VTFRfVFlQRSB3b3JkIDsgbXVzdCBiZSBzaG9ydAotJWRlZmluZSBTSVpFT0ZfSVNMT1dfTVVMVF9UWVBFIFNJWkVPRl9XT1JEIDsgc2l6ZW9mKElTTE9XX01VTFRfVFlQRSkKLSVkZWZpbmUgSUZBU1RfTVVMVF9UWVBFIHdvcmQgOyBtdXN0IGJlIHNob3J0Ci0lZGVmaW5lIFNJWkVPRl9JRkFTVF9NVUxUX1RZUEUgU0laRU9GX1dPUkQgOyBzaXplb2YoSUZBU1RfTVVMVF9UWVBFKQotJWRlZmluZSBJRkFTVF9TQ0FMRV9CSVRTIDIgOyBmcmFjdGlvbmFsIGJpdHMgaW4gc2NhbGUgZmFjdG9ycwotJWRlZmluZSBGTE9BVF9NVUxUX1RZUEUgRlAzMiA7IG11c3QgYmUgZmxvYXQKLSVkZWZpbmUgU0laRU9GX0ZMT0FUX01VTFRfVFlQRSBTSVpFT0ZfRlAzMiA7IHNpemVvZihGTE9BVF9NVUxUX1RZUEUpCi07Ci07IC0tIGpzaW1kLmgKLTsKLSVkZWZpbmUgSlNJTURfTk9ORSAweDAwCi0lZGVmaW5lIEpTSU1EX01NWCAweDAxCi0lZGVmaW5lIEpTSU1EXzNETk9XIDB4MDIKLSVkZWZpbmUgSlNJTURfU1NFIDB4MDQKLSVkZWZpbmUgSlNJTURfU1NFMiAweDA4Ci07IFNob3J0IGZvcm1zIG9mIGV4dGVybmFsIG5hbWVzIGZvciBzeXN0ZW1zIHdpdGggYnJhaW4tZGFtYWdlZCBsaW5rZXJzLgotOwo=