[Mono-list] WG: Mcs/class/System/Microsoft.VisualBasic/VBCodeCompiler

Jochen Wezel jwezel@compumaster.de
Tue, 7 Oct 2003 11:53:57 +0200


This is a multi-part message in MIME format.

------_=_NextPart_001_01C38CB8.ED3FA84F
Content-Type: multipart/alternative;
	boundary="----_=_NextPart_002_01C38CB8.ED3FA84F"


------_=_NextPart_002_01C38CB8.ED3FA84F
Content-Type: text/plain;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

Dear Andreas Nahr,
Dear Gonzalo,

Please could you review the VisualBasicCodeCompiler and after that place =
it into CVS? It's currently missing a I've seen.
Currently, the VBCodeProvider creates a VBCodeGenerator instead of a =
VBCodeCompiler. This should be fixed after placing of the compiler.

Gonzalo, please find attached the VBCodeProviderTest. It compiles and =
runs the tests successfully on MS.NET.

 <<VBCodeProviderTest.cs>>=20

Best Regards
Jochen


>  -----Urspr=FCngliche Nachricht-----
> Von: 	Jochen Wezel =20
> Gesendet:	Dienstag, 8. Juli 2003 17:44
> An:	'mailto:mono-list@lists.ximian.com'
> Betreff:	Mcs/class/System/Microsoft.VisualBasic/VBCodeCompiler
>=20
> To attention for Andreas Nahr
>=20
> Here is the VisualBasicCodeCompiler module for Microsoft.VisualBasic
> Please take a look into.
>=20
> >  <<VisualBasicCodeCompiler.cs>>=20
>=20
> I suggest to rename the VBCodeGenerator & Co. to =
VisualBasicCodeGenerator as Microsoft does.
> Then it should compile fine (I hope).
>=20
> Please add my e-mail address (jwezel@compumaster.de) to all responses.
>=20
> Jochen
>=20
>=20
> =
*************************************************************************=
***
> CompuMaster GmbH
> Fon: +49 6747 95084-12 / Fax: +49 6747 95084-50
> http://www.compumaster.de eMail: jwezel@compumaster.de
> =
*************************************************************************=
***
>=20

------_=_NextPart_002_01C38CB8.ED3FA84F
Content-Type: text/html;
	charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<HEAD>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; =
charset=3Diso-8859-1">
<META NAME=3D"Generator" CONTENT=3D"MS Exchange Server version =
6.5.6944.0">
<TITLE>WG: Mcs/class/System/Microsoft.VisualBasic/VBCodeCompiler</TITLE>
</HEAD>
<BODY>
<!-- Converted from text/rtf format -->

<P><FONT SIZE=3D2 FACE=3D"Arial">Dear Andreas Nahr,</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Dear Gonzalo,</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Please could you review the =
VisualBasicCodeCompiler and after that place it into CVS? It's currently =
missing a I've seen.</FONT></P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Currently, the VBCodeProvider creates a =
VBCodeGenerator instead of a VBCodeCompiler. This should be fixed after =
placing of the compiler.</FONT></P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Gonzalo, please find attached the =
VBCodeProviderTest. It compiles and runs the tests successfully on =
MS.NET.</FONT>
</P>

<P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
&lt;&lt;VBCodeProviderTest.cs&gt;&gt; </FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Best Regards</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Jochen</FONT>
</P>
<BR>

<P><FONT FACE=3D"Arial"></FONT>&nbsp;<FONT SIZE=3D1 =
FACE=3D"Tahoma">-----Urspr=FCngliche Nachricht-----</FONT>

<BR><B><FONT SIZE=3D1 FACE=3D"Tahoma">Von: &nbsp;&nbsp;</FONT></B> <FONT =
SIZE=3D1 FACE=3D"Tahoma">Jochen Wezel&nbsp; </FONT>

<BR><B><FONT SIZE=3D1 =
FACE=3D"Tahoma">Gesendet:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT></B> =
<FONT SIZE=3D1 FACE=3D"Tahoma">Dienstag, 8. Juli 2003 17:44</FONT>

<BR><B><FONT SIZE=3D1 =
FACE=3D"Tahoma">An:&nbsp;&nbsp;&nbsp;&nbsp;</FONT></B> <FONT SIZE=3D1 =
FACE=3D"Tahoma">'</FONT><A =
HREF=3D"mailto:mono-list@lists.ximian.com"><U><FONT COLOR=3D"#0000FF" =
SIZE=3D1 =
FACE=3D"Tahoma">mailto:mono-list@lists.ximian.com</FONT></U></A><FONT =
SIZE=3D1 FACE=3D"Tahoma">'</FONT>

<BR><B><FONT SIZE=3D1 =
FACE=3D"Tahoma">Betreff:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</FONT>=
</B> <FONT SIZE=3D1 =
FACE=3D"Tahoma">Mcs/class/System/Microsoft.VisualBasic/VBCodeCompiler</FO=
NT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">To attention for Andreas Nahr</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Here is the VisualBasicCodeCompiler =
module for Microsoft.VisualBasic</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Please take a look into.</FONT>
</P>

<P><FONT FACE=3D"Arial" SIZE=3D2 COLOR=3D"#000000"> =
&lt;&lt;VisualBasicCodeCompiler.cs&gt;&gt; </FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">I suggest to rename the VBCodeGenerator =
&amp; Co. to VisualBasicCodeGenerator as Microsoft does.</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Arial">Then it should compile fine (I =
hope).</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Please add my e-mail address =
(jwezel@compumaster.de) to all responses.</FONT>
</P>

<P><FONT SIZE=3D2 FACE=3D"Arial">Jochen</FONT>
</P>
<BR>

<P><FONT SIZE=3D2 FACE=3D"Courier =
New">********************************************************************=
********</FONT>

<BR><FONT SIZE=3D2 FACE=3D"Courier New">CompuMaster GmbH</FONT>

<BR><SPAN LANG=3D"fr"><FONT SIZE=3D2 FACE=3D"Courier New">Fon: +49 6747 =
95084-12 / Fax: +49 6747 95084-50</FONT></SPAN>

<BR><SPAN LANG=3D"de"></SPAN><A HREF=3D"http://www.compumaster.de"><SPAN =
LANG=3D"de"><U><FONT COLOR=3D"#0000FF" SIZE=3D2 FACE=3D"Courier =
New">http://www.compumaster.de</FONT></U></SPAN><SPAN =
LANG=3D"de"></SPAN></A><SPAN LANG=3D"de"></SPAN><SPAN =
LANG=3D"de"></SPAN><SPAN LANG=3D"de"><FONT SIZE=3D2 FACE=3D"Courier =
New"> eMail: jwezel@compumaster.de</FONT></SPAN>

<BR><SPAN LANG=3D"de"><FONT SIZE=3D2 FACE=3D"Courier =
New">********************************************************************=
********</FONT></SPAN>
</P>

</BODY>
</HTML>
------_=_NextPart_002_01C38CB8.ED3FA84F--

------_=_NextPart_001_01C38CB8.ED3FA84F
Content-Type: application/octet-stream;
	name="VBCodeProviderTest.cs"
Content-Transfer-Encoding: base64
Content-Description: VBCodeProviderTest.cs
Content-Disposition: attachment;
	filename="VBCodeProviderTest.cs"

Ly8NCi8vIE1pY3Jvc29mdC5WaXN1YWxCYXNpYy5WQkNvZGVQcm92aWRlci5jcw0KLy8NCi8vIEF1
dGhvcjoNCi8vICAgQW5kcmVhcyBOYWhyIChDbGFzc0RldmVsb3BtZW50QEEtU29mdFRlY2guY29t
KQ0KLy8NCi8vIChDKSAyMDAzIEFuZHJlYXMgTmFocg0KLy8NCg0KdXNpbmcgTlVuaXQuRnJhbWV3
b3JrOw0KdXNpbmcgU3lzdGVtOw0KdXNpbmcgTWljcm9zb2Z0LlZpc3VhbEJhc2ljOw0KdXNpbmcg
U3lzdGVtLkNvZGVEb20uQ29tcGlsZXI7DQp1c2luZyBTeXN0ZW0uQ29tcG9uZW50TW9kZWw7DQoN
Cm5hbWVzcGFjZSBNb25vVGVzdHMuTWljcm9zb2Z0LlZpc3VhbEJhc2ljDQp7DQoJW1Rlc3RGaXh0
dXJlXQ0KCXB1YmxpYyBjbGFzcyBWQkNvZGVQcm92aWRlclRlc3QgOiBBc3NlcnRpb24gew0KCQ0K
CQlDb2RlRG9tUHJvdmlkZXIgTXlWQkNvZGVQcm92aWRlcjsNCg0KCQlbU2V0VXBdDQoJCXB1Ymxp
YyB2b2lkIEdldFJlYWR5KCkgeyANCgkJCU15VkJDb2RlUHJvdmlkZXIgPSBuZXcgVkJDb2RlUHJv
dmlkZXIoKTsgDQoJCX0NCg0KCQlbVGVhckRvd25dDQoJCXB1YmxpYyB2b2lkIENsZWFuKCkge30N
Cg0KCQlbVGVzdF0NCgkJcHVibGljIHZvaWQgRmlsZUV4dGVuc2lvbiAoKQ0KCQl7DQoJCQlBc3Nl
cnRFcXVhbHMgKCIjSlcxMCIsICJ2YiIsIE15VkJDb2RlUHJvdmlkZXIuRmlsZUV4dGVuc2lvbik7
DQoJCX0NCg0KCQlbVGVzdF0NCgkJcHVibGljIHZvaWQgTGFuZ3VhZ2VPcHRpb25zICgpDQoJCXsN
CgkJCUFzc2VydEVxdWFscyAoIiNKVzIwIiwgU3lzdGVtLkNvZGVEb20uQ29tcGlsZXIuTGFuZ3Vh
Z2VPcHRpb25zLkNhc2VJbnNlbnNpdGl2ZSwgTXlWQkNvZGVQcm92aWRlci5MYW5ndWFnZU9wdGlv
bnMpOw0KCQl9DQoNCgkJW1Rlc3RdDQoJCXB1YmxpYyB2b2lkIENyZWF0ZUNvbXBpbGVyKCkNCgkJ
ew0KCQkJSUNvZGVDb21waWxlciBNeVZCQ29kZUNvbXBpbGVyOw0KCQkJTXlWQkNvZGVDb21waWxl
ciA9IE15VkJDb2RlUHJvdmlkZXIuQ3JlYXRlQ29tcGlsZXIoKTsNCgkJCUFzc2VydCAoIiNKVzMw
IC0gQ3JlYXRlQ29tcGlsZXIiLCAoTXlWQkNvZGVDb21waWxlciAhPSBudWxsKSk7DQogICAgICAg
ICAgICBTeXN0ZW0uQ29kZURvbS5Db21waWxlci5Db21waWxlclJlc3VsdHMgTXlWQkNvZGVDb21w
aWxlclJlc3VsdHM7DQogICAgICAgICAgICBNeVZCQ29kZUNvbXBpbGVyUmVzdWx0cyA9IE15VkJD
b2RlQ29tcGlsZXIuQ29tcGlsZUFzc2VtYmx5RnJvbVNvdXJjZShuZXcgU3lzdGVtLkNvZGVEb20u
Q29tcGlsZXIuQ29tcGlsZXJQYXJhbWV0ZXJzKCksIA0KICAgICAgICAgICAgICAgICAicHVibGlj
IGNsYXNzIFRlc3RNb2R1bGVcclxuXHJcbnB1YmxpYyBzaGFyZWQgc3ViIE1haW4oKVxyXG5TeXN0
ZW0uQ29uc29sZS5Xcml0ZUxpbmUoXCJIZWxsbyB3b3JsZCFcIilcclxuRW5kIFN1YlxyXG5FbmQg
Q2xhc3NcclxuIik7DQoJCQlTeXN0ZW0uQ29sbGVjdGlvbnMuU3BlY2lhbGl6ZWQuU3RyaW5nQ29s
bGVjdGlvbiBNeU91dHB1dDsNCgkJCU15T3V0cHV0ID0gTXlWQkNvZGVDb21waWxlclJlc3VsdHMu
T3V0cHV0Ow0KCQkJc3RyaW5nIE15T3V0U3RyID0gIiI7DQoJCQlmb3JlYWNoIChzdHJpbmcgTXlT
dHIgaW4gTXlPdXRwdXQpDQoJCQl7DQoJCQkJTXlPdXRTdHIgKz0gTXlTdHIgKyAiXHJcblxyXG4i
Ow0KCQkJfQ0KCQkJaWYgKE15T3V0U3RyICE9ICIiKQ0KCQkJCVN5c3RlbS5Db25zb2xlLldyaXRl
TGluZSAoIkVycm9yIGNvbXBpbGluZyBWQi5ORVQgSGVsbG8gd29ybGQgdGVzdCBhcHBsaWNhdGlv
blxyXG5cclxuIiArIE15T3V0U3RyKTsNCiAgICAgICAgICAgIEFzc2VydEVxdWFscyAoIiNKVzMx
IC0gSGVsbG8gd29ybGQgY29tcGlsYXRpb24iLCAwLCBNeVZCQ29kZUNvbXBpbGVyUmVzdWx0cy5F
cnJvcnMuQ291bnQpOw0KCQl9DQoNCgkJW1Rlc3RdDQoJCXB1YmxpYyB2b2lkIENyZWF0ZUdlbmVy
YXRvcigpDQoJCXsNCgkJCUlDb2RlR2VuZXJhdG9yIE15VkJDb2RlR2VuOw0KCQkJTXlWQkNvZGVH
ZW4gPSBNeVZCQ29kZVByb3ZpZGVyLkNyZWF0ZUdlbmVyYXRvcigpOw0KCQkJQXNzZXJ0ICgiI0pX
NDAgLSBDcmVhdGVHZW5lcmF0b3IiLCAoTXlWQkNvZGVHZW4gIT0gbnVsbCkpOw0KCQkJQXNzZXJ0
RXF1YWxzICgiI0pXNDEiLCB0cnVlLCBNeVZCQ29kZUdlbi5TdXBwb3J0cyAoU3lzdGVtLkNvZGVE
b20uQ29tcGlsZXIuR2VuZXJhdG9yU3VwcG9ydC5EZWNsYXJlRW51bXMpKTsNCgkJfQ0KCQkNCgkJ
W1Rlc3RdDQoJCXB1YmxpYyB2b2lkIEdldENvbnZlcnRlciAoKQ0KCQl7DQoJCQkvKiBUT0RPDQoJ
CQkvL2Rvbid0IGtub3cgd2h5IHdlIGdldCBhbiBlcnJvciBpbiBNUy5OZXQNCgkJCS8vTW9ub1Rl
c3RzLk1pY3Jvc29mdC5WaXN1YWxCYXNpYy5WQkNvZGVQcm92aWRlclRlc3QuR2V0Q29udmVydGVy
IDogU3lzdGVtLkFyZ3VtZW50TnVsbEV4Y2VwdGlvbiA6IERlciBTY2hsw7xzc2VsIGthbm4gbmlj
aHQgTnVsbCBzZWluLiBQYXJhbWV0ZXJuYW1lOiBrZXkNCgkJCUFzc2VydEVxdWFscyAoIiNKVzUw
IiwgImxvbmciLCBNeVZCQ29kZVR5cGVDb252LkdldFR5cGUoKSk7DQoJCQkqLw0KCQl9DQoNCgl9
DQp9DQo=

------_=_NextPart_001_01C38CB8.ED3FA84F
Content-Type: application/octet-stream;
	name="VisualBasicCodeCompiler.cs"
Content-Transfer-Encoding: base64
Content-Description: VisualBasicCodeCompiler.cs
Content-Disposition: attachment;
	filename="VisualBasicCodeCompiler.cs"

Ly8NCi8vIE1pY3Jvc29mdCBWaXN1YWxCYXNpYyBWQkNvZGVDb21waWxlciBDbGFzcyBpbXBsZW1l
bnRhdGlvbg0KLy8NCi8vIEF1dGhvcjoNCi8vICAgSm9jaGVuIFdlemVsIChqd2V6ZWxAY29tcHVt
YXN0ZXIuZGUpDQovLw0KDQpuYW1lc3BhY2UgTWljcm9zb2Z0LlZpc3VhbEJhc2ljDQp7DQoJdXNp
bmcgU3lzdGVtOw0KCXVzaW5nIFN5c3RlbS5Db2RlRG9tOw0KCXVzaW5nIFN5c3RlbS5Db2RlRG9t
LkNvbXBpbGVyOw0KCXVzaW5nIFN5c3RlbS5JTzsNCgl1c2luZyBTeXN0ZW0uVGV4dDsNCgl1c2lu
ZyBTeXN0ZW0uUmVmbGVjdGlvbjsNCgl1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnM7DQoJdXNpbmcg
U3lzdGVtLkNvbGxlY3Rpb25zLlNwZWNpYWxpemVkOw0KCXVzaW5nIFN5c3RlbS5EaWFnbm9zdGlj
czsNCgl1c2luZyBTeXN0ZW0uVGV4dC5SZWd1bGFyRXhwcmVzc2lvbnM7DQoNCglpbnRlcm5hbCBj
bGFzcyBWaXN1YWxCYXNpY0NvZGVDb21waWxlcjogVmlzdWFsQmFzaWNDb2RlR2VuZXJhdG9yLCBJ
Q29kZUNvbXBpbGVyDQoJew0KCQkvLw0KCQkvLyBDb25zdHJ1Y3RvcnMNCgkJLy8NCgkJcHVibGlj
IFZpc3VhbEJhc2ljQ29kZUNvbXBpbGVyKCkNCgkJew0KCQl9DQoNCgkJLy8NCgkJLy8gTWV0aG9k
cw0KCQkvLw0KCQlbTW9ub1RPRE9dDQoJCXB1YmxpYyBDb21waWxlclJlc3VsdHMgQ29tcGlsZUFz
c2VtYmx5RnJvbURvbSAoDQoJCQlDb21waWxlclBhcmFtZXRlcnMgb3B0aW9ucyxDb2RlQ29tcGls
ZVVuaXQgZSkNCgkJew0KCQkJcmV0dXJuIENvbXBpbGVBc3NlbWJseUZyb21Eb21CYXRjaChvcHRp
b25zLG5ldyBDb2RlQ29tcGlsZVVuaXRbXXtlfSk7DQoJCX0NCgkJcHVibGljIENvbXBpbGVyUmVz
dWx0cyBDb21waWxlQXNzZW1ibHlGcm9tRG9tQmF0Y2ggKA0KCQkJQ29tcGlsZXJQYXJhbWV0ZXJz
IG9wdGlvbnMsQ29kZUNvbXBpbGVVbml0W10gZWEpDQoJCXsNCgkJCXN0cmluZ1tdIGZpbGVOYW1l
cz1uZXcgc3RyaW5nW2VhLkxlbmd0aF07DQoJCQlpbnQgaT0wOw0KCQkJaWYgKG9wdGlvbnMgPT0g
bnVsbCkNCgkJCQlvcHRpb25zID0gbmV3IENvbXBpbGVyUGFyYW1ldGVycyAoKTsNCgkJCQ0KCQkJ
U3RyaW5nQ29sbGVjdGlvbiBhc3NlbWJsaWVzID0gb3B0aW9ucy5SZWZlcmVuY2VkQXNzZW1ibGll
czsNCg0KCQkJZm9yZWFjaCAoQ29kZUNvbXBpbGVVbml0IGUgaW4gZWEpDQoJCQl7DQoJCQkJZmls
ZU5hbWVzW2ldPVBhdGguQ2hhbmdlRXh0ZW5zaW9uKFBhdGguR2V0VGVtcEZpbGVOYW1lKCksInZi
Iik7DQoJCQkJRmlsZVN0cmVhbSBmPW5ldyBGaWxlU3RyZWFtKGZpbGVOYW1lc1tpXSxGaWxlTW9k
ZS5PcGVuT3JDcmVhdGUpOw0KCQkJCVN0cmVhbVdyaXRlciBzPW5ldyBTdHJlYW1Xcml0ZXIoZik7
DQoJCQkJaWYgKGUuUmVmZXJlbmNlZEFzc2VtYmxpZXMgIT0gbnVsbCkgew0KCQkJCQlmb3JlYWNo
IChzdHJpbmcgc3RyIGluIGUuUmVmZXJlbmNlZEFzc2VtYmxpZXMpIHsNCgkJCQkJCWlmICghYXNz
ZW1ibGllcy5Db250YWlucyAoc3RyKSkNCgkJCQkJCQlhc3NlbWJsaWVzLkFkZCAoc3RyKTsNCgkJ
CQkJfQ0KCQkJCX0NCg0KCQkJCSgoSUNvZGVHZW5lcmF0b3IpdGhpcykuR2VuZXJhdGVDb2RlRnJv
bUNvbXBpbGVVbml0IChlLCBzLCBuZXcgQ29kZUdlbmVyYXRvck9wdGlvbnMoKSk7DQoJCQkJcy5D
bG9zZSgpOw0KCQkJCWYuQ2xvc2UoKTsNCgkJCQlpKys7DQoJCQl9DQoJCQlyZXR1cm4gQ29tcGls
ZUFzc2VtYmx5RnJvbUZpbGVCYXRjaChvcHRpb25zLGZpbGVOYW1lcyk7DQoJCX0NCgkJcHVibGlj
IENvbXBpbGVyUmVzdWx0cyBDb21waWxlQXNzZW1ibHlGcm9tRmlsZSAoDQoJCQlDb21waWxlclBh
cmFtZXRlcnMgb3B0aW9ucyxzdHJpbmcgZmlsZU5hbWUpDQoJCXsNCgkJCXJldHVybiBDb21waWxl
QXNzZW1ibHlGcm9tRmlsZUJhdGNoKG9wdGlvbnMsbmV3IHN0cmluZ1tde2ZpbGVOYW1lfSk7DQoJ
CX0NCgkJcHVibGljIENvbXBpbGVyUmVzdWx0cyBDb21waWxlQXNzZW1ibHlGcm9tRmlsZUJhdGNo
ICgNCgkJCUNvbXBpbGVyUGFyYW1ldGVycyBvcHRpb25zLHN0cmluZ1tdIGZpbGVOYW1lcykNCgkJ
ew0KCQkJaWYgKG51bGwgPT0gb3B0aW9ucykNCgkJCQl0aHJvdyBuZXcgQXJndW1lbnROdWxsRXhj
ZXB0aW9uKCJvcHRpb25zIik7DQoJCQlpZiAobnVsbCA9PSBmaWxlTmFtZXMpDQoJCQkJdGhyb3cg
bmV3IEFyZ3VtZW50TnVsbEV4Y2VwdGlvbigiZmlsZU5hbWVzIik7DQoNCgkJCUNvbXBpbGVyUmVz
dWx0cyByZXN1bHRzPW5ldyBDb21waWxlclJlc3VsdHMob3B0aW9ucy5UZW1wRmlsZXMpOw0KCQkJ
UHJvY2VzcyBtY3M9bmV3IFByb2Nlc3MoKTsNCg0KCQkJc3RyaW5nIG1jc19vdXRwdXQ7DQoJCQlz
dHJpbmdbXSBtY3Nfb3V0cHV0X2xpbmVzOw0KCQkJbWNzLlN0YXJ0SW5mby5GaWxlTmFtZT0ibWJh
cyI7DQoJCQltY3MuU3RhcnRJbmZvLkFyZ3VtZW50cz1CdWlsZEFyZ3Mob3B0aW9ucyxmaWxlTmFt
ZXMpOw0KCQkJbWNzLlN0YXJ0SW5mby5DcmVhdGVOb1dpbmRvdz10cnVlOw0KCQkJbWNzLlN0YXJ0
SW5mby5Vc2VTaGVsbEV4ZWN1dGU9ZmFsc2U7DQoJCQltY3MuU3RhcnRJbmZvLlJlZGlyZWN0U3Rh
bmRhcmRPdXRwdXQ9dHJ1ZTsNCgkJCXRyeSB7DQoJCQkJbWNzLlN0YXJ0KCk7DQoJCQkJbWNzX291
dHB1dD1tY3MuU3RhbmRhcmRPdXRwdXQuUmVhZFRvRW5kKCk7DQoJCQkJbWNzLldhaXRGb3JFeGl0
KCk7DQoJCQl9IGZpbmFsbHkgew0KCQkJCXJlc3VsdHMuTmF0aXZlQ29tcGlsZXJSZXR1cm5WYWx1
ZSA9IG1jcy5FeGl0Q29kZTsNCgkJCQltY3MuQ2xvc2UoKTsNCgkJCX0NCgkJCW1jc19vdXRwdXRf
bGluZXM9bWNzX291dHB1dC5TcGxpdCgNCgkJCQlTeXN0ZW0uRW52aXJvbm1lbnQuTmV3TGluZS5U
b0NoYXJBcnJheSgpKTsNCgkJCWJvb2wgbG9hZEl0PXRydWU7DQoJCQlmb3JlYWNoIChzdHJpbmcg
ZXJyb3JfbGluZSBpbiBtY3Nfb3V0cHV0X2xpbmVzKQ0KCQkJew0KCQkJCUNvbXBpbGVyRXJyb3Ig
ZXJyb3I9Q3JlYXRlRXJyb3JGcm9tU3RyaW5nKGVycm9yX2xpbmUpOw0KCQkJCWlmIChudWxsIT1l
cnJvcikNCgkJCQl7DQoJCQkJCXJlc3VsdHMuRXJyb3JzLkFkZChlcnJvcik7DQoJCQkJCWlmICgh
ZXJyb3IuSXNXYXJuaW5nKSBsb2FkSXQ9ZmFsc2U7DQoJCQkJfQ0KCQkJfQ0KCQkJaWYgKGxvYWRJ
dCkNCgkJCQlyZXN1bHRzLkNvbXBpbGVkQXNzZW1ibHk9QXNzZW1ibHkuTG9hZEZyb20ob3B0aW9u
cy5PdXRwdXRBc3NlbWJseSk7DQoJCQllbHNlDQoJCQkJcmVzdWx0cy5Db21waWxlZEFzc2VtYmx5
PW51bGw7DQoJCQlyZXR1cm4gcmVzdWx0czsNCgkJfQ0KCQlwdWJsaWMgQ29tcGlsZXJSZXN1bHRz
IENvbXBpbGVBc3NlbWJseUZyb21Tb3VyY2UgKA0KCQkJQ29tcGlsZXJQYXJhbWV0ZXJzIG9wdGlv
bnMsc3RyaW5nIHNvdXJjZSkNCgkJew0KCQkJcmV0dXJuIENvbXBpbGVBc3NlbWJseUZyb21Tb3Vy
Y2VCYXRjaChvcHRpb25zLG5ldyBzdHJpbmdbXXtzb3VyY2V9KTsNCgkJfQ0KCQlwdWJsaWMgQ29t
cGlsZXJSZXN1bHRzIENvbXBpbGVBc3NlbWJseUZyb21Tb3VyY2VCYXRjaCAoDQoJCQlDb21waWxl
clBhcmFtZXRlcnMgb3B0aW9ucyxzdHJpbmdbXSBzb3VyY2VzKQ0KCQl7DQoJCQlzdHJpbmdbXSBm
aWxlTmFtZXM9bmV3IHN0cmluZ1tzb3VyY2VzLkxlbmd0aF07DQoJCQlpbnQgaT0wOw0KCQkJZm9y
ZWFjaCAoc3RyaW5nIHNvdXJjZSBpbiBzb3VyY2VzKQ0KCQkJew0KCQkJCWZpbGVOYW1lc1tpXT1Q
YXRoLkNoYW5nZUV4dGVuc2lvbihQYXRoLkdldFRlbXBGaWxlTmFtZSgpLCJ2YiIpOw0KCQkJCUZp
bGVTdHJlYW0gZj1uZXcgRmlsZVN0cmVhbShmaWxlTmFtZXNbaV0sRmlsZU1vZGUuT3Blbk9yQ3Jl
YXRlKTsNCgkJCQlTdHJlYW1Xcml0ZXIgcz1uZXcgU3RyZWFtV3JpdGVyKGYpOw0KCQkJCXMuV3Jp
dGUoc291cmNlKTsNCgkJCQlzLkNsb3NlKCk7DQoJCQkJZi5DbG9zZSgpOw0KCQkJCWkrKzsNCgkJ
CX0NCgkJCXJldHVybiBDb21waWxlQXNzZW1ibHlGcm9tRmlsZUJhdGNoKG9wdGlvbnMsZmlsZU5h
bWVzKTsNCgkJfQ0KCQlwcml2YXRlIHN0YXRpYyBzdHJpbmcgQnVpbGRBcmdzKA0KCQkJQ29tcGls
ZXJQYXJhbWV0ZXJzIG9wdGlvbnMsc3RyaW5nW10gZmlsZU5hbWVzKQ0KCQl7DQoJCQlTdHJpbmdC
dWlsZGVyIGFyZ3M9bmV3IFN0cmluZ0J1aWxkZXIoKTsNCgkJCWlmIChvcHRpb25zLkdlbmVyYXRl
RXhlY3V0YWJsZSkNCgkJCQlhcmdzLkFwcGVuZEZvcm1hdCgiL3RhcmdldDpleGUgIik7DQoJCQll
bHNlDQoJCQkJYXJncy5BcHBlbmRGb3JtYXQoIi90YXJnZXQ6bGlicmFyeSAiKTsNCgkJCWlmIChv
cHRpb25zLkluY2x1ZGVEZWJ1Z0luZm9ybWF0aW9uKQ0KCQkJCWFyZ3MuQXBwZW5kRm9ybWF0KCIv
ZGVidWcgIik7DQoJCQlpZiAob3B0aW9ucy5UcmVhdFdhcm5pbmdzQXNFcnJvcnMpDQoJCQkJYXJn
cy5BcHBlbmRGb3JtYXQoIi93YXJuYXNlcnJvciAiKTsNCg0KCQkJaWYgKG9wdGlvbnMuV2Fybmlu
Z0xldmVsICE9IC0xKQ0KCQkJCWFyZ3MuQXBwZW5kRm9ybWF0ICgiL3dhcm46ezB9ICIsIG9wdGlv
bnMuV2FybmluZ0xldmVsKTsNCg0KCQkJaWYgKG9wdGlvbnMuT3V0cHV0QXNzZW1ibHk9PW51bGwp
DQoJCQkJb3B0aW9ucy5PdXRwdXRBc3NlbWJseT1QYXRoLkNoYW5nZUV4dGVuc2lvbihQYXRoLkdl
dFRlbXBGaWxlTmFtZSgpLCJkbGwiKTsNCgkJCWFyZ3MuQXBwZW5kRm9ybWF0KCIvb3V0OlwiezB9
XCIgIixvcHRpb25zLk91dHB1dEFzc2VtYmx5KTsNCgkJCWlmIChudWxsICE9IG9wdGlvbnMuUmVm
ZXJlbmNlZEFzc2VtYmxpZXMpDQoJCQl7DQoJCQkJZm9yZWFjaCAoc3RyaW5nIGltcG9ydCBpbiBv
cHRpb25zLlJlZmVyZW5jZWRBc3NlbWJsaWVzKQ0KCQkJCQlhcmdzLkFwcGVuZEZvcm1hdCgiL3I6
XCJ7MH1cIiAiLGltcG9ydCk7DQoJCQl9DQoJCQlmb3JlYWNoIChzdHJpbmcgc291cmNlIGluIGZp
bGVOYW1lcykNCgkJCQlhcmdzLkFwcGVuZEZvcm1hdCgiXCJ7MH1cIiAiLHNvdXJjZSk7DQoJCQly
ZXR1cm4gYXJncy5Ub1N0cmluZygpOw0KCQl9DQoJCXByaXZhdGUgc3RhdGljIENvbXBpbGVyRXJy
b3IgQ3JlYXRlRXJyb3JGcm9tU3RyaW5nKHN0cmluZyBlcnJvcl9zdHJpbmcpDQoJCXsNCgkJCS8v
IFdoZW4gSW5jbHVkZURlYnVnSW5mb3JtYXRpb24gaXMgdHJ1ZSwgcHJldmVudHMgdGhlIGRlYnVn
IHN5bWJvbHMgc3RhdHMgZnJvbSBicmFla2luZyB0aGlzLg0KCQkJaWYgKGVycm9yX3N0cmluZy5T
dGFydHNXaXRoICgiV1JPVEUgU1lNRklMRSIpIHx8IGVycm9yX3N0cmluZy5TdGFydHNXaXRoICgi
T2Zmc2V0VGFibGUiKSkNCgkJCQlyZXR1cm4gbnVsbDsNCg0KCQkJQ29tcGlsZXJFcnJvciBlcnJv
cj1uZXcgQ29tcGlsZXJFcnJvcigpOw0KCQkJUmVnZXggcmVnID0gbmV3IFJlZ2V4IChAIl4oXHMq
KD88ZmlsZT4uKilcKCg/PGxpbmU+XGQqKSgsKD88Y29sdW1uPlxkKikpP1wpXHMrKSooPzxsZXZl
bD5cdyspXHMqKD88bnVtYmVyPi4qKTpccyg/PG1lc3NhZ2U+LiopIiwNCgkJCQlSZWdleE9wdGlv
bnMuQ29tcGlsZWQgfCBSZWdleE9wdGlvbnMuRXhwbGljaXRDYXB0dXJlKTsNCgkJCU1hdGNoIG1h
dGNoPXJlZy5NYXRjaChlcnJvcl9zdHJpbmcpOw0KCQkJaWYgKCFtYXRjaC5TdWNjZXNzKSByZXR1
cm4gbnVsbDsNCgkJCWlmIChTdHJpbmcuRW1wdHkgIT0gbWF0Y2guUmVzdWx0KCIke2ZpbGV9Iikp
DQoJCQkJZXJyb3IuRmlsZU5hbWU9bWF0Y2guUmVzdWx0KCIke2ZpbGV9Iik7DQoJCQlpZiAoU3Ry
aW5nLkVtcHR5ICE9IG1hdGNoLlJlc3VsdCgiJHtsaW5lfSIpKQ0KCQkJCWVycm9yLkxpbmU9SW50
MzIuUGFyc2UobWF0Y2guUmVzdWx0KCIke2xpbmV9IikpOw0KCQkJaWYgKFN0cmluZy5FbXB0eSAh
PSBtYXRjaC5SZXN1bHQoIiR7Y29sdW1ufSIpKQ0KCQkJCWVycm9yLkNvbHVtbj1JbnQzMi5QYXJz
ZShtYXRjaC5SZXN1bHQoIiR7Y29sdW1ufSIpKTsNCgkJCWlmIChtYXRjaC5SZXN1bHQoIiR7bGV2
ZWx9Iik9PSJ3YXJuaW5nIikNCgkJCQllcnJvci5Jc1dhcm5pbmc9dHJ1ZTsNCgkJCWVycm9yLkVy
cm9yTnVtYmVyPW1hdGNoLlJlc3VsdCgiJHtudW1iZXJ9Iik7DQoJCQllcnJvci5FcnJvclRleHQ9
bWF0Y2guUmVzdWx0KCIke21lc3NhZ2V9Iik7DQoJCQlyZXR1cm4gZXJyb3I7DQoJCX0NCgl9DQp9
DQo=

------_=_NextPart_001_01C38CB8.ED3FA84F--