PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkJPT1NUX1RFU1RfTUVTU0FHRTwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9InRlc3QtbG9nLmh0bWwiIHRpdGxlPSJUZXN0IGxvZyBvdXRwdXQiPgo8bGluayByZWw9InByZXYiIGhyZWY9InRlc3QtbG9nLmh0bWwiIHRpdGxlPSJUZXN0IGxvZyBvdXRwdXQiPgo8bGluayByZWw9Im5leHQiIGhyZWY9IkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVC5odG1sIiB0aXRsZT0iQk9PU1RfVEVTVF9DSEVDS1BPSU5UIj4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdDEuMiIgc3JjPSIuLi8uLi8uLi8uLi9qcy9ib29zdC10ZXN0LmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgd2lkdGg9IjEwJSI+PGEgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCI+PGltZyBhbHQ9IkhvbWUiIHdpZHRoPSIyMjkiIGhlaWdodD0iNjEiIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Rlc3QvZG9jYm9vay9pbWcvYm9vc3QudGVzdC5sb2dvLnBuZyI+PC9hPjwvdGQ+Cjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPiAmZ3Q7IDxhIGhyZWY9Ii4uLy4uLy4uL3V0Zi5odG1sIj5UaGUgVW5pdCBUZXN0IEZyYW1ld29yazwvYT4gJmd0OyA8YSBocmVmPSIuLi8uLi91c2VyLWd1aWRlLmh0bWwiPlVzZXIncyBndWlkZTwvYT48YSBocmVmPSIuLi8uLi90ZXN0aW5nLXRvb2xzLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48YSBocmVmPSIuLi90ZXN0LW91dHB1dC5odG1sIj5UZXN0IE91dHB1dCA8L2E+PGEgaHJlZj0iLi4vcnVudGltZS1jb25maWcuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxhIGhyZWY9InRlc3QtbG9nLmh0bWwiPlRlc3QgbG9nPC9hPjxhIGhyZWY9InJlc3VsdHMtcmVwb3J0Lmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48Yj5CT09TVF9URVNUX01FU1NBR0U8L2I+CjwvdGQ+Cjx0ZD48ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgaHJlZj0idGVzdC1sb2cuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgaHJlZj0iQk9PU1RfVEVTVF9DSEVDS1BPSU5ULmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDYgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vdXRwdXQubG9nLkJPT1NUX1RFU1RfTUVTU0FHRSI+PC9hPkJPT1NUX1RFU1RfTUVTU0FHRTwvaDY+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIFRoZSBtYWNybyBCT09TVF9URVNUX01FU1NBR0UgaXMgaW50ZW5kZWQgdG8gYmUgdXNlZCBmb3IgdGhlIHB1cnBvc2Ugb2YgaW5qZWN0aW5nIGFuIGFkZGl0aW9uYWwgbWVzc2FnZSBpbnRvIHRoZQogICAgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gdGVzdCBsb2cuIFRoZXNlIG1lc3NhZ2VzIGFyZSBub3QgaW50ZW5kZWQgdG8gaW5kaWNhdGUgYW55IGVycm9yIG9yIHdhcm5pbmcgY29uZGl0aW9ucywgYnV0IHJhdGhlciBhcwogICAgaW5mb3JtYXRpb24vc3RhdHVzIG5vdGlmaWNhdGlvbnMuIFRoZSBtYWNybyBzaWduYXR1cmUgaXMgYXMgZm9sbG93czoKICAgPC9wPgo8cHJlIGNsYXNzPSJpbmxpbmUtc3lub3BzaXMiPgo8YSBuYW1lPSJCT09TVF9URVNUX01FU1NBR0UiPjwvYT5CT09TVF9URVNUX01FU1NBR0UoPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dGVzdF9tZXNzYWdlPC9lbT48L3NwYW4+KTwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUaGUgdGVzdF9tZXNzYWdlIGFyZ3VtZW50IGNhbiBiZSBhcyBzaW1wbGUgYXMgQyBzdHJpbmcgbGl0ZXJhbCBvciBhbnkgY3VzdG9tIGV4cHJlc3Npb24gdGhhdCB5b3UgY2FuIHByb2R1Y2UKICAgIHdpdGggaW4gYSBtYW5uZXIgc2ltaWxhciB0byBzdGFuZGFyZCBpb3N0cmVhbSBvcGVyYXRpb24uCiAgIDwvcD4KPGRpdiBjbGFzcz0iaW1wb3J0YW50Ij48dGFibGUgYm9yZGVyPSIwIiBzdW1tYXJ5PSJJbXBvcnRhbnQiPgo8dHI+Cjx0ZCByb3dzcGFuPSIyIiBhbGlnbj0iY2VudGVyIiB2YWxpZ249InRvcCIgd2lkdGg9IjI1Ij48aW1nIGFsdD0iW0ltcG9ydGFudF0iIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2ltcG9ydGFudC5wbmciPjwvdGQ+Cjx0aCBhbGlnbj0ibGVmdCI+SW1wb3J0YW50PC90aD4KPC90cj4KPHRyPjx0ZCBhbGlnbj0ibGVmdCIgdmFsaWduPSJ0b3AiPjxwPgogICAgIE1lc3NhZ2VzIGdlbmVyYXRlZCBieSB0aGlzIHRvb2wgZG8gbm90IGFwcGVhciBpbiB0ZXN0IGxvZyBvdXRwdXQgd2l0aCBkZWZhdWx0IHZhbHVlIG9mIHRoZSBhY3RpdmUgbG9nIGxldmVsCiAgICAgdGhyZXNob2xkLiBGb3IgdGhlc2UgbWVzc2FnZXMgdG8gYXBwZWFyIHRoZSBhY3RpdmUgbG9nIGxldmVsIHRocmVzaG9sZCBoYXMgdG8gYmUgc2V0IHRvIGEgdmFsdWUgYmVsb3cgb3IgZXF1YWwKICAgICB0byAibWVzc2FnZSIuCiAgICA8L3A+PC90ZD48L3RyPgo8L3RhYmxlPjwvZGl2Pgo8ZGl2IGNsYXNzPSJleGFtcGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUudGVzdC1vdXRwdXQubG9nLkJPT1NUX1RFU1RfTUVTU0FHRS5leGFtcGxlMjEiPjwvYT48cCBjbGFzcz0idGl0bGUiPjxiPkV4YW1wbGWgMjcuoEJPT1NUX1RFU1RfTUVTU0FHRSB1c2FnZTwvYj48L3A+CjxkaXYgY2xhc3M9ImV4YW1wbGUtY29udGVudHMiPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+I2RlZmluZSBCT09TVF9URVNUX01PRFVMRSBleGFtcGxlCiNpbmNsdWRlICZsdDtib29zdC90ZXN0L2luY2x1ZGVkL3VuaXRfdGVzdC5ocHAmZ3Q7CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKQk9PU1RfQVVUT19URVNUX0NBU0UoIHRlc3RfaW5pdCApCnsKICAgIGludCBjdXJyZW50X3RpbWUgPSAwOyAvLyByZWFsIGNhbGwgaXMgcmVxdWlyZWQgaGVyZQoKICAgIEJPT1NUX1RFU1RfTUVTU0FHRSggIlRlc3RpbmcgaW5pdGlhbGl6YXRpb24gOiIgKTsKICAgIEJPT1NUX1RFU1RfTUVTU0FHRSggIkN1cnJlbnQgdGltZToiICZsdDsmbHQ7IGN1cnJlbnRfdGltZSApOwp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwoKQk9PU1RfQVVUT19URVNUX0NBU0UoIHRlc3RfdXBkYXRlICkKewogICAgc3RkOjpzdHJpbmcgZmllbGRfbmFtZSA9ICJWb2x1bWUiOwogICAgaW50ICAgICAgICAgdmFsdWUgICAgICA9IDEwMDsKCiAgICBCT09TVF9URVNUX01FU1NBR0UoICJUZXN0aW5nIHVwZGF0ZSA6IiApOwogICAgQk9PU1RfVEVTVF9NRVNTQUdFKCAiVXBkYXRlICIgJmx0OyZsdDsgZmllbGRfbmFtZSAmbHQ7Jmx0OyAiIHdpdGggIiAmbHQ7Jmx0OyB2YWx1ZSApOwp9CgovL19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18vLwo8L3ByZT4KPHRhYmxlIGNsYXNzPSJzaW1wbGVsaXN0IiBib3JkZXI9IjAiIHN1bW1hcnk9IlNpbXBsZSBsaXN0Ij48dHI+Cjx0ZD48Y29kZSBjbGFzcz0ibGl0ZXJhbCI+PGEgaHJlZj0iLi4vLi4vLi4vLi4vc3JjL2V4YW1wbGVzL2V4YW1wbGUyMS5jcHAiIHRhcmdldD0iX3RvcCI+U291cmNlIGNvZGU8L2E+PC9jb2RlPjwvdGQ+Cjx0ZD4gfCA8L3RkPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9IiMiIHRhcmdldD0iX3RvcCIgaWQ9ImlkNjU0MDI5IiBvbmNsaWNrPSJ0b2dnbGVfZWxlbWVudCggJ2V4YW1wbGUyMS1vdXRwdXQnLCAnaWQ2NTQwMjknLCAnU2hvdyBvdXRwdXQnLCAnSGlkZSBvdXRwdXQnICk7IHJldHVybiBmYWxzZTsiPlNob3cgb3V0cHV0PC9hPjwvY29kZT48L3RkPgo8L3RyPjwvdGFibGU+CjxwcmUgY2xhc3M9ImV4YW1wbGUtb3V0cHV0IiBpZD0iZXhhbXBsZTIxLW91dHB1dCI+Jmd0OyBleGFtcGxlIC0tbG9nX2xldmVsPW1lc3NhZ2UKUnVubmluZyAyIHRlc3QgY2FzZXMuLi4KVGVzdGluZyBpbml0aWFsaXphdGlvbiA6CkN1cnJlbnQgdGltZTowClRlc3RpbmcgdXBkYXRlIDoKVXBkYXRlIFZvbHVtZSB3aXRoIDEwMAoKKioqIE5vIGVycm9ycyBkZXRlY3RlZAo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJ0ZXN0LWxvZy5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9InRlc3QtbG9nLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvdXAucG5nIiBhbHQ9IlVwIj48L2E+PGEgYWNjZXNza2V5PSJoIiBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2hvbWUucG5nIiBhbHQ9IkhvbWUiPjwvYT48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9IkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=