Enhancements to flymake in jde-eclipse-compiler-server.el
"Yee Keat Phuah" <[email protected]> Thu, 27 Dec 2007 12:34:45 +0800
| Newsgroups | gmane.emacs.jdee |
|---|---|
| Message-ID | <[email protected]> |
------=_Part_11783_32679719.1198730085710 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Content-Disposition: inline Hi, Would like to thank Suraj again for the amazing module jde-ecilpse-compiler-server.el, one feature that I felt missing was that flymake could not highlight only the parts of the line that causes the error, instead of highlighting the whole line. I have written a module that add this features to the flymake module, though it modify some of the flymake's internal functions. Will see how I can feed some patches upstream so that I do not need to override the flymake's functions. As this is my first piece of serious code using elisp, any comments welcomed. :) Cheers, Phuah Yee Keat ------=_Part_11783_32679719.1198730085710 Content-Type: text/x-emacs-lisp; name=jde-ecj-flymake.el Content-Transfer-Encoding: base64 X-Attachment-Id: f_faosxqmx0 Content-Disposition: attachment; filename=jde-ecj-flymake.el Ozs7IGpkZS1lY2otZmx5bWFrZS5lbCAtLS0gRW5oYW5jZW1lbnRzIGZvciBmbHltYWtlIGZvciBK REVFCgoKOzsgQ29weXJpZ2h0IChDKSAyMDA3IGJ5IFBodWFoIFllZSBLZWF0Cgo7OyBBdXRob3I6 IFBodWFoIFllZSBLZWF0IDx5a3BodWFoQGdtYWlsLmNvbT4KOzsgTWFpbnRhaW5lcjogUGh1YWgg WWVlIEtlYXQgPHlrcGh1YWhAZ21haWwuY29tPgo7OyBDcmVhdGVkOiAyNyBEZWMgMjAwNwo7OyBL ZXl3b3JkczogZmx5bWFrZSBqZGUtbW9kZSBqYXZhIGVjbGlwc2UgZWNqCjs7IFZlcnNpb24gMC4x Cgo7OyBUaGlzIGZpbGUgaXMgbm90IHBhcnQgb2YgRW1hY3MKCjs7IFRoaXMgcHJvZ3JhbSBpcyBm cmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKOzsgbW9kaWZ5IGl0 IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKOzsg cHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9u IDIsIG9yIChhdAo7OyB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCgo7OyBUaGlzIHBy b2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwg YnV0Cjs7IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2Fy cmFudHkgb2YKOzsgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQ VVJQT1NFLiAgU2VlIHRoZSBHTlUKOzsgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBk ZXRhaWxzLgoKOzsgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdl bmVyYWwgUHVibGljIExpY2Vuc2UKOzsgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IHNlZSB0aGUg ZmlsZSBDT1BZSU5HLiAgSWYgbm90LCB3cml0ZSB0bwo7OyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3Vu ZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCjs7IEJvc3RvbiwgTUEg MDIxMTEtMTMwNywgVVNBLgoKCjs7OyBDb21tZW50YXJ5Ogo7OyAKOzsgVGhpcyBmaWxlIGVuaGFu Y2UgdGhlIGZseW1ha2UgZm9yIGpkZWUgbW9kZSB1c2luZyB0aGUgamRlLWVjbGlwc2UtY29tcGls ZXItc2VydmVyLmVsCjs7IGl0IHVzZXMgdGhlIGNhcmV0cyBmcm9tIHRoZSBlY2ogdG8gb25seSBo aWdobGlnaHQgcG9ydGlvbiBvZiB0aGUgbGluZXMgdGhhdCBoYXZlIAo7OyB0aGUgZXJyb3Ivd2Fy bmluZy4KCihyZXF1aXJlICdmbHltYWtlKQoocmVxdWlyZSAnamRlLWVjbGlwc2UtY29tcGlsZXIt c2VydmVyKQoKKGRlZnN0cnVjdCAoZmx5bWFrZS1sZXIKICAgICAgICAgICAgKDpjb25zdHJ1Y3Rv ciBuaWwpCiAgICAgICAgICAgICg6Y29uc3RydWN0b3IgZmx5bWFrZS1sZXItbWFrZS1sZXIgKGZp bGUgbGluZSB0eXBlIHRleHQgJm9wdGlvbmFsIGZ1bGwtZmlsZSBzdGFydCBlbmQpKSkKICBmaWxl IGxpbmUgdHlwZSB0ZXh0IGZ1bGwtZmlsZSBzdGFydCBlbmQpCgooZGVmdW4gZmx5bWFrZS1sZXIt c2V0LWZpbGUgKGxpbmUtZXJyLWluZm8gZmlsZSkKICAoZmx5bWFrZS1sZXItbWFrZS1sZXIgZmls ZQoJCQkoZmx5bWFrZS1sZXItbGluZSBsaW5lLWVyci1pbmZvKQoJCQkoZmx5bWFrZS1sZXItdHlw ZSBsaW5lLWVyci1pbmZvKQoJCQkoZmx5bWFrZS1sZXItdGV4dCBsaW5lLWVyci1pbmZvKQoJCQko Zmx5bWFrZS1sZXItZnVsbC1maWxlIGxpbmUtZXJyLWluZm8pCgkJCShmbHltYWtlLWxlci1zdGFy dCBsaW5lLWVyci1pbmZvKQoJCQkoZmx5bWFrZS1sZXItZW5kIGxpbmUtZXJyLWluZm8pKSkKCihk ZWZ1biBmbHltYWtlLWxlci1zZXQtZnVsbC1maWxlIChsaW5lLWVyci1pbmZvIGZ1bGwtZmlsZSkK ICAoZmx5bWFrZS1sZXItbWFrZS1sZXIgKGZseW1ha2UtbGVyLWZpbGUgbGluZS1lcnItaW5mbykK CQkJKGZseW1ha2UtbGVyLWxpbmUgbGluZS1lcnItaW5mbykKCQkJKGZseW1ha2UtbGVyLXR5cGUg bGluZS1lcnItaW5mbykKCQkJKGZseW1ha2UtbGVyLXRleHQgbGluZS1lcnItaW5mbykKCQkJZnVs bC1maWxlCgkJCShmbHltYWtlLWxlci1zdGFydCBsaW5lLWVyci1pbmZvKQoJCQkoZmx5bWFrZS1s ZXItZW5kIGxpbmUtZXJyLWluZm8pKSkKCihkZWZ1biBmbHltYWtlLWxlci1zZXQtbGluZSAobGlu ZS1lcnItaW5mbyBsaW5lKQogIChmbHltYWtlLWxlci1tYWtlLWxlciAoZmx5bWFrZS1sZXItZmls ZSBsaW5lLWVyci1pbmZvKQoJCQlsaW5lCgkJCShmbHltYWtlLWxlci10eXBlIGxpbmUtZXJyLWlu Zm8pCgkJCShmbHltYWtlLWxlci10ZXh0IGxpbmUtZXJyLWluZm8pCgkJCShmbHltYWtlLWxlci1m dWxsLWZpbGUgbGluZS1lcnItaW5mbykKCQkJKGZseW1ha2UtbGVyLXN0YXJ0IGxpbmUtZXJyLWlu Zm8pCgkJCShmbHltYWtlLWxlci1lbmQgbGluZS1lcnItaW5mbykpKQoKKGRlZnVuIGZseW1ha2Ut cGFyc2UtbGluZSAobGluZSkKICAiUGFyc2UgTElORSB0byBzZWUgaWYgaXQgaXMgYW4gZXJyb3Ig b3Igd2FybmluZy4KUmV0dXJuIGl0cyBjb21wb25lbnRzIGlmIHNvLCBuaWwgb3RoZXJ3aXNlLiIK ICAobGV0ICgocmF3LWZpbGUtbmFtZSBuaWwpCgkobGluZS1ubyAwKQoJKGVyci10eXBlICJlIikK CShlcnItdGV4dCBuaWwpCgkoY29sLXN0YXJ0IG5pbCkKCShjb2wtZW5kIG5pbCkKCShwYXR0ZXJu cyBmbHltYWtlLWVyci1saW5lLXBhdHRlcm5zKQoJKG1hdGNoZWQgbmlsKSkKICAgICh3aGlsZSAo YW5kIHBhdHRlcm5zIChub3QgbWF0Y2hlZCkpCiAgICAgICh3aGVuIChzdHJpbmctbWF0Y2ggKGNh ciAoY2FyIHBhdHRlcm5zKSkgbGluZSkKCShsZXQqICgoZmlsZS1pZHggKG50aCAxIChjYXIgcGF0 dGVybnMpKSkKCSAgICAgICAobGluZS1pZHggKG50aCAyIChjYXIgcGF0dGVybnMpKSkKCSAgICAg ICAoY29sLXBhcnNlciAobnRoIDUgKGNhciBwYXR0ZXJucykpKSkKCgkgIChzZXRxIHJhdy1maWxl LW5hbWUgKGlmIGZpbGUtaWR4IChtYXRjaC1zdHJpbmcgZmlsZS1pZHggbGluZSkgbmlsKSkKCSAg KHNldHEgbGluZS1ubyAgICAgICAoaWYgbGluZS1pZHggKHN0cmluZy10by1udW1iZXIgKG1hdGNo LXN0cmluZyBsaW5lLWlkeCBsaW5lKSkgMCkpCgkgIChzZXRxIGVyci10ZXh0ICAgICAgKGlmICg+ IChsZW5ndGggKGNhciBwYXR0ZXJucykpIDQpCgkJCQkgIChtYXRjaC1zdHJpbmcgKG50aCA0IChj YXIgcGF0dGVybnMpKSBsaW5lKQoJCQkJKGZseW1ha2UtcGF0Y2gtZXJyLXRleHQgKHN1YnN0cmlu ZyBsaW5lIChtYXRjaC1lbmQgMCkpKSkpCgkgIChvciBlcnItdGV4dCAoc2V0cSBlcnItdGV4dCAi PG5vIGVycm9yIHRleHQ+IikpCgkgIChpZiAoYW5kIGVyci10ZXh0IChzdHJpbmctbWF0Y2ggIl5b d1ddYXJuaW5nIiBlcnItdGV4dCkpCgkgICAgICAoc2V0cSBlcnItdHlwZSAidyIpKQoJICAod2hl biBjb2wtcGFyc2VyCgkgICAgKGZseW1ha2UtbG9nIDMgIi0tLS0gaGF2ZSBjb2x1bW4gaW5mb3Jt YXRpb24iKQoJICAgIChsZXQgKChjb2wtbGlzdCAoZnVuY2FsbCBjb2wtcGFyc2VyIGxpbmUpKSkK CSAgICAgIChzZXRxIGNvbC1zdGFydCAobnRoIDAgY29sLWxpc3QpKQoJICAgICAgKHNldHEgY29s LWVuZCAobnRoIDEgY29sLWxpc3QpKSkpCgkgIChmbHltYWtlLWxvZyAzICJwYXJzZSBsaW5lOiBm aWxlLWlkeD0lcyBsaW5lLWlkeD0lcyBmaWxlPSVzIGxpbmU9JXMgdGV4dD0lcyBjb2w9JXM6JXMi IGZpbGUtaWR4IGxpbmUtaWR4CgkJICAgICAgIHJhdy1maWxlLW5hbWUgbGluZS1ubyBlcnItdGV4 dCBjb2wtc3RhcnQgY29sLWVuZCkKCSAgKHNldHEgbWF0Y2hlZCB0KSkpCiAgICAoc2V0cSBwYXR0 ZXJucyAoY2RyIHBhdHRlcm5zKSkpCiAgKGlmIG1hdGNoZWQKICAgICAgKGZseW1ha2UtbGVyLW1h a2UtbGVyIHJhdy1maWxlLW5hbWUgbGluZS1ubyBlcnItdHlwZSBlcnItdGV4dCBuaWwgY29sLXN0 YXJ0IGNvbC1lbmQpCiAgICAoKSkpKQoKKHNldHEgZmx5bWFrZS1lcnItbGluZS1wYXR0ZXJucwog ICAgICAoY29ucyAnKCIgKlxcKFxcW2phdmFjXFxdXFwpPyAqXFwoXFwoW2EtekEtWl06XFwpP1te OihcdFxuXStcXClcOlxcKFswLTldK1xcKVw6WyBcdFxuXSpcXCguK1xcKSIKCSAgICAgIDIgNCBu aWwgNSBmbHltYWtlLWphdmEtZ2V0LXN0YXJ0LWVuZCkKCSAgICBmbHltYWtlLWVyci1saW5lLXBh dHRlcm5zKSkKCihkZWZ1biBmbHltYWtlLWphdmEtZ2V0LXN0YXJ0LWVuZCAobGluZSkKICAiUGFy c2UgdGhlIGNhcmV0cyBmcm9tIHRoZSBqYXZhYyBsaW5lIHRvIG9idGFpbiB0aGUgc3RhcnQgY29s dW1uIGFuZCBlbmQgY29sdW1uIG9mIHRoZSBlcnJvciwgb25seSBvbmUgc3RyZXRjaCBwZXIgbGlu ZSIKICAobGV0KiAoKHN0cmluZ3MgKHNwbGl0LXN0cmluZyBsaW5lICJcbiIpKQoJIChzdHJpbmdy ZWYgKG50aCAxIHN0cmluZ3MpKQoJIChsZWFkaW5nLXNwYWNlcyAoZmx5bWFrZS1jb3VudC1sZWFk aW5nLXNwYWNlcyBzdHJpbmdyZWYpKQoJIChjYXJldHMgKG50aCAyIHN0cmluZ3MpKQoJIChzdGFy dCAwKQoJIChlbmQgMCkKCSBwb3MpCiAgICAoZmx5bWFrZS1sb2cgMyAic3RyaW5ncmVmID0gJXMs IGxlYWRpbmctc3BhY2VzID0gJXMsIGNhcmV0cyA9ICVzIiBzdHJpbmdyZWYgbGVhZGluZy1zcGFj ZXMgY2FyZXRzKQogICAgKHNldHEgcG9zIChmbHltYWtlLWNvdW50LXNwYWNlcy1jYXJldHMgY2Fy ZXRzKSkKICAgIChzZXRxIHN0YXJ0ICgtIChudGggMCBwb3MpIGxlYWRpbmctc3BhY2VzKSkKICAg IChzZXRxIGVuZCAoLSAobnRoIDEgcG9zKSBsZWFkaW5nLXNwYWNlcykpCiAgICAobGlzdCBzdGFy dCBlbmQpKSkKCihkZWZ1biBmbHltYWtlLWNvbWJpbmUtdHJpcGxldCAobGluZXMgJm9wdGlvbmFs IHNlcCkKICAobGV0ICgoY29tYmluZWQtbGluZXMgJygpKQoJKHRyaXBsZXQgJygpKSkKICAgIChk b2xpc3QgKHN0ciBsaW5lcykKICAgICAgKHdoZW4gKD0gKGxlbmd0aCB0cmlwbGV0KSAoaWYgc2Vw IDYgMykpCgkoYWRkLXRvLWxpc3QgJ2NvbWJpbmVkLWxpbmVzIChhcHBseSAnY29uY2F0IHRyaXBs ZXQpIHQpCgkoc2V0cSB0cmlwbGV0ICcoKSkpCiAgICAgIChhZGQtdG8tbGlzdCAndHJpcGxldCBz dHIgdCkKICAgICAgKGlmIHNlcAoJICAoc2V0cSB0cmlwbGV0IChhcHBlbmQgdHJpcGxldCAobGlz dCBzZXApKSkpKQogICAgKGFkZC10by1saXN0ICdjb21iaW5lZC1saW5lcyAoYXBwbHkgJ2NvbmNh dCB0cmlwbGV0KSB0KQogICAgY29tYmluZWQtbGluZXMpKQoKKGFkZC1ob29rICdmbHltYWtlLWJl Zm9yZS1wYXJzZS1lcnItbGluZXMtaG9vayAnbWVyZ2UtamF2YS1lcnItbGluZXMpCgooZGVmdW4g Zmx5bWFrZS1jb3VudC1zcGFjZXMtY2FyZXRzIChsaW5lKQogIChsZXQgKChzcGFjZXMgMCkKCShj YXJldHMgMCkpCiAgICAoZG9saXN0IChjaGFyIChzdHJpbmctdG8tbGlzdCBsaW5lKSkKICAgICAg KGNvbmQgKChjaGFyLWVxdWFsIGNoYXIgP1xzKSAoaW5jZiBzcGFjZXMpKQoJICAgICgoY2hhci1l cXVhbCBjaGFyID9cdCkgKHNldHEgc3BhY2VzICgrIHNwYWNlcyA4KSkpCgkgICAgKChjaGFyLWVx dWFsIGNoYXIgP14pIChpbmNmIGNhcmV0cykpKSkKICAgIChsaXN0IHNwYWNlcyAoKyBzcGFjZXMg Y2FyZXRzKSkpKQoKKGRlZnVuIGZseW1ha2UtY291bnQtbGVhZGluZy1zcGFjZXMgKGxpbmUpCiAg KGZseW1ha2UtbG9nIDMgImNvdW50LWxlYWRpbmctc3BhY2VzIDogJXMgIiBsaW5lKQogIChsZXQq ICgoc3RyaW5nbGlzdCAoc3RyaW5nLXRvLWxpc3QgbGluZSkpCgkgKGMgKGNhciBzdHJpbmdsaXN0 KSkKCSAoc3BhY2VzIDApCgkgKGRvbmUgbmlsKSkKICAgICh3aGlsZSAoYW5kIChub3QgZG9uZSkg c3RyaW5nbGlzdCkKICAgICAgKGNvbmQgKChjaGFyLWVxdWFsIGMgP1xzKSAoaW5jZiBzcGFjZXMp KQoJICAgICgoY2hhci1lcXVhbCBjID9cdCkgKHNldHEgc3BhY2VzICgrIHNwYWNlcyA4KSkpCgkg ICAgKHQgKHNldHEgZG9uZSB0KSkpCiAgICAgIChzZXRxIHN0cmluZ2xpc3QgKGNkciBzdHJpbmds aXN0KSkKICAgICAgKHNldHEgYyAoY2FyIHN0cmluZ2xpc3QpKSkKICAgIHNwYWNlcykpCgooZGVm dW4gZmx5bWFrZS1oaWdobGlnaHQtbGluZSAobGluZS1ubyBsaW5lLWVyci1pbmZvLWxpc3QpCiAg IkhpZ2hsaWdodCBsaW5lIExJTkUtTk8gaW4gY3VycmVudCBidWZmZXIuClBlcmhhcHMgdXNlIHRl eHQgZnJvbSBMSU5FLUVSUi1JTkZPLUxJU1QgdG8gZW5oYW5jZSBoaWdobGlnaHRpbmcuIgogIChn b3RvLWxpbmUgbGluZS1ubykKICAobGV0KiAoKGxpbmUtYmVnIChmbHltYWtlLWxpbmUtYmVnaW5u aW5nLXBvc2l0aW9uKSkKCSAobGluZS1lbmQgKGZseW1ha2UtbGluZS1lbmQtcG9zaXRpb24pKQoJ IChiZWcgICAgICBsaW5lLWJlZykKCSAoZW5kICAgICAgbGluZS1lbmQpCgkgKHRvb2x0aXAtdGV4 dCAoZmx5bWFrZS1sZXItdGV4dCAobnRoIDAgbGluZS1lcnItaW5mby1saXN0KSkpCgkgKGZhY2Ug ICAgIG5pbCkpCgogICAgKGdvdG8tY2hhciBsaW5lLWJlZykKICAgICh3aGlsZSAobG9va2luZy1h dCAiWyBcdF0iKQogICAgICAoZm9yd2FyZC1jaGFyKSkKCiAgICAoaWYgKGZseW1ha2UtbGVyLXN0 YXJ0IChudGggMCBsaW5lLWVyci1pbmZvLWxpc3QpKQoJKGZvcndhcmQtY2hhciAoZmx5bWFrZS1s ZXItc3RhcnQgKG50aCAwIGxpbmUtZXJyLWluZm8tbGlzdCkpKSkKCiAgICAoc2V0cSBiZWcgKHBv aW50KSkKCiAgICAoaWYgKGZseW1ha2UtbGVyLWVuZCAobnRoIDAgbGluZS1lcnItaW5mby1saXN0 KSkKCShzZXRxIGVuZCAoKyBiZWcgKC0gKGZseW1ha2UtbGVyLWVuZCAobnRoIDAgbGluZS1lcnIt aW5mby1saXN0KSkgKGZseW1ha2UtbGVyLXN0YXJ0IChudGggMCBsaW5lLWVyci1pbmZvLWxpc3Qp KSkpKQogICAgICAoZ290by1jaGFyIGxpbmUtZW5kKQogICAgICAod2hpbGUgKGFuZCAobG9va2lu Zy1hdCAiWyBcdFxyXG5dIikgKD4gKHBvaW50KSAxKSkKCShiYWNrd2FyZC1jaGFyKSkKCiAgICAg IChzZXRxIGVuZCAoMSsgKHBvaW50KSkpKQoKICAgICh3aGVuICg8PSBlbmQgYmVnKQogICAgICAo c2V0cSBiZWcgbGluZS1iZWcpCiAgICAgIChzZXRxIGVuZCBsaW5lLWVuZCkpCgogICAgKHdoZW4g KD0gZW5kIGJlZykKICAgICAgKGdvdG8tY2hhciBlbmQpCiAgICAgIChmb3J3YXJkLWxpbmUpCiAg ICAgIChzZXRxIGVuZCAocG9pbnQpKSkKCiAgICAoaWYgKD4gKGZseW1ha2UtZ2V0LWxpbmUtZXJy LWNvdW50IGxpbmUtZXJyLWluZm8tbGlzdCAiZSIpIDApCgkoc2V0cSBmYWNlICdmbHltYWtlLWVy cmxpbmUpCiAgICAgIChzZXRxIGZhY2UgJ2ZseW1ha2Utd2FybmxpbmUpKQoKICAgIChmbHltYWtl LW1ha2Utb3ZlcmxheSBiZWcgZW5kIHRvb2x0aXAtdGV4dCBmYWNlIG5pbCkpKQoKOyhsZXQqICgo cG9zIChnZXQtc3RhcnQtZW5kICIgICAgXl5eXl5eIikpCjsgICAgICAgKHN0YXJ0IChudGggMCBw b3MpKQo7ICAgICAgIChlbmQgKG50aCAxIHBvcykpKQo7ICAobWVzc2FnZSAicG9zOiVzOiVzIiBz dGFydCBlbmQpKQoKKGRlZnVuIGZseW1ha2Utc3BsaXQtb3V0cHV0IChvdXRwdXQpCiAgIlNwbGl0 IE9VVFBVVCBpbnRvIGxpbmVzLgpSZXR1cm4gbGFzdCBvbmUgYXMgcmVzaWR1YWwgaWYgaXQgZG9l cyBub3QgZW5kIHdpdGggbmV3bGluZSBjaGFyLgpSZXR1cm5zICgoTElORVMpIFJFU0lEVUFMKS4i CiAgKGZseW1ha2UtbG9nIDMgIm1ham9yLW1vZGU6JXMiIG1ham9yLW1vZGUpCiAgKGlmIChtZW1i ZXIgbWFqb3ItbW9kZSAnKGphdmEtbW9kZSBqZGUtbW9kZSkpCiAgICAgIChmbHltYWtlLXNwbGl0 LW91dHB1dC1qYXZhIG91dHB1dCkKICAgICh3aGVuIChhbmQgb3V0cHV0ICg+IChsZW5ndGggb3V0 cHV0KSAwKSkKICAgICAgKGxldCogKChsaW5lcyAoZmx5bWFrZS1zcGxpdC1zdHJpbmcgb3V0cHV0 ICJbXG5ccl0rIikpCgkgICAgIChjb21wbGV0ZSAoZXF1YWwgIlxuIiAoY2hhci10by1zdHJpbmcg KGFyZWYgb3V0cHV0ICgxLSAobGVuZ3RoIG91dHB1dCkpKSkpKQoJICAgICAocmVzaWR1YWwgbmls KSkKCSh3aGVuIChub3QgY29tcGxldGUpCgkgIChzZXRxIHJlc2lkdWFsIChjYXIgKGxhc3QgbGlu ZXMpKSkKCSAgKHNldHEgbGluZXMgKGJ1dGxhc3QgbGluZXMpKSkKCShsaXN0IGxpbmVzIHJlc2lk dWFsKSkpKSkKCihkZWZ1biBmbHltYWtlLXNwbGl0LW91dHB1dC1qYXZhIChvdXRwdXQpCiAgKGZs eW1ha2UtbG9nIDMgImZseW1ha2Utc3BsaXQtb3V0cHV0LWphdmEiKQogICh3aGVuIChhbmQgb3V0 cHV0ICg+IChsZW5ndGggb3V0cHV0KSAwKSkKICAgIChsZXQqICgobGluZXMgKGZseW1ha2Utc3Bs aXQtc3RyaW5nIG91dHB1dCAiW1xuXHJdKyIpKQoJICAgY29tcGxldGUgCgkgICByZXNpZHVhbCkK ICAgICAgKHNldHEgbGluZXMgKGZseW1ha2UtY29tYmluZS10cmlwbGV0IGxpbmVzICJcbiIpKQog ICAgICAoc2V0cSBjb21wbGV0ZSAoc3RyaW5nLW1hdGNoICIuKlxuLipcbi4qXG4iIChjYXIgKGxh c3QgbGluZXMpKSkpCiAgICAgICh3aGVuIChub3QgY29tcGxldGUpCgkoc2V0cSByZXNpZHVhbCAo Y2FyIChsYXN0IGxpbmVzKSkpCgkoc2V0cSBsaW5lcyAoYnV0bGFzdCBsaW5lcykpKQogICAgICAo bGlzdCBsaW5lcyByZXNpZHVhbCkpKSkKCihwcm92aWRlICdqZGUtZWNqLWZseW1ha2Up ------=_Part_11783_32679719.1198730085710--