PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPkZpeHR1cmVzIG9yIGxldCBtZSByZXBlYXQgbXlzZWxmPC90aXRsZT4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSIuLi8uLi8uLi9zdHlsZS9zdHlsZS5jc3MiIHR5cGU9InRleHQvY3NzIj4KPG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43NC4wIj4KPGxpbmsgcmVsPSJob21lIiBocmVmPSIuLi8uLi9pbmRleC5odG1sIiB0aXRsZT0iQm9vc3QgVGVzdCBMaWJyYXJ5Ij4KPGxpbmsgcmVsPSJ1cCIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sIiB0aXRsZT0iVW5pdCBUZXN0IEZyYW1ld29yazogVXNlcidzIGd1aWRlIj4KPGxpbmsgcmVsPSJwcmV2IiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi9leHBlY3RlZC1mYWlsdXJlcy5odG1sIiB0aXRsZT0iRXhwZWN0ZWQgZmFpbHVyZXMgc3BlY2lmaWNhdGlvbiI+CjxsaW5rIHJlbD0ibmV4dCIgaHJlZj0iZml4dHVyZS9tb2RlbC5odG1sIiB0aXRsZT0iR2VuZXJpYyBmaXh0dXJlIG1vZGVsIj4KPHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdDEuMiIgc3JjPSIuLi8uLi8uLi9qcy9ib29zdC10ZXN0LmpzIj48L3NjcmlwdD4KPC9oZWFkPgo8Ym9keSBiZ2NvbG9yPSJ3aGl0ZSIgdGV4dD0iYmxhY2siIGxpbms9IiMwMDAwRkYiIHZsaW5rPSIjODQwMDg0IiBhbGluaz0iIzAwMDBGRiI+Cjx0YWJsZSB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgd2lkdGg9IjEwJSI+PGEgaHJlZj0iLi4vLi4vaW5kZXguaHRtbCI+PGltZyBhbHQ9IkhvbWUiIHdpZHRoPSIyMjkiIGhlaWdodD0iNjEiIGJvcmRlcj0iMCIgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9saWJzL3Rlc3QvZG9jYm9vay9pbWcvYm9vc3QudGVzdC5sb2dvLnBuZyI+PC9hPjwvdGQ+Cjx0ZCB2YWxpZ249Im1pZGRsZSIgYWxpZ249ImxlZnQiPiAmZ3Q7IDxhIGhyZWY9Ii4uLy4uL3V0Zi5odG1sIj5UaGUgVW5pdCBUZXN0IEZyYW1ld29yazwvYT4gJmd0OyA8YSBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwiPlVzZXIncyBndWlkZTwvYT48YSBocmVmPSIuLi90ZXN0aW5nLXRvb2xzLmh0bWwiPgogICAgICAmZ3Q7CiAgICAgIDwvYT48Yj5GaXh0dXJlczwvYj48YSBocmVmPSJ0ZXN0LW91dHB1dC5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+CjwvdGQ+Cjx0ZD48ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgaHJlZj0idGVzdC1vcmdhbml6YXRpb24vZXhwZWN0ZWQtZmFpbHVyZXMuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgaHJlZj0iZml4dHVyZS9tb2RlbC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+PC90ZD4KPC90cj48L3RhYmxlPgo8aHI+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg0IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLmZpeHR1cmUiPjwvYT5GaXh0dXJlcyAgb3IgbGV0IG1lIHJlcGVhdCBteXNlbGY8L2g0PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgSW4gZ2VuZXJhbCB0ZXJtcyBhIHRlc3QgZml4dHVyZSBvciB0ZXN0IGNvbnRleHQgaXMgdGhlIGNvbGxlY3Rpb24gb2Ygb25lIG9yIG1vcmUgb2YgdGhlIGZvbGxvd2luZyBpdGVtcywgcmVxdWlyZWQKICB0byBwZXJmb3JtIHRoZSB0ZXN0OgogPC9wPgo8ZGl2IHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iZGlzYyI+CjxsaT5wcmVjb25kaXRpb25zPC9saT4KPGxpPnBhcnRpY3VsYXIgc3RhdGVzIG9mIHRlc3RlZCB1bml0ZXM8L2xpPgo8bGk+bmVjZXNzYXJ5IGNsZWFudXAgcHJvY2VkdXJlczwvbGk+CjwvdWw+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBUaG91Z2ggdGhlc2UgdGFza3MgYXJlIGVuY291bnRlcmVkIGluIG1hbnkgaWYgbm90IGFsbCB0ZXN0IGNhc2VzLCB3aGF0IG1ha2VzIGEgdGVzdCBmaXh0dXJlIGRpZmZlcmVudCBpcwogIHJlcGV0aXRpb24uIFdoZXJlIGEgbm9ybWFsIHRlc3QgY2FzZSBpbXBsZW1lbnRhdGlvbiBkb2VzIGFsbCBwcmVwYXJhdG9yeSBhbmQgY2xlYW51cCB3b3JrIGl0c2VsZiwgYSB0ZXN0IGZpeHR1cmUKICBhbGxvd3MgdGhpcyB0byBiZSBpbXBsZW1lbnRlZCBpbiBhIHNlcGFyYXRlIHJldXNhYmxlIHVuaXQuCiA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBXaXRoIGludHJvZHVjdGlvbiBvZiBleHRyZW1lIHByb2dyYW1taW5nIChYUCksIHRoZSB0ZXN0aW5nIHN0eWxlLCB0aGF0IHJlcXVpcmUgdGVzdCBzZXR1cC9jbGVhbnVwIHJlcGV0aXRpb24sIGlzCiAgYmVjb21pbmcgbW9yZSBhbmQgbW9yZSBwb3B1bGFyLiBTaW5nbGUgWFAgYWRvcHRlZCB0ZXN0IG1vZHVsZXMgbWF5IGNvbnRhaW4gaHVuZHJlZHMgb2Ygc2luZ2xlIGFzc2VydGlvbiB0ZXN0IGNhc2VzLAogIG1hbnkgcmVxdWlyaW5nIHZlcnkgc2ltaWxhciB0ZXN0IHNldHVwL2NsZWFudXAuIFRoaXMgaXMgdGhlIHByb2JsZW0gdGhhdCB0aGUgdGVzdCBmaXh0dXJlIGlzIGRlc2lnbmVkIHRvIHNvbHZlLgogPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgSW4gcHJhY3RpY2UgYSB0ZXN0IGZpeHR1cmUgdXN1YWxseSBpcyBhIGNvbWJpbmF0aW9uIG9mIHNldHVwIGFuZCB0ZWFyZG93biBmdW5jdGlvbnMsIGFzc29jaWF0ZWQgd2l0aCB0ZXN0IGNhc2UuCiAgVGhlIGZvcm1lciBzZXJ2ZXMgdGhlIHB1cnBvc2VzIG9mIHRlc3Qgc2V0dXA7IHRoZSBsYXRlciBpcyBkZWRpY2F0ZWQgdG8gdGhlIGNsZWFudXAgdGFza3MuIElkZWFsbHkgaXQncwogIHByZWZlcmFibGUgdGhhdCBhIHRlc3QgbW9kdWxlIGF1dGhvciBpcyBhYmxlIHRvIGRlZmluZSB2YXJpYWJsZXMgdXNlZCBpbiBmaXh0dXJlcyBvbiB0aGUgc3RhY2sgYW5kIHRoZSBzYW1lIHRpbWUKICBpcyBhYmxlIHRvIHJlZmVyIHRvIHRoZW0gZGlyZWN0bHkgaW4gdGVzdCBjYXNlLgogPC9wPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgSXQncyBpbXBvcnRhbnQgdG8gdW5kZXJzdGFuZCB0aGF0IEMrKyBwcm92aWRlcyBhIHdheSB0byBpbXBsZW1lbnQgYSBzdHJhaWdodGZvcndhcmQgdGVzdCBmaXh0dXJlIHNvbHV0aW9uCiAgdGhhdCBhbG1vc3Qgc2F0aXNmaWVzIG91ciByZXF1aXJlbWVudHMgd2l0aG91dCBhbnkgZXh0cmEgc3VwcG9ydCBmcm9tIHRoZSB0ZXN0IGZyYW1ld29yay4gVGhpcyBtYXkgZXhwbGFpbiB3aHkKICB0ZXN0IGZpeHR1cmVzIHN1cHBvcnQgd2FzIGludHJvZHVjZWQgaW4gdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHNvbWV3aGF0IGxhdGUgaW4gaXRzIGxpZmUgY3ljbGUuIEhlcmUgaXMgaG93IHNpbXBsZSB0ZXN0IG1vZHVsZQogIHdpdGggc3VjaCBhIGZpeHR1cmUgbWF5IGxvb2sgbGlrZToKIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPnN0cnVjdCBNeUZpeHR1cmUgewogICAgIE15Rml4dHVyZSgpIHsgaSA9IG5ldyBpbnQ7ICppID0gMCB9CiAgICAgfiBNeUZpeHR1cmUoKSB7IGRlbGV0ZSBpOyB9CgogICAgaW50KiBpOwp9OwoKQk9PU1RfQVVUT19URVNUX0NBU0UoIHRlc3RfY2FzZTEgKQp7CiAgICBNeUZpeHR1cmUgZjsKCiAgICAvLyBkbyBzb21ldGhpbmcgaW52b2x2aW5nIGYuaQp9CgpCT09TVF9BVVRPX1RFU1RfQ0FTRSggdGVzdF9jYXNlMiApCnsKICAgIE15Rml4dHVyZSBmOwoKICAgIC8vIGRvIHNvbWV0aGluZyBpbnZvbHZpbmcgZi5pCn0KPC9wcmU+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICBUaGlzIGlzIGEgZ2VuZXJpYyBzb2x1dGlvbiB0aGF0IGNhbiBiZSB1c2VkIHRvIGltcGxlbWVudCBhbnkga2luZCBvZiBzaGFyZWQgc2V0dXAgb3IgY2xlYW51cCBwcm9jZWR1cmUuIFN0aWxsCiAgdGhlcmUgYXJlIHNldmVyYWwgbW9yZSBvciBsZXNzIG1pbm9yIHByYWN0aWNhbCBpc3N1ZXMgd2l0aCB0aGlzIHB1cmUgQysrIGJhc2VkIGZpeHR1cmVzIHNvbHV0aW9uOgogPC9wPgo8ZGl2IHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiBjbGFzcz0iaXRlbWl6ZWRsaXN0Ij48dWwgdHlwZT0iZGlzYyI+CjxsaT4KICAgIFdlIG5lZWQgdG8gYWRkIGEgZml4dHVyZSBkZWNsYXJhdGlvbiBzdGF0ZW1lbnQgaW50byBlYWNoIHRlc3QgY2FzZSBtYW51YWxseS4KICAgPC9saT4KPGxpPgogICAgT2JqZWN0cyBkZWZpbmVkIGluIGZpeHR1cmUgYXJlIHJlZmVyZW5jZXMgd2l0aCAiJmx0O2ZpeHR1cmUtaW5zdGFuY2UtbmFtZSZndDsuIiBwcmVmaXguCiAgIDwvbGk+CjxsaT4KICAgIFRoZXJlIGlzIG5vIHBsYWNlIHRvIGV4ZWN1dGUgYSAiZ2xvYmFsIiBmaXh0dXJlLCB3aGljaCBwZXJmb3JtcyAiZ2xvYmFsIiBzZXR1cC9jbGVhbnVwCiAgICBwcm9jZWR1cmVzIGJlZm9yZSBhbmQgYWZ0ZXIgdGVzdGluZy4KICAgPC9saT4KPC91bD48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogIFdoaWxlIHRoZXJlIGlzIGxpdHRsZSB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gY2FuIGRvIHRvIGFkZHJlc3MgdGhlc2UgaXNzdWVzIGZvciBtYW51YWxseSByZWdpc3RlcmVkIHRlc3QgdW5pdHMsIGl0J3MKICBwb3NzaWJsZSB0byByZXNvbHZlIHRoZW0gZm9yIHRlc3QgdW5pdHMgdGhhdCBhcmUgYXV0b21hdGljYWxseSByZWdpc3RlcmVkLiBUbyBkbyB0aGlzIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBkZWZpbmVzIGEKICA8YSBjbGFzcz0ibGluayIgaHJlZj0iZml4dHVyZS9tb2RlbC5odG1sIiB0aXRsZT0iR2VuZXJpYyBmaXh0dXJlIG1vZGVsIj5nZW5lcmljIGZpeHR1cmUgbW9kZWw8L2E+IC0gZml4ZWQgaW50ZXJmYWNlcyB0aGF0IGJvdGggc2V0dXAgYW5kCiAgdGVhcmRvd24gZml4dHVyZSBmdW5jdGlvbnMgc2hvdWxkIGNvbXBseSB0by4gQmFzZWQgb24gdGhlIGdlbmVyaWMgZml4dHVyZSBtb2RlbCwgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHByZXNlbnRzIHNvbHV0aW9uIGZvcgogIHRoZSBmb2xsb3dpbmcgdGFza3M6CiA8L3A+CjxkaXYgeG1sbnM6cmV2PSJodHRwOi8vd3d3LmNzLnJwaS5lZHUvfmdyZWdvZC9ib29zdC90b29scy9kb2MvcmV2aXNpb24iIGNsYXNzPSJpdGVtaXplZGxpc3QiPjx1bCB0eXBlPSJkaXNjIj4KPGxpPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJmaXh0dXJlL3Blci10ZXN0LWNhc2UuaHRtbCIgdGl0bGU9IlBlciB0ZXN0IGNhc2UgZml4dHVyZSI+cGVyIHRlc3QgY2FzZSBmaXh0dXJlIGF1dG9tYXRpb248L2E+PC9saT4KPGxpPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJmaXh0dXJlL3Rlc3Qtc3VpdGUtc2hhcmVkLmh0bWwiIHRpdGxlPSJUZXN0IHN1aXRlIGxldmVsIGZpeHR1cmUiPnNoYXJlZCB0ZXN0IHN1aXRlIGxldmVsIGZpeHR1cmU8L2E+PC9saT4KPGxpPjxhIGNsYXNzPSJsaW5rIiBocmVmPSJmaXh0dXJlL2dsb2JhbC5odG1sIiB0aXRsZT0iR2xvYmFsIGZpeHR1cmUiPiJnbG9iYWwiIGZpeHR1cmUgc3VwcG9ydDwvYT48L2xpPgo8L3VsPjwvZGl2Pgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi9leHBlY3RlZC1mYWlsdXJlcy5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL3ByZXYucG5nIiBhbHQ9IlByZXYiPjwvYT48YSBhY2Nlc3NrZXk9InUiIGhyZWY9Ii4uL3VzZXItZ3VpZGUuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy91cC5wbmciIGFsdD0iVXAiPjwvYT48YSBhY2Nlc3NrZXk9ImgiIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvaG9tZS5wbmciIGFsdD0iSG9tZSI+PC9hPjxhIGFjY2Vzc2tleT0ibiIgaHJlZj0iZml4dHVyZS9tb2RlbC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL25leHQucG5nIiBhbHQ9Ik5leHQiPjwvYT4KPC9kaXY+CjwvYm9keT4KPC9odG1sPgo=