PGh0bWw+CjxoZWFkPgo8bWV0YSBodHRwLWVxdWl2PSJDb250ZW50LVR5cGUiIGNvbnRlbnQ9InRleHQvaHRtbDsgY2hhcnNldD1JU08tODg1OS0xIj4KPHRpdGxlPlRlc3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIG9yIHJlYWR5LCBzZXQ8L3RpdGxlPgo8bGluayByZWw9InN0eWxlc2hlZXQiIGhyZWY9Ii4uLy4uLy4uL3N0eWxlL3N0eWxlLmNzcyIgdHlwZT0idGV4dC9jc3MiPgo8bWV0YSBuYW1lPSJnZW5lcmF0b3IiIGNvbnRlbnQ9IkRvY0Jvb2sgWFNMIFN0eWxlc2hlZXRzIFYxLjc0LjAiPgo8bGluayByZWw9ImhvbWUiIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiIHRpdGxlPSJCb29zdCBUZXN0IExpYnJhcnkiPgo8bGluayByZWw9InVwIiBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwiIHRpdGxlPSJVbml0IFRlc3QgRnJhbWV3b3JrOiBVc2VyJ3MgZ3VpZGUiPgo8bGluayByZWw9InByZXYiIGhyZWY9InVzYWdlLXZhcmlhbnRzL2V4dGVybi10ZXN0LXJ1bm5lci5odG1sIiB0aXRsZT0iRXh0ZXJuYWwgdGVzdCBydW5uZXIgdmFyaWFudCBvZiB0aGUgVVRGIj4KPGxpbmsgcmVsPSJuZXh0IiBocmVmPSJ0ZXN0LW9yZ2FuaXphdGlvbi5odG1sIiB0aXRsZT0iVGVzdCBvcmdhbml6YXRpb24gb3IgdGhlIGhvdXNlIHRoYXQgSmFjayBidWlsdCI+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQxLjIiIHNyYz0iLi4vLi4vLi4vanMvYm9vc3QtdGVzdC5qcyI+PC9zY3JpcHQ+CjwvaGVhZD4KPGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPgo8dGFibGUgd2lkdGg9IjEwMCUiPjx0cj4KPHRkIHdpZHRoPSIxMCUiPjxhIGhyZWY9Ii4uLy4uL2luZGV4Lmh0bWwiPjxpbWcgYWx0PSJIb21lIiB3aWR0aD0iMjI5IiBoZWlnaHQ9IjYxIiBib3JkZXI9IjAiIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vbGlicy90ZXN0L2RvY2Jvb2svaW1nL2Jvb3N0LnRlc3QubG9nby5wbmciPjwvYT48L3RkPgo8dGQgdmFsaWduPSJtaWRkbGUiIGFsaWduPSJsZWZ0Ij4gJmd0OyA8YSBocmVmPSIuLi8uLi91dGYuaHRtbCI+VGhlIFVuaXQgVGVzdCBGcmFtZXdvcms8L2E+ICZndDsgPGEgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sIj5Vc2VyJ3MgZ3VpZGU8L2E+PGEgaHJlZj0iLi4vdGVzdGluZy10b29scy5odG1sIj4KICAgICAgJmd0OwogICAgICA8L2E+PGI+VGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb248L2I+CjwvdGQ+Cjx0ZD48ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgaHJlZj0idXNhZ2UtdmFyaWFudHMvZXh0ZXJuLXRlc3QtcnVubmVyLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvcHJldi5wbmciIGFsdD0iUHJldiI+PC9hPjxhIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj48L3RkPgo8L3RyPjwvdGFibGU+Cjxocj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDQgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUuaW5pdGlhbGl6YXRpb24iPjwvYT5UZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiAgb3IgcmVhZHksIHNldCA8L2g0PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgIFRoZXJlIGFyZSB0d28gdGFza3MgdGhhdCB5b3UgbWF5IG5lZWQgdG8gcGVyZm9ybSBiZWZvcmUgYWN0dWFsIHRlc3RpbmcgY2FuIHN0YXJ0OgogIDwvcD4KPGRpdiB4bWxuczpyZXY9Imh0dHA6Ly93d3cuY3MucnBpLmVkdS9+Z3JlZ29kL2Jvb3N0L3Rvb2xzL2RvYy9yZXZpc2lvbiIgY2xhc3M9Iml0ZW1pemVkbGlzdCI+PHVsIHR5cGU9ImRpc2MiPgo8bGk+CiAgICAgVGhlIHRlc3QgdHJlZSBuZWVkcyB0byBiZSBidWlsdCAodW5sZXNzIHlvdSBhcmUgdXNpbmcgYXV0b21hdGVkIHRlc3QgdW5pdHMgcmVnaXN0cmF0aW9uKS4KICAgIDwvbGk+CjxsaT4KICAgICBDdXN0b20gdGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gbmVlZHMgdG8gYmUgcGVyZm9ybWVkLiBUaGlzIGluY2x1ZGVzCiAgICAgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGNvZGUgdW5kZXIgdGVzdCBhbmQgY3VzdG9tIHR1bmUtdXAgb2YgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHBhcmFtZXRlcnMgKGZvciBleGFtcGxlIHRoZSB0ZXN0IGxvZyBvciB0aGUKICAgICB0ZXN0IHJlc3VsdHMgcmVwb3J0IG91dHB1dCBzdHJlYW1zIHJlZGlyZWN0aW9uKS4KICAgIDwvbGk+CjwvdWw+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgVGhlIGZ1bmN0aW9uIGRlZGljYXRlZCBmb3IgdGhpcyBwdXJwb3NlIGlzIGNhbGxlZCB0aGUgdGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIEFsdGVybmF0aXZlbHkgeW91IGNhbgogICBlbXBsb3kgZ2xvYmFsIGZpeHR1cmVzLCBjb3ZlcmVkIGluIGRldGFpbHMsIGluY2x1ZGluZyBkaWZmZXJlbmNlcyBpbiB0d28gYXBwcm9hY2hlcywgaW4gCiAgIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSJmaXh0dXJlLmh0bWwiIHRpdGxlPSJGaXh0dXJlcyBvciBsZXQgbWUgcmVwZWF0IG15c2VsZiI+dGhlIHNlY3Rpb24gY2FsbGVkICYjODIyMDtGaXh0dXJlcyYjODIyMTs8L2E+LgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUaGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gcmVxdWlyZXMgeW91IHRvIGltcGxlbWVudCB0aGUgdGVzdCBtb2R1bGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24uIFRoZSB0ZXN0IHJ1bm5lciBzdXBwbGllZCB3aXRoIHRoZSBzdGF0aWMKICAgbGlicmFyeSBvciBzaW5nbGUtaGVhZGVyIHZhcmlhbnRzIG9mIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiByZXF1aXJlcyB0aGUgc3BlY2lmaWMgZnVuY3Rpb24gc3BlY2lmaWNhdGlvbi4gVGhlIHRlc3QgcnVubmVyIHN1cHBsaWVkCiAgIHdpdGggdGhlIGR5bmFtaWMgbGlicmFyeSB2YXJpYW50IG9mIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiByZXF1aXJlcyB0aGUgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc2lnbmF0dXJlIG9ubHkuIAogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBGb3IgbWFueSA8YSBjbGFzcz0ibGluayIgaHJlZj0iLi4vdXNlci1ndWlkZS5odG1sI3Rlc3QtbW9kdWxlLmRlZiI+dGVzdCBtb2R1bGVzPC9hPiB5b3UgZG9uJ3QgbmVlZCB0byBkbyBhbnkgY3VzdG9tIGluaXRpYWxpemF0aW9uCiAgIGFuZCB0ZXN0IHRyZWUgY29uc3RydWN0aW9uIGlzIGF1dG9tYXRlZC4gSW4gdGhpcyBjYXNlIHlvdSBkb24ndCByZWFsbHkgbmVlZCB0aGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gYW5kCiAgIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBwcm92aWRlcyBhIHdheSB0byBhdXRvbWF0aWNhbGx5IGdlbmVyYXRlIGFuIGVtcHR5IG9uZSBmb3IgeW91LgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBPcmlnaW5hbCBkZXNpZ24gb2YgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHN1cHBvcnRlZCB0aGUgbWFudWFsIHRlc3QgdHJlZSBjb25zdHJ1Y3Rpb24gb25seS4gTGF0ZXIgdmVyc2lvbnMgaW50cm9kdWNlZCB0aGUKICAgYXV0b21hdGVkIHJlZ2lzdHJhdGlvbiBvZiB0ZXN0IHVuaXRzLiBJbiBsYXRlciB2ZXJzaW9ucyBvZiB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gdGhlIG9yaWdpbmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCiAgIHNwZWNpZmljYXRpb24gYmVjYW1lIGluY29udmVuaWVudCBhbmQgdW5uZWNlc3NhcnkgdW5zYWZlLiBTbyB0aGUgYWx0ZXJuYXRpdmUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc3BlY2lmaWNhdGlvbgogICB3YXMgaW50cm9kdWNlZC4gVGhpcyBjaGFuZ2UgaXMgbm90IGJhY2t3YXJkIGNvbXBhdGlibGUuIFRoZSB0ZXN0IHJ1bm5lcnMgc3VwcGxpZWQgd2l0aCB0aGUgc3RhdGljIGxpYnJhcnkgYW5kCiAgIHNpbmdsZS1oZWFkZXIgdmFyaWFudHMgb2YgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IGJ5IGRlZmF1bHQgc3RpbGwgcmVxdWlyZSBvcmlnaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBzcGVjaWZpY2F0aW9uLCBidXQKICAgc3VwcG9ydCA8YSBjbGFzcz0ibGluayIgaHJlZj0iLi4vY29tcGlsYXRpb24uaHRtbCN1dGYuY29tcGlsYXRpb24uZmxhZ3MiIHRpdGxlPSJUYWJsZaAzLqBUaGUgVVRGIGNvbXBpbGF0aW9uIGZsYWdzIj5jb21waWxhdGlvbiBmbGFnczwvYT4gdGhhdCBzd2l0Y2ggdG8gdGhlIGFsdGVybmF0aXZlIG9uZS4gVGhlIHRlc3QKICAgcnVubmVyIHN1cHBsaWVkIHdpdGggZHluYW1pYyBsaWJyYXJ5IHZhcmlhbnQgb2YgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHJlcXVpcmVzIG5ldyBzcGVjaWZpY2F0aW9uIGFuZCBkb2Vzbid0IHN1cHBvcnQKICAgb3JpZ2luYWwgb25lLiBUaGUgcGxhbiBpcyB0byBkZXByZWNhdGUgdGhlIG9yaWdpbmFsIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNwZWNpZmljYXRpb24gaW4gb25lIG9mIHRoZSBmdXR1cmUKICAgcmVsZWFzZXMgYW5kIHVsdGltYXRlbHkgdG8gc3RvcCBzdXBwb3J0aW5nIGl0LgogIDwvcD4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICBUaGUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gaW52b2NhdGlvbiBpcyBtb25pdG9yZWQgYnkgdGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHRoZSBzYW1lIHdheSBhcyBhbGwgdGhlIHRlc3QgY2FzZXMuIEFuIHVuZXhwZWN0ZWQgCiAgIGV4Y2VwdGlvbiBvciBzeXN0ZW0gZXJyb3IgZGV0ZWN0ZWQgZHVyaW5nIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGludm9jYXRpb24gaXMgdHJlYXRlZCBhcyBpbml0aWFsaXphdGlvbiBlcnJvciBhbmQgCiAgIGlzIHJlcG9ydGVkIGFzIHN1Y2guIAogIDwvcD4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDUgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUuaW5pdGlhbGl6YXRpb24ub3JpZy1zaWduYXR1cmUiPjwvYT5PcmlnaW5hbCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBzaWduYXR1cmUgYW5kIG5hbWU8L2g1PjwvZGl2PjwvZGl2PjwvZGl2Pgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUaGUgb3JpZ2luYWwgZGVzaWduIG9mIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBpbml0aWFsaXphdGlvbiByZXF1aXJlcyB5b3UgdG8gaW1wbGVtZW50IHRoZSBmdW5jdGlvbiB3aXRoIHRoZSBmb2xsb3dpbmcKICAgIHNwZWNpZmljYXRpb246CiAgIDwvcD4KPHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPjxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ym9vc3Q6OnVuaXRfdGVzdDo6dGVzdF9zdWl0ZTwvY29kZT4qIGluaXRfdW5pdF90ZXN0X3N1aXRlKCBpbnQgYXJnYywgY2hhciogYXJndltdICk7PC9wcmU+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIEluIG9yaWdpbmFsIGRlc2lnbiBvZiB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gdGhpcyBmdW5jdGlvbiB3YXMgaW50ZW5kZWQgdG8gaW5pdGlhbGl6ZSBhbmQgcmV0dXJuIGEgbWFzdGVyIHRlc3Qgc3VpdGUuIFRoZSBudWxsCiAgICB2YWx1ZSB3YXMgY29uc2lkZXJlZCBhbiBpbml0aWFsaXphdGlvbiBlcnJvci4gVGhlIGN1cnJlbnQgZGVzaWduIG9mIHRoZSA8YWNyb255bSBjbGFzcz0iYWNyb255bSI+VVRGPC9hY3JvbnltPiBtYWludGFpbnMgbWFzdGVyIHRlc3Qgc3VpdGUgaW5zdGFuY2UKICAgIGludGVybmFsbHkgYW5kIGRvZXMgbm90IHRyZWF0IHRoZSBudWxsIHJlc3VsdCB2YWx1ZSBhcyBhbiBpbml0aWFsaXphdGlvbiBlcnJvci4gSW4gZmFjdCBpdCdzIHJlY29tbWVuZGVkIHRvCiAgICByZXR1cm4gbnVsbCB2YWx1ZSBhbHdheXMgYW5kIHJlZ2lzdGVyIHRlc3QgdW5pdHMgaW4gdGhlIG1hc3RlciB0ZXN0IHN1aXRlIHVzaW5nIHRoZSByZWd1bGFyIHRlc3Qgc3VpdGUgYWRkCiAgICBpbnRlcmZhY2UuIFRoZSBvbmx5IHdheSB0byBpbmRpY2F0ZSBhbiBpbml0aWFsaXphdGlvbiBlcnJvciBpcyB0byB0aHJvdyB0aGUKICAgIDxjb2RlIGNsYXNzPSJjb21wdXRlcm91dHB1dCI+Ym9vc3Q6OnVuaXRfdGVzdDo6ZnJhbWV3b3JrOjpzZXR1cF9lcnJvcjwvY29kZT4gZXhjZXB0aW9uLgogICA8L3A+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIFRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiBwYXJhbWV0ZXJzIGFyZ2MsIGFyZ3YgcHJvdmlkZSB0aGUgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBzcGVjaWZpZWQgZHVyaW5nIHRlc3QKICAgIG1vZHVsZSBpbnZvY2F0aW9uLiBJdCdzIGd1YXJhbnRpZWQgdGhhdCBhbnkgZnJhbWV3b3JrLXNwZWNpZmljIGNvbW1hbmQgbGluZSBhcmd1bWVudHMgYXJlIGV4Y2x1ZGVkLiBUbyBiZQogICAgY29uc2lzdGVkIHdpdGggdGhlIGFsdGVybmF0aXZlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNwZWNpZmljYXRpb24gaXQncyByZWNvbW1lbmRlZCB0aG91Z2ggdG8gYWNjZXNzIHRoZQogICAgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB1c2luZyB0aGUgbWFzdGVyIHRlc3Qgc3VpdGUgaW50ZXJmYWNlLgogICA8L3A+CjwvZGl2Pgo8ZGl2IGNsYXNzPSJzZWN0aW9uIiBsYW5nPSJlbiI+CjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoNSBjbGFzcz0idGl0bGUiPgo8YSBuYW1lPSJ1dGYudXNlci1ndWlkZS5pbml0aWFsaXphdGlvbi5hbHQtc2lnbmF0dXJlIj48L2E+QWx0ZXJuYXRpdmUgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc2lnbmF0dXJlIGFuZCBuYW1lPC9oNT48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgVGhlIGFsdGVybmF0aXZlIGRlc2lnbiBvZiB0aGUgPGFjcm9ueW0gY2xhc3M9ImFjcm9ueW0iPlVURjwvYWNyb255bT4gaW5pdGlhbGl6YXRpb24gcmVxdWlyZXMgeW91IHRvIGltcGxlbWVudCBhIGZ1bmN0aW9uIHdpdGggdGhlIGZvbGxvd2luZwogICAgc3BlY2lmaWNhdGlvbjoKICAgPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+Ym9vbCBpbml0X3VuaXRfdGVzdCgpOzwvcHJlPgo8cCBjbGFzcz0iZmlyc3QtbGluZS1pbmRlbnRlZCI+CiAgICBUaGUgcmVzdWx0IHZhbHVlIG9mIHRoaXMgZnVuY3Rpb24gaW5kaWNhdGVzIHdoZXRoZXIgb3Igbm90IGluaXRpYWxpemF0aW9uIHdhcyBzdWNjZXNzZnVsLiBUbyByZWdpc3RlciB0ZXN0CiAgICB1bml0cyBpbiBhIG1hc3RlciB0ZXN0IHN1aXRlIHVzZSB0aGUgdGVzdCBzdWl0ZSBhZGQgaW50ZXJmYWNlLiBUbyBhY2Nlc3MgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyB1c2UgdGhlIG1hc3RlcgogICAgdGVzdCBzdWl0ZSBpbnRlcmZhY2UuIEl0J3MgZ3VhcmFudGllZCB0aGF0IGFueSBmcmFtZXdvcmstc3BlY2lmaWMgY29tbWFuZCBsaW5lIGFyZ3VtZW50cyBhcmUgZXhjbHVkZWQuCiAgIDwvcD4KPC9kaXY+CjxkaXYgY2xhc3M9InNlY3Rpb24iIGxhbmc9ImVuIj4KPGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGg1IGNsYXNzPSJ0aXRsZSI+CjxhIG5hbWU9InV0Zi51c2VyLWd1aWRlLmluaXRpYWxpemF0aW9uLnNpZ25hdHVyZS10eXBlZGVmIj48L2E+SW5pdGlhbGl6YXRpb24gZnVuY3Rpb24gc2lnbmF0dXJlIGFjY2VzczwvaDU+PC9kaXY+PC9kaXY+PC9kaXY+CjxwIGNsYXNzPSJmaXJzdC1saW5lLWluZGVudGVkIj4KICAgIFRoZSB0ZXN0IHJ1bm5lciBpbnRlcmZhY2UgbmVlZHMgdG8gcmVmZXIgdG8gdGhlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIHNpZ25hdHVyZS4gVGhlIDxhY3JvbnltIGNsYXNzPSJhY3JvbnltIj5VVEY8L2Fjcm9ueW0+IHByb3ZpZGVzIHRoZSB0eXBlZGVmIAogICAgdGhhdCByZXNvbHZlcyB0byBwcm9wZXIgc2lnbmF0dXJlIGluIGFsbCBjb25maWd1cmF0aW9uczoKICAgPC9wPgo8cHJlIGNsYXNzPSJwcm9ncmFtbGlzdGluZyI+bmFtZXNwYWNlIGJvb3N0IHsKbmFtZXNwYWNlIHVuaXRfdGVzdCB7CiNpZmRlZiBCT09TVF9URVNUX0FMVEVSTkFUSVZFX0lOSVRfQVBJCnR5cGVkZWYgYm9vbCAgICAgICAgKCppbml0X3VuaXRfdGVzdF9mdW5jKSgpOwojZWxzZQp0eXBlZGVmIHRlc3Rfc3VpdGUqICgqaW5pdF91bml0X3Rlc3RfZnVuYykoIGludCwgY2hhciogW10gKTsKI2VuZGlmCn0KfTwvcHJlPgo8L2Rpdj4KPGRpdiBjbGFzcz0ic2VjdGlvbiIgbGFuZz0iZW4iPgo8ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDUgY2xhc3M9InRpdGxlIj4KPGEgbmFtZT0idXRmLnVzZXItZ3VpZGUuaW5pdGlhbGl6YXRpb24uYXV0by1nZW5lcmF0aW9uIj48L2E+QXV0b21hdGVkIGdlbmVyYXRpb24gb2YgdGhlIHRlc3QgbW9kdWxlIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uPC9oNT48L2Rpdj48L2Rpdj48L2Rpdj4KPHAgY2xhc3M9ImZpcnN0LWxpbmUtaW5kZW50ZWQiPgogICAgVG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZSBhbiBlbXB0eSB0ZXN0IG1vZHVsZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbiB5b3UgbmVlZCB0byBkZWZpbmUgCiAgICA8YSBjbGFzcz0ieHJlZiIgaHJlZj0iLi4vY29tcGlsYXRpb24uaHRtbCN1dGYuZmxhZy5tYWluIj5CT09TVF9URVNUX01BSU48L2E+IGJlZm9yZSBpbmNsdWRpbmcgdGhlCiAgICA8Y29kZSBjbGFzcz0iZmlsZW5hbWUiPmJvb3N0L3Rlc3QvdW5pdF90ZXN0LmhwcDwvY29kZT4gaGVhZGVyLiBUaGUgdmFsdWUgb2YgdGhpcyBkZWZpbmUgaXMgaWdub3JlZC4KICAgIEFsdGVybmF0aXZlbHkgeW91IGNhbiBkZWZpbmUgdGhlIG1hY3JvIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIuLi9jb21waWxhdGlvbi5odG1sI3V0Zi5mbGFnLm1vZHVsZSI+Qk9PU1RfVEVTVF9NT0RVTEU8L2E+IHRvIGJlIGVxdWFsIHRvIAogICAgYW55IHN0cmluZyAobm90IG5lY2Vzc2FyaWx5IGluIHF1b3RlcykuIFRoaXMgbWFjcm8gY2F1c2VzIHRoZSBzYW1lIHJlc3VsdCBhcyAKICAgIDxhIGNsYXNzPSJ4cmVmIiBocmVmPSIuLi9jb21waWxhdGlvbi5odG1sI3V0Zi5mbGFnLm1haW4iPkJPT1NUX1RFU1RfTUFJTjwvYT4sIGFuZCBpbiBhZGRpdGlvbiB0aGUgbWFjcm8gdmFsdWUgYmVjb21lcyB0aGUgbmFtZSBvZiB0aGUgCiAgICBtYXN0ZXIgdGVzdCBzdWl0ZS4KICAgPC9wPgo8ZGl2IGNsYXNzPSJpbXBvcnRhbnQiPjx0YWJsZSBib3JkZXI9IjAiIHN1bW1hcnk9IkltcG9ydGFudCI+Cjx0cj4KPHRkIHJvd3NwYW49IjIiIGFsaWduPSJjZW50ZXIiIHZhbGlnbj0idG9wIiB3aWR0aD0iMjUiPjxpbWcgYWx0PSJbSW1wb3J0YW50XSIgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvaW1wb3J0YW50LnBuZyI+PC90ZD4KPHRoIGFsaWduPSJsZWZ0Ij5JbXBvcnRhbnQ8L3RoPgo8L3RyPgo8dHI+PHRkIGFsaWduPSJsZWZ0IiB2YWxpZ249InRvcCI+PHA+CiAgICAgRm9yIGEgdGVzdCBtb2R1bGUgY29uc2lzdGluZyBvZiBtdWx0aXBsZSBzb3VyY2UgZmlsZXMgeW91IGhhdmUgdG8gZGVmaW5lIHRoZXNlIGZsYWdzIGluIGEgc2luZ2xlIHRlc3QgZmlsZSBvbmx5LgogICAgIE90aGVyd2lzZSB5b3UgZW5kIHVwIHdpdGggbXVsdGlwbGUgaW5zdGFuY2VzIG9mIHRoZSBpbml0aWFsaXphdGlvbiBmdW5jdGlvbi4KICAgIDwvcD48L3RkPjwvdHI+CjwvdGFibGU+PC9kaXY+CjwvZGl2Pgo8L2Rpdj4KPHRhYmxlIHhtbG5zOnJldj0iaHR0cDovL3d3dy5jcy5ycGkuZWR1L35ncmVnb2QvYm9vc3QvdG9vbHMvZG9jL3JldmlzaW9uIiB3aWR0aD0iMTAwJSI+PHRyPgo8dGQgYWxpZ249ImxlZnQiPjwvdGQ+Cjx0ZCBhbGlnbj0icmlnaHQiPjxkaXYgY2xhc3M9ImNvcHlyaWdodC1mb290ZXIiPkNvcHlyaWdodCCpIDIwMDEtMjAwNyBHZW5uYWRpeSBSb3plbnRhbDwvZGl2PjwvdGQ+CjwvdHI+PC90YWJsZT4KPGhyPgo8ZGl2IGNsYXNzPSJzcGlyaXQtbmF2Ij4KPGEgYWNjZXNza2V5PSJwIiBocmVmPSJ1c2FnZS12YXJpYW50cy9leHRlcm4tdGVzdC1ydW5uZXIuaHRtbCI+PGltZyBzcmM9Ii4uLy4uLy4uLy4uLy4uLy4uL2RvYy9odG1sL2ltYWdlcy9wcmV2LnBuZyIgYWx0PSJQcmV2Ij48L2E+PGEgYWNjZXNza2V5PSJ1IiBocmVmPSIuLi91c2VyLWd1aWRlLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvdXAucG5nIiBhbHQ9IlVwIj48L2E+PGEgYWNjZXNza2V5PSJoIiBocmVmPSIuLi8uLi9pbmRleC5odG1sIj48aW1nIHNyYz0iLi4vLi4vLi4vLi4vLi4vLi4vZG9jL2h0bWwvaW1hZ2VzL2hvbWUucG5nIiBhbHQ9IkhvbWUiPjwvYT48YSBhY2Nlc3NrZXk9Im4iIGhyZWY9InRlc3Qtb3JnYW5pemF0aW9uLmh0bWwiPjxpbWcgc3JjPSIuLi8uLi8uLi8uLi8uLi8uLi9kb2MvaHRtbC9pbWFnZXMvbmV4dC5wbmciIGFsdD0iTmV4dCI+PC9hPgo8L2Rpdj4KPC9ib2R5Pgo8L2h0bWw+Cg==