PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVDwvdGl0bGU+CjxsaW5rIHJlbD0ic3R5bGVzaGVldCIgaHJlZj0iLi4vLi4vLi4vLi4vc3R5bGUvc3R5bGUuY3NzIiB0eXBlPSJ0ZXh0L2NzcyI+CjxtZXRhIG5hbWU9ImdlbmVyYXRvciIgY29udGVudD0iRG9jQm9vayBYU0wgU3R5bGVzaGVldHMgVjEuNzQuMCI+CjxsaW5rIHJlbD0iaG9tZSIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCIgdGl0bGU9IkJvb3N0IFRlc3QgTGlicmFyeSI+CjxsaW5rIHJlbD0idXAiIGhyZWY9InRlc3QtbG9nLmh0bWwiIHRpdGxlPSJUZXN0IGxvZyBvdXRwdXQiPgo8bGluayByZWw9InByZXYiIGhyZWY9IkJPT1NUX1RFU1RfTUVTU0FHRS5odG1sIiB0aXRsZT0iQk9PU1RfVEVTVF9NRVNTQUdFIj4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJCT09TVF9URVNUX1BBU1NQT0lOVC5odG1sIiB0aXRsZT0iQk9PU1RfVEVTVF9QQVNTUE9JTlQiPgo8c2NyaXB0IGxhbmd1YWdlPSJKYXZhU2NyaXB0MS4yIiBzcmM9Ii4uLy4uLy4uLy4uL2pzL2Jvb3N0LXRlc3QuanMiPjwvc2NyaXB0Pgo8L2hlYWQ+Cjxib2R5IGJnY29sb3I9IndoaXRlIiB0ZXh0PSJibGFjayIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4NDAwODQiIGFsaW5rPSIjMDAwMEZGIj4KPHRhYmxlIHdpZHRoPSIxMDAlIj48dHI+Cjx0ZCB3aWR0aD0iMTAlIj48YSBocmVmPSIuLi8uLi8uLi9pbmRleC5odG1sIj48aW1nIGFsdD0iSG9tZSIgd2lkdGg9IjIyOSIgaGVpZ2h0PSI2MSIgYm9yZGVyPSIwIiBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2xpYnMvdGVzdC9kb2Nib29rL2ltZy9ib29zdC50ZXN0LmxvZ28ucG5nIj48L2E+PC90ZD4KPHRkIHZhbGlnbj0ibWlkZGxlIiBhbGlnbj0ibGVmdCI+ICZndDsgPGEgaHJlZj0iLi4vLi4vLi4vdXRmLmh0bWwiPlRoZSBVbml0IFRlc3QgRnJhbWV3b3JrPC9hPiAmZ3Q7IDxhIGhyZWY9Ii4uLy4uL3VzZXItZ3VpZGUuaHRtbCI+VXNlcidzIGd1aWRlPC9hPjxhIGhyZWY9Ii4uLy4uL3Rlc3RpbmctdG9vbHMuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxhIGhyZWY9Ii4uL3Rlc3Qtb3V0cHV0Lmh0bWwiPlRlc3QgT3V0cHV0IDwvYT48YSBocmVmPSIuLi9ydW50aW1lLWNvbmZpZy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGEgaHJlZj0idGVzdC1sb2cuaHRtbCI+VGVzdCBsb2c8L2E+PGEgaHJlZj0icmVzdWx0cy1yZXBvcnQuaHRtbCI+CiAgICAgICZndDsKICAgICAgPC9hPjxiPkJPT1NUX1RFU1RfQ0hFQ0tQT0lOVDwvYj4KPC90ZD4KPHRkPjxkaXYgY2xhc3M9InNwaXJpdC1uYXYiPgo8YSBocmVmPSJCT09TVF9URVNUX01FU1NBR0UuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgaHJlZj0iQk9PU1RfVEVTVF9QQVNTUE9JTlQuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9uZXh0LnBuZyIgYWx0PSJOZXh0Ij48L2E+CjwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNiBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS50ZXN0LW91dHB1dC5sb2cuQk9PU1RfVEVTVF9DSEVDS1BPSU5UIj48L2E+Qk9PU1RfVEVTVF9DSEVDS1BPSU5UPC9oNj48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgVGhlIG1hY3JvIEJPT1NUX1RFU1RfQ0hFQ0tQT0lOVCBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIHRvIGluamVjdCAibmFtZWQiIGNoZWNrcG9pbnQgcG9zaXRpb24uIFRoZQogICAgbWFjcm8gc2lnbmF0dXJlIGlzIGFzIGZvbGxvd3M6CiAgIDwvcD4KPHByZSBjbGFzcz0iaW5saW5lLXN5bm9wc2lzIj4KPGEgbmFtZT0iQk9PU1RfVEVTVF9DSEVDS1BPSU5UIj48L2E+Qk9PU1RfVEVTVF9DSEVDS1BPSU5UKDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPmNoZWNrb2ludF9tZXNzYWdlPC9lbT48L3NwYW4+KTwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUaGUgbWVzc2FnZSBmb3JtYXR0ZWQgYXQgdGhlIGNoZWNrcG9pbnQgcG9zaXRpb24gaXMgc2F2ZWQgYW5kIHJlcG9ydGVkIGJ5IHRoZSBleGNlcHRpb24gbG9nZ2luZyBmdW5jdGlvbnMgKGlmIGFueQogICAgb2NjdXJzKS4gU2ltaWxhcmx5IHRvIHRoZSA8Y29kZSBjbGFzcz0iY29tcHV0ZXJvdXRwdXQiPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJCT09TVF9URVNUX01FU1NBR0UuaHRtbCNCT09TVF9URVNUX01FU1NBR0UiPkJPT1NUX1RFU1RfTUVTU0FHRTwvYT48L2NvZGU+IHRoZSBtZXNzYWdlIGNhbiBiZSBmb3JtYXR0ZWQgZnJvbSBhbnkgc3RhbmRhcmQKICAgIG91dHB1dCBzdHJlYW0gY29tcGxpYW50IGNvbXBvbmVudHMuCiAgIDwvcD4KPGRpdiBjbGFzcz0iZXhhbXBsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLnRlc3Qtb3V0cHV0LmxvZy5CT09TVF9URVNUX0NIRUNLUE9JTlQuZXhhbXBsZTIyIj48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5FeGFtcGxloDI4LqBCT09TVF9URVNUX0NIRUNLUE9JTlQgdXNhZ2U8L2I+PC9wPgo8ZGl2IGNsYXNzPSJleGFtcGxlLWNvbnRlbnRzIj4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPiNkZWZpbmUgQk9PU1RfVEVTVF9NT0RVTEUgZXhhbXBsZQojaW5jbHVkZSAmbHQ7Ym9vc3QvdGVzdC9pbmNsdWRlZC91bml0X3Rlc3QuaHBwJmd0OwoKLy9fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fLy8KCmV4dGVybiB2b2lkIGZvbyggaW50IGkgKTsKCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgpCT09TVF9BVVRPX1RFU1RfQ0FTRSggdGVzdF9leHRlcm5hbF9pbnRlcmZhY2UgKQp7CiAgICBmb3IoIGludCBpID0gMzsgaSAmZ3Q7PTA7IGktLSApIHsKICAgICAgICBCT09TVF9URVNUX0NIRUNLUE9JTlQoICJDYWxsaW5nIGZvbyB3aXRoIGk9IiAmbHQ7Jmx0OyBpICk7CiAgICAgICAgZm9vKCBpICk7CiAgICB9Cn0KCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vCgp2b2lkIGZvbyggaW50IGkgKQp7CiAgICBpbnQgaiA9IDIvKGktMSk7Cn0KCi8vX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXy8vPC9wcmU+Cjx0YWJsZSBjbGFzcz0ic2ltcGxlbGlzdCIgYm9yZGVyPSIwIiBzdW1tYXJ5PSJTaW1wbGUgbGlzdCI+PHRyPgo8dGQ+PGNvZGUgY2xhc3M9ImxpdGVyYWwiPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL3NyYy9leGFtcGxlcy9leGFtcGxlMjIuY3BwIiB0YXJnZXQ9Il90b3AiPlNvdXJjZSBjb2RlPC9hPjwvY29kZT48L3RkPgo8dGQ+IHwgPC90ZD4KPHRkPjxjb2RlIGNsYXNzPSJsaXRlcmFsIj48YSBocmVmPSIjIiB0YXJnZXQ9Il90b3AiIGlkPSJpZDY1NDE3OSIgb25jbGljaz0idG9nZ2xlX2VsZW1lbnQoICdleGFtcGxlMjItb3V0cHV0JywgJ2lkNjU0MTc5JywgJ1Nob3cgb3V0cHV0JywgJ0hpZGUgb3V0cHV0JyApOyByZXR1cm4gZmFsc2U7Ij5TaG93IG91dHB1dDwvYT48L2NvZGU+PC90ZD4KPC90cj48L3RhYmxlPgo8cHJlIGNsYXNzPSJleGFtcGxlLW91dHB1dCIgaWQ9ImV4YW1wbGUyMi1vdXRwdXQiPiZndDsgZXhhbXBsZQpSdW5uaW5nIDEgdGVzdCBjYXNlLi4uCnVua25vd24gbG9jYXRpb24oMCk6IGZhdGFsIGVycm9yIGluICJ0ZXN0X2V4dGVybmFsX2ludGVyZmFjZSI6IHNpZ25hbDogaW50ZWdlciBkaXZpZGUgYnkgemVybzsgYWRkcmVzcyBvZiBmYWlsaW5nIGluc3RydWN0aW9uOiAweDAwMDQ4MDkwCnRlc3QuY3BwKDEzKTogbGFzdCBjaGVja3BvaW50OiBDYWxsaW5nIGZvbyB3aXRoIGk9MQoKKioqIDEgZmFpbHVyZSBkZXRlY3RlZCBpbiB0ZXN0IHN1aXRlICJleGFtcGxlIgo8L3ByZT4KPC9kaXY+CjwvZGl2Pgo8YnIgY2xhc3M9ImV4YW1wbGUtYnJlYWsiPgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJCT09TVF9URVNUX01FU1NBR0UuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSJ0ZXN0LWxvZy5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3VwLnBuZyIgYWx0PSJVcCI+PC9hPjxhIGFjY2Vzc2tleT0iaCIgaHJlZj0iLi4vLi4vLi4vaW5kZXguaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9ob21lLnBuZyIgYWx0PSJIb21lIj48L2E+PGEgYWNjZXNza2V5PSJuIiBocmVmPSJCT09TVF9URVNUX1BBU1NQT0lOVC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=