PD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KPCFET0NUWVBFIGh0bWwKICBQVUJMSUMgIi0vL1czQy8vRFREIFhIVE1MIDEuMCBUcmFuc2l0aW9uYWwvL0VOIiAiaHR0cDovL3d3dy53My5vcmcvVFIveGh0bWwxL0RURC94aHRtbDEtdHJhbnNpdGlvbmFsLmR0ZCI+CjxodG1sPgo8aGVhZD4KPGxpbmsgcmVsPSJzdHlsZXNoZWV0IiB0eXBlPSJ0ZXh0L2NzcyIgaHJlZj0iLi4vLi4vY29tLmlibS5oZWxwLmRvYy9zd2dfaW5mb19jb21tb24uY3NzIiAvPgo8dGl0bGU+Q3JlYXRpbmcgbm90YXRpb25zIDwvdGl0bGU+CjxzY3JpcHQgbGFuZ3VhZ2U9IkphdmFTY3JpcHQiPgogICAgZnVuY3Rpb24gcG9wdXBfd2luZG93KCB1cmwsIGlkLCB3aWR0aCwgaGVpZ2h0ICkKICAgIHsKICAgICAgcG9wdXAgPSB3aW5kb3cub3BlbiggdXJsLCBpZCwgJ3Rvb2xiYXI9bm8sc2Nyb2xsYmFycz1ubyxsb2NhdGlvbj1ubyxzdGF0dXNiYXI9bm8sbWVudWJhcj1ubyxyZXNpemFibGU9bm8sd2lkdGg9JyArIHdpZHRoICsgJyxoZWlnaHQ9JyArIGhlaWdodCArICcsbGVmdD0sdG9wPScgKTsKICAgICAgcG9wdXAuZm9jdXMoKTsKICAgIH0KPC9zY3JpcHQ+PHNjcmlwdCBsYW5ndWFnZT0iSmF2YVNjcmlwdCIgc3JjPSJoZWxwL2xpdmVIZWxwLmpzIj48L3NjcmlwdD48L2hlYWQ+Cjxib2R5IGlkPSJjcmVhdGluZ25vdGF0aW9ucyI+PGEgbmFtZT0iY3JlYXRpbmdub3RhdGlvbnMiPjwhLS0gLS0+PC9hPgoKPGgxIGNsYXNzPSJ0b3BpY3RpdGxlMSI+Q3JlYXRpbmcgbm90YXRpb25zIDwvaDE+CjxkaXY+PHA+Tm90YXRpb25zIGFyZSBtZWFucyBvZiBhc3NvY2lhdGluZyBhIGJpbmFyeSBkZXNjcmlwdGlvbiB3aXRoIGFuCmVudGl0eSBvciBhdHRyaWJ1dGUuIFRoZSBtb3N0IGNvbW1vbiB1c2VzIG9mIG5vdGF0aW9ucyBhcmUgdG8gaW5jbHVkZSBmYW1pbGlhcgp0eXBlcyBvZiBiaW5hcnkgcmVmZXJlbmNlcywgc3VjaCBhcyBHSUZzIGFuZCBKUEdzLCBpbiBhbiBYTUwgZmlsZS48L3A+PGRpdiBjbGFzcz0ic2tpcHNwYWNlIj48cD5Gb3IgZXhhbXBsZSwgeW91IGFyZSBtYWtpbmcgYSBjYXRhbG9ndWUgb2YgeW91ciBjbG90aGluZyBhbmQgd2FudAp0byBpbmNsdWRlIGFuIGltYWdlIG9mIG9uZSBvZiB5b3VyIHNoaXJ0cy4gWW91IHdvdWxkIGhhdmUgdG8gY3JlYXRlIGEgbm90YXRpb24Kc2ltaWxhciB0byB0aGlzIG9uZTogPHNhbXAgY2xhc3M9ImNvZGVwaCI+Jmx0OyFOT1RBVElPTiBteXNoaXJ0IFNZU1RFTSAiR0lGIiZndDs8L3NhbXA+IHdoaWNoCmRlZmluZXMgYSBub3RhdGlvbiBmb3IgYSBHSUYgaW1hZ2UuPC9wPgo8cD5UbyBjcmVhdGUgYSBub3RhdGlvbiwgZm9sbG93IHRoZXNlCnN0ZXBzOjwvcD4KPC9kaXY+CjxvbD48bGkgY2xhc3M9InNraXBzcGFjZSI+PHNwYW4+T3BlbiB5b3VyIERURCBpbiB0aGUgRFREIGVkaXRvci48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkluIHRoZSBPdXRsaW5lIHZpZXcsIHJpZ2h0LWNsaWNrIHRoZSBEVEQgPGltZyBzcmM9Ii4uL2ltYWdlcy9uRFRERmlsZS5naWYiIGFsdD0iSW1hZ2Ugb2YgdGhlIERURCBpY29uIiAvPiBhbmQgc2VsZWN0ICA8c3BhbiBjbGFzcz0idWljb250cm9sIj5BZGQgTm90YXRpb26gPC9zcGFuPi4gPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj5JbiB0aGUgUHJvcGVydGllcyB2aWV3LCB0eXBlIHRoZSBuYW1lIG9mIHRoZSBub3RhdGlvbiBpbiB0aGUgPHNwYW4gY2xhc3M9InVpY29udHJvbCI+TmFtZTwvc3Bhbj4gZmllbGQuPC9zcGFuPjwvbGk+CjxsaSBjbGFzcz0ic2tpcHNwYWNlIj48c3Bhbj4oT3B0aW9uYWwpIEluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5QdWJsaWMgSUQ8L3NwYW4+IGZpZWxkLCB0eXBlCmFueSBpbmZvcm1hdGlvbiB5b3Ugd2FudCB0byBzdXBwbHkgdG8gdGhlIHVzZXIgb3IgYXBwbGljYXRpb24uIEZvciBleGFtcGxlLAphIGRlc2NyaXB0aW9uIG9mIHdoYXQgdGhlIG5vdGF0aW9uIHJlZmVycyB0by48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkluIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5TeXN0ZW0gSUQ8L3NwYW4+IGZpZWxkLCB0eXBlIGFueSBpbmZvcm1hdGlvbgp0byBiZSBwYXNzZWQgYWxvbmcgdG8gdGhlIGFwcGxpY2F0aW9uIGRlYWxpbmcgd2l0aCB0aGUgYmluYXJ5IGRhdGEuIEZvciBleGFtcGxlLAphIFVSTC48L3NwYW4+PC9saT4KPGxpIGNsYXNzPSJza2lwc3BhY2UiPjxzcGFuPkNsaWNrIHRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Eb2N1bWVudGF0aW9uPC9zcGFuPiB0YWIgaWYgeW91IHdhbnQKdG8gcHJvdmlkZSBhbnkgaW5mb3JtYXRpb24gYWJvdXQgdGhpcyBub3RhdGlvbi48L3NwYW4+IFRoZSA8c3BhbiBjbGFzcz0idWljb250cm9sIj5Eb2N1bWVudGF0aW9uPC9zcGFuPiBwYWdlCmlzIHVzZWQgZm9yIGh1bWFuIHJlYWRhYmxlIG1hdGVyaWFsLCBzdWNoIGFzIGEgZGVzY3JpcHRpb24gb2YgdGhlIG5vdGF0aW9uCmNvbnRlbnRzLjwvbGk+Cjwvb2w+CjwvZGl2PgoKPGRpdj4KPHA+CjxiIGNsYXNzPSJwYXJlbnRsaW5rIj5QYXJlbnQgdG9waWM6PC9iPiA8YSBocmVmPSIuLi90b3BpY3MvdGVkdGR0ZC5odG1sIiB0aXRsZT0iWW91IGNhbiBlZGl0IERURCBmaWxlcyBpbiBib3RoIHRoZSBPdXRsaW5lIHZpZXcgYW5kIHRoZSBTb3VyY2Ugdmlldy4gTW9kaWZ5aW5nIHRoZSBjb250ZW50IG9mIGEgRFREIGRldGVybWluZXMgd2hhdCBjYW4gYmUgdXNlZCBpbiBhbnkgWE1MIGZpbGUgdGhhdCBpcyBhc3NvY2lhdGVkIHdpdGggaXQuIj5FZGl0aW5nIERURHM8L2E+PGJyIC8+CjwvcD4KPHA+PGIgY2xhc3M9InJlbHRhc2tzaGQiPlJlbGF0ZWQgdGFza3M8L2I+PGJyIC8+CjxhIGhyZWY9Ii4uL3RvcGljcy90cmVtdmVsbS5odG1sIiB0aXRsZT0iSWYgeW91IGhhdmUgY3JlYXRlZCBlbGVtZW50cywgYXR0cmlidXRlcywgZW50aXRpZXMsIG5vdGF0aW9ucywgYW5kIGNvbW1lbnRzIHlvdSBubyBsb25nZXIgbmVlZCwgeW91IGNhbiBkZWxldGUgYW55IG9mIHRoZW0uIj5EZWxldGluZyBlbGVtZW50cywgYXR0cmlidXRlcywgZW50aXRpZXMsIG5vdGF0aW9ucywgYW5kIGNvbW1lbnRzPC9hPjxiciAvPgo8L3A+CjwvZGl2PgoJCTxwPgoJCShDKSBDb3B5cmlnaHQgSUJNIENvcnBvcmF0aW9uIDIwMDAsIDIwMDUuIEFsbCBSaWdodHMgUmVzZXJ2ZWQuCgkJPC9wPiAKPC9ib2R5Pgo8L2h0bWw+