<?xml version="1.0" encoding="UTF-8" standalone="yes" ?>
<!DOCTYPE bugzilla SYSTEM "https://bugs.webkit.org/page.cgi?id=bugzilla.dtd">

<bugzilla version="5.0.4.1"
          urlbase="https://bugs.webkit.org/"
          
          maintainer="admin@webkit.org"
>

    <bug>
          <bug_id>109282</bug_id>
          
          <creation_ts>2013-02-08 03:40:37 -0800</creation_ts>
          <short_desc>Web Inspector: Introduce workspace provider/project type, encapsulate uri creation in SimpleWorkspaceProvider.</short_desc>
          <delta_ts>2013-02-08 06:12:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector (Deprecated)</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>vsevik</cc>
    
    <cc>web-inspector-bugs</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>828399</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-08 03:40:37 -0800</bug_when>
    <thetext>SimpleWorkspaceProvider now fully takes care of creating uri based on project/workspace provider type.
This is the first step on the way to project-per-domain mode for non file system project types.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828402</commentid>
    <comment_count>1</comment_count>
      <attachid>187282</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-08 03:45:49 -0800</bug_when>
    <thetext>Created attachment 187282
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828409</commentid>
    <comment_count>2</comment_count>
      <attachid>187284</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-08 03:55:56 -0800</bug_when>
    <thetext>Created attachment 187284
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828410</commentid>
    <comment_count>3</comment_count>
      <attachid>187285</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-08 04:00:19 -0800</bug_when>
    <thetext>Created attachment 187285
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828430</commentid>
    <comment_count>4</comment_count>
      <attachid>187285</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2013-02-08 04:40:35 -0800</bug_when>
    <thetext>Comment on attachment 187285
Patch

View in context: https://bugs.webkit.org/attachment.cgi?id=187285&amp;action=review

&gt; Source/WebCore/ChangeLog:11
&gt; +        Drive-by: ScriptsPanel now uses FileMApping to show anchor location properly.

FileMapping

&gt; Source/WebCore/inspector/front-end/SimpleWorkspaceProvider.js:141
&gt; +

odd line

&gt; Source/WebCore/inspector/front-end/Workspace.js:337
&gt; +                result = result.concat(project.uiSourceCodes());

result.push.apply(result, project.uiSourceCodes());</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>828503</commentid>
    <comment_count>5</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2013-02-08 06:12:34 -0800</bug_when>
    <thetext>Committed r142269: &lt;http://trac.webkit.org/changeset/142269&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187282</attachid>
            <date>2013-02-08 03:45:49 -0800</date>
            <delta_ts>2013-02-08 03:55:52 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109282-20130208154223.patch</filename>
            <type>text/plain</type>
            <size>45303</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI0MTlmNmY5ZjkyMDg4
MmZmZjZmZmJhYWE0M2I1MmU2ZDFhMWVjNy4uNmU3MjU0MDI2MjhiNmE5MWI0ZGU4ZWUyZWJhNDJh
NTdlNWFjNjkxYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDU5IEBACiAyMDEzLTAyLTA3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSB3b3Jrc3BhY2UgcHJvdmlkZXIvcHJvamVjdCB0eXBlLCBlbmNhcHN1bGF0
ZSB1cmkgY3JlYXRpb24gaW4gU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGVXb3Jrc3BhY2VQcm92aWRl
ciBub3cgZnVsbHkgdGFrZXMgY2FyZSBvZiBjcmVhdGluZyB1cmkgYmFzZWQgb24gcHJvamVjdC93
b3Jrc3BhY2UgcHJvdmlkZXIgdHlwZS4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBv
biB0aGUgd2F5IHRvIHByb2plY3QtcGVyLWRvbWFpbiBtb2RlIGZvciBub24gZmlsZSBzeXN0ZW0g
cHJvamVjdCB0eXBlcy4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFNj
cmlwdE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuRGVmYXVsdFNjcmlwdE1hcHBp
bmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5nLnByb3RvdHlw
ZS5hZGRTY3JpcHQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2Vy
dmVyLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkV4dGVuc2lvblNlcnZlci5wcm90b3R5cGUu
X29uR2V0UGFnZVJlc291cmNlcyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxl
TWFwcGluZy5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlTWFwcGluZy5wcm90b3R5cGUu
dXJpRm9yVVJMKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jr
c3BhY2VQcm92aWRlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtV29ya3Nw
YWNlUHJvdmlkZXIucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvSmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkphdmFT
Y3JpcHRTb3VyY2VGcmFtZS5wcm90b3R5cGUuX3N1cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRzV2hp
bGVFZGl0aW5nKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9y
dC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLkxpdmVFZGl0U3VwcG9ydC5wcm90b3R5cGUudWlTb3VyY2VDb2RlRm9yTGl2
ZUVkaXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVs
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZS5fYWRkU2NyaXB0U25p
cHBldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpz
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlLl9uYXZp
Z2F0b3JWaWV3Rm9yVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLnByb3RvdHlwZS5yZXZlYWxVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX2hhbmRsZUV2YWx1YXRlU25p
cHBldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3Rv
dHlwZS5faGFuZGxlUmVtb3ZlU25pcHBldCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRzUGFuZWwuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlLl9wcm9qZWN0V2lsbFJlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLmNhblNob3dBbmNob3JMb2NhdGlvbik6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fY3JlYXRlU291cmNlRnJhbWUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuc2V0IF9maWxl
UmVuYW1lZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRl
cik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9y
VVJMKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90
b3R5cGUudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlk
ZXIucHJvdG90eXBlLmFkZEZpbGVGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBs
ZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS5hZGRVbmlxdWVGaWxlRm9yVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUuX2lubmVy
QWRkRmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIucHJvdG90eXBlLl91bmlxdWVVUkkpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvV29ya3NwYWNlLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVy
LnByb3RvdHlwZS50eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlw
ZS50eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZS5pc1NlcnZp
Y2VQcm9qZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlLnVp
U291cmNlQ29kZUZvck9yaWdpblVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuV29ya3NwYWNl
LnByb3RvdHlwZS51aVNvdXJjZUNvZGVzRm9yUHJvamVjdFR5cGUpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCisyMDEzLTAyLTA3ICBWc2V2b2xvZCBWbGFz
b3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNwZWN0b3I6IFJlcGxh
Y2Ugd29ya3NwYWNlIHdpdGggcHJvamVjdCBpbiBVSVNvdXJjZUNvZGUgY29uc3RydWN0b3IuCiAg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyNTYKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0U2Ny
aXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVs
dFNjcmlwdE1hcHBpbmcuanMKaW5kZXggNjA3YTU4MTM3YzhkMDBlYTNiZTI0NDFkZTdlNWUwNThl
YzNkNThkMC4uNTZhNmJiM2M4NDcyOGE2NjU4MDMyOTcyMzQ3NDJkYWYzOTJkNGFlYyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0U2NyaXB0TWFw
cGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRT
Y3JpcHRNYXBwaW5nLmpzCkBAIC0zNSw5ICszNSw3IEBACiAgKi8KIFdlYkluc3BlY3Rvci5EZWZh
dWx0U2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKIHsKLSAgICB0aGlzLl93b3Jr
c3BhY2UgPSB3b3Jrc3BhY2U7Ci0gICAgdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMuX3dvcmtzcGFjZSk7Ci0gICAg
d29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5EZWJ1Z2dlciwg
dGhpcy5fd29ya3NwYWNlUHJvdmlkZXIpOworICAgIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UsIFdlYklu
c3BlY3Rvci5wcm9qZWN0VHlwZXMuRGVidWdnZXIpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dl
ck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRz
Lkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMuX2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwogICAgIHRo
aXMuX2RlYnVnZ2VyUmVzZXQoKTsKIH0KQEAgLTc2LDkgKzc0LDcgQEAgV2ViSW5zcGVjdG9yLkRl
ZmF1bHRTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9u
KHNjcmlwdCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBzY3JpcHQuaXNJ
bmxpbmVTY3JpcHQoKSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0ZW5hdGVkU2NyaXB0c0NvbnRl
bnRQcm92aWRlcihbc2NyaXB0XSkgOiBzY3JpcHQ7Ci0gICAgICAgIHZhciB1cmkgPSAiZGVidWdn
ZXI6IiArIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwoc2Ny
aXB0LnNvdXJjZVVSTCk7Ci0gICAgICAgIHZhciB1bmlxdWVVUkkgPSB0aGlzLl93b3Jrc3BhY2VQ
cm92aWRlci51bmlxdWVVUkkodXJpKTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMu
X3dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGUodW5pcXVlVVJJLCBzY3JpcHQuc291cmNlVVJMLCBj
b250ZW50UHJvdmlkZXIsIGZhbHNlLCBzY3JpcHQuaXNDb250ZW50U2NyaXB0KTsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLmFkZFVuaXF1ZUZpbGVG
b3JVUkwoc2NyaXB0LnNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyLCBmYWxzZSwgc2NyaXB0Lmlz
Q29udGVudFNjcmlwdCk7CiAKICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
c2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKICAgICAgICAgdGhpcy5fc2NyaXB0SWRG
b3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgc2NyaXB0LnNjcmlwdElkKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5zaW9uU2VydmVy
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIu
anMKaW5kZXggYzExNjFiZTI4ZDE2OGQ0NDYxODNmNzUxYTViYzllNDIyMjliOTY0Yi4uYzkzOWU5
OWEwMmRiNDhkOTU5YmExZDNlNzI5MjgxZGQ3YjhlNmU3NiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2ZXIuanMKQEAgLTQ0Miw3
ICs0NDIsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVyLnByb3RvdHlwZSA9IHsKICAg
ICAgICAgICAgIGlmICghcmVzb3VyY2VzW2NvbnRlbnRQcm92aWRlci5jb250ZW50VVJMKCldKQog
ICAgICAgICAgICAgICAgIHJlc291cmNlc1tjb250ZW50UHJvdmlkZXIuY29udGVudFVSTCgpXSA9
IHRoaXMuX21ha2VSZXNvdXJjZShjb250ZW50UHJvdmlkZXIpOwogICAgICAgICB9Ci0gICAgICAg
IHZhciB1aVNvdXJjZUNvZGVzID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS5wcm9qZWN0KFdlYklu
c3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaykudWlTb3VyY2VDb2RlcygpOworICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UucHJvamVjdChXZWJJbnNw
ZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspLnVpU291cmNlQ29kZXMoKTsKICAgICAgICAgdWlT
b3VyY2VDb2Rlcy5mb3JFYWNoKHB1c2hSZXNvdXJjZURhdGEuYmluZCh0aGlzKSk7CiAgICAgICAg
IFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxSZXNvdXJjZXMocHVzaFJlc291
cmNlRGF0YS5iaW5kKHRoaXMpKTsKICAgICAgICAgcmV0dXJuIE9iamVjdC52YWx1ZXMocmVzb3Vy
Y2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYXBw
aW5nLmpzCmluZGV4IDYwZDliMWFkZDZlZWVkMjUyMzYyZDljYWYwMjE4NTMzNWI2YTFkZGEuLjBl
ZDI0OWJkMTUyMmYzNDY3ODE3ZDk3YWE1MTE4ZjdlMmViYTgyZmUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcwpAQCAtOTEsOCArOTEs
NyBAQCBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IHVyaUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAgICAgLy8gRklYTUU6IEZpbGVN
YXBwaW5nIHNob3VsZCBiZSBuZXR3b3JrIHByb2plY3QgYXdhcmUuIEl0IHNob3VsZCByZXR1cm4g
Y29ycmVjdCB1cmkgZm9yIG5ldHdvcmsgcHJvamVjdCB1aVNvdXJjZUNvZGVzLgotICAgICAgICBy
ZXR1cm4gdGhpcy5faW5uZXJVUklGb3JVUkwodXJsKSB8fCB1cmw7CisgICAgICAgIHJldHVybiB0
aGlzLl9pbm5lclVSSUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlci51cmlGb3JVUkwodXJsLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmsp
OwogICAgIH0sCiAgICAgCiAgICAgLyoqCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpz
CmluZGV4IDYwYmNkYTA4NWI4MWNkNjZlYmUxNTlkMzY4MmQ1ZTg2ODlkMGI1YTMuLjU4ZWZiMGI1
OTI1Y2E1YTQ1YWViZTMzNmFhMjczN2E0ZDVkNmQ1OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtzcGFj
ZVByb3ZpZGVyLmpzCkBAIC0zMyw2ICszMyw3IEBACiAgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVj
dG9yLldvcmtzcGFjZVByb3ZpZGVyfQogICogQGV4dGVuZHMge1dlYkluc3BlY3Rvci5PYmplY3R9
CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbH0gaXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBmaWxlU3lzdGVtUGF0aAogICov
CiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyID0gZnVuY3Rpb24oaXNv
bGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoKQogewpAQCAtNDYsNiArNDcsMTQg
QEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5fc2NyaXB0RXh0ZW5z
aW9ucyA9IFsianMiLCAiamF2YSIsICJjYyIKIAogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jr
c3BhY2VQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQHJldHVybiB7c3Ry
aW5nfQorICAgICAqLworICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVy
biBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkZpbGVTeXN0ZW07CisgICAgfSwKKworICAgIC8q
KgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9z
dHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwppbmRleCBmYmEyNWViOGNiMzRjZGM4MzM4MDJmZDQ4ODIxNDFkNDZjYzRlNDRkLi5kMzMx
MTJhZjFiNGQ1YThlM2M1NTVlZWJkMjdjZWI1OWI0OTYyNjIwIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFt
ZS5qcwpAQCAtMjM0LDcgKzIzNCw3IEBAIFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJh
bWUucHJvdG90eXBlID0gewogCiAgICAgX3N1cHBvcnRzRW5hYmxlZEJyZWFrcG9pbnRzV2hpbGVF
ZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VD
b2RlLnByb2plY3QoKS5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBl
dHM7CisgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGUucHJvamVjdCgpLnR5cGUoKSA9
PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0czsKICAgICB9LAogCiAgICAgX3Jl
c3RvcmVCcmVha3BvaW50c0FmdGVyRWRpdGluZzogZnVuY3Rpb24oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanMgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9ydC5qcwppbmRleCA1
NTY4YWQ5MDY0MjAwZmVkMTI3MjljZjM4N2MwYjMyZmVlZjMxYTU5Li45YTQ5Y2Y4OGY5NTNiMjZj
Y2VmYWNjNTJkYjVhOTAzOWRlZWUwNDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9ydC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9ydC5qcwpAQCAtMzQsOSArMzQsNyBAQAog
ICovCiBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0ID0gZnVuY3Rpb24od29ya3NwYWNlKQog
ewotICAgIHRoaXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsKLSAgICB0aGlzLl93b3Jrc3BhY2VQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIodGhpcy5f
d29ya3NwYWNlKTsKLSAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVj
dE5hbWVzLkxpdmVFZGl0LCB0aGlzLl93b3Jrc3BhY2VQcm92aWRlcik7CisgICAgdGhpcy5fd29y
a3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVy
KHdvcmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5MaXZlRWRpdCk7CiAgICAgV2Vi
SW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVi
dWdnZXJNb2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwgdGhpcy5fZGVidWdnZXJSZXNl
dCwgdGhpcyk7CiAgICAgdGhpcy5fZGVidWdnZXJSZXNldCgpOwogfQpAQCAtNjAsOSArNTgsNyBA
QCBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAg
IHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwog
CiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSk7Ci0gICAg
ICAgIHZhciB1cmkgPSAibGl2ZWVkaXQ6IiArIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlci51cmlGb3JVUkwodWlTb3VyY2VDb2RlLnVybCk7Ci0gICAgICAgIHZhciB1bmlxdWVV
UkkgPSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci51bmlxdWVVUkkodXJpKTsKLSAgICAgICAgdmFy
IGxpdmVFZGl0VUlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZSh1
bmlxdWVVUkksIHVpU291cmNlQ29kZS51cmwsIHNjcmlwdCwgdHJ1ZSk7CisgICAgICAgIHZhciBs
aXZlRWRpdFVJU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLmFkZFVuaXF1ZUZp
bGVGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCwgc2NyaXB0LCB0cnVlLCBzY3JpcHQuaXNDb250ZW50
U2NyaXB0KTsKIAogICAgICAgICBsaXZlRWRpdFVJU291cmNlQ29kZS5zZXRTY3JpcHRGaWxlKG5l
dyBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTY3JpcHRGaWxlKHVpU291cmNlQ29kZSwgbGl2ZUVkaXRV
SVNvdXJjZUNvZGUsIHNjcmlwdC5zY3JpcHRJZCkpOwogICAgICAgICB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gbGl2ZUVkaXRVSVNvdXJjZUNvZGU7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBw
ZXRNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25p
cHBldE1vZGVsLmpzCmluZGV4IGYyNjUyMzk3YmYxMTBjMWExNDViNGUwNDgyMTk2MzI2MWZmZmE3
NzkuLmYwMTkzMTcyYjkxMzRmMWYyOGRlNzU3MTQ3ZWNkOTc3ODllMWRmOTEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpz
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1v
ZGVsLmpzCkBAIC00Niw4ICs0Niw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwg
PSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAgICAgdGhpcy5fc25pcHBldFN0b3JhZ2UgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNuaXBwZXRTdG9yYWdlKCJzY3JpcHQiLCAiU2NyaXB0IHNuaXBwZXQgIyIpOwog
ICAgIHRoaXMuX2xhc3RTbmlwcGV0RXZhbHVhdGlvbkluZGV4U2V0dGluZyA9IFdlYkluc3BlY3Rv
ci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJsYXN0U25pcHBldEV2YWx1YXRpb25JbmRleCIsIDAp
OwogICAgIHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5Tbmlw
cGV0U2NyaXB0TWFwcGluZyh0aGlzKTsKLSAgICB0aGlzLl93b3Jrc3BhY2VQcm92aWRlciA9IG5l
dyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIodGhpcy5fd29ya3NwYWNlKTsK
LSAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLlNuaXBw
ZXRzLCB0aGlzLl93b3Jrc3BhY2VQcm92aWRlcik7CisgICAgdGhpcy5fd29ya3NwYWNlUHJvdmlk
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMuX3dvcmtz
cGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0cyk7CiAgICAgdGhpcy5yZXNl
dCgpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMu
X2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwogfQpAQCAtODMsNyArODIsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfYWRkU2NyaXB0
U25pcHBldDogZnVuY3Rpb24oc25pcHBldCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNv
ZGUgPSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKHNuaXBwZXQubmFtZSwgc25pcHBl
dC5uYW1lLCBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIoc25pcHBldCks
IHRydWUpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlUHJvdmlk
ZXIuYWRkRmlsZUZvclVSTChzbmlwcGV0Lm5hbWUsIG5ldyBXZWJJbnNwZWN0b3IuU25pcHBldENv
bnRlbnRQcm92aWRlcihzbmlwcGV0KSwgdHJ1ZSk7CiAgICAgICAgIHZhciBzY3JpcHRGaWxlID0g
bmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0U2NyaXB0RmlsZSh0aGlzLCB1aVNvdXJjZUNvZGUpOwog
ICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3JpcHRGaWxlKTsKICAgICAgICAg
dGhpcy5fc25pcHBldElkRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNuaXBwZXQu
aWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3Jp
cHRzTmF2aWdhdG9yLmpzCmluZGV4IGMwZTczYjYxNDM5ZGM1YjQxODFkYjA3YTMyYWRhZTA2NGU5
ZTA4ZmMuLjVkZTk1OWNjODIxOTIyODZlOTAxYzE1ODE5YTAwMWQ4NWM3MmMwMTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNOYXZpZ2F0
b3IuanMKQEAgLTg0LDcgKzg0LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJv
dG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3Jp
cHQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFNjcmlwdHNWaWV3OwotICAgICAg
ICBlbHNlIGlmICh1aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUoKSA9PT0gV2ViSW5zcGVjdG9y
LnByb2plY3ROYW1lcy5TbmlwcGV0cykKKyAgICAgICAgZWxzZSBpZiAodWlTb3VyY2VDb2RlLnBy
b2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBldHMpCiAg
ICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNWaWV3OwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0c1ZpZXc7CkBAIC0xMTQsNyArMTE0LDcgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewogICAgICAgICB0aGlzLl9u
YXZpZ2F0b3JWaWV3Rm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSkucmV2ZWFsVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNDb250ZW50U2Ny
aXB0KQogICAgICAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIoV2ViSW5zcGVjdG9y
LlNjcmlwdHNOYXZpZ2F0b3IuQ29udGVudFNjcmlwdHNUYWIpOwotICAgICAgICBlbHNlIGlmICh1
aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1l
cy5TbmlwcGV0cykKKyAgICAgICAgZWxzZSBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBl
KCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBldHMpCiAgICAgICAgICAgICB0
aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYihXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5T
bmlwcGV0c1RhYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHRoaXMuX3RhYmJlZFBhbmUu
c2VsZWN0VGFiKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLlNjcmlwdHNUYWIpOwpAQCAt
MjEwLDcgKzIxMCw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90
eXBlID0gewogICAgICAqLwogICAgIF9oYW5kbGVFdmFsdWF0ZVNuaXBwZXQ6IGZ1bmN0aW9uKHVp
U291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnByb2plY3QoKS5u
YW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMpCisgICAgICAgIGlm
ICghdWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0
VHlwZXMuU25pcHBldHMpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIFdlYkluc3BlY3Rv
ci5zY3JpcHRTbmlwcGV0TW9kZWwuZXZhbHVhdGVTY3JpcHRTbmlwcGV0KHVpU291cmNlQ29kZSk7
CiAgICAgfSwKQEAgLTIyOCw3ICsyMjgsNyBAQCBXZWJJbnNwZWN0b3IuU25pcHBldHNOYXZpZ2F0
b3JWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaGFuZGxlUmVtb3ZlU25pcHBldDog
ZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUu
cHJvamVjdCgpLm5hbWUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5TbmlwcGV0cykK
KyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUucHJvamVjdCgpLnR5cGUoKSA9PT0gV2ViSW5zcGVj
dG9yLnByb2plY3RUeXBlcy5TbmlwcGV0cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAg
V2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5kZWxldGVTY3JpcHRTbmlwcGV0KHVpU291
cmNlQ29kZSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNjk4NDZkNjliYWI1ZDY2ZjA3MDdkZThiYWQyM2Q4
ZDZjYTI4ZjhlYy4uMWEwYWI1NGE0MzExMjE3NDAxYWM5YmU3YjhlYzBmMjg4MzJhOTZmNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwu
anMKQEAgLTIzOSw3ICsyMzksNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlw
ZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl90b2dnbGVGb3JtYXRTb3VyY2VCdXR0b24u
dG9nZ2xlZCkKICAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRGb3JtYXR0ZWQodHJ1ZSk7Ci0g
ICAgICAgIHZhciBwcm9qZWN0TmFtZSA9IHVpU291cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpOwog
ICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS5pc1NlcnZpY2VQcm9qZWN0KCkpCiAg
ICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX25hdmlnYXRvci5hZGRVSVNvdXJjZUNv
ZGUodWlTb3VyY2VDb2RlKTsKQEAgLTM2MSw3ICszNjAsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHByb2plY3QgPSBldmVudC5kYXRhOwog
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHByb2plY3QudWlTb3VyY2VDb2RlcygpOwogICAg
ICAgICB0aGlzLl9yZW1vdmVVSVNvdXJjZUNvZGVzKHVpU291cmNlQ29kZXMpOwotICAgICAgICBp
ZiAocHJvamVjdC5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaykK
KyAgICAgICAgaWYgKHByb2plY3QudHlwZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVz
Lk5ldHdvcmspCiAgICAgICAgICAgICB0aGlzLl9lZGl0b3JDb250YWluZXIucmVzZXQoKTsKICAg
ICB9LAogCkBAIC0zODYsMTIgKzM4NSwxMSBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2Rl
bC5kZWJ1Z2dlckVuYWJsZWQoKSAmJiBhbmNob3IudWlTb3VyY2VDb2RlKQogICAgICAgICAgICAg
cmV0dXJuIHRydWU7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gdGhpcy5fd29ya3NwYWNl
LnByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrKS51aVNvdXJjZUNvZGVz
KCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsr
aSkgewotICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZXNbaV0ub3JpZ2luVVJMKCkgPT09IGFu
Y2hvci5ocmVmKSB7Ci0gICAgICAgICAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpU291
cmNlQ29kZXNbaV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgICAgICB9
CisgICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0b3IuZmlsZU1hcHBpbmcudXJpRm9yVVJMKGFu
Y2hvci5ocmVmKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS51
aVNvdXJjZUNvZGVGb3JVUkkodXJpKTsKKyAgICAgICAgaWYgKHVpU291cmNlQ29kZSkgeworICAg
ICAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgICAg
IHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9LApA
QCAtNDU1LDcgKzQ1Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0g
ewogICAgICAgICB2YXIgc291cmNlRnJhbWU7CiAgICAgICAgIHN3aXRjaCAodWlTb3VyY2VDb2Rl
LmNvbnRlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBl
cy5TY3JpcHQ6Ci0gICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS5uYW1lKCkg
PT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMpCisgICAgICAgICAgICBpZiAo
dWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlw
ZXMuU25pcHBldHMpCiAgICAgICAgICAgICAgICAgc291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVj
dG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlRnJhbWUodGhpcywgdWlTb3VyY2VDb2RlKTsKICAg
ICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzb3VyY2VGcmFtZSA9IG5ldyBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lKHRoaXMsIHVpU291cmNlQ29kZSk7CkBAIC0xMDM0
LDcgKzEwMzIsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAg
ICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29kZSk7CiAgICAgICAgIHZhciBu
YW1lID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRhLm5hbWUpOwotICAgICAgICBp
ZiAoIXVpU291cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVj
dE5hbWVzLlNuaXBwZXRzKQorICAgICAgICBpZiAoIXVpU291cmNlQ29kZS5wcm9qZWN0KCkudHlw
ZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLlNuaXBwZXRzKQogICAgICAgICAgICAg
cmV0dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLnJlbmFtZVNj
cmlwdFNuaXBwZXQodWlTb3VyY2VDb2RlLCBuYW1lKTsKICAgICB9LApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5q
cyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIuanMKaW5kZXggYzc1NDcwMTUzNjdkOGNlMjNjODYyYmViNGVhOTdhNTFiOWVkMGQ4Ni4u
MzE3MGU5MDQ1ZTZiOTgwMjY3NzQyMWQyYmE1NzQzMGVhNzAwYmM2NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NpbXBsZVdvcmtzcGFj
ZVByb3ZpZGVyLmpzCkBAIC0zMiwyNyArMzIsNDEgQEAKICAqIEBjb25zdHJ1Y3RvcgogICogQGlt
cGxlbWVudHMge1dlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlcn0KICAqIEBleHRlbmRzIHtX
ZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNlfSB3
b3Jrc3BhY2UKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgKi8KLVdlYkluc3BlY3Rvci5TaW1w
bGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKK1dlYkluc3BlY3Rvci5T
aW1wbGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtzcGFjZSwgdHlwZSkKIHsKICAg
ICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhpcy5fdHlwZSA9IHR5cGU7CiAg
ICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRl
cj59ICovCiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVycyA9IHt9OwogICAgIHRoaXMuX2xhc3RV
bmlxdWVTdWZmaXggPSAwOworICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRQcm9qZWN0KHRoaXMuX3R5
cGUsIHRoaXMpOwogfQogCiAvKioKICAqIEBwYXJhbSB7c3RyaW5nfSB1cmwKKyAqIEBwYXJhbSB7
c3RyaW5nfSB0eXBlCiAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgKi8KLVdlYkluc3BlY3Rvci5TaW1w
bGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwgPSBmdW5jdGlvbih1cmwpCitXZWJJbnNwZWN0
b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMID0gZnVuY3Rpb24odXJsLCB0eXBl
KQogewotICAgIHZhciB1cmkgPSB1cmw7CisgICAgdmFyIHVyaVR5cGVQcmVmaXggPSB0eXBlICE9
PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmsgPyAodHlwZSArICI6IikgOiAiIjsK
KyAgICB2YXIgdXJpID0gdXJpVHlwZVByZWZpeCArIHVybDsKICAgICByZXR1cm4gdXJpOwogfSwK
IAogV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdHlwZTogZnVuY3Rp
b24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7CisgICAgfSwKKworICAgIC8q
KgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9z
dHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwpAQCAtODQsMjAgKzk4LDI2
IEBAIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUgPSB7CiAg
ICAgICAgIGNvbnRlbnRQcm92aWRlci5zZWFyY2hJbkNvbnRlbnQocXVlcnksIGNhc2VTZW5zaXRp
dmUsIGlzUmVnZXgsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAvKioKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVy
fSBjb250ZW50UHJvdmlkZXIKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRWRpdGFibGUKKyAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0NvbnRlbnRTY3JpcHQKKyAgICAgKi8KKyAgICBhZGRG
aWxlRm9yVVJMOiBmdW5jdGlvbih1cmwsIGNvbnRlbnRQcm92aWRlciwgaXNFZGl0YWJsZSwgaXND
b250ZW50U2NyaXB0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyQWRkRmlsZUZv
clVSTCh1cmwsIGNvbnRlbnRQcm92aWRlciwgaXNFZGl0YWJsZSwgZmFsc2UsIGlzQ29udGVudFNj
cmlwdCk7CisgICAgfSwKKwogICAgIC8qKgotICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAg
ICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuQ29u
dGVudFByb3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
RWRpdGFibGUKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0NvbnRlbnRTY3JpcHQKICAgICAg
Ki8KLSAgICBhZGRGaWxlOiBmdW5jdGlvbih1cmksIHVybCwgY29udGVudFByb3ZpZGVyLCBpc0Vk
aXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpCisgICAgYWRkVW5pcXVlRmlsZUZvclVSTDogZnVuY3Rp
b24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkKICAg
ICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250ZW50UHJvdmlkZXJzW3VyaV0p
OwotICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVEZXNj
cmlwdG9yKHVyaSwgdXJsLCB1cmwsIGNvbnRlbnRQcm92aWRlci5jb250ZW50VHlwZSgpLCBpc0Vk
aXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpOwotICAgICAgICB0aGlzLl9jb250ZW50UHJvdmlkZXJz
W3VyaV0gPSBjb250ZW50UHJvdmlkZXI7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlz
dGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5FdmVudHMuRmlsZUFkZGVkLCBm
aWxlRGVzY3JpcHRvcik7Ci0gICAgICAgIHJldHVybiB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VD
b2RlRm9yVVJJKHVyaSk7CisgICAgICAgIHJldHVybiB0aGlzLl9pbm5lckFkZEZpbGVGb3JVUkwo
dXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIHRydWUsIGlzQ29udGVudFNjcmlwdCk7
CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA2LDEyICsxMjYsMTkgQEAgV2ViSW5zcGVjdG9yLlNp
bXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGlzRWRpdGFibGUKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0NvbnRlbnRTY3JpcHQK
ICAgICAgKi8KLSAgICBhZGRGaWxlRm9yVVJMOiBmdW5jdGlvbih1cmwsIGNvbnRlbnRQcm92aWRl
ciwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KQorICAgIF9pbm5lckFkZEZpbGVGb3JVUkw6
IGZ1bmN0aW9uKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRhYmxlLCBmb3JjZVVuaXF1ZSwg
aXNDb250ZW50U2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHVyaSA9IFdlYkluc3BlY3Rvci5T
aW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwodXJsKTsKLSAgICAgICAgcmV0dXJuIHRo
aXMuYWRkRmlsZSh1cmksIHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRhYmxlLCBpc0NvbnRl
bnRTY3JpcHQpOworICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFj
ZVByb3ZpZGVyLnVyaUZvclVSTCh1cmwsIHRoaXMuX3R5cGUpOworICAgICAgICBpZiAoZm9yY2VV
bmlxdWUpCisgICAgICAgICAgICB1cmkgPSB0aGlzLl91bmlxdWVVUkkodXJpKTsKKyAgICAgICAg
Y29uc29sZS5hc3NlcnQoIXRoaXMuX2NvbnRlbnRQcm92aWRlcnNbdXJpXSk7CisgICAgICAgIHZh
ciBmaWxlRGVzY3JpcHRvciA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZURlc2NyaXB0b3IodXJpLCB1
cmwsIHVybCwgY29udGVudFByb3ZpZGVyLmNvbnRlbnRUeXBlKCksIGlzRWRpdGFibGUsIGlzQ29u
dGVudFNjcmlwdCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRQcm92aWRlcnNbdXJpXSA9IGNvbnRl
bnRQcm92aWRlcjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5z
cGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50cy5GaWxlQWRkZWQsIGZpbGVEZXNjcmlwdG9y
KTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkkodXJp
KTsKICAgICB9LAogCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCiAgICAg
ICovCkBAIC0xMjUsNyArMTUyLDcgQEAgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3Zp
ZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCiAgICAgICogQHJl
dHVybiB7c3RyaW5nfQogICAgICAqLwotICAgIHVuaXF1ZVVSSTogZnVuY3Rpb24odXJpKQorICAg
IF91bmlxdWVVUkk6IGZ1bmN0aW9uKHVyaSkKICAgICB7CiAgICAgICAgIHZhciB1bmlxdWVVUkkg
PSB1cmk7CiAgICAgICAgIHdoaWxlICh0aGlzLl9jb250ZW50UHJvdmlkZXJzW3VuaXF1ZVVSSV0p
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFj
ZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCmlu
ZGV4IGYxNTUyMmIzZjA1NjBmMmM4MTA3MDU2YTk0MDU2MTY2ZGZiZjdkODIuLjI1NjcyZGFhNmFm
Yjg5OTQxY2QyYTRjZmYzNTQ0MDI5ZDc1NGUyNjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC03OSw2ICs3OSwxMSBAQCBXZWJJbnNw
ZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzID0gewogCiBXZWJJbnNwZWN0b3IuV29ya3Nw
YWNlUHJvdmlkZXIucHJvdG90eXBlID0gewogICAgIC8qKgorICAgICAqIEByZXR1cm4ge3N0cmlu
Z30KKyAgICAgKi8KKyAgICB0eXBlOiBmdW5jdGlvbigpIHsgfSwKKworICAgIC8qKgogICAgICAq
IEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBAcGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcsYm9v
bGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwpAQCAtMTQ4LDExICsxNTMsMTkgQEAgV2Vi
SW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAg
KiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdHlwZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLnR5cGUoKTsKKyAgICB9LAor
CisgICAgLyoqCiAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAgICAgKi8KICAgICBpc1NlcnZp
Y2VQcm9qZWN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fbmFtZSA9
PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5EZWJ1Z2dlciB8fCB0aGlzLl9uYW1lID09PSBX
ZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLkxpdmVFZGl0OworICAgICAgICByZXR1cm4gdGhpcy5f
bmFtZSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5EZWJ1Z2dlciB8fCB0aGlzLl9uYW1l
ID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkxpdmVFZGl0OwogICAgIH0sCiAKICAgICBf
ZmlsZUFkZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTI1NCwxMiArMjY3LDEzIEBAIFdlYkluc3Bl
Y3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5wcm9q
ZWN0TmFtZXMgPSB7CitXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzID0gewogICAgIERlYnVnZ2Vy
OiAiZGVidWdnZXIiLAogICAgIExpdmVFZGl0OiAibGl2ZWVkaXQiLAogICAgIENvbXBpbGVyOiAi
Y29tcGlsZXIiLAogICAgIE5ldHdvcms6ICJuZXR3b3JrIiwKLSAgICBTbmlwcGV0czogInNuaXBw
ZXRzIgorICAgIFNuaXBwZXRzOiAic25pcHBldHMiLAorICAgIEZpbGVTeXN0ZW06ICJmaWxlc3lz
dGVtIgogfQogCiAvKioKQEAgLTI4NSw3ICsyOTksNyBAQCBXZWJJbnNwZWN0b3IuV29ya3NwYWNl
LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkw6IGZ1
bmN0aW9uKG9yaWdpblVSTCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9wcm9qZWN0c1tX
ZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmtdLnVpU291cmNlQ29kZUZvck9yaWdpblVS
TChvcmlnaW5VUkwpOworICAgICAgICByZXR1cm4gdGhpcy5fcHJvamVjdHNbV2ViSW5zcGVjdG9y
LnByb2plY3RUeXBlcy5OZXR3b3JrXS51aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkwob3JpZ2luVVJM
KTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0zMDQsNiArMzE4LDIxIEBAIFdlYkluc3BlY3Rvci5X
b3Jrc3BhY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdHlwZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlPn0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNvZGVzRm9yUHJvamVjdFR5cGU6IGZ1bmN0
aW9uKHR5cGUpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAo
dmFyIHByb2plY3ROYW1lIGluIHRoaXMuX3Byb2plY3RzKSB7CisgICAgICAgICAgICB2YXIgcHJv
amVjdCA9IHRoaXMuX3Byb2plY3RzW3Byb2plY3ROYW1lXTsKKyAgICAgICAgICAgIGlmIChwcm9q
ZWN0LnR5cGUoKSA9PT0gdHlwZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29u
Y2F0KHByb2plY3QudWlTb3VyY2VDb2RlcygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4g
cmVzdWx0OworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvamVj
dE5hbWUKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlcn0gd29y
a3NwYWNlUHJvdmlkZXIKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvamVjdH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKaW5kZXgg
ZDc2OTdkNzE1ZGEyZDc2YWNjNGE5ZmI2ZmVhMjQ5NDMzNGI2YWZiMC4uOGEyN2IwOWU2NTczNGM2
ZmE1MjAyMmQ2OThmMGE2MTU0Y2NmOTI3MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanMKQEAgLTQzOSw4ICs0MzksNyBAQCBXZWJJbnNwZWN0
b3IuX2RvTG9hZGVkRG9uZVdpdGhDYXBhYmlsaXRpZXMgPSBmdW5jdGlvbigpCiAgICAgdGhpcy5p
c29sYXRlZEZpbGVTeXN0ZW1EaXNwYXRjaGVyID0gbmV3IFdlYkluc3BlY3Rvci5Jc29sYXRlZEZp
bGVTeXN0ZW1EaXNwYXRjaGVyKHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwpOwogICAgIHRo
aXMuZmlsZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nKHRoaXMuaXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWwubWFwcGluZygpKTsKIAotICAgIHRoaXMubmV0d29ya1dvcmtzcGFj
ZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih0aGlz
LndvcmtzcGFjZSk7Ci0gICAgdGhpcy53b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3Iu
cHJvamVjdE5hbWVzLk5ldHdvcmssIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKKyAg
ICB0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIodGhpcy53b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlw
ZXMuTmV0d29yayk7CiAgICAgbmV3IFdlYkluc3BlY3Rvci5OZXR3b3JrVUlTb3VyY2VDb2RlUHJv
dmlkZXIodGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwogCiAgICAgdGhpcy5icmVha3Bv
aW50TWFuYWdlciA9IG5ldyBXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIoV2ViSW5zcGVj
dG9yLnNldHRpbmdzLmJyZWFrcG9pbnRzLCB0aGlzLmRlYnVnZ2VyTW9kZWwsIHRoaXMud29ya3Nw
YWNlKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA2MzUzYWVjZDJmOWY4YWI3M2I1YzFlYjVkNTk3NmZkYmFkMmI2ZDBhLi45
NGRlZjIzMmMwZWU1MjYzZjRhNzRmOTY0YjRlNjE5MmZhYjNiNDgxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDUgKzEs
MjUgQEAKIDIwMTMtMDItMDcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+
CiAKKyAgICAgICAgV2ViIEluc3BlY3RvcjogSW50cm9kdWNlIHdvcmtzcGFjZSBwcm92aWRlci9w
cm9qZWN0IHR5cGUsIGVuY2Fwc3VsYXRlIHVyaSBjcmVhdGlvbiBpbiBTaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlci4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwOTI4MgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
ICogaHR0cC90ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbDoKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0LmpzOgorICAg
ICAgICAoaW5pdGlhbGl6ZV9Xb3Jrc3BhY2VUZXN0Lkluc3BlY3RvclRlc3QuY3JlYXRlV29ya3Nw
YWNlKToKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0cy5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1sOgor
ICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRtbDoK
KyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorICAgICAg
ICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmctZXhwZWN0ZWQudHh0OgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvdWlzb3VyY2Vjb2RlLXJldmlzaW9ucy5odG1sOgorCisyMDEzLTAyLTA3ICBW
c2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdlYiBJbnNw
ZWN0b3I6IFJlcGxhY2Ugd29ya3NwYWNlIHdpdGggcHJvamVjdCBpbiBVSVNvdXJjZUNvZGUgY29u
c3RydWN0b3IuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9p
ZD0xMDkyNTYKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3It
ZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5z
cGVjdG9yLWVuYWJsZWQvZHluYW1pYy1zY3JpcHRzLmh0bWwKaW5kZXggYmI5NTJiNTk3YjFkOTU3
YmExZDdmMzE2YTk0MTQ1NjViNjU0NjhhNS4uNjViYTFlYzdlMmIxZTU5ZmQ4YWM4YWNmMWFlNWZl
ZTMwMmJhMGUzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3It
ZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci1lbmFibGVkL2R5bmFtaWMtc2NyaXB0cy5odG1sCkBAIC01MSw3ICs1MSw3IEBA
IGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAgICB7CiAgICAgICAgIHZh
ciBwYW5lbCA9IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICAgICAgdmFy
IHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnByb2plY3QoV2ViSW5zcGVj
dG9yLnByb2plY3ROYW1lcy5OZXR3b3JrKS51aVNvdXJjZUNvZGVzKCk7CisgICAgICAgIHZhciB1
aVNvdXJjZUNvZGVzID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNvdXJjZUNvZGVzRm9yUHJv
amVjdFR5cGUoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKTsKICAgICAgICAgdmFy
IHVybHMgPSB1aVNvdXJjZUNvZGVzLm1hcChmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgcmV0dXJu
IHVpU291cmNlQ29kZS5wYXJzZWRVUkwubGFzdFBhdGhDb21wb25lbnQ7IH0pOwogICAgICAgICB1
cmxzLnNvcnQoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0
cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcuaHRtbAppbmRleCAwZDc4
MzlkNWQ0ZmQ5NGU4ZjIxYzdlN2U4Y2Y0N2EwYTBiMmY4YTUxLi45ODY3YWQyMWJhOTdlNDExOWY1
YmM4NGI0YmZjZjdhODkyNWU0ZjFmIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3Rz
L2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwKQEAgLTMx
MCw4ICszMTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5zb3VyY2VNYXBzRW5hYmxlZC5zZXQodHJ1ZSk7CiAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAgIHZhciB3b3Jrc3BhY2Ug
PSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOwotICAgICAgICAgICAgdmFyIG5ldHdvcmtX
b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlk
ZXIod29ya3NwYWNlKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3Bl
Y3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaywgbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKKyAg
ICAgICAgICAgIHZhciBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RU
eXBlcy5OZXR3b3JrKTsKICAgICAgICAgICAgIHZhciBkZWJ1Z2dlclNjcmlwdE1hcHBpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh3b3Jrc3BhY2UsIG5ldHdvcmtX
b3Jrc3BhY2VQcm92aWRlcik7CiAKICAgICAgICAgICAgIHZhciBzY3JpcHQgPSBJbnNwZWN0b3JU
ZXN0LmNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwgMCwgMCwgdHJ1ZSwgIiIpOwpkaWZm
IC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3Qu
anMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwpp
bmRleCBkNTA2YmQ5MjI5MDllYTI1NTYzNmI2NmNmYmE1N2JkOTA5NmJkMzNkLi5jYWJkMmZiNWJk
Yzg0YjhjZjY1ZDVhZDBlMjE2MDlmMzgwOTQzY2EwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcworKysgYi9MYXlvdXRUZXN0cy9o
dHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwpAQCAtNCw4ICs0LDcgQEAgSW5z
cGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlOwogSW5zcGVjdG9yVGVzdC5jcmVhdGVXb3Jrc3BhY2Ug
PSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlID0gbmV3IFdl
Ykluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKLSAgICBJbnNwZWN0b3JUZXN0LnRlc3ROZXR3b3JrV29y
a3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVy
KEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZSk7Ci0gICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrLCBJbnNw
ZWN0b3JUZXN0LnRlc3ROZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOworICAgIEluc3BlY3RvclRl
c3QudGVzdE5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLCBXZWJJbnNwZWN0
b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwogICAgIEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFj
ZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92aWRlci5FdmVu
dHMuVUlTb3VyY2VDb2RlQWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNvZGVQ
cm92aWRlckV2ZW50SGFuZGxlcik7CiAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5V
SVNvdXJjZUNvZGVSZW1vdmVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0VUlTb3VyY2VDb2RlUHJv
dmlkZXJFdmVudEhhbmRsZXIpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCmluZGV4IGM0M2E1ZWZmNzJhZTQ0MmEx
ODkzMGNmMjlkNTkxNDZkN2VjYWQ1MWMuLmUzYzljNzY3MGY3ZDNiMmEzMmE3NzZkMTJkNzI1Nzgx
Mjg2YzFiYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVh
a3BvaW50LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKQEAgLTE2Myw5ICsxNjMsNyBAQCBmdW5jdGlvbiB0ZXN0
KCkKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwuX2FkZFNjcmlwdCh1
cmwsIHVybCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIEFkZGluZyB0ZW1w
b3JhcnkgVUlTb3VyY2VDb2RlOiAiICsgdXJsICsgIikiKTsKICAgICAgICAgdmFyIGNvbnRlbnRQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0L2phdmFzY3JpcHQiKTsKLSAgICAg
ICAgdmFyIHVyaSA9ICJkZWJ1Z2dlcjoiICsgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVBy
b3ZpZGVyLnVyaUZvclVSTCh1cmwpOwotICAgICAgICB2YXIgdW5pcXVlVVJJID0gYnJlYWtwb2lu
dE1hbmFnZXIuX2RlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIudW5pcXVlVVJJKHVyaSk7Ci0gICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJXb3Jrc3Bh
Y2VQcm92aWRlci5hZGRGaWxlKHVuaXF1ZVVSSSwgdXJsLCBjb250ZW50UHJvdmlkZXIsIGZhbHNl
KTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IGJyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dl
cldvcmtzcGFjZVByb3ZpZGVyLmFkZFVuaXF1ZUZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlk
ZXIsIHRydWUpOwogICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyhkZWZhdWx0
TWFwcGluZyk7CiAgICAgICAgIHVpU291cmNlQ29kZXNbdXJsXSA9IHVpU291cmNlQ29kZTsKICAg
ICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKQEAgLTE5MywxMiArMTkxLDggQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsID0gbmV3IERlYnVnZ2VyTW9kZWxNb2Nr
KHNvdXJjZU1hcHBpbmcpOwogICAgICAgICB2YXIgd29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2UoKTsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihzZXR0aW5nLCBkZWJ1Z2dlck1vZGVsLCB3b3Jrc3Bh
Y2UpOwotCi0gICAgICAgIGJyZWFrcG9pbnRNYW5hZ2VyLl9uZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSk7
Ci0gICAgICAgIHdvcmtzcGFjZS5hZGRQcm9qZWN0KCJuZXR3b3JrIiwgYnJlYWtwb2ludE1hbmFn
ZXIuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAgICAgIGJyZWFrcG9pbnRNYW5hZ2Vy
Ll9kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jr
c3BhY2VQcm92aWRlcih3b3Jrc3BhY2UpOwotICAgICAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdCgi
ZGVidWdnZXIiLCBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlcik7
Ci0KKyAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJ
bnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOworICAgICAgICBicmVha3BvaW50TWFuYWdl
ci5fZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29y
a3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkRlYnVn
Z2VyKTsKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNw
ZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZlbnRzLkJyZWFrcG9pbnRBZGRlZCwgYnJlYWtwb2lu
dEFkZGVkKTsKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuYWRkRXZlbnRMaXN0ZW5lcihXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZlbnRzLkJyZWFrcG9pbnRSZW1vdmVkLCBicmVh
a3BvaW50UmVtb3ZlZCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCIgIENyZWF0
ZWQgYnJlYWtwb2ludHMgbWFuYWdlciIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0cy5odG1sCmluZGV4IGU5ZTE4ZmQ0ODJlNWI3ZjQxYWQ3
NjEzYzQ0NzI2MTI0YzAyOTBkNmQuLjYwN2YzMzg2OTZhYTg2OTU1Zjg0MDY1OWM5ODhiYmEwMTc2
ODdjN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWlj
LXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1p
Yy1zY3JpcHRzLmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVu
Y3Rpb24gc3RlcDMoKQogICAgIHsKICAgICAgICAgdmFyIHBhbmVsID0gV2ViSW5zcGVjdG9yLnNo
b3dQYW5lbCgic2NyaXB0cyIpOwotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3Bl
Y3Rvci53b3Jrc3BhY2UucHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmsp
LnVpU291cmNlQ29kZXMoKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0
b3Iud29ya3NwYWNlLnVpU291cmNlQ29kZXNGb3JQcm9qZWN0VHlwZShXZWJJbnNwZWN0b3IucHJv
amVjdFR5cGVzLk5ldHdvcmspOwogICAgICAgICB2YXIgdXJscyA9IHVpU291cmNlQ29kZXMubWFw
KGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyByZXR1cm4gdWlTb3VyY2VDb2RlLnBhcnNlZFVSTC5s
YXN0UGF0aENvbXBvbmVudDsgfSk7CiAgICAgICAgIHVybHMuc29ydCgpOwogCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNuaXBwZXQtbW9kZWwuaHRt
bCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5o
dG1sCmluZGV4IDk0YmM2YjhiMjliODA5ZWNjYTYzOTgwMDQ4NGExNGEzNGM2Y2Y5MGIuLjVkZGE2
Yjg3ZTMxM2Y3NDE2ZDlkZGNhODNiODZlYTA2ODNlZWExOWQgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1sCisrKyBiL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2RlbC5odG1sCkBA
IC0xNSw4ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIFdlYkluc3BlY3Rvci5leHBlcmlt
ZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydCA9IHt9OwogICAgIFdlYkluc3BlY3Rvci5leHBl
cmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQgPSBmdW5jdGlvbigpIHsg
cmV0dXJuIHRydWU7IH07CiAgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29y
a3NwYWNlKCk7Ci0gICAgdmFyIHNuaXBwZXRXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlKTsKLSAgICB3b3Jrc3BhY2Uu
YWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLlNuaXBwZXRzLCBzbmlwcGV0V29y
a3NwYWNlUHJvdmlkZXIpOworICAgIHZhciBzbmlwcGV0V29ya3NwYWNlUHJvdmlkZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSwgV2ViSW5zcGVj
dG9yLnByb2plY3RUeXBlcy5TbmlwcGV0cyk7CiAgICAgdmFyIHdvcmtzcGFjZUNvbnRyb2xsZXIg
PSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZUNvbnRyb2xsZXIod29ya3NwYWNlKTsKICAgICBX
ZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRT
bmlwcGV0TW9kZWwod29ya3NwYWNlLCBzbmlwcGV0V29ya3NwYWNlUHJvdmlkZXIpOwogICAgIElu
c3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1sCmluZGV4
IDE3YjVlMjRkZTA5OWU0M2E5Y2FhMzJhODk4NzI1NzM1ZTUxZWMxNjIuLjU3MmUyYmY1Y2IyZGVh
MDg0ZmY2MzU5ODFlZGJmODNlYTVlYWYzODEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRtbAorKysgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwKQEAgLTEwLDE5
ICsxMCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBXZWJJbnNwZWN0b3IuX2lzTWFjID0gZmFs
c2U7CiAKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgdmFyIG5h
dmlnYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigpOwogCi0gICAgdmFy
IE1vY2tQcm9qZWN0ID0gZnVuY3Rpb24oKSB7fQotICAgIE1vY2tQcm9qZWN0LnByb3RvdHlwZS5u
YW1lID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJuZXR3b3JrIjsKLSAgICB9
CisgICAgdmFyIG5hdmlnYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigp
OworICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOworICAg
IHZhciB3b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNl
UHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwog
CiAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBbXTsKICAgICBmdW5jdGlvbiBhZGRVSVNvdXJjZUNv
ZGUodXJsLCBpc0NvbnRlbnRTY3JpcHQpCiAgICAgewotICAgICAgICB2YXIgdWlTb3VyY2VDb2Rl
ID0gbmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUobmV3IE1vY2tQcm9qZWN0KCksIHVybCwg
dXJsLCB1cmwsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgbnVsbCk7Ci0gICAg
ICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRlbnRTY3JpcHQ7CisgICAg
ICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQ
cm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICIiLCAidGV4dC9qYXZh
c2NyaXB0Iik7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB3b3Jrc3BhY2VQcm92aWRlci5h
ZGRGaWxlRm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVyLCBmYWxzZSwgaXNDb250ZW50U2NyaXB0
KTsKICAgICAgICAgbmF2aWdhdG9yLmFkZFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwogICAg
ICAgICB1aVNvdXJjZUNvZGVzLnB1c2godWlTb3VyY2VDb2RlKTsKICAgICB9CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sIGIvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbAppbmRleCA4M2Nk
MTJjZjA3OWY2Mzg2MWYxN2M1YzQ5MDA4YjhkYzc1NjMwYmJjLi5jY2M5MGIwMzBkZjFiNTEyN2Nj
N2JjMDM2ZWViMmE2ZDYxNjZiNjljIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTE1LDM4ICsxNSw0OCBAQCBmdW5jdGlvbiB0
ZXN0KCkKICAgICAgICAgc2V0OiBmdW5jdGlvbihicmVha3BvaW50cykgeyBwZXJzaXN0ZW50QnJl
YWtwb2ludHMgPSBicmVha3BvaW50czsgfQogICAgIH07CiAKLSAgICB2YXIgY29udGVudFByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIoV2ViSW5zcGVjdG9y
LnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIiwgInRleHQvamF2YXNjcmlwdCIpOwotCi0gICAgZnVu
Y3Rpb24gY3JlYXRlTW9ja1dvcmtzcGFjZSgpCisgICAgZnVuY3Rpb24gY3JlYXRlQ29udGVudFBy
b3ZpZGVyKHVybCkKICAgICB7Ci0gICAgICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVj
dG9yLldvcmtzcGFjZSgpOwotICAgICAgICB2YXIgbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyID0g
bmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UpOwotICAg
ICAgICB2YXIgcHJvamVjdCA9IHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9q
ZWN0TmFtZXMuTmV0d29yaywgbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKLQotICAgICAgICB3
b3Jrc3BhY2UuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2lt
cGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlKTsKLSAgICAgICAgd29ya3NwYWNlLmFkZFBy
b2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5EZWJ1Z2dlciwgd29ya3NwYWNlLmRlYnVn
Z2VyV29ya3NwYWNlUHJvdmlkZXIpOwotICAgICAgICBwcm9qZWN0LnJlcXVlc3RGaWxlQ29udGVu
dCA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgY2FsbGJhY2spCisgICAgICAgIHZhciBjb250ZW50
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICIiLCAidGV4dC9qYXZhc2NyaXB0Iik7CisgICAg
ICAgIGNvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVudCA9IGZ1bmN0aW9uKGNhbGxiYWNrKQog
ICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU291cmNlIHJl
cXVlc3RlZCBmb3IgIiArIHVpU291cmNlQ29kZS5vcmlnaW5VUkwoKSk7CisgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU291cmNlIHJlcXVlc3RlZCBmb3IgIiArIHVybCk7CiAg
ICAgICAgICAgICBjYWxsYmFjaygiIik7CiAgICAgICAgIH07Ci0gICAgICAgIHdvcmtzcGFjZS5u
ZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXI7CisgICAg
ICAgIHJldHVybiBjb250ZW50UHJvdmlkZXI7CisgICAgfQorCisgICAgZnVuY3Rpb24gY3JlYXRl
TW9ja1dvcmtzcGFjZSgpCisgICAgeworICAgICAgICB2YXIgd29ya3NwYWNlID0gbmV3IFdlYklu
c3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3Nw
YWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOworICAgICAgICB3b3Jrc3Bh
Y2UuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29y
a3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkRlYnVn
Z2VyKTsKICAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBh
ZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsIHVybCkKKyAgICB7CisgICAgICAgIHdvcmtzcGFjZS5u
ZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCh1cmwsIGNyZWF0ZUNvbnRlbnRQ
cm92aWRlcih1cmwpLCBmYWxzZSk7CisgICAgfQorCisgICAgZnVuY3Rpb24gYWRkRGVidWdnZXJG
aWxlKHdvcmtzcGFjZSwgdXJsKQorICAgIHsKKyAgICAgICAgd29ya3NwYWNlLmRlYnVnZ2VyV29y
a3NwYWNlUHJvdmlkZXIuYWRkVW5pcXVlRmlsZUZvclVSTCh1cmwsIGNyZWF0ZUNvbnRlbnRQcm92
aWRlcih1cmwpLCBmYWxzZSk7CisgICAgfQorCiAgICAgSW5zcGVjdG9yVGVzdC5ydW5UZXN0U3Vp
dGUoWwogICAgICAgICBmdW5jdGlvbiB0ZXN0SW5pdGlhbExvYWQobmV4dCkKICAgICAgICAgewog
ICAgICAgICAgICAgdmFyIHdvcmtzcGFjZSA9IGNyZWF0ZU1vY2tXb3Jrc3BhY2UoKTsKIAotICAg
ICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJM
KCJmb29iYXIuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFkZE5l
dHdvcmtGaWxlKHdvcmtzcGFjZSwgImZvb2Jhci5qcyIpOwogCiAgICAgICAgICAgICB2YXIgcGFu
ZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCh3b3Jrc3BhY2UpOwogICAgICAgICAg
ICAgcGFuZWwuc2hvdygpOwogCi0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFj
ZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImZvby5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2Up
OwotICAgICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxl
Rm9yVVJMKCJiYXIuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKLSAgICAgICAgICAgIHdv
cmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgiYmF6LmpzIiwg
Y29udGVudFByb3ZpZGVyLCBmYWxzZSk7CisgICAgICAgICAgICBhZGROZXR3b3JrRmlsZSh3b3Jr
c3BhY2UsICJmb28uanMiKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwg
ImJhci5qcyIpOworICAgICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiYmF6Lmpz
Iik7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3IocGFu
ZWwuX25hdmlnYXRvcik7CiAKQEAgLTY0LDE0ICs3NCwxNCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKHdvcmtz
cGFjZSk7CiAgICAgICAgICAgICBwYW5lbC5zaG93KCk7CiAKLSAgICAgICAgICAgIHdvcmtzcGFj
ZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgiZm9vLmpzIiwgY29udGVu
dFByb3ZpZGVyLCBmYWxzZSk7Ci0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFj
ZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImJhci5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2Up
OwotICAgICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxl
Rm9yVVJMKCJiYXouanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFk
ZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwgImZvby5qcyIpOworICAgICAgICAgICAgYWRkTmV0d29y
a0ZpbGUod29ya3NwYWNlLCAiYmFyLmpzIik7CisgICAgICAgICAgICBhZGROZXR3b3JrRmlsZSh3
b3Jrc3BhY2UsICJiYXouanMiKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2Ny
aXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKIAogICAgICAgICAgICAgd29ya3NwYWNl
Lm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5yZXNldCgpOwotICAgICAgICAgICAgd29ya3NwYWNl
Lm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKCJiYXIuanMiLCBjb250ZW50
UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwg
ImJhci5qcyIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRv
cihwYW5lbC5fbmF2aWdhdG9yKTsKIAogICAgICAgICAgICAgcGFuZWwuZGV0YWNoKCk7CkBAIC04
NCwxMyArOTQsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAgICB2YXIgcGFuZWwgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCh3b3Jrc3BhY2UpOwogICAgICAgICAgICAgcGFu
ZWwuc2hvdygpOwogCi0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3Zp
ZGVyLmFkZEZpbGVGb3JVUkwoImZvby5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2UpOwotICAg
ICAgICAgICAgd29ya3NwYWNlLmRlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZSgiZGVi
dWdnZXI6Y29tcGlsZWQuanMiLCAiY29tcGlsZWQuanMiLCBjb250ZW50UHJvdmlkZXIpOworICAg
ICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiZm9vLmpzIik7CisgICAgICAgICAg
ICBhZGREZWJ1Z2dlckZpbGUod29ya3NwYWNlLCAiY29tcGlsZWQuanMiKTsKIAogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsK
IAogICAgICAgICAgICAgLy8gUGx1ZyBjb21waWxlciBzb3VyY2UgbWFwcGluZy4KLSAgICAgICAg
ICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgic291
cmNlLmpzIiwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7CisgICAgICAgICAgICBhZGROZXR3b3Jr
RmlsZSh3b3Jrc3BhY2UsICJzb3VyY2UuanMiKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKICAgICAgICAgICAgIG5l
eHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRz
LXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKaW5kZXggYzI0YWNjZDAzYzg4NTllMDQzMGU0MmU4
YmQ1OTZmOGY5NzdiMjRkMy4uYmNhM2MzOGJmOWFjZjMyNzdlNzk1YTUxYTc3MzQ5YzEzYzI2NmEx
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29y
dGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTEzLDcgKzEzLDcgQEAgRHVtcGluZyBTY3Jp
cHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6CiBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ0Nv
bnRlbnQgc2NyaXB0cycgdGFiOgogICBleHRlbnNpb24tbmFtZQogICAgIGZvbGRlcgotICAqTm9u
KlVSTCpwYXRoCisgICpBbm90aGVyKk5vbipVUkwqcGF0aAogRHVtcGluZyBTY3JpcHRzTmF2aWdh
dG9yICdTY3JpcHRzJyB0YWI6CiAgIGJhci5jb20KICAgICBmb28vcGF0aApAQCAtNDEsNSArNDEs
NSBAQCBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ0NvbnRlbnQgc2NyaXB0cycgdGFiOgogICAg
IGZvbGRlcgogICAgICAgYmF6LmpzCiAgICAgYmFyLmpzCi0gICpOb24qVVJMKnBhdGgKKyAgKkFu
b3RoZXIqTm9uKlVSTCpwYXRoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbAppbmRleCA5ZjhhYWNjZmNjM2IxOTYyOGM1ZjdiODE2
ZWExODgyZDFmMjI4ODQwLi44YTM0YjgzZjhhNGQ1NzI2NmM0Y2M4MmQ3ZDBhZjM3NTYxN2QyZGY5
IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0
aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29y
dGluZy5odG1sCkBAIC0xMSwyOCArMTEsMjIgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgV2ViSW5z
cGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwogCiAgICAgdmFyIG5hdmlnYXRvciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigpOwotCi0gICAgdmFyIE1vY2tQcm9qZWN0ID0g
ZnVuY3Rpb24oKSB7fQotICAgIE1vY2tQcm9qZWN0LnByb3RvdHlwZS5uYW1lID0gZnVuY3Rpb24o
KQotICAgIHsKLSAgICAgICAgcmV0dXJuICJuZXR3b3JrIjsKLSAgICB9CisgICAgdmFyIHdvcmtz
cGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CisgICAgdmFyIHdvcmtzcGFjZVBy
b3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3Bh
Y2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CiAKICAgICB2YXIgdWlTb3Vy
Y2VDb2RlcyA9IFtdOwogICAgIGZ1bmN0aW9uIGFkZFVJU291cmNlQ29kZSh1cmwsIGlzQ29udGVu
dFNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBuZXcgV2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZShuZXcgTW9ja1Byb2plY3QoKSwgdXJsLCB1cmwsIHVybCwgV2ViSW5z
cGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBudWxsKTsKLSAgICAgICAgdWlTb3VyY2VDb2Rl
LmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKKyAgICAgICAgdmFyIGNvbnRlbnRQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKFdlYkluc3Bl
Y3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0L2phdmFzY3JpcHQiKTsKKyAgICAg
ICAgdmFyIHVpU291cmNlQ29kZSA9IHdvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwodXJs
LCBjb250ZW50UHJvdmlkZXIsIGZhbHNlLCBpc0NvbnRlbnRTY3JpcHQpOwogICAgICAgICBuYXZp
Z2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIHVpU291cmNlQ29k
ZXMucHVzaCh1aVNvdXJjZUNvZGUpOwogICAgIH0KIAotICAgIGZ1bmN0aW9uIGR1bXBTY3JpcHRz
TGlzdChub1JldmVhbCkKKyAgICBmdW5jdGlvbiBkdW1wU2NyaXB0c0xpc3QoKQogICAgIHsKICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0
LmR1bXBTY3JpcHRzTmF2aWdhdG9yKG5hdmlnYXRvcik7Ci0gICAgICAgIGlmIChub1JldmVhbCkK
LSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJj
ZUNvZGVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgbmF2aWdhdG9yLnJldmVhbFVJU291cmNl
Q29kZSh1aVNvdXJjZUNvZGVzW2ldKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0
c05hdmlnYXRvcihuYXZpZ2F0b3IpOwpAQCAtNjUsNyArNTksNyBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgImV4dGVuc2lvbi1zY2hlbWE6Ly9leHRlbnNpb24tbmFtZS9mb2xkZXIvYmF6Lmpz
IiBdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5sZW5ndGg7ICsraSkKICAg
ICAgICAgYWRkVUlTb3VyY2VDb2RlKGV4dGVuc2lvbnNbaV0sIHRydWUpOwotICAgIGFkZFVJU291
cmNlQ29kZSgiKk5vbipVUkwqcGF0aCIsIHRydWUpOworICAgIGFkZFVJU291cmNlQ29kZSgiKkFu
b3RoZXIqTm9uKlVSTCpwYXRoIiwgdHJ1ZSk7CiAgICAgZHVtcFNjcmlwdHNMaXN0KCk7CiAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKIH0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvdWlzb3VyY2Vjb2RlLXJldmlzaW9ucy5odG1sCmluZGV4IDUzMDZiYjgyYTA2Yjg4Y2Ey
ZmFlODk5YzVmNTM0OWRlYzYwNmE1NjYuLjUzMDcyYmNkNTkyOWU3OTExZTNmZDhmOGRmYjIxNzRm
NmIxYzNmZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91aXNvdXJjZWNvZGUt
cmV2aXNpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vpc291cmNlY29kZS1y
ZXZpc2lvbnMuaHRtbApAQCAtOSw5ICs5LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rp
b24gY3JlYXRlTW9ja1Byb2plY3QoKQogICAgIHsKICAgICAgICAgdmFyIHdvcmtzcGFjZSA9IG5l
dyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7Ci0gICAgICAgIHZhciBuZXR3b3JrV29ya3NwYWNl
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtz
cGFjZSk7Ci0gICAgICAgIHZhciBwcm9qZWN0ID0gbmV3IFdlYkluc3BlY3Rvci5Qcm9qZWN0KHdv
cmtzcGFjZSwgIm5ldHdvcmsiLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwotICAgICAgICB3
b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmssIG5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CisgICAgICAgIHZhciB3b3Jrc3BhY2VQcm92aWRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJ
bnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOworICAgICAgICB2YXIgcHJvamVjdCA9IHdv
cmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yaywgd29y
a3NwYWNlUHJvdmlkZXIpOwogICAgICAgICBwcm9qZWN0LnJlcXVlc3RGaWxlQ29udGVudCA9IGZ1
bmN0aW9uKHVyaSwgY2FsbGJhY2spCiAgICAgICAgIHsKICAgICAgICAgICAgIGNhbGxiYWNrKCI8
c2NyaXB0IGNvbnRlbnQ+IiwgZmFsc2UsICJ0ZXh0L2phdmFzY3JpcHQiKTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187284</attachid>
            <date>2013-02-08 03:55:56 -0800</date>
            <delta_ts>2013-02-08 04:00:15 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109282-20130208155230.patch</filename>
            <type>text/plain</type>
            <size>46334</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI0MTlmNmY5ZjkyMDg4
MmZmZjZmZmJhYWE0M2I1MmU2ZDFhMWVjNy4uMzg4N2Y5NTc2ZThmOThiMTlmMWExNGNjZTZiNzIw
ZTRlYjI2OTRkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSw1ICsxLDYxIEBACiAyMDEzLTAyLTA3ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgogCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSB3b3Jrc3BhY2UgcHJvdmlkZXIvcHJvamVjdCB0eXBlLCBlbmNhcHN1bGF0
ZSB1cmkgY3JlYXRpb24gaW4gU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGVXb3Jrc3BhY2VQcm92aWRl
ciBub3cgZnVsbHkgdGFrZXMgY2FyZSBvZiBjcmVhdGluZyB1cmkgYmFzZWQgb24gcHJvamVjdC93
b3Jrc3BhY2UgcHJvdmlkZXIgdHlwZS4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBv
biB0aGUgd2F5IHRvIHByb2plY3QtcGVyLWRvbWFpbiBtb2RlIGZvciBub24gZmlsZSBzeXN0ZW0g
cHJvamVjdCB0eXBlcy4KKyAgICAgICAgV29ya3NwYWNlIGlzIG5vdyBwYXJ0bHkgYXdhcmUgb2Yg
dGhlIHBvc3NpYmlsaXR5IHRoYXQgc2V2ZXJhbCBwcm9qZWN0cyB3aXRoIHRoZSBzYW1lIHR5cGUg
ZXhpc3QuCisgICAgICAgIERyaXZlLWJ5OiBTY3JpcHRzUGFuZWwgbm93IHVzZXMgRmlsZU1BcHBp
bmcgdG8gc2hvdyBhbmNob3IgbG9jYXRpb24gcHJvcGVybHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFBhZ2VSZXNvdXJjZXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZU1hcHBpbmcucHJvdG90eXBlLnVyaUZvclVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS50eXBlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9zdXBwb3J0
c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGl2ZUVk
aXRTdXBwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQucHJvdG90
eXBlLnVpU291cmNlQ29kZUZvckxpdmVFZGl0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRT
bmlwcGV0TW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5w
cm90b3R5cGUuX2FkZFNjcmlwdFNuaXBwZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2
aWdhdG9yLnByb3RvdHlwZS5fbmF2aWdhdG9yVmlld0ZvclVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUucmV2ZWFsVUlTb3VyY2VD
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90
eXBlLl9oYW5kbGVFdmFsdWF0ZVNuaXBwZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX2hhbmRsZVJlbW92ZVNuaXBwZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcHJvamVjdFdpbGxSZXNldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5jYW5TaG93QW5j
aG9yTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUuX2NyZWF0ZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLnNldCBfZmlsZVJlbmFtZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBsZVdv
cmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS5hZGRGaWxlRm9yVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUuYWRkVW5p
cXVlRmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIucHJvdG90eXBlLl9pbm5lckFkZEZpbGVGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS5fdW5pcXVlVVJJKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUudHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvamVjdC5wcm90b3R5cGUudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
amVjdC5wcm90b3R5cGUuaXNTZXJ2aWNlUHJvamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlLnByb3RvdHlwZS51aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkwpOiBBZGRlZCBzdXBw
b3J0IGZvciBzZXZlcmFsIHByb2plY3RzIG9mIHRoZSBzYW1lIHR5cGUuCisgICAgICAgIChXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlLnByb3RvdHlwZS51aVNvdXJjZUNvZGVzRm9yUHJvamVjdFR5cGUp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzOgorCisyMDEzLTAy
LTA3ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCiAgICAgICAgIFdl
YiBJbnNwZWN0b3I6IFJlcGxhY2Ugd29ya3NwYWNlIHdpdGggcHJvamVjdCBpbiBVSVNvdXJjZUNv
ZGUgY29uc3RydWN0b3IuCiAgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xMDkyNTYKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9EZWZhdWx0U2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcuanMKaW5kZXggNjA3YTU4MTM3YzhkMDBl
YTNiZTI0NDFkZTdlNWUwNThlYzNkNThkMC4uNTZhNmJiM2M4NDcyOGE2NjU4MDMyOTcyMzQ3NDJk
YWYzOTJkNGFlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9EZWZhdWx0U2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzCkBAIC0zNSw5ICszNSw3IEBACiAgKi8K
IFdlYkluc3BlY3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkK
IHsKLSAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7Ci0gICAgdGhpcy5fd29ya3NwYWNl
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMu
X3dvcmtzcGFjZSk7Ci0gICAgd29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2pl
Y3ROYW1lcy5EZWJ1Z2dlciwgdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIpOworICAgIHRoaXMuX3dv
cmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRl
cih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuRGVidWdnZXIpOwogICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRl
YnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2JhbE9iamVjdENsZWFyZWQsIHRoaXMuX2RlYnVnZ2VyUmVz
ZXQsIHRoaXMpOwogICAgIHRoaXMuX2RlYnVnZ2VyUmVzZXQoKTsKIH0KQEAgLTc2LDkgKzc0LDcg
QEAgV2ViSW5zcGVjdG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICBh
ZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7CiAgICAgICAgIHZhciBjb250ZW50UHJv
dmlkZXIgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IG5ldyBXZWJJbnNwZWN0b3IuQ29uY2F0
ZW5hdGVkU2NyaXB0c0NvbnRlbnRQcm92aWRlcihbc2NyaXB0XSkgOiBzY3JpcHQ7Ci0gICAgICAg
IHZhciB1cmkgPSAiZGVidWdnZXI6IiArIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92
aWRlci51cmlGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCk7Ci0gICAgICAgIHZhciB1bmlxdWVVUkkg
PSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci51bmlxdWVVUkkodXJpKTsKLSAgICAgICAgdmFyIHVp
U291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGUodW5pcXVlVVJJLCBz
Y3JpcHQuc291cmNlVVJMLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlLCBzY3JpcHQuaXNDb250ZW50
U2NyaXB0KTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVByb3Zp
ZGVyLmFkZFVuaXF1ZUZpbGVGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVy
LCBmYWxzZSwgc2NyaXB0LmlzQ29udGVudFNjcmlwdCk7CiAKICAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKICAgICAg
ICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgc2NyaXB0
LnNjcmlwdElkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvRXh0ZW5zaW9uU2VydmVyLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9FeHRlbnNpb25TZXJ2ZXIuanMKaW5kZXggYzExNjFiZTI4ZDE2OGQ0NDYxODNmNzUxYTViYzll
NDIyMjliOTY0Yi4uYzkzOWU5OWEwMmRiNDhkOTU5YmExZDNlNzI5MjgxZGQ3YjhlNmU3NiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25TZXJ2
ZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FeHRlbnNpb25T
ZXJ2ZXIuanMKQEAgLTQ0Miw3ICs0NDIsNyBAQCBXZWJJbnNwZWN0b3IuRXh0ZW5zaW9uU2VydmVy
LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghcmVzb3VyY2VzW2NvbnRlbnRQcm92aWRl
ci5jb250ZW50VVJMKCldKQogICAgICAgICAgICAgICAgIHJlc291cmNlc1tjb250ZW50UHJvdmlk
ZXIuY29udGVudFVSTCgpXSA9IHRoaXMuX21ha2VSZXNvdXJjZShjb250ZW50UHJvdmlkZXIpOwog
ICAgICAgICB9Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gV2ViSW5zcGVjdG9yLndvcmtz
cGFjZS5wcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaykudWlTb3VyY2VD
b2RlcygpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rvci53b3Jrc3Bh
Y2UucHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspLnVpU291cmNlQ29k
ZXMoKTsKICAgICAgICAgdWlTb3VyY2VDb2Rlcy5mb3JFYWNoKHB1c2hSZXNvdXJjZURhdGEuYmlu
ZCh0aGlzKSk7CiAgICAgICAgIFdlYkluc3BlY3Rvci5yZXNvdXJjZVRyZWVNb2RlbC5mb3JBbGxS
ZXNvdXJjZXMocHVzaFJlc291cmNlRGF0YS5iaW5kKHRoaXMpKTsKICAgICAgICAgcmV0dXJuIE9i
amVjdC52YWx1ZXMocmVzb3VyY2VzKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0ZpbGVNYXBwaW5nLmpzCmluZGV4IDYwZDliMWFkZDZlZWVkMjUyMzYyZDljYWYw
MjE4NTMzNWI2YTFkZGEuLjBlZDI0OWJkMTUyMmYzNDY3ODE3ZDk3YWE1MTE4ZjdlMmViYTgyZmUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBp
bmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGlu
Zy5qcwpAQCAtOTEsOCArOTEsNyBAQCBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIHVyaUZvclVSTDogZnVuY3Rpb24odXJsKQogICAgIHsKLSAgICAg
ICAgLy8gRklYTUU6IEZpbGVNYXBwaW5nIHNob3VsZCBiZSBuZXR3b3JrIHByb2plY3QgYXdhcmUu
IEl0IHNob3VsZCByZXR1cm4gY29ycmVjdCB1cmkgZm9yIG5ldHdvcmsgcHJvamVjdCB1aVNvdXJj
ZUNvZGVzLgotICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJVUklGb3JVUkwodXJsKSB8fCB1cmw7
CisgICAgICAgIHJldHVybiB0aGlzLl9pbm5lclVSSUZvclVSTCh1cmwpIHx8IFdlYkluc3BlY3Rv
ci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwodXJsLCBXZWJJbnNwZWN0b3IucHJv
amVjdFR5cGVzLk5ldHdvcmspOwogICAgIH0sCiAgICAgCiAgICAgLyoqCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92
aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdv
cmtzcGFjZVByb3ZpZGVyLmpzCmluZGV4IDYwYmNkYTA4NWI4MWNkNjZlYmUxNTlkMzY4MmQ1ZTg2
ODlkMGI1YTMuLjU4ZWZiMGI1OTI1Y2E1YTQ1YWViZTMzNmFhMjczN2E0ZDVkNmQ1OWUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmlsZVN5c3RlbVdvcmtz
cGFjZVByb3ZpZGVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
RmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLmpzCkBAIC0zMyw2ICszMyw3IEBACiAgKiBAaW1w
bGVtZW50cyB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyfQogICogQGV4dGVuZHMge1dl
Ykluc3BlY3Rvci5PYmplY3R9CiAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Jc29sYXRlZEZpbGVT
eXN0ZW1Nb2RlbH0gaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwKKyAqIEBwYXJhbSB7c3RyaW5nfSBm
aWxlU3lzdGVtUGF0aAogICovCiBXZWJJbnNwZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3Zp
ZGVyID0gZnVuY3Rpb24oaXNvbGF0ZWRGaWxlU3lzdGVtTW9kZWwsIGZpbGVTeXN0ZW1QYXRoKQog
ewpAQCAtNDYsNiArNDcsMTQgQEAgV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92
aWRlci5fc2NyaXB0RXh0ZW5zaW9ucyA9IFsianMiLCAiamF2YSIsICJjYyIKIAogV2ViSW5zcGVj
dG9yLkZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCisg
ICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAg
ICB7CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkZpbGVTeXN0ZW07
CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAq
LwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2Ny
aXB0U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ph
dmFTY3JpcHRTb3VyY2VGcmFtZS5qcwppbmRleCBmYmEyNWViOGNiMzRjZGM4MzM4MDJmZDQ4ODIx
NDFkNDZjYzRlNDRkLi5kMzMxMTJhZjFiNGQ1YThlM2M1NTVlZWJkMjdjZWI1OWI0OTYyNjIwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRT
b3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ph
dmFTY3JpcHRTb3VyY2VGcmFtZS5qcwpAQCAtMjM0LDcgKzIzNCw3IEBAIFdlYkluc3BlY3Rvci5K
YXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlID0gewogCiAgICAgX3N1cHBvcnRzRW5hYmxl
ZEJyZWFrcG9pbnRzV2hpbGVFZGl0aW5nOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICByZXR1
cm4gdGhpcy5fdWlTb3VyY2VDb2RlLnByb2plY3QoKS5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5w
cm9qZWN0TmFtZXMuU25pcHBldHM7CisgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGUu
cHJvamVjdCgpLnR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0czsK
ICAgICB9LAogCiAgICAgX3Jlc3RvcmVCcmVha3BvaW50c0FmdGVyRWRpdGluZzogZnVuY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaXZlRWRp
dFN1cHBvcnQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0
U3VwcG9ydC5qcwppbmRleCA1NTY4YWQ5MDY0MjAwZmVkMTI3MjljZjM4N2MwYjMyZmVlZjMxYTU5
Li45YTQ5Y2Y4OGY5NTNiMjZjY2VmYWNjNTJkYjVhOTAzOWRlZWUwNDNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9ydC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0xpdmVFZGl0U3VwcG9ydC5qcwpA
QCAtMzQsOSArMzQsNyBAQAogICovCiBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0ID0gZnVu
Y3Rpb24od29ya3NwYWNlKQogewotICAgIHRoaXMuX3dvcmtzcGFjZSA9IHdvcmtzcGFjZTsKLSAg
ICB0aGlzLl93b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3Nw
YWNlUHJvdmlkZXIodGhpcy5fd29ya3NwYWNlKTsKLSAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChX
ZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLkxpdmVFZGl0LCB0aGlzLl93b3Jrc3BhY2VQcm92aWRl
cik7CisgICAgdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBs
ZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5M
aXZlRWRpdCk7CiAgICAgV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuYWRkRXZlbnRMaXN0ZW5l
cihXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuR2xvYmFsT2JqZWN0Q2xlYXJlZCwg
dGhpcy5fZGVidWdnZXJSZXNldCwgdGhpcyk7CiAgICAgdGhpcy5fZGVidWdnZXJSZXNldCgpOwog
fQpAQCAtNjAsOSArNTgsNyBAQCBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0LnByb3RvdHlw
ZSA9IHsKICAgICAgICAgICAgIHJldHVybiB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtz
Y3JpcHQuc2NyaXB0SWRdOwogCiAgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3JpcHQuaXNJbmxp
bmVTY3JpcHQoKSk7Ci0gICAgICAgIHZhciB1cmkgPSAibGl2ZWVkaXQ6IiArIFdlYkluc3BlY3Rv
ci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwodWlTb3VyY2VDb2RlLnVybCk7Ci0g
ICAgICAgIHZhciB1bmlxdWVVUkkgPSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci51bmlxdWVVUkko
dXJpKTsKLSAgICAgICAgdmFyIGxpdmVFZGl0VUlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNl
UHJvdmlkZXIuYWRkRmlsZSh1bmlxdWVVUkksIHVpU291cmNlQ29kZS51cmwsIHNjcmlwdCwgdHJ1
ZSk7CisgICAgICAgIHZhciBsaXZlRWRpdFVJU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVBy
b3ZpZGVyLmFkZFVuaXF1ZUZpbGVGb3JVUkwoc2NyaXB0LnNvdXJjZVVSTCwgc2NyaXB0LCB0cnVl
LCBzY3JpcHQuaXNDb250ZW50U2NyaXB0KTsKIAogICAgICAgICBsaXZlRWRpdFVJU291cmNlQ29k
ZS5zZXRTY3JpcHRGaWxlKG5ldyBXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTY3JpcHRGaWxlKHVpU291
cmNlQ29kZSwgbGl2ZUVkaXRVSVNvdXJjZUNvZGUsIHNjcmlwdC5zY3JpcHRJZCkpOwogICAgICAg
ICB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gbGl2ZUVk
aXRVSVNvdXJjZUNvZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzCmluZGV4IGYyNjUyMzk3YmYxMTBjMWExNDVi
NGUwNDgyMTk2MzI2MWZmZmE3NzkuLmYwMTkzMTcyYjkxMzRmMWYyOGRlNzU3MTQ3ZWNkOTc3ODll
MWRmOTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2Ny
aXB0U25pcHBldE1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0U25pcHBldE1vZGVsLmpzCkBAIC00Niw4ICs0Niw3IEBAIFdlYkluc3BlY3Rvci5T
Y3JpcHRTbmlwcGV0TW9kZWwgPSBmdW5jdGlvbih3b3Jrc3BhY2UpCiAgICAgdGhpcy5fc25pcHBl
dFN0b3JhZ2UgPSBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRTdG9yYWdlKCJzY3JpcHQiLCAiU2Ny
aXB0IHNuaXBwZXQgIyIpOwogICAgIHRoaXMuX2xhc3RTbmlwcGV0RXZhbHVhdGlvbkluZGV4U2V0
dGluZyA9IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5jcmVhdGVTZXR0aW5nKCJsYXN0U25pcHBldEV2
YWx1YXRpb25JbmRleCIsIDApOwogICAgIHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nID0gbmV3
IFdlYkluc3BlY3Rvci5TbmlwcGV0U2NyaXB0TWFwcGluZyh0aGlzKTsKLSAgICB0aGlzLl93b3Jr
c3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIo
dGhpcy5fd29ya3NwYWNlKTsKLSAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3Iu
cHJvamVjdE5hbWVzLlNuaXBwZXRzLCB0aGlzLl93b3Jrc3BhY2VQcm92aWRlcik7CisgICAgdGhp
cy5fd29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVBy
b3ZpZGVyKHRoaXMuX3dvcmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0
cyk7CiAgICAgdGhpcy5yZXNldCgpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFk
ZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2JhbE9i
amVjdENsZWFyZWQsIHRoaXMuX2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwogfQpAQCAtODMsNyArODIs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsLnByb3RvdHlwZSA9IHsKICAgICAg
Ki8KICAgICBfYWRkU2NyaXB0U25pcHBldDogZnVuY3Rpb24oc25pcHBldCkKICAgICB7Ci0gICAg
ICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKHNu
aXBwZXQubmFtZSwgc25pcHBldC5uYW1lLCBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50
UHJvdmlkZXIoc25pcHBldCksIHRydWUpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhp
cy5fd29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTChzbmlwcGV0Lm5hbWUsIG5ldyBXZWJJ
bnNwZWN0b3IuU25pcHBldENvbnRlbnRQcm92aWRlcihzbmlwcGV0KSwgdHJ1ZSk7CiAgICAgICAg
IHZhciBzY3JpcHRGaWxlID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0U2NyaXB0RmlsZSh0aGlz
LCB1aVNvdXJjZUNvZGUpOwogICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3Jp
cHRGaWxlKTsKICAgICAgICAgdGhpcy5fc25pcHBldElkRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNv
dXJjZUNvZGUsIHNuaXBwZXQuaWQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCmluZGV4IGMwZTczYjYxNDM5ZGM1YjQx
ODFkYjA3YTMyYWRhZTA2NGU5ZTA4ZmMuLjVkZTk1OWNjODIxOTIyODZlOTAxYzE1ODE5YTAwMWQ4
NWM3MmMwMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c05hdmlnYXRvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKQEAgLTg0LDcgKzg0LDcgQEAgV2ViSW5zcGVjdG9yLlNj
cmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgaWYgKHVpU291cmNl
Q29kZS5pc0NvbnRlbnRTY3JpcHQpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fY29udGVudFNj
cmlwdHNWaWV3OwotICAgICAgICBlbHNlIGlmICh1aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUo
KSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5TbmlwcGV0cykKKyAgICAgICAgZWxzZSBp
ZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0
VHlwZXMuU25pcHBldHMpCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc25pcHBldHNWaWV3Owog
ICAgICAgICBlbHNlCiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fc2NyaXB0c1ZpZXc7CkBAIC0x
MTQsNyArMTE0LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0g
ewogICAgICAgICB0aGlzLl9uYXZpZ2F0b3JWaWV3Rm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29k
ZSkucmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIGlmICh1aVNvdXJj
ZUNvZGUuaXNDb250ZW50U2NyaXB0KQogICAgICAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxl
Y3RUYWIoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuQ29udGVudFNjcmlwdHNUYWIpOwot
ICAgICAgICBlbHNlIGlmICh1aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUoKSA9PT0gV2ViSW5z
cGVjdG9yLnByb2plY3ROYW1lcy5TbmlwcGV0cykKKyAgICAgICAgZWxzZSBpZiAodWlTb3VyY2VD
b2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBl
dHMpCiAgICAgICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYihXZWJJbnNwZWN0b3Iu
U2NyaXB0c05hdmlnYXRvci5TbmlwcGV0c1RhYik7CiAgICAgICAgIGVsc2UKICAgICAgICAgICAg
IHRoaXMuX3RhYmJlZFBhbmUuc2VsZWN0VGFiKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9y
LlNjcmlwdHNUYWIpOwpAQCAtMjEwLDcgKzIxMCw3IEBAIFdlYkluc3BlY3Rvci5TbmlwcGV0c05h
dmlnYXRvclZpZXcucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9oYW5kbGVFdmFsdWF0ZVNu
aXBwZXQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7Ci0gICAgICAgIGlmICghdWlTb3Vy
Y2VDb2RlLnByb2plY3QoKS5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25p
cHBldHMpCisgICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdl
Ykluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBldHMpCiAgICAgICAgICAgICByZXR1cm47CiAg
ICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuZXZhbHVhdGVTY3JpcHRTbmlw
cGV0KHVpU291cmNlQ29kZSk7CiAgICAgfSwKQEAgLTIyOCw3ICsyMjgsNyBAQCBXZWJJbnNwZWN0
b3IuU25pcHBldHNOYXZpZ2F0b3JWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaGFu
ZGxlUmVtb3ZlU25pcHBldDogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAgICAgICAg
aWYgKCF1aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2pl
Y3ROYW1lcy5TbmlwcGV0cykKKyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUucHJvamVjdCgpLnR5
cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0cykKICAgICAgICAgICAg
IHJldHVybjsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNjcmlwdFNuaXBwZXRNb2RlbC5kZWxldGVT
Y3JpcHRTbmlwcGV0KHVpU291cmNlQ29kZSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNjk4NDZkNjliYWI1
ZDY2ZjA3MDdkZThiYWQyM2Q4ZDZjYTI4ZjhlYy4uMWEwYWI1NGE0MzExMjE3NDAxYWM5YmU3Yjhl
YzBmMjg4MzJhOTZmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTIzOSw3ICsyMzksNiBAQCBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh0aGlzLl90b2dnbGVG
b3JtYXRTb3VyY2VCdXR0b24udG9nZ2xlZCkKICAgICAgICAgICAgIHVpU291cmNlQ29kZS5zZXRG
b3JtYXR0ZWQodHJ1ZSk7Ci0gICAgICAgIHZhciBwcm9qZWN0TmFtZSA9IHVpU291cmNlQ29kZS5w
cm9qZWN0KCkubmFtZSgpOwogICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS5pc1Nl
cnZpY2VQcm9qZWN0KCkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIHRoaXMuX25hdmln
YXRvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKQEAgLTM2MSw3ICszNjAsNyBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHByb2pl
Y3QgPSBldmVudC5kYXRhOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IHByb2plY3QudWlT
b3VyY2VDb2RlcygpOwogICAgICAgICB0aGlzLl9yZW1vdmVVSVNvdXJjZUNvZGVzKHVpU291cmNl
Q29kZXMpOwotICAgICAgICBpZiAocHJvamVjdC5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9q
ZWN0TmFtZXMuTmV0d29yaykKKyAgICAgICAgaWYgKHByb2plY3QudHlwZSgpID09PSBXZWJJbnNw
ZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspCiAgICAgICAgICAgICB0aGlzLl9lZGl0b3JDb250
YWluZXIucmVzZXQoKTsKICAgICB9LAogCkBAIC0zODYsMTIgKzM4NSwxMSBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmIChXZWJJbnNw
ZWN0b3IuZGVidWdnZXJNb2RlbC5kZWJ1Z2dlckVuYWJsZWQoKSAmJiBhbmNob3IudWlTb3VyY2VD
b2RlKQogICAgICAgICAgICAgcmV0dXJuIHRydWU7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVz
ID0gdGhpcy5fd29ya3NwYWNlLnByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3
b3JrKS51aVNvdXJjZUNvZGVzKCk7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3Vy
Y2VDb2Rlcy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZXNbaV0u
b3JpZ2luVVJMKCkgPT09IGFuY2hvci5ocmVmKSB7Ci0gICAgICAgICAgICAgICAgYW5jaG9yLnVp
U291cmNlQ29kZSA9IHVpU291cmNlQ29kZXNbaV07Ci0gICAgICAgICAgICAgICAgcmV0dXJuIHRy
dWU7Ci0gICAgICAgICAgICB9CisgICAgICAgIHZhciB1cmkgPSBXZWJJbnNwZWN0b3IuZmlsZU1h
cHBpbmcudXJpRm9yVVJMKGFuY2hvci5ocmVmKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IHRoaXMuX3dvcmtzcGFjZS51aVNvdXJjZUNvZGVGb3JVUkkodXJpKTsKKyAgICAgICAgaWYgKHVp
U291cmNlQ29kZSkgeworICAgICAgICAgICAgYW5jaG9yLnVpU291cmNlQ29kZSA9IHVpU291cmNl
Q29kZTsKKyAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
biBmYWxzZTsKICAgICB9LApAQCAtNDU1LDcgKzQ1Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlID0gewogICAgICAgICB2YXIgc291cmNlRnJhbWU7CiAgICAgICAgIHN3
aXRjaCAodWlTb3VyY2VDb2RlLmNvbnRlbnRUeXBlKCkpIHsKICAgICAgICAgY2FzZSBXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQ6Ci0gICAgICAgICAgICBpZiAodWlTb3VyY2VDb2Rl
LnByb2plY3QoKS5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMp
CisgICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYklu
c3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBldHMpCiAgICAgICAgICAgICAgICAgc291cmNlRnJh
bWUgPSBuZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRKYXZhU2NyaXB0U291cmNlRnJhbWUodGhpcywg
dWlTb3VyY2VDb2RlKTsKICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICBzb3VyY2VG
cmFtZSA9IG5ldyBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lKHRoaXMsIHVpU291
cmNlQ29kZSk7CkBAIC0xMDM0LDcgKzEwMzIsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5
cGUge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhLnVpU291cmNlQ29k
ZSk7CiAgICAgICAgIHZhciBuYW1lID0gLyoqIEB0eXBlIHtzdHJpbmd9ICovIChldmVudC5kYXRh
Lm5hbWUpOwotICAgICAgICBpZiAoIXVpU291cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpID09PSBX
ZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLlNuaXBwZXRzKQorICAgICAgICBpZiAoIXVpU291cmNl
Q29kZS5wcm9qZWN0KCkudHlwZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLlNuaXBw
ZXRzKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25p
cHBldE1vZGVsLnJlbmFtZVNjcmlwdFNuaXBwZXQodWlTb3VyY2VDb2RlLCBuYW1lKTsKICAgICB9
LApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVX
b3Jrc3BhY2VQcm92aWRlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanMKaW5kZXggYzc1NDcwMTUzNjdkOGNlMjNjODYyYmVi
NGVhOTdhNTFiOWVkMGQ4Ni4uMzE3MGU5MDQ1ZTZiOTgwMjY3NzQyMWQyYmE1NzQzMGVhNzAwYmM2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TaW1wbGVX
b3Jrc3BhY2VQcm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLmpzCkBAIC0zMiwyNyArMzIsNDEgQEAKICAqIEBj
b25zdHJ1Y3RvcgogICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRl
cn0KICAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuV29ya3NwYWNlfSB3b3Jrc3BhY2UKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgKi8K
LVdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtzcGFj
ZSkKK1dlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlciA9IGZ1bmN0aW9uKHdvcmtz
cGFjZSwgdHlwZSkKIHsKICAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhp
cy5fdHlwZSA9IHR5cGU7CiAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVj
dG9yLkNvbnRlbnRQcm92aWRlcj59ICovCiAgICAgdGhpcy5fY29udGVudFByb3ZpZGVycyA9IHt9
OwogICAgIHRoaXMuX2xhc3RVbmlxdWVTdWZmaXggPSAwOworICAgIHRoaXMuX3dvcmtzcGFjZS5h
ZGRQcm9qZWN0KHRoaXMuX3R5cGUsIHRoaXMpOwogfQogCiAvKioKICAqIEBwYXJhbSB7c3RyaW5n
fSB1cmwKKyAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCiAgKiBAcmV0dXJuIHtzdHJpbmd9CiAgKi8K
LVdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwgPSBmdW5jdGlv
bih1cmwpCitXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMID0g
ZnVuY3Rpb24odXJsLCB0eXBlKQogewotICAgIHZhciB1cmkgPSB1cmw7CisgICAgdmFyIHVyaVR5
cGVQcmVmaXggPSB0eXBlICE9PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmsgPyAo
dHlwZSArICI6IikgOiAiIjsKKyAgICB2YXIgdXJpID0gdXJpVHlwZVByZWZpeCArIHVybDsKICAg
ICByZXR1cm4gdXJpOwogfSwKIAogV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVy
LnByb3RvdHlwZSA9IHsKICAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICov
CisgICAgdHlwZTogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3R5cGU7
CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBA
cGFyYW0ge2Z1bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAq
LwpAQCAtODQsMjAgKzk4LDI2IEBAIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRl
ci5wcm90b3R5cGUgPSB7CiAgICAgICAgIGNvbnRlbnRQcm92aWRlci5zZWFyY2hJbkNvbnRlbnQo
cXVlcnksIGNhc2VTZW5zaXRpdmUsIGlzUmVnZXgsIGNhbGxiYWNrKTsKICAgICB9LAogCisgICAv
KioKKyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0
b3IuQ29udGVudFByb3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKKyAgICAgKiBAcGFyYW0ge2Jvb2xl
YW59IGlzRWRpdGFibGUKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0NvbnRlbnRTY3JpcHQK
KyAgICAgKi8KKyAgICBhZGRGaWxlRm9yVVJMOiBmdW5jdGlvbih1cmwsIGNvbnRlbnRQcm92aWRl
ciwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRo
aXMuX2lubmVyQWRkRmlsZUZvclVSTCh1cmwsIGNvbnRlbnRQcm92aWRlciwgaXNFZGl0YWJsZSwg
ZmFsc2UsIGlzQ29udGVudFNjcmlwdCk7CisgICAgfSwKKwogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7c3RyaW5nfSB1cmkKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJsCiAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuQ29udGVudFByb3ZpZGVyfSBjb250ZW50UHJvdmlkZXIKICAgICAgKiBA
cGFyYW0ge2Jvb2xlYW59IGlzRWRpdGFibGUKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49fSBpc0Nv
bnRlbnRTY3JpcHQKICAgICAgKi8KLSAgICBhZGRGaWxlOiBmdW5jdGlvbih1cmksIHVybCwgY29u
dGVudFByb3ZpZGVyLCBpc0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpCisgICAgYWRkVW5pcXVl
RmlsZUZvclVSTDogZnVuY3Rpb24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlz
Q29udGVudFNjcmlwdCkKICAgICB7Ci0gICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250
ZW50UHJvdmlkZXJzW3VyaV0pOwotICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBuZXcgV2Vi
SW5zcGVjdG9yLkZpbGVEZXNjcmlwdG9yKHVyaSwgdXJsLCB1cmwsIGNvbnRlbnRQcm92aWRlci5j
b250ZW50VHlwZSgpLCBpc0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpOwotICAgICAgICB0aGlz
Ll9jb250ZW50UHJvdmlkZXJzW3VyaV0gPSBjb250ZW50UHJvdmlkZXI7Ci0gICAgICAgIHRoaXMu
ZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5F
dmVudHMuRmlsZUFkZGVkLCBmaWxlRGVzY3JpcHRvcik7Ci0gICAgICAgIHJldHVybiB0aGlzLl93
b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CisgICAgICAgIHJldHVybiB0aGlzLl9p
bm5lckFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIHRydWUs
IGlzQ29udGVudFNjcmlwdCk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMTA2LDEyICsxMjYsMTkg
QEAgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAg
ICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRWRpdGFibGUKICAgICAgKiBAcGFyYW0ge2Jvb2xlYW49
fSBpc0NvbnRlbnRTY3JpcHQKICAgICAgKi8KLSAgICBhZGRGaWxlRm9yVVJMOiBmdW5jdGlvbih1
cmwsIGNvbnRlbnRQcm92aWRlciwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KQorICAgIF9p
bm5lckFkZEZpbGVGb3JVUkw6IGZ1bmN0aW9uKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRh
YmxlLCBmb3JjZVVuaXF1ZSwgaXNDb250ZW50U2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHVy
aSA9IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwodXJsKTsK
LSAgICAgICAgcmV0dXJuIHRoaXMuYWRkRmlsZSh1cmksIHVybCwgY29udGVudFByb3ZpZGVyLCBp
c0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpOworICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVj
dG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCh1cmwsIHRoaXMuX3R5cGUpOwor
ICAgICAgICBpZiAoZm9yY2VVbmlxdWUpCisgICAgICAgICAgICB1cmkgPSB0aGlzLl91bmlxdWVV
UkkodXJpKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoIXRoaXMuX2NvbnRlbnRQcm92aWRlcnNb
dXJpXSk7CisgICAgICAgIHZhciBmaWxlRGVzY3JpcHRvciA9IG5ldyBXZWJJbnNwZWN0b3IuRmls
ZURlc2NyaXB0b3IodXJpLCB1cmwsIHVybCwgY29udGVudFByb3ZpZGVyLmNvbnRlbnRUeXBlKCks
IGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCk7CisgICAgICAgIHRoaXMuX2NvbnRlbnRQcm92
aWRlcnNbdXJpXSA9IGNvbnRlbnRQcm92aWRlcjsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50
VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50cy5GaWxlQWRk
ZWQsIGZpbGVEZXNjcmlwdG9yKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZS51aVNv
dXJjZUNvZGVGb3JVUkkodXJpKTsKICAgICB9LAogCisKICAgICAvKioKICAgICAgKiBAcGFyYW0g
e3N0cmluZ30gdXJpCiAgICAgICovCkBAIC0xMjUsNyArMTUyLDcgQEAgV2ViSW5zcGVjdG9yLlNp
bXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdXJpCiAgICAgICogQHJldHVybiB7c3RyaW5nfQogICAgICAqLwotICAgIHVuaXF1ZVVSSTog
ZnVuY3Rpb24odXJpKQorICAgIF91bmlxdWVVUkk6IGZ1bmN0aW9uKHVyaSkKICAgICB7CiAgICAg
ICAgIHZhciB1bmlxdWVVUkkgPSB1cmk7CiAgICAgICAgIHdoaWxlICh0aGlzLl9jb250ZW50UHJv
dmlkZXJzW3VuaXF1ZVVSSV0pCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dvcmtzcGFjZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvV29ya3NwYWNlLmpzCmluZGV4IGYxNTUyMmIzZjA1NjBmMmM4MTA3MDU2YTk0MDU2MTY2ZGZi
ZjdkODIuLmUyNmFjNTljNWU1MGM0YTcwZmE0NDc3NjI5NGMwZmI1ZDcwYWU3ZDUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV29ya3NwYWNlLmpzCkBAIC03OSw2
ICs3OSwxMSBAQCBXZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIuRXZlbnRzID0gewogCiBX
ZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlID0gewogICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB0eXBlOiBmdW5jdGlvbigpIHsgfSwK
KworICAgIC8qKgogICAgICAqIEBwYXJhbSB7c3RyaW5nfSB1cmkKICAgICAgKiBAcGFyYW0ge2Z1
bmN0aW9uKD9zdHJpbmcsYm9vbGVhbixzdHJpbmcpfSBjYWxsYmFjawogICAgICAqLwpAQCAtMTQ4
LDExICsxNTMsMTkgQEAgV2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAgIH0s
CiAKICAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdHlwZTog
ZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVy
LnR5cGUoKTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHJldHVybiB7Ym9vbGVhbn0KICAg
ICAgKi8KICAgICBpc1NlcnZpY2VQcm9qZWN0OiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICBy
ZXR1cm4gdGhpcy5fbmFtZSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5EZWJ1Z2dlciB8
fCB0aGlzLl9uYW1lID09PSBXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLkxpdmVFZGl0OworICAg
ICAgICByZXR1cm4gdGhpcy5fcHJvamVjdERlbGVnYXRlLnR5cGUoKSA9PT0gV2ViSW5zcGVjdG9y
LnByb2plY3RUeXBlcy5EZWJ1Z2dlciB8fCB0aGlzLl9wcm9qZWN0RGVsZWdhdGUudHlwZSgpID09
PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkxpdmVFZGl0OwogICAgIH0sCiAKICAgICBfZmls
ZUFkZGVkOiBmdW5jdGlvbihldmVudCkKQEAgLTI1NCwxMiArMjY3LDEzIEBAIFdlYkluc3BlY3Rv
ci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsKICAgICB9CiB9CiAKLVdlYkluc3BlY3Rvci5wcm9qZWN0
TmFtZXMgPSB7CitXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzID0gewogICAgIERlYnVnZ2VyOiAi
ZGVidWdnZXIiLAogICAgIExpdmVFZGl0OiAibGl2ZWVkaXQiLAogICAgIENvbXBpbGVyOiAiY29t
cGlsZXIiLAogICAgIE5ldHdvcms6ICJuZXR3b3JrIiwKLSAgICBTbmlwcGV0czogInNuaXBwZXRz
IgorICAgIFNuaXBwZXRzOiAic25pcHBldHMiLAorICAgIEZpbGVTeXN0ZW06ICJmaWxlc3lzdGVt
IgogfQogCiAvKioKQEAgLTI4NSw3ICsyOTksMTQgQEAgV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5w
cm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgdWlTb3VyY2VDb2RlRm9yT3JpZ2luVVJMOiBmdW5j
dGlvbihvcmlnaW5VUkwpCiAgICAgewotICAgICAgICByZXR1cm4gdGhpcy5fcHJvamVjdHNbV2Vi
SW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrXS51aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkwo
b3JpZ2luVVJMKTsKKyAgICAgICAgdmFyIG5ldHdvcmtQcm9qZWN0cyA9IHRoaXMucHJvamVjdHNG
b3JUeXBlKFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yaykKKyAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBuZXR3b3JrUHJvamVjdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAg
IHZhciBwcm9qZWN0ID0gbmV0d29ya1Byb2plY3RzW2ldOworICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHByb2plY3QudWlTb3VyY2VDb2RlRm9yT3JpZ2luVVJMKG9yaWdpblVSTCk7Cisg
ICAgICAgICAgICBpZiAodWlTb3VyY2VDb2RlKQorICAgICAgICAgICAgICAgIHJldHVybiB1aVNv
dXJjZUNvZGU7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIG51bGw7CiAgICAgfSwKIAogICAg
IC8qKgpAQCAtMzA0LDYgKzMyNSwyMSBAQCBXZWJJbnNwZWN0b3IuV29ya3NwYWNlLnByb3RvdHlw
ZSA9IHsKICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHR5cGUKKyAg
ICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59CisgICAgICov
CisgICAgdWlTb3VyY2VDb2Rlc0ZvclByb2plY3RUeXBlOiBmdW5jdGlvbih0eXBlKQorICAgIHsK
KyAgICAgICAgdmFyIHJlc3VsdCA9IFtdOworICAgICAgICBmb3IgKHZhciBwcm9qZWN0TmFtZSBp
biB0aGlzLl9wcm9qZWN0cykgeworICAgICAgICAgICAgdmFyIHByb2plY3QgPSB0aGlzLl9wcm9q
ZWN0c1twcm9qZWN0TmFtZV07CisgICAgICAgICAgICBpZiAocHJvamVjdC50eXBlKCkgPT09IHR5
cGUpCisgICAgICAgICAgICAgICAgcmVzdWx0ID0gcmVzdWx0LmNvbmNhdChwcm9qZWN0LnVpU291
cmNlQ29kZXMoKSk7CisgICAgICAgIH0KKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAor
CisgICAgLyoqCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHByb2plY3ROYW1lCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJvdmlkZXJ9IHdvcmtzcGFjZVByb3ZpZGVyCiAg
ICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlByb2plY3R9CkBAIC0zNDQsNiArMzgwLDE5IEBA
IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioK
KyAgICAgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJ
bnNwZWN0b3IuUHJvamVjdD59CisgICAgICovCisgICAgcHJvamVjdHNGb3JUeXBlOiBmdW5jdGlv
bih0eXBlKQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZmlsdGVyQnlUeXBlKHByb2plY3QpCisg
ICAgICAgIHsKKyAgICAgICAgICAgIHJldHVybiBwcm9qZWN0LnR5cGUoKSA9PT0gdHlwZTsKKyAg
ICAgICAgfQorICAgICAgICByZXR1cm4gdGhpcy5wcm9qZWN0cygpLmZpbHRlcihmaWx0ZXJCeVR5
cGUpOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcmV0dXJuIHtBcnJheS48V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZT59CiAgICAgICovCiAgICAgdWlTb3VyY2VDb2RlczogZnVuY3Rpb24o
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0
b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpp
bmRleCBkNzY5N2Q3MTVkYTJkNzZhY2M0YTlmYjZmZWEyNDk0MzM0YjZhZmIwLi44YTI3YjA5ZTY1
NzM0YzZmYTUyMDIyZDY5OGYwYTYxNTRjY2Y5MjcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDM5LDggKzQzOSw3IEBAIFdlYklu
c3BlY3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKICAgICB0
aGlzLmlzb2xhdGVkRmlsZVN5c3RlbURpc3BhdGNoZXIgPSBuZXcgV2ViSW5zcGVjdG9yLklzb2xh
dGVkRmlsZVN5c3RlbURpc3BhdGNoZXIodGhpcy5pc29sYXRlZEZpbGVTeXN0ZW1Nb2RlbCk7CiAg
ICAgdGhpcy5maWxlTWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRmlsZU1hcHBpbmcodGhpcy5p
c29sYXRlZEZpbGVTeXN0ZW1Nb2RlbC5tYXBwaW5nKCkpOwogCi0gICAgdGhpcy5uZXR3b3JrV29y
a3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVy
KHRoaXMud29ya3NwYWNlKTsKLSAgICB0aGlzLndvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3Bl
Y3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaywgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIp
OworICAgIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5T
aW1wbGVXb3Jrc3BhY2VQcm92aWRlcih0aGlzLndvcmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2pl
Y3RUeXBlcy5OZXR3b3JrKTsKICAgICBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJjZUNv
ZGVQcm92aWRlcih0aGlzLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CiAKICAgICB0aGlzLmJy
ZWFrcG9pbnRNYW5hZ2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihXZWJJ
bnNwZWN0b3Iuc2V0dGluZ3MuYnJlYWtwb2ludHMsIHRoaXMuZGVidWdnZXJNb2RlbCwgdGhpcy53
b3Jrc3BhY2UpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVz
dHMvQ2hhbmdlTG9nCmluZGV4IDYzNTNhZWNkMmY5ZjhhYjczYjVjMWViNWQ1OTc2ZmRiYWQyYjZk
MGEuLjk0ZGVmMjMyYzBlZTUyNjNmNGE3NGY5NjRiNGU2MTkyZmFiM2I0ODEgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEs
NSArMSwyNSBAQAogMjAxMy0wMi0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVt
Lm9yZz4KIAorICAgICAgICBXZWIgSW5zcGVjdG9yOiBJbnRyb2R1Y2Ugd29ya3NwYWNlIHByb3Zp
ZGVyL3Byb2plY3QgdHlwZSwgZW5jYXBzdWxhdGUgdXJpIGNyZWF0aW9uIGluIFNpbXBsZVdvcmtz
cGFjZVByb3ZpZGVyLgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9MTA5MjgyCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAg
ICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2R5bmFtaWMtc2NyaXB0cy5odG1s
OgorICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5n
Lmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Ivd29ya3NwYWNlLXRlc3QuanM6
CisgICAgICAgIChpbml0aWFsaXplX1dvcmtzcGFjZVRlc3QuSW5zcGVjdG9yVGVzdC5jcmVhdGVX
b3Jrc3BhY2UpOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFn
ZXIuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHRzLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0
bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5o
dG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWw6Cisg
ICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQ6
CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWw6CisKKzIwMTMtMDIt
MDcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKICAgICAgICAgV2Vi
IEluc3BlY3RvcjogUmVwbGFjZSB3b3Jrc3BhY2Ugd2l0aCBwcm9qZWN0IGluIFVJU291cmNlQ29k
ZSBjb25zdHJ1Y3Rvci4KICAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcu
Y2dpP2lkPTEwOTI1NgogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci1lbmFibGVkL2R5bmFtaWMtc2NyaXB0cy5odG1sIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0
cy9pbnNwZWN0b3ItZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbAppbmRleCBiYjk1MmI1OTdi
MWQ5NTdiYTFkN2YzMTZhOTQxNDU2NWI2NTQ2OGE1Li42NWJhMWVjN2UyYjFlNTlmZDhhYzhhY2Yx
YWU1ZmVlMzAyYmEwZTM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3Bl
Y3Rvci1lbmFibGVkL2R5bmFtaWMtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZHluYW1pYy1zY3JpcHRzLmh0bWwKQEAgLTUxLDcgKzUx
LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKICAgICAg
ICAgdmFyIHBhbmVsID0gV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UucHJvamVjdChXZWJJ
bnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmspLnVpU291cmNlQ29kZXMoKTsKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291cmNlQ29kZXNG
b3JQcm9qZWN0VHlwZShXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwogICAgICAg
ICB2YXIgdXJscyA9IHVpU291cmNlQ29kZXMubWFwKGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyBy
ZXR1cm4gdWlTb3VyY2VDb2RlLnBhcnNlZFVSTC5sYXN0UGF0aENvbXBvbmVudDsgfSk7CiAgICAg
ICAgIHVybHMuc29ydCgpOwogICAgICAgICAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0
cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sCmluZGV4
IDBkNzgzOWQ1ZDRmZDk0ZThmMjFjN2U3ZThjZjQ3YTBhMGIyZjhhNTEuLjk4NjdhZDIxYmE5N2U0
MTE5ZjViYzg0YjRiZmNmN2E4OTI1ZTRmMWYgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAv
dGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBwaW5nLmh0bWwKKysrIGIvTGF5b3V0
VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcuaHRtbApA
QCAtMzEwLDggKzMxMCw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgV2ViSW5zcGVj
dG9yLnNldHRpbmdzLnNvdXJjZU1hcHNFbmFibGVkLnNldCh0cnVlKTsKICAgICAgICAgICAgIFdl
Ykluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLl9yZXNldCgpOwogICAgICAgICAgICAgdmFyIHdvcmtz
cGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7Ci0gICAgICAgICAgICB2YXIgbmV0
d29ya1dvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlcih3b3Jrc3BhY2UpOwotICAgICAgICAgICAgd29ya3NwYWNlLmFkZFByb2plY3QoV2Vi
SW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIp
OworICAgICAgICAgICAgdmFyIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJv
amVjdFR5cGVzLk5ldHdvcmspOwogICAgICAgICAgICAgdmFyIGRlYnVnZ2VyU2NyaXB0TWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nKHdvcmtzcGFjZSwgbmV0
d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKIAogICAgICAgICAgICAgdmFyIHNjcmlwdCA9IEluc3Bl
Y3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiY29tcGlsZWQuanMiLCAwLCAwLCB0cnVlLCAiIik7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2Ut
dGVzdC5qcyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0
LmpzCmluZGV4IGQ1MDZiZDkyMjkwOWVhMjU1NjM2YjY2Y2ZiYTU3YmQ5MDk2YmQzM2QuLmNhYmQy
ZmI1YmRjODRiOGNmNjVkNWFkMGUyMTYwOWYzODA5NDNjYTAgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0LmpzCisrKyBiL0xheW91dFRl
c3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL3dvcmtzcGFjZS10ZXN0LmpzCkBAIC00LDggKzQsNyBA
QCBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2U7CiBJbnNwZWN0b3JUZXN0LmNyZWF0ZVdvcmtz
cGFjZSA9IGZ1bmN0aW9uKCkKIHsKICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UgPSBu
ZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOwotICAgIEluc3BlY3RvclRlc3QudGVzdE5ldHdv
cmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlKTsKLSAgICBJbnNwZWN0b3JUZXN0LnRl
c3RXb3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmss
IEluc3BlY3RvclRlc3QudGVzdE5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CisgICAgSW5zcGVj
dG9yVGVzdC50ZXN0TmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5T
aW1wbGVXb3Jrc3BhY2VQcm92aWRlcihJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UsIFdlYklu
c3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CiAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVy
LkV2ZW50cy5VSVNvdXJjZUNvZGVBZGRlZCwgSW5zcGVjdG9yVGVzdC5fZGVmYXVsdFVJU291cmNl
Q29kZVByb3ZpZGVyRXZlbnRIYW5kbGVyKTsKICAgICBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3Bh
Y2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZl
bnRzLlVJU291cmNlQ29kZVJlbW92ZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1bHRVSVNvdXJjZUNv
ZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CiB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKaW5kZXggYzQzYTVlZmY3MmFl
NDQyYTE4OTMwY2YyOWQ1OTE0NmQ3ZWNhZDUxYy4uZTNjOWM3NjcwZjdkM2IyYTMyYTc3NmQxMmQ3
MjU3ODEyODZjMWJjNyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1
Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbApAQCAtMTYzLDkgKzE2Myw3IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5fYWRkU2Ny
aXB0KHVybCwgdXJsKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAgQWRkaW5n
IHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6ICIgKyB1cmwgKyAiKSIpOwogICAgICAgICB2YXIgY29u
dGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIoV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIiwgInRleHQvamF2YXNjcmlwdCIpOwot
ICAgICAgICB2YXIgdXJpID0gImRlYnVnZ2VyOiIgKyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3Nw
YWNlUHJvdmlkZXIudXJpRm9yVVJMKHVybCk7Ci0gICAgICAgIHZhciB1bmlxdWVVUkkgPSBicmVh
a3BvaW50TWFuYWdlci5fZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlci51bmlxdWVVUkkodXJpKTsK
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IGJyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlcldv
cmtzcGFjZVByb3ZpZGVyLmFkZEZpbGUodW5pcXVlVVJJLCB1cmwsIGNvbnRlbnRQcm92aWRlciwg
ZmFsc2UpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gYnJlYWtwb2ludE1hbmFnZXIuX2Rl
YnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIuYWRkVW5pcXVlRmlsZUZvclVSTCh1cmwsIGNvbnRlbnRQ
cm92aWRlciwgdHJ1ZSk7CiAgICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VNYXBwaW5nKGRl
ZmF1bHRNYXBwaW5nKTsKICAgICAgICAgdWlTb3VyY2VDb2Rlc1t1cmxdID0gdWlTb3VyY2VDb2Rl
OwogICAgICAgICByZXR1cm4gdWlTb3VyY2VDb2RlOwpAQCAtMTkzLDEyICsxOTEsOCBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWwgPSBuZXcgRGVidWdnZXJNb2Rl
bE1vY2soc291cmNlTWFwcGluZyk7CiAgICAgICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5z
cGVjdG9yLldvcmtzcGFjZSgpOwogICAgICAgICB2YXIgYnJlYWtwb2ludE1hbmFnZXIgPSBuZXcg
V2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyKHNldHRpbmcsIGRlYnVnZ2VyTW9kZWwsIHdv
cmtzcGFjZSk7Ci0KLSAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX25ldHdvcmtXb3Jrc3BhY2VQ
cm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3Nw
YWNlKTsKLSAgICAgICAgd29ya3NwYWNlLmFkZFByb2plY3QoIm5ldHdvcmsiLCBicmVha3BvaW50
TWFuYWdlci5fbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKLSAgICAgICAgYnJlYWtwb2ludE1h
bmFnZXIuX2RlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBs
ZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSk7Ci0gICAgICAgIHdvcmtzcGFjZS5hZGRQcm9q
ZWN0KCJkZWJ1Z2dlciIsIGJyZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlcldvcmtzcGFjZVByb3Zp
ZGVyKTsKLQorICAgICAgICBicmVha3BvaW50TWFuYWdlci5fbmV0d29ya1dvcmtzcGFjZVByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2Us
IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CisgICAgICAgIGJyZWFrcG9pbnRN
YW5hZ2VyLl9kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1w
bGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMu
RGVidWdnZXIpOwogICAgICAgICBicmVha3BvaW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVyKFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMuQnJlYWtwb2ludEFkZGVkLCBicmVh
a3BvaW50QWRkZWQpOwogICAgICAgICBicmVha3BvaW50TWFuYWdlci5hZGRFdmVudExpc3RlbmVy
KFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMuQnJlYWtwb2ludFJlbW92ZWQs
IGJyZWFrcG9pbnRSZW1vdmVkKTsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiAg
Q3JlYXRlZCBicmVha3BvaW50cyBtYW5hZ2VyIik7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9p
bnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHRzLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHRzLmh0bWwKaW5kZXggZTllMThmZDQ4MmU1Yjdm
NDFhZDc2MTNjNDQ3MjYxMjRjMDI5MGQ2ZC4uNjA3ZjMzODY5NmFhODY5NTVmODQwNjU5Yzk4OGJi
YTAxNzY4N2M3ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5
bmFtaWMtc2NyaXB0cy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9k
eW5hbWljLXNjcmlwdHMuaHRtbApAQCAtNDgsNyArNDgsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICBmdW5jdGlvbiBzdGVwMygpCiAgICAgewogICAgICAgICB2YXIgcGFuZWwgPSBXZWJJbnNwZWN0
b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gV2Vi
SW5zcGVjdG9yLndvcmtzcGFjZS5wcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0
d29yaykudWlTb3VyY2VDb2RlcygpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYklu
c3BlY3Rvci53b3Jrc3BhY2UudWlTb3VyY2VDb2Rlc0ZvclByb2plY3RUeXBlKFdlYkluc3BlY3Rv
ci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CiAgICAgICAgIHZhciB1cmxzID0gdWlTb3VyY2VDb2Rl
cy5tYXAoZnVuY3Rpb24odWlTb3VyY2VDb2RlKSB7IHJldHVybiB1aVNvdXJjZUNvZGUucGFyc2Vk
VVJMLmxhc3RQYXRoQ29tcG9uZW50OyB9KTsKICAgICAgICAgdXJscy5zb3J0KCk7CiAKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2Rl
bC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1v
ZGVsLmh0bWwKaW5kZXggOTRiYzZiOGIyOWI4MDllY2NhNjM5ODAwNDg0YTE0YTM0YzZjZjkwYi4u
NWRkYTZiODdlMzEzZjc0MTZkOWRkY2E4M2I4NmVhMDY4M2VlYTE5ZCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0bWwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdC1zbmlwcGV0LW1vZGVsLmh0
bWwKQEAgLTE1LDggKzE1LDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgV2ViSW5zcGVjdG9yLmV4
cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0ID0ge307CiAgICAgV2ViSW5zcGVjdG9y
LmV4cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCA9IGZ1bmN0aW9u
KCkgeyByZXR1cm4gdHJ1ZTsgfTsKICAgICB2YXIgd29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rv
ci5Xb3Jrc3BhY2UoKTsKLSAgICB2YXIgc25pcHBldFdvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdl
Ykluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UpOwotICAgIHdvcmtz
cGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMsIHNuaXBw
ZXRXb3Jrc3BhY2VQcm92aWRlcik7CisgICAgdmFyIHNuaXBwZXRXb3Jrc3BhY2VQcm92aWRlciA9
IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJ
bnNwZWN0b3IucHJvamVjdFR5cGVzLlNuaXBwZXRzKTsKICAgICB2YXIgd29ya3NwYWNlQ29udHJv
bGxlciA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlQ29udHJvbGxlcih3b3Jrc3BhY2UpOwog
ICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNj
cmlwdFNuaXBwZXRNb2RlbCh3b3Jrc3BhY2UsIHNuaXBwZXRXb3Jrc3BhY2VQcm92aWRlcik7CiAg
ICAgSW5zcGVjdG9yVGVzdC5ydW5EZWJ1Z2dlclRlc3RTdWl0ZShbCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9yLmh0bWwK
aW5kZXggMTdiNWUyNGRlMDk5ZTQzYTljYWEzMmE4OTg3MjU3MzVlNTFlYzE2Mi4uNTcyZTJiZjVj
YjJkZWEwODRmZjYzNTk4MWVkYmY4M2VhNWVhZjM4MSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rvci5odG1sCisrKyBiL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRtbApAQCAt
MTAsMTkgKzEwLDE2IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIFdlYkluc3BlY3Rvci5faXNNYWMg
PSBmYWxzZTsKIAogICAgIFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMiKTsKLSAgICB2
YXIgbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yKCk7CiAKLSAg
ICB2YXIgTW9ja1Byb2plY3QgPSBmdW5jdGlvbigpIHt9Ci0gICAgTW9ja1Byb2plY3QucHJvdG90
eXBlLm5hbWUgPSBmdW5jdGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIm5ldHdvcmsiOwot
ICAgIH0KKyAgICB2YXIgbmF2aWdhdG9yID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdh
dG9yKCk7CisgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7
CisgICAgdmFyIHdvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jr
c3BhY2VQcm92aWRlcih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29y
ayk7CiAKICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFtdOwogICAgIGZ1bmN0aW9uIGFkZFVJU291
cmNlQ29kZSh1cmwsIGlzQ29udGVudFNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShuZXcgTW9ja1Byb2plY3QoKSwg
dXJsLCB1cmwsIHVybCwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBudWxsKTsK
LSAgICAgICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsK
KyAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29u
dGVudFByb3ZpZGVyKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0
L2phdmFzY3JpcHQiKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHdvcmtzcGFjZVByb3Zp
ZGVyLmFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlLCBpc0NvbnRlbnRT
Y3JpcHQpOwogICAgICAgICBuYXZpZ2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
CiAgICAgICAgIHVpU291cmNlQ29kZXMucHVzaCh1aVNvdXJjZUNvZGUpOwogICAgIH0KZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCmluZGV4
IDgzY2QxMmNmMDc5ZjYzODYxZjE3YzVjNDkwMDhiOGRjNzU2MzBiYmMuLmNjYzkwYjAzMGRmMWI1
MTI3Y2M3YmMwMzZlZWIyYTZkNjE2NmI2OWMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbApAQCAtMTUsMzggKzE1LDQ4IEBAIGZ1bmN0
aW9uIHRlc3QoKQogICAgICAgICBzZXQ6IGZ1bmN0aW9uKGJyZWFrcG9pbnRzKSB7IHBlcnNpc3Rl
bnRCcmVha3BvaW50cyA9IGJyZWFrcG9pbnRzOyB9CiAgICAgfTsKIAotICAgIHZhciBjb250ZW50
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQcm92aWRlcihXZWJJbnNw
ZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICIiLCAidGV4dC9qYXZhc2NyaXB0Iik7Ci0KLSAg
ICBmdW5jdGlvbiBjcmVhdGVNb2NrV29ya3NwYWNlKCkKKyAgICBmdW5jdGlvbiBjcmVhdGVDb250
ZW50UHJvdmlkZXIodXJsKQogICAgIHsKLSAgICAgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuV29ya3NwYWNlKCk7Ci0gICAgICAgIHZhciBuZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSk7
Ci0gICAgICAgIHZhciBwcm9qZWN0ID0gd29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9y
LnByb2plY3ROYW1lcy5OZXR3b3JrLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwotCi0gICAg
ICAgIHdvcmtzcGFjZS5kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UpOwotICAgICAgICB3b3Jrc3BhY2Uu
YWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLkRlYnVnZ2VyLCB3b3Jrc3BhY2Uu
ZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAgICAgIHByb2plY3QucmVxdWVzdEZpbGVD
b250ZW50ID0gZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBjYWxsYmFjaykKKyAgICAgICAgdmFyIGNv
bnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFByb3ZpZGVyKFdl
Ykluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0L2phdmFzY3JpcHQiKTsK
KyAgICAgICAgY29udGVudFByb3ZpZGVyLnJlcXVlc3RDb250ZW50ID0gZnVuY3Rpb24oY2FsbGJh
Y2spCiAgICAgICAgIHsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTb3Vy
Y2UgcmVxdWVzdGVkIGZvciAiICsgdWlTb3VyY2VDb2RlLm9yaWdpblVSTCgpKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJTb3VyY2UgcmVxdWVzdGVkIGZvciAiICsgdXJs
KTsKICAgICAgICAgICAgIGNhbGxiYWNrKCIiKTsKICAgICAgICAgfTsKLSAgICAgICAgd29ya3Nw
YWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcjsK
KyAgICAgICAgcmV0dXJuIGNvbnRlbnRQcm92aWRlcjsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBj
cmVhdGVNb2NrV29ya3NwYWNlKCkKKyAgICB7CisgICAgICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcg
V2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOworICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtz
cGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3
b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CisgICAgICAgIHdv
cmtzcGFjZS5kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1w
bGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMu
RGVidWdnZXIpOwogICAgICAgICByZXR1cm4gd29ya3NwYWNlOwogICAgIH0KIAorICAgIGZ1bmN0
aW9uIGFkZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwgdXJsKQorICAgIHsKKyAgICAgICAgd29ya3Nw
YWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKHVybCwgY3JlYXRlQ29u
dGVudFByb3ZpZGVyKHVybCksIGZhbHNlKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBhZGREZWJ1
Z2dlckZpbGUod29ya3NwYWNlLCB1cmwpCisgICAgeworICAgICAgICB3b3Jrc3BhY2UuZGVidWdn
ZXJXb3Jrc3BhY2VQcm92aWRlci5hZGRVbmlxdWVGaWxlRm9yVVJMKHVybCwgY3JlYXRlQ29udGVu
dFByb3ZpZGVyKHVybCksIGZhbHNlKTsKKyAgICB9CisKICAgICBJbnNwZWN0b3JUZXN0LnJ1blRl
c3RTdWl0ZShbCiAgICAgICAgIGZ1bmN0aW9uIHRlc3RJbml0aWFsTG9hZChuZXh0KQogICAgICAg
ICB7CiAgICAgICAgICAgICB2YXIgd29ya3NwYWNlID0gY3JlYXRlTW9ja1dvcmtzcGFjZSgpOwog
Ci0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVG
b3JVUkwoImZvb2Jhci5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2UpOworICAgICAgICAgICAg
YWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiZm9vYmFyLmpzIik7CiAKICAgICAgICAgICAgIHZh
ciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKHdvcmtzcGFjZSk7CiAgICAg
ICAgICAgICBwYW5lbC5zaG93KCk7CiAKLSAgICAgICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29y
a3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgiZm9vLmpzIiwgY29udGVudFByb3ZpZGVyLCBm
YWxzZSk7Ci0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFk
ZEZpbGVGb3JVUkwoImJhci5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2UpOwotICAgICAgICAg
ICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKCJiYXou
anMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtGaWxl
KHdvcmtzcGFjZSwgImZvby5qcyIpOworICAgICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3Nw
YWNlLCAiYmFyLmpzIik7CisgICAgICAgICAgICBhZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJi
YXouanMiKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRv
cihwYW5lbC5fbmF2aWdhdG9yKTsKIApAQCAtNjQsMTQgKzc0LDE0IEBAIGZ1bmN0aW9uIHRlc3Qo
KQogICAgICAgICAgICAgdmFyIHBhbmVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwo
d29ya3NwYWNlKTsKICAgICAgICAgICAgIHBhbmVsLnNob3coKTsKIAotICAgICAgICAgICAgd29y
a3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKCJmb28uanMiLCBj
b250ZW50UHJvdmlkZXIsIGZhbHNlKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29y
a3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgiYmFyLmpzIiwgY29udGVudFByb3ZpZGVyLCBm
YWxzZSk7Ci0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFk
ZEZpbGVGb3JVUkwoImJhei5qcyIsIGNvbnRlbnRQcm92aWRlciwgZmFsc2UpOworICAgICAgICAg
ICAgYWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiZm9vLmpzIik7CisgICAgICAgICAgICBhZGRO
ZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJiYXIuanMiKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtG
aWxlKHdvcmtzcGFjZSwgImJhei5qcyIpOwogCiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1
bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogCiAgICAgICAgICAgICB3b3Jr
c3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLnJlc2V0KCk7Ci0gICAgICAgICAgICB3b3Jr
c3BhY2UubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImJhci5qcyIsIGNv
bnRlbnRQcm92aWRlciwgZmFsc2UpOworICAgICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3Nw
YWNlLCAiYmFyLmpzIik7CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2
aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogCiAgICAgICAgICAgICBwYW5lbC5kZXRhY2goKTsK
QEAgLTg0LDEzICs5NCwxMyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBwYW5l
bCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsKHdvcmtzcGFjZSk7CiAgICAgICAgICAg
ICBwYW5lbC5zaG93KCk7CiAKLSAgICAgICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNl
UHJvdmlkZXIuYWRkRmlsZUZvclVSTCgiZm9vLmpzIiwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7
Ci0gICAgICAgICAgICB3b3Jrc3BhY2UuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxl
KCJkZWJ1Z2dlcjpjb21waWxlZC5qcyIsICJjb21waWxlZC5qcyIsIGNvbnRlbnRQcm92aWRlcik7
CisgICAgICAgICAgICBhZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJmb28uanMiKTsKKyAgICAg
ICAgICAgIGFkZERlYnVnZ2VyRmlsZSh3b3Jrc3BhY2UsICJjb21waWxlZC5qcyIpOwogCiAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0
b3IpOwogCiAgICAgICAgICAgICAvLyBQbHVnIGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgotICAg
ICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJM
KCJzb3VyY2UuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFkZE5l
dHdvcmtGaWxlKHdvcmtzcGFjZSwgInNvdXJjZS5qcyIpOwogCiAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKHBhbmVsLl9uYXZpZ2F0b3IpOwogICAgICAgICAg
ICAgbmV4dCgpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Nj
cmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1zb3J0aW5nLWV4cGVjdGVkLnR4dAppbmRleCBjMjRhY2NkMDNjODg1OWUwNDMw
ZTQyZThiZDU5NmY4Zjk3N2IyNGQzLi5iY2EzYzM4YmY5YWNmMzI3N2U3OTVhNTFhNzczNDljMTNj
MjY2YTE2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1zb3J0aW5nLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1zb3J0aW5nLWV4cGVjdGVkLnR4dApAQCAtMTMsNyArMTMsNyBAQCBEdW1waW5n
IFNjcmlwdHNOYXZpZ2F0b3IgJ1NjcmlwdHMnIHRhYjoKIER1bXBpbmcgU2NyaXB0c05hdmlnYXRv
ciAnQ29udGVudCBzY3JpcHRzJyB0YWI6CiAgIGV4dGVuc2lvbi1uYW1lCiAgICAgZm9sZGVyCi0g
ICpOb24qVVJMKnBhdGgKKyAgKkFub3RoZXIqTm9uKlVSTCpwYXRoCiBEdW1waW5nIFNjcmlwdHNO
YXZpZ2F0b3IgJ1NjcmlwdHMnIHRhYjoKICAgYmFyLmNvbQogICAgIGZvby9wYXRoCkBAIC00MSw1
ICs0MSw1IEBAIER1bXBpbmcgU2NyaXB0c05hdmlnYXRvciAnQ29udGVudCBzY3JpcHRzJyB0YWI6
CiAgICAgZm9sZGVyCiAgICAgICBiYXouanMKICAgICBiYXIuanMKLSAgKk5vbipVUkwqcGF0aAor
ICAqQW5vdGhlcipOb24qVVJMKnBhdGgKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sCmluZGV4IDlmOGFhY2NmY2MzYjE5NjI4YzVm
N2I4MTZlYTE4ODJkMWYyMjg4NDAuLjhhMzRiODNmOGE0ZDU3MjY2YzRjYzgyZDdkMGFmMzc1NjE3
ZDJkZjkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRz
LXNvcnRpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0
cy1zb3J0aW5nLmh0bWwKQEAgLTExLDI4ICsxMSwyMiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBX
ZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRzIik7CiAKICAgICB2YXIgbmF2aWdhdG9yID0g
bmV3IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yKCk7Ci0KLSAgICB2YXIgTW9ja1Byb2pl
Y3QgPSBmdW5jdGlvbigpIHt9Ci0gICAgTW9ja1Byb2plY3QucHJvdG90eXBlLm5hbWUgPSBmdW5j
dGlvbigpCi0gICAgewotICAgICAgICByZXR1cm4gIm5ldHdvcmsiOwotICAgIH0KKyAgICB2YXIg
d29ya3NwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICB2YXIgd29ya3Nw
YWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdv
cmtzcGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKTsKIAogICAgIHZhciB1
aVNvdXJjZUNvZGVzID0gW107CiAgICAgZnVuY3Rpb24gYWRkVUlTb3VyY2VDb2RlKHVybCwgaXND
b250ZW50U2NyaXB0KQogICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlKG5ldyBNb2NrUHJvamVjdCgpLCB1cmwsIHVybCwgdXJsLCBX
ZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsIG51bGwpOwotICAgICAgICB1aVNvdXJj
ZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0OworICAgICAgICB2YXIgY29u
dGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlkZXIoV2Vi
SW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIiwgInRleHQvamF2YXNjcmlwdCIpOwor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gd29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVS
TCh1cmwsIGNvbnRlbnRQcm92aWRlciwgZmFsc2UsIGlzQ29udGVudFNjcmlwdCk7CiAgICAgICAg
IG5hdmlnYXRvci5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKICAgICAgICAgdWlTb3Vy
Y2VDb2Rlcy5wdXNoKHVpU291cmNlQ29kZSk7CiAgICAgfQogCi0gICAgZnVuY3Rpb24gZHVtcFNj
cmlwdHNMaXN0KG5vUmV2ZWFsKQorICAgIGZ1bmN0aW9uIGR1bXBTY3JpcHRzTGlzdCgpCiAgICAg
ewogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiIik7CiAgICAgICAgIEluc3BlY3Rv
clRlc3QuZHVtcFNjcmlwdHNOYXZpZ2F0b3IobmF2aWdhdG9yKTsKLSAgICAgICAgaWYgKG5vUmV2
ZWFsKQotICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVp
U291cmNlQ29kZXMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICBuYXZpZ2F0b3IucmV2ZWFsVUlT
b3VyY2VDb2RlKHVpU291cmNlQ29kZXNbaV0pOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBT
Y3JpcHRzTmF2aWdhdG9yKG5hdmlnYXRvcik7CkBAIC02NSw3ICs1OSw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAiZXh0ZW5zaW9uLXNjaGVtYTovL2V4dGVuc2lvbi1uYW1lL2ZvbGRlci9i
YXouanMiIF07CiAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBleHRlbnNpb25zLmxlbmd0aDsgKytp
KQogICAgICAgICBhZGRVSVNvdXJjZUNvZGUoZXh0ZW5zaW9uc1tpXSwgdHJ1ZSk7Ci0gICAgYWRk
VUlTb3VyY2VDb2RlKCIqTm9uKlVSTCpwYXRoIiwgdHJ1ZSk7CisgICAgYWRkVUlTb3VyY2VDb2Rl
KCIqQW5vdGhlcipOb24qVVJMKnBhdGgiLCB0cnVlKTsKICAgICBkdW1wU2NyaXB0c0xpc3QoKTsK
ICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL3Vpc291cmNlY29kZS1yZXZpc2lvbnMuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWwKaW5kZXggNTMwNmJiODJhMDZi
ODhjYTJmYWU4OTljNWY1MzQ5ZGVjNjA2YTU2Ni4uNTMwNzJiY2Q1OTI5ZTc5MTFlM2ZkOGY4ZGZi
MjE3NGY2YjFjM2ZmMyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL3Vpc291cmNl
Y29kZS1yZXZpc2lvbnMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvdWlzb3VyY2Vj
b2RlLXJldmlzaW9ucy5odG1sCkBAIC05LDkgKzksOCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBm
dW5jdGlvbiBjcmVhdGVNb2NrUHJvamVjdCgpCiAgICAgewogICAgICAgICB2YXIgd29ya3NwYWNl
ID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKLSAgICAgICAgdmFyIG5ldHdvcmtXb3Jr
c3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIo
d29ya3NwYWNlKTsKLSAgICAgICAgdmFyIHByb2plY3QgPSBuZXcgV2ViSW5zcGVjdG9yLlByb2pl
Y3Qod29ya3NwYWNlLCAibmV0d29yayIsIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAg
ICAgIHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29y
aywgbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKKyAgICAgICAgdmFyIHdvcmtzcGFjZVByb3Zp
ZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2Us
IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CisgICAgICAgIHZhciBwcm9qZWN0
ID0gd29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3Jr
LCB3b3Jrc3BhY2VQcm92aWRlcik7CiAgICAgICAgIHByb2plY3QucmVxdWVzdEZpbGVDb250ZW50
ID0gZnVuY3Rpb24odXJpLCBjYWxsYmFjaykKICAgICAgICAgewogICAgICAgICAgICAgY2FsbGJh
Y2soIjxzY3JpcHQgY29udGVudD4iLCBmYWxzZSwgInRleHQvamF2YXNjcmlwdCIpOwo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>187285</attachid>
            <date>2013-02-08 04:00:19 -0800</date>
            <delta_ts>2013-02-08 04:40:35 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-109282-20130208155653.patch</filename>
            <type>text/plain</type>
            <size>46230</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTQyMjUxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggOGI0MTlmNmY5ZjkyMDg4
MmZmZjZmZmJhYWE0M2I1MmU2ZDFhMWVjNy4uNWZkNWQzMzIwNTMwNmU0Y2RiZmUxOWE2OWFlZjZj
NmM4M2M3ZTBjNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYwIEBACisyMDEzLTAyLTA4ICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEludHJvZHVjZSB3b3Jrc3BhY2UgcHJvdmlkZXIvcHJvamVjdCB0eXBlLCBlbmNhcHN1bGF0
ZSB1cmkgY3JlYXRpb24gaW4gU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMDkyODIKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTaW1wbGVXb3Jrc3BhY2VQcm92aWRl
ciBub3cgZnVsbHkgdGFrZXMgY2FyZSBvZiBjcmVhdGluZyB1cmkgYmFzZWQgb24gcHJvamVjdC93
b3Jrc3BhY2UgcHJvdmlkZXIgdHlwZS4KKyAgICAgICAgVGhpcyBpcyB0aGUgZmlyc3Qgc3RlcCBv
biB0aGUgd2F5IHRvIHByb2plY3QtcGVyLWRvbWFpbiBtb2RlIGZvciBub24gZmlsZSBzeXN0ZW0g
cHJvamVjdCB0eXBlcy4KKyAgICAgICAgV29ya3NwYWNlIGlzIG5vdyBwYXJ0bHkgYXdhcmUgb2Yg
dGhlIHBvc3NpYmlsaXR5IHRoYXQgc2V2ZXJhbCBwcm9qZWN0cyB3aXRoIHRoZSBzYW1lIHR5cGUg
ZXhpc3QuCisgICAgICAgIERyaXZlLWJ5OiBTY3JpcHRzUGFuZWwgbm93IHVzZXMgRmlsZU1BcHBp
bmcgdG8gc2hvdyBhbmNob3IgbG9jYXRpb24gcHJvcGVybHkuCisKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5EZWZhdWx0
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUuYWRkU2NyaXB0KToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FeHRl
bnNpb25TZXJ2ZXIucHJvdG90eXBlLl9vbkdldFBhZ2VSZXNvdXJjZXMpOgorICAgICAgICAqIGlu
c3BlY3Rvci9mcm9udC1lbmQvRmlsZU1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
RmlsZU1hcHBpbmcucHJvdG90eXBlLnVyaUZvclVSTCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRmlsZVN5c3RlbVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS50eXBlKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qczoKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90eXBlLl9zdXBwb3J0
c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZyk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTGl2ZUVk
aXRTdXBwb3J0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQucHJvdG90
eXBlLnVpU291cmNlQ29kZUZvckxpdmVFZGl0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRT
bmlwcGV0TW9kZWwpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5w
cm90b3R5cGUuX2FkZFNjcmlwdFNuaXBwZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvU2NyaXB0c05hdmlnYXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2
aWdhdG9yLnByb3RvdHlwZS5fbmF2aWdhdG9yVmlld0ZvclVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUucmV2ZWFsVUlTb3VyY2VD
b2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TbmlwcGV0c05hdmlnYXRvclZpZXcucHJvdG90
eXBlLl9oYW5kbGVFdmFsdWF0ZVNuaXBwZXQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNuaXBw
ZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUuX2hhbmRsZVJlbW92ZVNuaXBwZXQpOgorICAgICAg
ICAqIGluc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUuX2FkZFVJU291cmNlQ29kZSk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fcHJvamVjdFdpbGxSZXNldCk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5jYW5TaG93QW5j
aG9yTG9jYXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5
cGUuX2NyZWF0ZVNvdXJjZUZyYW1lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlLnNldCBfZmlsZVJlbmFtZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNpbXBsZVdv
cmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlLnR5cGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS5hZGRGaWxlRm9yVVJMKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUuYWRkVW5p
cXVlRmlsZUZvclVSTCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJv
dmlkZXIucHJvdG90eXBlLl9pbm5lckFkZEZpbGVGb3JVUkwpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZS5fdW5pcXVlVVJJKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qczoKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUudHlwZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuUHJvamVjdC5wcm90b3R5cGUudHlwZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUHJv
amVjdC5wcm90b3R5cGUuaXNTZXJ2aWNlUHJvamVjdCk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlLnByb3RvdHlwZS51aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkwpOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLldvcmtzcGFjZS5wcm90b3R5cGUudWlTb3VyY2VDb2Rlc0ZvclByb2plY3RU
eXBlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UucHJvdG90eXBlLnByb2plY3Rz
Rm9yVHlwZSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuanM6CisK
IDIwMTMtMDItMDcgIFZzZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAg
ICAgICAgV2ViIEluc3BlY3RvcjogUmVwbGFjZSB3b3Jrc3BhY2Ugd2l0aCBwcm9qZWN0IGluIFVJ
U291cmNlQ29kZSBjb25zdHJ1Y3Rvci4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzCmluZGV4IDYwN2E1ODEz
N2M4ZDAwZWEzYmUyNDQxZGU3ZTVlMDU4ZWMzZDU4ZDAuLjU2YTZiYjNjODQ3MjhhNjY1ODAzMjk3
MjM0NzQyZGFmMzkyZDRhZWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0U2NyaXB0TWFwcGluZy5qcwpAQCAtMzUsOSArMzUsNyBA
QAogICovCiBXZWJJbnNwZWN0b3IuRGVmYXVsdFNjcmlwdE1hcHBpbmcgPSBmdW5jdGlvbih3b3Jr
c3BhY2UpCiB7Ci0gICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlOwotICAgIHRoaXMuX3dv
cmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRl
cih0aGlzLl93b3Jrc3BhY2UpOwotICAgIHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rv
ci5wcm9qZWN0TmFtZXMuRGVidWdnZXIsIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyKTsKKyAgICB0
aGlzLl93b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNl
UHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLkRlYnVnZ2VyKTsK
ICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3Bl
Y3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5HbG9iYWxPYmplY3RDbGVhcmVkLCB0aGlzLl9kZWJ1
Z2dlclJlc2V0LCB0aGlzKTsKICAgICB0aGlzLl9kZWJ1Z2dlclJlc2V0KCk7CiB9CkBAIC03Niw5
ICs3NCw3IEBAIFdlYkluc3BlY3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7
CiAgICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCiAgICAgewogICAgICAgICB2YXIgY29u
dGVudFByb3ZpZGVyID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgPyBuZXcgV2ViSW5zcGVjdG9y
LkNvbmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIoW3NjcmlwdF0pIDogc2NyaXB0Owot
ICAgICAgICB2YXIgdXJpID0gImRlYnVnZ2VyOiIgKyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3Nw
YWNlUHJvdmlkZXIudXJpRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwpOwotICAgICAgICB2YXIgdW5p
cXVlVVJJID0gdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIudW5pcXVlVVJJKHVyaSk7Ci0gICAgICAg
IHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKHVuaXF1
ZVVSSSwgc2NyaXB0LnNvdXJjZVVSTCwgY29udGVudFByb3ZpZGVyLCBmYWxzZSwgc2NyaXB0Lmlz
Q29udGVudFNjcmlwdCk7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3Bh
Y2VQcm92aWRlci5hZGRVbmlxdWVGaWxlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwsIGNvbnRlbnRQ
cm92aWRlciwgZmFsc2UsIHNjcmlwdC5pc0NvbnRlbnRTY3JpcHQpOwogCiAgICAgICAgIHRoaXMu
X3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3JpcHRJZF0gPSB1aVNvdXJjZUNvZGU7
CiAgICAgICAgIHRoaXMuX3NjcmlwdElkRm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUs
IHNjcmlwdC5zY3JpcHRJZCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0V4dGVuc2lvblNlcnZlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvRXh0ZW5zaW9uU2VydmVyLmpzCmluZGV4IGMxMTYxYmUyOGQxNjhkNDQ2MTgzZjc1
MWE1YmM5ZTQyMjI5Yjk2NGIuLmM5MzllOTlhMDJkYjQ4ZDk1OWJhMWQzZTcyOTI4MWRkN2I4ZTZl
NzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0ZW5z
aW9uU2VydmVyLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRXh0
ZW5zaW9uU2VydmVyLmpzCkBAIC00NDIsNyArNDQyLDcgQEAgV2ViSW5zcGVjdG9yLkV4dGVuc2lv
blNlcnZlci5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBpZiAoIXJlc291cmNlc1tjb250ZW50
UHJvdmlkZXIuY29udGVudFVSTCgpXSkKICAgICAgICAgICAgICAgICByZXNvdXJjZXNbY29udGVu
dFByb3ZpZGVyLmNvbnRlbnRVUkwoKV0gPSB0aGlzLl9tYWtlUmVzb3VyY2UoY29udGVudFByb3Zp
ZGVyKTsKICAgICAgICAgfQotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFdlYkluc3BlY3Rv
ci53b3Jrc3BhY2UucHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmspLnVp
U291cmNlQ29kZXMoKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3Iu
d29ya3NwYWNlLnByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKS51aVNv
dXJjZUNvZGVzKCk7CiAgICAgICAgIHVpU291cmNlQ29kZXMuZm9yRWFjaChwdXNoUmVzb3VyY2VE
YXRhLmJpbmQodGhpcykpOwogICAgICAgICBXZWJJbnNwZWN0b3IucmVzb3VyY2VUcmVlTW9kZWwu
Zm9yQWxsUmVzb3VyY2VzKHB1c2hSZXNvdXJjZURhdGEuYmluZCh0aGlzKSk7CiAgICAgICAgIHJl
dHVybiBPYmplY3QudmFsdWVzKHJlc291cmNlcyk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9GaWxlTWFwcGluZy5qcwppbmRleCA2MGQ5YjFhZGQ2ZWVlZDI1MjM2
MmQ5Y2FmMDIxODUzMzViNmExZGRhLi4wZWQyNDliZDE1MjJmMzQ2NzgxN2Q5N2FhNTExOGY3ZTJl
YmE4MmZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0Zp
bGVNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRmls
ZU1hcHBpbmcuanMKQEAgLTkxLDggKzkxLDcgQEAgV2ViSW5zcGVjdG9yLkZpbGVNYXBwaW5nLnBy
b3RvdHlwZSA9IHsKICAgICAgKi8KICAgICB1cmlGb3JVUkw6IGZ1bmN0aW9uKHVybCkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBGaWxlTWFwcGluZyBzaG91bGQgYmUgbmV0d29yayBwcm9qZWN0
IGF3YXJlLiBJdCBzaG91bGQgcmV0dXJuIGNvcnJlY3QgdXJpIGZvciBuZXR3b3JrIHByb2plY3Qg
dWlTb3VyY2VDb2Rlcy4KLSAgICAgICAgcmV0dXJuIHRoaXMuX2lubmVyVVJJRm9yVVJMKHVybCkg
fHwgdXJsOworICAgICAgICByZXR1cm4gdGhpcy5faW5uZXJVUklGb3JVUkwodXJsKSB8fCBXZWJJ
bnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMKHVybCwgV2ViSW5zcGVj
dG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKTsKICAgICB9LAogICAgIAogICAgIC8qKgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9GaWxlU3lzdGVtV29ya3Nw
YWNlUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVT
eXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcwppbmRleCA2MGJjZGEwODViODFjZDY2ZWJlMTU5ZDM2
ODJkNWU4Njg5ZDBiNWEzLi41OGVmYjBiNTkyNWNhNWE0NWFlYmUzMzZhYTI3MzdhNGQ1ZDZkNTll
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0ZpbGVTeXN0
ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL0ZpbGVTeXN0ZW1Xb3Jrc3BhY2VQcm92aWRlci5qcwpAQCAtMzMsNiArMzMsNyBAQAog
ICogQGltcGxlbWVudHMge1dlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlcn0KICAqIEBleHRl
bmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQogICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuSXNvbGF0
ZWRGaWxlU3lzdGVtTW9kZWx9IGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsCisgKiBAcGFyYW0ge3N0
cmluZ30gZmlsZVN5c3RlbVBhdGgKICAqLwogV2ViSW5zcGVjdG9yLkZpbGVTeXN0ZW1Xb3Jrc3Bh
Y2VQcm92aWRlciA9IGZ1bmN0aW9uKGlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLCBmaWxlU3lzdGVt
UGF0aCkKIHsKQEAgLTQ2LDYgKzQ3LDE0IEBAIFdlYkluc3BlY3Rvci5GaWxlU3lzdGVtV29ya3Nw
YWNlUHJvdmlkZXIuX3NjcmlwdEV4dGVuc2lvbnMgPSBbImpzIiwgImphdmEiLCAiY2MiCiAKIFdl
Ykluc3BlY3Rvci5GaWxlU3lzdGVtV29ya3NwYWNlUHJvdmlkZXIucHJvdG90eXBlID0gewogICAg
IC8qKgorICAgICAqIEByZXR1cm4ge3N0cmluZ30KKyAgICAgKi8KKyAgICB0eXBlOiBmdW5jdGlv
bigpCisgICAgeworICAgICAgICByZXR1cm4gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5GaWxl
U3lzdGVtOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCiAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLGJvb2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sK
ICAgICAgKi8KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
SmF2YVNjcmlwdFNvdXJjZUZyYW1lLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKaW5kZXggZmJhMjVlYjhjYjM0Y2RjODMzODAy
ZmQ0ODgyMTQxZDQ2Y2M0ZTQ0ZC4uZDMzMTEyYWYxYjRkNWE4ZTNjNTU1ZWViZDI3Y2ViNTliNDk2
MjYyMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZh
U2NyaXB0U291cmNlRnJhbWUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMKQEAgLTIzNCw3ICsyMzQsNyBAQCBXZWJJbnNw
ZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9IHsKIAogICAgIF9zdXBwb3J0
c0VuYWJsZWRCcmVha3BvaW50c1doaWxlRWRpdGluZzogZnVuY3Rpb24oKQogICAgIHsKLSAgICAg
ICAgcmV0dXJuIHRoaXMuX3VpU291cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpID09PSBXZWJJbnNw
ZWN0b3IucHJvamVjdE5hbWVzLlNuaXBwZXRzOworICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3Vy
Y2VDb2RlLnByb2plY3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25p
cHBldHM7CiAgICAgfSwKIAogICAgIF9yZXN0b3JlQnJlYWtwb2ludHNBZnRlckVkaXRpbmc6IGZ1
bmN0aW9uKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
TGl2ZUVkaXRTdXBwb3J0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9M
aXZlRWRpdFN1cHBvcnQuanMKaW5kZXggNTU2OGFkOTA2NDIwMGZlZDEyNzI5Y2YzODdjMGIzMmZl
ZWYzMWE1OS4uOWE0OWNmODhmOTUzYjI2Y2NlZmFjYzUyZGI1YTkwMzlkZWVlMDQzYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaXZlRWRpdFN1cHBvcnQu
anMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9MaXZlRWRpdFN1cHBv
cnQuanMKQEAgLTM0LDkgKzM0LDcgQEAKICAqLwogV2ViSW5zcGVjdG9yLkxpdmVFZGl0U3VwcG9y
dCA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKIHsKLSAgICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3Bh
Y2U7Ci0gICAgdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBs
ZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMuX3dvcmtzcGFjZSk7Ci0gICAgd29ya3NwYWNlLmFkZFBy
b2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5MaXZlRWRpdCwgdGhpcy5fd29ya3NwYWNl
UHJvdmlkZXIpOworICAgIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rv
ci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0
VHlwZXMuTGl2ZUVkaXQpOwogICAgIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmFkZEV2ZW50
TGlzdGVuZXIoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuRXZlbnRzLkdsb2JhbE9iamVjdENs
ZWFyZWQsIHRoaXMuX2RlYnVnZ2VyUmVzZXQsIHRoaXMpOwogICAgIHRoaXMuX2RlYnVnZ2VyUmVz
ZXQoKTsKIH0KQEAgLTYwLDkgKzU4LDcgQEAgV2ViSW5zcGVjdG9yLkxpdmVFZGl0U3VwcG9ydC5w
cm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2Ny
aXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKIAogICAgICAgICBjb25zb2xlLmFzc2VydCghc2NyaXB0
LmlzSW5saW5lU2NyaXB0KCkpOwotICAgICAgICB2YXIgdXJpID0gImxpdmVlZGl0OiIgKyBXZWJJ
bnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMKHVpU291cmNlQ29kZS51
cmwpOwotICAgICAgICB2YXIgdW5pcXVlVVJJID0gdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIudW5p
cXVlVVJJKHVyaSk7Ci0gICAgICAgIHZhciBsaXZlRWRpdFVJU291cmNlQ29kZSA9IHRoaXMuX3dv
cmtzcGFjZVByb3ZpZGVyLmFkZEZpbGUodW5pcXVlVVJJLCB1aVNvdXJjZUNvZGUudXJsLCBzY3Jp
cHQsIHRydWUpOworICAgICAgICB2YXIgbGl2ZUVkaXRVSVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jr
c3BhY2VQcm92aWRlci5hZGRVbmlxdWVGaWxlRm9yVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHNjcmlw
dCwgdHJ1ZSwgc2NyaXB0LmlzQ29udGVudFNjcmlwdCk7CiAKICAgICAgICAgbGl2ZUVkaXRVSVNv
dXJjZUNvZGUuc2V0U2NyaXB0RmlsZShuZXcgV2ViSW5zcGVjdG9yLkxpdmVFZGl0U2NyaXB0Rmls
ZSh1aVNvdXJjZUNvZGUsIGxpdmVFZGl0VUlTb3VyY2VDb2RlLCBzY3JpcHQuc2NyaXB0SWQpKTsK
ICAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9
IGxpdmVFZGl0VUlTb3VyY2VDb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwppbmRleCBmMjY1MjM5N2JmMTEw
YzFhMTQ1YjRlMDQ4MjE5NjMyNjFmZmZhNzc5Li5mMDE5MzE3MmI5MTM0ZjFmMjhkZTc1NzE0N2Vj
ZDk3Nzg5ZTFkZjkxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qcwpAQCAtNDYsOCArNDYsNyBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0U25pcHBldE1vZGVsID0gZnVuY3Rpb24od29ya3NwYWNlKQogICAgIHRoaXMu
X3NuaXBwZXRTdG9yYWdlID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0U3RvcmFnZSgic2NyaXB0
IiwgIlNjcmlwdCBzbmlwcGV0ICMiKTsKICAgICB0aGlzLl9sYXN0U25pcHBldEV2YWx1YXRpb25J
bmRleFNldHRpbmcgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3MuY3JlYXRlU2V0dGluZygibGFzdFNu
aXBwZXRFdmFsdWF0aW9uSW5kZXgiLCAwKTsKICAgICB0aGlzLl9zbmlwcGV0U2NyaXB0TWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdE1hcHBpbmcodGhpcyk7Ci0gICAgdGhp
cy5fd29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVBy
b3ZpZGVyKHRoaXMuX3dvcmtzcGFjZSk7Ci0gICAgd29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5z
cGVjdG9yLnByb2plY3ROYW1lcy5TbmlwcGV0cywgdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIpOwor
ICAgIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jr
c3BhY2VQcm92aWRlcih0aGlzLl93b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMu
U25pcHBldHMpOwogICAgIHRoaXMucmVzZXQoKTsKICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50cy5H
bG9iYWxPYmplY3RDbGVhcmVkLCB0aGlzLl9kZWJ1Z2dlclJlc2V0LCB0aGlzKTsKIH0KQEAgLTgz
LDcgKzgyLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7
CiAgICAgICovCiAgICAgX2FkZFNjcmlwdFNuaXBwZXQ6IGZ1bmN0aW9uKHNuaXBwZXQpCiAgICAg
ewotICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlUHJvdmlkZXIuYWRk
RmlsZShzbmlwcGV0Lm5hbWUsIHNuaXBwZXQubmFtZSwgbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0
Q29udGVudFByb3ZpZGVyKHNuaXBwZXQpLCB0cnVlKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoc25pcHBldC5uYW1lLCBu
ZXcgV2ViSW5zcGVjdG9yLlNuaXBwZXRDb250ZW50UHJvdmlkZXIoc25pcHBldCksIHRydWUpOwog
ICAgICAgICB2YXIgc2NyaXB0RmlsZSA9IG5ldyBXZWJJbnNwZWN0b3IuU25pcHBldFNjcmlwdEZp
bGUodGhpcywgdWlTb3VyY2VDb2RlKTsKICAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNjcmlwdEZp
bGUoc2NyaXB0RmlsZSk7CiAgICAgICAgIHRoaXMuX3NuaXBwZXRJZEZvclVJU291cmNlQ29kZS5w
dXQodWlTb3VyY2VDb2RlLCBzbmlwcGV0LmlkKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcwppbmRleCBjMGU3M2I2MTQz
OWRjNWI0MTgxZGIwN2EzMmFkYWUwNjRlOWUwOGZjLi41ZGU5NTljYzgyMTkyMjg2ZTkwMWMxNTgx
OWEwMDFkODVjNzJjMDE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NjcmlwdHNOYXZpZ2F0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCkBAIC04NCw3ICs4NCw3IEBAIFdlYkluc3Bl
Y3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIGlmICh1
aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX2Nv
bnRlbnRTY3JpcHRzVmlldzsKLSAgICAgICAgZWxzZSBpZiAodWlTb3VyY2VDb2RlLnByb2plY3Qo
KS5uYW1lKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMpCisgICAgICAg
IGVsc2UgaWYgKHVpU291cmNlQ29kZS5wcm9qZWN0KCkudHlwZSgpID09PSBXZWJJbnNwZWN0b3Iu
cHJvamVjdFR5cGVzLlNuaXBwZXRzKQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NuaXBwZXRz
VmlldzsKICAgICAgICAgZWxzZQogICAgICAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHNWaWV3
OwpAQCAtMTE0LDcgKzExNCw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3Rv
dHlwZSA9IHsKICAgICAgICAgdGhpcy5fbmF2aWdhdG9yVmlld0ZvclVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUpLnJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwogICAgICAgICBpZiAo
dWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCkKICAgICAgICAgICAgIHRoaXMuX3RhYmJlZFBh
bmUuc2VsZWN0VGFiKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkNvbnRlbnRTY3JpcHRz
VGFiKTsKLSAgICAgICAgZWxzZSBpZiAodWlTb3VyY2VDb2RlLnByb2plY3QoKS5uYW1lKCkgPT09
IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuU25pcHBldHMpCisgICAgICAgIGVsc2UgaWYgKHVp
U291cmNlQ29kZS5wcm9qZWN0KCkudHlwZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVz
LlNuaXBwZXRzKQogICAgICAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIoV2ViSW5z
cGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuU25pcHBldHNUYWIpOwogICAgICAgICBlbHNlCiAgICAg
ICAgICAgICB0aGlzLl90YWJiZWRQYW5lLnNlbGVjdFRhYihXZWJJbnNwZWN0b3IuU2NyaXB0c05h
dmlnYXRvci5TY3JpcHRzVGFiKTsKQEAgLTIxMCw3ICsyMTAsNyBAQCBXZWJJbnNwZWN0b3IuU25p
cHBldHNOYXZpZ2F0b3JWaWV3LnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICBfaGFuZGxlRXZh
bHVhdGVTbmlwcGV0OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICBpZiAo
IXVpU291cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdE5h
bWVzLlNuaXBwZXRzKQorICAgICAgICBpZiAoIXVpU291cmNlQ29kZS5wcm9qZWN0KCkudHlwZSgp
ID09PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLlNuaXBwZXRzKQogICAgICAgICAgICAgcmV0
dXJuOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsLmV2YWx1YXRlU2Ny
aXB0U25pcHBldCh1aVNvdXJjZUNvZGUpOwogICAgIH0sCkBAIC0yMjgsNyArMjI4LDcgQEAgV2Vi
SW5zcGVjdG9yLlNuaXBwZXRzTmF2aWdhdG9yVmlldy5wcm90b3R5cGUgPSB7CiAgICAgICovCiAg
ICAgX2hhbmRsZVJlbW92ZVNuaXBwZXQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7Ci0g
ICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnByb2plY3QoKS5uYW1lKCkgPT09IFdlYkluc3BlY3Rv
ci5wcm9qZWN0TmFtZXMuU25pcHBldHMpCisgICAgICAgIGlmICghdWlTb3VyY2VDb2RlLnByb2pl
Y3QoKS50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuU25pcHBldHMpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgICAgIFdlYkluc3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwu
ZGVsZXRlU2NyaXB0U25pcHBldCh1aVNvdXJjZUNvZGUpOwogICAgIH0sCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdHNQYW5lbC5qcyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCmluZGV4IDY5ODQ2
ZDY5YmFiNWQ2NmYwNzA3ZGU4YmFkMjNkOGQ2Y2EyOGY4ZWMuLjFhMGFiNTRhNDMxMTIxNzQwMWFj
OWJlN2I4ZWMwZjI4ODMyYTk2ZjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzCkBAIC0yMzksNyArMjM5LDYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAodGhpcy5f
dG9nZ2xlRm9ybWF0U291cmNlQnV0dG9uLnRvZ2dsZWQpCiAgICAgICAgICAgICB1aVNvdXJjZUNv
ZGUuc2V0Rm9ybWF0dGVkKHRydWUpOwotICAgICAgICB2YXIgcHJvamVjdE5hbWUgPSB1aVNvdXJj
ZUNvZGUucHJvamVjdCgpLm5hbWUoKTsKICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5wcm9qZWN0
KCkuaXNTZXJ2aWNlUHJvamVjdCgpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB0aGlz
Ll9uYXZpZ2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CkBAIC0zNjEsNyArMzYw
LDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHZh
ciBwcm9qZWN0ID0gZXZlbnQuZGF0YTsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBwcm9q
ZWN0LnVpU291cmNlQ29kZXMoKTsKICAgICAgICAgdGhpcy5fcmVtb3ZlVUlTb3VyY2VDb2Rlcyh1
aVNvdXJjZUNvZGVzKTsKLSAgICAgICAgaWYgKHByb2plY3QubmFtZSgpID09PSBXZWJJbnNwZWN0
b3IucHJvamVjdE5hbWVzLk5ldHdvcmspCisgICAgICAgIGlmIChwcm9qZWN0LnR5cGUoKSA9PT0g
V2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKQogICAgICAgICAgICAgdGhpcy5fZWRp
dG9yQ29udGFpbmVyLnJlc2V0KCk7CiAgICAgfSwKIApAQCAtMzg2LDEyICszODUsMTEgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICBpZiAo
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZGVidWdnZXJFbmFibGVkKCkgJiYgYW5jaG9yLnVp
U291cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybiB0cnVlOwotICAgICAgICB2YXIgdWlTb3Vy
Y2VDb2RlcyA9IHRoaXMuX3dvcmtzcGFjZS5wcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFt
ZXMuTmV0d29yaykudWlTb3VyY2VDb2RlcygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8
IHVpU291cmNlQ29kZXMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIGlmICh1aVNvdXJjZUNv
ZGVzW2ldLm9yaWdpblVSTCgpID09PSBhbmNob3IuaHJlZikgewotICAgICAgICAgICAgICAgIGFu
Y2hvci51aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGVzW2ldOwotICAgICAgICAgICAgICAgIHJl
dHVybiB0cnVlOwotICAgICAgICAgICAgfQorICAgICAgICB2YXIgdXJpID0gV2ViSW5zcGVjdG9y
LmZpbGVNYXBwaW5nLnVyaUZvclVSTChhbmNob3IuaHJlZik7CisgICAgICAgIHZhciB1aVNvdXJj
ZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CisgICAgICAg
IGlmICh1aVNvdXJjZUNvZGUpIHsKKyAgICAgICAgICAgIGFuY2hvci51aVNvdXJjZUNvZGUgPSB1
aVNvdXJjZUNvZGU7CisgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAgICAgfSwKQEAgLTQ1NSw3ICs0NTMsNyBAQCBXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdmFyIHNvdXJjZUZyYW1lOwogICAg
ICAgICBzd2l0Y2ggKHVpU291cmNlQ29kZS5jb250ZW50VHlwZSgpKSB7CiAgICAgICAgIGNhc2Ug
V2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0OgotICAgICAgICAgICAgaWYgKHVpU291
cmNlQ29kZS5wcm9qZWN0KCkubmFtZSgpID09PSBXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLlNu
aXBwZXRzKQorICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5wcm9qZWN0KCkudHlwZSgpID09
PSBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLlNuaXBwZXRzKQogICAgICAgICAgICAgICAgIHNv
dXJjZUZyYW1lID0gbmV3IFdlYkluc3BlY3Rvci5TbmlwcGV0SmF2YVNjcmlwdFNvdXJjZUZyYW1l
KHRoaXMsIHVpU291cmNlQ29kZSk7CiAgICAgICAgICAgICBlbHNlCiAgICAgICAgICAgICAgICAg
c291cmNlRnJhbWUgPSBuZXcgV2ViSW5zcGVjdG9yLkphdmFTY3JpcHRTb3VyY2VGcmFtZSh0aGlz
LCB1aVNvdXJjZUNvZGUpOwpAQCAtMTAzNCw3ICsxMDMyLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgewogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0g
LyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAoZXZlbnQuZGF0YS51aVNv
dXJjZUNvZGUpOwogICAgICAgICB2YXIgbmFtZSA9IC8qKiBAdHlwZSB7c3RyaW5nfSAqLyAoZXZl
bnQuZGF0YS5uYW1lKTsKLSAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUucHJvamVjdCgpLm5hbWUo
KSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5TbmlwcGV0cykKKyAgICAgICAgaWYgKCF1
aVNvdXJjZUNvZGUucHJvamVjdCgpLnR5cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBl
cy5TbmlwcGV0cykKICAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgV2ViSW5zcGVjdG9yLnNj
cmlwdFNuaXBwZXRNb2RlbC5yZW5hbWVTY3JpcHRTbmlwcGV0KHVpU291cmNlQ29kZSwgbmFtZSk7
CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1NpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLmpzCmluZGV4IGM3NTQ3MDE1MzY3ZDhjZTIz
Yzg2MmJlYjRlYTk3YTUxYjllZDBkODYuLjMxNzBlOTA0NWU2Yjk4MDI2Nzc0MjFkMmJhNTc0MzBl
YTcwMGJjNjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5qcwpAQCAtMzIsMjcgKzMyLDQxIEBA
CiAgKiBAY29uc3RydWN0b3IKICAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuV29ya3NwYWNl
UHJvdmlkZXJ9CiAgKiBAZXh0ZW5kcyB7V2ViSW5zcGVjdG9yLk9iamVjdH0KKyAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNlCisgKiBAcGFyYW0ge3N0cmluZ30gdHlw
ZQogICovCi1XZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIgPSBmdW5jdGlvbih3
b3Jrc3BhY2UpCitXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIgPSBmdW5jdGlv
bih3b3Jrc3BhY2UsIHR5cGUpCiB7CiAgICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlOwor
ICAgIHRoaXMuX3R5cGUgPSB0eXBlOwogICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcsIFdl
Ykluc3BlY3Rvci5Db250ZW50UHJvdmlkZXI+fSAqLwogICAgIHRoaXMuX2NvbnRlbnRQcm92aWRl
cnMgPSB7fTsKICAgICB0aGlzLl9sYXN0VW5pcXVlU3VmZml4ID0gMDsKKyAgICB0aGlzLl93b3Jr
c3BhY2UuYWRkUHJvamVjdCh0aGlzLl90eXBlLCB0aGlzKTsKIH0KIAogLyoqCiAgKiBAcGFyYW0g
e3N0cmluZ30gdXJsCisgKiBAcGFyYW0ge3N0cmluZ30gdHlwZQogICogQHJldHVybiB7c3RyaW5n
fQogICovCi1XZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJMID0g
ZnVuY3Rpb24odXJsKQorV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyLnVyaUZv
clVSTCA9IGZ1bmN0aW9uKHVybCwgdHlwZSkKIHsKLSAgICB2YXIgdXJpID0gdXJsOworICAgIHZh
ciB1cmlUeXBlUHJlZml4ID0gdHlwZSAhPT0gV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3
b3JrID8gKHR5cGUgKyAiOiIpIDogIiI7CisgICAgdmFyIHVyaSA9IHVyaVR5cGVQcmVmaXggKyB1
cmw7CiAgICAgcmV0dXJuIHVyaTsKIH0sCiAKIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQor
ICAgICAqLworICAgIHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlz
Ll90eXBlOworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCiAg
ICAgICogQHBhcmFtIHtmdW5jdGlvbig/c3RyaW5nLGJvb2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sK
ICAgICAgKi8KQEAgLTg0LDIwICs5OCwyNiBAQCBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNl
UHJvdmlkZXIucHJvdG90eXBlID0gewogICAgICAgICBjb250ZW50UHJvdmlkZXIuc2VhcmNoSW5D
b250ZW50KHF1ZXJ5LCBjYXNlU2Vuc2l0aXZlLCBpc1JlZ2V4LCBjYWxsYmFjayk7CiAgICAgfSwK
IAorICAgLyoqCisgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gY29udGVudFByb3ZpZGVyCisgICAgICogQHBhcmFt
IHtib29sZWFufSBpc0VkaXRhYmxlCisgICAgICogQHBhcmFtIHtib29sZWFuPX0gaXNDb250ZW50
U2NyaXB0CisgICAgICovCisgICAgYWRkRmlsZUZvclVSTDogZnVuY3Rpb24odXJsLCBjb250ZW50
UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkKKyAgICB7CisgICAgICAgIHJl
dHVybiB0aGlzLl9pbm5lckFkZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRp
dGFibGUsIGZhbHNlLCBpc0NvbnRlbnRTY3JpcHQpOworICAgIH0sCisKICAgICAvKioKLSAgICAg
KiBAcGFyYW0ge3N0cmluZ30gdXJpCiAgICAgICogQHBhcmFtIHtzdHJpbmd9IHVybAogICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0gY29udGVudFByb3ZpZGVyCiAg
ICAgICogQHBhcmFtIHtib29sZWFufSBpc0VkaXRhYmxlCiAgICAgICogQHBhcmFtIHtib29sZWFu
PX0gaXNDb250ZW50U2NyaXB0CiAgICAgICovCi0gICAgYWRkRmlsZTogZnVuY3Rpb24odXJpLCB1
cmwsIGNvbnRlbnRQcm92aWRlciwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KQorICAgIGFk
ZFVuaXF1ZUZpbGVGb3JVUkw6IGZ1bmN0aW9uKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRh
YmxlLCBpc0NvbnRlbnRTY3JpcHQpCiAgICAgewotICAgICAgICBjb25zb2xlLmFzc2VydCghdGhp
cy5fY29udGVudFByb3ZpZGVyc1t1cmldKTsKLSAgICAgICAgdmFyIGZpbGVEZXNjcmlwdG9yID0g
bmV3IFdlYkluc3BlY3Rvci5GaWxlRGVzY3JpcHRvcih1cmksIHVybCwgdXJsLCBjb250ZW50UHJv
dmlkZXIuY29udGVudFR5cGUoKSwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KTsKLSAgICAg
ICAgdGhpcy5fY29udGVudFByb3ZpZGVyc1t1cmldID0gY29udGVudFByb3ZpZGVyOwotICAgICAg
ICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuV29ya3NwYWNlUHJv
dmlkZXIuRXZlbnRzLkZpbGVBZGRlZCwgZmlsZURlc2NyaXB0b3IpOwotICAgICAgICByZXR1cm4g
dGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSSSh1cmkpOworICAgICAgICByZXR1cm4g
dGhpcy5faW5uZXJBZGRGaWxlRm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVyLCBpc0VkaXRhYmxl
LCB0cnVlLCBpc0NvbnRlbnRTY3JpcHQpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTEwNiwxMiAr
MTI2LDE5IEBAIFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUg
PSB7CiAgICAgICogQHBhcmFtIHtib29sZWFufSBpc0VkaXRhYmxlCiAgICAgICogQHBhcmFtIHti
b29sZWFuPX0gaXNDb250ZW50U2NyaXB0CiAgICAgICovCi0gICAgYWRkRmlsZUZvclVSTDogZnVu
Y3Rpb24odXJsLCBjb250ZW50UHJvdmlkZXIsIGlzRWRpdGFibGUsIGlzQ29udGVudFNjcmlwdCkK
KyAgICBfaW5uZXJBZGRGaWxlRm9yVVJMOiBmdW5jdGlvbih1cmwsIGNvbnRlbnRQcm92aWRlciwg
aXNFZGl0YWJsZSwgZm9yY2VVbmlxdWUsIGlzQ29udGVudFNjcmlwdCkKICAgICB7Ci0gICAgICAg
IHZhciB1cmkgPSBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIudXJpRm9yVVJM
KHVybCk7Ci0gICAgICAgIHJldHVybiB0aGlzLmFkZEZpbGUodXJpLCB1cmwsIGNvbnRlbnRQcm92
aWRlciwgaXNFZGl0YWJsZSwgaXNDb250ZW50U2NyaXB0KTsKKyAgICAgICAgdmFyIHVyaSA9IFdl
Ykluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci51cmlGb3JVUkwodXJsLCB0aGlzLl90
eXBlKTsKKyAgICAgICAgaWYgKGZvcmNlVW5pcXVlKQorICAgICAgICAgICAgdXJpID0gdGhpcy5f
dW5pcXVlVVJJKHVyaSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCF0aGlzLl9jb250ZW50UHJv
dmlkZXJzW3VyaV0pOworICAgICAgICB2YXIgZmlsZURlc2NyaXB0b3IgPSBuZXcgV2ViSW5zcGVj
dG9yLkZpbGVEZXNjcmlwdG9yKHVyaSwgdXJsLCB1cmwsIGNvbnRlbnRQcm92aWRlci5jb250ZW50
VHlwZSgpLCBpc0VkaXRhYmxlLCBpc0NvbnRlbnRTY3JpcHQpOworICAgICAgICB0aGlzLl9jb250
ZW50UHJvdmlkZXJzW3VyaV0gPSBjb250ZW50UHJvdmlkZXI7CisgICAgICAgIHRoaXMuZGlzcGF0
Y2hFdmVudFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlci5FdmVudHMu
RmlsZUFkZGVkLCBmaWxlRGVzY3JpcHRvcik7CisgICAgICAgIHJldHVybiB0aGlzLl93b3Jrc3Bh
Y2UudWlTb3VyY2VDb2RlRm9yVVJJKHVyaSk7CiAgICAgfSwKIAorCiAgICAgLyoqCiAgICAgICog
QHBhcmFtIHtzdHJpbmd9IHVyaQogICAgICAqLwpAQCAtMTI1LDcgKzE1Miw3IEBAIFdlYkluc3Bl
Y3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlci5wcm90b3R5cGUgPSB7CiAgICAgICogQHBhcmFt
IHtzdHJpbmd9IHVyaQogICAgICAqIEByZXR1cm4ge3N0cmluZ30KICAgICAgKi8KLSAgICB1bmlx
dWVVUkk6IGZ1bmN0aW9uKHVyaSkKKyAgICBfdW5pcXVlVVJJOiBmdW5jdGlvbih1cmkpCiAgICAg
ewogICAgICAgICB2YXIgdW5pcXVlVVJJID0gdXJpOwogICAgICAgICB3aGlsZSAodGhpcy5fY29u
dGVudFByb3ZpZGVyc1t1bmlxdWVVUkldKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Xb3Jrc3BhY2UuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwppbmRleCBmMTU1MjJiM2YwNTYwZjJjODEwNzA1NmE5NDA1
NjE2NmRmYmY3ZDgyLi4xOWU5ZTA4ZDY0YzhkZmNjYWU2NjFiN2RjMjY3NDNiM2VhYjc4MzEyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5q
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1dvcmtzcGFjZS5qcwpA
QCAtNzksNiArNzksMTEgQEAgV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLkV2ZW50cyA9
IHsKIAogV2ViSW5zcGVjdG9yLldvcmtzcGFjZVByb3ZpZGVyLnByb3RvdHlwZSA9IHsKICAgICAv
KioKKyAgICAgKiBAcmV0dXJuIHtzdHJpbmd9CisgICAgICovCisgICAgdHlwZTogZnVuY3Rpb24o
KSB7IH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gdXJpCiAgICAgICogQHBh
cmFtIHtmdW5jdGlvbig/c3RyaW5nLGJvb2xlYW4sc3RyaW5nKX0gY2FsbGJhY2sKICAgICAgKi8K
QEAgLTE0OCwxMSArMTUzLDE5IEBAIFdlYkluc3BlY3Rvci5Qcm9qZWN0LnByb3RvdHlwZSA9IHsK
ICAgICB9LAogCiAgICAgLyoqCisgICAgICogQHJldHVybiB7c3RyaW5nfQorICAgICAqLworICAg
IHR5cGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHJldHVybiB0aGlzLl93b3Jrc3BhY2VQ
cm92aWRlci50eXBlKCk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEByZXR1cm4ge2Jvb2xl
YW59CiAgICAgICovCiAgICAgaXNTZXJ2aWNlUHJvamVjdDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgcmV0dXJuIHRoaXMuX25hbWUgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuRGVi
dWdnZXIgfHwgdGhpcy5fbmFtZSA9PT0gV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5MaXZlRWRp
dDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3dvcmtzcGFjZVByb3ZpZGVyLnR5cGUoKSA9PT0gV2Vi
SW5zcGVjdG9yLnByb2plY3RUeXBlcy5EZWJ1Z2dlciB8fCB0aGlzLl93b3Jrc3BhY2VQcm92aWRl
ci50eXBlKCkgPT09IFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTGl2ZUVkaXQ7CiAgICAgfSwK
IAogICAgIF9maWxlQWRkZWQ6IGZ1bmN0aW9uKGV2ZW50KQpAQCAtMjU0LDEyICsyNjcsMTMgQEAg
V2ViSW5zcGVjdG9yLlByb2plY3QucHJvdG90eXBlID0gewogICAgIH0KIH0KIAotV2ViSW5zcGVj
dG9yLnByb2plY3ROYW1lcyA9IHsKK1dlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMgPSB7CiAgICAg
RGVidWdnZXI6ICJkZWJ1Z2dlciIsCiAgICAgTGl2ZUVkaXQ6ICJsaXZlZWRpdCIsCiAgICAgQ29t
cGlsZXI6ICJjb21waWxlciIsCiAgICAgTmV0d29yazogIm5ldHdvcmsiLAotICAgIFNuaXBwZXRz
OiAic25pcHBldHMiCisgICAgU25pcHBldHM6ICJzbmlwcGV0cyIsCisgICAgRmlsZVN5c3RlbTog
ImZpbGVzeXN0ZW0iCiB9CiAKIC8qKgpAQCAtMjg1LDcgKzI5OSwxNCBAQCBXZWJJbnNwZWN0b3Iu
V29ya3NwYWNlLnByb3RvdHlwZSA9IHsKICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVGb3JPcmln
aW5VUkw6IGZ1bmN0aW9uKG9yaWdpblVSTCkKICAgICB7Ci0gICAgICAgIHJldHVybiB0aGlzLl9w
cm9qZWN0c1tXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLk5ldHdvcmtdLnVpU291cmNlQ29kZUZv
ck9yaWdpblVSTChvcmlnaW5VUkwpOworICAgICAgICB2YXIgbmV0d29ya1Byb2plY3RzID0gdGhp
cy5wcm9qZWN0c0ZvclR5cGUoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKQorICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG5ldHdvcmtQcm9qZWN0cy5sZW5ndGg7ICsraSkgewor
ICAgICAgICAgICAgdmFyIHByb2plY3QgPSBuZXR3b3JrUHJvamVjdHNbaV07CisgICAgICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gcHJvamVjdC51aVNvdXJjZUNvZGVGb3JPcmlnaW5VUkwob3Jp
Z2luVVJMKTsKKyAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAg
cmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gbnVsbDsKICAg
ICB9LAogCiAgICAgLyoqCkBAIC0zMDQsNiArMzI1LDIxIEBAIFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UucHJvdG90eXBlID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge3N0cmlu
Z30gdHlwZQorICAgICAqIEByZXR1cm4ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0KKyAgICAgKi8KKyAgICB1aVNvdXJjZUNvZGVzRm9yUHJvamVjdFR5cGU6IGZ1bmN0aW9uKHR5
cGUpCisgICAgeworICAgICAgICB2YXIgcmVzdWx0ID0gW107CisgICAgICAgIGZvciAodmFyIHBy
b2plY3ROYW1lIGluIHRoaXMuX3Byb2plY3RzKSB7CisgICAgICAgICAgICB2YXIgcHJvamVjdCA9
IHRoaXMuX3Byb2plY3RzW3Byb2plY3ROYW1lXTsKKyAgICAgICAgICAgIGlmIChwcm9qZWN0LnR5
cGUoKSA9PT0gdHlwZSkKKyAgICAgICAgICAgICAgICByZXN1bHQgPSByZXN1bHQuY29uY2F0KHBy
b2plY3QudWlTb3VyY2VDb2RlcygpKTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gcmVzdWx0
OworICAgIH0sCisKKyAgICAvKioKICAgICAgKiBAcGFyYW0ge3N0cmluZ30gcHJvamVjdE5hbWUK
ICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Xb3Jrc3BhY2VQcm92aWRlcn0gd29ya3NwYWNl
UHJvdmlkZXIKICAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuUHJvamVjdH0KQEAgLTM0NCw2
ICszODAsMTkgQEAgV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5wcm90b3R5cGUgPSB7CiAgICAgfSwK
IAogICAgIC8qKgorICAgICAqIEBwYXJhbSB7c3RyaW5nfSB0eXBlCisgICAgICogQHJldHVybiB7
QXJyYXkuPFdlYkluc3BlY3Rvci5Qcm9qZWN0Pn0KKyAgICAgKi8KKyAgICBwcm9qZWN0c0ZvclR5
cGU6IGZ1bmN0aW9uKHR5cGUpCisgICAgeworICAgICAgICBmdW5jdGlvbiBmaWx0ZXJCeVR5cGUo
cHJvamVjdCkKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuIHByb2plY3QudHlwZSgpID09
PSB0eXBlOworICAgICAgICB9CisgICAgICAgIHJldHVybiB0aGlzLnByb2plY3RzKCkuZmlsdGVy
KGZpbHRlckJ5VHlwZSk7CisgICAgfSwKKworICAgIC8qKgogICAgICAqIEByZXR1cm4ge0FycmF5
LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0KICAgICAgKi8KICAgICB1aVNvdXJjZUNvZGVz
OiBmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmpzCmluZGV4IGQ3Njk3ZDcxNWRhMmQ3NmFjYzRhOWZiNmZlYTI0OTQzMzRiNmFmYjAu
LjhhMjdiMDllNjU3MzRjNmZhNTIwMjJkNjk4ZjBhNjE1NGNjZjkyNzIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCkBAIC00MzksOCArNDM5
LDcgQEAgV2ViSW5zcGVjdG9yLl9kb0xvYWRlZERvbmVXaXRoQ2FwYWJpbGl0aWVzID0gZnVuY3Rp
b24oKQogICAgIHRoaXMuaXNvbGF0ZWRGaWxlU3lzdGVtRGlzcGF0Y2hlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuSXNvbGF0ZWRGaWxlU3lzdGVtRGlzcGF0Y2hlcih0aGlzLmlzb2xhdGVkRmlsZVN5c3Rl
bU1vZGVsKTsKICAgICB0aGlzLmZpbGVNYXBwaW5nID0gbmV3IFdlYkluc3BlY3Rvci5GaWxlTWFw
cGluZyh0aGlzLmlzb2xhdGVkRmlsZVN5c3RlbU1vZGVsLm1hcHBpbmcoKSk7CiAKLSAgICB0aGlz
Lm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3Nw
YWNlUHJvdmlkZXIodGhpcy53b3Jrc3BhY2UpOwotICAgIHRoaXMud29ya3NwYWNlLmFkZFByb2pl
Y3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrLCB0aGlzLm5ldHdvcmtXb3Jrc3Bh
Y2VQcm92aWRlcik7CisgICAgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2Vi
SW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHRoaXMud29ya3NwYWNlLCBXZWJJbnNw
ZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwogICAgIG5ldyBXZWJJbnNwZWN0b3IuTmV0d29y
a1VJU291cmNlQ29kZVByb3ZpZGVyKHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKIAog
ICAgIHRoaXMuYnJlYWtwb2ludE1hbmFnZXIgPSBuZXcgV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRN
YW5hZ2VyKFdlYkluc3BlY3Rvci5zZXR0aW5ncy5icmVha3BvaW50cywgdGhpcy5kZWJ1Z2dlck1v
ZGVsLCB0aGlzLndvcmtzcGFjZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cg
Yi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggNjM1M2FlY2QyZjlmOGFiNzNiNWMxZWI1ZDU5
NzZmZGJhZDJiNmQwYS4uNGY5OTNkZDk4ZDQ0NTBhMTRiZWY1OWJkZmNmMDViYzNkNDNmNWYwOCAx
MDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5n
ZUxvZwpAQCAtMSwzICsxLDIzIEBACisyMDEzLTAyLTA4ICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2
aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IEludHJvZHVjZSB3b3Jr
c3BhY2UgcHJvdmlkZXIvcHJvamVjdCB0eXBlLCBlbmNhcHN1bGF0ZSB1cmkgY3JlYXRpb24gaW4g
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIuCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3Jn
L3Nob3dfYnVnLmNnaT9pZD0xMDkyODIKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9P
UFMhKS4KKworICAgICAgICAqIGh0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZHluYW1pYy1z
Y3JpcHRzLmh0bWw6CisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2Ny
aXB0LW1hcHBpbmcuaHRtbDoKKyAgICAgICAgKiBodHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3Bh
Y2UtdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfV29ya3NwYWNlVGVzdC5JbnNwZWN0b3JU
ZXN0LmNyZWF0ZVdvcmtzcGFjZSk6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFr
cG9pbnQtbWFuYWdlci5odG1sOgorICAgICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWlj
LXNjcmlwdHMuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNuaXBw
ZXQtbW9kZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxl
LXNlbGVjdG9yLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFu
ZWwuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLWV4
cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5n
Lmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL3Vpc291cmNlY29kZS1yZXZpc2lvbnMuaHRtbDoK
KwogMjAxMy0wMi0wNyAgVnNldm9sb2QgVmxhc292ICA8dnNldmlrQGNocm9taXVtLm9yZz4KIAog
ICAgICAgICBXZWIgSW5zcGVjdG9yOiBSZXBsYWNlIHdvcmtzcGFjZSB3aXRoIHByb2plY3QgaW4g
VUlTb3VyY2VDb2RlIGNvbnN0cnVjdG9yLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbCBiL0xheW91dFRlc3Rz
L2h0dHAvdGVzdHMvaW5zcGVjdG9yLWVuYWJsZWQvZHluYW1pYy1zY3JpcHRzLmh0bWwKaW5kZXgg
YmI5NTJiNTk3YjFkOTU3YmExZDdmMzE2YTk0MTQ1NjViNjU0NjhhNS4uNjViYTFlYzdlMmIxZTU5
ZmQ4YWM4YWNmMWFlNWZlZTMwMmJhMGUzOSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90
ZXN0cy9pbnNwZWN0b3ItZW5hYmxlZC9keW5hbWljLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci1lbmFibGVkL2R5bmFtaWMtc2NyaXB0cy5odG1sCkBA
IC01MSw3ICs1MSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIGZ1bmN0aW9uIHN0ZXAzKCkKICAg
ICB7CiAgICAgICAgIHZhciBwYW5lbCA9IFdlYkluc3BlY3Rvci5zaG93UGFuZWwoInNjcmlwdHMi
KTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnBy
b2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5OZXR3b3JrKS51aVNvdXJjZUNvZGVzKCk7
CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGVzID0gV2ViSW5zcGVjdG9yLndvcmtzcGFjZS51aVNv
dXJjZUNvZGVzRm9yUHJvamVjdFR5cGUoV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3Jr
KTsKICAgICAgICAgdmFyIHVybHMgPSB1aVNvdXJjZUNvZGVzLm1hcChmdW5jdGlvbih1aVNvdXJj
ZUNvZGUpIHsgcmV0dXJuIHVpU291cmNlQ29kZS5wYXJzZWRVUkwubGFzdFBhdGhDb21wb25lbnQ7
IH0pOwogICAgICAgICB1cmxzLnNvcnQoKTsKICAgICAgICAgCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sIGIv
TGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1hcHBpbmcu
aHRtbAppbmRleCAwZDc4MzlkNWQ0ZmQ5NGU4ZjIxYzdlN2U4Y2Y0N2EwYTBiMmY4YTUxLi45ODY3
YWQyMWJhOTdlNDExOWY1YmM4NGI0YmZjZjdhODkyNWU0ZjFmIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxlci1zY3JpcHQtbWFwcGluZy5odG1sCisr
KyBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNjcmlwdC1tYXBw
aW5nLmh0bWwKQEAgLTMxMCw4ICszMTAsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5zZXR0aW5ncy5zb3VyY2VNYXBzRW5hYmxlZC5zZXQodHJ1ZSk7CiAgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAg
IHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOwotICAgICAgICAg
ICAgdmFyIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxl
V29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5hZGRQ
cm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaywgbmV0d29ya1dvcmtzcGFj
ZVByb3ZpZGVyKTsKKyAgICAgICAgICAgIHZhciBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBu
ZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtzcGFjZSwgV2ViSW5z
cGVjdG9yLnByb2plY3RUeXBlcy5OZXR3b3JrKTsKICAgICAgICAgICAgIHZhciBkZWJ1Z2dlclNj
cmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh3b3Jr
c3BhY2UsIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CiAKICAgICAgICAgICAgIHZhciBzY3Jp
cHQgPSBJbnNwZWN0b3JUZXN0LmNyZWF0ZVNjcmlwdE1vY2soImNvbXBpbGVkLmpzIiwgMCwgMCwg
dHJ1ZSwgIiIpOwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
d29ya3NwYWNlLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jr
c3BhY2UtdGVzdC5qcwppbmRleCBkNTA2YmQ5MjI5MDllYTI1NTYzNmI2NmNmYmE1N2JkOTA5NmJk
MzNkLi5jYWJkMmZiNWJkYzg0YjhjZjY1ZDVhZDBlMjE2MDlmMzgwOTQzY2EwIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcworKysg
Yi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci93b3Jrc3BhY2UtdGVzdC5qcwpAQCAt
NCw4ICs0LDcgQEAgSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlOwogSW5zcGVjdG9yVGVzdC5j
cmVhdGVXb3Jrc3BhY2UgPSBmdW5jdGlvbigpCiB7CiAgICAgSW5zcGVjdG9yVGVzdC50ZXN0V29y
a3NwYWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKLSAgICBJbnNwZWN0b3JUZXN0
LnRlc3ROZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdv
cmtzcGFjZVByb3ZpZGVyKEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZSk7Ci0gICAgSW5zcGVj
dG9yVGVzdC50ZXN0V29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1l
cy5OZXR3b3JrLCBJbnNwZWN0b3JUZXN0LnRlc3ROZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOwor
ICAgIEluc3BlY3RvclRlc3QudGVzdE5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3Nw
YWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwogICAgIEluc3BlY3RvclRl
c3QudGVzdFdvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGVQcm92aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIEluc3BlY3RvclRlc3QuX2RlZmF1
bHRVSVNvdXJjZUNvZGVQcm92aWRlckV2ZW50SGFuZGxlcik7CiAgICAgSW5zcGVjdG9yVGVzdC50
ZXN0V29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVBy
b3ZpZGVyLkV2ZW50cy5VSVNvdXJjZUNvZGVSZW1vdmVkLCBJbnNwZWN0b3JUZXN0Ll9kZWZhdWx0
VUlTb3VyY2VDb2RlUHJvdmlkZXJFdmVudEhhbmRsZXIpOwogfQpkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCmluZGV4IGM0
M2E1ZWZmNzJhZTQ0MmExODkzMGNmMjlkNTkxNDZkN2VjYWQ1MWMuLmUzYzljNzY3MGY3ZDNiMmEz
MmE3NzZkMTJkNzI1NzgxMjg2YzFiYzcgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKQEAgLTE2Myw5ICsxNjMsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9k
ZWwuX2FkZFNjcmlwdCh1cmwsIHVybCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0
KCIgIEFkZGluZyB0ZW1wb3JhcnkgVUlTb3VyY2VDb2RlOiAiICsgdXJsICsgIikiKTsKICAgICAg
ICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFBy
b3ZpZGVyKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0L2phdmFz
Y3JpcHQiKTsKLSAgICAgICAgdmFyIHVyaSA9ICJkZWJ1Z2dlcjoiICsgV2ViSW5zcGVjdG9yLlNp
bXBsZVdvcmtzcGFjZVByb3ZpZGVyLnVyaUZvclVSTCh1cmwpOwotICAgICAgICB2YXIgdW5pcXVl
VVJJID0gYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIudW5pcXVl
VVJJKHVyaSk7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBicmVha3BvaW50TWFuYWdlci5f
ZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKHVuaXF1ZVVSSSwgdXJsLCBjb250ZW50
UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IGJyZWFrcG9pbnRN
YW5hZ2VyLl9kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyLmFkZFVuaXF1ZUZpbGVGb3JVUkwodXJs
LCBjb250ZW50UHJvdmlkZXIsIHRydWUpOwogICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNl
TWFwcGluZyhkZWZhdWx0TWFwcGluZyk7CiAgICAgICAgIHVpU291cmNlQ29kZXNbdXJsXSA9IHVp
U291cmNlQ29kZTsKICAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKQEAgLTE5MywxMiArMTkx
LDggQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgIHZhciBkZWJ1Z2dlck1vZGVsID0gbmV3IERl
YnVnZ2VyTW9kZWxNb2NrKHNvdXJjZU1hcHBpbmcpOwogICAgICAgICB2YXIgd29ya3NwYWNlID0g
bmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKICAgICAgICAgdmFyIGJyZWFrcG9pbnRNYW5h
Z2VyID0gbmV3IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcihzZXR0aW5nLCBkZWJ1Z2dl
ck1vZGVsLCB3b3Jrc3BhY2UpOwotCi0gICAgICAgIGJyZWFrcG9pbnRNYW5hZ2VyLl9uZXR3b3Jr
V29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3Zp
ZGVyKHdvcmtzcGFjZSk7Ci0gICAgICAgIHdvcmtzcGFjZS5hZGRQcm9qZWN0KCJuZXR3b3JrIiwg
YnJlYWtwb2ludE1hbmFnZXIuX25ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAgICAgIGJy
ZWFrcG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlcldvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3Bl
Y3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3b3Jrc3BhY2UpOwotICAgICAgICB3b3Jrc3Bh
Y2UuYWRkUHJvamVjdCgiZGVidWdnZXIiLCBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJXb3Jr
c3BhY2VQcm92aWRlcik7Ci0KKyAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX25ldHdvcmtXb3Jr
c3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIo
d29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOworICAgICAgICBi
cmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJv
amVjdFR5cGVzLkRlYnVnZ2VyKTsKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuYWRkRXZlbnRM
aXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZlbnRzLkJyZWFrcG9pbnRB
ZGRlZCwgYnJlYWtwb2ludEFkZGVkKTsKICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuYWRkRXZl
bnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuRXZlbnRzLkJyZWFrcG9p
bnRSZW1vdmVkLCBicmVha3BvaW50UmVtb3ZlZCk7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCIgIENyZWF0ZWQgYnJlYWtwb2ludHMgbWFuYWdlciIpOwpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0cy5odG1sIGIvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0cy5odG1sCmluZGV4IGU5ZTE4
ZmQ0ODJlNWI3ZjQxYWQ3NjEzYzQ0NzI2MTI0YzAyOTBkNmQuLjYwN2YzMzg2OTZhYTg2OTU1Zjg0
MDY1OWM5ODhiYmEwMTc2ODdjN2QgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9keW5hbWljLXNjcmlwdHMuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvZHluYW1pYy1zY3JpcHRzLmh0bWwKQEAgLTQ4LDcgKzQ4LDcgQEAgZnVuY3Rpb24g
dGVzdCgpCiAgICAgZnVuY3Rpb24gc3RlcDMoKQogICAgIHsKICAgICAgICAgdmFyIHBhbmVsID0g
V2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwotICAgICAgICB2YXIgdWlTb3VyY2VD
b2RlcyA9IFdlYkluc3BlY3Rvci53b3Jrc3BhY2UucHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVj
dE5hbWVzLk5ldHdvcmspLnVpU291cmNlQ29kZXMoKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29k
ZXMgPSBXZWJJbnNwZWN0b3Iud29ya3NwYWNlLnVpU291cmNlQ29kZXNGb3JQcm9qZWN0VHlwZShX
ZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwogICAgICAgICB2YXIgdXJscyA9IHVp
U291cmNlQ29kZXMubWFwKGZ1bmN0aW9uKHVpU291cmNlQ29kZSkgeyByZXR1cm4gdWlTb3VyY2VD
b2RlLnBhcnNlZFVSTC5sYXN0UGF0aENvbXBvbmVudDsgfSk7CiAgICAgICAgIHVybHMuc29ydCgp
OwogCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0LXNu
aXBwZXQtbW9kZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQt
c25pcHBldC1tb2RlbC5odG1sCmluZGV4IDk0YmM2YjhiMjliODA5ZWNjYTYzOTgwMDQ4NGExNGEz
NGM2Y2Y5MGIuLjVkZGE2Yjg3ZTMxM2Y3NDE2ZDlkZGNhODNiODZlYTA2ODNlZWExOWQgMTAwNjQ0
Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBldC1tb2Rl
bC5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHQtc25pcHBl
dC1tb2RlbC5odG1sCkBAIC0xNSw4ICsxNSw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgIFdlYklu
c3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydCA9IHt9OwogICAgIFdl
Ykluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9ydC5pc0VuYWJsZWQg
PSBmdW5jdGlvbigpIHsgcmV0dXJuIHRydWU7IH07CiAgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBX
ZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7Ci0gICAgdmFyIHNuaXBwZXRXb3Jrc3BhY2VQcm92aWRl
ciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlKTsK
LSAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5hbWVzLlNuaXBw
ZXRzLCBzbmlwcGV0V29ya3NwYWNlUHJvdmlkZXIpOworICAgIHZhciBzbmlwcGV0V29ya3NwYWNl
UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFjZVByb3ZpZGVyKHdvcmtz
cGFjZSwgV2ViSW5zcGVjdG9yLnByb2plY3RUeXBlcy5TbmlwcGV0cyk7CiAgICAgdmFyIHdvcmtz
cGFjZUNvbnRyb2xsZXIgPSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZUNvbnRyb2xsZXIod29y
a3NwYWNlKTsKICAgICBXZWJJbnNwZWN0b3Iuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwod29ya3NwYWNlLCBzbmlwcGV0V29ya3NwYWNlUHJv
dmlkZXIpOwogICAgIEluc3BlY3RvclRlc3QucnVuRGVidWdnZXJUZXN0U3VpdGUoWwpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxlY3Rv
ci5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtZmlsZS1zZWxl
Y3Rvci5odG1sCmluZGV4IDE3YjVlMjRkZTA5OWU0M2E5Y2FhMzJhODk4NzI1NzM1ZTUxZWMxNjIu
LjU3MmUyYmY1Y2IyZGVhMDg0ZmY2MzU5ODFlZGJmODNlYTVlYWYzODEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLWZpbGUtc2VsZWN0b3IuaHRtbAor
KysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1maWxlLXNlbGVjdG9y
Lmh0bWwKQEAgLTEwLDE5ICsxMCwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICBXZWJJbnNwZWN0
b3IuX2lzTWFjID0gZmFsc2U7CiAKICAgICBXZWJJbnNwZWN0b3Iuc2hvd1BhbmVsKCJzY3JpcHRz
Iik7Ci0gICAgdmFyIG5hdmlnYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRv
cigpOwogCi0gICAgdmFyIE1vY2tQcm9qZWN0ID0gZnVuY3Rpb24oKSB7fQotICAgIE1vY2tQcm9q
ZWN0LnByb3RvdHlwZS5uYW1lID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJu
ZXR3b3JrIjsKLSAgICB9CisgICAgdmFyIG5hdmlnYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2Ny
aXB0c05hdmlnYXRvcigpOworICAgIHZhciB3b3Jrc3BhY2UgPSBuZXcgV2ViSW5zcGVjdG9yLldv
cmtzcGFjZSgpOworICAgIHZhciB3b3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3Iu
U2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5
cGVzLk5ldHdvcmspOwogCiAgICAgdmFyIHVpU291cmNlQ29kZXMgPSBbXTsKICAgICBmdW5jdGlv
biBhZGRVSVNvdXJjZUNvZGUodXJsLCBpc0NvbnRlbnRTY3JpcHQpCiAgICAgewotICAgICAgICB2
YXIgdWlTb3VyY2VDb2RlID0gbmV3IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGUobmV3IE1vY2tQ
cm9qZWN0KCksIHVybCwgdXJsLCB1cmwsIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlw
dCwgbnVsbCk7Ci0gICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBpc0NvbnRl
bnRTY3JpcHQ7CisgICAgICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9y
LlN0YXRpY0NvbnRlbnRQcm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQs
ICIiLCAidGV4dC9qYXZhc2NyaXB0Iik7CisgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB3b3Jr
c3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKHVybCwgY29udGVudFByb3ZpZGVyLCBmYWxzZSwg
aXNDb250ZW50U2NyaXB0KTsKICAgICAgICAgbmF2aWdhdG9yLmFkZFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUpOwogICAgICAgICB1aVNvdXJjZUNvZGVzLnB1c2godWlTb3VyY2VDb2RlKTsKICAg
ICB9CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1w
YW5lbC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwu
aHRtbAppbmRleCA4M2NkMTJjZjA3OWY2Mzg2MWYxN2M1YzQ5MDA4YjhkYzc1NjMwYmJjLi5jY2M5
MGIwMzBkZjFiNTEyN2NjN2JjMDM2ZWViMmE2ZDYxNjZiNjljIDEwMDY0NAotLS0gYS9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTE1LDM4ICsxNSw0
OCBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgc2V0OiBmdW5jdGlvbihicmVha3BvaW50cykg
eyBwZXJzaXN0ZW50QnJlYWtwb2ludHMgPSBicmVha3BvaW50czsgfQogICAgIH07CiAKLSAgICB2
YXIgY29udGVudFByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TdGF0aWNDb250ZW50UHJvdmlk
ZXIoV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIiwgInRleHQvamF2YXNjcmlw
dCIpOwotCi0gICAgZnVuY3Rpb24gY3JlYXRlTW9ja1dvcmtzcGFjZSgpCisgICAgZnVuY3Rpb24g
Y3JlYXRlQ29udGVudFByb3ZpZGVyKHVybCkKICAgICB7Ci0gICAgICAgIHZhciB3b3Jrc3BhY2Ug
PSBuZXcgV2ViSW5zcGVjdG9yLldvcmtzcGFjZSgpOwotICAgICAgICB2YXIgbmV0d29ya1dvcmtz
cGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQcm92aWRlcih3
b3Jrc3BhY2UpOwotICAgICAgICB2YXIgcHJvamVjdCA9IHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdl
Ykluc3BlY3Rvci5wcm9qZWN0TmFtZXMuTmV0d29yaywgbmV0d29ya1dvcmtzcGFjZVByb3ZpZGVy
KTsKLQotICAgICAgICB3b3Jrc3BhY2UuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBX
ZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlKTsKLSAgICAgICAg
d29ya3NwYWNlLmFkZFByb2plY3QoV2ViSW5zcGVjdG9yLnByb2plY3ROYW1lcy5EZWJ1Z2dlciwg
d29ya3NwYWNlLmRlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIpOwotICAgICAgICBwcm9qZWN0LnJl
cXVlc3RGaWxlQ29udGVudCA9IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgY2FsbGJhY2spCisgICAg
ICAgIHZhciBjb250ZW50UHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlN0YXRpY0NvbnRlbnRQ
cm92aWRlcihXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5TY3JpcHQsICIiLCAidGV4dC9qYXZh
c2NyaXB0Iik7CisgICAgICAgIGNvbnRlbnRQcm92aWRlci5yZXF1ZXN0Q29udGVudCA9IGZ1bmN0
aW9uKGNhbGxiYWNrKQogICAgICAgICB7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJl
c3VsdCgiU291cmNlIHJlcXVlc3RlZCBmb3IgIiArIHVpU291cmNlQ29kZS5vcmlnaW5VUkwoKSk7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU291cmNlIHJlcXVlc3RlZCBm
b3IgIiArIHVybCk7CiAgICAgICAgICAgICBjYWxsYmFjaygiIik7CiAgICAgICAgIH07Ci0gICAg
ICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXR3b3JrV29ya3NwYWNl
UHJvdmlkZXI7CisgICAgICAgIHJldHVybiBjb250ZW50UHJvdmlkZXI7CisgICAgfQorCisgICAg
ZnVuY3Rpb24gY3JlYXRlTW9ja1dvcmtzcGFjZSgpCisgICAgeworICAgICAgICB2YXIgd29ya3Nw
YWNlID0gbmV3IFdlYkluc3BlY3Rvci5Xb3Jrc3BhY2UoKTsKKyAgICAgICAgd29ya3NwYWNlLm5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNl
UHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOwor
ICAgICAgICB3b3Jrc3BhY2UuZGVidWdnZXJXb3Jrc3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNw
ZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIod29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJv
amVjdFR5cGVzLkRlYnVnZ2VyKTsKICAgICAgICAgcmV0dXJuIHdvcmtzcGFjZTsKICAgICB9CiAK
KyAgICBmdW5jdGlvbiBhZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsIHVybCkKKyAgICB7CisgICAg
ICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCh1cmws
IGNyZWF0ZUNvbnRlbnRQcm92aWRlcih1cmwpLCBmYWxzZSk7CisgICAgfQorCisgICAgZnVuY3Rp
b24gYWRkRGVidWdnZXJGaWxlKHdvcmtzcGFjZSwgdXJsKQorICAgIHsKKyAgICAgICAgd29ya3Nw
YWNlLmRlYnVnZ2VyV29ya3NwYWNlUHJvdmlkZXIuYWRkVW5pcXVlRmlsZUZvclVSTCh1cmwsIGNy
ZWF0ZUNvbnRlbnRQcm92aWRlcih1cmwpLCBmYWxzZSk7CisgICAgfQorCiAgICAgSW5zcGVjdG9y
VGVzdC5ydW5UZXN0U3VpdGUoWwogICAgICAgICBmdW5jdGlvbiB0ZXN0SW5pdGlhbExvYWQobmV4
dCkKICAgICAgICAgewogICAgICAgICAgICAgdmFyIHdvcmtzcGFjZSA9IGNyZWF0ZU1vY2tXb3Jr
c3BhY2UoKTsKIAotICAgICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRl
ci5hZGRGaWxlRm9yVVJMKCJmb29iYXIuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAg
ICAgICAgICAgIGFkZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwgImZvb2Jhci5qcyIpOwogCiAgICAg
ICAgICAgICB2YXIgcGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCh3b3Jrc3Bh
Y2UpOwogICAgICAgICAgICAgcGFuZWwuc2hvdygpOwogCi0gICAgICAgICAgICB3b3Jrc3BhY2Uu
bmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImZvby5qcyIsIGNvbnRlbnRQ
cm92aWRlciwgZmFsc2UpOwotICAgICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQ
cm92aWRlci5hZGRGaWxlRm9yVVJMKCJiYXIuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsK
LSAgICAgICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZv
clVSTCgiYmF6LmpzIiwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7CisgICAgICAgICAgICBhZGRO
ZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJmb28uanMiKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtG
aWxlKHdvcmtzcGFjZSwgImJhci5qcyIpOworICAgICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29y
a3NwYWNlLCAiYmF6LmpzIik7CiAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFNjcmlw
dHNOYXZpZ2F0b3IocGFuZWwuX25hdmlnYXRvcik7CiAKQEAgLTY0LDE0ICs3NCwxNCBAQCBmdW5j
dGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBwYW5lbCA9IG5ldyBXZWJJbnNwZWN0b3IuU2Ny
aXB0c1BhbmVsKHdvcmtzcGFjZSk7CiAgICAgICAgICAgICBwYW5lbC5zaG93KCk7CiAKLSAgICAg
ICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRkRmlsZUZvclVSTCgi
Zm9vLmpzIiwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7Ci0gICAgICAgICAgICB3b3Jrc3BhY2Uu
bmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImJhci5qcyIsIGNvbnRlbnRQ
cm92aWRlciwgZmFsc2UpOwotICAgICAgICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQ
cm92aWRlci5hZGRGaWxlRm9yVVJMKCJiYXouanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsK
KyAgICAgICAgICAgIGFkZE5ldHdvcmtGaWxlKHdvcmtzcGFjZSwgImZvby5qcyIpOworICAgICAg
ICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiYmFyLmpzIik7CisgICAgICAgICAgICBh
ZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJiYXouanMiKTsKIAogICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKIAogICAgICAg
ICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5yZXNldCgpOwotICAgICAg
ICAgICAgd29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlRm9yVVJMKCJi
YXIuanMiLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAgICAgICAgIGFkZE5ldHdvcmtG
aWxlKHdvcmtzcGFjZSwgImJhci5qcyIpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1w
U2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKIAogICAgICAgICAgICAgcGFuZWwu
ZGV0YWNoKCk7CkBAIC04NCwxMyArOTQsMTMgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAgICAgICAg
ICB2YXIgcGFuZWwgPSBuZXcgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCh3b3Jrc3BhY2UpOwog
ICAgICAgICAgICAgcGFuZWwuc2hvdygpOwogCi0gICAgICAgICAgICB3b3Jrc3BhY2UubmV0d29y
a1dvcmtzcGFjZVByb3ZpZGVyLmFkZEZpbGVGb3JVUkwoImZvby5qcyIsIGNvbnRlbnRQcm92aWRl
ciwgZmFsc2UpOwotICAgICAgICAgICAgd29ya3NwYWNlLmRlYnVnZ2VyV29ya3NwYWNlUHJvdmlk
ZXIuYWRkRmlsZSgiZGVidWdnZXI6Y29tcGlsZWQuanMiLCAiY29tcGlsZWQuanMiLCBjb250ZW50
UHJvdmlkZXIpOworICAgICAgICAgICAgYWRkTmV0d29ya0ZpbGUod29ya3NwYWNlLCAiZm9vLmpz
Iik7CisgICAgICAgICAgICBhZGREZWJ1Z2dlckZpbGUod29ya3NwYWNlLCAiY29tcGlsZWQuanMi
KTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5l
bC5fbmF2aWdhdG9yKTsKIAogICAgICAgICAgICAgLy8gUGx1ZyBjb21waWxlciBzb3VyY2UgbWFw
cGluZy4KLSAgICAgICAgICAgIHdvcmtzcGFjZS5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIuYWRk
RmlsZUZvclVSTCgic291cmNlLmpzIiwgY29udGVudFByb3ZpZGVyLCBmYWxzZSk7CisgICAgICAg
ICAgICBhZGROZXR3b3JrRmlsZSh3b3Jrc3BhY2UsICJzb3VyY2UuanMiKTsKIAogICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsK
ICAgICAgICAgICAgIG5leHQoKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmctZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKaW5kZXggYzI0YWNjZDAz
Yzg4NTllMDQzMGU0MmU4YmQ1OTZmOGY5NzdiMjRkMy4uYmNhM2MzOGJmOWFjZjMyNzdlNzk1YTUx
YTc3MzQ5YzEzYzI2NmExNiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy1leHBlY3RlZC50eHQKQEAgLTEzLDcgKzEzLDcg
QEAgRHVtcGluZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6CiBEdW1waW5nIFNjcmlw
dHNOYXZpZ2F0b3IgJ0NvbnRlbnQgc2NyaXB0cycgdGFiOgogICBleHRlbnNpb24tbmFtZQogICAg
IGZvbGRlcgotICAqTm9uKlVSTCpwYXRoCisgICpBbm90aGVyKk5vbipVUkwqcGF0aAogRHVtcGlu
ZyBTY3JpcHRzTmF2aWdhdG9yICdTY3JpcHRzJyB0YWI6CiAgIGJhci5jb20KICAgICBmb28vcGF0
aApAQCAtNDEsNSArNDEsNSBAQCBEdW1waW5nIFNjcmlwdHNOYXZpZ2F0b3IgJ0NvbnRlbnQgc2Ny
aXB0cycgdGFiOgogICAgIGZvbGRlcgogICAgICAgYmF6LmpzCiAgICAgYmFyLmpzCi0gICpOb24q
VVJMKnBhdGgKKyAgKkFub3RoZXIqTm9uKlVSTCpwYXRoCiAKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbAppbmRleCA5ZjhhYWNjZmNj
M2IxOTYyOGM1ZjdiODE2ZWExODgyZDFmMjI4ODQwLi44YTM0YjgzZjhhNGQ1NzI2NmM0Y2M4MmQ3
ZDBhZjM3NTYxN2QyZGY5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdn
ZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NjcmlwdHMtc29ydGluZy5odG1sCkBAIC0xMSwyOCArMTEsMjIgQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgV2ViSW5zcGVjdG9yLnNob3dQYW5lbCgic2NyaXB0cyIpOwogCiAgICAgdmFyIG5h
dmlnYXRvciA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcigpOwotCi0gICAgdmFy
IE1vY2tQcm9qZWN0ID0gZnVuY3Rpb24oKSB7fQotICAgIE1vY2tQcm9qZWN0LnByb3RvdHlwZS5u
YW1lID0gZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgcmV0dXJuICJuZXR3b3JrIjsKLSAgICB9
CisgICAgdmFyIHdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7CisgICAg
dmFyIHdvcmtzcGFjZVByb3ZpZGVyID0gbmV3IFdlYkluc3BlY3Rvci5TaW1wbGVXb3Jrc3BhY2VQ
cm92aWRlcih3b3Jrc3BhY2UsIFdlYkluc3BlY3Rvci5wcm9qZWN0VHlwZXMuTmV0d29yayk7CiAK
ICAgICB2YXIgdWlTb3VyY2VDb2RlcyA9IFtdOwogICAgIGZ1bmN0aW9uIGFkZFVJU291cmNlQ29k
ZSh1cmwsIGlzQ29udGVudFNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUg
PSBuZXcgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZShuZXcgTW9ja1Byb2plY3QoKSwgdXJsLCB1
cmwsIHVybCwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCBudWxsKTsKLSAgICAg
ICAgdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA9IGlzQ29udGVudFNjcmlwdDsKKyAgICAg
ICAgdmFyIGNvbnRlbnRQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU3RhdGljQ29udGVudFBy
b3ZpZGVyKFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5cGVzLlNjcmlwdCwgIiIsICJ0ZXh0L2phdmFz
Y3JpcHQiKTsKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHdvcmtzcGFjZVByb3ZpZGVyLmFk
ZEZpbGVGb3JVUkwodXJsLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlLCBpc0NvbnRlbnRTY3JpcHQp
OwogICAgICAgICBuYXZpZ2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7CiAgICAg
ICAgIHVpU291cmNlQ29kZXMucHVzaCh1aVNvdXJjZUNvZGUpOwogICAgIH0KIAotICAgIGZ1bmN0
aW9uIGR1bXBTY3JpcHRzTGlzdChub1JldmVhbCkKKyAgICBmdW5jdGlvbiBkdW1wU2NyaXB0c0xp
c3QoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIiIpOwogICAgICAg
ICBJbnNwZWN0b3JUZXN0LmR1bXBTY3JpcHRzTmF2aWdhdG9yKG5hdmlnYXRvcik7Ci0gICAgICAg
IGlmIChub1JldmVhbCkKLSAgICAgICAgICAgIHJldHVybjsKICAgICAgICAgZm9yICh2YXIgaSA9
IDA7IGkgPCB1aVNvdXJjZUNvZGVzLmxlbmd0aDsgKytpKQogICAgICAgICAgICAgbmF2aWdhdG9y
LnJldmVhbFVJU291cmNlQ29kZSh1aVNvdXJjZUNvZGVzW2ldKTsKICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihuYXZpZ2F0b3IpOwpAQCAtNjUsNyArNTksNyBAQCBm
dW5jdGlvbiB0ZXN0KCkKICAgICAgICAgImV4dGVuc2lvbi1zY2hlbWE6Ly9leHRlbnNpb24tbmFt
ZS9mb2xkZXIvYmF6LmpzIiBdOwogICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZXh0ZW5zaW9ucy5s
ZW5ndGg7ICsraSkKICAgICAgICAgYWRkVUlTb3VyY2VDb2RlKGV4dGVuc2lvbnNbaV0sIHRydWUp
OwotICAgIGFkZFVJU291cmNlQ29kZSgiKk5vbipVUkwqcGF0aCIsIHRydWUpOworICAgIGFkZFVJ
U291cmNlQ29kZSgiKkFub3RoZXIqTm9uKlVSTCpwYXRoIiwgdHJ1ZSk7CiAgICAgZHVtcFNjcmlw
dHNMaXN0KCk7CiAgICAgSW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKIH0KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvdWlzb3VyY2Vjb2RlLXJldmlzaW9ucy5odG1sCmluZGV4IDUz
MDZiYjgyYTA2Yjg4Y2EyZmFlODk5YzVmNTM0OWRlYzYwNmE1NjYuLjUzMDcyYmNkNTkyOWU3OTEx
ZTNmZDhmOGRmYjIxNzRmNmIxYzNmZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rv
ci91aXNvdXJjZWNvZGUtcmV2aXNpb25zLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9y
L3Vpc291cmNlY29kZS1yZXZpc2lvbnMuaHRtbApAQCAtOSw5ICs5LDggQEAgZnVuY3Rpb24gdGVz
dCgpCiAgICAgZnVuY3Rpb24gY3JlYXRlTW9ja1Byb2plY3QoKQogICAgIHsKICAgICAgICAgdmFy
IHdvcmtzcGFjZSA9IG5ldyBXZWJJbnNwZWN0b3IuV29ya3NwYWNlKCk7Ci0gICAgICAgIHZhciBu
ZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIgPSBuZXcgV2ViSW5zcGVjdG9yLlNpbXBsZVdvcmtzcGFj
ZVByb3ZpZGVyKHdvcmtzcGFjZSk7Ci0gICAgICAgIHZhciBwcm9qZWN0ID0gbmV3IFdlYkluc3Bl
Y3Rvci5Qcm9qZWN0KHdvcmtzcGFjZSwgIm5ldHdvcmsiLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIpOwotICAgICAgICB3b3Jrc3BhY2UuYWRkUHJvamVjdChXZWJJbnNwZWN0b3IucHJvamVjdE5h
bWVzLk5ldHdvcmssIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7CisgICAgICAgIHZhciB3b3Jr
c3BhY2VQcm92aWRlciA9IG5ldyBXZWJJbnNwZWN0b3IuU2ltcGxlV29ya3NwYWNlUHJvdmlkZXIo
d29ya3NwYWNlLCBXZWJJbnNwZWN0b3IucHJvamVjdFR5cGVzLk5ldHdvcmspOworICAgICAgICB2
YXIgcHJvamVjdCA9IHdvcmtzcGFjZS5hZGRQcm9qZWN0KFdlYkluc3BlY3Rvci5wcm9qZWN0VHlw
ZXMuTmV0d29yaywgd29ya3NwYWNlUHJvdmlkZXIpOwogICAgICAgICBwcm9qZWN0LnJlcXVlc3RG
aWxlQ29udGVudCA9IGZ1bmN0aW9uKHVyaSwgY2FsbGJhY2spCiAgICAgICAgIHsKICAgICAgICAg
ICAgIGNhbGxiYWNrKCI8c2NyaXB0IGNvbnRlbnQ+IiwgZmFsc2UsICJ0ZXh0L2phdmFzY3JpcHQi
KTsK
</data>
<flag name="review"
          id="207049"
          type_id="1"
          status="+"
          setter="apavlov"
    />
          </attachment>
      

    </bug>

</bugzilla>