Re: Page Field notitleoverwrite on Jahia 5.1
Benjamin Papez <[email protected]> Wed, 18 Feb 2009 21:44:59 +0100
| Newsgroups | gmane.comp.cms.jahia.template |
|---|---|
| Message-ID | <[email protected]> |
--0016363b99223dd2b50463377e19
Content-Type: multipart/alternative; boundary=0016363b99223dd2af0463377e17
--0016363b99223dd2af0463377e17
Content-Type: text/plain; charset=ISO-8859-1
Content-Transfer-Encoding: 7bit
Hello,
attached is the page_fields.jsp. You have to copy it to the directory
tomcat\webapps\jahia\jsp\jahia\engines\shared of a Jahia 5.0.4 or 5.0.5
version.
If existing, you must also remove the precompile entries for page_field.jsp
from tomcat\webapps\jahia\WEB-INF\web.xml:
<servlet>
<servlet-name>org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-name>
<servlet-class>org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-class>
</servlet>
<servlet-mapping>
<servlet-name>org.jahia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-name>
<url-pattern>/jsp/jahia/engines/shared/page_field.jsp</url-pattern>
</servlet-mapping>
Hope that helps,
Benjamin
PS.: The keyword is not yet implemented in Jahia 6, where all these
definitions did undergo some major refactoring and some of them still need
to be implemented to have the same set of features as in Jahia 5.
2009/2/18 ali DAN-BOUZOUA <[email protected]>
> Hello,
>
>
> >>Which version are you using ?
> jahia5.0.4_r21181
>
> But I can move my dev to a latest Jahia 5.XX if requiered (I'm testing also
> in // Jahia 6)
>
>
> >> If you want, I could send you a patched page_field.jsp, which is
> reacting on a notitleoverwrite keyword.
> Yes please, send me the patched page_field.jsp
>
> Have good night
>
>
>
>
> ------------------------------
> *From:* Benjamin Papez <[email protected]>
> *To:* Any questions regarding template development and/or about the
> taglibs extension <[email protected]>
> *Sent:* Tuesday, February 17, 2009 5:04:47 PM
> *Subject:* Re: [template_list] Page Field notitleoverwrite on Jahia 5.1
>
> Hello,
>
> "notitleoverwrite" was supposed to be introduced in Jahia 5.1, which
> unfortunately has not been released yet. We have a Jahia 5 trunk with some
> performance and feature enhancements prepared, but not released yet. Instead
> the jahia 5 hotfix SVN branch was used to release jahai 5.0.5 recently.
>
> Which version are you using ? If you want, I could send you a patched
> page_field.jsp, which is reacting on a notitleoverwrite keyword.
>
> Regarding the "jahia_linkonly" versus "linkonly" - I think both will work,
> because the code is simply checking for the occurence of "linkonly".
>
> Regards,
> Benjamin
>
> 2009/2/17 ali DAN-BOUZOUA <[email protected]>
>
>>
>> Im using this code below derives from news/definitions.inc
>>
>> I would like to use notitleoverwrite property in order to remove the
>> input field for the page title (jahia 5. guide p. 34).
>>
>> <content:declareField name="link"
>> title="Link" type="Page"
>> value="<jahia_linkonly, , notitleoverwrite>"
>> titleKey="docun.link" bundleKey="<%=resBundleID%>"
>> />
>>
>>
>> But
>>
>> 1. It's doesn't seems to works
>>
>> 2. jahia_linkonly is used instead of linkonly as describes in the
>> documentation
>>
>> Any idea about how to make it works?
>>
>> Kind regards
>>
>>
>>
>>
>>
>> _______________________________________________
>> template_list mailing list
>> [email protected]
>> http://lists.jahia.org/cgi-bin/mailman/listinfo/template_list
>>
>>
>
>
> _______________________________________________
> template_list mailing list
> [email protected]
> http://lists.jahia.org/cgi-bin/mailman/listinfo/template_list
>
>
--0016363b99223dd2af0463377e17
Content-Type: text/html; charset=ISO-8859-1
Content-Transfer-Encoding: quoted-printable
Hello,<br><br>attached is the page_fields.jsp. You have to copy it to the d=
irectory tomcat\webapps\jahia\jsp\jahia\engines\shared of a Jahia 5.0.4 or =
5.0.5 version.<br><br>If existing, you must also remove the precompile entr=
ies for page_field.jsp from tomcat\webapps\jahia\WEB-INF\web.xml:
<br>
<servlet>
<br>
<servlet-name>org.jah=
ia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-na=
me>
<br>
<servlet-class>org.ja=
hia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-c=
lass>
<br>
</servlet>
<br>
<br>
<servlet-mapping>
<br>
<servlet-name>org.jah=
ia.jsp.jahia.war.jsp.jahia.engines.shared.page_005ffield_jsp</servlet-na=
me>
<br>
<url-pattern>/jsp/jah=
ia/engines/shared/page_field.jsp</url-pattern>
<br>
</servlet-mapping>
<br><br>Hope that helps,<br>Benjamin<br><br>PS.: The keyword is not yet imp=
lemented in Jahia 6, where all these definitions did undergo some major ref=
actoring and some of them still need to be implemented to have the same set=
of features as in Jahia 5.<br>
<br><div class=3D"gmail_quote">2009/2/18 ali DAN-BOUZOUA <span dir=3D"ltr">=
<<a href=3D"mailto:[email protected]">[email protected]</a>><=
/span><br><blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid=
rgb(204, 204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div><div style=3D"font-family: arial,helvetica,sans-serif; font-size: 12pt=
;"><div></div>
<div>Hello,</div><div class=3D"Ih2E3d">
<div> </div>
<div><br>>>Which version are you using ? </div>
</div><div>jahia5.0.4_r21181 </div>
<div> </div>
<div>But I can move my dev to a latest Jahia 5.XX if requiered (I'm tes=
ting also in // Jahia 6)</div><div class=3D"Ih2E3d"><br>
<div> </div>
<div>>> If you want, I could send you a patched page_field.jsp, which=
is reacting on a <span style=3D"font-style: italic;">notitleoverwrite </sp=
an>keyword.</div>
</div><div>Yes please, send me the patched page_field.jsp</div>
<div> </div>
<div>Have good night</div>
<div><br><br> </div>
<div style=3D"font-size: 12pt; font-family: arial,helvetica,sans-serif;"><b=
r>
<div style=3D"font-size: 12pt; font-family: times new roman,new york,times,=
serif;"><font size=3D"2" face=3D"Tahoma">
<hr size=3D"1">
<b><span style=3D"font-weight: bold;">From:</span></b> Benjamin Papez <<=
a href=3D"mailto:[email protected]" target=3D"_blank">jahia.papez@gmail=
.com</a>><br><b><span style=3D"font-weight: bold;">To:</span></b> Any qu=
estions regarding template development and/or about the taglibs extension &=
lt;<a href=3D"mailto:[email protected]" target=3D"_blank">template_li=
[email protected]</a>><br>
<b><span style=3D"font-weight: bold;">Sent:</span></b> Tuesday, February 17=
, 2009 5:04:47 PM<br><b><span style=3D"font-weight: bold;">Subject:</span><=
/b> Re: [template_list] Page Field notitleoverwrite on Jahia 5.1<br></font>=
<div>
<div></div><div class=3D"Wj3C7c"><br>Hello,<br><br>"notitleoverwrite&q=
uot; was supposed to be introduced in Jahia 5.1, which unfortunately has no=
t been released yet. We have a Jahia 5 trunk with some performance and feat=
ure enhancements prepared, but not released yet. Instead the jahia 5 hotfix=
SVN branch was used to release jahai 5.0.5 recently.<br>
<br>Which version are you using ? If you want, I could send you a patched p=
age_field.jsp, which is reacting on a <span style=3D"font-style: italic;">n=
otitleoverwrite
</span>keyword.<br><br>Regarding the "jahia_linkonly" versus &qu=
ot;linkonly" - I think both will work, because the code is simply chec=
king for the occurence of "linkonly".<br><br>Regards,<br>Benjamin=
<br>
<br>
<div class=3D"gmail_quote">2009/2/17 ali DAN-BOUZOUA <span dir=3D"ltr"><=
<a href=3D"mailto:[email protected]" rel=3D"nofollow" target=3D"_blank"=
>[email protected]</a>></span><br>
<blockquote class=3D"gmail_quote" style=3D"border-left: 1px solid rgb(204, =
204, 204); margin: 0pt 0pt 0pt 0.8ex; padding-left: 1ex;">
<div>
<div style=3D"font-size: 12pt; font-family: arial,helvetica,sans-serif;"><b=
r>Im using this code below derives from news/definitions.inc<br><br>I would=
like to use <span style=3D"font-style: italic;">notitleoverwrite </span>pr=
operty in order to remove the input field for the page title (jahia 5. guid=
e p. 34).<br>
<br><content:declareField name=3D"link"<br> &=
nbsp; title=3D"Link" ty=
pe=3D"Page"<br> &n=
bsp; value=3D"<jahia_linkonly, , notitleoverwrite>&q=
uot;<br> =
titleKey=3D"docun.link" bundleKey=3D"<%=3DresBundleID%>=
;"<br>
/><br><br><br>But <br><br>1. =
It's doesn't seems to works<br><br>2.<span style=3D"font-weight: bo=
ld;"> jahia_linkonly</span> is used instead of<span style=3D"font-weight: b=
old;"> linkonly</span> as describes in the
documentation<br><br>Any idea about how to make it works?<br><br>Kind rega=
rds<br><br><br><br></div><br></div><br>____________________________________=
___________<br>template_list mailing list<br><a href=3D"mailto:template_lis=
[email protected]" rel=3D"nofollow" target=3D"_blank">[email protected]</a>=
<br>
<a href=3D"http://lists.jahia.org/cgi-bin/mailman/listinfo/template_list" r=
el=3D"nofollow" target=3D"_blank">http://lists.jahia.org/cgi-bin/mailman/li=
stinfo/template_list</a><br><br></blockquote></div><br></div></div></div></=
div>
</div><br>
</div><br>_______________________________________________<br>
template_list mailing list<br>
<a href=3D"mailto:[email protected]">[email protected]</a><br>
<a href=3D"http://lists.jahia.org/cgi-bin/mailman/listinfo/template_list" t=
arget=3D"_blank">http://lists.jahia.org/cgi-bin/mailman/listinfo/template_l=
ist</a><br>
<br></blockquote></div><br>
--0016363b99223dd2af0463377e17--
--0016363b99223dd2b50463377e19
Content-Type: application/octet-stream; name="page_field.jsp"
Content-Disposition: attachment; filename="page_field.jsp"
Content-Transfer-Encoding: base64
X-Attachment-Id: f_frcgq86p0
PCUtLQ0KQ29weXJpZ2h0IDIwMDItMjAwOCBKYWhpYSBMdGQNCg0KTGljZW5zZWQgdW5kZXIgdGhl
IEpBSElBIENPTU1PTiBERVZFTE9QTUVOVCBBTkQgRElTVFJJQlVUSU9OIExJQ0VOU0UgKEpDRERM
KSwNClZlcnNpb24gMS4wICh0aGUgIkxpY2Vuc2UiKSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkg
bGF0ZXIgdmVyc2lvbjsgeW91IG1heQ0Kbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBs
aWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4gWW91IHNob3VsZCBoYXZlDQpyZWNlaXZlZCBhIGNvcHkg
b2YgdGhlIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgeW91IG1heSBv
YnRhaW4NCmEgY29weSBvZiB0aGUgTGljZW5zZSBhdA0KDQogaHR0cDovL3d3dy5qYWhpYS5vcmcv
bGljZW5zZS8NCg0KVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0
byBpbiB3cml0aW5nLCBzb2Z0d2FyZQ0KZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMg
ZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywNCldJVEhPVVQgV0FSUkFOVElFUyBPUiBD
T05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLg0KU2VlIHRo
ZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25z
IGFuZA0KbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuDQotLSU+DQo8JUAgcGFnZSBsYW5n
dWFnZT0iamF2YSIgY29udGVudFR5cGU9InRleHQvaHRtbDtjaGFyc2V0PVVURi04IiAlPg0KPCVA
IHBhZ2UgaW1wb3J0PSJvcmcuYXBhY2hlLmNvbW1vbnMubGFuZy5TdHJpbmdVdGlscyIgJT4NCjwl
QCBwYWdlIGltcG9ydD0ib3JnLmphaGlhLmJpbi5KYWhpYSIgJT4NCjwlQCBwYWdlIGltcG9ydD0i
b3JnLmphaGlhLmNvbnRlbnQuQ29udGVudE9iamVjdCIgJT4NCjwlQCBwYWdlIGltcG9ydD0ib3Jn
LmphaGlhLmRhdGEuSmFoaWFEYXRhIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEuZGF0
YS5jb250YWluZXJzLkphaGlhQ29udGFpbmVyIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFo
aWEuZGF0YS5maWVsZHMuSmFoaWFGaWVsZCIgJT4NCjwlQCBwYWdlIGltcG9ydD0ib3JnLmphaGlh
LmVuZ2luZXMuRW5naW5lTGFuZ3VhZ2VIZWxwZXIiICU+DQo8JUAgcGFnZSBpbXBvcnQ9Im9yZy5q
YWhpYS5lbmdpbmVzLkphaGlhRW5naW5lIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEu
ZW5naW5lcy5zZWxlY3RwYWdlLlNlbGVjdFBhZ2VfRW5naW5lIiAlPg0KPCVAIHBhZ2UgaW1wb3J0
PSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuSmFoaWFQYWdlRW5naW5lVGVtcEJlYW4iICU+DQo8
JUAgcGFnZSBpbXBvcnQ9Im9yZy5qYWhpYS5lbmdpbmVzLnNoYXJlZC5QYWdlX0ZpZWxkIiAlPg0K
PCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEuZW5naW5lcy52YWxpZGF0aW9uLkVuZ2luZVZhbGlk
YXRpb25IZWxwZXIiICU+DQo8JUAgcGFnZSBpbXBvcnQ9Im9yZy5qYWhpYS5wYXJhbXMuUGFyYW1C
ZWFuIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEucGFyYW1zLlByb2Nlc3NpbmdDb250
ZXh0IiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEucmVnaXN0cmllcy5TZXJ2aWNlc1Jl
Z2lzdHJ5IiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEucmVzb3VyY2VidW5kbGUuSmFo
aWFSZXNvdXJjZUJ1bmRsZSIgJT4NCjwlQCBwYWdlIGltcG9ydD0ib3JnLmphaGlhLnNlcnZpY2Vz
LmFjbC5KYWhpYUJhc2VBQ0wiICU+DQo8JUAgcGFnZSBpbXBvcnQ9Im9yZy5qYWhpYS5zZXJ2aWNl
cy5wYWdlcy4qIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEuc2VydmljZXMuc2l0ZXMu
U2l0ZUxhbmd1YWdlU2V0dGluZ3MiICU+DQo8JUAgcGFnZSBpbXBvcnQ9Im9yZy5qYWhpYS51dGls
cy5KYWhpYVRvb2xzIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJvcmcuamFoaWEudXRpbHMuTGFuZ3Vh
Z2VDb2RlQ29udmVydGVycyIgJT4NCjwlQCBwYWdlIGltcG9ydD0iamF2YXguc2VydmxldC5qc3Au
SnNwV3JpdGVyIiAlPg0KPCVAIHBhZ2UgaW1wb3J0PSJqYXZheC5zZXJ2bGV0LmpzcC5QYWdlQ29u
dGV4dCIgJT4NCjwlQCBwYWdlIGltcG9ydD0iamF2YS5pby5JT0V4Y2VwdGlvbiIgJT4NCjwlQCBw
YWdlIGltcG9ydD0iamF2YS51dGlsLioiICU+DQo8JUAgcGFnZSBpbXBvcnQ9Im9yZy5qYWhpYS5z
ZXJ2aWNlcy5hY2wuSmFoaWFBQ0xNYW5hZ2VyU2VydmljZSIgJT4NCjwlQCBwYWdlIGltcG9ydD0i
b3JnLmphaGlhLnNlcnZpY2VzLmxvY2suTG9ja1ByZXJlcXVpc2l0ZXMiICU+DQo8JUAgdGFnbGli
IHVyaT0iSmFoaWFMaWIiIHByZWZpeD0iamFoaWEiICU+DQo8JUAgdGFnbGliIHVyaT0iY29udGVu
dExpYiIgcHJlZml4PSJjb250ZW50IiAlPg0KPCVAIHRhZ2xpYiB1cmk9ImFqYXhMaWIiIHByZWZp
eD0iYWpheCIgJT4NCjwlQCB0YWdsaWIgdXJpPSIvV0VCLUlORi9ldGMvc3RydXRzL3N0cnV0cy1s
b2dpYyIgcHJlZml4PSJsb2dpYyIgJT4NCjwlIQ0KICAgIHByaXZhdGUgc3RhdGljIGZpbmFsIG9y
Zy5hcGFjaGUubG9nNGouTG9nZ2VyIGxvZ2dlciA9DQogICAgICAgICAgICBvcmcuYXBhY2hlLmxv
ZzRqLkxvZ2dlci5nZXRMb2dnZXIoImpzcC5qYWhpYS5lbmdpbmVzLnNoYXJlZC5QYWdlX0ZpZWxk
Iik7DQoNCiAgICAvKioNCiAgICAgKiB1dGlsaXR5IG1ldGhvZA0KICAgICAqIEBwYXJhbSBzIHRo
ZSBsb25nIHN0cmluZw0KICAgICAqIEByZXR1cm4gYSB2ZWN0b3Igb2Ygc3RyaW5nDQogICAgICov
DQogICAgcHJpdmF0ZSBWZWN0b3IgZ2V0U3RyaW5nVG9WZWN0b3IoZmluYWwgU3RyaW5nIHMpIHsN
CiAgICAgICAgZmluYWwgVmVjdG9yIHZsaXN0ID0gbmV3IFZlY3RvcigpOw0KICAgICAgICBmaW5h
bCBTdHJpbmdUb2tlbml6ZXIgdG9rID0gbmV3IFN0cmluZ1Rva2VuaXplcihzLCAiLCIpOw0KICAg
ICAgICB3aGlsZSAodG9rLmhhc01vcmVUb2tlbnMoKSkgew0KICAgICAgICAgICAgZmluYWwgU3Ry
aW5nIHYgPSB0b2submV4dFRva2VuKCkudHJpbSgpOw0KICAgICAgICAgICAgdmxpc3QuYWRkKHYp
Ow0KICAgICAgICB9DQogICAgICAgIHJldHVybiB2bGlzdDsNCiAgICB9DQoNCiAgICBwcml2YXRl
IHZvaWQgZHJhd1RpbWVCYXNlZFB1Ymxpc2hpbmdTdGF0dXNJY29uKENvbnRlbnRPYmplY3QgY29u
dGVudE9iamVjdCwgUHJvY2Vzc2luZ0NvbnRleHQgalBhcmFtcywgUGFnZUNvbnRleHQgcGFnZUNv
bnRleHQpDQogICAgICAgICAgICB0aHJvd3MgSU9FeGNlcHRpb24gew0KICAgICAgICBpZiAoY29u
dGVudE9iamVjdCA9PSBudWxsKSB7DQogICAgICAgICAgICByZXR1cm47DQogICAgICAgIH0NCiAg
ICAgICAgSnNwV3JpdGVyIG91dCA9IHBhZ2VDb250ZXh0LmdldE91dCgpOw0KICAgICAgICBmaW5h
bCBTdHJpbmcgY29udGV4dFBhdGggPSBKYWhpYS5nZXRDb250ZXh0UGF0aCgpOw0KICAgICAgICBm
aW5hbCBTdHJpbmcgYWN0aW9uVVJMID0gY29udGV4dFBhdGggKyAiL2FqYXhhY3Rpb24vR2V0VGlt
ZUJhc2VkUHVibGlzaGluZ1N0YXRlP3BhcmFtcz0vb3AvZWRpdC9waWQvIiArDQogICAgICAgICAg
ICAgICAgalBhcmFtcy5nZXRQYWdlSUQoKSArICIma2V5PSIgKyBjb250ZW50T2JqZWN0LmdldE9i
amVjdEtleSgpOw0KDQogICAgICAgIFN0cmluZyBzZXJ2ZXJVUkwgPSBhY3Rpb25VUkwgKyAiJmRp
c3BsYXlEaWFsb2c9dHJ1ZSI7DQogICAgICAgIFN0cmluZyBkaWFsb2dUaXRsZSA9IEphaGlhUmVz
b3VyY2VCdW5kbGUuZ2V0RW5naW5lUmVzb3VyY2UoIm9yZy5qYWhpYS5lbmdpbmVzLnRpbWViYXNl
ZHB1Ymxpc2hpbmcuZGlhbG9nVGl0bGUiLA0KICAgICAgICAgICAgICAgIGpQYXJhbXMsIGpQYXJh
bXMuZ2V0TG9jYWxlKCksICJJbmZvcm1hdGlvbmFsIik7DQogICAgICAgIFN0cmluZ0J1ZmZlciBj
bWRCdWZmZXIgPSBuZXcgU3RyaW5nQnVmZmVyKCJoYW5kbGVUaW1lQmFzZWRQdWJsaXNoaW5nKGV2
ZW50LCciKTsNCiAgICAgICAgY21kQnVmZmVyLmFwcGVuZChzZXJ2ZXJVUkwpLmFwcGVuZCgiJywn
Iik7DQogICAgICAgIGNtZEJ1ZmZlci5hcHBlbmQoY29udGVudE9iamVjdC5nZXRPYmplY3RLZXko
KSkuYXBwZW5kKCInLCIpLmFwcGVuZCgiJy9vcC9lZGl0L3BpZC8iKQ0KICAgICAgICAgICAgICAg
IC5hcHBlbmQoalBhcmFtcy5nZXRQYWdlSUQoKSkuYXBwZW5kKCInLCciKS5hcHBlbmQoZGlhbG9n
VGl0bGUpLmFwcGVuZCgiJykiKTsNCiAgICAgICAgb3V0LnByaW50KCI8aW1nIGNsYXNzPVwidGlt
ZUJhc2VkUHVibGlzaGluZ1N0YXRlXCIgaWQ9XCIiKTsNCiAgICAgICAgb3V0LnByaW50KCJpbWdf
Iik7DQogICAgICAgIG91dC5wcmludChjb250ZW50T2JqZWN0LmdldE9iamVjdEtleSgpKTsNCiAg
ICAgICAgb3V0LnByaW50KCJcIiBib3JkZXI9XCIwXCIgc3JjPVwiIik7DQogICAgICAgIG91dC5w
cmludChhY3Rpb25VUkwpOw0KICAgICAgICBvdXQucHJpbnQoIlwiIG9uY2xpY2s9XCIiKTsNCiAg
ICAgICAgb3V0LnByaW50KGNtZEJ1ZmZlci50b1N0cmluZygpKTsNCiAgICAgICAgb3V0LnByaW50
KCJcIiAvPlxuIik7DQogICAgfQ0KDQoNCiAgICBwdWJsaWMgYm9vbGVhbiBhcmVWYWx1ZXNUaGVT
YW1lSW5BbGxBY3RpdmVMYW5ndWFnZXMoZmluYWwgSmFoaWFQYWdlRW5naW5lVGVtcEJlYW4gcGFn
ZUJlYW4sDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGZpbmFsIFN0cmluZyBsYW5nQ29kZSkgew0KICAgICAgICBpZiAocGFnZUJlYW4uZ2V0
VGl0bGVzKCkuc2l6ZSgpID4gMSkgew0KICAgICAgICAgICAgZmluYWwgSXRlcmF0b3IgdGl0bGVz
ID0gcGFnZUJlYW4uZ2V0VGl0bGVzKCkudmFsdWVzKCkuaXRlcmF0b3IoKTsNCiAgICAgICAgICAg
IGZpbmFsIFN0cmluZyB0aGVUaXRsZSA9IHBhZ2VCZWFuLmdldFRpdGxlKGxhbmdDb2RlKTsNCiAg
ICAgICAgICAgIGlmICh0aGVUaXRsZSA9PSBudWxsIHx8IHRoZVRpdGxlLmxlbmd0aCgpID09IDAg
fHwgdGhlVGl0bGUuc3RhcnRzV2l0aCgiPGphaGlhIikpIHsNCiAgICAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7DQogICAgICAgICAgICB9DQogICAgICAgICAgICBTdHJpbmcgb2xkVmFsdWUgPSBu
dWxsOw0KICAgICAgICAgICAgd2hpbGUgKHRpdGxlcy5oYXNOZXh0KCkpIHsNCiAgICAgICAgICAg
ICAgICBmaW5hbCBTdHJpbmcgdGl0bGUgPSAoU3RyaW5nKSB0aXRsZXMubmV4dCgpOw0KICAgICAg
ICAgICAgICAgIGlmIChvbGRWYWx1ZSAhPSBudWxsICYmICFvbGRWYWx1ZS5lcXVhbHModGl0bGUp
KSB7DQogICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsNCiAgICAgICAgICAgICAgICB9
DQogICAgICAgICAgICAgICAgb2xkVmFsdWUgPSB0aXRsZTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgICAgIHJldHVybiB0cnVlOw0KICAgICAgICB9DQogICAgICAgIHJldHVybiBmYWxzZTsNCiAg
ICB9DQolPg0KDQo8JQ0KICAgIGZpbmFsIEhhc2hNYXAgZW5naW5lTWFwID0gKEhhc2hNYXApIHJl
cXVlc3QuZ2V0QXR0cmlidXRlKCJvcmcuamFoaWEuZW5naW5lcy5FbmdpbmVIYXNoTWFwIik7DQog
ICAgZmluYWwgUGFyYW1CZWFuIGpQYXJhbXMgPSAoUGFyYW1CZWFuKSByZXF1ZXN0LmdldEF0dHJp
YnV0ZSgib3JnLmphaGlhLnBhcmFtcy5QYXJhbUJlYW4iKTsNCiAgICBmaW5hbCBKYWhpYURhdGEg
akRhdGEgPSAoSmFoaWFEYXRhKSByZXF1ZXN0LmdldEF0dHJpYnV0ZSgib3JnLmphaGlhLmRhdGEu
SmFoaWFEYXRhIik7DQogICAgRW5naW5lTGFuZ3VhZ2VIZWxwZXIgZWxoID0gKEVuZ2luZUxhbmd1
YWdlSGVscGVyKSBlbmdpbmVNYXAuZ2V0KEphaGlhRW5naW5lLkVOR0lORV9MQU5HVUFHRV9IRUxQ
RVIpOw0KICAgIGlmIChlbGggIT0gbnVsbCkgew0KICAgICAgICBqUGFyYW1zLnNldEN1cnJlbnRM
b2NhbGUoZWxoLmdldEN1cnJlbnRMb2NhbGUoKSk7DQogICAgfQ0KICAgIGZpbmFsIFN0cmluZyBm
aWVsZHNFZGl0Q2FsbGluZ0VuZ2luZU5hbWUgPSAoU3RyaW5nKSBlbmdpbmVNYXAuZ2V0KCJmaWVs
ZHNFZGl0Q2FsbGluZ0VuZ2luZU5hbWUiKTsNCiAgICBmaW5hbCBKYWhpYUZpZWxkIHRoZUZpZWxk
ID0gKEphaGlhRmllbGQpIGVuZ2luZU1hcC5nZXQoZmllbGRzRWRpdENhbGxpbmdFbmdpbmVOYW1l
ICsgIi50aGVGaWVsZCIpOw0KICAgIGZpbmFsIEJvb2xlYW4gdGVtcGxhdGVOb3RGb3VuZCA9IChC
b29sZWFuKSBlbmdpbmVNYXAuZ2V0KCJ0ZW1wbGF0ZU5vdEZvdW5kIik7DQoNCiAgICBIYXNoTWFw
IHBhZ2VCZWFucyA9IChIYXNoTWFwKSBzZXNzaW9uLmdldEF0dHJpYnV0ZSgiUGFnZV9GaWVsZC5Q
YWdlQmVhbnMiKTsNCiAgICBpZiAocGFnZUJlYW5zID09IG51bGwpIHsNCiAgICAgICAgcGFnZUJl
YW5zID0gbmV3IEhhc2hNYXAoKTsNCiAgICB9DQogICAgZmluYWwgSmFoaWFQYWdlRW5naW5lVGVt
cEJlYW4gcGFnZUJlYW4gPQ0KICAgICAgICAgICAgKEphaGlhUGFnZUVuZ2luZVRlbXBCZWFuKSBw
YWdlQmVhbnMuZ2V0KHRoZUZpZWxkLmdldERlZmluaXRpb24oKS5nZXROYW1lKCkpOw0KDQogICAg
bG9nZ2VyLmRlYnVnKCJwYWdlQmVhbjogIiArIHBhZ2VCZWFuKTsNCg0KICAgIGZpbmFsIEphaGlh
UGFnZUJhc2VTZXJ2aWNlIGphaGlhUGFnZUJhc2VTZXJ2aWNlID0gSmFoaWFQYWdlQmFzZVNlcnZp
Y2UuZ2V0SW5zdGFuY2UoKTsNCiAgICBmaW5hbCBMb2NhbGUgcHJvY2Vzc2luZ0xvY2FsZSA9IChM
b2NhbGUpIGVuZ2luZU1hcC5nZXQoSmFoaWFFbmdpbmUuUFJPQ0VTU0lOR19MT0NBTEUpOw0KICAg
IFN0cmluZyB0aXRsZSA9IHBhZ2VCZWFuLmdldFRpdGxlKHByb2Nlc3NpbmdMb2NhbGUudG9TdHJp
bmcoKSk7DQogICAgaWYgKHRpdGxlID09IG51bGwpIHsNCiAgICAgICAgdGl0bGUgPSAiIjsNCiAg
ICB9DQogICAgVmVjdG9yIHRWbGlzdCA9IG5ldyBWZWN0b3IoKTsvLyB2ZWN0b3Igb2YgdGVtcGxh
dGVzIGNvbnN0cmFpbnQgcmVxdWVzdGVkDQoNCiAgICAvLyBTZXQgdGhlIGZsYWdzIGNvcnJlc3Bv
bmRpbmcgdG8gdGhlIHBhZ2Ugb3B0aW9ucyB0byBkaXNwbGF5DQogICAgZmluYWwgYm9vbGVhbiBp
c05ld1BhZ2UgPSB0aGVGaWVsZC5nZXRPYmplY3QoKSA9PSBudWxsOw0KDQogICAgYm9vbGVhbiBp
c0xpbmtPbmx5ID0gZmFsc2U7Ly9kZWZhdWx0DQogICAgLy8gYWRkZWQgdG8gc3VwcG9ydCBzcGVj
aWZpYyBiZWhhdmlvcnMgb2YgZW5naW5lIGFkZFBhZ2UgYWN0aW9ucw0KICAgIGJvb2xlYW4gaXNF
eHRlcm5hbExpbmsgPSB0cnVlOyAvL2RlZmF1bHQNCiAgICBib29sZWFuIGlzSW50ZXJuYWxMaW5r
ID0gdHJ1ZTsgLy9kZWZhdWx0DQogICAgYm9vbGVhbiBpc1BhZ2VNb3ZpbmcgPSB0cnVlOyAvL2Rl
ZmF1bHQNCiAgICBib29sZWFuIGlzTm9UaXRsZU92ZXJ3cml0ZSA9IGZhbHNlOw0KDQogICAgZmlu
YWwgU3RyaW5nIGhlYWRlciA9IHJlcXVlc3QuZ2V0SGVhZGVyKCJVc2VyLWFnZW50Iik7DQogICAg
ZmluYWwgYm9vbGVhbiBpc0lFNyA9IGhlYWRlciAhPSBudWxsICYmIGhlYWRlci5pbmRleE9mKCJN
U0lFIDciKSAhPSAtMTsNCg0KICAgIGZpbmFsIENvbnRlbnRQYWdlIGNvbnRlbnRQYWdlID0gamFo
aWFQYWdlQmFzZVNlcnZpY2UubG9va3VwQ29udGVudFBhZ2UodGhlRmllbGQuZ2V0UGFnZUlEKCks
IGZhbHNlKTsNCiAgICBpZiAoY29udGVudFBhZ2UgIT0gbnVsbCkgew0KICAgICAgICBTdHJpbmcg
ZGVmYXVsdFZhbHVlID0gdGhlRmllbGQuZ2V0RGVmaW5pdGlvbigpLmdldERlZmF1bHRWYWx1ZShj
b250ZW50UGFnZS5nZXRQYWdlVGVtcGxhdGVJRChqUGFyYW1zKSk7DQoNCiAgICAgICAgLy8gZmll
bGQgdHlwZSBkZWZpbml0aW9uIGFsd2F5cyBwcmV2YWlscyBvdmVyIHRoZSBjdXJyZW50IHZhbHVl
Lg0KICAgICAgICAvLyBhZGRlZCB0byBzdXBwb3J0IG5ldyBmZWF0dXJlOiBjaGVjayBvZiBkZWZh
dWx0dmFsdWUgaW4gZGVjbGFyYXRpb25zDQogICAgICAgIC8vIHN5bnRheCBhY2NlcHRlZDogbW92
ZSwgaW50ZXJuYWwgb3IgZXh0ZXJuYWwsIHBhZ2Vvbmx5IGFuZCBsaW5rb25seS4gdGhlIDIgbGFz
dCBhcmUgZXhjbHVzaXZlDQogICAgICAgIC8vIHRoZSB3ZWJkZXNpZ25lciBjYW4gYWxzbyBsaW1p
dCB0aGUgdGVtcGxhdGUgY2hvaWNlIGJ5IGEgbGlzdCBvZiB0ZW1wbGF0ZXMgbmFtZXMgc3Vycm91
bmRlZCBieSBicmFja2V0cw0KDQogICAgICAgIGlmIChkZWZhdWx0VmFsdWUgIT0gbnVsbA0KICAg
ICAgICAgICAgICAgICYmICFkZWZhdWx0VmFsdWUudHJpbSgpLmVxdWFsc0lnbm9yZUNhc2UoIiIp
DQogICAgICAgICAgICAgICAgJiYgZGVmYXVsdFZhbHVlLnRyaW0oKS5sZW5ndGgoKSA+IDEpIHsN
Cg0KICAgICAgICAgICAgLy9jaGVjayBmb3IgcHJlc2VuY2Ugb2YgY29uc3RyYWludCB0ZW1wbGF0
ZXMNCg0KDQogICAgICAgICAgICBpZiAoZGVmYXVsdFZhbHVlLmluZGV4T2YoIlsiKSAhPSAtMSkg
ew0KICAgICAgICAgICAgICAgIGludCBwMSA9IGRlZmF1bHRWYWx1ZS5pbmRleE9mKCJbIik7DQog
ICAgICAgICAgICAgICAgaW50IHAyID0gZGVmYXVsdFZhbHVlLmxhc3RJbmRleE9mKCJdIik7DQog
ICAgICAgICAgICAgICAgU3RyaW5nIHRMaXN0ID0gZGVmYXVsdFZhbHVlLnN1YnN0cmluZyhwMSwg
cDIgKyAxKTsNCiAgICAgICAgICAgICAgICBkZWZhdWx0VmFsdWUgPSBTdHJpbmdVdGlscy5yZXBs
YWNlKGRlZmF1bHRWYWx1ZSwgdExpc3QsICIiKTsNCg0KICAgICAgICAgICAgICAgIHRMaXN0ID0g
dExpc3Quc3Vic3RyaW5nKDEsIHRMaXN0Lmxlbmd0aCgpIC0gMSk7DQogICAgICAgICAgICAgICAg
dFZsaXN0ID0gZ2V0U3RyaW5nVG9WZWN0b3IodExpc3QpOw0KICAgICAgICAgICAgICAgIGxvZ2dl
ci5kZWJ1ZygidGxpc3Q6ICIgKyB0Vmxpc3QpOw0KICAgICAgICAgICAgfQ0KDQogICAgICAgICAg
ICBTdHJpbmcgdmFsdWU7DQogICAgICAgICAgICBsb2dnZXIuZGVidWcoImRlZmF1bHRWYWx1ZTog
IiArIGRlZmF1bHRWYWx1ZSk7DQoNCiAgICAgICAgICAgIGludCBlbmQgPSBkZWZhdWx0VmFsdWUu
bGVuZ3RoKCk7DQoNCiAgICAgICAgICAgIC8vcmVtb3ZlIDw+IGlmIG5lZWRlZA0KICAgICAgICAg
ICAgaWYgKGRlZmF1bHRWYWx1ZS5zdWJzdHJpbmcoMCwgMSkuZXF1YWxzSWdub3JlQ2FzZSgiPCIp
DQogICAgICAgICAgICAgICAgICAgICYmIGRlZmF1bHRWYWx1ZS5zdWJzdHJpbmcoZW5kIC0gMSwg
ZW5kKS5lcXVhbHNJZ25vcmVDYXNlKCI+IikpIHsNCiAgICAgICAgICAgICAgICB2YWx1ZSA9IGRl
ZmF1bHRWYWx1ZS5zdWJzdHJpbmcoMSwgZGVmYXVsdFZhbHVlLmxlbmd0aCgpIC0gMSk7DQogICAg
ICAgICAgICB9IGVsc2Ugew0KICAgICAgICAgICAgICAgIHZhbHVlID0gZGVmYXVsdFZhbHVlOw0K
ICAgICAgICAgICAgfQ0KDQogICAgICAgICAgICBsb2dnZXIuZGVidWcoInZhbHVlOiIgKyB2YWx1
ZSk7DQogICAgICAgICAgICBWZWN0b3IgdmFsdWVzID0gZ2V0U3RyaW5nVG9WZWN0b3IodmFsdWUp
Ow0KICAgICAgICAgICAgLy9TdHJpbmdUb2tlbml6ZXIgdG9rID0gbmV3IFN0cmluZ1Rva2VuaXpl
cih2YWx1ZSwgIiwiKTsNCiAgICAgICAgICAgIGZvciAoaW50IGkgPSAwOyBpIDwgdmFsdWVzLnNp
emUoKTsgaSsrKSB7DQogICAgICAgICAgICAgICAgLy93aGlsZSAodG9rLmhhc01vcmVUb2tlbnMo
KSkgew0KICAgICAgICAgICAgICAgIC8vU3RyaW5nIHYgPSB0b2submV4dFRva2VuKCkudHJpbSgp
Ow0KICAgICAgICAgICAgICAgIFN0cmluZyB2ID0gKFN0cmluZykgdmFsdWVzLmdldChpKTsNCiAg
ICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInY9IiArIHYpOw0KICAgICAgICAgICAgICAgIGlm
ICh2LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigicGFnZW9ubHkiKSAhPSAtMSkgew0KICAgICAgICAg
ICAgICAgICAgICBpc0V4dGVybmFsTGluayA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBp
c0ludGVybmFsTGluayA9IGZhbHNlOw0KICAgICAgICAgICAgICAgICAgICBpc1BhZ2VNb3Zpbmcg
PSBmYWxzZTsNCiAgICAgICAgICAgICAgICAgICAgaXNMaW5rT25seSA9IGZhbHNlOw0KDQogICAg
ICAgICAgICAgICAgfSBlbHNlIGlmICh2LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibW92ZSIpICE9
IC0xKSB7DQogICAgICAgICAgICAgICAgICAgIGlzUGFnZU1vdmluZyA9IHRydWU7DQoNCiAgICAg
ICAgICAgICAgICB9IGVsc2UgaWYgKHYudG9Mb3dlckNhc2UoKS5pbmRleE9mKCJleHRlcm5hbCIp
ICE9IC0xKSB7DQogICAgICAgICAgICAgICAgICAgIGlzRXh0ZXJuYWxMaW5rID0gdHJ1ZTsNCiAg
ICAgICAgICAgICAgICAgICAgaXNJbnRlcm5hbExpbmsgPSBmYWxzZTsNCg0KICAgICAgICAgICAg
ICAgIH0gZWxzZSBpZiAodi50b0xvd2VyQ2FzZSgpLmluZGV4T2YoImludGVybmFsIikgIT0gLTEp
IHsNCiAgICAgICAgICAgICAgICAgICAgaXNJbnRlcm5hbExpbmsgPSB0cnVlOw0KICAgICAgICAg
ICAgICAgICAgICBpc0V4dGVybmFsTGluayA9IGZhbHNlOw0KDQogICAgICAgICAgICAgICAgfSBl
bHNlIGlmICh2LnRvTG93ZXJDYXNlKCkuaW5kZXhPZigibGlua29ubHkiKSAhPSAtMSkgew0KICAg
ICAgICAgICAgICAgICAgICBpc0xpbmtPbmx5ID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICAgICAg
aXNJbnRlcm5hbExpbmsgPSB0cnVlOw0KICAgICAgICAgICAgICAgICAgICBpc0V4dGVybmFsTGlu
ayA9IHRydWU7DQogICAgICAgICAgICAgICAgICAgIGlzUGFnZU1vdmluZyA9IGZhbHNlOw0KICAg
ICAgICAgICAgICAgIH0gZWxzZSBpZiAoIm5vdGl0bGVvdmVyd3JpdGUiLmVxdWFsc0lnbm9yZUNh
c2UodikpIHsNCiAgICAgICAgICAgICAgICAgICAgaXNOb1RpdGxlT3ZlcndyaXRlID0gdHJ1ZTsN
CiAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICB9DQogICAgICAgICAgICAvL2NoZWNrIGZv
ciB0ZW1wbGF0ZXMgbGlzdA0KICAgICAgICB9DQogICAgICAgIGxvZ2dlci5kZWJ1ZygiZXh0ZXJu
YWw9IiArIGlzRXh0ZXJuYWxMaW5rKTsNCiAgICAgICAgbG9nZ2VyLmRlYnVnKCJpbnRlcm5hbD0i
ICsgaXNJbnRlcm5hbExpbmspOw0KICAgICAgICBsb2dnZXIuZGVidWcoIm1vdmluZz0iICsgaXNQ
YWdlTW92aW5nKTsNCg0KICAgICAgICBpZiAoIWlzTGlua09ubHkgJiYgIWlzRXh0ZXJuYWxMaW5r
ICYmICFpc0ludGVybmFsTGluaykgew0KICAgICAgICAgICAgLy8gbm8gbGluayBvbmx5IGRlZmlu
aXRpb24gZm91bmQsIGxldCdzIHRlc3QgdGhlIGN1cnJlbnQgcGFnZSB0eXBlLg0KICAgICAgICAg
ICAgaWYgKGNvbnRlbnRQYWdlLmdldFBhZ2VUeXBlKGpQYXJhbXMuZ2V0RW50cnlMb2FkUmVxdWVz
dCgpKSA9PSBKYWhpYVBhZ2UuVFlQRV9MSU5LIHx8DQogICAgICAgICAgICAgICAgICAgIGNvbnRl
bnRQYWdlLmdldFBhZ2VUeXBlKGpQYXJhbXMuZ2V0RW50cnlMb2FkUmVxdWVzdCgpKSA9PSBKYWhp
YVBhZ2UuVFlQRV9VUkwpIHsNCiAgICAgICAgICAgICAgICBpc0xpbmtPbmx5ID0gdHJ1ZTsNCiAg
ICAgICAgICAgIH0NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIFN0cmluZyBwYWdlVVJMS2V5ID0g
cGFnZUJlYW4uZ2V0VXJsS2V5KCk7DQogICAgZmluYWwgU3RyaW5nIHJlbW90ZVVSTCA9IHBhZ2VC
ZWFuLmdldFJlbW90ZVVSTCgpOw0KDQogICAgLy8gR2V0IHRpdGxlcyBmb3IgdGhlIHNlbGVjdGVk
IHBhZ2UgZW5naW5lLg0KICAgIGludCBzb3VyY2VQYWdlSUQgPSBwYWdlQmVhbi5nZXRQYWdlTGlu
a0lEKCk7DQogICAgU3RyaW5nIHNvdXJjZVRpdGxlID0gbnVsbDsNCiAgICBpZiAoc291cmNlUGFn
ZUlEICE9IC0xKSB7DQogICAgICAgIGZpbmFsIENvbnRlbnRQYWdlIHNvdXJjZUNvbnRlbnRQYWdl
ID0gamFoaWFQYWdlQmFzZVNlcnZpY2UubG9va3VwQ29udGVudFBhZ2Uoc291cmNlUGFnZUlELCBm
YWxzZSk7DQogICAgICAgIEhhc2h0YWJsZSB0aXRsZXMgPSBzb3VyY2VDb250ZW50UGFnZS5nZXRU
aXRsZXMoQ29udGVudFBhZ2UuTEFTVF9VUERBVEVEX1RJVExFUyk7DQogICAgICAgIGlmICh0aXRs
ZXMgIT0gbnVsbCkNCiAgICAgICAgICAgIHNvdXJjZVRpdGxlID0gKFN0cmluZykgdGl0bGVzLmdl
dChwcm9jZXNzaW5nTG9jYWxlLnRvU3RyaW5nKCkpOw0KICAgICAgICBpZiAoIWlzSW50ZXJuYWxM
aW5rKSBwYWdlVVJMS2V5ID0gc291cmNlQ29udGVudFBhZ2UuZ2V0UHJvcGVydHkoUGFnZVByb3Bl
cnR5LlBBR0VfVVJMX0tFWV9QUk9QTkFNRSk7DQogICAgfQ0KDQogICAgaWYgKHBhZ2VVUkxLZXkg
PT0gbnVsbCkgew0KICAgICAgICBwYWdlVVJMS2V5ID0gIiI7DQogICAgfQ0KDQogICAgYm9vbGVh
biBhbGxTYW1lVGl0bGVzID0gYXJlVmFsdWVzVGhlU2FtZUluQWxsQWN0aXZlTGFuZ3VhZ2VzKHBh
Z2VCZWFuLCBqUGFyYW1zLmdldExvY2FsZSgpLnRvU3RyaW5nKCkpOw0KDQogICAgaWYgKHNvdXJj
ZVRpdGxlICE9IG51bGwgJiYgIiIuZXF1YWxzKHRpdGxlKSkgew0KICAgICAgICB0aXRsZSA9IHNv
dXJjZVRpdGxlOw0KICAgIH0NCg0KICAgIGxvZ2dlci5kZWJ1Zygic291cmNlUGFnZUlEOiAiICsg
c291cmNlUGFnZUlEKTsNCg0KICAgIC8qIG9yaWdpbmFsbHkgdGhlIHRlc3QgYWxsb3dlZCBmb3Ig
Y2hhbmdpbmcgdGhlIHBhZ2UgdHlwZSBpbiBVUERBVEUNCiAgICBmaW5hbCBib29sZWFuIGNhbkNo
YW5nZVR5cGUgPSBwYWdlQmVhbi5nZXRJRCgpICE9IGpQYXJhbXMuZ2V0UGFnZUlEKCkgfHwNCiAg
ICAgICAgICAgICFQYWdlX0ZpZWxkLlVQREFURV9QQUdFLmVxdWFscyhwYWdlQmVhbi5nZXRPcGVy
YXRpb24oKSk7DQogICAgKi8NCg0KICAgIGJvb2xlYW4gY2FuRGlzcGxheVRlbXBsYXRlU2VsZWN0
aW9uID0gdHJ1ZTsNCiAgICBpZiAoIWlzTmV3UGFnZSAmJiAhUGFnZV9GaWVsZC5VUERBVEVfUEFH
RS5lcXVhbHMocGFnZUJlYW4uZ2V0T3BlcmF0aW9uKCkpKSB7DQogICAgICAgIGNhbkRpc3BsYXlU
ZW1wbGF0ZVNlbGVjdGlvbiA9IGZhbHNlOw0KICAgIH0NCg0KICAgIGZpbmFsIGJvb2xlYW4gY2Fu
Q2hhbmdlVHlwZSA9ICFQYWdlX0ZpZWxkLlVQREFURV9QQUdFLmVxdWFscyhwYWdlQmVhbi5nZXRP
cGVyYXRpb24oKSk7DQoNCiAgICAvLyBBIGNoYW5nZSB0eXBlIHBhZ2Ugd2FybmluZyBpcyBkaXNw
bGF5ZWQgaWYgaXQgaXMgbm90IGEgbmV3IHBhZ2UsIGEgcGFnZSBvZg0KICAgIC8vIGRpcmVjdCB0
eXBlIGFuZCBpZiB0aGUgdXNlciBoYXMgY2hhbmdlIHRoZSB0eXBlIGluIHRoZSBlbmdpbmUgR1VJ
Lg0KICAgIGZpbmFsIGJvb2xlYW4gaGFzRGlyZWN0VHlwZUNoYW5nZSA9ICFpc05ld1BhZ2UgJiYN
CiAgICAgICAgICAgICgoSmFoaWFQYWdlKSB0aGVGaWVsZC5nZXRPYmplY3QoKSkuZ2V0UGFnZVR5
cGUoKSA9PSBDb250ZW50UGFnZS5UWVBFX0RJUkVDVCAmJg0KICAgICAgICAgICAgIVBhZ2VfRmll
bGQuVVBEQVRFX1BBR0UuZXF1YWxzKHBhZ2VCZWFuLmdldE9wZXJhdGlvbigpKSA/IHRydWUgOiBm
YWxzZTsNCg0KICAgIENvbnRlbnRPYmplY3QgdGltZUJhc2VkUHVibGlzaGluZ09iamVjdCA9IChD
b250ZW50T2JqZWN0KSByZXF1ZXN0LmdldEF0dHJpYnV0ZSgiUGFnZV9GaWVsZC5lbmFibGVUaW1l
QmFzZWRQdWJsaXNoaW5nU3RhdHVzIik7DQogICAgYm9vbGVhbiBlbmFibGVUaW1lQmFzZWRQdWJs
aXNoaW5nID0gKHRpbWVCYXNlZFB1Ymxpc2hpbmdPYmplY3QgIT0gbnVsbCk7DQoNCiAgICBib29s
ZWFuIGRpc3BsYXlVUkxLZXlJbnB1dCA9IHRydWU7DQogICAgZmluYWwgSmFoaWFBQ0xNYW5hZ2Vy
U2VydmljZSBhY2xTZXJ2aWNlID0gU2VydmljZXNSZWdpc3RyeS5nZXRJbnN0YW5jZSgpLmdldEph
aGlhQUNMTWFuYWdlclNlcnZpY2UoKTsNCiAgICBpZiAoYWNsU2VydmljZS5nZXRTaXRlQWN0aW9u
UGVybWlzc2lvbihMb2NrUHJlcmVxdWlzaXRlcy5VUkxLRVksIGpQYXJhbXMuZ2V0VXNlcigpLCBK
YWhpYUJhc2VBQ0wuUkVBRF9SSUdIVFMsIGpQYXJhbXMuZ2V0U2l0ZUlEKCkpIDw9IDApIHsNCiAg
ICAgICAgZGlzcGxheVVSTEtleUlucHV0ID0gZmFsc2U7DQogICAgfQ0KDQogICAgaWYgKGVuYWJs
ZVRpbWVCYXNlZFB1Ymxpc2hpbmcpIHsNCiU+DQo8YWpheDp6aW1icmFJbmNsdWRlLz4NCjxzY3Jp
cHQgbGFuZ3VhZ2U9ImphdmFzY3JpcHQiDQogICAgICAgIHNyYz0iPGNvbnRlbnQ6c2VydmVySHR0
cFBhdGgvPi9qc3AvamFoaWEvamF2YXNjcmlwdC96aW1icmEvdGltZWJhc2VkcHVibGlzaGluZy9U
aW1lQmFzZWRQdWJsaXNoaW5nU3RhdHVzLmpzIg0KICAgICAgICB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiPjwvc2NyaXB0Pg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIGZ1bmN0
aW9uIHNob3dVc2VyU2hlbGwoKSB7DQogICAgICAgIHRyeSB7DQogICAgICAgICAgICBEd3Quc2V0
VmlzaWJpbGl0eShkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgidXNlclNoZWxsIiksIHRydWUpOw0K
ICAgICAgICB9IGNhdGNoIChleCkgew0KICAgICAgICAgICAgcmV0dXJuOw0KICAgICAgICB9DQog
ICAgfQ0KDQogICAgdmFyIGlzSUU3ID0gPCU9aXNJRTclPjsNCiAgICBmdW5jdGlvbiBlbmdpbmVD
dXN0b21IYW5kbGVPbkxvYWQoKSB7DQogICAgICAgIGlmIChpc0lFNykgew0KICAgICAgICAgICAg
aW5pdFppbWJyYVNoZWxsKCdNYWluU2hlbGwnLCB0cnVlLCBudWxsLCAndXNlclNoZWxsJywgdHJ1
ZSwgZmFsc2UsICcjZGRkZGRkJyk7DQogICAgICAgIH0gZWxzZSBpZiAoQWp4RW52LmlzSUUpIHsN
CiAgICAgICAgICAgIGluaXRaaW1icmFTaGVsbCgnTWFpblNoZWxsJywgdHJ1ZSwgbnVsbCwgbnVs
bCwgZmFsc2UsIGZhbHNlLCAnI2RkZGRkZCcpOw0KICAgICAgICAgICAgLy9pbml0WmltYnJhU2hl
bGwoJ01haW5TaGVsbCcsdHJ1ZSxudWxsLCd1c2VyU2hlbGwnLHRydWUsZmFsc2UsJyNkZGRkZGQn
KTsNCiAgICAgICAgfSBlbHNlIHsNCiAgICAgICAgICAgIGluaXRaaW1icmFTaGVsbCgnTWFpblNo
ZWxsJywgdHJ1ZSwgbnVsbCwgJ3VzZXJTaGVsbCcsIHRydWUsIGZhbHNlLCAnI2RkZGRkZCcpOw0K
ICAgICAgICB9DQogICAgICAgIHNob3dVc2VyU2hlbGwoKTsNCiAgICB9DQo8L3NjcmlwdD4NCjwl
IH0gJT4NCjxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0Ij4NCmZ1bmN0aW9uIGdldFBhZ2VP
ZmZzZXRMZWZ0KGVsKSB7DQoNCiAgICB2YXIgeDsNCg0KICAgIC8vIFJldHVybiB0aGUgeCBjb29y
ZGluYXRlIG9mIGFuIGVsZW1lbnQgcmVsYXRpdmUgdG8gdGhlIHBhZ2UuDQoNCiAgICB4ID0gZWwu
b2Zmc2V0TGVmdCAtIDU7DQogICAgaWYgKGVsLm9mZnNldFBhcmVudCAhPSBudWxsKQ0KICAgICAg
ICB4ICs9IGdldFBhZ2VPZmZzZXRMZWZ0KGVsLm9mZnNldFBhcmVudCk7DQoNCiAgICByZXR1cm4g
eDsNCn0NCg0KZnVuY3Rpb24gY2FsbFNlbGVjdFBhZ2VNb3ZlKCkgew0KICAgIC8vIEluaGliYXRl
IHRoZSBlbmdpbmUgcG9wIHVwIGNsb3NlDQogICAgZG9jdW1lbnQubWFpbkZvcm0ucGFnZVVSTEtl
eS5kaXNhYmxlZCA9IGZhbHNlOw0KPCU9akRhdGEuZ3VpKCkuaHRtbCgpLmRyYXdTZWxlY3RQYWdl
TGF1bmNoZXIoU2VsZWN0UGFnZV9FbmdpbmUuTU9WRV9PUEVSQVRJT04sDQpwYWdlQmVhbi5nZXRQ
YXJlbnRJRCgpLCBwYWdlQmVhbi5nZXRJRCgpKSU+DQp9DQoNCmZ1bmN0aW9uIGNhbGxTZWxlY3RQ
YWdlTGluaygpIHsNCiAgICAvLyBJbmhpYmF0ZSB0aGUgZW5naW5lIHBvcCB1cCBjbG9zZQ0KICAg
IGlmICh0eXBlb2YgZG9jdW1lbnQubWFpbkZvcm0ucGFnZVVSTEtleSAhPSAndW5kZWZpbmVkJyl7
DQogICAgZG9jdW1lbnQubWFpbkZvcm0ucGFnZVVSTEtleS5kaXNhYmxlZCA9ICJkaXNhYmxlZCI7
DQogICAgfQ0KPCU9akRhdGEuZ3VpKCkuaHRtbCgpLmRyYXdTZWxlY3RQYWdlTGF1bmNoZXIoU2Vs
ZWN0UGFnZV9FbmdpbmUuTElOS19PUEVSQVRJT04sDQpwYWdlQmVhbi5nZXRQYXJlbnRJRCgpLCBw
YWdlQmVhbi5nZXRJRCgpKSU+DQp9DQoNCmZ1bmN0aW9uIHRpdGxlSW5wdXRFdmVudCgpIHsNCiAg
ICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ25vVmFsdWVSYWRpbycpKSB7DQogICAgICAg
IGlmIChkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgnbm9WYWx1ZVJhZGlvJykuY2hlY2tlZCkgew0K
ICAgICAgICAgICAgZG9jdW1lbnQubWFpbkZvcm0ub3BlcmF0aW9uWzBdLmNoZWNrZWQgPSB0cnVl
Ow0KICAgICAgICB9DQogICAgfQ0KfQ0KDQpmdW5jdGlvbiBzZXRQYWdlVVJMKCkgew0KICAgIGRv
Y3VtZW50Lm1haW5Gb3JtLnBhZ2VVUkxLZXkuZGlzYWJsZWQgPSAiZGlzYWJsZWQiOw0KICAgIHZh
ciB0b2tlbiA9ICI/IjsNCiAgICBpZiAoZG9jdW1lbnQubWFpbkZvcm0uYWN0aW9uLmluZGV4T2Yo
Ij8iKSA+IC0xKSB7DQogICAgICAgIHRva2VuID0gIiYiOw0KICAgIH0NCiAgICBkb2N1bWVudC5t
YWluRm9ybS5hY3Rpb24gKz0gdG9rZW4gKyAibG9hZGVkRnJvbVNlc3Npb249dHJ1ZSIgKyAiJm9w
ZXJhdGlvbj08JT1QYWdlX0ZpZWxkLkxJTktfVVJMJT4iOw0KfQ0KDQpmdW5jdGlvbiBjaGVjaygp
IHsNCg0KICAgIC8vIFRlc3QgaWYgY2hlY2tlZA0KICAgIGNoZWNrZWQgPSBmYWxzZTsNCiAgICBp
ZiAoZG9jdW1lbnQubWFpbkZvcm0ub3BlcmF0aW9uLmxlbmd0aCA+IDEpIHsNCiAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCBkb2N1bWVudC5tYWluRm9ybS5vcGVyYXRpb24ubGVuZ3RoOyBpKysp
IHsNCiAgICAgICAgICAgIGlmIChkb2N1bWVudC5tYWluRm9ybS5vcGVyYXRpb25baV0uY2hlY2tl
ZCkgew0KICAgICAgICAgICAgICAgIGNoZWNrZWQgPSB0cnVlOw0KICAgICAgICAgICAgfQ0KICAg
ICAgICB9DQogICAgfSBlbHNlIHsNCiAgICAgICAgLy8gaWYgb3BlcmF0aW9uID09IDEgdGhlbiB3
ZSBoYXZlIHRvIHRlc3QgZGlmZmVyZW50bHkuDQogICAgICAgIGlmIChkb2N1bWVudC5tYWluRm9y
bS5vcGVyYXRpb24uY2hlY2tlZCkgew0KICAgICAgICAgICAgY2hlY2tlZCA9IHRydWU7DQogICAg
ICAgIH0NCiAgICB9DQogICAgaWYgKCFjaGVja2VkKSByZXR1cm4gZmFsc2U7DQoNCiAgICAvLyBu
b3cgaGVyZSB3ZSB3aWxsIHRlc3QgaWYgdGhlIG1vdmUgcGFnZSBvciB0aGUgbGluayBwYWdlDQog
ICAgLy8gdGFyZ2V0IHBhZ2UgSURzIGFyZSB2YWxpZCBvciBub3QuDQoNCiAgICAvLyBmaXJzdCB3
ZSB0ZXN0IGZvciBhbnkgb2YgdGhlIGNhc2VzLCB3aGVuIGJvdGggb3B0aW9ucw0KICAgIC8vIGFy
ZSBhdmFpbGFibGUgdG8gdGhlIHVzZXINCiAgICBpZiAoKGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KCdtb3ZlUGFnZVJhZGlvJykgIT0gbnVsbCkgJiYNCiAgICAgICAgKGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKCdsaW5rUGFnZVJhZGlvJykgIT0gbnVsbCkpIHsNCiAgICAgICAgaWYgKGRvY3VtZW50
LmdldEVsZW1lbnRCeUlkKCdtb3ZlUGFnZVJhZGlvJykuY2hlY2tlZCB8fA0KICAgICAgICAgICAg
ZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmtQYWdlUmFkaW8nKS5jaGVja2VkKSB7DQogICAg
ICAgIDwlIGlmICgoUGFnZV9GaWVsZC5MSU5LX0pBSElBX1BBR0UuZXF1YWxzKHBhZ2VCZWFuLmdl
dE9wZXJhdGlvbigpKSB8fA0KICBQYWdlX0ZpZWxkLk1PVkVfUEFHRS5lcXVhbHMocGFnZUJlYW4u
Z2V0T3BlcmF0aW9uKCkpKSAmJiBzb3VyY2VQYWdlSUQgPD0gMCkgeyAlPg0KICAgICAgICAgICAg
cmV0dXJuIGZhbHNlOw0KICAgICAgICA8JSB9IGVsc2UgeyAlPg0KICAgICAgICAgICAgcmV0dXJu
IHRydWU7DQogICAgICAgIDwlIH0gJT4NCiAgICAgICAgfQ0KICAgIH0NCg0KICAgIC8vIGZyb20g
bm93IG9uIHdlIGhhdmUgZWl0aGVyIHRoZSBtb3ZlIG9yIHRoZSBsaW5rDQogICAgLy8gb3B0aW9u
IHByZXNlbnQgb24gdGhlIGRpc3BsYXksIGJ1dCBub3QgYm90aA0KICAgIC8vICh0aGF0IGNhc2Ug
d2FzIGFscmVhZHkgY292ZXJlZCBpbiB0aGUgcHJldmlvdXMNCiAgICAvLyB0ZXN0KQ0KDQogICAg
Ly8gbm93IGxldCdzIHRlc3Qgb25seSB0aGUgbW92ZSBjYXNlIGlmIGl0IGlzIHByZXNlbnQuDQog
ICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdtb3ZlUGFnZVJhZGlvJykgIT0gbnVsbCkg
ew0KICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ21vdmVQYWdlUmFkaW8nKS5j
aGVja2VkKSB7DQogICAgICAgIDwlIGlmICgoUGFnZV9GaWVsZC5MSU5LX0pBSElBX1BBR0UuZXF1
YWxzKHBhZ2VCZWFuLmdldE9wZXJhdGlvbigpKSB8fA0KICBQYWdlX0ZpZWxkLk1PVkVfUEFHRS5l
cXVhbHMocGFnZUJlYW4uZ2V0T3BlcmF0aW9uKCkpKSAmJiBzb3VyY2VQYWdlSUQgPD0gMCkgeyAl
Pg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICA8JX0gZWxzZSB7ICU+DQogICAg
ICAgICAgICByZXR1cm4gdHJ1ZTsNCiAgICAgICAgPCUgfSAlPg0KICAgICAgICB9DQogICAgfQ0K
DQogICAgaWYgKGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCdsaW5rUGFnZVJhZGlvJykgIT0gbnVs
bCkgew0KICAgICAgICBpZiAoZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoJ2xpbmtQYWdlUmFkaW8n
KS5jaGVja2VkKSB7DQogICAgICAgIDwlIGlmICgoUGFnZV9GaWVsZC5MSU5LX0pBSElBX1BBR0Uu
ZXF1YWxzKHBhZ2VCZWFuLmdldE9wZXJhdGlvbigpKSB8fA0KICBQYWdlX0ZpZWxkLk1PVkVfUEFH
RS5lcXVhbHMocGFnZUJlYW4uZ2V0T3BlcmF0aW9uKCkpKSAmJiBzb3VyY2VQYWdlSUQgPD0gMCkg
eyAlPg0KICAgICAgICAgICAgcmV0dXJuIGZhbHNlOw0KICAgICAgICA8JSB9IGVsc2UgeyAlPg0K
ICAgICAgICAgICAgcmV0dXJuIHRydWU7DQogICAgICAgIDwlIH0gJT4NCiAgICAgICAgfQ0KICAg
IH0NCiAgICByZXR1cm4gdHJ1ZTsNCn0NCg0KZnVuY3Rpb24gaGFuZGxlQWN0aW9uQ2hhbmdlcyhw
YXJhbSkgew0KICAgIHNhdmVDb250ZW50KCk7DQogICAgdmFyIHNlcCA9ICI/IjsNCiAgICBpZiAo
ZG9jdW1lbnQubWFpbkZvcm0uYWN0aW9uLmluZGV4T2YoIj8iKSA+IDApIHsNCiAgICAgICAgc2Vw
ID0gIiYiOw0KICAgIH0NCiAgICBkb2N1bWVudC5tYWluRm9ybS5hY3Rpb24gKz0gc2VwICsgInNj
cmVlbj0iICsgcGFyYW07DQogICAgdGVsZXBvcnRDYXB0YWluRmxhbShkb2N1bWVudC5tYWluRm9y
bSk7DQp9DQoNCmZ1bmN0aW9uIHN3aXRjaEljb25zKGNhbGxpbmdFbGVtZW50SUQsIGlucHV0RWxl
bWVudElEKSB7DQogICAgdmFyIGVsZW1lbnQgPSBkb2N1bWVudC5nZXRFbGVtZW50QnlJZChpbnB1
dEVsZW1lbnRJRCk7DQogICAgdmFyIGNhbGxpbmdFbGVtZW50ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoY2FsbGluZ0VsZW1lbnRJRCk7DQogICAgaWYgKGVsZW1lbnQpIHsNCiAgICAgICAgdmFy
IHRoZVZhbHVlID0gZWxlbWVudC52YWx1ZTsNCiAgICAgICAgaWYgKHRoZVZhbHVlID09ICJ0cnVl
Iikgew0KICAgICAgICAgICAgdGhlVmFsdWUgPSAiZmFsc2UiOw0KICAgICAgICAgICAgY2FsbGlu
Z0VsZW1lbnQuY2xhc3NOYW1lID0gInNoYXJlZExhbmd1YWdlTm8iOw0KICAgICAgICAgICAgY2Fs
bGluZ0VsZW1lbnQudGl0bGUgPSAnPGphaGlhOmVuZ2luZVJlc291cmNlQnVuZGxlIHJlc291cmNl
TmFtZT0ib3JnLmphaGlhLmFwcGx5VG9TaW5nbGVMYW5ndWFnZS5sYWJlbCIvPic7DQogICAgICAg
IH0gZWxzZSB7DQogICAgICAgICAgICB0aGVWYWx1ZSA9ICJ0cnVlIjsNCiAgICAgICAgICAgIGNh
bGxpbmdFbGVtZW50LmNsYXNzTmFtZSA9ICJzaGFyZWRMYW5ndWFnZVllcyI7DQogICAgICAgICAg
ICBjYWxsaW5nRWxlbWVudC50aXRsZSA9ICc8amFoaWE6ZW5naW5lUmVzb3VyY2VCdW5kbGUgcmVz
b3VyY2VOYW1lPSJvcmcuamFoaWEuYXBwbHlUb0FsbExhbmd1YWdlcy5sYWJlbCIvPic7DQogICAg
ICAgIH0NCiAgICAgICAgZWxlbWVudC52YWx1ZSA9IHRoZVZhbHVlOw0KICAgIH0NCn0NCjwvc2Ny
aXB0Pg0KDQo8aDQgY2xhc3M9InBhZ2VfdHlwZV9iaWciPg0KICAgIDwlIGlmIChqUGFyYW1zLmdl
dFNpdGUoKS5nZXRMYW5ndWFnZVNldHRpbmdzKHRydWUpLnNpemUoKSA+IDEgJiYNCiAgICAgICAg
ICAgIFNlcnZpY2VzUmVnaXN0cnkuZ2V0SW5zdGFuY2UoKS5nZXRKYWhpYUFDTE1hbmFnZXJTZXJ2
aWNlKCkuaGFzV3JpdGVBY2Nlc09uQWxsTGFuZ3MoalBhcmFtcykpIHsgJT4NCiAgICA8JSBpZiAo
YWxsU2FtZVRpdGxlcykgeyAlPg0KICAgIDxhIGlkPSJzd2l0Y2hJY29uc188JT1wYWdlQmVhbi5n
ZXRJRCgpJT4iDQogICAgICAgaHJlZj0iamF2YXNjcmlwdDpzd2l0Y2hJY29ucygnc3dpdGNoSWNv
bnNfPCU9cGFnZUJlYW4uZ2V0SUQoKSU+JywgJ3NoYXJlZF90aXRsZScpOyINCiAgICAgICB0aXRs
ZT0nPGphaGlhOmVuZ2luZVJlc291cmNlQnVuZGxlIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmFw
cGx5VG9BbGxMYW5ndWFnZXMubGFiZWwiLz4nDQogICAgICAgY2xhc3M9InNoYXJlZExhbmd1YWdl
WWVzIj4mbmJzcDs8L2E+DQogICAgPCUgfSBlbHNlIHsgJT4NCiAgICA8YSBpZD0ic3dpdGNoSWNv
bnNfPCU9cGFnZUJlYW4uZ2V0SUQoKSU+Ig0KICAgICAgIGhyZWY9ImphdmFzY3JpcHQ6c3dpdGNo
SWNvbnMoJ3N3aXRjaEljb25zXzwlPXBhZ2VCZWFuLmdldElEKCklPicsICdzaGFyZWRfdGl0bGUn
KTsiDQogICAgICAgdGl0bGU9JzxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZU5h
bWU9Im9yZy5qYWhpYS5hcHBseVRvU2luZ2xlTGFuZ3VhZ2UubGFiZWwiLz4nDQogICAgICAgY2xh
c3M9InNoYXJlZExhbmd1YWdlTm8iPiZuYnNwOzwvYT4NCiAgICA8JSB9ICU+DQogICAgPCUgfSBl
bHNlIHsgJT4NCiAgICA8JSBpZiAocGFnZUJlYW4uaXNTaGFyZWRUaXRsZSgpICYmIGpQYXJhbXMu
Z2V0U2l0ZSgpLmdldExhbmd1YWdlU2V0dGluZ3ModHJ1ZSkuc2l6ZSgpID4gMSkgeyAlPg0KICAg
IDxzcGFuIHRpdGxlPSI8amFoaWE6ZW5naW5lUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VOYW1lPSdv
cmcuamFoaWEuc2FtZUluQWxsTGFuZ3VhZ2UubGFiZWwnLz4iDQogICAgICAgICAgY2xhc3M9InNo
YXJlZExhbmd1YWdlWWVzRGlzYWJsZWQiPiZuYnNwOzwvc3Bhbj4NCiAgICA8JSB9ICU+DQogICAg
PCUgfSAlPg0KICAgIDxpbnB1dCBpZD0ic2hhcmVkX3RpdGxlIiB0eXBlPSJoaWRkZW4iIG5hbWU9
InNoYXJlZF90aXRsZSIgdmFsdWU9IjwlPWFsbFNhbWVUaXRsZXMgfHwgcGFnZUJlYW4uaXNTaGFy
ZWRUaXRsZSgpJT4iLz4NCiAgICA8JSBpZiAoaXNOZXdQYWdlKSB7ICU+DQogICAgPCUgaWYgKGlz
TGlua09ubHkpIHsgJT4NCiAgICA8amFoaWE6ZW5naW5lUmVzb3VyY2VCdW5kbGUgcmVzb3VyY2VO
YW1lPSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5qYWhpYUxpbmtDcmVhdGlv
bi5sYWJlbCIvPg0KICAgIDwlIH0gZWxzZSB7ICU+DQogICAgPGphaGlhOmVuZ2luZVJlc291cmNl
QnVuZGxlIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQu
amFoaWFQYWdlQ3JlYXRpb24ubGFiZWwiLz4NCiAgICA8JSB9ICU+DQogICAgPCUgfSBlbHNlIHsg
JT4NCiAgICA8JSBpZiAoaXNMaW5rT25seSkgeyAlPg0KICAgIDxqYWhpYTplbmdpbmVSZXNvdXJj
ZUJ1bmRsZSByZXNvdXJjZU5hbWU9Im9yZy5qYWhpYS5lbmdpbmVzLnNoYXJlZC5QYWdlX0ZpZWxk
LmphaGlhTGlua0VkaXRpb24ubGFiZWwiLz4NCiAgICA8JSB9IGVsc2UgeyAlPg0KICAgIDxqYWhp
YTplbmdpbmVSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZU5hbWU9Im9yZy5qYWhpYS5lbmdpbmVzLnNo
YXJlZC5QYWdlX0ZpZWxkLmphaGlhUGFnZUVkaXRpb24ubGFiZWwiLz4NCiAgICA8JSB9ICU+DQog
ICAgPCUgfSAlPg0KPC9oND4NCg0KPCUgaWYgKGhhc0RpcmVjdFR5cGVDaGFuZ2UpIHsgJT4NCjxw
IGNsYXNzPSJlcnJvciI+DQogICAgPGphaGlhOmVuZ2luZVJlc291cmNlQnVuZGxlIHJlc291cmNl
TmFtZT0ib3JnLmphaGlhLndhcm5pbmcubGFiZWwiLz4gISENCiAgICA8amFoaWE6ZW5naW5lUmVz
b3VyY2VCdW5kbGUgcmVzb3VyY2VOYW1lPSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9G
aWVsZC5pZlRoaXNQYWdlSXNDaGFuZ2VkLmxhYmVsIi8+Lg0KPC9wPg0KPCUgfSAlPg0KPGxvZ2lj
OnByZXNlbnQgbmFtZT0iZW5naW5lTWVzc2FnZXMiPg0KICAgIDxwIGNsYXNzPSJlcnJvcmJvbGQi
PjxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAgcmVzb3VyY2VOYW1lPSJv
cmcuamFoaWEuZW5naW5lcy5zaGFyZWQuQmlnVGV4dF9GaWVsZC5lcnJvci5sYWJlbCIvPjoNCiAg
ICA8L3A+DQogICAgPHVsPg0KICAgICAgICA8bG9naWM6aXRlcmF0ZSBuYW1lPSJlbmdpbmVNZXNz
YWdlcyIgcHJvcGVydHk9Im1lc3NhZ2VzIiBpZD0iY3VyTWVzc2FnZSI+DQogICAgICAgICAgICA8
bGkgY2xhc3M9ImVycm9yIj48Y29udGVudDptZXNzYWdlIG5hbWU9ImN1ck1lc3NhZ2UiLz48L2xp
Pg0KICAgICAgICA8L2xvZ2ljOml0ZXJhdGU+DQogICAgPC91bD4NCjwvbG9naWM6cHJlc2VudD4N
Cg0KPCUgaWYgKHBhZ2VCZWFuID09IG51bGwpIHsgJT4NCjxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1
bmRsZSByZXNvdXJjZU5hbWU9Im9yZy5qYWhpYS5lbmdpbmVzLnNoYXJlZC5QYWdlX0ZpZWxkLm5v
VGVtcFBhZ2VCZWFuLmxhYmVsIi8+Lg0KPCUgfSAlPg0KPCUNCmlmICghaXNOb1RpdGxlT3Zlcndy
aXRlKSB7DQppZiAoaXNMaW5rT25seSkgeyAlPg0KPGphaGlhOmVuZ2luZVJlc291cmNlQnVuZGxl
IHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQuamFoaWFM
aW5rVGl0bGUubGFiZWwiLz4NCjwlIH0gZWxzZSB7ICU+DQo8amFoaWE6ZW5naW5lUmVzb3VyY2VC
dW5kbGUgcmVzb3VyY2VOYW1lPSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5q
YWhpYVBhZ2VUaXRsZS5sYWJlbCIvPg0KPCUgfSAlPg0KPCUNCiAgICBmaW5hbCBKYWhpYUNvbnRh
aW5lciB0aGVDb250YWluZXIgPSAoSmFoaWFDb250YWluZXIpIGVuZ2luZU1hcC5nZXQoInRoZUNv
bnRhaW5lciIpOw0KICAgIGlmIChFbmdpbmVWYWxpZGF0aW9uSGVscGVyLmlzRmllbGRNYW5kYXRv
cnkodGhlQ29udGFpbmVyLCB0aGVGaWVsZCwgalBhcmFtcykpIHsNCiU+DQo8c3BhbiBjbGFzcz0i
ZXJyb3Jib2xkIj4oKik8L3NwYW4+DQo8aW5wdXQgaWQ9ImdvIiB0eXBlPSJoaWRkZW4iIG5hbWU9
ImdvIi8+DQo8JSB9ICU+DQo8ZGl2IGlkPSJlcnJvck1zZyI+PC9kaXY+DQo8aW5wdXQgdHlwZT0i
dGV4dCIgc2l6ZT0iODAiIG5hbWU9InBhZ2VfdGl0bGUiIG9ua2V5dXA9InRpdGxlSW5wdXRFdmVu
dCgpIg0KICAgICAgIG9uY2hhbmdlPSJ0aXRsZUlucHV0RXZlbnQoKSINCiAgICAgICB2YWx1ZT0i
PCU9SmFoaWFUb29scy50ZXh0Mmh0bWwodGl0bGUpJT4iIG1heGxlbmd0aD0iMjUwIj4NCjxici8+
Jm5ic3A7PGJyLz4NCjwlDQp9IGVsc2UgeyU+DQo8aW5wdXQgdHlwZT0iaGlkZGVuIiBuYW1lPSJw
YWdlX3RpdGxlIiB2YWx1ZT0iPCU9dGl0bGUlPiIvPiAgICAgICANCjwlfQ0KICAgIGZpbmFsIEFy
cmF5TGlzdCBsb2NhbGVMaXN0ID0gbmV3IEFycmF5TGlzdCgpOw0KICAgIGZpbmFsIFZlY3RvciBz
aXRlTGFuZ3VhZ2VTZXR0aW5ncyA9IGpQYXJhbXMuZ2V0U2l0ZSgpLmdldExhbmd1YWdlU2V0dGlu
Z3MoKTsNCiAgICBpZiAoc2l0ZUxhbmd1YWdlU2V0dGluZ3MgIT0gbnVsbCkgew0KICAgICAgICBm
b3IgKGludCBpID0gMDsgaSA8IHNpdGVMYW5ndWFnZVNldHRpbmdzLnNpemUoKTsgaSsrKSB7DQog
ICAgICAgICAgICBmaW5hbCBTaXRlTGFuZ3VhZ2VTZXR0aW5ncyBjdXJTZXR0aW5nID0gKFNpdGVM
YW5ndWFnZVNldHRpbmdzKSBzaXRlTGFuZ3VhZ2VTZXR0aW5ncy5lbGVtZW50QXQoaSk7DQogICAg
ICAgICAgICBpZiAoY3VyU2V0dGluZy5pc0FjdGl2YXRlZCgpKSB7DQogICAgICAgICAgICAgICAg
ZmluYWwgTG9jYWxlIHRlbXBMb2NhbGUgPSBMYW5ndWFnZUNvZGVDb252ZXJ0ZXJzLmxhbmd1YWdl
Q29kZVRvTG9jYWxlKGN1clNldHRpbmcuZ2V0Q29kZSgpKTsNCiAgICAgICAgICAgICAgICBmaW5h
bCBib29sZWFuIGNhbkVkaXQgPSBTZXJ2aWNlc1JlZ2lzdHJ5LmdldEluc3RhbmNlKCkuZ2V0SmFo
aWFBQ0xNYW5hZ2VyU2VydmljZSgpLmdldFNpdGVBY3Rpb25QZXJtaXNzaW9uKCJlbmdpbmVzLmxh
bmd1YWdlcy4iICsNCiAgICAgICAgICAgICAgICAgICAgICAgIHRlbXBMb2NhbGUudG9TdHJpbmco
KSwNCiAgICAgICAgICAgICAgICAgICAgICAgIGpQYXJhbXMuZ2V0VXNlcigpLA0KICAgICAgICAg
ICAgICAgICAgICAgICAgSmFoaWFCYXNlQUNMLlJFQURfUklHSFRTLA0KICAgICAgICAgICAgICAg
ICAgICAgICAgalBhcmFtcy5nZXRTaXRlSUQoKSkgPiAwOw0KICAgICAgICAgICAgICAgIGlmIChj
YW5FZGl0KSBsb2NhbGVMaXN0LmFkZCh0ZW1wTG9jYWxlKTsNCiAgICAgICAgICAgIH0NCiAgICAg
ICAgfQ0KICAgIH0NCg0KICAgIGlmIChkaXNwbGF5VVJMS2V5SW5wdXQgJiYgIWlzTGlua09ubHkp
IHsNCiAgICAgICAgaWYgKGxvY2FsZUxpc3Quc2l6ZSgpID4gMSkgeyAlPg0KPGphaGlhOmVuZ2lu
ZVJlc291cmNlQnVuZGxlIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMucGFnZXMuUGFn
ZVByb3BlcnRpZXNfRW5naW5lLnBhZ2VVUkxLZXlTaGFyZWQubGFiZWwiLz48YnIvPg0KPCUgfSBl
bHNlIHsgJT4NCjxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZSByZXNvdXJjZU5hbWU9Im9yZy5q
YWhpYS5lbmdpbmVzLnBhZ2VzLlBhZ2VQcm9wZXJ0aWVzX0VuZ2luZS5wYWdlVVJMS2V5LmxhYmVs
Ii8+PGJyLz4NCjwlIH0gJT4NCjxpbnB1dCB0eXBlPSJ0ZXh0IiBzaXplPSI4MCIgbmFtZT0icGFn
ZVVSTEtleSIgdmFsdWU9IjwlPXBhZ2VVUkxLZXklPiIgPCUgaWYgKCFjYW5EaXNwbGF5VGVtcGxh
dGVTZWxlY3Rpb24gfHwgUGFnZV9GaWVsZC5MSU5LX0pBSElBX1BBR0UuZXF1YWxzKHBhZ2VCZWFu
LmdldE9wZXJhdGlvbigpKSkgeyAlPg0KICAgICAgIGRpc2FibGVkPSJkaXNhYmxlZCIgPCUgfSAl
Pi8+DQo8JSB9ICU+DQo8dGFibGU+DQoNCjwlDQogICAgLy8gSXMgaXQgYSBuZXcgcGFnZSBmaWVs
ZCA/DQogICAgLy8gSXMgaXQgbm90IGV4dGVybmFsIG9yIGludGVybmFsIGxpbmsgbmVpdGhlciBt
b3ZpbmcNCg0KICAgIGlmICghaXNMaW5rT25seSkgew0KICAgICAgICBmaW5hbCBFbnVtZXJhdGlv
biB0ZW1wbGF0ZUxpc3Q7DQoNCiAgICAgICAgLy9jaGVjayBmb3IgdGVtcGxhdGVzIHJlcXVlc3Rl
ZA0KICAgICAgICBib29sZWFuIGNoZWNrZWRUZW1wbGF0ZXMgPSBmYWxzZTsNCiAgICAgICAgaWYg
KHRWbGlzdC5zaXplKCkgPiAwKSB7DQogICAgICAgICAgICBFbnVtZXJhdGlvbiB0bGlzdCA9IChF
bnVtZXJhdGlvbikgZW5naW5lTWFwLmdldCgidGVtcGxhdGVMaXN0Iik7DQogICAgICAgICAgICBW
ZWN0b3IgYWxsID0gbmV3IFZlY3RvcigpOw0KICAgICAgICAgICAgVmVjdG9yIGNvbnN0cmFpbnQg
PSBuZXcgVmVjdG9yKCk7DQogICAgICAgICAgICBpbnQgY2hlY2tjb3VudCA9IHRWbGlzdC5zaXpl
KCk7DQogICAgICAgICAgICB3aGlsZSAodGxpc3QuaGFzTW9yZUVsZW1lbnRzKCkpIHsNCiAgICAg
ICAgICAgICAgICBKYWhpYVBhZ2VEZWZpbml0aW9uIHQgPSAoSmFoaWFQYWdlRGVmaW5pdGlvbikg
dGxpc3QubmV4dEVsZW1lbnQoKTsNCiAgICAgICAgICAgICAgICBhbGwuYWRkKHQpOw0KICAgICAg
ICAgICAgICAgIFN0cmluZyB0ZW1wbGF0ZW5hbWUgPSB0LmdldE5hbWUoKTsNCiAgICAgICAgICAg
ICAgICBpZiAodFZsaXN0LmNvbnRhaW5zKHRlbXBsYXRlbmFtZSkpIHsNCiAgICAgICAgICAgICAg
ICAgICAgbG9nZ2VyLmRlYnVnKCJmb3VuZCByZXF1ZXN0ZWQgdGVtcGxhdGVzOiIgKyB0ZW1wbGF0
ZW5hbWUpOw0KICAgICAgICAgICAgICAgICAgICBjaGVja2NvdW50LS07DQogICAgICAgICAgICAg
ICAgICAgIGNvbnN0cmFpbnQuYWRkKHQpOw0KICAgICAgICAgICAgICAgIH0NCiAgICAgICAgICAg
IH0NCiAgICAgICAgICAgIGlmIChjaGVja2NvdW50ID09IDApIHsNCiAgICAgICAgICAgICAgICBj
aGVja2VkVGVtcGxhdGVzID0gdHJ1ZTsNCiAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImFs
bCB0ZW1wbGF0ZXMgY29udHJhaW50cyBjaGVja2VkIik7DQogICAgICAgICAgICAgICAgdGVtcGxh
dGVMaXN0ID0gY29uc3RyYWludC5lbGVtZW50cygpOw0KICAgICAgICAgICAgfSBlbHNlIGlmIChj
aGVja2NvdW50ID4gMCAmJiBjb25zdHJhaW50LnNpemUoKSA+IDApIHsNCiAgICAgICAgICAgICAg
ICBsb2dnZXIud2Fybigic29tZSB0ZW1wbGF0ZXMgcmVxdWVzdGVkIGluIGNvbnN0cmFpbnQgYXJl
IG5vdCBwcmVzZW50ISIpOw0KICAgICAgICAgICAgICAgIHRlbXBsYXRlTGlzdCA9IGNvbnN0cmFp
bnQuZWxlbWVudHMoKTsNCiAgICAgICAgICAgIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgdGVt
cGxhdGVMaXN0ID0gYWxsLmVsZW1lbnRzKCk7DQogICAgICAgICAgICB9DQogICAgICAgIH0gZWxz
ZSB7DQogICAgICAgICAgICB0ZW1wbGF0ZUxpc3QgPSAoRW51bWVyYXRpb24pIGVuZ2luZU1hcC5n
ZXQoInRlbXBsYXRlTGlzdCIpOw0KICAgICAgICB9DQoNCg0KJT4NCjx0cj4NCiAgICA8JQ0KICAg
ICAgICBpZiAoY2FuRGlzcGxheVRlbXBsYXRlU2VsZWN0aW9uKSB7DQogICAgICAgICAgICBpZiAo
IXRlbXBsYXRlTGlzdC5oYXNNb3JlRWxlbWVudHMoKSkgeyAlPg0KICAgIDx0ZCBjb2xzcGFuPSIy
Ij4NCiAgICAgICAgJm5ic3A7VGhlJm5ic3A7dXNlciZuYnNwOzwlPWpQYXJhbXMuZ2V0VXNlcigp
LmdldFVzZXJuYW1lKCklPiZuYnNwO2hhcyZuYnNwO25vJm5ic3A7dGVtcGxhdGVzJm5ic3A7YWNj
ZXNzJm5ic3A7DQogICAgICAgIENhbm5vdCBjcmVhdGUgYSBuZXcgcGFnZSBvciBjaGFuZ2UgdGVt
cGxhdGUuDQogICAgPC90ZD4NCiAgICA8JSB9IGVsc2UgeyAlPg0KICAgIDx0ZCBjbGFzcz0idDMz
Ij4NCiAgICAgICAgPCUgaWYgKGlzTmV3UGFnZSkgeyAlPg0KICAgICAgICA8IS0tIENyZWF0ZSBh
IG5ldyBwYWdlIC0tPg0KICAgICAgICA8aW5wdXQgaWQ9ImRpcmVjdFBhZ2VSYWRpbyIgdHlwZT0i
cmFkaW8iIG5hbWU9Im9wZXJhdGlvbiIgdmFsdWU9IjwlPVBhZ2VfRmllbGQuQ1JFQVRFX1BBR0Ul
PiINCiAgICAgICAgPCUgaWYgKFBhZ2VfRmllbGQuQ1JFQVRFX1BBR0UuZXF1YWxzKHBhZ2VCZWFu
LmdldE9wZXJhdGlvbigpKSkgeyAlPiBjaGVja2VkPSJjaGVja2VkIjwlIH0gJT4NCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICBvbmZvY3VzPSJkb2N1bWVudC5tYWluRm9ybS5wYWdlVVJMS2V5LmRpc2FibGVk
ID0gZmFsc2UiPiZuYnNwOzxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAg
cmVzb3VyY2VOYW1lPSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5jcmVhdGVQ
YWdlVGVtcGxhdGUubGFiZWwiLz4NCiAgICAgICAgPCUgfSBlbHNlIHsgJT4NCiAgICAgICAgPGlu
cHV0IGlkPSJkaXJlY3RQYWdlUmFkaW8iIHR5cGU9InJhZGlvIiBuYW1lPSJvcGVyYXRpb24iIHZh
bHVlPSI8JT1QYWdlX0ZpZWxkLlVQREFURV9QQUdFJT4iDQogICAgICAgIDwlIGlmIChQYWdlX0Zp
ZWxkLlVQREFURV9QQUdFLmVxdWFscyhwYWdlQmVhbi5nZXRPcGVyYXRpb24oKSkpIHsgJT4gY2hl
Y2tlZD0iY2hlY2tlZCI8JSB9ICU+DQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb25mb2N1cz0iZG9jdW1l
bnQubWFpbkZvcm0ucGFnZVVSTEtleS5kaXNhYmxlZCA9IGZhbHNlIj4mbmJzcDs8amFoaWE6ZW5n
aW5lUmVzb3VyY2VCdW5kbGUNCiAgICAgICAgICAgIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVu
Z2luZXMuc2hhcmVkLlBhZ2VfRmllbGQuY2hhbmdlUGFnZVRlbXBsYXRlLmxhYmVsIi8+Jm5ic3A7
DQogICAgICAgIDwlIH0gJT4NCiAgICA8L3RkPg0KICAgIDx0ZCBjbGFzcz0idDQiPg0KICAgICAg
ICA8c2VsZWN0IG5hbWU9InRlbXBsYXRlX2lkIiBvbmZvY3VzPSJpZiAob3BlcmF0aW9uWzBdKSBv
cGVyYXRpb25bMF0uY2hlY2tlZCA9IHRydWUiPg0KICAgICAgICAgICAgPCUgd2hpbGUgKHRlbXBs
YXRlTGlzdC5oYXNNb3JlRWxlbWVudHMoKSkgew0KICAgICAgICAgICAgICAgIEphaGlhUGFnZURl
ZmluaXRpb24gdGhlVGVtcGxhdGUgPSAoSmFoaWFQYWdlRGVmaW5pdGlvbikgdGVtcGxhdGVMaXN0
Lm5leHRFbGVtZW50KCk7DQogICAgICAgICAgICAgICAgZmluYWwgU3RyaW5nIHRlbXBsYXRlTmFt
ZSA9IHRoZVRlbXBsYXRlLmdldE5hbWUoKTsNCiAgICAgICAgICAgICAgICBpZiAoIWNoZWNrZWRU
ZW1wbGF0ZXMpIHsNCiAgICAgICAgICAgICAgICAgICAgLy93ZSBoYXZlIHNvbWUgZXJyb3IgaW4g
bmFtZXMgcmVxdWVzdGVkLCBpZ25vcmluZyBhbmQgZGlzcGxheSBhcyB1c3VhbCENCiAgICAgICAg
ICAgICU+DQogICAgICAgICAgICA8b3B0aW9uIHRpdGxlPSI8JT10ZW1wbGF0ZU5hbWUlPiINCiAg
ICAgICAgICAgICAgICAgICAgdmFsdWU9IjwlPXRoZVRlbXBsYXRlLmdldElEKCklPiI8JSBpZiAo
dGhlVGVtcGxhdGUuZ2V0SUQoKSA9PSBwYWdlQmVhbi5nZXRQYWdlVGVtcGxhdGVJRCgpKSB7ICU+
DQogICAgICAgICAgICAgICAgICAgIHNlbGVjdGVkPSJzZWxlY3RlZCI8JSB9ICU+Pg0KICAgICAg
ICAgICAgICAgIDwlPXRlbXBsYXRlTmFtZSU+DQogICAgICAgICAgICA8L29wdGlvbj4NCiAgICAg
ICAgICAgIDwlIH0gZWxzZSB7DQogICAgICAgICAgICAgICAgLy8gdGVtcGxhdGVzIHJlcXVlc3Rl
ZCBhcmUgY2hla2VkDQogICAgICAgICAgICAgICAgaWYgKHRWbGlzdC5jb250YWlucyh0aGVUZW1w
bGF0ZS5nZXROYW1lKCkpKSB7DQogICAgICAgICAgICAlPg0KICAgICAgICAgICAgPG9wdGlvbiB0
aXRsZT0iPCU9dGVtcGxhdGVOYW1lJT4iDQogICAgICAgICAgICAgICAgICAgIHZhbHVlPSI8JT10
aGVUZW1wbGF0ZS5nZXRJRCgpJT4iPCUgaWYgKHRoZVRlbXBsYXRlLmdldElEKCkgPT0gcGFnZUJl
YW4uZ2V0UGFnZVRlbXBsYXRlSUQoKSkgeyAlPg0KICAgICAgICAgICAgICAgICAgICBzZWxlY3Rl
ZD0ic2VsZWN0ZWQiPCUgfSAlPj4NCiAgICAgICAgICAgICAgICA8JT10ZW1wbGF0ZU5hbWUlPg0K
ICAgICAgICAgICAgPC9vcHRpb24+DQogICAgICAgICAgICA8JQ0KICAgICAgICAgICAgICAgICAg
ICAgICAgfQ0KICAgICAgICAgICAgICAgICAgICB9DQogICAgICAgICAgICAgICAgfQ0KICAgICAg
ICAgICAgICAgIGlmICh0ZW1wbGF0ZU5vdEZvdW5kLmJvb2xlYW5WYWx1ZSgpKSB7ICU+DQogICAg
ICAgICAgICA8b3B0aW9uIHZhbHVlPSItMSIgc2VsZWN0ZWQ9InNlbGVjdGVkIj5UZW1wbGF0ZSBu
b3QgZm91bmQgISEhIERlbGV0ZWQgPzwvb3B0aW9uPg0KICAgICAgICAgICAgPCUgfSAlPg0KICAg
ICAgICA8L3NlbGVjdD4NCiAgICA8L3RkPg0KPC90cj4NCjwlDQogICAgICAgIH0NCiAgICB9DQog
ICAgLy8mJiBpc01vdmluZw0KICAgIGlmIChpc05ld1BhZ2UgJiYgaXNQYWdlTW92aW5nKSB7DQol
Pg0KPHRyPg0KICAgIDx0ZCBjbGFzcz0idDMzIj4NCiAgICAgICAgPCEtLSBNb3ZlIGFuIGV4aXN0
aW5nIGEgbmV3IHBhZ2UgLS0+DQogICAgICAgIDxpbnB1dCBpZD0ibW92ZVBhZ2VSYWRpbyIgdHlw
ZT0icmFkaW8iIG5hbWU9Im9wZXJhdGlvbiIgdmFsdWU9IjwlPVBhZ2VfRmllbGQuTU9WRV9QQUdF
JT4iDQogICAgICAgICAgICAgICBvbmNsaWNrPSJjYWxsU2VsZWN0UGFnZU1vdmUoKSINCiAgICAg
ICAgPCUgaWYgKFBhZ2VfRmllbGQuTU9WRV9QQUdFLmVxdWFscyhwYWdlQmVhbi5nZXRPcGVyYXRp
b24oKSkpIHsgJT4gY2hlY2tlZD0iY2hlY2tlZCI8JSB9ICU+DQogICAgICAgICAgICAgICAgPiZu
YnNwOzxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAgcmVzb3VyY2VOYW1l
PSJvcmcuamFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5tb3ZlRXhpc3RpbmdQYWdlLmxh
YmVsIi8+DQogICAgPC90ZD4NCiAgICA8dGQgY2xhc3M9InQ0Ij4NCg0KICAgICAgICA8YSBocmVm
PSJqYXZhc2NyaXB0OmNhbGxTZWxlY3RQYWdlTW92ZSgpIj48amFoaWE6ZW5naW5lUmVzb3VyY2VC
dW5kbGUNCiAgICAgICAgICAgICAgICByZXNvdXJjZU5hbWU9Im9yZy5qYWhpYS5lbmdpbmVzLnNo
YXJlZC5QYWdlX0ZpZWxkLnNlbGVjdFBhZ2VUb01vdmUubGFiZWwiLz48L2E+DQogICAgICAgIDxp
bnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Im1vdmVTb3VyY2VQYWdlSUQiIHZhbHVlPSI8JT1zb3Vy
Y2VQYWdlSUQlPiIvPg0KICAgICAgICA8JSBpZiAoUGFnZV9GaWVsZC5NT1ZFX1BBR0UuZXF1YWxz
KHBhZ2VCZWFuLmdldE9wZXJhdGlvbigpKSkgew0KICAgICAgICAgICAgaWYgKHNvdXJjZVBhZ2VJ
RCAhPSAtMSkgeyAlPg0KICAgICAgICA8dWw+DQogICAgICAgICAgICA8bGk+PCU9SmFoaWFUb29s
cy50ZXh0Mmh0bWwoc291cmNlVGl0bGUpJT4mbmJzcDsoPGphaGlhOmVuZ2luZVJlc291cmNlQnVu
ZGxlDQogICAgICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLnBhZ2VJZC5s
YWJlbCIvPjombmJzcDs8JT1zb3VyY2VQYWdlSUQlPikNCiAgICAgICAgICAgIDwvbGk+DQogICAg
ICAgIDwvdWw+DQogICAgICAgIDwlIH0gZWxzZSB7ICU+DQogICAgICAgIDxqYWhpYTplbmdpbmVS
ZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAgICAgIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVu
Z2luZXMuc2hhcmVkLlBhZ2VfRmllbGQubm9QYWdlU2VsZWN0ZWQubGFiZWwiLz4uDQogICAgICAg
IDwlDQogICAgICAgICAgICAgICAgfQ0KICAgICAgICAgICAgfSAlPg0KICAgIDwvdGQ+DQo8L3Ry
Pg0KPCUNCiAgICAgICAgfQ0KICAgIH0NCg0KLy8gUHJldmVudCBjaGFuZ2VzIGlmIHRoZSBhY3R1
YWwgcGFnZSBkaXNwbGF5ZWQgaW4gY29yZSBlbmdpbmUgaXMgdGhlIHNhbWUgYXMNCi8vIHRoZSBh
Y3R1YWwgZWRpdGVkIHBhZ2UgZmllbGQNCg0KICAgIGlmIChjYW5DaGFuZ2VUeXBlKSB7DQoNCi8v
IHRlc3QgaW50ZXJuYWwgY29uZGl0aW9uDQogICAgICAgIGlmIChpc0ludGVybmFsTGluayB8fCBp
c0xpbmtPbmx5KSB7ICU+DQo8dHI+DQogICAgPHRkIGNsYXNzPSJ0MzMiPg0KICAgICAgICA8aW5w
dXQgaWQ9ImxpbmtQYWdlUmFkaW8iIHR5cGU9InJhZGlvIiBuYW1lPSJvcGVyYXRpb24iIHZhbHVl
PSI8JT1QYWdlX0ZpZWxkLkxJTktfSkFISUFfUEFHRSU+Ig0KICAgICAgICAgICAgICAgb25jbGlj
az0iY2FsbFNlbGVjdFBhZ2VMaW5rKCkiDQogICAgICAgIDwlIGlmIChQYWdlX0ZpZWxkLkxJTktf
SkFISUFfUEFHRS5lcXVhbHMocGFnZUJlYW4uZ2V0T3BlcmF0aW9uKCkpKSB7ICU+IGNoZWNrZWQ9
ImNoZWNrZWQiPCUgfSAlPg0KICAgICAgICAgICAgICAgID4mbmJzcDs8amFoaWE6ZW5naW5lUmVz
b3VyY2VCdW5kbGUNCiAgICAgICAgICAgIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMu
c2hhcmVkLlBhZ2VfRmllbGQubGlua0V4aXN0aW5nUGFnZS5sYWJlbCIvPg0KICAgIDwvdGQ+DQog
ICAgPHRkIGNsYXNzPSJ0NCI+DQogICAgICAgIDxhIGhyZWY9ImphdmFzY3JpcHQ6Y2FsbFNlbGVj
dFBhZ2VMaW5rKCkiPjxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAgICAg
IHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQuc2VsZWN0
UGFnZVRvTGluay5sYWJlbCIvPjwvYT4NCg0KICAgICAgICA8aW5wdXQgdHlwZT0iaGlkZGVuIiBu
YW1lPSJsaW5rU291cmNlUGFnZUlEIiB2YWx1ZT0iPCU9c291cmNlUGFnZUlEJT4iLz4NCg0KICAg
ICAgICA8JQ0KICAgICAgICAgICAgaWYgKFBhZ2VfRmllbGQuTElOS19KQUhJQV9QQUdFLmVxdWFs
cyhwYWdlQmVhbi5nZXRPcGVyYXRpb24oKSkpIHsNCiAgICAgICAgICAgICAgICBpZiAoc291cmNl
UGFnZUlEICE9IC0xKSB7ICU+DQogICAgICAgIDx1bD4NCiAgICAgICAgICAgIDxsaT48JWRyYXdU
aW1lQmFzZWRQdWJsaXNoaW5nU3RhdHVzSWNvbih0aW1lQmFzZWRQdWJsaXNoaW5nT2JqZWN0LCBq
UGFyYW1zLCBwYWdlQ29udGV4dCk7JT4NCiAgICAgICAgICAgICAgICAmbmJzcDs8JT1KYWhpYVRv
b2xzLnRleHQyaHRtbChzb3VyY2VUaXRsZSklPiZuYnNwOyg8amFoaWE6ZW5naW5lUmVzb3VyY2VC
dW5kbGUNCiAgICAgICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lPSJvcmcuamFoaWEucGFnZUlk
LmxhYmVsIi8+OiZuYnNwOzwlPXNvdXJjZVBhZ2VJRCU+KQ0KICAgICAgICAgICAgPC9saT4NCiAg
ICAgICAgPC91bD4NCiAgICAgICAgPCUgfSBlbHNlIHsgJT4NCiAgICAgICAgPGphaGlhOmVuZ2lu
ZVJlc291cmNlQnVuZGxlDQogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lPSJvcmcuamFoaWEu
ZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5ub1BhZ2VTZWxlY3RlZC5sYWJlbCIvPi4NCiAgICAg
ICAgPCUgfSAlPg0KICAgICAgICA8JSB9ICU+DQogICAgPC90ZD4NCjwvdHI+DQo8JSB9ICU+DQo8
JSBpZiAoaXNFeHRlcm5hbExpbmsgfHwgaXNMaW5rT25seSkgeyAlPg0KPCEtLSBDcmVhdGUgYSBs
aW5rIHRvIGFuIGV4dGVybmFsIHdlYiBzaXRlIC0tPg0KPHRyPg0KICAgIDx0ZCBjbGFzcz0idDMz
Ij4NCiAgICAgICAgPGlucHV0IGlkPSJyZW1vdGVVUkxSYWRpbyIgdHlwZT0icmFkaW8iIG5hbWU9
Im9wZXJhdGlvbiIgdmFsdWU9IjwlPVBhZ2VfRmllbGQuTElOS19VUkwlPiINCiAgICAgICAgPCUg
aWYgKFBhZ2VfRmllbGQuTElOS19VUkwuZXF1YWxzKHBhZ2VCZWFuLmdldE9wZXJhdGlvbigpKSkg
eyAlPiBjaGVja2VkPSJjaGVja2VkIjwlIH0gJT4NCiAgICAgICAgPCUgaWYgKCFpc05ld1BhZ2Up
IHsgJT4gb25mb2N1cz0ic2V0UGFnZVVSTCgpIiA8JSB9ICU+DQogICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIG9uY2xpY2s9ImRvY3VtZW50Lm1haW5Gb3JtLnBhZ2VVUkxLZXkuZGlzYWJs
ZWQgPSAnZGlzYWJsZWQnIj4mbmJzcDs8amFoaWE6ZW5naW5lUmVzb3VyY2VCdW5kbGUNCiAgICAg
ICAgICAgIHJlc291cmNlTmFtZT0ib3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQu
Y3JlYXRlTGlua1RvRXh0ZXJuYWxTaXRlLmxhYmVsIi8+DQogICAgPC90ZD4NCiAgICA8dGQgY2xh
c3M9InQ0Ij4NCiAgICAgICAgPCEtLSBvcHRpb24gMSBpZiBsaW5rb25seSBwYWdlLCAzIGlmIHBh
Z2UgZG9lcyBub3QgZXhpc3QuIC0tPg0KICAgICAgICA8aW5wdXQgPCUgaWYgKGlzTmV3UGFnZSkg
eyAlPg0KICAgICAgICAgICAgICAgIG9uZm9jdXM9Im9wZXJhdGlvbls8JT0gaXNMaW5rT25seSA/
IDEgOiAzICU+XS5jaGVja2VkID0gdHJ1ZSINCiAgICAgICAgPCUgfSAlPg0KICAgICAgICAgICAg
ICAgIHR5cGU9InRleHQiIG5hbWU9InJlbW90ZV91cmwiIHNpemU9IjUwIg0KICAgICAgICAgICAg
ICAgIHZhbHVlPSI8JT1yZW1vdGVVUkwlPiIgbWF4bGVuZ3RoPSIyNTAiPg0KICAgICAgICA8IS0t
IFJlc2V0IHRoZSBsaW5rIC0tPg0KICAgIDwvdGQ+DQo8L3RyPg0KPCUNCiAgICB9DQoNCiAgICBp
ZiAoaXNOZXdQYWdlIHx8ICgoSmFoaWFQYWdlKSB0aGVGaWVsZC5nZXRPYmplY3QoKSkuZ2V0UGFn
ZVR5cGUoKSAhPSBDb250ZW50UGFnZS5UWVBFX0RJUkVDVCkgeyAlPg0KPHRyPg0KICAgIDx0ZCBj
bGFzcz0idDMzIj4NCiAgICAgICAgPGlucHV0IGlkPSJub1ZhbHVlUmFkaW8iIHR5cGU9InJhZGlv
IiBuYW1lPSJvcGVyYXRpb24iDQogICAgICAgICAgICAgICBvbmZvY3VzPSJkb2N1bWVudC5tYWlu
Rm9ybS5wYWdlX3RpdGxlLnZhbHVlID0gJyc7ZG9jdW1lbnQubWFpbkZvcm0ucGFnZVVSTEtleS5k
aXNhYmxlZCA9ICdkaXNhYmxlZCc7Ig0KICAgICAgICAgICAgICAgdmFsdWU9IjwlPVBhZ2VfRmll
bGQuUkVTRVRfTElOSyU+Ig0KICAgICAgICA8JQ0KDQoNCiAgICAgICAgaWYgKFBhZ2VfRmllbGQu
UkVTRVRfTElOSy5lcXVhbHMocGFnZUJlYW4uZ2V0T3BlcmF0aW9uKCkpKSB7DQoNCg0KICAgICAg
ICAlPiBjaGVja2VkPSJjaGVja2VkIjwlIH0gJT4+DQogICAgICAgIDwlIGlmIChpc05ld1BhZ2Up
IHsgJT4NCiAgICAgICAgPGphaGlhOmVuZ2luZVJlc291cmNlQnVuZGxlIHJlc291cmNlTmFtZT0i
b3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQuZGlmZmVyUGFnZUNyZWF0aW9uLmxh
YmVsIi8+DQogICAgICAgIDwlIH0gZWxzZSB7ICU+DQogICAgICAgIDxqYWhpYTplbmdpbmVSZXNv
dXJjZUJ1bmRsZSByZXNvdXJjZU5hbWU9Im9yZy5qYWhpYS5lbmdpbmVzLnNoYXJlZC5QYWdlX0Zp
ZWxkLnJlbW92ZVBhZ2VMaW5rLmxhYmVsIi8+DQogICAgICAgIDwlIH0gJT4NCiAgICA8L3RkPg0K
ICAgIDx0ZCBjbGFzcz0idDQiPg0KICAgICAgICA8JSBpZiAoaXNOZXdQYWdlKSB7ICU+DQogICAg
ICAgIDxqYWhpYTplbmdpbmVSZXNvdXJjZUJ1bmRsZQ0KICAgICAgICAgICAgICAgIHJlc291cmNl
TmFtZT0ib3JnLmphaGlhLmVuZ2luZXMuc2hhcmVkLlBhZ2VfRmllbGQuZGlmZmVyUGFnZUNyZWF0
aW9uQm9keS5sYWJlbCIvPi4NCiAgICAgICAgPCUgfSBlbHNlIHsgJT4NCiAgICAgICAgPGphaGlh
OmVuZ2luZVJlc291cmNlQnVuZGxlDQogICAgICAgICAgICAgICAgcmVzb3VyY2VOYW1lPSJvcmcu
amFoaWEuZW5naW5lcy5zaGFyZWQuUGFnZV9GaWVsZC5yZW1vdmVQYWdlTGlua0JvZHkubGFiZWwi
Lz4uDQogICAgICAgIDwlIH0gJT4NCiAgICA8L3RkPg0KPC90cj4NCg0KPCUgfQ0KfSAlPg0KPC90
YWJsZT4NCg0KPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiPg0KICAgIGZ1bmN0aW9uIHNl
dGZvY3VzKCkgew0KICAgICAgICBkb2N1bWVudC5tYWluRm9ybS5lbGVtZW50c1sicGFnZV90aXRs
ZSJdLnNlbGVjdCgpOw0KICAgIH0NCiAgICBzZXRmb2N1cygpOw0KPC9zY3JpcHQ+DQoNCjwlIGlm
IChpc0xpbmtPbmx5ICYmIFBhZ2VfRmllbGQuTElOS19KQUhJQV9QQUdFLmVxdWFscyhwYWdlQmVh
bi5nZXRPcGVyYXRpb24oKSkgJiYgc291cmNlUGFnZUlEID09IC0xKSB7DQogICAgcGFnZUJlYW4u
c2V0T3BlcmF0aW9uKFBhZ2VfRmllbGQuUkVTRVRfTElOSyk7DQolPg0KPHNjcmlwdCB0eXBlPSJ0
ZXh0L2phdmFzY3JpcHQiPg0KICAgIGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKCJub1ZhbHVlUmFk
aW8iKS5jaGVja2VkID0gdHJ1ZTsNCiAgICBkb2N1bWVudC5nZXRFbGVtZW50QnlJZCgibm9WYWx1
ZVJhZGlvIikuc2VsZWN0KCk7DQo8L3NjcmlwdD4NCjwlIH0gJT4=
--0016363b99223dd2b50463377e19
Content-Type: text/plain; charset="us-ascii"
MIME-Version: 1.0
Content-Transfer-Encoding: 7bit
Content-Disposition: inline
_______________________________________________
template_list mailing list
[email protected]
http://lists.jahia.org/cgi-bin/mailman/listinfo/template_list
--0016363b99223dd2b50463377e19--