PGh0bWw+PGhlYWQ+PG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9SVNPLTg4NTktMSI+PHRpdGxlPkQtQnVzIFRlc3QgUGxhbjwvdGl0bGU+PG1ldGEgbmFtZT0iZ2VuZXJhdG9yIiBjb250ZW50PSJEb2NCb29rIFhTTCBTdHlsZXNoZWV0cyBWMS43NS4yIj48L2hlYWQ+PGJvZHkgYmdjb2xvcj0id2hpdGUiIHRleHQ9ImJsYWNrIiBsaW5rPSIjMDAwMEZGIiB2bGluaz0iIzg0MDA4NCIgYWxpbms9IiMwMDAwRkYiPjxkaXYgY2xhc3M9ImFydGljbGUiIHRpdGxlPSJELUJ1cyBUZXN0IFBsYW4iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiPjxhIG5hbWU9ImluZGV4Ij48L2E+RC1CdXMgVGVzdCBQbGFuPC9oMj48L2Rpdj48ZGl2PjxkaXYgY2xhc3M9ImF1dGhvcmdyb3VwIj48ZGl2IGNsYXNzPSJhdXRob3IiPjxoMyBjbGFzcz0iYXV0aG9yIj48c3BhbiBjbGFzcz0iZmlyc3RuYW1lIj5BbmRlcnM8L3NwYW4+IDxzcGFuIGNsYXNzPSJzdXJuYW1lIj5DYXJsc3Nvbjwvc3Bhbj48L2gzPjxkaXYgY2xhc3M9ImFmZmlsaWF0aW9uIj48c3BhbiBjbGFzcz0ib3JnbmFtZSI+Q29kZUZhY3RvcnkgQUI8YnI+PC9zcGFuPjxkaXYgY2xhc3M9ImFkZHJlc3MiPjxwPjxjb2RlIGNsYXNzPSJlbWFpbCI+Jmx0OzxhIGNsYXNzPSJlbWFpbCIgaHJlZj0ibWFpbHRvOmFuZGVyc2NhQGNvZGVmYWN0b3J5LnNlIj5hbmRlcnNjYUBjb2RlZmFjdG9yeS5zZTwvYT4mZ3Q7PC9jb2RlPjwvcD48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48L2Rpdj48aHI+PC9kaXY+PGRpdiBjbGFzcz0idG9jIj48cD48Yj5UYWJsZSBvZiBDb250ZW50czwvYj48L3A+PGRsPjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNpbnRyb2R1Y3Rpb24iPkludHJvZHVjdGlvbjwvYT48L3NwYW4+PC9kdD48ZGQ+PGRsPjxkdD48c3BhbiBjbGFzcz0ic2VjdDIiPjxhIGhyZWY9IiNpbXBvcnRhbmNlLW9mLXRlc3RpbmciPlRoZSBpbXBvcnRhbmNlIG9mIHRlc3Rpbmc8L2E+PC9zcGFuPjwvZHQ+PC9kbD48L2RkPjxkdD48c3BhbiBjbGFzcz0ic2VjdDEiPjxhIGhyZWY9IiNjbGllbnQtbGlicmFyeSI+VGVzdGluZyB0aGUgRC1CdXMgY2xpZW50IGxpYnJhcnk8L2E+PC9zcGFuPjwvZHQ+PGRkPjxkbD48ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjZGF0YS1zdHJ1Y3R1cmVzIj5EYXRhIFN0cnVjdHVyZXM8L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI21lc3NhZ2UtbG9hZGVyIj5NZXNzYWdlIGxvYWRlcjwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYXV0aGVudGljYXRpb24iPkF1dGhlbnRpY2F0aW9uPC9hPjwvc3Bhbj48L2R0PjwvZGw+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjZGFlbW9uIj5UZXN0aW5nIHRoZSBELUJ1cyBidXMgZGFlbW9uPC9hPjwvc3Bhbj48L2R0PjxkZD48ZGw+PGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2RlYnVnLXRyYW5zcG9ydCI+VGhlIGRlYnVnIHRyYW5zcG9ydDwvYT48L3NwYW4+PC9kdD48ZHQ+PHNwYW4gY2xhc3M9InNlY3QyIj48YSBocmVmPSIjYnVzLXRlc3QiPlRoZSBidXMtdGVzdCBwcm9ncmFtPC9hPjwvc3Bhbj48L2R0PjwvZGw+PC9kZD48ZHQ+PHNwYW4gY2xhc3M9InNlY3QxIj48YSBocmVmPSIjb3RoZXItdGVzdHMiPk90aGVyIHRlc3RzPC9hPjwvc3Bhbj48L2R0PjxkZD48ZGw+PGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI29vbS1yb2J1c3RuZXNzIj5PdXQtT2YtTWVtb3J5IHJvYnVzdG5lc3M8L2E+PC9zcGFuPjwvZHQ+PGR0PjxzcGFuIGNsYXNzPSJzZWN0MiI+PGEgaHJlZj0iI2xlYWtzLWFuZC1vdGhlci1zdHVmZiI+TWVtb3J5IGxlYWtzIGFuZCBjb2RlIHJvYnVzdG5lc3M8L2E+PC9zcGFuPjwvZHQ+PC9kbD48L2RkPjwvZGw+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDEiIHRpdGxlPSJJbnRyb2R1Y3Rpb24iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgbmFtZT0iaW50cm9kdWN0aW9uIj48L2E+SW50cm9kdWN0aW9uPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj48cD4KICAgICAgVGhpcyBkb2N1bWVudCB0cmllcyB0byBleHBsYWluIHRoZSBkZXRhaWxzIG9mIHRoZSB0ZXN0IHBsYW4gZm9yIEQtQnVzCiAgICA8L3A+PGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSJUaGUgaW1wb3J0YW5jZSBvZiB0ZXN0aW5nIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJpbXBvcnRhbmNlLW9mLXRlc3RpbmciPjwvYT5UaGUgaW1wb3J0YW5jZSBvZiB0ZXN0aW5nPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48cD4KICAgICAgICBBcyB3aXRoIGFueSBiaWcgbGlicmFyeSBvciBwcm9ncmFtLCB0ZXN0aW5nIGlzIGltcG9ydGFudC4gSXQKICAgICAgICBjYW4gaGVscCBmaW5kIGJ1Z3MgYW5kIHJlZ3Jlc3Npb25zIGFuZCBtYWtlIHRoZSBjb2RlIGJldHRlcgogICAgICAgIG92ZXJhbGwuIAogICAgICA8L3A+PHA+CiAgICAgICAgRC1CdXMgaXMgYSBsYXJnZSBhbmQgY29tcGxleCBwaWVjZSBvZiBzb2Z0d2FyZSAoYWJvdXQgMjUsMDAwCiAgICAgICAgbGluZXMgb2YgY29kZSBmb3IgdGhlIGNsaWVudCBsaWJyYXJ5LCBhbmQgMiw1MDAgbGluZXMgb2YgY29kZQogICAgICAgIGZvciB0aGUgYnVzIGRhZW1vbikgYW5kIGl0J3MgdGhlcmVmb3JlIGltcG9ydGFudCB0byB0cnkgdG8gbWFrZSBzdXJlCiAgICAgICAgdGhhdCBhbGwgcGFydHMgb2YgdGhlIHNvZnR3YXJlIGlzIGZ1bmN0aW9uaW5nIGNvcnJlY3RseS4KICAgICAgPC9wPjxwPgogICAgICAgIEQtQnVzIGNhbiBiZSBidWlsdCB3aXRoIHN1cHBvcnQgZm9yIHRlc3RpbmcgYnkgcGFzc2luZwogICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj4tLWVuYWJsZS10ZXN0czwvY29kZT4uIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LiBJdAogICAgICAgIGlzIHJlY29tbWVuZGVkIHRoYXQgcHJvZHVjdGlvbiBzeXN0ZW1zIGJ1aWxkIHdpdGhvdXQgdGVzdGluZwogICAgICAgIHNpbmNlIHRoYXQgcmVkdWNlcyB0aGUgRC1CdXMgY2xpZW50IGxpYnJhcnkgc2l6ZS4KICAgICAgPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iVGVzdGluZyB0aGUgRC1CdXMgY2xpZW50IGxpYnJhcnkiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgbmFtZT0iY2xpZW50LWxpYnJhcnkiPjwvYT5UZXN0aW5nIHRoZSBELUJ1cyBjbGllbnQgbGlicmFyeTwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+PHA+CiAgICAgIFRoZSB0ZXN0cyBmb3IgdGhlIGNsaWVudCBsaWJyYXJ5IGNvbnNpc3Qgb2YgdGhlIGRidXMtdGVzdAogICAgICBwcm9ncmFtIHdoaWNoIGlzIGEgdW5pdCB0ZXN0IGZvciBhbGwgYXNwZWN0cyBvZiB0aGUgY2xpZW50CiAgICAgIGxpYnJhcnkuIFdoZW5ldmVyIGEgYnVnIGluIHRoZSBjbGllbnQgbGlicmFyeSBpcyBmb3VuZCBhbmQKICAgICAgZml4ZWQsIGEgdGVzdCBpcyBhZGRlZCB0byBtYWtlIHN1cmUgdGhhdCB0aGUgYnVnIHdvbid0IG9jY3VyIGFnYWluLgogICAgPC9wPjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iRGF0YSBTdHJ1Y3R1cmVzIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJkYXRhLXN0cnVjdHVyZXMiPjwvYT5EYXRhIFN0cnVjdHVyZXM8L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPgogICAgICBUaGUgRC1CdXMgY2xpZW50IGxpYnJhcnkgY29uc2lzdHMgb2Ygc29tZSBkYXRhIHN0cnVjdHVyZXMgdGhhdAogICAgICBhcmUgdXNlZCBpbnRlcm5hbGx5OyBhIGxpbmtlZCBsaXN0IGNsYXNzLCBhIGhhc2h0YWJsZSBjbGFzcyBhbmQKICAgICAgYSBzdHJpbmcgY2xhc3MuIEFsbCBhc3BlY3RzIG9mIHRob3NlIGFyZSB0ZXN0ZWQgYnkgZGJ1cy10ZXN0LgogICAgICA8L3A+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSJNZXNzYWdlIGxvYWRlciI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0ibWVzc2FnZS1sb2FkZXIiPjwvYT5NZXNzYWdlIGxvYWRlcjwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+CiAgICAgICAgVGhlIG1lc3NhZ2UgbG9hZGVyIGlzIHRoZSBwYXJ0IG9mIEQtQnVzIHRoYXQgdGFrZXMgbWVzc2FnZXMgaW4KICAgICAgICByYXcgY2hhcmFjdGVyIGZvcm0gYW5kIHBhcnNlcyB0aGVtLCB0dXJuaW5nIHRoZW0gaW50byBEQnVzTWVzc2FnZXMuCiAgICAgIDwvcD48cD4KICAgICAgICBUaGlzIGlzIG9uZSBvZiB0aGUgcGFydHMgb2YgRC1CdXMgdGhhdAogICAgICAgIDxzcGFuIGNsYXNzPSJlbXBoYXNpcyI+PGVtPm11c3Q8L2VtPjwvc3Bhbj4gYmUgYWJzb2x1dGVseSBidWctZnJlZSBhbmQKICAgICAgICByb2J1c3QuIFRoZSBtZXNzYWdlIGxvYWRlciBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgaW52YWxpZAogICAgICAgIGFuZCBpbmNvbXBsZXRlIG1lc3NhZ2VzIHdpdGhvdXQgY3Jhc2hpbmcuIE5vdCBkb2luZyBzbyBpcyBhCiAgICAgICAgc2VyaW91cyBpc3N1ZSBhbmQgY2FuIGVhc2lseSByZXN1bHQgaW4gRC1CdXMgYmVpbmcgZXhwbG9pdGFibGUKICAgICAgICB0byBEb1MgYXR0YWNrcy4KICAgICAgPC9wPjxwPgogICAgICAgIFRvIHNvbHZlIHRoZXNlIHByb2JsZW1zLCB0aGVyZSBpcyBhIHRlc3RpbmcgZmVhdHVyZSBjYWxsZWQgdGhlCiAgICAgICAgTWVzc2FnZSBCdWlsZGVyLiBUaGUgbWVzc2FnZSBidWlsZGVyIGNhbiB0YWtlIGEgc2VyaWFsaXplZAogICAgICAgIG1lc3NhZ2UgaW4gc3RyaW5nLWZvcm0gYW5kIGNvbnZlcnQgaXQgaW50byBhIHJhdyBjaGFyYWN0ZXIKICAgICAgICBzdHJpbmcgd2hpY2ggY2FuIHRoZW4gYmUgbG9hZGVkIGJ5IHRoZSBtZXNzYWdlIGxvYWRlci4gCiAgICAgIDwvcD48ZGl2IGNsYXNzPSJmaWd1cmUiPjxhIG5hbWU9ImlkcDU5MDI0Ij48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5GaWd1cmWgMS6gRXhhbXBsZSBvZiBhIG1lc3NhZ2UgaW4gc3RyaW5nIGZvcm08L2I+PC9wPjxkaXYgY2xhc3M9ImZpZ3VyZS1jb250ZW50cyI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgogICAgICAgICAgIyBTdGFuZGFyZCBvcmcuZnJlZWRlc2t0b3AuREJ1cy5IZWxsbyBtZXNzYWdlCgogICAgICAgICAgVkFMSURfSEVBREVSCiAgICAgICAgICBGSUVMRF9OQU1FIG5hbWUKICAgICAgICAgIFRZUEUgU1RSSU5HCiAgICAgICAgICBTVFJJTkcgJ29yZy5mcmVlZGVza3RvcC5EQnVzLkhlbGxvJwogICAgICAgICAgRklFTERfTkFNRSBzcnZjCiAgICAgICAgICBUWVBFIFNUUklORwogICAgICAgICAgU1RSSU5HICdvcmcuZnJlZWRlc2t0b3AuREJ1cycKICAgICAgICAgIEFMSUdOIDgKICAgICAgICAgIEVORF9MRU5HVEggSGVhZGVyCiAgICAgICAgICBTVEFSVF9MRU5HVEggQm9keQogICAgICAgICAgRU5EX0xFTkdUSCBCb2R5CiAgICAgICAgPC9wcmU+PC9kaXY+PC9kaXY+PGJyIGNsYXNzPSJmaWd1cmUtYnJlYWsiPjxwPgogICAgICAgIFRoZSBmaWxlIGZvcm1hdCBvZiBtZXNzYWdlcyBpbiBzdHJpbmcgZm9ybSBpcyBkb2N1bWVudGVkIGluCiAgICAgICAgdGhlIEQtQnVzIFJlZmVyZW5jZSBNYW51YWwuCiAgICAgIDwvcD48cD4KICAgICAgICBUaGUgbWVzc2FnZSB0ZXN0IHBhcnQgb2YgZGJ1cy10ZXN0IGlzIHVzaW5nIHRoZSBtZXNzYWdlCiAgICAgICAgYnVpbGRlciB0byBidWlsZCBkaWZmZXJlbnQga2luZHMgb2YgbWVzc2FnZXMsIGJvdGggdmFsaWQsCiAgICAgICAgaW52YWxpZCwgYW5kIGludmFsaWQgb25lcywgdG8gbWFrZSBzdXJlIHRoYXQgdGhlIGxvYWRlciB3b24ndAogICAgICAgIGNyYXNoIG9yIGxlYWsgbWVtb3J5IG9mIGFueSBvZiB0aG9zZSwgYW5kIHRoYXQgdGhlIGxvYWRlcgogICAgICAgIGtub3dzIGlmIGEgbWVzc2FnZSBpcyB2YWxpZCBvciBub3QuCiAgICAgIDwvcD48cD4KICAgICAgICBUaGVyZSBpcyBhbHNvIGEgdGVzdCBwcm9ncmFtIGNhbGxlZAogICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5icmVhay1sb2FkZXI8L2NvZGU+IHRoYXQgbG9hZHMgYSBtZXNzYWdlIGluCiAgICAgICAgc3RyaW5nLWZvcm0gaW50byByYXcgY2hhcmFjdGVyIGZvcm0gdXNpbmcgdGhlIG1lc3NhZ2UKICAgICAgICBidWlsZGVyLiBJdCB0aGVuIHJhbmRvbWx5IGNoYW5nZXMgdGhlIG1lc3NhZ2UsIGl0IGNhbiBmb3IKICAgICAgICBleGFtcGxlIHJlcGxhY2Ugc2luZ2xlIGJ5dGVzIG9mIGRhdGEgb3IgbW9kaWZ5IHRoZSBsZW5ndGggb2YKICAgICAgICB0aGUgbWVzc2FnZS4gVGhpcyBpcyB0byBzaW11bGF0ZSBuZXR3b3JrIGVycm9ycy4gVGhlCiAgICAgICAgYnJlYWstbG9hZGVyIHByb2dyYW0gc2F2ZXMgYWxsIHRoZSBtZXNzYWdlcyBsZWFkaW5nIHRvIGVycm9ycwogICAgICAgIHNvIGl0IGNhbiBlYXNpbHkgYmUgcnVuIGZvciBhIGxvbmcgcGVyaW9kIG9mIHRpbWUuCiAgICAgIDwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9IkF1dGhlbnRpY2F0aW9uIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJhdXRoZW50aWNhdGlvbiI+PC9hPkF1dGhlbnRpY2F0aW9uPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48cD4KICAgICAgICBGb3IgdGVzdGluZyBhdXRoZW50aWNhdGlvbiwgdGhlcmUgaXMgYSB0ZXN0aW5nIGZlYXR1cmUgdGhhdAogICAgICAgIGNhbiByZWFkIGF1dGhlbnRpY2F0aW9uIHNlcXVlbmNlcyBmcm9tIGEgZmlsZSBhbmQgcGxheSB0aGVtCiAgICAgICAgYmFjayB0byBhIGR1bW15IHNlcnZlciBhbmQgY2xpZW50IHRvIG1ha2Ugc3VyZSB0aGF0CiAgICAgICAgYXV0aGVudGljYXRpb24gaXMgd29ya2luZyBhY2NvcmRpbmcgdG8gdGhlIHNwZWNpZmljYXRpb24uCiAgICAgIDwvcD48ZGl2IGNsYXNzPSJmaWd1cmUiPjxhIG5hbWU9ImlkcDY1NzEyIj48L2E+PHAgY2xhc3M9InRpdGxlIj48Yj5GaWd1cmWgMi6gRXhhbXBsZSBvZiBhbiBhdXRoZW50aWNhdGlvbiBzY3JpcHQ8L2I+PC9wPjxkaXYgY2xhc3M9ImZpZ3VyZS1jb250ZW50cyI+PHByZSBjbGFzcz0icHJvZ3JhbWxpc3RpbmciPgogICAgICAgICAgIyMgdGhpcyB0ZXN0cyBhIHN1Y2Nlc3NmdWwgYXV0aCBvZiB0eXBlIEVYVEVSTkFMCiAgICAgICAgICAKICAgICAgICAgIFNFUlZFUgogICAgICAgICAgU0VORCAnQVVUSCBFWFRFUk5BTCBVU0VSTkFNRV9IRVgnCiAgICAgICAgICBFWFBFQ1RfQ09NTUFORCBPSwogICAgICAgICAgRVhQRUNUX1NUQVRFIFdBSVRJTkdfRk9SX0lOUFVUCiAgICAgICAgICBTRU5EICdCRUdJTicKICAgICAgICAgIEVYUEVDVF9TVEFURSBBVVRIRU5USUNBVEVECiAgICAgICAgPC9wcmU+PC9kaXY+PC9kaXY+PGJyIGNsYXNzPSJmaWd1cmUtYnJlYWsiPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iVGVzdGluZyB0aGUgRC1CdXMgYnVzIGRhZW1vbiI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgyIGNsYXNzPSJ0aXRsZSIgc3R5bGU9ImNsZWFyOiBib3RoIj48YSBuYW1lPSJkYWVtb24iPjwvYT5UZXN0aW5nIHRoZSBELUJ1cyBidXMgZGFlbW9uPC9oMj48L2Rpdj48L2Rpdj48L2Rpdj48cD4KICAgICAgU2luY2UgdGhlIEQtQnVzIGJ1cyBkYWVtb24gaXMgdXNpbmcgdGhlIEQtQnVzIGNsaWVudCBsaWJyYXJ5IGl0CiAgICAgIHdpbGwgYmVuZWZpdCBmcm9tIGFsbCB0ZXN0cyBkb25lIG9uIHRoZSBjbGllbnQgbGlicmFyeSwgYnV0CiAgICAgIHRoZXJlIGlzIHN0aWxsIHRoZSBpc3N1ZSBvZiB0ZXN0aW5nIGNsaWVudC1zZXJ2ZXIgY29tbXVuaWNhdGlvbi4KICAgICAgVGhpcyBpcyBtb3JlIGNvbXBsaWNhdGVkIHNpbmNlIGl0IGl0IG1heSByZXF1aXJlIGFub3RoZXIgcHJvY2VzcwogICAgICBydW5uaW5nLgogICAgPC9wPjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iVGhlIGRlYnVnIHRyYW5zcG9ydCI+PGRpdiBjbGFzcz0idGl0bGVwYWdlIj48ZGl2PjxkaXY+PGgzIGNsYXNzPSJ0aXRsZSI+PGEgbmFtZT0iZGVidWctdHJhbnNwb3J0Ij48L2E+VGhlIGRlYnVnIHRyYW5zcG9ydDwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+CiAgICAgICAgSW4gRC1CdXMsIGEgPHNwYW4gY2xhc3M9ImVtcGhhc2lzIj48ZW0+dHJhbnNwb3J0PC9lbT48L3NwYW4+IGlzIGEgY2xhc3MgdGhhdAogICAgICAgIGhhbmRsZXMgc2VuZGluZyBhbmQgcmVjZWl2aW5nIHJhdyBkYXRhIG92ZXIgYSBjZXJ0YWluCiAgICAgICAgbWVkaXVtLiBUaGUgdHJhbnNwb3J0IHRoYXQgaXMgdXNlZCBtb3N0IGluIEQtQnVzIGlzIHRoZSBVTklYCiAgICAgICAgdHJhbnNwb3J0IHdpdGggc2VuZHMgYW5kIHJlY2V2aWVzIGRhdGEgb3ZlciBhIFVOSVggc29ja2V0LiBBCiAgICAgICAgdHJhbnNwb3J0IHRoYXQgdHVubmVscyBkYXRhIHRocm91Z2ggWDExIGNsaWVudCBtZXNzYWdlcyBpcwogICAgICAgIGFsc28gdW5kZXIgZGV2ZWxvcG1lbnQuCiAgICAgIDwvcD48cD4KICAgICAgICBUaGUgRC1CdXMgZGVidWcgdHJhbnNwb3J0IGlzIGEgc3BlY2lhbGl6ZWQgdHJhbnNwb3J0IHRoYXQKICAgICAgICB3b3JrcyBpbi1wcm9jZXNzLiBUaGlzIG1lYW5zIHRoYXQgYSBjbGllbnQgYW5kIHNlcnZlciB0aGF0CiAgICAgICAgZXhpc3RzIGluIHRoZSBzYW1lIHByb2Nlc3MgY2FuIHRhbGsgdG8gZWFjaG90aGVyIHdpdGhvdXQgdXNpbmcKICAgICAgICBhIHNvY2tldC4KICAgICAgPC9wPjwvZGl2PjxkaXYgY2xhc3M9InNlY3QyIiB0aXRsZT0iVGhlIGJ1cy10ZXN0IHByb2dyYW0iPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5hbWU9ImJ1cy10ZXN0Ij48L2E+VGhlIGJ1cy10ZXN0IHByb2dyYW08L2gzPjwvZGl2PjwvZGl2PjwvZGl2PjxwPgogICAgICAgIFRoZSBidXMtdGVzdCBwcm9ncmFtIGlzIGEgcHJvZ3JhbSB0aGF0IGlzIHVzZWQgdG8gdGVzdCB2YXJpb3VzCiAgICAgICAgcGFydHMgb2YgdGhlIEQtQnVzIGJ1cyBkYWVtb247IHJvYnVzdG5lc3MgYW5kIHRoYXQgaXQgY29uZm9ybXMKICAgICAgICB0byB0aGUgc3BlY2lmaWNhdGlvbnMuCiAgICAgIDwvcD48cD4KICAgICAgICBUaGUgdGVzdCBwcm9ncmFtIGhhcyB0aGUgbmVjZXNzYXJ5IGNvZGUgZnJvbSB0aGUgYnVzIGRhZW1vbgogICAgICAgIGxpbmtlZCBpbiwgYW5kIGl0IHVzZXMgdGhlIGRlYnVnIHRyYW5zcG9ydCBmb3IKICAgICAgICBjb21tdW5pY2F0aW9uLiBUaGlzIG1lYW5zIHRoYXQgdGhlIGJ1cyBkYWVtb24gY29kZSBjYW4gYmUKICAgICAgICB0ZXN0ZWQgd2l0aG91dCB0aGUgcmVhbCBidXMgYWN0dWFsbHkgcnVubmluZywgd2hpY2ggbWFrZXMKICAgICAgICB0ZXN0aW5nIGVhc2llci4KICAgICAgPC9wPjxwPgogICAgICAgIFRoZSBidXMtdGVzdCBwcm9ncmFtIHNob3VsZCB0ZXN0IGFsbCBtYWpvciBmZWF0dXJlcyBvZiB0aGUKICAgICAgICBidXMsIHN1Y2ggYXMgc2VydmljZSByZWdpc3RyYXRpb24sIG5vdGlmaWNhdGlvbiB3aGVuIHRoaW5ncwogICAgICAgIG9jY3VycyBhbmQgbWVzc2FnZSBtYXRjaGluZy4KICAgICAgPC9wPjwvZGl2PjwvZGl2PjxkaXYgY2xhc3M9InNlY3QxIiB0aXRsZT0iT3RoZXIgdGVzdHMiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMiBjbGFzcz0idGl0bGUiIHN0eWxlPSJjbGVhcjogYm90aCI+PGEgbmFtZT0ib3RoZXItdGVzdHMiPjwvYT5PdGhlciB0ZXN0czwvaDI+PC9kaXY+PC9kaXY+PC9kaXY+PGRpdiBjbGFzcz0ic2VjdDIiIHRpdGxlPSJPdXQtT2YtTWVtb3J5IHJvYnVzdG5lc3MiPjxkaXYgY2xhc3M9InRpdGxlcGFnZSI+PGRpdj48ZGl2PjxoMyBjbGFzcz0idGl0bGUiPjxhIG5hbWU9Im9vbS1yb2J1c3RuZXNzIj48L2E+T3V0LU9mLU1lbW9yeSByb2J1c3RuZXNzPC9oMz48L2Rpdj48L2Rpdj48L2Rpdj48cD4KICAgICAgICBTaW5jZSBELUJ1cyBzaG91bGQgYmUgYWJsZSB0byBiZSB1c2VkIGluIGVtYmVkZGVkIGRldmljZXMsIGFuZAogICAgICAgIGFsc28gYXMgYSBzeXN0ZW0gc2VydmljZSwgaXQgc2hvdWxkIGJlIGFibGUgdG8gY29wZSB3aXRoCiAgICAgICAgbG93LW1lbW9yeSBzaXR1YXRpb25zIHdpdGhvdXQgZXhpdGluZyBvciBjcmFzaGluZy4KICAgICAgPC9wPjxwPgogICAgICAgIEluIHByYWN0aWNlLCB0aGlzIG1lYW5zIHRoYXQgYm90aCB0aGUgY2xpZW50IGFuZCBzZXJ2ZXIgY29kZQogICAgICAgIG11c3QgYmUgYWJsZSB0byBoYW5kbGUgZGJ1c19tYWxsb2MgcmV0dXJuaW5nIE5VTEwuIAogICAgICA8L3A+PHA+CiAgICAgICAgVG8gdGVzdCB0aGlzLCB0d28gZW52aXJvbm1lbnQgdmFyaWFibGVzCiAgICAgICAgZXhpc3QuIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5EQlVTX01BTExPQ19GQUlMX05USDwvY29kZT4gd2lsbCBtYWtlIGV2ZXJ5CiAgICAgICAgbnRoIGNhbGwgdG8gZGJ1c19tYWxsb2MgcmV0dXJuIE5VTEwsIGFuZAogICAgICAgIDxjb2RlIGNsYXNzPSJsaXRlcmFsIj5EQlVTX01BTExPQ19GQUlMX0dSRUFURVJfVEhBTjwvY29kZT4gd2lsbCBtYWtlIGFueQogICAgICAgIGRidXNfbWFsbG9jIGNhbGwgd2l0aCBhIHJlcXVlc3QgZm9yIG1vcmUgdGhhbiB0aGUgc3BlY2lmaWVkCiAgICAgICAgbnVtYmVyIG9mIGJ5dGVzIGZhaWwuCiAgICAgIDwvcD48L2Rpdj48ZGl2IGNsYXNzPSJzZWN0MiIgdGl0bGU9Ik1lbW9yeSBsZWFrcyBhbmQgY29kZSByb2J1c3RuZXNzIj48ZGl2IGNsYXNzPSJ0aXRsZXBhZ2UiPjxkaXY+PGRpdj48aDMgY2xhc3M9InRpdGxlIj48YSBuYW1lPSJsZWFrcy1hbmQtb3RoZXItc3R1ZmYiPjwvYT5NZW1vcnkgbGVha3MgYW5kIGNvZGUgcm9idXN0bmVzczwvaDM+PC9kaXY+PC9kaXY+PC9kaXY+PHA+CiAgICAgICAgTmF0dXJhbGx5IHRoZXJlIGFyZSBzb21lIHRoaW5ncyB0aGF0IHRlc3RzIGNhbid0IGJlIHdyaXR0ZW4KICAgICAgICBmb3IsIGZvciBleGFtcGxlIHRoaW5ncyBsaWtlIG1lbW9yeSBsZWFrcyBhbmQgb3V0LW9mLWJvdW5kcwogICAgICAgIG1lbW9yeSByZWFkaW5nIG9yIHdyaXRpbmcuCiAgICAgIDwvcD48cD4KICAgICAgICBMdWNraWx5IHRoZXJlIGV4aXN0cyBnb29kIHRvb2xzIGZvciBjYXRjaGluZyBzdWNoIGVycm9ycy4gT25lCiAgICAgICAgZnJlZSBnb29kIHRvb2wgaXMgPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vZGV2ZWwtaG9tZS5rZGUub3JnL35zZXdhcmRqLyIgdGFyZ2V0PSJfdG9wIj5WYWxncmluZDwvYT4sIHdoaWNoIHJ1bnMgdGhlIHByb2dyYW0gaW4gYQogICAgICAgIHZpcnR1YWwgQ1BVIHdoaWNoIG1ha2VzIGNhdGNoaW5nIGVycm9ycyBlYXN5LiBBbGwgdGVzdCBwcm9ncmFtcyBjYW4gYmUgcnVuIHVuZGVyIFZhbGdyaW5kLCAKICAgICAgPC9wPjwvZGl2PjwvZGl2PjwvZGl2PjwvYm9keT48L2h0bWw+Cg==