PCFkb2N0eXBlIGh0bWwgcHVibGljICItLy93M2MvL2R0ZCBodG1sIDQuMCB0cmFuc2l0aW9uYWwvL2VuIj4KPGh0bWw+Cgo8aGVhZD4KPG1ldGEgaHR0cC1lcXVpdj0iQ29udGVudC1UeXBlIiBjb250ZW50PSJ0ZXh0L2h0bWw7IGNoYXJzZXQ9aXNvLTg4NTktMSI+Cjx0aXRsZT5SZWFkTWUgZm9yIElDVTRKPC90aXRsZT4KPC9oZWFkPgoKPGJvZHkgYmdjb2xvcj0iI0ZGRkZGRiIgbGluaz0iIzAwMDBGRiIgdmxpbms9IiM4MDAwODAiIGxhbmc9IkVOLVVTIj4KCjxoMj5SZWFkTWU6IEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YTwvaDI+Cgo8cD5WZXJzaW9uOiAxLjMgTWFyIDIzIDIwMDEgPC9wPgoKPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KCjxwPkNPUFlSSUdIVDogPGJyPgpDb3B5cmlnaHQgKGMpIDIwMDEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzClJlc2VydmVkLiA8L3A+Cgo8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPgoKPGgzPjx1PkNvbnRlbnRzPC91PjwvaDM+Cgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPjxhIGhyZWY9IiNpbnRyb2R1Y3Rpb24iPkludHJvZHVjdGlvbjwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjV2hhdENvbnRhaW4iPldoYXQgdGhlIEludGVybmF0aW9uYWwgQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSBDb250YWluczwvYT48L2xpPgogIDxsaT48YSBocmVmPSIjQVBJIj5BUEkgb3ZlcnZpZXc8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1BsYXRmb3JtRGVwZW5kZW5jaWVzIj5QbGF0Zm9ybSBEZXBlbmRlbmNpZXM8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI0hvd1RvSW5zdGFsbEphdmFjIj5Ib3cgdG8gSW5zdGFsbCBhbmQgQnVpbGQ8L2E+PC9saT4KICA8bGk+PGEgaHJlZj0iI1doZXJlVG9GaW5kTW9yZSI+V2hlcmUgdG8gRmluZCBNb3JlIEluZm9ybWF0aW9uPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9IiNTdWJtaXR0aW5nQ29tbWVudHMiPlN1Ym1pdHRpbmcgQ29tbWVudHMsIFJlcXVlc3RpbmcgRmVhdHVyZXMgYW5kIFJlcG9ydGluZwogICAgQnVnczwvYT48L2xpPgo8L3VsPgoKPGgzPjxhIE5BTUU9ImludHJvZHVjdGlvbiI+PC9hPjx1PkludHJvZHVjdGlvbjwvdT48L2gzPgoKPHA+VG9kYXkncyBzb2Z0d2FyZSBtYXJrZXQgaXMgYSBnbG9iYWwgb25lIGluIHdoaWNoIGl0IGlzIGRlc2lyYWJsZSB0byBkZXZlbG9wIGFuZAptYWludGFpbiBvbmUgYXBwbGljYXRpb24gdGhhdCBzdXBwb3J0cyBhIHdpZGUgdmFyaWV0eSBvZiBuYXRpb25hbCBsYW5ndWFnZXMuIEludGVybmF0aW9uYWwKQ29tcG9uZW50cyBmb3IgVW5pY29kZSBmb3IgSmF2YSBwcm92aWRlcyB0aGUgZm9sbG93aW5nIHRvb2xzIHRvIGhlbHAgeW91IHdyaXRlIGxhbmd1YWdlCmluZGVwZW5kZW50IGFwcGxpY2F0aW9uczogCgo8dWwgdHlwZT0iZGlzYyI+CiAgPGxpPkludGVybmF0aW9uYWwgQ2FsZW5kYXJzICYjMTUwOyBBcmFiaWMsIEJ1ZGRoaXN0LCBIZWJyZXcsIEphcGFuZXNlPC9saT4KICA8bGk+VW5pY29kZSBOb3JtYWxpemF0aW9uICYjMTUwOyBDYW5vbmljYWwgdGV4dCByZXByZXNlbnRhdGlvbiBmb3IgVzNDPC9saT4KICA8bGk+TnVtYmVyIEZvcm1hdCBFbmhhbmNlbWVudHMgJiMxNTA7IFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQtb3V0LCAuLi48L2xpPgogIDxsaT5FbmhhbmNlZCB3b3JkLWJyZWFrIGRldGVjdGlvbiAmIzE1MDsgUnVsZS1iYXNlZCwgc3VwcG9ydHMgVGhhaTwvbGk+CiAgPGxpPlVuaWNvZGUgVGV4dCBTZWFyY2hpbmcgJiMxNTA7IEVmZmljaWVudCBtdWx0aS1saW5ndWFsIHNlYXJjaGluZzwvbGk+CiAgPGxpPlVuaWNvZGUgVGV4dCBDb21wcmVzc2lvbiAmIzE1MDsgMjoxIGNvbXByZXNzaW9uIG9uIEVuZ2xpc2ggVW5pY29kZSB0ZXh0PC9saT4KPC91bD4KCjxwPllvdXIgY29tbWVudHMgYXJlIGltcG9ydGFudCB0byBtYWtpbmcgdGhpcyByZWxlYXNlIHN1Y2Nlc3NmdWwuJm5ic3A7IFdlIGFyZSBjb21taXR0ZWQKdG8gZml4aW5nIGFueSBidWdzLCBhbmQgd2lsbCBhbHNvIHVzZSB5b3VyIGZlZWRiYWNrIHRvIGhlbHAgcGxhbiBmdXR1cmUgcmVsZWFzZXMuIDwvcD4KCjxwPjxiPjx1PklNUE9SVEFOVDwvdT46IFBsZWFzZSBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQgdGhlIDxhIGhyZWY9ImxpY2Vuc2UuaHRtbCI+Q29weXJpZ2h0CmFuZCBMaWNlbnNlIGluZm9ybWF0aW9uPC9hPi48L2I+PC9wPgoKPGgzPjxhIE5BTUU9IldoYXRDb250YWluIj48L2E+PHU+V2hhdCB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGZvciBKYXZhCkNvbnRhaW5zPC91PjwvaDM+Cgo8cD5UaGVyZSBhcmUgdHdvIHdheXMgdG8gZG93bmxvYWQgdGhlIElDVTRKIHJlbGVhc2VzLCAKCjx1bCB0eXBlPSJkaXNjIj4KICA8bGk+PGI+T2ZmaWNpYWwgUmVsZWFzZSBTbmFwc2hvdDo8L2I+PGJyPgogICAgSWYgeW91IHdhbnQgdG8gdXNlIElDVTRKIChhcyBvcHBvc2VkIHRvIGRldmVsb3BpbmcgaXQpLCB5b3VyIGJlc3QgYmV0IGlzIHRvIGRvd25sb2FkIGFuCiAgICBvZmZpY2lhbCwgcGFja2FnZWQgSUNVNEogdmVyc2lvbiBvZiB0aGUgSUNVNEogc291cmNlIGNvZGUuJm5ic3A7IFRoZXNlIHZlcnNpb25zIGFyZSB0ZXN0ZWQKICAgIG1vcmUgdGhvcm91Z2hseSB0aGFuIGRheS10by1kYXkgZGV2ZWxvcG1lbnQgYnVpbGRzLCBhbmQgdGhleSBhcmUgcGFja2FnZWQgaW4gemlwIGFuZCB0YXIKICAgIGZpbGVzIGZvciBjb252ZW5pZW50IGRvd25sb2FkLiZuYnNwOyBUaGVzZSBwYWNrYWdlZCBmaWxlcyBjYW4gYmUgZm91bmQgYXQgPGEKICAgIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWwiPmh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9kZXZlbG9wZXJ3b3Jrcy9vcGVuc291cmNlL2ljdTRqL2Rvd25sb2FkL2luZGV4Lmh0bWw8L2E+LgogICAgPGJyPgogICAgSWYgcGFja2FnZWQgc25hcHNob3QgaXMgbmFtZWQgPGI+SUNVNEpYWFhYWFguemlwIDwvYj4sIFhYWFhYWCBpcyB0aGUgcmVsZWFzZSB2ZXJzaW9uCiAgICBudW1iZXIuIDxicj4KICAgIFBsZWFzZSB1bnppcCB0aGlzIGZpbGUuJm5ic3A7IEl0IHdpbGwgcmUtY29uc3RydWN0IHRoZSBzb3VyY2UgZGlyZWN0b3J5LiA8L2xpPgo8L3VsPgoKPHVsIHR5cGU9ImRpc2MiPgogIDxsaT48Yj5DVlMgU291cmNlIFJlcG9zaXRvcnk6PC9iPjxicj4KICAgIElmIHlvdSBhcmUgaW50ZXJlc3RlZCBpbiBkZXZlbG9waW5nIGZlYXR1cmVzLCBwYXRjaGVzLCBvciBidWcgZml4ZXMgZm9yIElDVTRKLCB5b3Ugc2hvdWxkCiAgICBwcm9iYWJseSBiZSB3b3JraW5nIHdpdGggdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZS4gWW91IHdpbGwgbmVlZCB0bwogICAgY2hlY2sgdGhlIGNvZGUgb3V0IG9mIG91ciBDVlMgcmVwb3NpdG9yeSB0byBlbnN1cmUgdGhhdCB5b3UgaGF2ZSB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbgogICAgb2YgYWxsIG9mIHRoZSBmaWxlcy4gVGhlcmUgYXJlIHNldmVyYWwgd2F5cyB0byBkbyB0aGlzOiA8YnI+CiAgICA8dWwgdHlwZT0iY2lyY2xlIj4KICAgICAgPGxpPldlYkNWUzo8YnI+CiAgICAgICAgSWYgeW91IHdhbnQgdG8gYnJvd3NlIHRoZSBjb2RlIGFuZCBvbmx5IG1ha2Ugb2NjYXNpb25hbCBkb3dubG9hZHMsIHlvdSBtYXkgd2FudCB0byB1c2UKICAgICAgICBXZWJDVlMuIEl0IHByb3ZpZGVzIGEgY29udmVuaWVudCwgd2ViLWJhc2VkIGludGVyZmFjZSBmb3IgYnJvd3NpbmcgYW5kIGRvd25sb2FkaW5nIHRoZQogICAgICAgIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBJQ1U0SiBzb3VyY2UgY29kZSBhbmQgZG9jdW1lbnRhdGlvbi4gWW91IGNhbiBhbHNvIHZpZXcgZWFjaCBmaWxlJ3MKICAgICAgICByZXZpc2lvbiBoaXN0b3J5LCBkaXNwbGF5IHRoZSBkaWZmZXJlbmNlcyBiZXR3ZWVuIGluZGl2aWR1YWwgcmV2aXNpb25zLCBkZXRlcm1pbmUgd2hpY2gKICAgICAgICByZXZpc2lvbnMgd2VyZSBwYXJ0IG9mIHdoaWNoIG9mZmljaWFsIHJlbGVhc2UsIGFuZCBzbyBvbi4gPGJyPgogICAgICA8L2xpPgogICAgICA8bGk+V2luQ1ZTOjxicj4KICAgICAgICBJZiB5b3Ugd2lsbCBiZSBkb2luZyBzZXJpb3VzIHdvcmsgb24gSUNVNEosIHlvdSBzaG91bGQgcHJvYmFibHkgaW5zdGFsbCBhIENWUyBjbGllbnQgb24KICAgICAgICB5b3VyIG93biBtYWNoaW5lIHNvIHRoYXQgeW91IGNhbiBkbyBiYXRjaCBvcGVyYXRpb25zIHdpdGhvdXQgZ29pbmcgdGhyb3VnaCB0aGUgV2ViQ1ZTCiAgICAgICAgaW50ZXJmYWNlLiBPbiBXaW5kb3dzLCB3ZSBzdWdnZXN0IHRoZSBXaW5DVlMgY2xpZW50LiBUaGUgZm9sbG93aW5nIGlzIHRoZSBleGFtcGxlCiAgICAgICAgaW5zdHJ1Y3Rpb24gb24gaG93IHRvIGRvd25sb2FkIElDVTRKIHZpYSBXaW5DVlM6IDxvbD4KICAgICAgICAgIDxsaT5JbnN0YWxsIHRoZSBXaW5DVlMgY2xpZW50LCB3aGljaCB5b3UgY2FuIGRvd25sb2FkIGZyb20gdGhlIDxhCiAgICAgICAgICAgIGhyZWY9Imh0dHA6Ly93d3cud2luY3ZzLm9yZyI+aHR0cDovL3d3dy53aW5jdnMub3JnPC9hPi48L2xpPgogICAgICAgICAgPGxpPlNlbGVjdCA8c3Ryb25nPlByZWZlcmVuY2VzPC9zdHJvbmc+IGZyb20gdGhlIDxzdHJvbmc+QWRtaW48L3N0cm9uZz4gbWVudS48b2wgdHlwZT0iYSI+CiAgICAgICAgICAgICAgPGxpPk9uIHRoZSA8c3Ryb25nPkdlbmVyYWw8L3N0cm9uZz4gdGFiIHBhbmVsOiBTZXQgeW91ciA8c3Ryb25nPkNWU1JPT1Q8L3N0cm9uZz4gdG8gJnF1b3Q7PHN0cm9uZz46cHNlcnZlcjphbm9uY3ZzQG9zcy5zb2Z0d2FyZS5pYm0uY29tOi91c3IvY3ZzL2ljdTRqPC9zdHJvbmc+JnF1b3Q7Ljxicj4KICAgICAgICAgICAgICAgIExlYXZlIG90aGVyIG9wdGlvbnMgb24gdGhpcyBwYWdlIGF0IHRoZWlyIGRlZmF1bHQuPC9saT4KICAgICAgICAgICAgICA8bGk+T24gdGhlIDxzdHJvbmc+UG9ydHM8L3N0cm9uZz4gdGFiIHBhbmVsOiBDaGVjayB0aGUgPHN0cm9uZz5wc2VydmVyPC9zdHJvbmc+IGNoZWNrYm94IGFuZAogICAgICAgICAgICAgICAgZW50ZXIgcG9ydCA8c3Ryb25nPjI0MDE8L3N0cm9uZz4uPC9saT4KICAgICAgICAgICAgPC9vbD4KICAgICAgICAgIDwvbGk+CiAgICAgICAgICA8bGk+Q2xpY2sgb24gdGhlIExvZ2luIG1lbnUgYnV0dG9uICg8c3Ryb25nPkFkbWluPC9zdHJvbmc+IG1lbnUpLiBFbnRlciBpbiAgJnF1b3Q7PHN0cm9uZz5hbm9uY3ZzPC9zdHJvbmc+JnF1b3Q7IHdoZW4gcmVxdWVzdGVkLjwvbGk+CiAgICAgICAgICA8bGk+VG8gZXh0cmFjdCB0aGUgbW9zdCByZWNlbnQgdmVyc2lvbiBvZiBJQ1U0Siwgc2VsZWN0IDxzdHJvbmc+Q2hlY2tvdXQgbW9kdWxlPC9zdHJvbmc+CiAgICAgICAgICAgIGZyb20gdGhlIDxzdHJvbmc+Q3JlYXRlPC9zdHJvbmc+IG1lbnUuIFNwZWNpZnkgJnF1b3Q7PHN0cm9uZz5pY3U0ajwvc3Ryb25nPiZxdW90OyBmb3IgdGhlCiAgICAgICAgICAgIG1vZHVsZSBuYW1lLiBUaGlzIHdpbGwgY3JlYXRlIGEgbmV3IGNvcHkgb2YgdGhlIHdvcmtzcGFjZSBvbiB5b3VyIGxvY2FsIGhhcmQgZHJpdmUuPC9saT4KICAgICAgICAgIDxsaT5JbiB0aGUgZnV0dXJlLCB5b3UgY2FuIGRvd25sb2FkIHVwZGF0ZWQgZmlsZXMgZnJvbSB0aGUgcmVwb3NpdG9yeSB0byB5b3VyIGhhcmQgZHJpdmUKICAgICAgICAgICAgdXNpbmcgdGhlIDxzdHJvbmc+VXBkYXRlIHNlbGVjdGlvbjwvc3Ryb25nPiBpdGVtIGluIHRoZSA8c3Ryb25nPk1vZGlmeTwvc3Ryb25nPiBtZW51Ljxicj4KICAgICAgICAgIDwvbGk+CiAgICAgICAgPC9vbD4KICAgICAgPC9saT4KICAgICAgPGxpPkNWUyBjb21tYW5kIGxpbmU6PGJyPgogICAgICAgIFlvdSBjYW4gYWxzbyBjaGVjayBvdXQgdGhlIHJlcG9zaXRvcnkgYW5vbnltb3VzbHkgb24gVU5JWCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbW1hbmRzLAogICAgICAgIGFmdGVyIGZpcnN0IHNldHRpbmcgeW91ciBDVlNST09UIHRvIHBvaW50IHRvIHRoZSBJQ1U0SiByZXBvc2l0b3J5OiA8cHJlPjxjb2RlPmV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub25jdnNAb3NzLnNvZnR3YXJlLmlibS5jb206L3Vzci9jdnMvaWN1NGogCmN2cyBsb2dpbiBDVlMgcGFzc3dvcmQ6IGFub25jdnMgCmN2cyBjaGVja291dCBpY3U0aiAKY3ZzIGxvZ291dDwvY29kZT48L3ByZT4KICAgICAgPC9saT4KICAgIDwvdWw+CiAgPC9saT4KPC91bD4KCjxwPkZvciBtb3JlIGRldGFpbHMgb24gaG93IHRvIGRvd25sb2FkIElDVTRKIGRpcmVjdGx5IGZyb20gdGhlIHdlYiBzaXRlLCBwbGVhc2UgYWxzbyBzZWUgPGEKaHJlZj0iL2RldmVsb3BlcndvcmtzL29wZW5zb3VyY2UvaWN1NGovZG93bmxvYWQvaW5kZXguaHRtbCI+aHR0cDovb3NzLnNvZnR3YXJlLmlibS5jb20vZGV2ZWxvcGVyd29ya3Mvb3BlbnNvdXJjZS9pY3U0ai9kb3dubG9hZC9pbmRleC5odG1sPC9hPgo8L3A+Cgo8cD5CZWxvdywgPGI+JFJvb3Q8L2I+IGlzIHRoZSBwbGFjZW1lbnQgb2YgdGhlIGljdSBkaXJlY3RvcnkgaW4geW91ciBmaWxlIHN5c3RlbSwgbGlrZQomcXVvdDtkcml2ZTpcLi4uXGljdTRqJnF1b3Q7IGluIHlvdXIgZW52aXJvbm1lbnQuICZxdW90O2RyaXZlOlwuLi4mcXVvdDsgc3RhbmRzIGZvciBhbnkKZHJpdmUgYW5kIGFueSBkaXJlY3Rvcnkgb24gdGhhdCBkcml2ZSB0aGF0IHlvdSBjaG9zZSB0byBpbnN0YWxsIGljdTRqIGludG8uIDwvcD4KCjxwPjxiPlRoZSBmb2xsb3dpbmcgZmlsZXMgZGVzY3JpYmUgdGhlIGNvZGUgZHJvcDo8L2I+PC9wPgoKPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiPgogIDx0cj4KICAgIDx0ZD5yZWFkbWUuaHRtbCAodGhpcyBmaWxlKTwvdGQ+CiAgICA8dGQ+ZGVzY3JpYmVzIHRoZSBJbnRlcm5hdGlvbmFsIENvbXBvbmVudHMgZm9yIFVuaWNvZGUgZm9yIEphdmE8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmxpY2Vuc2UuaHRtbDwvdGQ+CiAgICA8dGQ+Y29udGFpbnMgSUJNJ3MgcHVibGljIGxpY2Vuc2U8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD48Yj5UaGUgc291cmNlIGRpcmVjdG9yaWVzIG1pcnJvciBwYWNrYWdlIHN0cnVjdHVyZSBvZiB0aGUgY29kZS4mbmJzcDsgVGhlIGZvbGxvd2luZwpkaXJlY3RvcmllcyBjb250YWluIHNvdXJjZSBjb2RlIGFuZCBkYXRhIGZpbGVzOjwvYj4gPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiIFdJRFRIPSI2MjMiPgogIDx0cj4KICAgIDx0ZCBXSURUSD0iMjAlIj4kUm9vdC9zcmMvZGF0YS88L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlZhcmlvdXMgZGF0YSBmaWxlcyB1c2VkIHRvIGdlbmVyYXRlIElDVTRKIGNsYXNzZXMuJm5ic3A7IE1vc3Qgb2YgdGhlIGZpbGVzCiAgICBjb250YWluIFVuaWNvZGUgaW5mb3JtYXRpb24gdGhhdCBpcyBhdmFpbGFibGUgZnJvbSA8YSBocmVmPSJodHRwOi8vd3d3LnVuaWNvZGUub3JnLyI+aHR0cDovL3d3dy51bmljb2RlLm9yZy88L2E+LiZuYnNwOwogICAgVXNlZCBvbmx5IGJ5IHRvb2xzIGluIHRoZSBzcmMvY29tL2libS90b29scy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL2RlbW88L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkRlbW9uc3RyYXRpb24gYXBwbGljYXRpb25zIGFuZCBBcHBsZXRzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQgV0lEVEg9IjIwJSI+JFJvb3Qvc3JjL2NvbS9pYm0vdGVzdDwvdGQ+CiAgICA8dGQgV0lEVEg9IjgwJSI+VGVzdHMgZm9yIHZhcmlvdXMgSUNVNEogY29tcG9uZW50cy4uIEZvciBpbmZvcm1hdGlvbiBhYm91dCBydW5uaW5nIHRoZQogICAgdGVzdHMsIHNlZSA8YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS90ZXN0L3RvcGxldmVsdGVzdC9UZXN0QWxsLmh0bWwiPiRSb290L2RvYy9jb20vaWJtL3Rlc3QvVGVzdEFsbC5odG1sPC9hPi48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3Rvb2xzPC90ZD4KICAgIDx0ZCBXSURUSD0iODAlIj5WYXJpb3VzIHRvb2xzIHVzZWQgdG8gZ2VuZXJhdGUgSUNVNEogY2xhc3Nlcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3RleHQ8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPlRoZSBmb2xsb3dpbmcgY29tcG9uZW50czombmJzcDsgPHVsPgogICAgICA8bGk+UnVsZUJhc2VkQnJlYWtJdGVyYXRvcjwvbGk+CiAgICAgIDxsaT5EaWN0aW9uYXJ5QmFzZWRCcmVha0l0ZXJhdG9yPC9saT4KICAgICAgPGxpPlRyYW5zbGl0ZXJhdG9yPC9saT4KICAgICAgPGxpPk5vcm1hbGl6ZXI8L2xpPgogICAgICA8bGk+QmlnTnVtYmVyRm9ybWF0PC9saT4KICAgICAgPGxpPlN0cmluZ1NlYXJjaDwvbGk+CiAgICAgIDxsaT5Vbmljb2RlIGNvbXByZXNzaW9uPC9saT4KICAgIDwvdWw+CiAgICA8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L3NyYy9jb20vaWJtL3V0aWw8L3RkPgogICAgPHRkIFdJRFRIPSI4MCUiPkNhbGVuZGFycyBhbmQgSG9saWRheXM8L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkIFdJRFRIPSIyMCUiPiRSb290L2J1aWxkPC90ZD4KICAgIDx0ZCBXSURUSD0iODAlIj5BZGRpdGlvbmFsIGNsYXNzZXMgbmVlZGVkIHRvIGJ1aWxkIHVzaW5nIEFudDwvdGQ+CiAgPC90cj4KPC90YWJsZT4KCjxwPjxiPlRoZSBmb2xsb3dpbmcgZGlyZWN0b3JpZXMgYXJlIHBvcHVsYXRlZCB3aGVuIHlvdSd2ZSBidWlsdCBldmVyeXRoaW5nOjwvYj4gPC9wPgoKPHRhYmxlIEJPUkRFUj0iMSIgQ0VMTFBBRERJTkc9IjAiPgogIDx0cj4KICAgIDx0ZD4kUm9vdC9jbGFzc2VzLzwvdGQ+CiAgICA8dGQ+Y29udGFpbnMgYWxsIGNsYXNzIGZpbGVzPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD4kUm9vdC9kb2NzPC90ZD4KICAgIDx0ZD5jb250YWlucyBKYXZhRG9jIGZvciBhbGwgcGFja2FnZXM8L3RkPgogIDwvdHI+CjwvdGFibGU+Cgo8cD48Yj5EYXRhIG9yZ2FuaXphdGlvbjo8L2I+IDwvcD4KCjxwPkRhdGEgaXMgc3RvcmVkIGluIHZhcmlvdXMgbG9jYXRpb25zIGluIElDVTRKOgoKPHVsPgogIDxsaT5EYXRhIHRoYXQgaXMgJnF1b3Q7cmF3JnF1b3Q7IGRhdGEgZ29lcyBpbnRvIDxzdHJvbmc+JFJvb3Qvc3JjL2RhdGE8L3N0cm9uZz4uIFRoaXMKICAgIGluY2x1ZGVzIHRoaW5ncyBsaWtlIHRoZSByYXcgVW5pY29kZSBkYXRhYmFzZS4gPHN0cm9uZz4kUm9vdC9zcmMvZGF0YTwvc3Ryb25nPiBkb2VzIDxlbT5ub3Q8L2VtPgogICAgY29udGFpbiA8c3Ryb25nPi5qYXZhPC9zdHJvbmc+IHNvdXJjZSBmaWxlcy48L2xpPgogIDxsaT5EYXRhIHRoYXQgaXMgaW4gdGhlIGZvcm0gb2YgYSBKYXZhIGNsYXNzLCB0eXBpY2FsbHkgYSBSZXNvdXJjZUJ1bmRsZSwgYnV0IG5vdAogICAgbmVjZXNzYXJpbHksIGdvZXMgaW50byBvbmUgb2YgdGhlIHBhY2thZ2VzIDxjb2RlPmNvbS5pYm0udXRpbC5yZXNvdXJjZXM8L2NvZGU+IG9yIDxjb2RlPmNvbS5pYm0udGV4dC5yZXNvdXJjZXM8L2NvZGU+LAogICAgZGVwZW5kaW5nIG9uIHdoZXRoZXIgdGhlIGFzc29jaWF0ZWQgY29kZSBsaXZlcyBpbiA8Y29kZT5jb20uaWJtLnV0aWw8L2NvZGU+IG9yIDxjb2RlPmNvbS5pYm0udGV4dDwvY29kZT4uPC9saT4KICA8bGk+RGF0YSB0aGF0IGlzIG5vdCBwYXJ0IG9mIElDVTRKIHByb3BlciAob3IgaXRzIGJhc2UgdG9vbCBzZXQpLCBidXQgcmF0aGVyIHBhcnQgb2YgYSB0ZXN0LAogICAgc2FtcGxlLCBvciBkZW1vLCBzaG91bGQgZ28gbmVhciB0aGUgc291cmNlIGNvZGUgb2YgaXRzIG93bmVyLiBUaGlzIG1ha2VzIGl0IGVhc3kgdG8gc2hpcCBhCiAgICBjb3JlIElDVTRKIHJlbGVhc2Ugd2l0aG91dCBvcHRpb25hbCBjb21wb25lbnRzLjwvbGk+CjwvdWw+Cgo8aDM+PHU+PGEgbmFtZT0iQVBJIj48L2E+QVBJIE92ZXJ2aWV3PC91PjwvaDM+Cgo8cD5UaGUgY29tcGxldGUgQVBJIGRvY3VtZW50YXRpb24gaXMgYXZhaWxhYmxlIG9uIHRoZSBJQ1U0SiB3ZWIgc2l0ZTogCgo8dWw+CiAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9pbmRleC5odG1sIj5Db21wbGV0ZSBpbmRleDwvYT48L2xpPgogIDxsaT5JbnRlcm5hdGlvbmFsIENhbGVuZGFycyAmIzE1MDsgPGEgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9Jc2xhbWljQ2FsZW5kYXIuaHRtbCI+SXNsYW1pYzwvYT4sCiAgICA8YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS91dGlsL0J1ZGRoaXN0Q2FsZW5kYXIuaHRtbCI+QnVkZGhpc3Q8L2E+LCA8YQogICAgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9IZWJyZXdDYWxlbmRhci5odG1sIj5IZWJyZXc8L2E+LCA8YQogICAgaHJlZj0iLi4vLi4vLi4vLi4vaWN1NGovaWN1NGpodG1sL2NvbS9pYm0vdXRpbC9KYXBhbmVzZUNhbGVuZGFyLmh0bWwiPkphcGFuZXNlPC9hPjwvbGk+CiAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvTm9ybWFsaXplci5odG1sIj5Vbmljb2RlIE5vcm1hbGl6YXRpb248L2E+ICYjMTUwOwogICAgQ2Fub25pY2FsIHRleHQgcmVwcmVzZW50YXRpb24gZm9yIFczQzwvbGk+CiAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvTnVtYmVyRm9ybWF0Lmh0bWwiPk51bWJlciBGb3JtYXQgRW5oYW5jZW1lbnRzPC9hPiAmIzE1MDsKICAgIFNjaWVudGlmaWMgTm90YXRpb24sIFNwZWxsZWQtb3V0LCAuLi48L2xpPgogIDxsaT48YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS90ZXh0L0JyZWFrSXRlcmF0b3IuaHRtbCI+RW5oYW5jZWQgd29yZC1icmVhayBkZXRlY3Rpb248L2E+CiAgICAmIzE1MDsgUnVsZS1iYXNlZCwgc3VwcG9ydHMgVGhhaTwvbGk+CiAgPGxpPjxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvU3RyaW5nU2VhcmNoLmh0bWwiPlVuaWNvZGUgVGV4dCBTZWFyY2hpbmc8L2E+ICYjMTUwOwogICAgRWZmaWNpZW50IG11bHRpLWxpbmd1YWwgc2VhcmNoaW5nPC9saT4KICA8bGk+VW5pY29kZSBUZXh0IDxhIGhyZWY9Ii4uLy4uLy4uLy4uL2ljdTRqL2ljdTRqaHRtbC9jb20vaWJtL3RleHQvVW5pY29kZUNvbXByZXNzb3IuaHRtbCI+Q29tcHJlc3Npb248L2E+ICZhbXA7CiAgICA8YSBocmVmPSIuLi8uLi8uLi8uLi9pY3U0ai9pY3U0amh0bWwvY29tL2libS90ZXh0L1VuaWNvZGVEZWNvbXByZXNzb3IuaHRtbCI+RGVjb21wcmVzc2lvbjwvYT4gJiMxNTA7IDI6MQogICAgY29tcHJlc3Npb24gb24gRW5nbGlzaCBVbmljb2RlIHRleHQ8L2xpPgo8L3VsPgoKPGgzPjxhIE5BTUU9IlBsYXRmb3JtRGVwZW5kZW5jaWVzIj48L2E+PHU+UGxhdGZvcm0gRGVwZW5kZW5jaWVzPC91PjwvaDM+Cgo8cD5QYXJ0cyBvZiBJQ1U0SiBkZXBlbmQgb24gZnVuY3Rpb25hbGl0eSB0aGF0IGlzIG9ubHkgYXZhaWxhYmxlIGluIEphdmEyIChKRGsxLjIpIG9yCmxhdGVyLCBhbHRob3VnaCBzb21lIGNvbXBvbmVudHMgd29yayB1bmRlciAxLjEuJm5ic3A7IEhvd2V2ZXIsIGFsbCBjb21wb25lbnRzIHNob3VsZCBiZQpjb21waWxlZCB1c2luZyBhIEphdmEyIGNvbXBpbGVyIGFzIGV2ZW4gY29tcG9uZW50cyB0aGF0IHJ1biB1c2luZyBhIDEuMS54IEpWTSBtYXkgcmVxdWlyZQpsYW5ndWFnZSBmZWF0dXJlcyB0aGF0IGFyZSBvbmx5IHByZXNlbnQgaW4gMS4yLiZuYnNwOyBDdXJyZW50bHkgMS4xLnggaXMgdW5zdXBwb3J0ZWQgYW5kCnVudGVzdGVkIGFuZCB5b3UgdXNlIHRoZSBjb21wb25lbnRzIG9uIGEgMS4xLnggc3lzdGVtIGF0IHlvdXIgb3duIHJpc2suIDwvcD4KCjxoMz48YSBOQU1FPSJIb3dUb0luc3RhbGxKYXZhYyI+PC9hPjx1PkhvdyB0byBJbnN0YWxsIGFuZCBCdWlsZDwvdT48L2gzPgoKPHA+VG8gaW5zdGFsbCBJQ1U0Siwgc2ltcGx5IHBsYWNlIHRoZSBwcmVidWlsdCBqYXIgZmlsZSA8c3Ryb25nPmljdTRqLmphcjwvc3Ryb25nPiBvbiB5b3VyCkphdmEgQ0xBU1NQQVRILiZuYnNwOyBObyBvdGhlciBmaWxlcyBhcmUgbmVlZGVkLjwvcD4KCjxwPlRoZSBwcmVyZXF1aXNpdGVzIGZvciBidWlsZGluZyBJQ1U0SiBhcmUgYSB3b3JraW5nIEpESyBhbmQgdGhlIEFudCBidWlsZCBzeXN0ZW06IAoKPHVsPgogIDxsaT5GaXJzdCBpbnN0YWxsIGEgcmVjZW50IEpESywgYXQgbGVhc3QgdmVyc2lvbiAxLjIuPC9saT4KICA8bGk+TmV4dCBpbnN0YWxsIHRoZSA8YSBocmVmPSJodHRwOi8vamFrYXJ0YS5hcGFjaGUub3JnL2FudC8iPjxzdHJvbmc+QW50PC9zdHJvbmc+PC9hPiBidWlsZAogICAgc3lzdGVtLCBwYXJ0IG9mIHRoZSBBcGFjaGUgU29mdHdhcmUgRm91bmRhdGlvbidzIDxhIGhyZWY9Imh0dHA6Ly9qYWthcnRhLmFwYWNoZS5vcmcvIj48c3Ryb25nPkpha2FydGE8L3N0cm9uZz48L2E+CiAgICBwcm9qZWN0LiBBbnQgaXMgYSBwb3J0YWJsZSwgSmF2YS1iYXNlZCBidWlsZCBzeXN0ZW0gc2ltaWxhciB0byBtYWtlLiBJQ1U0SiB1c2VzIEFudAogICAgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIG5vIG90aGVyIGRlcGVuZGVuY2llcywgaXQncyBwb3J0YWJsZSwgYW5kIGl0J3MgZWFzaWVyIHRvIG1hbmFnZSB0aGFuCiAgICBhIGNvbGxlY3Rpb24gb2YgbWFrZWZpbGVzLiBXZSBjdXJyZW50bHkgYnVpbGQgSUNVNEogdXNpbmcgYSBzaW5nbGUgbWFrZWZpbGUgb24gYm90aAogICAgV2luZG93cyA5eCBhbmQgTGludXggdXNpbmcgQW50LjwvbGk+CiAgPGxpPkluc3RhbGxpbmcgQW50IGlzIHN0cmFpZ2h0Zm9yd2FyZC4gRG93bmxvYWQgaXQgKHNlZSA8YQogICAgaHJlZj0iaHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9kb3dubG9hZHMvYmluaW5kZXguaHRtbCI+aHR0cDovL2pha2FydGEuYXBhY2hlLm9yZy9kb3dubG9hZHMvYmluaW5kZXguaHRtbDwvYT4pLAogICAgZXh0cmFjdCBpdCBvbnRvIHlvdXIgc3lzdGVtLCBzZXQgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGFuZCBhZGQgaXRzIGJpbiBkaXJlY3RvcnkgdG8KICAgIHlvdXIgcGF0aC4gRm9yIGV4YW1wbGU6PHByZT4gICAgc2V0IEpBVkFfSE9NRT1DOlxqZGsxLjIuMgogICAgc2V0IEFOVF9IT01FPUM6XGpha2FydGEtYW50CiAgICBzZXQgUEFUSD0lUEFUSCU7JUFOVF9IT01FJVxiaW4KICAgIGNhbGwgYW50c2V0dXA8L3ByZT4KICAgIDxwPlNlZSB0aGUgY3VycmVudCBBbnQgZG9jdW1lbnRhdGlvbiBmb3IgZGV0YWlscy48L3A+CiAgPC9saT4KICA8bGk+SXQncyByZWNvbW1lbmRlZCB0byBpbnN0YWxsIGJvdGggdGhlIEpESyBhbmQgQW50IHNvbWV3aGVyZSA8ZW0+b3V0c2lkZTwvZW0+IHRoZSBJQ1U0SgogICAgZGlyZWN0b3J5LCB0byBrZWVwIHRoZW0gb3V0IG9mIENWUydzIGhhaXIuIEZvciBleGFtcGxlLCBvbiBMaW51eCB5b3UgbWlnaHQgaW5zdGFsbCB0aGVzZQogICAgaW4gL3Vzci9sb2NhbC48L2xpPgo8L3VsPgoKPHA+T25jZSBBbnQgaXMgaW5zdGFsbGVkLCBidWlsZGluZyBpcyBqdXN0IGEgbWF0dGVyIG9mIHR5cGluZyA8c3Ryb25nPmFudDwvc3Ryb25nPiBpbiB0aGUKSUNVNEogcm9vdCBkaXJlY3RvcnkuIFRoaXMgY2F1c2VzIHRoZSBBbnQgYnVpbGQgc3lzdGVtIHRvIHBlcmZvcm0gYSBidWlsZCBhcyBzcGVjaWZpZWQgYnkKdGhlIGZpbGUgPHN0cm9uZz5idWlsZC54bWw8L3N0cm9uZz4sIGxvY2F0ZWQgaW4gdGhlIElDVTRKIHJvb3QgZGlyZWN0b3J5LiBZb3UgY2FuIGdpdmUgQW50Cm9wdGlvbnMgbGlrZSAtdmVyYm9zZSwgYW5kIHlvdSBjYW4gc3BlY2lmeSB0YXJnZXRzLiBBbnQgd2lsbCBvbmx5IGJ1aWxkIHdoYXQncyBiZWVuCmNoYW5nZWQgYW5kIHdpbGwgcmVzb2x2ZSBkZXBlbmRlbmNpZXMgcHJvcGVybHkuPC9wPgoKPGJsb2NrcXVvdGU+CiAgPHByZT5GOlxpY3U0aiZndDthbnQgdGVzdHMKQnVpbGRmaWxlOiBidWlsZC54bWwKUHJvamVjdCBiYXNlIGRpciBzZXQgdG86IEY6XGljdTRqCkV4ZWN1dGluZyBUYXJnZXQ6IGNvcmUKQ29tcGlsaW5nIDcxIHNvdXJjZSBmaWxlcyB0byBGOlxpY3U0alxjbGFzc2VzCkV4ZWN1dGluZyBUYXJnZXQ6IHRlc3RzCkNvbXBpbGluZyAyNCBzb3VyY2UgZmlsZXMgdG8gRjpcaWN1NGpcY2xhc3NlcwpDb21wbGV0ZWQgaW4gMTkgc2Vjb25kczwvcHJlPgo8L2Jsb2NrcXVvdGU+Cgo8cD5DdXJyZW50IHRhcmdldHMgdGhhdCB5b3UgY2FuIGdpdmUgYWZ0ZXIgPHN0cm9uZz5hbnQ8L3N0cm9uZz46PC9wPgo8ZGl2IGFsaWduPSJsZWZ0Ij4KCjx0YWJsZSBib3JkZXI9IjEiIGNlbGxwYWRkaW5nPSIwIj4KICA8dHI+CiAgICA8dGQ+YWxsPC90ZD4KICAgIDx0ZD5CdWlsZCBhbGwgdGFyZ2V0cy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmNvcmU8L3RkPgogICAgPHRkPkJ1aWxkIHRoZSBtYWluIGNsYXNzIGZpbGVzIGluIHRoZSBzdWJkaXJlY3RvcnkgPHN0cm9uZz5jbGFzc2VzPC9zdHJvbmc+LiBJZiBubyB0YXJnZXQKICAgIGlzIHNwZWNpZmllZCwgY29yZSBpcyBhc3N1bWVkLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+dGVzdHM8L3RkPgogICAgPHRkPkJ1aWxkIHRoZSB0ZXN0IGNsYXNzIGZpbGVzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+ZGVtb3M8L3RkPgogICAgPHRkPkJ1aWxkIHRoZSBkZW1vcy48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPnRvb2xzPC90ZD4KICAgIDx0ZD5CdWlsZCB0aGUgdG9vbHMuPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD5kb2NzPC90ZD4KICAgIDx0ZD5SdW4gamF2YWRvYyBvdmVyIHRoZSBtYWluIGNsYXNzIGZpbGVzLCBnZW5lcmF0aW5nIGFuIEhUTUwgZG9jdW1lbnRhdGlvbiB0cmVlIGluIHRoZQogICAgc3ViZGlyZWN0b3J5IDxzdHJvbmc+ZG9jczwvc3Ryb25nPi48L3RkPgogIDwvdHI+CiAgPHRyPgogICAgPHRkPmphcjwvdGQ+CiAgICA8dGQ+Q3JlYXRlIGEgamFyIGFyY2hpdmUgPHN0cm9uZz5pY3U0ai5qYXI8L3N0cm9uZz4gaW4gdGhlIHJvb3QgSUNVNEogZGlyZWN0b3J5IGNvbnRhaW5pbmcKICAgIHRoZSBtYWluIGNsYXNzIGZpbGVzLjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+emlwPC90ZD4KICAgIDx0ZD5DcmVhdGUgYSB6aXAgYXJjaGl2ZSBvZiB0aGUgc291cmNlLCBkb2NzLCBhbmQgamFyIGZpbGUgZm9yIGRpc3RyaWJ1dGlvbiwgZXhjbHVkaW5nCiAgICB1bndhbnRlZCB0aGluZ3MgbGlrZSBDVlMgZGlyZWN0b3JpZXMgYW5kIGVtYWNzIGJhY2t1cCBmaWxlcy4gVGhlIHppcCBmaWxlIDxzdHJvbmc+aWN1NGpZWVlZTU1ERC56aXA8L3N0cm9uZz4KICAgIHdpbGwgYmUgY3JlYXRlZCBpbiB0aGUgZGlyZWN0b3J5IDxlbT5hYm92ZTwvZW0+IHRoZSByb290IElDVTRKIGRpcmVjdG9yeSwgd2hlcmUgWVlZWU1NREQKICAgIGlzIHRvZGF5J3MgZGF0ZS4gQW55IGV4aXN0aW5nIGZpbGUgb2YgdGhhdCBuYW1lIHdpbGwgYmUgb3ZlcndyaXR0ZW4uPC90ZD4KICA8L3RyPgogIDx0cj4KICAgIDx0ZD56aXBzcmM8L3RkPgogICAgPHRkPkxpa2UgdGhlIDxzdHJvbmc+emlwPC9zdHJvbmc+IHRhcmdldCwgd2l0aG91dCB0aGUgZG9jcyBhbmQgdGhlIGphciBmaWxlLiBUaGUgemlwIGZpbGUgPHN0cm9uZz5pY3U0anNyY1lZWVlNTURELnppcDwvc3Ryb25nPgogICAgd2lsbCBiZSBjcmVhdGVkIGluIHRoZSBkaXJlY3RvcnkgPGVtPmFib3ZlPC9lbT4gdGhlIHJvb3QgSUNVNEogZGlyZWN0b3J5LjwvdGQ+CiAgPC90cj4KICA8dHI+CiAgICA8dGQ+Y2xlYW48L3RkPgogICAgPHRkPlJlbW92ZSBhbGwgYnVpbHQgdGFyZ2V0cywgbGVhdmluZyB0aGUgc291cmNlLjwvdGQ+CiAgPC90cj4KPC90YWJsZT4KPC9kaXY+Cgo8cD5Gb3IgbW9yZSBpbmZvcm1hdGlvbiwgcmVhZCB0aGUgQW50IGRvY3VtZW50YXRpb24gYW5kIHRoZSA8c3Ryb25nPmJ1aWxkLnhtbDwvc3Ryb25nPgpmaWxlLjwvcD4KCjxwPkFmdGVyIGRvaW5nIGEgYnVpbGQgaXQgaXMgYSBnb29kIGlkZWEgdG8gcnVuIGFsbCB0aGUgdGVzdHMgYnkgdHlwZWluZyAmcXVvdDtqYXZhCi1jbGFzc3BhdGggY2xhc3NlcyBjb20uaWJtLnRlc3QuVGVzdEFsbCZxdW90Oy4gPC9wPgoKPHA+KEFzIGFuIGFsdGVybmF0aXZlIHRvIHVzaW5nIEFudCwgeW91IGNhbiBidWlsZCBzaW1wbHkgYnkgcnVubmluZyBqYXZhYyBhbmQgamF2YWRvYwpkaXJlY3RseS4gVGhpcyBpcyBub3QgcmVjb21tZW5kZWQsIGJ1dCBhIFdpbmRvd3MgYmF0Y2ggZmlsZSAmcXVvdDtidWlsZGFsbC5iYXQmcXVvdDsKZXhpc3RzIHRvIGdldCB5b3Ugc3RhcnRlZCBpZiB5b3UncmUgcmVhbGx5IGFsbGVyZ2ljIHRvIGJ1aWxkIHN5c3RlbXMuIFlvdSBtYXkgaGF2ZSB0bwpjcmVhdGUgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMuKTwvcD4KCjxoMz48YSBuYW1lPSJXaGVyZVRvRmluZE1vcmUiPjwvYT48dT5XaGVyZSB0byBGaW5kIE1vcmUgSW5mb3JtYXRpb248L3U+PC9oMz4KCjxwPjxhIGhyZWY9Imh0dHA6Ly9vc3Muc29mdHdhcmUuaWJtLmNvbS9pY3U0aiI+aHR0cDovL29zcy5zb2Z0d2FyZS5pYm0uY29tL2ljdTRqPC9hPiBpcyBhCnBvaW50ZXIgdG8gZ2VuZXJhbCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlIGluIEphdmEgPC9wPgoKPHA+PGEgaHJlZj0iaHR0cDovL3d3dy5pYm0uY29tL2RldmVsb3Blci91bmljb2RlIj5odHRwOi8vd3d3LmlibS5jb20vZGV2ZWxvcGVyL3VuaWNvZGU8L2E+IGlzIGEgcG9pbnRlciB0bwppbmZvcm1hdGlvbiBvbiBob3cgdG8gbWFrZSBhcHBsaWNhdGlvbnMgZ2xvYmFsLiA8L3A+Cgo8aDM+PGEgTkFNRT0iU3VibWl0dGluZ0NvbW1lbnRzIj48L2E+PHU+U3VibWl0dGluZyBDb21tZW50cywgUmVxdWVzdGluZyBGZWF0dXJlcyBhbmQKUmVwb3J0aW5nIEJ1Z3M8L3U+PC9oMz4KCjxwPlRvIHN1Ym1pdCBjb21tZW50cywgcmVxdWVzdCBmZWF0dXJlcyBhbmQgcmVwb3J0IGJ1Z3MsIGNvbnRhY3QgdXMgdGhyb3VnaCB0aGUgPGEgaHJlZj1odHRwOi8vb3NzLnNvZnR3YXJlLmlibS5jb20vaWN1NGovYXJjaGl2ZXMvaW5kZXguaHRtbD5JQ1U0SiBtYWlsaW5nIGxpc3Q8L2E+Ljxicj4KV2hpbGUgd2UgYXJlIG5vdCBhYmxlIHRvIHJlc3BvbmQgaW5kaXZpZHVhbGx5IHRvIGVhY2ggY29tbWVudCwgd2UgZG8gcmV2aWV3IGFsbCBjb21tZW50cy4gPC9wPgoKPGhyIHNpemU9IjIiIHdpZHRoPSIxMDAlIiBhbGlnbj0iY2VudGVyIj4KCjxwPkNvcHlyaWdodCCpIDIwMDEgSW50ZXJuYXRpb25hbCBCdXNpbmVzcyBNYWNoaW5lcyBDb3Jwb3JhdGlvbiBhbmQgb3RoZXJzLiBBbGwgUmlnaHRzClJlc2VydmVkLiA8YnI+CklCTSBDZW50ZXIgZm9yIEphdmEgVGVjaG5vbG9neSBTaWxpY29uIFZhbGxleSwgPGJyPgoxMDI3NSBOIERlIEFuemEgQmx2ZC4sIEN1cGVydGlubywgQ0EgOTUwMTQgPGJyPgpBbGwgcmlnaHRzIHJlc2VydmVkLiA8L3A+Cgo8aHIgc2l6ZT0iMiIgd2lkdGg9IjEwMCUiIGFsaWduPSJjZW50ZXIiPgo8L2JvZHk+CjwvaHRtbD4K