<?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>103038</bug_id>
          
          <creation_ts>2012-11-22 01:47:07 -0800</creation_ts>
          <short_desc>Web Inspector: Simplify script mappings by introducing DefaultScriptMapping.</short_desc>
          <delta_ts>2012-12-27 03:22:16 -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>773735</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-22 01:47:07 -0800</bug_when>
    <thetext>DefaultScriptMapping creates a uiSourceCode for each script and set itself as a mapping for the script.
Script can now have a stack of (possibly disabled) mappings, allowing to try several mappings when calculating uiLocation.
LiveEditSupport object is added on WebInspector to support live editing of readonly DefaultScriptMapping&apos;s uiSourceCodes.
DefaultScriptMapping is now the only mapping that creates temporary uiSourceCodes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773740</commentid>
    <comment_count>1</comment_count>
      <attachid>175623</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-22 01:48:55 -0800</bug_when>
    <thetext>Created attachment 175623
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773743</commentid>
    <comment_count>2</comment_count>
      <attachid>175625</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-11-22 01:51:21 -0800</bug_when>
    <thetext>Created attachment 175625
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>773901</commentid>
    <comment_count>3</comment_count>
      <attachid>175625</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2012-11-22 06:28:31 -0800</bug_when>
    <thetext>Comment on attachment 175625
Patch

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

&gt; Source/WebCore/ChangeLog:8
&gt; +        Additional information of the change such as approach, rationale. Please add per-function descriptions below (OOPS!).

Remove this line.

&gt; Source/WebCore/inspector/front-end/DefaultScriptMapping.js:55
&gt; +        return new WebInspector.UILocation(uiSourceCode, lineNumber, columnNumber);

We should finally make it a factory method on UISourceCode.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>797495</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2012-12-27 03:22:16 -0800</bug_when>
    <thetext>Committed r138496: &lt;http://trac.webkit.org/changeset/138496&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175623</attachid>
            <date>2012-11-22 01:48:55 -0800</date>
            <delta_ts>2012-11-22 01:51:16 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103038-20121122134640.patch</filename>
            <type>text/plain</type>
            <size>89325</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEyNjY3M2ExNzAzOGRk
NzI2YTllYWViOTQ3NjhiNzcwZThmYzFjNi4uZmEyZDgwNmQ2NWQyNDM0MWUyODYxYTQwYWUxYjBk
YzU5Y2FjMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTIyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFNpbXBsaWZ5IHNjcmlwdCBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBEZWZhdWx0U2NyaXB0
TWFwcGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCBy
YXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09Q
UyEpLgorICAgICAgICBEZWZhdWx0U2NyaXB0TWFwcGluZyBjcmVhdGVzIGEgdWlTb3VyY2VDb2Rl
IGZvciBlYWNoIHNjcmlwdCBhbmQgc2V0IGl0c2VsZiBhcyBhIG1hcHBpbmcgZm9yIHRoZSBzY3Jp
cHQuCisgICAgICAgIFNjcmlwdCBjYW4gbm93IGhhdmUgYSBzdGFjayBvZiAocG9zc2libHkgZGlz
YWJsZWQpIG1hcHBpbmdzLCBhbGxvd2luZyB0byB0cnkgc2V2ZXJhbCBtYXBwaW5ncyB3aGVuIGNh
bGN1bGF0aW5nIHVpTG9jYXRpb24uCisgICAgICAgIExpdmVFZGl0U3VwcG9ydCBvYmplY3QgaXMg
YWRkZWQgb24gV2ViSW5zcGVjdG9yIHRvIHN1cHBvcnQgbGl2ZSBlZGl0aW5nIG9mIHJlYWRvbmx5
IERlZmF1bHRTY3JpcHRNYXBwaW5nJ3MgdWlTb3VyY2VDb2Rlcy4KKyAgICAgICAgRGVmYXVsdFNj
cmlwdE1hcHBpbmcgaXMgbm93IHRoZSBvbmx5IG1hcHBpbmcgdGhhdCBjcmVhdGVzIHRlbXBvcmFy
eSB1aVNvdXJjZUNvZGVzLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuc291cmNlRmlsZUlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5fYnJlYWtwb2lu
dFN0b3JhZ2VJZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBl
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9yZXNldCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5n
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0U2NyaXB0TWFwcGluZy5qczogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5l
bHNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90
eXBlLnBvcHVsYXRlVGV4dEFyZWFDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUu
YWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
cHJvdG90eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9oYXNNZXJnZWRUb1ZNKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9o
YXNEaXZlcmdlZEZyb21WTSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zY3JpcHRz
Rm9yVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1h
cHBpbmcucHJvdG90eXBlLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9yZXNldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5lZGl0U291cmNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnNldElzRHluYW1pY1NjcmlwdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5pc0R5bmFtaWNTY3JpcHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuX2VuYWJsZWRT
b3VyY2VNYXBwaW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5f
c291cmNlTWFwcGluZ3NEaWZmZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90
b3R5cGUuZGlzYWJsZVNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dC5wcm90b3R5cGUuZW5hYmxlU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5wdXNoU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0LnByb3RvdHlwZS5wb3BTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHQucHJvdG90eXBlLl91cGRhdGVMb2NhdGlvbnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuY3JlYXRlTGl2ZUxvY2F0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qczoKKwogMjAxMi0xMS0yMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTM1OC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA2NTlkYWM0
MWQzNTc3NTU0YmNmZWUzZmJlNDNkYWQ3YzcyZGUzMWVlLi4zNTY3ZmRjN2MwZDVlOWQ4MjcxZmUy
ZmFhNzg2OWU1NjdhMDM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC04MTEsMyArODExLDUgQEAgbG9jYWxpemVkU3RyaW5n
c1siQXZlcmFnZSBUaW1lIl0gPSAiQXZlcmFnZSBUaW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIk1h
eGltdW0gVGltZSJdID0gIk1heGltdW0gVGltZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTdGFuZGFy
ZCBEZXZpYXRpb24iXSA9ICJTdGFuZGFyZCBEZXZpYXRpb24iOwogbG9jYWxpemVkU3RyaW5nc1si
VGltZSBieSBjYXRlZ29yeSJdID0gIlRpbWUgYnkgY2F0ZWdvcnkiOworbG9jYWxpemVkU3RyaW5n
c1siTGl2ZSBFZGl0Il0gPSAiTGl2ZSBFZGl0IjsKK2xvY2FsaXplZFN0cmluZ3NbIkxpdmUgZWRp
dCJdID0gIkxpdmUgZWRpdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTI3N2IxNzU3NWE5NDM5ZGE2
NzJhYjc2YTZlNThlMDczOWExNTcyNS4uMjliYzFiOGNmNzBkNWU5OGE0MjE5OTNjM2VmZjc4NTE3
YjBhOWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM5OSw2ICs2Mzk5LDcgQEAKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlvblV0aWxzLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRHJhd2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxEZXNjcmlwdG9yLmpzJywKQEAgLTY0MzAsNiArNjQz
MSw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGUwMDQ4NDAzZGMzZTky
MmNjZWE4MjM5MTU5YWY1NjExZmJjZjcxY2YuLmMyYjVmMjlkYWNiMThkMTc4MWUyYWI2MzY1YzFj
YmQ5NDE3ZmI4ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC03NjE2OSw2ICs3NjE2OSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZWZhdWx0
U2NyaXB0TWFwcGluZy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRGVmYXVsdFRleHRFZGl0b3IuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC03NjQ0MSw2ICs3NjQ0NSwxMCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxMaXZlRWRpdFN1cHBvcnQuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE1ldHJpY3NTaWRl
YmFyUGFuZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCA2ZWFkYTQ3MWQ4NWU4YTVjNjNlZTMwZjM1
ZTJiNjBhYzg4MjEwYmZkLi4xMzNiY2NjNjllZjUzYTJhOWFkZmIwOWJiM2FkNDAyZjEzY2JmMzYy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBA
IC05Nyw3ICs5Nyw5IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiVGltZWxpbmVNYW5hZ2Vy
LmpzIiwKICAgICAgICAgICAgICJSZW1vdGVPYmplY3QuanMiLAogICAgICAgICAgICAgIlJlc291
cmNlLmpzIiwKKyAgICAgICAgICAgICJEZWZhdWx0U2NyaXB0TWFwcGluZy5qcyIsCiAgICAgICAg
ICAgICAiUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIiwKKyAgICAgICAgICAgICJMaXZlRWRpdFN1
cHBvcnQuanMiLAogICAgICAgICAgICAgIlJlc291cmNlVHJlZU1vZGVsLmpzIiwKICAgICAgICAg
ICAgICJSZXNvdXJjZVR5cGUuanMiLAogICAgICAgICAgICAgIlJlc291cmNlVXRpbHMuanMiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMKaW5kZXggOTgyNTk1MDE1NjdhNzE2NWY0ZGZjYmU1OWM3YmFkY2Y4ZmQ1ZjI1
NC4uM2VjNGZhOGIyYWJhNDllYjE4NzJiMGQxZTkzOTZhMThhMjIwOTQ5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzCkBAIC01MCw3ICs1MCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlciA9IGZ1
bmN0aW9uKGJyZWFrcG9pbnRTdG9yYWdlLCBkZWJ1Z2dlck1vZGVsLCB3b3JrCiAgICAgdGhpcy5f
d29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMu
UHJvamVjdFdpbGxSZXNldCwgdGhpcy5fd29ya3NwYWNlUmVzZXQsIHRoaXMpOwogICAgIHRoaXMu
X3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92
aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkLCB0
aGlzKTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkLCB0
aGlzLl91aVNvdXJjZUNvZGVBZGRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1w
b3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlz
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkV2ZW50cyA9IHsKQEAgLTYw
LDcgKzU5LDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMgPSB7CiAK
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5zb3VyY2VGaWxlSWQgPSBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIHVpU291cmNlQ29kZS5mb3JtYXR0ZWQoKSA/ICJk
ZW9iZnVzY2F0ZWQ6IiArIHVpU291cmNlQ29kZS51cmwgOiB1aVNvdXJjZUNvZGUudXJsOworICAg
IGlmICghdWlTb3VyY2VDb2RlLnVybCkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHZhciBpc1Rl
bXBvcmFyeVByZWZpeCA9IHVpU291cmNlQ29kZS5pc1RlbXBvcmFyeSA/ICJ0ZW1wb3Jhcnk6IiA6
ICIiOworICAgIHZhciBkZW9iZnVzY2F0ZWRQcmVmaXggPSB1aVNvdXJjZUNvZGUuZm9ybWF0dGVk
KCkgPyAiZGVvYmZ1c2NhdGVkOiIgOiAiIjsKKyAgICByZXR1cm4gaXNUZW1wb3JhcnlQcmVmaXgg
KyBkZW9iZnVzY2F0ZWRQcmVmaXggKyB1aVNvdXJjZUNvZGUudXJsOwogfQogCiBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewpAQCAtMTA4LDM4ICsxMTEsNiBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8K
LSAgICBfdWlTb3VyY2VDb2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSAqLyAoZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuY29udGVudFR5cGUo
KSAhPT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0ICYmIHVpU291cmNlQ29kZS5j
b250ZW50VHlwZSgpICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5kaXZlcmdlZFZlcnNp
b24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5zb3VyY2VGaWxlSWQodWlTb3VyY2VDb2RlKTsK
LSAgICAgICAgaWYgKCFzb3VyY2VGaWxlSWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHMuc2xpY2UoKTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKLSAgICAgICAgICAgIGZvciAodmFy
IHN0cmluZ2lmaWVkTG9jYXRpb24gaW4gYnJlYWtwb2ludC5fdWlMb2NhdGlvbnMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IGJyZWFrcG9pbnQuX3VpTG9jYXRpb25zW3N0cmlu
Z2lmaWVkTG9jYXRpb25dOwotICAgICAgICAgICAgICAgIGlmICh1aUxvY2F0aW9uLnVpU291cmNl
Q29kZSA9PT0gdWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LnJl
bW92ZSh0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0
aGlzLl9zb3VyY2VGaWxlc1dpdGhSZXN0b3JlZEJyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07Ci0K
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2Rl
cygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHModWlTb3VyY2VDb2Rlc1tp
XSk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIK
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCkBAIC01MzQsNiArNTA1LDggQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9icmVha3BvaW50U3RvcmFnZUlkOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBpZiAoIXRoaXMuX3NvdXJjZUZpbGVJZCkKKyAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZpbGVJZCArICI6IiArIHRoaXMuX3ByaW1hcnlVSUxvY2F0
aW9uLmxpbmVOdW1iZXI7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCBlNzAz
MDY2OTUzYWE2ZjI0ZDMxM2FkNjQ0ZTg5NWVmYTRiNDUzNjlkLi41YWEzM2IyMmQzMTAyYWYzMjcx
OWUxNzIzMDNjNTA0ZjhkMjE2ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtNDUsOSAr
NDUsNiBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24od29y
a3NwYWNlLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZQogICAgIHRoaXMuX3NjcmlwdEZvclNvdXJj
ZU1hcCA9IG5ldyBNYXAoKTsKICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNw
ZWN0b3IuU291cmNlTWFwUGFyc2VyPn0gKi8KICAgICB0aGlzLl9zb3VyY2VNYXBGb3JVUkwgPSB7
fTsKLSAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlPn0gKi8KLSAgICB0aGlzLl9vcmlnaW5hbFVJU291cmNlQ29kZUZvclNjcmlwdElkID0ge307
Ci0gICAgdGhpcy5fc2NyaXB0Rm9yT3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAg
ICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFj
ZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwogfQogCkBAIC02
MywxMCArNjAsOCBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBkZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGlu
ZU51bWJlcjsKICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IGRlYnVnZ2VyTW9kZWxMb2NhdGlv
bi5jb2x1bW5OdW1iZXIgfHwgMDsKICAgICAgICAgdmFyIGVudHJ5ID0gc291cmNlTWFwLmZpbmRF
bnRyeShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICBpZiAoZW50cnkubGVuZ3Ro
ID09PSAyKSB7Ci0gICAgICAgICAgICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5f
b3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2Ny
aXB0SWRdOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0
ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGVudHJ5Lmxlbmd0aCA9PT0gMikKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNl
Q29kZUZvclVSTChlbnRyeVsyXSk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb24odWlTb3VyY2VDb2RlLCBlbnRyeVszXSwgZW50cnlbNF0pOwogICAgIH0sCkBAIC03
OSw5ICs3NCw2IEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JPcmlnaW5hbFVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VD
b2RlKTsKLSAgICAgICAgaWYgKHNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9zb3VyY2VNYXBGb3JV
UkxbdWlTb3VyY2VDb2RlLnVybF07CiAgICAgICAgIHZhciBlbnRyeSA9IHNvdXJjZU1hcC5maW5k
RW50cnlSZXZlcnNlZCh1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHRoaXMuX3Nj
cmlwdEZvclNvdXJjZU1hcC5nZXQoc291cmNlTWFwKSwgZW50cnlbMF0sIGVudHJ5WzFdKTsKQEAg
LTkyLDE4ICs4NCwxMSBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBjcmVhdGUgdGVtcG9yYXJ5IHVpU291
cmNlQ29kZXMgb24gZGVtYW5kIGFuZCBzaG91bGQgc2V0IHRoaXMgYXMgYSBtYXBwaW5nIHRvIAot
ICAgICAgICAvLyByZWxldmFudCB1aVNvdXJjZUNvZGVzIGFkZGVkIGJ5IE5ldHdvcmtVSVNvdXJj
ZUNvZGVQcm92aWRlci4KLSAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdGhpcy5f
d29ya3NwYWNlLmFkZFRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQuc291cmNlVVJMLCBzY3Jp
cHQsIGZhbHNlKTsKLSAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGlu
Zyh0aGlzKTsKLSAgICAgICAgdGhpcy5fb3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtz
Y3JpcHQuc2NyaXB0SWRdID0gb3JpZ2luYWxVSVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuX3Nj
cmlwdEZvck9yaWdpbmFsVUlTb3VyY2VDb2RlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwgc2Ny
aXB0KTsKLQogICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5sb2FkU291cmNlTWFwRm9yU2Ny
aXB0KHNjcmlwdCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdEZvclNvdXJjZU1hcC5nZXQo
c291cmNlTWFwKSkgewogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbc2Ny
aXB0LnNjcmlwdElkXSA9IHNvdXJjZU1hcDsKLSAgICAgICAgICAgIHNjcmlwdC5zZXRTb3VyY2VN
YXBwaW5nKHRoaXMpOworICAgICAgICAgICAgc2NyaXB0LnB1c2hTb3VyY2VNYXBwaW5nKHRoaXMp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNyw3ICsxMTIsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFw
OwogICAgICAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAucHV0KHNvdXJjZU1hcCwgc2NyaXB0
KTsKLSAgICAgICAgc2NyaXB0LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAgIHNjcmlw
dC5wdXNoU291cmNlTWFwcGluZyh0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNjIsOCAr
MTQ3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEZvclNjcmlwdElkID0ge307CiAgICAgICAgIHRoaXMu
X3NjcmlwdEZvclNvdXJjZU1hcCA9IG5ldyBNYXAoKTsKICAgICAgICAgdGhpcy5fc291cmNlTWFw
Rm9yVVJMID0ge307Ci0gICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0
SWQgPSB7fTsKLSAgICAgICAgdGhpcy5fc2NyaXB0Rm9yT3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBu
ZXcgTWFwKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKaW5kZXggZDU4ZGEwZWRiNzNiMTI1ZjZkMDQ1NTEw
MzBmNzgzZjg5MDcxNjhjOS4uNjcyNDI1YWM2MDk5ZWFlZDQwNmUxNzI2ZTg1ZDY4YWQ0NmUwMDFk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
ck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcwpAQCAtMzc3LDYgKzM3NywxNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc2NyaXB0
SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1u
LCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTCwgaGFzU291cmNlVVJMKQogICAgIHsKICAg
ICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KHNjcmlwdElkLCBzb3Vy
Y2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250
ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhhc1NvdXJjZVVSTCk7CisgICAgICAgIGlmICghc2Ny
aXB0LmlzQW5vbnltb3VzU2NyaXB0KCkgJiYgIXNjcmlwdC5pc0lubGluZVNjcmlwdCgpKSB7Cisg
ICAgICAgICAgICB2YXIgZXhpc3RpbmdTY3JpcHRzID0gdGhpcy5fc2NyaXB0c0J5U291cmNlVVJM
W3NjcmlwdC5zb3VyY2VVUkxdIHx8IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBleGlzdGluZ1NjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhp
c3RpbmdTY3JpcHRzW2ldLmlzSW5saW5lU2NyaXB0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
c2NyaXB0LnNldElzRHluYW1pY1NjcmlwdCh0cnVlKTsgCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAg
ICB0aGlzLl9yZWdpc3RlclNjcmlwdChzY3JpcHQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUGFyc2VkU2Ny
aXB0U291cmNlLCBzY3JpcHQpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCmluZGV4IGNl
ODA1YzQyMmIxNTI1Y2UzMTg1Mzg5MTcwM2JjYmZmNzJhNGUzMTQuLjhmODhiOWQ4YjYwYTRjZjM0
NjMwZjg0YTg1N2E1MTdiYzRjNzI0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCkBAIC0zNSw2
ICszNSw3IEBACiAgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcgPSBmdW5j
dGlvbih3b3Jrc3BhY2UsIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcikKIHsKKyAgICB0aGlzLl9k
ZWZhdWx0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGVmYXVsdFNjcmlwdE1hcHBpbmcod29y
a3NwYWNlKTsKICAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2NyaXB0TWFwcGluZyh3b3Jrc3BhY2UpOwogICAgIHRoaXMuX2NvbXBpbGVyTWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nKHdvcmtzcGFjZSwgbmV0
d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKICAgICB0aGlzLl9zbmlwcGV0TWFwcGluZyA9IFdlYklu
c3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuc2NyaXB0TWFwcGluZzsKQEAgLTUwLDI0ICs1MSwx
OCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAg
ICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIChldmVudC5kYXRh
KTsKLSAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNjcmlwdCk7
Ci0gICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7Ci0gICAgfSwKKyAgICAgICAgdGhp
cy5fZGVmYXVsdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAKLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAotICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5TY3JpcHRTb3VyY2VNYXBwaW5nfQotICAgICAqLwotICAgIF9tYXBwaW5nRm9yU2Ny
aXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4
cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpICYmIHNjcmlwdC5p
c1NuaXBwZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0TWFwcGluZzsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9y
dC5pc0VuYWJsZWQoKSAmJiBzY3JpcHQuaXNTbmlwcGV0KCkpIHsKKyAgICAgICAgICAgIHRoaXMu
X3NuaXBwZXRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQpOwogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJs
ZWQuZ2V0KCkgJiYgc2NyaXB0LnNvdXJjZU1hcFVSTCkgewogICAgICAgICAgICAgaWYgKHRoaXMu
X2NvbXBpbGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVyTWFwcGluZzsKKyAgICAgICAgICAgICAgICB0
aGlzLl9jb21waWxlck1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VNYXBwaW5nOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBw
aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEyYjVkYTE5NTQ1ZTFiNzFlNWZhOTlmMDA2Y2I3ZjExNzQ5YTI3
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuU2NyaXB0U291cmNlTWFwcGluZ30K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNlCisgKi8KK1dlYklu
c3BlY3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKK3sKKyAg
ICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNl
dCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3Jlc2V0KCk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHJl
dHVybiB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259CisgICAgICovCisgICAgcmF3TG9jYXRpb25U
b1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGRl
YnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259ICovIChyYXdMb2NhdGlvbik7CisgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChkZWJ1Z2dlck1vZGVsTG9jYXRpb24u
c2NyaXB0SWQpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2Rl
Rm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBk
ZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgdmFyIGNvbHVtbk51bWJl
ciA9IGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMDsKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICog
QHJldHVybiB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CisgICAgICovCisg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdElkID0gdGhpcy5f
c2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciBz
Y3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChzY3JpcHRJZCk7
CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2Nh
dGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICovCisg
ICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgY29udGVu
dFByb3ZpZGVyID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgPyBuZXcgV2ViSW5zcGVjdG9yLkNv
bmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIoW3NjcmlwdF0pIDogc2NyaXB0OworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLmFkZFRlbXBvcmFyeVVJU291
cmNlQ29kZShzY3JpcHQuc291cmNlVVJMLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291
cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291
cmNlQ29kZSwgc2NyaXB0LnNjcmlwdElkKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJj
ZU1hcHBpbmcodGhpcyk7CisgICAgICAgIHNjcmlwdC5wdXNoU291cmNlTWFwcGluZyh0aGlzKTsK
KyAgICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNjcmlwdC5FdmVu
dHMuU2NyaXB0RWRpdGVkLCB0aGlzLl9zY3JpcHRFZGl0ZWQuYmluZCh0aGlzLCBzY3JpcHQuc2Ny
aXB0SWQpKTsKKyAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNjcmlwdElkCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX3NjcmlwdEVkaXRlZDogZnVuY3Rpb24o
c2NyaXB0SWQsIGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiogQHR5cGUg
e3N0cmluZ30gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2Ny
aXB0SWRbc2NyaXB0SWRdLmFkZFJldmlzaW9uKGNvbnRlbnQpOworICAgIH0sCisKKyAgICBfcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcs
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLworICAgICAgICB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29k
ZSA9IG5ldyBNYXAoKTsKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwppbmRleCAzMjEw
YzNhOGY1MWFjNGIwNDcwYzA1YWIwOGRiMDUwMjQ2ZWU0OWViLi5kZTU1YTMwZjI2NzJjMDU2ZWEx
MGM2N2Q4ODRjNmFkZTdjY2MxNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwpAQCAtMTY3LDYg
KzE2NywxOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBldmFsdWF0ZUxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiRXZhbHVhdGUgaW4gY29u
c29sZSIgOiAiRXZhbHVhdGUgaW4gQ29uc29sZSIpOwogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShldmFsdWF0ZUxhYmVsLCBXZWJJbnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUu
YmluZChXZWJJbnNwZWN0b3IsIHNlbGVjdGlvbi50b1N0cmluZygpKSk7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpcy5f
dWlTb3VyY2VDb2RlLmlzRWRpdGFibGUoKSAmJiB0aGlzLl91aVNvdXJjZUNvZGUuY29udGVudFR5
cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0KSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiBsaXZlRWRpdChldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbGl2ZUVkaXRVSVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IubGl2ZUVkaXRTdXBwb3J0
LnVpU291cmNlQ29kZUZvckxpdmVFZGl0KHRoaXMuX3VpU291cmNlQ29kZSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBDaGFuZ2UgY29uZGl0aW9uIGFib3ZlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCBjdXJyZW50
IHVpU291cmNlQ29kZSBpcyBjcmVhdGVkIGJ5IGRlZmF1bHQgZGVidWdnZXIgbWFwcGluZworICAg
ICAgICAgICAgLy8gYW5kIG1vdmUgdGhlIGNvZGUgYWRkaW5nIHRoaXMgbWVudSBpdGVtIHRvIGdl
bmVyaWMgY29udGV4dCBtZW51IHByb3ZpZGVyIGZvciBVSVNvdXJjZUNvZGUuCisgICAgICAgICAg
ICB2YXIgbGl2ZUVkaXRMYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3Iu
dXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkxpdmUgZWRpdCIgOiAiTGl2ZSBFZGl0Iik7Cisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxpdmVFZGl0TGFiZWwsIGxpdmVFZGl0
LmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRo
aXMuX3VpU291cmNlQ29kZSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE3ZjNhNzg4
ZDc4MGY2M2FhNTI3ZWE4NmMxNjE3MTRkM2NmZjkyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzCkBAIC0wLDAg
KzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldv
cmtzcGFjZX0gd29ya3NwYWNlCisgKi8KK1dlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQgPSBm
dW5jdGlvbih3b3Jrc3BhY2UpCit7CisgICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlOwor
ICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Jlc2V0LCB0aGlzKTsKKyAgICB0aGlz
Ll9yZXNldCgpOworfQorCitXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0LnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVp
U291cmNlQ29kZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9Cisg
ICAgICovCisgICAgdWlTb3VyY2VDb2RlRm9yTGl2ZUVkaXQ6IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSkKKyAgICB7CisgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHVpU291cmNlQ29kZS51aUxvY2F0
aW9uVG9SYXdMb2NhdGlvbigwLCAwKTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIChy
YXdMb2NhdGlvbik7CisgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRGb3JJZChkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWQpOworICAgICAg
ICB2YXIgdWlMb2NhdGlvbiA9IHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCAwKTsK
KworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBsaXZlIGVkaXRpbmcgb2Ygc2NyaXB0cyBtYXBw
ZWQgdG8gc29tZSBmaWxlLgorICAgICAgICBpZiAodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUgIT09
IHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uLnVpU291cmNlQ29k
ZTsKKyAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3Jp
cHRJZF0pCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
c2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3Jp
cHQuaXNJbmxpbmVTY3JpcHQoKSk7CisgICAgICAgIHZhciBsaXZlRWRpdFVJU291cmNlQ29kZSA9
IHRoaXMuX3dvcmtzcGFjZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLnVy
bCwgc2NyaXB0LCB0cnVlKTsKKyAgICAgICAgbGl2ZUVkaXRVSVNvdXJjZUNvZGUuc2V0U2NyaXB0
RmlsZShuZXcgV2ViSW5zcGVjdG9yLkxpdmVFZGl0U2NyaXB0RmlsZSh1aVNvdXJjZUNvZGUsIGxp
dmVFZGl0VUlTb3VyY2VDb2RlLCBzY3JpcHQuc2NyaXB0SWQpKTsKKyAgICAgICAgdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IGxpdmVFZGl0VUlTb3VyY2VD
b2RlOworICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5wdXQobGl2ZUVkaXRV
SVNvdXJjZUNvZGUsIHNjcmlwdC5zY3JpcHRJZCk7CisgICAgICAgIHJldHVybiBsaXZlRWRpdFVJ
U291cmNlQ29kZTsKKyAgICB9LAorCisgICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gKi8KKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKKyAgICAg
ICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgfSwKK30K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0RmlsZX0KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gbGl2ZUVkaXRVSVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBzY3JpcHRJZAorICovCitXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTY3JpcHRGaWxlID0gZnVu
Y3Rpb24odWlTb3VyY2VDb2RlLCBsaXZlRWRpdFVJU291cmNlQ29kZSwgc2NyaXB0SWQpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLlNjcmlwdEZpbGUuY2FsbCh0aGlzKTsKKyAgICB0aGlzLl91aVNvdXJj
ZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy5fbGl2ZUVkaXRVSVNvdXJjZUNvZGUgPSBs
aXZlRWRpdFVJU291cmNlQ29kZTsKKyAgICB0aGlzLl9zY3JpcHRJZCA9IHNjcmlwdElkOworICAg
IHRoaXMuX2xpdmVFZGl0VUlTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZS5FdmVudHMuV29ya2luZ0NvcHlDb21taXR0ZWQsIHRoaXMuX3dvcmtpbmdD
b3B5Q29tbWl0dGVkLCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkxpdmVFZGl0U2NyaXB0Rmls
ZS5wcm90b3R5cGUgPSB7CisgICAgX3dvcmtpbmdDb3B5Q29tbWl0dGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9y
CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVycm9yKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHRoaXMuX3NjcmlwdElkKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0U2NyaXB0U291cmNlKHNjcmlwdC5zY3JpcHRJ
ZCwgdGhpcy5fbGl2ZUVkaXRVSVNvdXJjZUNvZGUud29ya2luZ0NvcHkoKSwgaW5uZXJDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBoYXNEaXZlcmdlZEZyb21WTTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgaXNEaXZlcmdpbmdGcm9tVk06IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZQorfQorCisvKiogQHR5cGUge1dlYkluc3BlY3Rvci5MaXZl
RWRpdFN1cHBvcnR9ICovCitXZWJJbnNwZWN0b3IubGl2ZUVkaXRTdXBwb3J0ID0gbnVsbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggMDBmMTFjMjE1NTU0MzE0YjdlZWJlOTM3M2Q5ZTFiNjIz
YzNkY2NlZi4uMmZiYTM4NjYyZDU3MWY3ODg4NGZhZTY4MGI0OTQwZWU0MjNjNzExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKQEAgLTUxLDQ3ICs1MSwxMCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxv
Y2F0aW9ufSAqLyAocmF3TG9jYXRpb24pOwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9ySWQoZGVidWdnZXJNb2RlbExvY2F0aW9uLnNjcmlw
dElkKTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVVJU291cmNl
Q29kZUZvclNjcmlwdChzY3JpcHQpIHx8IHRoaXMuX2dldE9yQ3JlYXRlVGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlKHNjcmlwdCk7Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuc2NyaXB0RmlsZSgpICYm
IHVpU291cmNlQ29kZS5zY3JpcHRGaWxlKCkuaGFzRGl2ZXJnZWRGcm9tVk0oKSkKLSAgICAgICAg
ICAgIHVpU291cmNlQ29kZSA9IHRoaXMuX2dldE9yQ3JlYXRlT3JpZ2luYWxVSVNvdXJjZUNvZGUo
c2NyaXB0LCB1aVNvdXJjZUNvZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghIXVpU291cmNl
Q29kZSk7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGluZU51bWJlciwgZGVidWdnZXJNb2RlbExv
Y2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAg
ICBfaGFzTWVyZ2VkVG9WTTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQotICAgIHsKLSAgICAgICAg
dmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
Ci0gICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHRoaXMuX2RlbGV0ZU9yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0cyhzY3JpcHRzKTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgc2NyaXB0c1tpXS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQotICAgICAqLwotICAgIF9oYXNEaXZlcmdlZEZyb21WTTogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
KQotICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7Ci0gICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHNjcmlwdHNbaV0uc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3Jp
cHQKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQotICAgICAqLwot
ICAgIF93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChzY3JpcHQuaXNBbm9ueW1vdXNTY3JpcHQoKSB8fCB0aGlzLl9pc0R5
bmFtaWNTY3JpcHQoc2NyaXB0KSkKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dv
cmtzcGFjZVVJU291cmNlQ29kZUZvclNjcmlwdChzY3JpcHQpOworICAgICAgICBpZiAoIXVpU291
cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gdGhpcy5f
d29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGRlYnVnZ2Vy
TW9kZWxMb2NhdGlvbi5saW5lTnVtYmVyLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVt
YmVyIHx8IDApOwogICAgIH0sCiAKICAgICAvKioKQEAgLTExMiwxNzUgKzc1LDY4IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAgICAgaWYgKCFzY3JpcHQu
aXNBbm9ueW1vdXNTY3JpcHQoKSkgewotICAgICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNoKHNj
cmlwdCk7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0c0ZvclNvdXJjZVVSTCA9IHNjcmlwdC5pc0lu
bGluZVNjcmlwdCgpID8gdGhpcy5faW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA6IHRoaXMuX25v
bklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7Ci0gICAgICAgICAgICB2YXIgYnVja2V0ID0gc2Ny
aXB0c0ZvclNvdXJjZVVSTFtzY3JpcHQuc291cmNlVVJMXSB8fCBbXTsKLSAgICAgICAgICAgIHNj
cmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0gPSBidWNrZXQ7Ci0gICAgICAgICAg
ICBidWNrZXQucHVzaChzY3JpcHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2NyaXB0LnNldFNv
dXJjZU1hcHBpbmcodGhpcyk7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jr
c3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgaWYgKHVpU291cmNl
Q29kZSkgewotICAgICAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNv
dXJjZUNvZGUsIFtzY3JpcHRdKTsKKyAgICAgICAgaWYgKHNjcmlwdC5pc0Fub255bW91c1Njcmlw
dCgpIHx8IHNjcmlwdC5pc0R5bmFtaWNTY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCi0gICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkg
PyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRydWUpIDogW3Nj
cmlwdF07CisgICAgICAgIHZhciBzY3JpcHRzRm9yU291cmNlVVJMID0gc2NyaXB0LmlzSW5saW5l
U2NyaXB0KCkgPyB0aGlzLl9pbmxpbmVTY3JpcHRzRm9yU291cmNlVVJMIDogdGhpcy5fbm9uSW5s
aW5lU2NyaXB0c0ZvclNvdXJjZVVSTDsKKyAgICAgICAgc2NyaXB0c0ZvclNvdXJjZVVSTFtzY3Jp
cHQuc291cmNlVVJMXSA9IHNjcmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0gfHwg
W107CisgICAgICAgIHNjcmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0ucHVzaChz
Y3JpcHQpOwogCi0gICAgICAgIGlmICh0aGlzLl9kZWxldGVUZW1wb3JhcnlVSVNvdXJjZUNvZGVG
b3JTY3JpcHRzKHNjcmlwdHMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9kZWxldGVPcmlnaW5hbFVJ
U291cmNlQ29kZUZvclNjcmlwdHMoc2NyaXB0cyk7Ci0gICAgICAgICAgICB0aGlzLl9nZXRPckNy
ZWF0ZVRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQpOwotICAgICAgICB9CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2Ny
aXB0KTsKKyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNv
dXJjZUNvZGUsIFtzY3JpcHRdKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtB
cnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59IHNjcmlwdHMKLSAgICAgKi8KLSAgICBfZGVsZXRl
T3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRzOiBmdW5jdGlvbihzY3JpcHRzKQorICAgIF91
aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBvcmlnaW5hbFVJU291cmNlQ29kZTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBvcmlnaW5hbFVJU291cmNlQ29k
ZSA9IG9yaWdpbmFsVUlTb3VyY2VDb2RlIHx8IHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbc2NyaXB0c1tpXS5zY3JpcHRJZF07Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
b3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElkXTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIW9yaWdpbmFsVUlTb3VyY2VDb2RlKQorICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAo
ZXZlbnQuZGF0YSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdWlTb3VyY2VDb2RlLnVybCk7
CisKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZSk7CisgICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHRoaXMuX3dvcmtzcGFjZS5yZW1vdmVUZW1wb3JhcnlVSVNvdXJjZUNv
ZGUob3JpZ2luYWxVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9zY3JpcHRJZHNGb3JPcmln
aW5hbFVJU291cmNlQ29kZS5yZW1vdmUob3JpZ2luYWxVSVNvdXJjZUNvZGUpOwotICAgIH0sCiAK
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2NyaXB0Pn0gc2Ny
aXB0cwotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgX2RlbGV0ZVRlbXBv
cmFyeVVJU291cmNlQ29kZUZvclNjcmlwdHM6IGZ1bmN0aW9uKHNjcmlwdHMpCi0gICAgewotICAg
ICAgICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNl
Q29kZSA9IHRlbXBvcmFyeVVJU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElkXTsKLSAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElk
XTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXRlbXBvcmFyeVVJU291cmNlQ29kZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpcy5fd29ya3NwYWNlLnJlbW92ZVRlbXBv
cmFyeVVJU291cmNlQ29kZSh0ZW1wb3JhcnlVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9z
Y3JpcHRJZHNGb3JUZW1wb3JhcnlVSVNvdXJjZUNvZGUucmVtb3ZlKHRlbXBvcmFyeVVJU291cmNl
Q29kZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB0aGlzLl9iaW5kVUlTb3VyY2VD
b2RlVG9TY3JpcHRzKHVpU291cmNlQ29kZSwgc2NyaXB0cyk7CiAgICAgfSwKIAogICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0g
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59IHNjcmlwdHMKICAgICAg
Ki8KLSAgICBfYmluZFVJU291cmNlQ29kZVRvU2NyaXB0czogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBzY3JpcHRzKQorICAgIF9oYXNNZXJnZWRUb1ZNOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAg
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHRzLmxlbmd0aCk7Ci0gICAgICAgIGlm
ICh1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSgpKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0Rmls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxlKHRoaXMsIHVpU291cmNlQ29k
ZSk7Ci0gICAgICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3JpcHRGaWxlKTsK
LSAgICAgICAgfQorICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgc2NyaXB0c1tpXS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwot
ICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAg
KiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIF9pc0R5bmFtaWNTY3JpcHQ6IGZ1bmN0
aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIGlmIChzY3JpcHQuaXNBbm9ueW1vdXNTY3JpcHQo
KSB8fCBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdmFyIGlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTCA9IHRoaXMuX3NjcmlwdHNG
b3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiAhIWlu
bGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTC5sZW5ndGg7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VVUkwKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
SW5saW5lU2NyaXB0Ci0gICAgICogQHJldHVybiB7IUFycmF5LjwhV2ViSW5zcGVjdG9yLlNjcmlw
dD59Ci0gICAgICovCi0gICAgX3NjcmlwdHNGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVS
TCwgaXNJbmxpbmVTY3JpcHQpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0c0ZvclNvdXJjZVVS
TCA9IGlzSW5saW5lU2NyaXB0ID8gdGhpcy5faW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA6IHRo
aXMuX25vbklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7Ci0gICAgICAgIHJldHVybiBzY3JpcHRz
Rm9yU291cmNlVVJMW3NvdXJjZVVSTF0gfHwgW107CisgICAgICAgICAgICBzY3JpcHRzW2ldLmVu
YWJsZVNvdXJjZU1hcHBpbmcodGhpcyk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5TY3JpcHQ+fSBzY3JpcHRzCi0gICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPX0gZGl2ZXJnZWRWZXJzaW9uCi0gICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0KLSAgICAgKi8KLSAgICBfY3JlYXRlVUlTb3Vy
Y2VDb2RlOiBmdW5jdGlvbihzY3JpcHRzLCBkaXZlcmdlZFZlcnNpb24pCi0gICAgewotICAgICAg
ICB2YXIgc2NyaXB0ID0gc2NyaXB0c1swXTsKLSAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9
IHNjcmlwdC5pc0lubGluZVNjcmlwdCgpID8gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRT
Y3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlwdHMuc2xpY2UoKSkgOiBzY3JpcHQ7Ci0gICAgICAg
IHZhciBpc0R5bmFtaWNTY3JpcHQgPSB0aGlzLl9pc0R5bmFtaWNTY3JpcHQoc2NyaXB0KTsKLSAg
ICAgICAgdmFyIHVybCA9IGlzRHluYW1pY1NjcmlwdCA/ICIiIDogc2NyaXB0LnNvdXJjZVVSTDsK
LSAgICAgICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS5hZGRU
ZW1wb3JhcnlVSVNvdXJjZUNvZGUodXJsLCBjb250ZW50UHJvdmlkZXIsICFzY3JpcHQuaXNJbmxp
bmVTY3JpcHQoKSAmJiAhZGl2ZXJnZWRWZXJzaW9uLCBzY3JpcHQuaXNDb250ZW50U2NyaXB0KTsK
LSAgICAgICAgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlLmRpdmVyZ2VkVmVyc2lvbiA9IGRpdmVyZ2Vk
VmVyc2lvbjsKLSAgICAgICAgcmV0dXJuIHRlbXBvcmFyeVVJU291cmNlQ29kZTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCi0gICAgX2dl
dE9yQ3JlYXRlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlOiBmdW5jdGlvbihzY3JpcHQpCisgICAgX2hh
c0RpdmVyZ2VkRnJvbVZNOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICB2
YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKLSAgICAgICAgaWYgKHRlbXBvcmFyeVVJU291cmNl
Q29kZSkKLSAgICAgICAgICAgIHJldHVybiB0ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0KLSAgICAg
ICAgdmFyIHNjcmlwdHMgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IHRoaXMuX3NjcmlwdHNG
b3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSkgOiBbc2NyaXB0XTsKLSAgICAgICAg
dGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlKHNjcmlwdHMp
OwotICAgICAgICB2YXIgc2NyaXB0SWRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VUlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0c1tpXS5zY3JpcHRJZF0gPSB0ZW1wb3JhcnlVSVNv
dXJjZUNvZGU7Ci0gICAgICAgICAgICBzY3JpcHRJZHMucHVzaChzY3JpcHRzW2ldLnNjcmlwdElk
KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9zY3JpcHRJZHNGb3JUZW1wb3JhcnlVSVNvdXJj
ZUNvZGUucHV0KHRlbXBvcmFyeVVJU291cmNlQ29kZSwgc2NyaXB0SWRzKTsKLSAgICAgICAgdGhp
cy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh0ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIHNjcmlw
dHMpOwotICAgICAgICByZXR1cm4gdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOworICAgICAgICB2YXIg
c2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAg
ICAgICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2Ny
aXB0c1tpXS5kaXNhYmxlU291cmNlTWFwcGluZyh0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IGRpdmVyZ2VkVmVyc2lvbgogICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9CiAgICAgICovCi0gICAgX2dldE9yQ3JlYXRl
T3JpZ2luYWxVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHNjcmlwdCwgZGl2ZXJnZWRWZXJzaW9uKQot
ICAgIHsKLSAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdGhpcy5fb3JpZ2luYWxV
SVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwotICAgICAgICBpZiAob3Jp
Z2luYWxVSVNvdXJjZUNvZGUpCi0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxVSVNvdXJjZUNv
ZGU7Ci0KLSAgICAgICAgdmFyIHNjcmlwdHMgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IHRo
aXMuX3NjcmlwdHNGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSkgOiBbc2NyaXB0
XTsKLSAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVhdGVVSVNvdXJjZUNv
ZGUoc2NyaXB0cywgZGl2ZXJnZWRWZXJzaW9uKTsKLSAgICAgICAgdmFyIHNjcmlwdElkcyA9IFtd
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0c1tp
XS5zY3JpcHRJZF0gPSBvcmlnaW5hbFVJU291cmNlQ29kZTsKLSAgICAgICAgICAgIHNjcmlwdElk
cy5wdXNoKHNjcmlwdHNbaV0uc2NyaXB0SWQpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Nj
cmlwdElkc0Zvck9yaWdpbmFsVUlTb3VyY2VDb2RlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwg
c2NyaXB0SWRzKTsKLSAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyhvcmln
aW5hbFVJU291cmNlQ29kZSwgc2NyaXB0cyk7Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbFVJU291
cmNlQ29kZTsKLSAgICB9LAotCi0gICAgX3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQ6IGZ1bmN0
aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoISF1aVNvdXJjZUNvZGUudXJsKTsKLQotICAgICAgICB2YXIgc2NyaXB0cyA9
IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgaWYg
KCFzY3JpcHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9k
ZWxldGVUZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRzKHNjcmlwdHMpOwotICAgICAgICB0
aGlzLl9kZWxldGVPcmlnaW5hbFVJU291cmNlQ29kZUZvclNjcmlwdHMoc2NyaXB0cyk7Ci0gICAg
ICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHModWlTb3VyY2VDb2RlLCBzY3JpcHRz
KTsKKyAgICAgICAgaWYgKHNjcmlwdC5pc0Fub255bW91c1NjcmlwdCgpIHx8IHNjcmlwdC5pc0R5
bmFtaWNTY3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAvLyBGSVhN
RTogd29ya2Fyb3VuZCBmb3Igc2NyaXB0LmlzRHluYW1pY1NjcmlwdCgpIGJlaW5nIHVucmVsaWFi
bGUuCisgICAgICAgIGlmICghc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgJiYgdGhpcy5faW5saW5l
U2NyaXB0c0ZvclNvdXJjZVVSTFtzY3JpcHQuc291cmNlVVJMXSkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
TChzY3JpcHQuc291cmNlVVJMKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yODksMTAgKzE0NSw2
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUp
CiAgICAgewotICAgICAgICB2YXIgc2NyaXB0SWRzID0gdGhpcy5fc2NyaXB0SWRzRm9yT3JpZ2lu
YWxVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkgfHwgdGhpcy5fc2NyaXB0SWRzRm9yVGVt
cG9yYXJ5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwotICAgICAgICBpZiAoc2NyaXB0
SWRzKQotICAgICAgICAgICAgcmV0dXJuIHNjcmlwdElkcy5tYXAoV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuc2NyaXB0Rm9ySWQuYmluZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCkpOwot
CiAgICAgICAgIHZhciBpc0lubGluZVNjcmlwdDsKICAgICAgICAgc3dpdGNoICh1aVNvdXJjZUNv
ZGUuY29udGVudFR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5
cGVzLkRvY3VtZW50OgpAQCAtMzA0LDIyICsxNTYsMzAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gW107CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHNGb3JT
b3VyY2VVUkwodWlTb3VyY2VDb2RlLnVybCwgaXNJbmxpbmVTY3JpcHQpOworICAgICAgICB2YXIg
c2NyaXB0c0ZvclNvdXJjZVVSTCA9IGlzSW5saW5lU2NyaXB0ID8gdGhpcy5faW5saW5lU2NyaXB0
c0ZvclNvdXJjZVVSTCA6IHRoaXMuX25vbklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7CisgICAg
ICAgIHJldHVybiBzY3JpcHRzRm9yU291cmNlVVJMW3VpU291cmNlQ29kZS51cmxdIHx8IFtdOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5TY3Jp
cHQ+fSBzY3JpcHRzCisgICAgICovCisgICAgX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHM6IGZ1
bmN0aW9uKHVpU291cmNlQ29kZSwgc2NyaXB0cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHNjcmlwdHMubGVuZ3RoKTsKKyAgICAgICAgdmFyIHNjcmlwdEZpbGUgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlU2NyaXB0RmlsZSh0aGlzLCB1aVNvdXJjZUNvZGUpOworICAgICAgICB1
aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3JpcHRGaWxlKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2NyaXB0c1tpXS5w
dXNoU291cmNlTWFwcGluZyh0aGlzKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJjZU1h
cHBpbmcodGhpcyk7CiAgICAgfSwKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZT59ICovCi0gICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlwdElkID0g
e307Ci0gICAgICAgIHRoaXMuX3NjcmlwdElkc0ZvclRlbXBvcmFyeVVJU291cmNlQ29kZSA9IG5l
dyBNYXAoKTsKLSAgICAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZT59ICovCi0gICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWQgPSB7fTsKLSAgICAgICAgdGhpcy5fc2NyaXB0SWRzRm9yT3JpZ2luYWxVSVNvdXJj
ZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCAh
QXJyYXkuPCFXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPj59ICovCiAgICAgICAgIHRoaXMuX2lu
bGluZVNjcmlwdHNGb3JTb3VyY2VVUkwgPSB7fTsKICAgICAgICAgLyoqIEB0eXBlIHshT2JqZWN0
LjxzdHJpbmcsICFBcnJheS48IVdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+Pn0gKi8KICAgICAg
ICAgdGhpcy5fbm9uSW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA9IHt9OwotICAgICAgICB0aGlz
Ll9zY3JpcHRzID0gW107CiAgICAgfSwKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdC5qcwppbmRleCA4YzgwYmEwYmIxOWU0NTczOTdhZWZiYWE0MDZiMmI4
MWQwMGY2YTQ0Li4wZTE5ZjNmZDI2ZjI0OTI0OTY3NWY2ZTNlYTVjZTkxZWE0NDJiNDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMjUsNiAr
MjUsNyBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5PYmplY3R9CiAgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0K
ICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JpcHRJZAogICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVS
TApAQCAtNDgsNiArNDksMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlw
dElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZEwKICAgICB0aGlzLnNv
dXJjZU1hcFVSTCA9IHNvdXJjZU1hcFVSTDsKICAgICB0aGlzLmhhc1NvdXJjZVVSTCA9IGhhc1Nv
dXJjZVVSTDsKICAgICB0aGlzLl9sb2NhdGlvbnMgPSBbXTsKKyAgICB0aGlzLl9zb3VyY2VNYXBw
aW5ncyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0LkV2ZW50cyA9IHsKKyAgICBTY3Jp
cHRFZGl0ZWQ6ICJTY3JpcHRFZGl0ZWQiLAogfQogCiBXZWJJbnNwZWN0b3IuU2NyaXB0LnNuaXBw
ZXRTb3VyY2VVUkxQcmVmaXggPSAic25pcHBldHM6Ly8vIjsKQEAgLTE0Niw2ICsxNTIsOCBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghZXJyb3Ip
CiAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlID0gbmV3U291cmNlOwogICAgICAgICAgICAg
Y2FsbGJhY2soZXJyb3IsIGNhbGxGcmFtZXMpOworICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
U2NyaXB0LkV2ZW50cy5TY3JpcHRFZGl0ZWQsIG5ld1NvdXJjZSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKICAgICAgICAgICAgIC8vIFNjcmlwdCBmYWlsZWQgdG8g
cGFyc2UuCkBAIC0xNzIsNiArMTgwLDIyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRHluYW1p
Y1NjcmlwdAorICAgICAqLworICAgIHNldElzRHluYW1pY1NjcmlwdDogZnVuY3Rpb24oaXNEeW5h
bWljU2NyaXB0KQorICAgIHsKKyAgICAgICAgdGhpcy5faXNEeW5hbWljU2NyaXB0ID0gaXNEeW5h
bWljU2NyaXB0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGlzRHluYW1pY1NjcmlwdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhdGhpcy5faXNEeW5hbWljU2NyaXB0OworICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGlzU25pcHBldDogZnVuY3Rpb24oKQpA
QCAtMTg2LDE2ICsyMTAsODQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291
cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb24odGhpcy5zY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
IHx8IDApKTsKKyAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmdzID0gdGhpcy5fZW5hYmxlZFNvdXJj
ZU1hcHBpbmdzKCk7CisgICAgICAgIHZhciB1aUxvY2F0aW9uOworICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24odGhpcy5zY3Jp
cHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICBmb3IgKHZhciBp
ID0gc291cmNlTWFwcGluZ3MubGVuZ3RoIC0gMTsgIXVpTG9jYXRpb24gJiYgaSA+PSAwOyAtLWkp
CisgICAgICAgICAgICB1aUxvY2F0aW9uID0gc291cmNlTWFwcGluZ3NbaV0ucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24ocmF3TG9jYXRpb24pOworICAgICAgICBjb25zb2xlLmFzc2VydCh1aUxvY2F0
aW9uLCAiU2NyaXB0IHJhdyBsb2NhdGlvbiBjYW4gbm90IGJlIG1hcHBlZCB0byBhbnkgdWkgbG9j
YXRpb24uIik7CiAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uLnVpU291cmNlQ29kZS5vdmVycmlk
ZUxvY2F0aW9uKHVpTG9jYXRpb24pOwogICAgIH0sCiAKKyAgICBfZW5hYmxlZFNvdXJjZU1hcHBp
bmdzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBmaWx0ZXIoc291cmNlTWFw
cGluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9kaXNhYmxlZFNvdXJj
ZU1hcHBpbmdzLmdldChzb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBz
b3VyY2VNYXBwaW5ncyA9IHRoaXMuX2Rpc2FibGVkU291cmNlTWFwcGluZ3MgPyB0aGlzLl9zb3Vy
Y2VNYXBwaW5ncy5maWx0ZXIoZmlsdGVyLmJpbmQodGhpcykpIDogdGhpcy5fc291cmNlTWFwcGlu
Z3Muc2xpY2UoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlTWFwcGluZ3MubGVuZ3Ro
LCAiU2NyaXB0IGRvZXMgbm90IGhhdmUgYW55IHNvdXJjZSBtYXBwaW5nLiIpOworICAgICAgICBy
ZXR1cm4gc291cmNlTWFwcGluZ3M7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXkuPFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nPn0gb2xkU291cmNlTWFwcGluZ3MKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZz59IG5ld1NvdXJj
ZU1hcHBpbmdzCisgICAgICovCisgICAgX3NvdXJjZU1hcHBpbmdzRGlmZmVyOiBmdW5jdGlvbihv
bGRTb3VyY2VNYXBwaW5ncywgbmV3U291cmNlTWFwcGluZ3MpCisgICAgeworICAgICAgICBpZiAo
b2xkU291cmNlTWFwcGluZ3MubGVuZ3RoICE9PSBuZXdTb3VyY2VNYXBwaW5ncy5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdT
b3VyY2VNYXBwaW5ncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKG9sZFNvdXJjZU1h
cHBpbmdzW2ldICE9PSBuZXdTb3VyY2VNYXBwaW5nc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1h
cHBpbmcKKyAgICAgKi8KKyAgICBkaXNhYmxlU291cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNl
TWFwcGluZykKKyAgICB7CisgICAgICAgIHZhciBvbGRTb3VyY2VNYXBwaW5ncyA9IHRoaXMuX2Vu
YWJsZWRTb3VyY2VNYXBwaW5ncygpOworICAgICAgICB0aGlzLl9kaXNhYmxlZFNvdXJjZU1hcHBp
bmdzID0gdGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5ncyB8fCBuZXcgTWFwKCk7CisgICAgICAg
IHRoaXMuX2Rpc2FibGVkU291cmNlTWFwcGluZ3MucHV0KHNvdXJjZU1hcHBpbmcsIHRydWUpOwor
ICAgICAgICBpZiAodGhpcy5fc291cmNlTWFwcGluZ3NEaWZmZXIob2xkU291cmNlTWFwcGluZ3Ms
dGhpcy5fZW5hYmxlZFNvdXJjZU1hcHBpbmdzKCkpKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRl
TG9jYXRpb25zKCk7CisgICAgfSwKKwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKICAgICAgKi8KLSAgICBzZXRTb3VyY2VN
YXBwaW5nOiBmdW5jdGlvbihzb3VyY2VNYXBwaW5nKQorICAgIGVuYWJsZVNvdXJjZU1hcHBpbmc6
IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmcpCisgICAgeworICAgICAgICB2YXIgb2xkU291cmNlTWFw
cGluZ3MgPSB0aGlzLl9lbmFibGVkU291cmNlTWFwcGluZ3MoKTsKKyAgICAgICAgdGhpcy5fZGlz
YWJsZWRTb3VyY2VNYXBwaW5ncy5yZW1vdmUoc291cmNlTWFwcGluZyk7CisgICAgICAgIGlmICgh
dGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5ncy5zaXplKCkpCisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5nczsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZU1h
cHBpbmdzRGlmZmVyKG9sZFNvdXJjZU1hcHBpbmdzLHRoaXMuX2VuYWJsZWRTb3VyY2VNYXBwaW5n
cygpKSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxvY2F0aW9ucygpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nfSBzb3VyY2VN
YXBwaW5nCisgICAgICovCisgICAgcHVzaFNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHNvdXJjZU1h
cHBpbmcpCisgICAgeworICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5ncy5wdXNoKHNvdXJjZU1h
cHBpbmcpOworICAgICAgICB0aGlzLl91cGRhdGVMb2NhdGlvbnMoKTsKKyAgICB9LAorCisgICAg
cG9wU291cmNlTWFwcGluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc291cmNl
TWFwcGluZ3MucG9wKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUxvY2F0aW9ucygpOworICAgIH0s
CisKKyAgICBfdXBkYXRlTG9jYXRpb25zOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlz
Ll9zb3VyY2VNYXBwaW5nID0gc291cmNlTWFwcGluZzsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9sb2NhdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9sb2Nh
dGlvbnNbaV0udXBkYXRlKCk7CiAgICAgfSwKQEAgLTIxMiw3ICszMDQsOSBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9j
YXRpb24pOwogICAgICAgICBsb2NhdGlvbi51cGRhdGUoKTsKICAgICAgICAgcmV0dXJuIGxvY2F0
aW9uOwotICAgIH0KKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZQogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKaW5kZXggZjViMTQ0YjgyMTJmMjI4
MTI5YWVkYzdhYmU0ZjI2ZjE3MzdiMjFiMy4uMDQ5ZmVjZjUyZTc5MTU2OWI1ZjUxZmE1YjlkYTIx
ZmY4MmJjNjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHZhciBicmVha3BvaW50TG9jYXRpb25zID0gdGhpcy5fcmVtb3ZlQnJl
YWtwb2ludHModWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdmFyIGNyZWF0ZWRVSVNvdXJjZUNvZGUg
PSB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdCh1aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIg
c2NyaXB0VUlTb3VyY2VDb2RlID0gdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQodWlTb3VyY2VD
b2RlKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHVpU291cmNlQ29kZSwgYnJl
YWtwb2ludExvY2F0aW9ucyk7Ci0gICAgICAgIGlmIChjcmVhdGVkVUlTb3VyY2VDb2RlKQotICAg
ICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKGNyZWF0ZWRVSVNvdXJjZUNvZGUsIGJy
ZWFrcG9pbnRMb2NhdGlvbnMpOworICAgICAgICBpZiAoc2NyaXB0VUlTb3VyY2VDb2RlKQorICAg
ICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHNjcmlwdFVJU291cmNlQ29kZSwgYnJl
YWtwb2ludExvY2F0aW9ucyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMzA0LDMwICszMDQsMTQg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTbmlwcGV0SWRbc25pcHBldElkXTsKIAotICAgICAgICBpZiAoIXVpU291cmNlQ29kZSB8
fCB0aGlzLl9ldmFsdWF0aW9uU291cmNlVVJMKHVpU291cmNlQ29kZSkgIT09IHNjcmlwdC5zb3Vy
Y2VVUkwpIHsKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdChz
Y3JpcHQpOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZSB8fCB0aGlzLl9ldmFsdWF0aW9uU291
cmNlVVJMKHVpU291cmNlQ29kZSkgIT09IHNjcmlwdC5zb3VyY2VVUkwpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc2NyaXB0
Rm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpKTsKICAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKICAgICAg
ICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7
CiAgICAgICAgIHVpU291cmNlQ29kZS5zY3JpcHRGaWxlKCkuc2V0SGFzRGl2ZXJnZWRGcm9tVk0o
ZmFsc2UpOwotICAgICAgICBzY3JpcHQuc2V0U291cmNlTWFwcGluZyh0aGlzLl9zbmlwcGV0U2Ny
aXB0TWFwcGluZyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNjcmlwdH0gc2NyaXB0Ci0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgX2NyZWF0ZVVJU291cmNlQ29kZUZvclNj
cmlwdDogZnVuY3Rpb24oc2NyaXB0KQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IHRoaXMuX3dvcmtzcGFjZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZVVS
TCwgc2NyaXB0LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VN
YXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nKTsKLSAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKLSAgICAg
ICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7
Ci0gICAgICAgIHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBw
aW5nKTsKLSAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICAgICAgc2NyaXB0LnB1c2hT
b3VyY2VNYXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0zNzAsOSArMzU0LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJ
ZFtzY3JpcHQuc2NyaXB0SWRdOwogICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUu
cmVtb3ZlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIGRlbGV0ZSB1aVNvdXJjZUNvZGUuX2V2YWx1
YXRpb25JbmRleDsKLSAgICAgICAgdmFyIGNyZWF0ZWRVSVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVh
dGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgc2NyaXB0LnBvcFNvdXJj
ZU1hcHBpbmcodGhpcy5fc25pcHBldFNjcmlwdE1hcHBpbmcpOwogICAgICAgICB1aVNvdXJjZUNv
ZGUuc2NyaXB0RmlsZSgpLnNldElzRGl2ZXJnaW5nRnJvbVZNKGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZWRVSVNvdXJjZUNvZGU7CisgICAgICAgIHJldHVybiBzY3JpcHQucmF3TG9jYXRp
b25Ub1VJTG9jYXRpb24oMCwgMCkudWlTb3VyY2VDb2RlOwogICAgIH0sCiAKICAgICAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBjY2Zh
YmMzYzczOWFkNzFlOTBjZGE1OWUzYTAyZjIzYTFhOTJkNDdiLi4zYmM4ZWQxNzc1NWMyMzBkMTQ1
OTRjMmIxZGMwOTNlOGNmMTQxODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCkBAIC00OSw2ICs0OSw3IEBACiAgICAgPGZpbGU+RGF0YUdyaWQu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5E
ZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM8L2ZpbGU+CisgICAgPGZpbGU+RGVmYXVsdFNjcmlwdE1h
cHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVmYXVsdFRleHRFZGl0b3IuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkRpcmVjdG9yeUNvbnRlbnRWaWV3
LmpzPC9maWxlPgpAQCAtMTA0LDYgKzEwNSw3IEBACiAgICAgPGZpbGU+anNkaWZmbGliLmpzPC9m
aWxlPgogICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+TGlu
a2lmaWVyLmpzPC9maWxlPgorICAgIDxmaWxlPkxpdmVFZGl0U3VwcG9ydC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5NZW1vcnlTdGF0aXN0aWNzLmpzPC9maWxlPgogICAgIDxmaWxlPk1ldHJpY3NTaWRl
YmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXRpdmVCcmVha3BvaW50c1NpZGViYXJQYW5l
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggMTljOTMzODlmOTM2ZWEyZmVlM2Y0N2JkZjkwYWUwMTQ3OTViNTM4
Yi4uOTA4YzZhNWU3ZDAyYmYyNThkMWI1YmI4NTQ5OTc2MGMzZTY2MGRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNDEs
OCArMTQxLDEwIEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFByb3ZpZGVycy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVmYXVsdFNjcmlw
dE1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlJlc291cmNlU2NyaXB0TWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJMaXZlRWRpdFN1
cHBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNBU1NTb3VyY2VNYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJET01BZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGVzdENvbnRyb2xsZXIuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRl
eCBkYzEzYTNlZjE5MTI1NjhiZGYyYWEwOWViOTcyMmFmOGI1MzhmYWQ0Li5jZjYwYjhiNDc1OTI1
MzY3YTVhYmEyYzEwYWYxMzlmNTAwODVkNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDM2LDYgKzQzNiw3IEBAIFdlYkluc3Bl
Y3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKIAogICAgIHRo
aXMuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9k
ZWwodGhpcy53b3Jrc3BhY2UsIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKICAgICBu
ZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh0aGlzLndvcmtzcGFjZSwgdGhp
cy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOworICAgIHRoaXMubGl2ZUVkaXRTdXBwb3J0ID0g
bmV3IFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQodGhpcy53b3Jrc3BhY2UpOwogICAgIHRo
aXMuc3R5bGVDb250ZW50QmluZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVDb250ZW50Qmlu
ZGluZyh0aGlzLmNzc01vZGVsKTsKICAgICBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJj
ZUNvZGVQcm92aWRlcih0aGlzLndvcmtzcGFjZSwgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIpOwogICAgIG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyh0aGlzLndvcmtz
cGFjZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTljZGY2YTg3ZDg4MTFlNmRkYTg0Mzc5NWYxMDI5YjI1NGU4MDgwYS4u
ZTkwYTY1YjQ3ZWJlYmY3MTJhOWExYjE5NjE4YWJiNzdmYjVmYzUwZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDEyLTExLTIyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IHNjcmlwdCBtYXBwaW5ncyBieSBp
bnRyb2R1Y2luZyBEZWZhdWx0U2NyaXB0TWFwcGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXIt
c2NyaXB0LW1hcHBpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1tYW5hZ2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2R5
bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBw
aW5nLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRt
bDoKKwogMjAxMi0xMS0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1h
cHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNj
cmlwdC1tYXBwaW5nLmh0bWwKaW5kZXggZWJkZTA0ZjE2NGQ0YmZlNDExNjExODkzZWM3YmJmOTJm
MDY1NmU5MC4uMjc2NjA1YzY2MmRlZDU1MWVjMDc3ZDY4ZjAzODk5NTI0Y2MxODViNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1h
cHBpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxl
ci1zY3JpcHQtbWFwcGluZy5odG1sCkBAIC04LDExICs4LDE1IEBACiAKIGZ1bmN0aW9uIHRlc3Qo
KQogeworICAgIHZhciBkZWZhdWx0U2NyaXB0TWFwcGluZzsKKyAgICB2YXIgcmVzb3VyY2VTY3Jp
cHRNYXBwaW5nOworCiAgICAgZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJTY3JpcHRNYXBwaW5nKCkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlV29ya3NwYWNlKCk7CiAgICAgICAg
IHZhciBjb21waWxlclNjcmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2Ny
aXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UsIEluc3BlY3RvclRlc3QudGVz
dE5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAgICAgIHZhciByZXNvdXJjZVNjcmlwdE1h
cHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JU
ZXN0LnRlc3RXb3Jrc3BhY2UpOworICAgICAgICByZXNvdXJjZVNjcmlwdE1hcHBpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRlc3RXb3Jr
c3BhY2UpOworICAgICAgICBkZWZhdWx0U2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGVmYXVsdFNjcmlwdE1hcHBpbmcoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlKTsKICAgICAg
ICAgcmV0dXJuIGNvbXBpbGVyU2NyaXB0TWFwcGluZzsKICAgICB9CiAKQEAgLTEzOCw2ICsxNDIs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBzY3JpcHQ7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAgIHZhciBt
YXBwaW5nID0gY3JlYXRlQ29tcGlsZXJTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgICAgICB2YXIg
b3JpZ2luYWxVSVNvdXJjZUNvZGU7CiAgICAgICAgICAgICBzdGVwMSgpOwogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMSgpCkBAIC0xNDUsMzQgKzE1MCwzNSBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlV
SVNvdXJjZUNvZGVBZGRlZEV2ZW50KG9yaWdpbmFsVUlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAg
ICAgICAgICAgIHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiY29tcGls
ZWQuanMiLCAwLCAwLCB0cnVlLCAiIik7CiAgICAgICAgICAgICAgICAgc2NyaXB0LnNvdXJjZU1h
cFVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2Ut
bWFwLmpzb24iOwotICAgICAgICAgICAgICAgIHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKG1hcHBp
bmcpOworICAgICAgICAgICAgICAgIGRlZmF1bHRTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQpOworICAgICAgICAgICAgICAgIHJlc291cmNlU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2Ny
aXB0KTsKICAgICAgICAgICAgICAgICBtYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgICAg
ICAgICAgICAgIGFmdGVyU2NyaXB0QWRkZWQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gb3JpZ2luYWxVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNl
VUlTb3VyY2VDb2RlQWRkZWRFdmVudChmaXJzdFVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2
ZW50KG9yaWdpbmFsUmVzb3VyY2VVSVNvdXJjZUNvZGVBZGRlZCk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UoImNvbXBpbGVkLmpz
IiwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIik7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGZpcnN0VUlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VD
b2RlKQorICAgICAgICAgICAgZnVuY3Rpb24gb3JpZ2luYWxSZXNvdXJjZVVJU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHNlY29uZFVJU291
cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KGZpcnN0VUlTb3VyY2VDb2RlQWRkZWQpOworICAg
ICAgICAgICAgICAgIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBzZWNvbmRVSVNvdXJjZUNvZGVBZGRlZCh1
aVNvdXJjZUNvZGUpCisgICAgICAgICAgICBmdW5jdGlvbiBmaXJzdFVJU291cmNlQ29kZUFkZGVk
KHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KG9yaWdpbmFsUmVzb3Vy
Y2VVSVNvdXJjZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRN
b2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UoImNvbXBpbGVkLmpzIiwgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuU2NyaXB0LCAiIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53
YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudChzZWNvbmRVSVNvdXJjZUNvZGVB
ZGRlZCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG9yaWdpbmFsUmVz
b3VyY2VVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpIHsgfQorICAgICAgICAgICAgZnVu
Y3Rpb24gc2Vjb25kVUlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKSB7IH0KIAogICAgICAg
ICAgICAgZnVuY3Rpb24gYWZ0ZXJTY3JpcHRBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZTEgPSBJbnNwZWN0b3JUZXN0LnRl
c3RXb3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5z
cGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzIik7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZTIgPSBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJM
KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UyLmpzIik7
Ci0gICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gbWFwcGluZy5fb3Jp
Z2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwogCiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlMSwgNCwg
NCwgc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDgxKSk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlMSwgNSwgNCwgc2Ny
aXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDkzKSk7CkBAIC0yMjAsNiArMjI2LDggQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNvbXBpbGVkVUlTb3VyY2VD
b2RlQWRkZWQodWlTb3VyY2VDb2RlKSB7IH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVm
YXVsdFNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgICAgICBtYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQpOwogCiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gSW5zcGVj
dG9yVGVzdC50ZXN0V29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSTCgic291cmNlLmpzIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5h
Z2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LW1hbmFnZXItZXhwZWN0ZWQudHh0CmluZGV4IDMzODg2NzAxMjgxNzkzOWY2NDJmMzFhOWVi
ZmFlZWE0ZWVkNGQzYTcuLjRkYjUxNTE0YWNmZDJlOWU1M2ExYjRjNTU5NmQ5ZjNlMDBjNDZjMDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1h
bmFnZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50LW1hbmFnZXItZXhwZWN0ZWQudHh0CkBAIC0xMTAsMjAgKzExMCwxMiBAQCBSdW5u
aW5nOiB0ZXN0UmVzdG9yZUJyZWFrcG9pbnRzQWZ0ZXJUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1v
dmVkCiAgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKICAgICBiLmpzOjMgZW5h
YmxlZDp0cnVlIGNvbmRpdGlvbjoKICAgQWRkaW5nIHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6IGEu
anMpCi0gICAgZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KGEuanM6MTA6Zm9vID09IGJhcikK
LSAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMTAsIGZvbyA9PSBiYXIsIHRydWUpCi0gICAgTG9j
YXRpb24gY3JlYXRlZDogYS5qczoxMAotICAgIGJyZWFrcG9pbnRBZGRlZChhLmpzLCAyMCwgLCBm
YWxzZSkKICAgQWRkaW5nIFVJU291cmNlQ29kZTogYS5qcykKLSAgUmVtb3ZpbmcgdGVtcG9yYXJ5
IFVJU291cmNlQ29kZTogYS5qcykKLSAgICBicmVha3BvaW50UmVtb3ZlZChhLmpzLCAxMCkKLSAg
ICBMb2NhdGlvbiBkaXNwb3NlZDogYS5qczoxMAotICAgIGRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJl
YWtwb2ludChhLmpzOjEwKQotICAgIGJyZWFrcG9pbnRSZW1vdmVkKGEuanMsIDIwKQogICAgIGRl
YnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludChhLmpzOjEwOmZvbyA9PSBiYXIpCiAgICAgYnJlYWtw
b2ludEFkZGVkKGEuanMsIDEwLCBmb28gPT0gYmFyLCB0cnVlKQogICAgIExvY2F0aW9uIGNyZWF0
ZWQ6IGEuanM6MTAKICAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMjAsICwgZmFsc2UpCisgIFJl
bW92aW5nIHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6IGEuanMpCiAgIER1bXBpbmcgU3RvcmFnZQog
ICAgIGEuanM6MTAgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFyCiAgICAgYS5qczoy
MCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRleCBkNGU1M2E0ZGRkNjg1
MjA1MzhkYTU3ZTYyNDIzZTRiNTNkMjVhOGY1Li43YWQ5ZGM4NzIwZTAyYzdlNjJhZGFjY2U5NzI3
ZWY2YzM5MGI1ZDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHRJZCwgdXJsKQogICAgICAg
ICB7CiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdElkXSA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NyaXB0KHNjcmlwdElkLCB1cmwpOwotICAgICAgICAgICAgdGhpcy5fc2NyaXB0c1tzY3Jp
cHRJZF0uc2V0U291cmNlTWFwcGluZyh0aGlzLl9zb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAg
IHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdLnB1c2hTb3VyY2VNYXBwaW5nKHRoaXMuX3NvdXJjZU1h
cHBpbmcpOwogICAgICAgICB9LAogCiAgICAgICAgIHNldEJyZWFrcG9pbnRCeVNjcmlwdExvY2F0
aW9uOiBmdW5jdGlvbihsb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjaykKQEAgLTk2LDEwICs5
NiwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHMgPSB7fTsK
ICAgICAgICAgfSwKIAotICAgICAgICBzZXRTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihzb3VyY2VN
YXBwaW5nKQorICAgICAgICBwdXNoU291cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNlTWFwcGlu
ZykKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIgc2NyaXB0SWQgaW4gdGhpcy5fc2Ny
aXB0cykKLSAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdElkXS5zZXRTb3VyY2VN
YXBwaW5nKHNvdXJjZU1hcHBpbmcpOworICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHNbc2Ny
aXB0SWRdLnB1c2hTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBpbmcpOworICAgICAgICB9LAorCisg
ICAgICAgIGRpc2FibGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihzb3VyY2VNYXBwaW5nKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBzY3JpcHRJZCBpbiB0aGlzLl9zY3JpcHRzKQor
ICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdLmRpc2FibGVTb3VyY2VNYXBw
aW5nKHNvdXJjZU1hcHBpbmcpOwogICAgICAgICB9CiAgICAgfQogICAgIERlYnVnZ2VyTW9kZWxN
b2NrLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
QEAgLTM3OCwxMCArMzg0LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHVp
U291cmNlQ29kZUEgPSBhZGRVSVNvdXJjZUNvZGUoYnJlYWtwb2ludE1hbmFnZXIsICJhLmpzIik7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiXG4gIFRvZ2dsaW5nIHNvdXJj
ZSBtYXBwaW5nLiIpOwogICAgICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX3NvdXJjZU1hcHBp
bmcgPSBzaGlmdGluZ01hcHBpbmc7Ci0gICAgICAgICAgICBicmVha3BvaW50TWFuYWdlci5fZGVi
dWdnZXJNb2RlbC5zZXRTb3VyY2VNYXBwaW5nKHNoaWZ0aW5nTWFwcGluZyk7CisgICAgICAgICAg
ICBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5wdXNoU291cmNlTWFwcGluZyhzaGlm
dGluZ01hcHBpbmcpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlxuICBU
b2dnbGluZyBzb3VyY2UgbWFwcGluZyBiYWNrLiIpOwogICAgICAgICAgICAgYnJlYWtwb2ludE1h
bmFnZXIuX3NvdXJjZU1hcHBpbmcgPSBkZWZhdWx0TWFwcGluZzsKLSAgICAgICAgICAgIGJyZWFr
cG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlck1vZGVsLnNldFNvdXJjZU1hcHBpbmcoZGVmYXVsdE1hcHBp
bmcpOworICAgICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwuZGlzYWJs
ZVNvdXJjZU1hcHBpbmcoc2hpZnRpbmdNYXBwaW5nKTsKICAgICAgICAgICAgIHJlc2V0QnJlYWtw
b2ludE1hbmFnZXIoYnJlYWtwb2ludE1hbmFnZXIsIG5leHQpOwogICAgICAgICB9LAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFn
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNj
cmlwdC10YWctZXhwZWN0ZWQudHh0CmluZGV4IDVkNTk5MWMyMjZjZDNiZGYwOWVjOWUxYzI5MjQ3
NmI2YTA0YzVjMGIuLjEyMGVmMzU1NzBjMTE4MDAxYTU5NTJmMTIxN2QxYzAxYjk2OGI4YWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10
YWctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5h
bWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0CkBAIC05LDEzICs5LDEzIEBAIHNjcmlwdDI6IExh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbAogSXMg
YW5vbnltb3VzOmZhbHNlCiBJcyBpbmxpbmUgc2NyaXB0OmZhbHNlCiBEdW1waW5nIHVpU291cmNl
Q29kZXM6Ci1VSVNvdXJjZUNvZGU6IAotVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiB0cnVlCitV
SVNvdXJjZUNvZGU6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlw
dC10YWcuaHRtbAorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQogVUlTb3VyY2VDb2Rl
IGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKIFVJ
U291cmNlQ29kZSBjb250ZW50OiBmdW5jdGlvbiBmb28oKSB7IH0KLVVJU291cmNlQ29kZTogCi1V
SVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKK1VJU291cmNlQ29kZTogTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy5odG1sCitVSVNvdXJjZUNvZGUg
aXMgZWRpdGFibGU6IGZhbHNlCiBVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNl
CiBNaW1lIHR5cGU6IHRleHQvamF2YXNjcmlwdAogVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IGZ1bmN0
aW9uIGJhcigpIHsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2xpdmUtZWRpdC1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCBhNTky
Mjc3M2NhNjZlMTUwNDRiNDMzYjhmNzY4OTIyMTMyMWM0NWZiLi5iZjk0N2FjYjQ1MTdmMDgzYTIz
MjdkZDQ2MGVkNDkyMjU1NWVjZjViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4
dApAQCAtNDAsOSArNDAsOSBAQCBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAgRHVtcGluZyBicmVh
a3BvaW50IGxvY2F0aW9ucwogICAgICAgICB1cmw6IGVkaXQtbWUuanMsIGxpbmVOdW1iZXI6IDIs
IGlzVGVtcG9yYXJ5OiBmYWxzZQogRWRpdGluZyBzb3VyY2U6CisgICAgT3JpZ2luYWxUZXh0RWRp
dG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAgICAg
VGV4dEVkaXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQogICAgIFRleHRFZGl0
b3IuYWRkQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9y
aWdpbmFsVGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9
IGZhbHNlKQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCiAgICAgICAgIGVkaXQtbWUu
anM6MiwgZW5hYmxlZDp0cnVlCiAgICAgRHVtcGluZyBicmVha3BvaW50IGxvY2F0aW9ucwpAQCAt
NjksOSArNjksOSBAQCBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAgRHVtcGluZyBicmVha3BvaW50
IGxvY2F0aW9ucwogICAgICAgICB1cmw6IGVkaXQtbWUuanMsIGxpbmVOdW1iZXI6IDIsIGlzVGVt
cG9yYXJ5OiBmYWxzZQogRWRpdGluZyBzb3VyY2U6CisgICAgT3JpZ2luYWxUZXh0RWRpdG9yLmFk
ZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAgICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQogICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9yaWdpbmFs
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCiAgICAgICAgIGVkaXQtbWUuanM6Miwg
ZW5hYmxlZDp0cnVlCiAgICAgRHVtcGluZyBicmVha3BvaW50IGxvY2F0aW9ucwpAQCAtMTA4LDkg
KzEwOCw5IEBAIFNldHRpbmcgYnJlYWtwb2ludDoKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9j
YXRpb25zCiAgICAgICAgIHVybDogZWRpdC1tZS5qcywgbGluZU51bWJlcjogMiwgaXNUZW1wb3Jh
cnk6IGZhbHNlCiBFZGl0aW5nIHNvdXJjZToKKyAgICBPcmlnaW5hbFRleHRFZGl0b3IuYWRkQnJl
YWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSBmYWxzZSkKICAgICBUZXh0RWRpdG9y
LnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCiAgICAgVGV4dEVkaXRvci5hZGRCcmVh
a3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IHRydWUpCi0gICAgT3JpZ2luYWxUZXh0
RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAg
ICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKICAgICAgICAgZWRpdC1tZS5qczoyLCBlbmFi
bGVkOnRydWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCkBAIC0xNDcsMjQgKzE0
NywxNCBAQCBTaG93aW5nIHNjcmlwdCBzb3VyY2U6CiBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAg
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRy
dWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5l
TnVtYmVyOiAyLCBpc1RlbXBvcmFyeTogdHJ1ZQogRWRpdGluZyBzb3VyY2U6Ci0gICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQotICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9yaWdpbmFs
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRy
dWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5l
TnVtYmVyOiAyLCBpc1RlbXBvcmFyeTogdHJ1ZQogVW5kb2luZyBzb3VyY2UgZWRpdGluZzoKLSAg
ICBPcmlnaW5hbFRleHRFZGl0b3IucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMikKLSAg
ICBUZXh0RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQotICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSBmYWxzZSkKICAgICBEdW1waW5n
IGJyZWFrcG9pbnQgc3RvcmFnZQotICAgICAgICA6MiwgZW5hYmxlZDp0cnVlCiAgICAgRHVtcGlu
ZyBicmVha3BvaW50IGxvY2F0aW9ucwogICAgICAgICB1cmw6ICwgbGluZU51bWJlcjogMiwgaXNU
ZW1wb3Jhcnk6IHRydWUKIEZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtwb2ludDoKQEAgLTE4MCwyNCAr
MTcwLDE0IEBAIFNob3dpbmcgc2NyaXB0IHNvdXJjZToKIFNldHRpbmcgYnJlYWtwb2ludDoKICAg
ICBUZXh0RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFs
c2UpCiAgICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKLSAgICAgICAgOjIsIGVuYWJsZWQ6
dHJ1ZQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBsb2NhdGlvbnMKICAgICAgICAgdXJsOiAsIGxp
bmVOdW1iZXI6IDIsIGlzVGVtcG9yYXJ5OiB0cnVlCiBFZGl0aW5nIHNvdXJjZToKLSAgICBUZXh0
RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVkaXRvci5h
ZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IHRydWUpCi0gICAgT3JpZ2lu
YWxUZXh0RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFs
c2UpCiAgICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKLSAgICAgICAgOjIsIGVuYWJsZWQ6
dHJ1ZQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBsb2NhdGlvbnMKICAgICAgICAgdXJsOiAsIGxp
bmVOdW1iZXI6IDIsIGlzVGVtcG9yYXJ5OiB0cnVlCiBVbmRvaW5nIHNvdXJjZSBlZGl0aW5nOgot
ICAgIE9yaWdpbmFsVGV4dEVkaXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQot
ICAgIFRleHRFZGl0b3IucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMikKLSAgICBUZXh0
RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVkaXRvci5h
ZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNlKQogICAgIER1bXBp
bmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRydWUKICAgICBEdW1w
aW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5lTnVtYmVyOiAyLCBp
c1RlbXBvcmFyeTogdHJ1ZQogRmluYWxseSByZW1vdmluZyBicmVha3BvaW50OgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50
cy5odG1sCmluZGV4IGJlOGI0NTUxMjRiNmRhZWJlNjI4NzZjNTRjMmI4MTEyMTYwMzllZDQuLmYw
NTEzZTIyNWI1MWJkYWRhNzU0YWJhNmNhMDIxYzE3OTdmM2Y5ZjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZlLWVkaXQtYnJlYWtwb2ludHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLmh0
bWwKQEAgLTI5NSw3ICsyOTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlv
biB0ZXN0RWRpdEFub255bW91c1VuZG8obmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFy
IGphdmFTY3JpcHRTb3VyY2VGcmFtZSwgdWlTb3VyY2VDb2RlLCBzY3JpcHQsIG9yaWdpbmFsSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLCBvcmlnaW5hbFVJU291cmNlQ29kZTsKKyAgICAgICAgICAgIHZh
ciBqYXZhU2NyaXB0U291cmNlRnJhbWUsIHVpU291cmNlQ29kZSwgc2NyaXB0LCBsaXZlRWRpdFNv
dXJjZUZyYW1lLCBsaXZlRWRpdFVJU291cmNlQ29kZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKQEAgLTMyOSwzMSArMzI5
LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHNjcmlwdCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGxvY2F0aW9uLnNjcmlwdElkKTsKIAogICAg
ICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFZGl0aW5nIHNvdXJjZToiKTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlcGxhY2VJblNvdXJjZShqYXZhU2NyaXB0U291
cmNlRnJhbWUsICJ9IiwgIn0vLyIpOwotCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJj
ZUNvZGUgPSBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJl
cikudWlTb3VyY2VDb2RlOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1VJU291
cmNlQ29kZShvcmlnaW5hbFVJU291cmNlQ29kZSwgZGlkU2hvd09yaWdpbmFsVUlTb3VyY2VDb2Rl
KTsKKyAgICAgICAgICAgICAgICBsaXZlRWRpdFVJU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5s
aXZlRWRpdFN1cHBvcnQudWlTb3VyY2VDb2RlRm9yTGl2ZUVkaXQodWlTb3VyY2VDb2RlKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNv
dXJjZUNvZGUsIGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZSk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dPcmlnaW5hbFVJU291cmNlQ29kZShzb3VyY2VG
cmFtZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZShz
b3VyY2VGcmFtZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvcmlnaW5hbEphdmFT
Y3JpcHRTb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1lOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0VHJ1ZShvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSAhPT0gamF2YVNj
cmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJh
bWVzIHNob3VsZCBkaWZmZXIuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2RlICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5k
IG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGRpZmZlci4iKTsKLQorICAgICAgICAgICAg
ICAgIGxpdmVFZGl0U291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUobGl2ZUVkaXRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlw
dFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVz
IHNob3VsZCBkaWZmZXIuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKGxpdmVFZGl0VUlTb3VyY2VDb2RlICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9y
aWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGRpZmZlci4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWRpdGluZyBzb3VyY2U6Iik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5yZXBsYWNlSW5Tb3VyY2UoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAi
fSIsICJ9Ly8iKTsKICAgICAgICAgICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2Nh
dGlvbnMoKTsKKworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbFVJU291cmNlQ29kZSA9IHNj
cmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihsb2NhdGlvbi5saW5lTnVtYmVyKS51aVNvdXJj
ZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFs
VUlTb3VyY2VDb2RlID09PSB1aVNvdXJjZUNvZGUsICJNYXBwZWQgYW5kIG9yaWdpbmFsIHVpU291
cmNlQ29kZXMgc2hvdWxkIGJlIHRoZSBzYW1lLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJVbmRvaW5nIHNvdXJjZSBlZGl0aW5nOiIpOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIuQnJlYWtwb2ludC5wcm90b3R5cGUsICJfYWRkUmVzb2x2ZWRMb2NhdGlvbiIsIGJyZWFrcG9p
bnRSZXNvbHZlZEFnYWluKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnVuZG9Tb3Vy
Y2VFZGl0aW5nKGphdmFTY3JpcHRTb3VyY2VGcmFtZSk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC51bmRvU291cmNlRWRpdGluZyhsaXZlRWRpdFNvdXJjZUZyYW1lKTsKKyAgICAgICAg
ICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2NhdGlvbnMoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBkaWRTaG93
T3JpZ2luYWxVSVNvdXJjZUNvZGUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5j
dGlvbiBicmVha3BvaW50UmVzb2x2ZWRBZ2FpbigpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRT
aG93T3JpZ2luYWxVSVNvdXJjZUNvZGUoc291cmNlRnJhbWUpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZHVtcEJyZWFrcG9pbnRTdG9yYWdlQW5kTG9jYXRpb25zKCk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtw
b2ludDoiKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbW92ZUJyZWFrcG9pbnQo
amF2YVNjcmlwdFNvdXJjZUZyYW1lLCAyKTsKLQogICAgICAgICAgICAgICAgIGR1bXBCcmVha3Bv
aW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0RWRpdER5bmFtaWNBbm9ueW1vdXNVbmRvKG5leHQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHZhciBqYXZhU2NyaXB0U291cmNlRnJhbWUsIHVpU291cmNlQ29kZSwgc2NyaXB0
LCBvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSwgb3JpZ2luYWxVSVNvdXJjZUNvZGU7Cisg
ICAgICAgICAgICB2YXIgamF2YVNjcmlwdFNvdXJjZUZyYW1lLCB1aVNvdXJjZUNvZGUsIHNjcmlw
dCwgbGl2ZUVkaXRTb3VyY2VGcmFtZSwgbGl2ZUVkaXRVSVNvdXJjZUNvZGU7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWREeW5hbWlj
QW5vbnltb3VzU2NyaXB0KCkiLCBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRV
bnRpbFBhdXNlZC5iaW5kKEluc3BlY3RvclRlc3QsIHBhdXNlZCkpOwogICAgICAgICAgICAgZnVu
Y3Rpb24gcGF1c2VkKCkKQEAgLTM5MSwzMSArMzkxLDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgICAgIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZv
cklkKGxvY2F0aW9uLnNjcmlwdElkKTsKIAogICAgICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50
U3RvcmFnZUFuZExvY2F0aW9ucygpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFZGl0aW5nIHNvdXJjZToiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnJlcGxhY2VJblNvdXJjZShqYXZhU2NyaXB0U291cmNlRnJhbWUsICJ9IiwgIn0vLyIpOwotCi0g
ICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBzY3JpcHQucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJlcikudWlTb3VyY2VDb2RlOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1VJU291cmNlQ29kZShvcmlnaW5hbFVJU291cmNlQ29k
ZSwgZGlkU2hvd09yaWdpbmFsVUlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBsaXZlRWRp
dFVJU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5saXZlRWRpdFN1cHBvcnQudWlTb3VyY2VDb2Rl
Rm9yTGl2ZUVkaXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNvdXJjZUNvZGUsIGRpZFNob3dMaXZlRWRpdFNj
cmlwdFNvdXJjZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNo
b3dPcmlnaW5hbFVJU291cmNlQ29kZShzb3VyY2VGcmFtZSkKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZShzb3VyY2VGcmFtZSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSA9IHNvdXJjZUZy
YW1lOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShvcmlnaW5hbEph
dmFTY3JpcHRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFu
ZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVzIHNob3VsZCBkaWZmZXIuIik7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2Rl
ICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hv
dWxkIGRpZmZlci4iKTsKLQorICAgICAgICAgICAgICAgIGxpdmVFZGl0U291cmNlRnJhbWUgPSBz
b3VyY2VGcmFtZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUobGl2
ZUVkaXRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBv
cmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVzIHNob3VsZCBkaWZmZXIuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKGxpdmVFZGl0VUlTb3VyY2VDb2RlICE9
PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxk
IGRpZmZlci4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWRp
dGluZyBzb3VyY2U6Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXBsYWNlSW5T
b3VyY2UoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAifSIsICJ9Ly8iKTsKICAgICAgICAgICAgICAg
ICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2NhdGlvbnMoKTsKKworICAgICAgICAgICAgICAg
IHZhciBvcmlnaW5hbFVJU291cmNlQ29kZSA9IHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihsb2NhdGlvbi5saW5lTnVtYmVyKS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2RlID09PSB1aVNvdXJjZUNv
ZGUsICJNYXBwZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGJlIHRoZSBzYW1l
LiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVbmRvaW5nIHNv
dXJjZSBlZGl0aW5nOiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUsICJf
YWRkUmVzb2x2ZWRMb2NhdGlvbiIsIGJyZWFrcG9pbnRSZXNvbHZlZEFnYWluKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnVuZG9Tb3VyY2VFZGl0aW5nKGphdmFTY3JpcHRTb3VyY2VG
cmFtZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC51bmRvU291cmNlRWRpdGluZyhs
aXZlRWRpdFNvdXJjZUZyYW1lKTsKKyAgICAgICAgICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3Jh
Z2VBbmRMb2NhdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlLCBkaWRTaG93T3JpZ2luYWxVSVNvdXJjZUNvZGUpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBicmVha3BvaW50UmVzb2x2ZWRBZ2Fp
bigpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRTaG93T3JpZ2luYWxVSVNvdXJjZUNvZGUoc291
cmNlRnJhbWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZHVtcEJyZWFrcG9pbnRT
dG9yYWdlQW5kTG9jYXRpb25zKCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtwb2ludDoiKTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJlbW92ZUJyZWFrcG9pbnQoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAyKTsK
LQogICAgICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwog
ICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2Ny
aXB0LWV4cGVjdGVkLnR4dAppbmRleCAxNTM3OTBlZDhjZWFkZjhjOGQ2ODE2YWY5ZDViMWYxYjUz
M2ExNmVjLi44Mjg2OWJlNzc3NTZiYjIzNjNhN2M5ZjFjOGU0YjAzYWUzNzdlZDI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlw
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWluLWlubGluZS1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC00LDEwICs0LDkgQEAgRGVidWdnZXIg
d2FzIGVuYWJsZWQuCiBEaWQgbG9hZCBmcm9udC1lbmQKIFBhdXNlZDogZmFsc2UKIGRpZFBhdXNl
QWZ0ZXJSZWxvYWQKLVNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgotZGlkU2hvd1NjcmlwdAogU291
cmNlIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCBzdGFjazoKLUZyYW1lIDApIGxp
bmUgNiwgY29udGVudDogPC9zY3JpcHQ+PHNjcmlwdD5mdW5jdGlvbiBmMSgpIHsgZGVidWdnZXI7
IH08L3NjcmlwdD4gKG11c3QgYmUgcGFydCBvZiBmdW5jdGlvbiAnZjEnKQorU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuCitGcmFtZSAwKSBsaW5lIDYsIGNvbnRlbnQ6ICAgICAgICAgIDxzY3JpcHQ+
ZnVuY3Rpb24gZjEoKSB7IGRlYnVnZ2VyOyB9PC9zY3JpcHQ+IChtdXN0IGJlIHBhcnQgb2YgZnVu
Y3Rpb24gJ2YxJykKIEZyYW1lIDEpIGxpbmUgOCwgY29udGVudDogZnVuY3Rpb24gZjIoKSB7IHJl
dHVybiBmMSgpOyB9IChtdXN0IGJlIHBhcnQgb2YgZnVuY3Rpb24gJ2YyJykKIEZyYW1lIDIpIGxp
bmUgMTQsIGNvbnRlbnQ6ICAgICByZXR1cm4gZjIoKTsgKG11c3QgYmUgcGFydCBvZiBmdW5jdGlv
biAnZjMnKQogRnJhbWUgMykgbGluZSAxNiwgY29udGVudDogZjMoKTsgKG11c3QgYmUgcGFydCBv
ZiBmdW5jdGlvbiAnJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sCmluZGV4IDk0ZDkwMTM1ZmJlNzk4NDM4
NTI0ODUwNDMwNjc2MzkzODJiMGE5ZTIuLjlmOTI5ZGEyYjBkNjU1NGIzM2ZmNjU0NGFkOGYyOWI3
ZTQxZDVkZGUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWluLWlubGluZS1zY3JpcHQuaHRtbApAQCAtMjQsNiArMjQsMTEgQEAgZjMoKTsK
IAogdmFyIHRlc3QgPSBmdW5jdGlvbigpCiB7CisgICAgLy9zZXRUaW1lb3V0KHFxLmJpbmQodGhp
cyksIDEwMDApOworICAgIGZ1bmN0aW9uIHFxKCkgeworICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5yZXN1bWVFeGVjdXRpb24oKTsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY29tcGxldGVU
ZXN0KCk7CisgICAgfQogICAgIHZhciB0ZXN0TmFtZSA9IFdlYkluc3BlY3Rvci5pbnNwZWN0ZWRQ
YWdlVVJMOwogICAgIHRlc3ROYW1lID0gdGVzdE5hbWUuc3Vic3RyaW5nKHRlc3ROYW1lLmxhc3RJ
bmRleE9mKCcvJykgKyAxKTsKIApAQCAtNDYsMzUgKzUxLDMxIEBAIHZhciB0ZXN0ID0gZnVuY3Rp
b24oKQogICAgIGZ1bmN0aW9uIGRpZFBhdXNlQWZ0ZXJSZWxvYWQoZGV0YWlscykKICAgICB7CiAg
ICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJkaWRQYXVzZUFmdGVyUmVsb2FkIik7Ci0g
ICAgICAgIGZvciAodmFyIHNjcmlwdElkIGluIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNj
cmlwdHMpIHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRzW3NjcmlwdElkXTsKLSAgICAgICAgICAgIGlmIChzY3JpcHQuc291cmNlVVJM
ICYmIHNjcmlwdC5zb3VyY2VVUkwuaW5kZXhPZih0ZXN0TmFtZSkgIT09IC0xICYmIHNjcmlwdC5s
aW5lT2Zmc2V0ID09IDYpIHsKLSAgICAgICAgICAgICAgICB2YXIgbG9jYXRpb24gPSBuZXcgV2Vi
SW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oc2NyaXB0LnNjcmlwdElkLCA2LCAwKTsK
LSAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1v
ZGVsLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGxvY2F0aW9uKTsKLSAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2hvd1VJU291cmNlQ29kZSh1aUxvY2F0aW9uLnVp
U291cmNlQ29kZSk7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gV2ViSW5zcGVj
dG9yLnBhbmVscy5zY3JpcHRzLnZpc2libGVWaWV3OwotICAgICAgICAgICAgICAgIGlmIChzb3Vy
Y2VGcmFtZS5sb2FkZWQpCi0gICAgICAgICAgICAgICAgICAgIGRpZFNob3dTY3JpcHQoc291cmNl
RnJhbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC5hZGRTbmlmZmVyKHNvdXJjZUZyYW1lLCAib25UZXh0RWRpdG9yQ29udGVudExvYWRl
ZCIsIGRpZFNob3dTY3JpcHQuYmluZChudWxsLCBzb3VyY2VGcmFtZSkpOwotICAgICAgICAgICAg
ICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiU291cmNlIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCBz
dGFjazoiKTsKKyAgICAgICAgZHVtcE5leHRDYWxsRnJhbWUoZGlkRHVtcCk7CiAgICAgfQogCi0g
ICAgZnVuY3Rpb24gZGlkU2hvd1NjcmlwdChzb3VyY2VGcmFtZSkKKyAgICB2YXIgY2FsbEZyYW1l
SW5kZXggPSAwOworICAgIGZ1bmN0aW9uIGR1bXBOZXh0Q2FsbEZyYW1lKG5leHQpCiAgICAgewot
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkU2hvd1NjcmlwdCIpOwotICAgICAg
ICB2YXIgcmVzb3VyY2VUZXh0ID0gc291cmNlRnJhbWUuX3RleHRFZGl0b3IudGV4dCgpOwotICAg
ICAgICB2YXIgbGluZXMgPSByZXNvdXJjZVRleHQuc3BsaXQoIlxuIik7CiAgICAgICAgIHZhciBj
YWxsRnJhbWVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY2FsbEZyYW1lczsKLSAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNvdXJjZSBzdHJpbmdzIGNvcnJlc3BvbmRpbmcg
dG8gdGhlIGNhbGwgc3RhY2s6Iik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgY2FsbEZy
YW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGZyYW1lID0gY2FsbEZyYW1lc1tp
XTsKLSAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gZnJhbWUubG9jYXRpb24ubGluZU51bWJl
cjsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGcmFtZSAiICsgaSArICIp
IGxpbmUgIiArIGxpbmVOdW1iZXIgKyAiLCBjb250ZW50OiAiICsgbGluZXNbbGluZU51bWJlcl0g
KyAiIChtdXN0IGJlIHBhcnQgb2YgZnVuY3Rpb24gJyIgKyBmcmFtZS5mdW5jdGlvbk5hbWUgKyAi
JykiKTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZUluZGV4ID09PSBjYWxsRnJhbWVzLmxlbmd0aCkg
eworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9Cisg
ICAgICAgIHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbY2FsbEZyYW1lSW5kZXhdOworICAgICAgICB2
YXIgdWlMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnJhd0xvY2F0aW9uVG9V
SUxvY2F0aW9uKGZyYW1lLmxvY2F0aW9uKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zaG93VUlT
b3VyY2VDb2RlKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLCBkdW1wQ2FsbEZyYW1lTGluZSk7CisK
KyAgICAgICAgZnVuY3Rpb24gZHVtcENhbGxGcmFtZUxpbmUoc291cmNlRnJhbWUpCisgICAgICAg
IHsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZVRleHQgPSBzb3VyY2VGcmFtZS5fdGV4dEVkaXRv
ci50ZXh0KCk7CisgICAgICAgICAgICB2YXIgbGluZXMgPSByZXNvdXJjZVRleHQuc3BsaXQoIlxu
Iik7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHVpTG9jYXRpb24ubGluZU51bWJlcjsK
KyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGcmFtZSAiICsgY2FsbEZyYW1l
SW5kZXggKyAiKSBsaW5lICIgKyBsaW5lTnVtYmVyICsgIiwgY29udGVudDogIiArIGxpbmVzW2xp
bmVOdW1iZXJdICsgIiAobXVzdCBiZSBwYXJ0IG9mIGZ1bmN0aW9uICciICsgZnJhbWUuZnVuY3Rp
b25OYW1lICsgIicpIik7CisgICAgICAgICAgICBjYWxsRnJhbWVJbmRleCsrCisgICAgICAgICAg
ICBkdW1wTmV4dENhbGxGcmFtZShuZXh0KTsKICAgICAgICAgfQotICAgICAgICBJbnNwZWN0b3JU
ZXN0LnJlc3VtZUV4ZWN1dGlvbihkaWRSZXN1bWUpOwogICAgIH0KIAogICAgIGZ1bmN0aW9uIHVp
U291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKQEAgLTgyLDYgKzgzLDExIEBAIHZhciB0ZXN0
ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgidWlTb3VyY2VD
b2RlQWRkZWQiKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBkaWREdW1wKCkKKyAgICB7CisgICAg
ICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKGRpZFJlc3VtZSk7CisgICAgfQorCiAg
ICAgZnVuY3Rpb24gZGlkUmVzdW1lKCkKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJkaWRSZXN1bWUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmctZXhwZWN0ZWQudHh0
CmluZGV4IDI2NTc4NmRkOWM3OTc5ZTQ5OGE2YzMyNjFlOGVmMTQ2MmY0OWM2MWQuLmFhMzU4NGFk
NzEwMDU3OTNjZjMwODg2NjVkNmFjMGFjNWEyZjRiZjMgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQK
KysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBw
aW5nLWV4cGVjdGVkLnR4dApAQCAtNCw4ICs0LDggQEAgVGVzdHMgUmVzb3VyY2VTY3JpcHRNYXBw
aW5nIGNsYXNzLgogUnVubmluZzogdGVzdFNjcmlwdFdpdGhQZW5kaW5nUmVzb3VyY2UKIEFkZGlu
ZyBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4KIFVJU291cmNlQ29kZTogZm9vLmpzCi1VSVNv
dXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKLVVJU291cmNlQ29kZSBpcyBjb250ZW50IHNjcmlw
dDogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQorVUlTb3VyY2VDb2RlIGlz
IGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKIFVJU291
cmNlQ29kZSBjb250ZW50OiA8Y29udGVudCBzY3JpcHQgc291cmNlPgogQWRkaW5nIHVpU291cmNl
Q29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuCkBAIC00MSw3ICs0MSw3IEBAIFVJU291cmNlQ29k
ZTogaW5kZXguaHRtbAogVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQogVUlTb3VyY2VD
b2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2h0bWwKLVVJU291
cmNlQ29kZSBjb250ZW50OiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48L3NjcmlwdD4gPHNj
cmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvc2NyaXB0PgorVUlTb3VyY2VDb2RlIGNvbnRlbnQ6ICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0PjxzY3JpcHQgc291cmNl
IDI+PC9zY3JpcHQ+CiBBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNvdXJjZS4K
IFVJU291cmNlQ29kZTogaW5kZXguaHRtbAogVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxz
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNj
cmlwdC1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3Vy
Y2Utc2NyaXB0LW1hcHBpbmcuaHRtbAppbmRleCA2NjJhYWMwNDIzOWZkNzI4NzM1MjhiZGViNGJi
M2ZmM2RkMTU4YjA4Li4yNjJlMjUwZWNiODQ5OTlhODQ1NTA0OWIwMTZhMDg5YTgxYjU5NTgyIDEw
MDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0
LW1hcHBpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3Vy
Y2Utc2NyaXB0LW1hcHBpbmcuaHRtbApAQCAtNyw5ICs3LDExIEBACiBmdW5jdGlvbiB0ZXN0KCkK
IHsKICAgICB2YXIgd29ya3NwYWNlOworICAgIHZhciBkZWZhdWx0U2NyaXB0TWFwcGluZzsKICAg
ICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZVNjcmlwdE1hcHBpbmcoKQogICAgIHsKICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jcmVhdGVXb3Jrc3BhY2UoKTsKKyAgICAgICAgZGVmYXVsdFNjcmlwdE1h
cHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5nKEluc3BlY3RvclRl
c3QudGVzdFdvcmtzcGFjZSk7CiAgICAgICAgIHZhciByZXNvdXJjZVNjcmlwdE1hcHBpbmcgPSBu
ZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRlc3RX
b3Jrc3BhY2UpOwogICAgICAgICByZXR1cm4gcmVzb3VyY2VTY3JpcHRNYXBwaW5nOwogICAgIH0K
QEAgLTI3LDIwICsyOSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHsKICAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHNjcmlwdCBmb3IgcGVu
ZGluZyByZXF1ZXN0LiIpOwogICAgICAgICAgICAgICAgIHNjcmlwdCA9IEluc3BlY3RvclRlc3Qu
Y3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDAsIHRydWUsICI8Y29udGVudCBzY3JpcHQgc291cmNl
PiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVRlbXBv
cmFyeVVJU291cmNlQ29kZUFkZGVkRXZlbnQob3JpZ2luYWxVSVNvdXJjZUNvZGVBZGRlZCk7Cisg
ICAgICAgICAgICAgICAgZGVmYXVsdFNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAg
ICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwog
ICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldv
cmtzcGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkRXZlbnQodGVtcG9yYXJ5VUlTb3VyY2VD
b2RlQWRkZWQpOwotICAgICAgICAgICAgICAgIHZhciB0ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Cisg
ICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlOwogICAgICAgICAgICAgICAg
IHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KTsKIAotICAgICAgICAgICAgICAg
IGZ1bmN0aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAg
ICAgICAgICAgICBmdW5jdGlvbiBvcmlnaW5hbFVJU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29k
ZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeVVJU291
cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNv
dXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CiAgICAgICAgICAgICAgICAgfQogCi0gICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odGVtcG9yYXJ5VUlTb3VyY2VDb2Rl
LCAwLCA1LCBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQsIDEwLCAwLCB0ZW1w
b3JhcnlVSVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlLCBzdGVwMik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9j
YXRpb24ob3JpZ2luYWxVSVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xv
Y2F0aW9uKHNjcmlwdCwgMTAsIDAsIG9yaWdpbmFsVUlTb3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jh
d0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlT
b3VyY2VDb2RlKG9yaWdpbmFsVUlTb3VyY2VDb2RlLCBzdGVwMik7CiAgICAgICAgICAgICB9CiAK
ICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKQEAgLTk4LDYgKzEwMSw4IEBAIGZ1bmN0aW9u
IHRlc3QoKQogICAgICAgICAgICAgdmFyIHNjcmlwdDI7CiAgICAgICAgICAgICBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAgIHZhciByZXNvdXJjZVNjcmlw
dE1hcHBpbmcgPSBjcmVhdGVSZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKKyAgICAgICAgICAgIHZh
ciBvcmlnaW5hbFVJU291cmNlQ29kZTE7CisgICAgICAgICAgICB2YXIgb3JpZ2luYWxVSVNvdXJj
ZUNvZGUyOwogICAgICAgICAgICAgdmFyIHVybCA9ICJpbmRleC5odG1sIjsKICAgICAgICAgICAg
IHN0ZXAxKCk7CiAKQEAgLTEwNSw0NSArMTEwLDQzIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAg
ICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJBZGRpbmcg
Zmlyc3Qgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7CiAgICAgICAgICAgICAgICAgc2Ny
aXB0MSA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDEwLCBmYWxzZSwg
IjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWRFdmVudChvcmlnaW5hbFVJU291
cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0U2NyaXB0TWFwcGluZy5hZGRT
Y3JpcHQoc2NyaXB0MSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQxKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZEV2ZW50
KHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAgICAgICAgICB2YXIgdGVtcG9y
YXJ5VUlTb3VyY2VDb2RlOwogICAgICAgICAgICAgICAgIHNjcmlwdDEucmF3TG9jYXRpb25Ub1VJ
TG9jYXRpb24oMCwgNSk7CiAKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiB0ZW1wb3JhcnlVSVNv
dXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAgZnVuY3Rpb24gb3Jp
Z2luYWxVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAgICAgICAgewot
ICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7
CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVUlTb3VyY2VDb2RlMSA9IHVpU291cmNlQ29k
ZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNo
ZWNrVUlMb2NhdGlvbih0ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdDEucmF3TG9j
YXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wVUlTb3VyY2VDb2RlKHRlbXBvcmFyeVVJU291cmNlQ29kZSwgc3RlcDIpOworICAg
ICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKG9yaWdpbmFsVUlTb3Vy
Y2VDb2RlMSwgMCwgNSwgc2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEw
LCAwLCBvcmlnaW5hbFVJU291cmNlQ29kZTEudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDAp
KTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUob3JpZ2lu
YWxVSVNvdXJjZUNvZGUxLCBzdGVwMik7CiAgICAgICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1
bmN0aW9uIHN0ZXAyKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4i
KTsKICAgICAgICAgICAgICAgICBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5jcmVhdGVTY3JpcHRN
b2NrKHVybCwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsKLSAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNvZGVS
ZW1vdmVkRXZlbnQoZnVuY3Rpb24oKSB7IH0pOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdEZvcldvcmtzcGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkRXZlbnQodGVtcG9y
YXJ5VUlTb3VyY2VDb2RlQWRkZWQpOwotICAgICAgICAgICAgICAgIHZhciB0ZW1wb3JhcnlVSVNv
dXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNl
VGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWRFdmVudChvcmlnaW5hbFVJU291cmNlQ29kZUFkZGVk
KTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0U2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0
Mik7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQyKTsKIAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBvcmlnaW5hbFVJU291
cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAg
ICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUyID0gdWlTb3VyY2VDb2RlOwogICAgICAg
ICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0
aW9uKHRlbXBvcmFyeVVJU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0Mi5yYXdMb2NhdGlvblRvVUlM
b2NhdGlvbigwLCA1KSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xv
Y2F0aW9uKHNjcmlwdDEsIDEwLCAwLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUudWlMb2NhdGlvblRv
UmF3TG9jYXRpb24oMTAsIDApKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBV
SVNvdXJjZUNvZGUodGVtcG9yYXJ5VUlTb3VyY2VDb2RlLCBzdGVwMyk7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24ob3JpZ2luYWxVSVNvdXJjZUNvZGUyLCAw
LCA1LCBzY3JpcHQyLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwgMTAsIDAsIG9yaWdp
bmFsVUlTb3VyY2VDb2RlMS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwgMCkpOworICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZShvcmlnaW5hbFVJU291cmNl
Q29kZTIsIHN0ZXAzKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAgZnVuY3Rpb24gc3Rl
cDMoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNvdXJjZS4iKTsKLSAgICAg
ICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJj
ZUNvZGVSZW1vdmVkRXZlbnQoZnVuY3Rpb24oKSB7IH0pOwogICAgICAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZlbnQodWlTb3VyY2VD
b2RlQWRkZWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkTW9ja1VJU291cmNl
Q29kZVRvV29ya3NwYWNlKHVybCwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuRG9jdW1lbnQs
ICI8cmVzb3VyY2UgY29udGVudD4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9k
ZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKaW5kZXggZDhmOGVkYmZhNmNjZTNmOTkwOTdmMGNh
MjFiMmQyYmZjZmI2M2IzNi4uZDA5MWRkMjNjOTJkZDJkYWYxMjNjNzQ5NmQ0MGFhMzE1OGNiM2U0
ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFu
ZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5l
bC5odG1sCkBAIC04OCw3ICs4OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICAv
LyBQbHVnIGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgogICAgICAgICAgICAgd29ya3NwYWNlLm5l
dHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKCJzb3VyY2UuanMiLCBjb250ZW50UHJvdmlk
ZXIsIGZhbHNlKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5yZW1vdmVUZW1wb3JhcnlVSVNvdXJj
ZUNvZGUodGVtcG9yYXJ5VUlTb3VyY2VDb2RlKTsKIAogICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKICAgICAgICAgICAgIG5l
eHQoKTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>175625</attachid>
            <date>2012-11-22 01:51:21 -0800</date>
            <delta_ts>2012-11-22 06:28:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-103038-20121122134906.patch</filename>
            <type>text/plain</type>
            <size>88995</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTM1MzYxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzEyNjY3M2ExNzAzOGRk
NzI2YTllYWViOTQ3NjhiNzcwZThmYzFjNi4uZmEyZDgwNmQ2NWQyNDM0MWUyODYxYTQwYWUxYjBk
YzU5Y2FjMjEwOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY4IEBACisyMDEyLTExLTIyICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IFNpbXBsaWZ5IHNjcmlwdCBtYXBwaW5ncyBieSBpbnRyb2R1Y2luZyBEZWZhdWx0U2NyaXB0
TWFwcGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTEwMzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEFkZGl0aW9uYWwgaW5mb3JtYXRpb24gb2YgdGhlIGNoYW5nZSBzdWNoIGFzIGFwcHJvYWNoLCBy
YXRpb25hbGUuIFBsZWFzZSBhZGQgcGVyLWZ1bmN0aW9uIGRlc2NyaXB0aW9ucyBiZWxvdyAoT09Q
UyEpLgorICAgICAgICBEZWZhdWx0U2NyaXB0TWFwcGluZyBjcmVhdGVzIGEgdWlTb3VyY2VDb2Rl
IGZvciBlYWNoIHNjcmlwdCBhbmQgc2V0IGl0c2VsZiBhcyBhIG1hcHBpbmcgZm9yIHRoZSBzY3Jp
cHQuCisgICAgICAgIFNjcmlwdCBjYW4gbm93IGhhdmUgYSBzdGFjayBvZiAocG9zc2libHkgZGlz
YWJsZWQpIG1hcHBpbmdzLCBhbGxvd2luZyB0byB0cnkgc2V2ZXJhbCBtYXBwaW5ncyB3aGVuIGNh
bGN1bGF0aW5nIHVpTG9jYXRpb24uCisgICAgICAgIExpdmVFZGl0U3VwcG9ydCBvYmplY3QgaXMg
YWRkZWQgb24gV2ViSW5zcGVjdG9yIHRvIHN1cHBvcnQgbGl2ZSBlZGl0aW5nIG9mIHJlYWRvbmx5
IERlZmF1bHRTY3JpcHRNYXBwaW5nJ3MgdWlTb3VyY2VDb2Rlcy4KKyAgICAgICAgRGVmYXVsdFNj
cmlwdE1hcHBpbmcgaXMgbm93IHRoZSBvbmx5IG1hcHBpbmcgdGhhdCBjcmVhdGVzIHRlbXBvcmFy
eSB1aVNvdXJjZUNvZGVzLgorCisgICAgICAgICogRW5nbGlzaC5scHJvai9sb2NhbGl6ZWRTdHJp
bmdzLmpzOgorICAgICAgICAqIFdlYkNvcmUuZ3lwaToKKyAgICAgICAgKiBXZWJDb3JlLnZjcHJv
ai9XZWJDb3JlLnZjcHJvajoKKyAgICAgICAgKiBpbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qczoK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlcik6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuc291cmNlRmlsZUlkKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5CcmVha3BvaW50LnByb3RvdHlwZS5fYnJlYWtwb2lu
dFN0b3JhZ2VJZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlw
dE1hcHBpbmcuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5n
KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBl
LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5Db21waWxl
clNjcmlwdE1hcHBpbmcucHJvdG90eXBlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9yZXNldCk6
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dlck1vZGVsLmpzOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwucHJvdG90eXBlLl9wYXJzZWRTY3JpcHRTb3Vy
Y2UpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5n
LmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9EZWZhdWx0U2NyaXB0TWFwcGluZy5qczogQWRkZWQu
CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanM6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZS5l
bHNlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5KYXZhU2NyaXB0U291cmNlRnJhbWUucHJvdG90
eXBlLnBvcHVsYXRlVGV4dEFyZWFDb250ZXh0TWVudSk6CisgICAgICAgICogaW5zcGVjdG9yL2Zy
b250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanM6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9m
cm9udC1lbmQvUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24p
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZy5wcm90b3R5cGUu
YWRkU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcu
cHJvdG90eXBlLl91aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9oYXNNZXJnZWRUb1ZNKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9o
YXNEaXZlcmdlZEZyb21WTSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRN
YXBwaW5nLnByb3RvdHlwZS5fd29ya3NwYWNlVUlTb3VyY2VDb2RlRm9yU2NyaXB0KToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9zY3JpcHRz
Rm9yVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1h
cHBpbmcucHJvdG90eXBlLl9iaW5kVUlTb3VyY2VDb2RlVG9TY3JpcHRzKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlLl9yZXNldCk6CisgICAg
ICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanM6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5lZGl0U291cmNlKToKKyAgICAg
ICAgKFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBlLnNldElzRHluYW1pY1NjcmlwdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5pc0R5bmFtaWNTY3JpcHQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUucmF3TG9jYXRpb25Ub1VJTG9j
YXRpb24pOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuX2VuYWJsZWRT
b3VyY2VNYXBwaW5ncyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZS5f
c291cmNlTWFwcGluZ3NEaWZmZXIpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90
b3R5cGUuZGlzYWJsZVNvdXJjZU1hcHBpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dC5wcm90b3R5cGUuZW5hYmxlU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0LnByb3RvdHlwZS5wdXNoU291cmNlTWFwcGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0LnByb3RvdHlwZS5wb3BTb3VyY2VNYXBwaW5nKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHQucHJvdG90eXBlLl91cGRhdGVMb2NhdGlvbnMpOgorICAgICAgICAoV2ViSW5z
cGVjdG9yLlNjcmlwdC5wcm90b3R5cGUuY3JlYXRlTGl2ZUxvY2F0aW9uKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdFNuaXBwZXRNb2RlbC5qczoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZnJvbnQtZW5kL1dlYktpdC5xcmM6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5qczoKKwogMjAxMi0xMS0yMSAgS2VudGFybyBIYXJhICA8aGFyYWtlbkBjaHJvbWl1bS5vcmc+
CiAKICAgICAgICAgVW5yZXZpZXdlZCwgcm9sbGluZyBvdXQgcjEzNTM1OC4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcyBiL1NvdXJj
ZS9XZWJDb3JlL0VuZ2xpc2gubHByb2ovbG9jYWxpemVkU3RyaW5ncy5qcwppbmRleCA2NTlkYWM0
MWQzNTc3NTU0YmNmZWUzZmJlNDNkYWQ3YzcyZGUzMWVlLi4zNTY3ZmRjN2MwZDVlOWQ4MjcxZmUy
ZmFhNzg2OWU1NjdhMDM4NzdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9FbmdsaXNoLmxw
cm9qL2xvY2FsaXplZFN0cmluZ3MuanMKKysrIGIvU291cmNlL1dlYkNvcmUvRW5nbGlzaC5scHJv
ai9sb2NhbGl6ZWRTdHJpbmdzLmpzCkBAIC04MTEsMyArODExLDUgQEAgbG9jYWxpemVkU3RyaW5n
c1siQXZlcmFnZSBUaW1lIl0gPSAiQXZlcmFnZSBUaW1lIjsKIGxvY2FsaXplZFN0cmluZ3NbIk1h
eGltdW0gVGltZSJdID0gIk1heGltdW0gVGltZSI7CiBsb2NhbGl6ZWRTdHJpbmdzWyJTdGFuZGFy
ZCBEZXZpYXRpb24iXSA9ICJTdGFuZGFyZCBEZXZpYXRpb24iOwogbG9jYWxpemVkU3RyaW5nc1si
VGltZSBieSBjYXRlZ29yeSJdID0gIlRpbWUgYnkgY2F0ZWdvcnkiOworbG9jYWxpemVkU3RyaW5n
c1siTGl2ZSBFZGl0Il0gPSAiTGl2ZSBFZGl0IjsKK2xvY2FsaXplZFN0cmluZ3NbIkxpdmUgZWRp
dCJdID0gIkxpdmUgZWRpdCI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5
cGkgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLmd5cGkKaW5kZXggYTI3N2IxNzU3NWE5NDM5ZGE2
NzJhYjc2YTZlNThlMDczOWExNTcyNS4uMjliYzFiOGNmNzBkNWU5OGE0MjE5OTNjM2VmZjc4NTE3
YjBhOWYyMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS5neXBpCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL1dlYkNvcmUuZ3lwaQpAQCAtNjM5OSw2ICs2Mzk5LDcgQEAKICAgICAgICAg
ICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVByZXNlbnRhdGlvblV0aWxzLmpzJywKICAgICAg
ICAgICAgICdpbnNwZWN0b3IvZnJvbnQtZW5kL0RPTVN0b3JhZ2UuanMnLAogICAgICAgICAgICAg
J2luc3BlY3Rvci9mcm9udC1lbmQvRE9NU3ludGF4SGlnaGxpZ2h0ZXIuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcuanMnLAogICAgICAg
ICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRG9ja0NvbnRyb2xsZXIuanMnLAogICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvRHJhd2VyLmpzJywKICAgICAgICAgICAgICdpbnNwZWN0
b3IvZnJvbnQtZW5kL0VsZW1lbnRzUGFuZWxEZXNjcmlwdG9yLmpzJywKQEAgLTY0MzAsNiArNjQz
MSw3IEBACiAgICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9qc2RpZmZsaWIuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvS2V5Ym9hcmRTaG9ydGN1dC5qcycsCiAg
ICAgICAgICAgICAnaW5zcGVjdG9yL2Zyb250LWVuZC9MaW5raWZpZXIuanMnLAorICAgICAgICAg
ICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzJywKICAgICAgICAgICAg
ICdpbnNwZWN0b3IvZnJvbnQtZW5kL05hdGl2ZUJyZWFrcG9pbnRzU2lkZWJhclBhbmUuanMnLAog
ICAgICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya01hbmFnZXIuanMnLAogICAg
ICAgICAgICAgJ2luc3BlY3Rvci9mcm9udC1lbmQvTmV0d29ya0xvZy5qcycsCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjcHJvai9XZWJDb3JlLnZjcHJvaiBiL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCmluZGV4IGUwMDQ4NDAzZGMzZTky
MmNjZWE4MjM5MTU5YWY1NjExZmJjZjcxY2YuLmMyYjVmMjlkYWNiMThkMTc4MWUyYWI2MzY1YzFj
YmQ5NDE3ZmI4ZTIgMTAwNzU1Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dl
YkNvcmUudmNwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmNwcm9qL1dlYkNvcmUu
dmNwcm9qCkBAIC03NjE2OSw2ICs3NjE2OSwxMCBAQAogCQkJCQk+CiAJCQkJPC9GaWxlPgogCQkJ
CTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZyb250LWVuZFxEZWZhdWx0
U2NyaXB0TWFwcGluZy5qcyIKKwkJCQkJPgorCQkJCTwvRmlsZT4KKwkJCQk8RmlsZQogCQkJCQlS
ZWxhdGl2ZVBhdGg9Ii4uXGluc3BlY3Rvclxmcm9udC1lbmRcRGVmYXVsdFRleHRFZGl0b3IuanMi
CiAJCQkJCT4KIAkJCQk8L0ZpbGU+CkBAIC03NjQ0MSw2ICs3NjQ0NSwxMCBAQAogCQkJCQk+CiAJ
CQkJPC9GaWxlPgogCQkJCTxGaWxlCisJCQkJCVJlbGF0aXZlUGF0aD0iLi5caW5zcGVjdG9yXGZy
b250LWVuZFxMaXZlRWRpdFN1cHBvcnQuanMiCisJCQkJCT4KKwkJCQk8L0ZpbGU+CisJCQkJPEZp
bGUKIAkJCQkJUmVsYXRpdmVQYXRoPSIuLlxpbnNwZWN0b3JcZnJvbnQtZW5kXE1ldHJpY3NTaWRl
YmFyUGFuZS5qcyIKIAkJCQkJPgogCQkJCTwvRmlsZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9jb21waWxlLWZyb250LWVuZC5weSBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9jb21waWxlLWZyb250LWVuZC5weQppbmRleCA2ZWFkYTQ3MWQ4NWU4YTVjNjNlZTMwZjM1
ZTJiNjBhYzg4MjEwYmZkLi4xMzNiY2NjNjllZjUzYTJhOWFkZmIwOWJiM2FkNDAyZjEzY2JmMzYy
IDEwMDc1NQotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvY29tcGlsZS1mcm9udC1lbmQu
cHkKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2NvbXBpbGUtZnJvbnQtZW5kLnB5CkBA
IC05Nyw3ICs5Nyw5IEBAIG1vZHVsZXMgPSBbCiAgICAgICAgICAgICAiVGltZWxpbmVNYW5hZ2Vy
LmpzIiwKICAgICAgICAgICAgICJSZW1vdGVPYmplY3QuanMiLAogICAgICAgICAgICAgIlJlc291
cmNlLmpzIiwKKyAgICAgICAgICAgICJEZWZhdWx0U2NyaXB0TWFwcGluZy5qcyIsCiAgICAgICAg
ICAgICAiUmVzb3VyY2VTY3JpcHRNYXBwaW5nLmpzIiwKKyAgICAgICAgICAgICJMaXZlRWRpdFN1
cHBvcnQuanMiLAogICAgICAgICAgICAgIlJlc291cmNlVHJlZU1vZGVsLmpzIiwKICAgICAgICAg
ICAgICJSZXNvdXJjZVR5cGUuanMiLAogICAgICAgICAgICAgIlJlc291cmNlVXRpbHMuanMiLApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50
TWFuYWdlci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQnJlYWtwb2lu
dE1hbmFnZXIuanMKaW5kZXggOTgyNTk1MDE1NjdhNzE2NWY0ZGZjYmU1OWM3YmFkY2Y4ZmQ1ZjI1
NC4uM2VjNGZhOGIyYWJhNDllYjE4NzJiMGQxZTkzOTZhMThhMjIwOTQ5YSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9CcmVha3BvaW50TWFuYWdlci5qcwor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0JyZWFrcG9pbnRNYW5hZ2Vy
LmpzCkBAIC01MCw3ICs1MCw2IEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlciA9IGZ1
bmN0aW9uKGJyZWFrcG9pbnRTdG9yYWdlLCBkZWJ1Z2dlck1vZGVsLCB3b3JrCiAgICAgdGhpcy5f
d29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMu
UHJvamVjdFdpbGxSZXNldCwgdGhpcy5fd29ya3NwYWNlUmVzZXQsIHRoaXMpOwogICAgIHRoaXMu
X3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGVQcm92
aWRlci5FdmVudHMuVUlTb3VyY2VDb2RlQWRkZWQsIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkLCB0
aGlzKTsKICAgICB0aGlzLl93b3Jrc3BhY2UuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3Iu
VUlTb3VyY2VDb2RlUHJvdmlkZXIuRXZlbnRzLlRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkLCB0
aGlzLl91aVNvdXJjZUNvZGVBZGRlZCwgdGhpcyk7Ci0gICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZVByb3ZpZGVyLkV2ZW50cy5UZW1w
b3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlzLl91aVNvdXJjZUNvZGVSZW1vdmVkLCB0aGlz
KTsKIH0KIAogV2ViSW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkV2ZW50cyA9IHsKQEAgLTYw
LDcgKzU5LDExIEBAIFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5FdmVudHMgPSB7CiAK
IFdlYkluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5zb3VyY2VGaWxlSWQgPSBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCiB7Ci0gICAgcmV0dXJuIHVpU291cmNlQ29kZS5mb3JtYXR0ZWQoKSA/ICJk
ZW9iZnVzY2F0ZWQ6IiArIHVpU291cmNlQ29kZS51cmwgOiB1aVNvdXJjZUNvZGUudXJsOworICAg
IGlmICghdWlTb3VyY2VDb2RlLnVybCkKKyAgICAgICAgcmV0dXJuICIiOworICAgIHZhciBpc1Rl
bXBvcmFyeVByZWZpeCA9IHVpU291cmNlQ29kZS5pc1RlbXBvcmFyeSA/ICJ0ZW1wb3Jhcnk6IiA6
ICIiOworICAgIHZhciBkZW9iZnVzY2F0ZWRQcmVmaXggPSB1aVNvdXJjZUNvZGUuZm9ybWF0dGVk
KCkgPyAiZGVvYmZ1c2NhdGVkOiIgOiAiIjsKKyAgICByZXR1cm4gaXNUZW1wb3JhcnlQcmVmaXgg
KyBkZW9iZnVzY2F0ZWRQcmVmaXggKyB1aVNvdXJjZUNvZGUudXJsOwogfQogCiBXZWJJbnNwZWN0
b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewpAQCAtMTA4LDM4ICsxMTEsNiBAQCBX
ZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIucHJvdG90eXBlID0gewogICAgIH0sCiAKICAg
ICAvKioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5FdmVudH0gZXZlbnQKLSAgICAgKi8K
LSAgICBfdWlTb3VyY2VDb2RlUmVtb3ZlZDogZnVuY3Rpb24oZXZlbnQpCi0gICAgewotICAgICAg
ICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
fSAqLyAoZXZlbnQuZGF0YSk7Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuY29udGVudFR5cGUo
KSAhPT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0ICYmIHVpU291cmNlQ29kZS5j
b250ZW50VHlwZSgpICE9PSBXZWJJbnNwZWN0b3IucmVzb3VyY2VUeXBlcy5Eb2N1bWVudCkKLSAg
ICAgICAgICAgIHJldHVybjsKLSAgICAgICAgaWYgKHVpU291cmNlQ29kZS5kaXZlcmdlZFZlcnNp
b24pCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAgICAgdmFyIHNvdXJjZUZpbGVJZCA9IFdl
Ykluc3BlY3Rvci5CcmVha3BvaW50TWFuYWdlci5zb3VyY2VGaWxlSWQodWlTb3VyY2VDb2RlKTsK
LSAgICAgICAgaWYgKCFzb3VyY2VGaWxlSWQpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAgICAg
ICAgdmFyIGJyZWFrcG9pbnRzID0gdGhpcy5fYnJlYWtwb2ludHMuc2xpY2UoKTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBicmVha3BvaW50cy5sZW5ndGg7ICsraSkgewotICAgICAgICAg
ICAgdmFyIGJyZWFrcG9pbnQgPSBicmVha3BvaW50c1tpXTsKLSAgICAgICAgICAgIGZvciAodmFy
IHN0cmluZ2lmaWVkTG9jYXRpb24gaW4gYnJlYWtwb2ludC5fdWlMb2NhdGlvbnMpIHsKLSAgICAg
ICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IGJyZWFrcG9pbnQuX3VpTG9jYXRpb25zW3N0cmlu
Z2lmaWVkTG9jYXRpb25dOwotICAgICAgICAgICAgICAgIGlmICh1aUxvY2F0aW9uLnVpU291cmNl
Q29kZSA9PT0gdWlTb3VyY2VDb2RlKQotICAgICAgICAgICAgICAgICAgICBicmVha3BvaW50LnJl
bW92ZSh0cnVlKTsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQotCi0gICAgICAgIGRlbGV0ZSB0
aGlzLl9zb3VyY2VGaWxlc1dpdGhSZXN0b3JlZEJyZWFrcG9pbnRzW3NvdXJjZUZpbGVJZF07Ci0K
LSAgICAgICAgdmFyIHVpU291cmNlQ29kZXMgPSB0aGlzLl93b3Jrc3BhY2UudWlTb3VyY2VDb2Rl
cygpOwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHVpU291cmNlQ29kZXMubGVuZ3RoOyAr
K2kpCi0gICAgICAgICAgICB0aGlzLl9yZXN0b3JlQnJlYWtwb2ludHModWlTb3VyY2VDb2Rlc1tp
XSk7Ci0gICAgfSwKLQotICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICogQHBhcmFtIHtudW1iZXJ9IGxpbmVOdW1iZXIK
ICAgICAgKiBAcGFyYW0ge3N0cmluZ30gY29uZGl0aW9uCkBAIC01MzQsNiArNTA1LDggQEAgV2Vi
SW5zcGVjdG9yLkJyZWFrcG9pbnRNYW5hZ2VyLkJyZWFrcG9pbnQucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9icmVha3BvaW50U3RvcmFnZUlkOiBmdW5jdGlvbigpCiAgICAgeworICAgICAg
ICBpZiAoIXRoaXMuX3NvdXJjZUZpbGVJZCkKKyAgICAgICAgICAgIHJldHVybiAiIjsKICAgICAg
ICAgcmV0dXJuIHRoaXMuX3NvdXJjZUZpbGVJZCArICI6IiArIHRoaXMuX3ByaW1hcnlVSUxvY2F0
aW9uLmxpbmVOdW1iZXI7CiAgICAgfSwKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9Db21waWxlclNjcmlwdE1hcHBpbmcuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwppbmRleCBlNzAz
MDY2OTUzYWE2ZjI0ZDMxM2FkNjQ0ZTg5NWVmYTRiNDUzNjlkLi41YWEzM2IyMmQzMTAyYWYzMjcx
OWUxNzIzMDNjNTA0ZjhkMjE2ZjQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NvbXBpbGVyU2NyaXB0TWFwcGluZy5qcwpAQCAtNDUsOSAr
NDUsNiBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nID0gZnVuY3Rpb24od29y
a3NwYWNlLCBuZXR3b3JrV29ya3NwYWNlUHJvdmlkZQogICAgIHRoaXMuX3NjcmlwdEZvclNvdXJj
ZU1hcCA9IG5ldyBNYXAoKTsKICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNw
ZWN0b3IuU291cmNlTWFwUGFyc2VyPn0gKi8KICAgICB0aGlzLl9zb3VyY2VNYXBGb3JVUkwgPSB7
fTsKLSAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlPn0gKi8KLSAgICB0aGlzLl9vcmlnaW5hbFVJU291cmNlQ29kZUZvclNjcmlwdElkID0ge307
Ci0gICAgdGhpcy5fc2NyaXB0Rm9yT3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CiAg
ICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFj
ZS5FdmVudHMuUHJvamVjdFdpbGxSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwogfQogCkBAIC02
MywxMCArNjAsOCBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlw
ZSA9IHsKICAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBkZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGlu
ZU51bWJlcjsKICAgICAgICAgdmFyIGNvbHVtbk51bWJlciA9IGRlYnVnZ2VyTW9kZWxMb2NhdGlv
bi5jb2x1bW5OdW1iZXIgfHwgMDsKICAgICAgICAgdmFyIGVudHJ5ID0gc291cmNlTWFwLmZpbmRF
bnRyeShsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpOwotICAgICAgICBpZiAoZW50cnkubGVuZ3Ro
ID09PSAyKSB7Ci0gICAgICAgICAgICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5f
b3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2Ny
aXB0SWRdOwotICAgICAgICAgICAgcmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih0
ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGVudHJ5Lmxlbmd0aCA9PT0gMikKKyAgICAgICAgICAgIHJldHVybiBu
dWxsOwogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLnVpU291cmNl
Q29kZUZvclVSTChlbnRyeVsyXSk7CiAgICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJ
TG9jYXRpb24odWlTb3VyY2VDb2RlLCBlbnRyeVszXSwgZW50cnlbNF0pOwogICAgIH0sCkBAIC03
OSw5ICs3NCw2IEBAIFdlYkluc3BlY3Rvci5Db21waWxlclNjcmlwdE1hcHBpbmcucHJvdG90eXBl
ID0gewogICAgICAqLwogICAgIHVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciBz
Y3JpcHQgPSB0aGlzLl9zY3JpcHRGb3JPcmlnaW5hbFVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VD
b2RlKTsKLSAgICAgICAgaWYgKHNjcmlwdCkKLSAgICAgICAgICAgIHJldHVybiBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2NhdGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNv
bHVtbk51bWJlcik7CiAgICAgICAgIHZhciBzb3VyY2VNYXAgPSB0aGlzLl9zb3VyY2VNYXBGb3JV
UkxbdWlTb3VyY2VDb2RlLnVybF07CiAgICAgICAgIHZhciBlbnRyeSA9IHNvdXJjZU1hcC5maW5k
RW50cnlSZXZlcnNlZCh1aVNvdXJjZUNvZGUudXJsLCBsaW5lTnVtYmVyKTsKICAgICAgICAgcmV0
dXJuIFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLmNyZWF0ZVJhd0xvY2F0aW9uKHRoaXMuX3Nj
cmlwdEZvclNvdXJjZU1hcC5nZXQoc291cmNlTWFwKSwgZW50cnlbMF0sIGVudHJ5WzFdKTsKQEAg
LTkyLDE4ICs4NCwxMSBAQCBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3Rv
dHlwZSA9IHsKICAgICAgKi8KICAgICBhZGRTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKICAgICB7
Ci0gICAgICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgb25seSBjcmVhdGUgdGVtcG9yYXJ5IHVpU291
cmNlQ29kZXMgb24gZGVtYW5kIGFuZCBzaG91bGQgc2V0IHRoaXMgYXMgYSBtYXBwaW5nIHRvIAot
ICAgICAgICAvLyByZWxldmFudCB1aVNvdXJjZUNvZGVzIGFkZGVkIGJ5IE5ldHdvcmtVSVNvdXJj
ZUNvZGVQcm92aWRlci4KLSAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdGhpcy5f
d29ya3NwYWNlLmFkZFRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQuc291cmNlVVJMLCBzY3Jp
cHQsIGZhbHNlKTsKLSAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGlu
Zyh0aGlzKTsKLSAgICAgICAgdGhpcy5fb3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtz
Y3JpcHQuc2NyaXB0SWRdID0gb3JpZ2luYWxVSVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuX3Nj
cmlwdEZvck9yaWdpbmFsVUlTb3VyY2VDb2RlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwgc2Ny
aXB0KTsKLQogICAgICAgICB2YXIgc291cmNlTWFwID0gdGhpcy5sb2FkU291cmNlTWFwRm9yU2Ny
aXB0KHNjcmlwdCk7CiAKICAgICAgICAgaWYgKHRoaXMuX3NjcmlwdEZvclNvdXJjZU1hcC5nZXQo
c291cmNlTWFwKSkgewogICAgICAgICAgICAgdGhpcy5fc291cmNlTWFwRm9yU2NyaXB0SWRbc2Ny
aXB0LnNjcmlwdElkXSA9IHNvdXJjZU1hcDsKLSAgICAgICAgICAgIHNjcmlwdC5zZXRTb3VyY2VN
YXBwaW5nKHRoaXMpOworICAgICAgICAgICAgc2NyaXB0LnB1c2hTb3VyY2VNYXBwaW5nKHRoaXMp
OwogICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICB9CiAKQEAgLTEyNyw3ICsxMTIsNyBAQCBX
ZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKIAogICAgICAg
ICB0aGlzLl9zb3VyY2VNYXBGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdID0gc291cmNlTWFw
OwogICAgICAgICB0aGlzLl9zY3JpcHRGb3JTb3VyY2VNYXAucHV0KHNvdXJjZU1hcCwgc2NyaXB0
KTsKLSAgICAgICAgc2NyaXB0LnNldFNvdXJjZU1hcHBpbmcodGhpcyk7CisgICAgICAgIHNjcmlw
dC5wdXNoU291cmNlTWFwcGluZyh0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0xNjIsOCAr
MTQ3LDYgQEAgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7
CiAgICAgICAgIHRoaXMuX3NvdXJjZU1hcEZvclNjcmlwdElkID0ge307CiAgICAgICAgIHRoaXMu
X3NjcmlwdEZvclNvdXJjZU1hcCA9IG5ldyBNYXAoKTsKICAgICAgICAgdGhpcy5fc291cmNlTWFw
Rm9yVVJMID0ge307Ci0gICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0
SWQgPSB7fTsKLSAgICAgICAgdGhpcy5fc2NyaXB0Rm9yT3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBu
ZXcgTWFwKCk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL0RlYnVnZ2VyTW9kZWwuanMKaW5kZXggZDU4ZGEwZWRiNzNiMTI1ZjZkMDQ1NTEw
MzBmNzgzZjg5MDcxNjhjOS4uNjcyNDI1YWM2MDk5ZWFlZDQwNmUxNzI2ZTg1ZDY4YWQ0NmUwMDFk
OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9EZWJ1Z2dl
ck1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdn
ZXJNb2RlbC5qcwpAQCAtMzc3LDYgKzM3NywxNSBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2Rl
bC5wcm90b3R5cGUgPSB7CiAgICAgX3BhcnNlZFNjcmlwdFNvdXJjZTogZnVuY3Rpb24oc2NyaXB0
SWQsIHNvdXJjZVVSTCwgc3RhcnRMaW5lLCBzdGFydENvbHVtbiwgZW5kTGluZSwgZW5kQ29sdW1u
LCBpc0NvbnRlbnRTY3JpcHQsIHNvdXJjZU1hcFVSTCwgaGFzU291cmNlVVJMKQogICAgIHsKICAg
ICAgICAgdmFyIHNjcmlwdCA9IG5ldyBXZWJJbnNwZWN0b3IuU2NyaXB0KHNjcmlwdElkLCBzb3Vy
Y2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZExpbmUsIGVuZENvbHVtbiwgaXNDb250
ZW50U2NyaXB0LCBzb3VyY2VNYXBVUkwsIGhhc1NvdXJjZVVSTCk7CisgICAgICAgIGlmICghc2Ny
aXB0LmlzQW5vbnltb3VzU2NyaXB0KCkgJiYgIXNjcmlwdC5pc0lubGluZVNjcmlwdCgpKSB7Cisg
ICAgICAgICAgICB2YXIgZXhpc3RpbmdTY3JpcHRzID0gdGhpcy5fc2NyaXB0c0J5U291cmNlVVJM
W3NjcmlwdC5zb3VyY2VVUkxdIHx8IFtdOworICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBleGlzdGluZ1NjcmlwdHMubGVuZ3RoOyArK2kpIHsKKyAgICAgICAgICAgICAgICBpZiAoZXhp
c3RpbmdTY3JpcHRzW2ldLmlzSW5saW5lU2NyaXB0KCkpIHsKKyAgICAgICAgICAgICAgICAgICAg
c2NyaXB0LnNldElzRHluYW1pY1NjcmlwdCh0cnVlKTsgCisgICAgICAgICAgICAgICAgICAgIGJy
ZWFrOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfQogICAgICAg
ICB0aGlzLl9yZWdpc3RlclNjcmlwdChzY3JpcHQpOwogICAgICAgICB0aGlzLmRpc3BhdGNoRXZl
bnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3IuRGVidWdnZXJNb2RlbC5FdmVudHMuUGFyc2VkU2Ny
aXB0U291cmNlLCBzY3JpcHQpOwogICAgIH0sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL0RlYnVnZ2VyU2NyaXB0TWFwcGluZy5qcyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCmluZGV4IGNl
ODA1YzQyMmIxNTI1Y2UzMTg1Mzg5MTcwM2JjYmZmNzJhNGUzMTQuLjhmODhiOWQ4YjYwYTRjZjM0
NjMwZjg0YTg1N2E1MTdiYzRjNzI0MWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVidWdnZXJTY3JpcHRNYXBwaW5nLmpzCkBAIC0zNSw2
ICszNSw3IEBACiAgKi8KIFdlYkluc3BlY3Rvci5EZWJ1Z2dlclNjcmlwdE1hcHBpbmcgPSBmdW5j
dGlvbih3b3Jrc3BhY2UsIG5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcikKIHsKKyAgICB0aGlzLl9k
ZWZhdWx0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuRGVmYXVsdFNjcmlwdE1hcHBpbmcod29y
a3NwYWNlKTsKICAgICB0aGlzLl9yZXNvdXJjZU1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJl
c291cmNlU2NyaXB0TWFwcGluZyh3b3Jrc3BhY2UpOwogICAgIHRoaXMuX2NvbXBpbGVyTWFwcGlu
ZyA9IG5ldyBXZWJJbnNwZWN0b3IuQ29tcGlsZXJTY3JpcHRNYXBwaW5nKHdvcmtzcGFjZSwgbmV0
d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKICAgICB0aGlzLl9zbmlwcGV0TWFwcGluZyA9IFdlYklu
c3BlY3Rvci5zY3JpcHRTbmlwcGV0TW9kZWwuc2NyaXB0TWFwcGluZzsKQEAgLTUwLDI0ICs1MSwx
OCBAQCBXZWJJbnNwZWN0b3IuRGVidWdnZXJTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAg
ICBfcGFyc2VkU2NyaXB0U291cmNlOiBmdW5jdGlvbihldmVudCkKICAgICB7CiAgICAgICAgIHZh
ciBzY3JpcHQgPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5TY3JpcHR9ICovIChldmVudC5kYXRh
KTsKLSAgICAgICAgdmFyIG1hcHBpbmcgPSB0aGlzLl9tYXBwaW5nRm9yU2NyaXB0KHNjcmlwdCk7
Ci0gICAgICAgIG1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7Ci0gICAgfSwKKyAgICAgICAgdGhp
cy5fZGVmYXVsdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAKLSAgICAvKioKLSAgICAgKiBA
cGFyYW0ge1dlYkluc3BlY3Rvci5TY3JpcHR9IHNjcmlwdAotICAgICAqIEByZXR1cm4ge1dlYklu
c3BlY3Rvci5TY3JpcHRTb3VyY2VNYXBwaW5nfQotICAgICAqLwotICAgIF9tYXBwaW5nRm9yU2Ny
aXB0OiBmdW5jdGlvbihzY3JpcHQpCi0gICAgewotICAgICAgICBpZiAoV2ViSW5zcGVjdG9yLmV4
cGVyaW1lbnRzU2V0dGluZ3Muc25pcHBldHNTdXBwb3J0LmlzRW5hYmxlZCgpICYmIHNjcmlwdC5p
c1NuaXBwZXQoKSkKLSAgICAgICAgICAgIHJldHVybiB0aGlzLl9zbmlwcGV0TWFwcGluZzsKKyAg
ICAgICAgaWYgKFdlYkluc3BlY3Rvci5leHBlcmltZW50c1NldHRpbmdzLnNuaXBwZXRzU3VwcG9y
dC5pc0VuYWJsZWQoKSAmJiBzY3JpcHQuaXNTbmlwcGV0KCkpIHsKKyAgICAgICAgICAgIHRoaXMu
X3NuaXBwZXRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisKKyAgICAgICAgdGhpcy5fcmVzb3VyY2VNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQpOwogCiAgICAgICAgIGlmIChXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc291cmNlTWFwc0VuYWJs
ZWQuZ2V0KCkgJiYgc2NyaXB0LnNvdXJjZU1hcFVSTCkgewogICAgICAgICAgICAgaWYgKHRoaXMu
X2NvbXBpbGVyTWFwcGluZy5sb2FkU291cmNlTWFwRm9yU2NyaXB0KHNjcmlwdCkpCi0gICAgICAg
ICAgICAgICAgcmV0dXJuIHRoaXMuX2NvbXBpbGVyTWFwcGluZzsKKyAgICAgICAgICAgICAgICB0
aGlzLl9jb21waWxlck1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgIH0KLQotICAg
ICAgICByZXR1cm4gdGhpcy5fcmVzb3VyY2VNYXBwaW5nOwogICAgIH0KIH0KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRGVmYXVsdFNjcmlwdE1hcHBpbmcu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0RlZmF1bHRTY3JpcHRNYXBw
aW5nLmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLjEyYjVkYTE5NTQ1ZTFiNzFlNWZhOTlmMDA2Y2I3ZjExNzQ5YTI3
MzAKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0RlZmF1bHRTY3JpcHRNYXBwaW5nLmpzCkBAIC0wLDAgKzEsMTAyIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVk
aXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3
aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUg
Zm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6CisgKgorICogICAgICogUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIKKyAqIGluIHRoZSBkb2N1bWVudGF0aW9u
IGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlv
bi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2YgR29vZ2xlIEluYy4gbm9yIHRoZSBuYW1l
cyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21v
dGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lm
aWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMKKyAqICJBUyBJ
UyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQg
Tk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJ
TElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElDVUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJ
TUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUCisgKiBPV05FUiBPUiBDT05UUklC
VVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwKKyAq
IFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcs
IEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMg
T1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5F
U1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZCisgKiBUSEVPUlkgT0Yg
TElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JU
CisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBX
QVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBP
RiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworLyoqCisgKiBAY29uc3Ry
dWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuU2NyaXB0U291cmNlTWFwcGluZ30K
KyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldvcmtzcGFjZX0gd29ya3NwYWNlCisgKi8KK1dlYklu
c3BlY3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZyA9IGZ1bmN0aW9uKHdvcmtzcGFjZSkKK3sKKyAg
ICB0aGlzLl93b3Jrc3BhY2UgPSB3b3Jrc3BhY2U7CisgICAgdGhpcy5fd29ya3NwYWNlLmFkZEV2
ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLldvcmtzcGFjZS5FdmVudHMuUHJvamVjdFdpbGxSZXNl
dCwgdGhpcy5fcmVzZXQsIHRoaXMpOworICAgIHRoaXMuX3Jlc2V0KCk7Cit9CisKK1dlYkluc3Bl
Y3Rvci5EZWZhdWx0U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICog
QHBhcmFtIHtXZWJJbnNwZWN0b3IuUmF3TG9jYXRpb259IHJhd0xvY2F0aW9uCisgICAgICogQHJl
dHVybiB7V2ViSW5zcGVjdG9yLlVJTG9jYXRpb259CisgICAgICovCisgICAgcmF3TG9jYXRpb25U
b1VJTG9jYXRpb246IGZ1bmN0aW9uKHJhd0xvY2F0aW9uKQorICAgIHsKKyAgICAgICAgdmFyIGRl
YnVnZ2VyTW9kZWxMb2NhdGlvbiA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9k
ZWwuTG9jYXRpb259ICovIChyYXdMb2NhdGlvbik7CisgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJ
bnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChkZWJ1Z2dlck1vZGVsTG9jYXRpb24u
c2NyaXB0SWQpOworICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fdWlTb3VyY2VDb2Rl
Rm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgdmFyIGxpbmVOdW1iZXIgPSBk
ZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGluZU51bWJlcjsKKyAgICAgICAgdmFyIGNvbHVtbk51bWJl
ciA9IGRlYnVnZ2VyTW9kZWxMb2NhdGlvbi5jb2x1bW5OdW1iZXIgfHwgMDsKKyAgICAgICAgcmV0
dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICogQHBhcmFtIHtudW1iZXJ9
IGxpbmVOdW1iZXIKKyAgICAgKiBAcGFyYW0ge251bWJlcn0gY29sdW1uTnVtYmVyCisgICAgICog
QHJldHVybiB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259CisgICAgICovCisg
ICAgdWlMb2NhdGlvblRvUmF3TG9jYXRpb246IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgbGluZU51
bWJlciwgY29sdW1uTnVtYmVyKQorICAgIHsKKyAgICAgICAgdmFyIHNjcmlwdElkID0gdGhpcy5f
c2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciBz
Y3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRGb3JJZChzY3JpcHRJZCk7
CisgICAgICAgIHJldHVybiBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5jcmVhdGVSYXdMb2Nh
dGlvbihzY3JpcHQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcik7CisgICAgfSwKKworICAgIC8q
KgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNjcmlwdH0gc2NyaXB0CisgICAgICovCisg
ICAgYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHQpCisgICAgeworICAgICAgICB2YXIgY29udGVu
dFByb3ZpZGVyID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgPyBuZXcgV2ViSW5zcGVjdG9yLkNv
bmNhdGVuYXRlZFNjcmlwdHNDb250ZW50UHJvdmlkZXIoW3NjcmlwdF0pIDogc2NyaXB0OworICAg
ICAgICB2YXIgdWlTb3VyY2VDb2RlID0gdGhpcy5fd29ya3NwYWNlLmFkZFRlbXBvcmFyeVVJU291
cmNlQ29kZShzY3JpcHQuc291cmNlVVJMLCBjb250ZW50UHJvdmlkZXIsIGZhbHNlKTsKKyAgICAg
ICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291
cmNlQ29kZTsKKyAgICAgICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUucHV0KHVpU291
cmNlQ29kZSwgc2NyaXB0LnNjcmlwdElkKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJj
ZU1hcHBpbmcodGhpcyk7CisgICAgICAgIHNjcmlwdC5wdXNoU291cmNlTWFwcGluZyh0aGlzKTsK
KyAgICAgICAgc2NyaXB0LmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNjcmlwdC5FdmVu
dHMuU2NyaXB0RWRpdGVkLCB0aGlzLl9zY3JpcHRFZGl0ZWQuYmluZCh0aGlzLCBzY3JpcHQuc2Ny
aXB0SWQpKTsKKyAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICB9LAorCisgICAgLyoq
CisgICAgICogQHBhcmFtIHtzdHJpbmd9IHNjcmlwdElkCisgICAgICogQHBhcmFtIHtXZWJJbnNw
ZWN0b3IuRXZlbnR9IGV2ZW50CisgICAgICovCisgICAgX3NjcmlwdEVkaXRlZDogZnVuY3Rpb24o
c2NyaXB0SWQsIGV2ZW50KQorICAgIHsKKyAgICAgICAgdmFyIGNvbnRlbnQgPSAvKiogQHR5cGUg
e3N0cmluZ30gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2Ny
aXB0SWRbc2NyaXB0SWRdLmFkZFJldmlzaW9uKGNvbnRlbnQpOworICAgIH0sCisKKyAgICBfcmVz
ZXQ6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIC8qKiBAdHlwZSB7T2JqZWN0LjxzdHJpbmcs
IFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSAqLworICAgICAgICB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZCA9IHt9OworICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29k
ZSA9IG5ldyBNYXAoKTsKKyAgICB9LAorfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9KYXZhU2NyaXB0U291cmNlRnJhbWUuanMgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwppbmRleCAzMjEw
YzNhOGY1MWFjNGIwNDcwYzA1YWIwOGRiMDUwMjQ2ZWU0OWViLi5kZTU1YTMwZjI2NzJjMDU2ZWEx
MGM2N2Q4ODRjNmFkZTdjY2MxNTBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0phdmFTY3JpcHRTb3VyY2VGcmFtZS5qcwpAQCAtMTY3LDYg
KzE2NywxOCBAQCBXZWJJbnNwZWN0b3IuSmF2YVNjcmlwdFNvdXJjZUZyYW1lLnByb3RvdHlwZSA9
IHsKICAgICAgICAgICAgIHZhciBldmFsdWF0ZUxhYmVsID0gV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KFdlYkluc3BlY3Rvci51c2VMb3dlckNhc2VNZW51VGl0bGVzKCkgPyAiRXZhbHVhdGUgaW4gY29u
c29sZSIgOiAiRXZhbHVhdGUgaW4gQ29uc29sZSIpOwogICAgICAgICAgICAgY29udGV4dE1lbnUu
YXBwZW5kSXRlbShldmFsdWF0ZUxhYmVsLCBXZWJJbnNwZWN0b3IuZXZhbHVhdGVJbkNvbnNvbGUu
YmluZChXZWJJbnNwZWN0b3IsIHNlbGVjdGlvbi50b1N0cmluZygpKSk7CiAgICAgICAgICAgICBj
b250ZXh0TWVudS5hcHBlbmRTZXBhcmF0b3IoKTsKKyAgICAgICAgfSBlbHNlIGlmICghdGhpcy5f
dWlTb3VyY2VDb2RlLmlzRWRpdGFibGUoKSAmJiB0aGlzLl91aVNvdXJjZUNvZGUuY29udGVudFR5
cGUoKSA9PT0gV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0KSB7CisgICAgICAgICAg
ICBmdW5jdGlvbiBsaXZlRWRpdChldmVudCkKKyAgICAgICAgICAgIHsKKyAgICAgICAgICAgICAg
ICB2YXIgbGl2ZUVkaXRVSVNvdXJjZUNvZGUgPSBXZWJJbnNwZWN0b3IubGl2ZUVkaXRTdXBwb3J0
LnVpU291cmNlQ29kZUZvckxpdmVFZGl0KHRoaXMuX3VpU291cmNlQ29kZSk7CisgICAgICAgICAg
ICAgICAgdGhpcy5fc2NyaXB0c1BhbmVsLnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNvdXJj
ZUNvZGUsIGxpbmVOdW1iZXIpCisgICAgICAgICAgICB9CisKKyAgICAgICAgICAgIC8vIEZJWE1F
OiBDaGFuZ2UgY29uZGl0aW9uIGFib3ZlIHRvIGV4cGxpY2l0bHkgY2hlY2sgdGhhdCBjdXJyZW50
IHVpU291cmNlQ29kZSBpcyBjcmVhdGVkIGJ5IGRlZmF1bHQgZGVidWdnZXIgbWFwcGluZworICAg
ICAgICAgICAgLy8gYW5kIG1vdmUgdGhlIGNvZGUgYWRkaW5nIHRoaXMgbWVudSBpdGVtIHRvIGdl
bmVyaWMgY29udGV4dCBtZW51IHByb3ZpZGVyIGZvciBVSVNvdXJjZUNvZGUuCisgICAgICAgICAg
ICB2YXIgbGl2ZUVkaXRMYWJlbCA9IFdlYkluc3BlY3Rvci5VSVN0cmluZyhXZWJJbnNwZWN0b3Iu
dXNlTG93ZXJDYXNlTWVudVRpdGxlcygpID8gIkxpdmUgZWRpdCIgOiAiTGl2ZSBFZGl0Iik7Cisg
ICAgICAgICAgICBjb250ZXh0TWVudS5hcHBlbmRJdGVtKGxpdmVFZGl0TGFiZWwsIGxpdmVFZGl0
LmJpbmQodGhpcykpOworICAgICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kU2VwYXJhdG9yKCk7
CiAgICAgICAgIH0KICAgICAgICAgY29udGV4dE1lbnUuYXBwZW5kQXBwbGljYWJsZUl0ZW1zKHRo
aXMuX3VpU291cmNlQ29kZSk7CiAgICAgfSwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzIGIvU291cmNlL1dlYkNvcmUvaW5z
cGVjdG9yL2Zyb250LWVuZC9MaXZlRWRpdFN1cHBvcnQuanMKbmV3IGZpbGUgbW9kZSAxMDA2NDQK
aW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uNWE3ZjNhNzg4
ZDc4MGY2M2FhNTI3ZWE4NmMxNjE3MTRkM2NmZjkyZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTGl2ZUVkaXRTdXBwb3J0LmpzCkBAIC0wLDAg
KzEsMTMxIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDEyIEdvb2dsZSBJbmMuIEFsbCByaWdo
dHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5k
IGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJt
aXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlCisgKiBtZXQ6
CisgKgorICogICAgICogUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMg
YW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqICAgICAqIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUKKyAqIGNvcHlyaWdodCBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIK
KyAqIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUKKyAqIGRpc3RyaWJ1dGlvbi4KKyAqICAgICAqIE5laXRoZXIgdGhlIG5hbWUgb2Yg
R29vZ2xlIEluYy4gbm9yIHRoZSBuYW1lcyBvZiBpdHMKKyAqIGNvbnRyaWJ1dG9ycyBtYXkgYmUg
dXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZCBmcm9tCisgKiB0aGlz
IHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorICoK
KyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFO
RCBDT05UUklCVVRPUlMKKyAqICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FS
UkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UCisgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBX
QVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IKKyAqIEEgUEFSVElD
VUxBUiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJ
R0hUCisgKiBPV05FUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwKKyAqIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QKKyAqIExJTUlURUQgVE8sIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLAorICogREFU
QSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZCisgKiBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLldv
cmtzcGFjZX0gd29ya3NwYWNlCisgKi8KK1dlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQgPSBm
dW5jdGlvbih3b3Jrc3BhY2UpCit7CisgICAgdGhpcy5fd29ya3NwYWNlID0gd29ya3NwYWNlOwor
ICAgIHRoaXMuX3dvcmtzcGFjZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Xb3Jrc3Bh
Y2UuRXZlbnRzLlByb2plY3RXaWxsUmVzZXQsIHRoaXMuX3Jlc2V0LCB0aGlzKTsKKyAgICB0aGlz
Ll9yZXNldCgpOworfQorCitXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTdXBwb3J0LnByb3RvdHlwZSA9
IHsKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVp
U291cmNlQ29kZQorICAgICAqIEByZXR1cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9Cisg
ICAgICovCisgICAgdWlTb3VyY2VDb2RlRm9yTGl2ZUVkaXQ6IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSkKKyAgICB7CisgICAgICAgIHZhciByYXdMb2NhdGlvbiA9IHVpU291cmNlQ29kZS51aUxvY2F0
aW9uVG9SYXdMb2NhdGlvbigwLCAwKTsKKyAgICAgICAgdmFyIGRlYnVnZ2VyTW9kZWxMb2NhdGlv
biA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb259ICovIChy
YXdMb2NhdGlvbik7CisgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0b3IuZGVidWdnZXJN
b2RlbC5zY3JpcHRGb3JJZChkZWJ1Z2dlck1vZGVsTG9jYXRpb24uc2NyaXB0SWQpOworICAgICAg
ICB2YXIgdWlMb2NhdGlvbiA9IHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCAwKTsK
KworICAgICAgICAvLyBGSVhNRTogU3VwcG9ydCBsaXZlIGVkaXRpbmcgb2Ygc2NyaXB0cyBtYXBw
ZWQgdG8gc29tZSBmaWxlLgorICAgICAgICBpZiAodWlMb2NhdGlvbi51aVNvdXJjZUNvZGUgIT09
IHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uLnVpU291cmNlQ29k
ZTsKKyAgICAgICAgaWYgKHRoaXMuX3VpU291cmNlQ29kZUZvclNjcmlwdElkW3NjcmlwdC5zY3Jp
cHRJZF0pCisgICAgICAgICAgICByZXR1cm4gdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWRb
c2NyaXB0LnNjcmlwdElkXTsKKyAgICAgICAgCisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCFzY3Jp
cHQuaXNJbmxpbmVTY3JpcHQoKSk7CisgICAgICAgIHZhciBsaXZlRWRpdFVJU291cmNlQ29kZSA9
IHRoaXMuX3dvcmtzcGFjZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLnVy
bCwgc2NyaXB0LCB0cnVlKTsKKyAgICAgICAgbGl2ZUVkaXRVSVNvdXJjZUNvZGUuc2V0U2NyaXB0
RmlsZShuZXcgV2ViSW5zcGVjdG9yLkxpdmVFZGl0U2NyaXB0RmlsZSh1aVNvdXJjZUNvZGUsIGxp
dmVFZGl0VUlTb3VyY2VDb2RlLCBzY3JpcHQuc2NyaXB0SWQpKTsKKyAgICAgICAgdGhpcy5fdWlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IGxpdmVFZGl0VUlTb3VyY2VD
b2RlOworICAgICAgICB0aGlzLl9zY3JpcHRJZEZvclVJU291cmNlQ29kZS5wdXQobGl2ZUVkaXRV
SVNvdXJjZUNvZGUsIHNjcmlwdC5zY3JpcHRJZCk7CisgICAgICAgIHJldHVybiBsaXZlRWRpdFVJ
U291cmNlQ29kZTsKKyAgICB9LAorCisgICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICAvKiogQHR5cGUge09iamVjdC48c3RyaW5nLCBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2Rl
Pn0gKi8KKyAgICAgICAgdGhpcy5fdWlTb3VyY2VDb2RlRm9yU2NyaXB0SWQgPSB7fTsKKyAgICAg
ICAgdGhpcy5fc2NyaXB0SWRGb3JVSVNvdXJjZUNvZGUgPSBuZXcgTWFwKCk7CisgICAgfSwKK30K
KworLyoqCisgKiBAY29uc3RydWN0b3IKKyAqIEBpbXBsZW1lbnRzIHtXZWJJbnNwZWN0b3IuU2Ny
aXB0RmlsZX0KKyAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuT2JqZWN0fQorICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7V2ViSW5z
cGVjdG9yLlVJU291cmNlQ29kZX0gbGl2ZUVkaXRVSVNvdXJjZUNvZGUKKyAqIEBwYXJhbSB7c3Ry
aW5nfSBzY3JpcHRJZAorICovCitXZWJJbnNwZWN0b3IuTGl2ZUVkaXRTY3JpcHRGaWxlID0gZnVu
Y3Rpb24odWlTb3VyY2VDb2RlLCBsaXZlRWRpdFVJU291cmNlQ29kZSwgc2NyaXB0SWQpCit7Cisg
ICAgV2ViSW5zcGVjdG9yLlNjcmlwdEZpbGUuY2FsbCh0aGlzKTsKKyAgICB0aGlzLl91aVNvdXJj
ZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgdGhpcy5fbGl2ZUVkaXRVSVNvdXJjZUNvZGUgPSBs
aXZlRWRpdFVJU291cmNlQ29kZTsKKyAgICB0aGlzLl9zY3JpcHRJZCA9IHNjcmlwdElkOworICAg
IHRoaXMuX2xpdmVFZGl0VUlTb3VyY2VDb2RlLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZS5FdmVudHMuV29ya2luZ0NvcHlDb21taXR0ZWQsIHRoaXMuX3dvcmtpbmdD
b3B5Q29tbWl0dGVkLCB0aGlzKTsKK30KKworV2ViSW5zcGVjdG9yLkxpdmVFZGl0U2NyaXB0Rmls
ZS5wcm90b3R5cGUgPSB7CisgICAgX3dvcmtpbmdDb3B5Q29tbWl0dGVkOiBmdW5jdGlvbihldmVu
dCkKKyAgICB7CisgICAgICAgIC8qKgorICAgICAgICAgKiBAcGFyYW0gez9zdHJpbmd9IGVycm9y
CisgICAgICAgICAqLworICAgICAgICBmdW5jdGlvbiBpbm5lckNhbGxiYWNrKGVycm9yKQorICAg
ICAgICB7CisgICAgICAgICAgICBpZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBXZWJJbnNw
ZWN0b3Iuc2hvd0Vycm9yTWVzc2FnZShlcnJvcik7CisgICAgICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICAgICAgfQorICAgICAgICB9CisKKyAgICAgICAgdmFyIHNjcmlwdCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKHRoaXMuX3NjcmlwdElkKTsKKyAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuc2V0U2NyaXB0U291cmNlKHNjcmlwdC5zY3JpcHRJ
ZCwgdGhpcy5fbGl2ZUVkaXRVSVNvdXJjZUNvZGUud29ya2luZ0NvcHkoKSwgaW5uZXJDYWxsYmFj
ay5iaW5kKHRoaXMpKTsKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHJldHVybiB7Ym9vbGVh
bn0KKyAgICAgKi8KKyAgICBoYXNEaXZlcmdlZEZyb21WTTogZnVuY3Rpb24oKQorICAgIHsKKyAg
ICAgICAgcmV0dXJuIHRydWU7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEByZXR1cm4ge2Jv
b2xlYW59CisgICAgICovCisgICAgaXNEaXZlcmdpbmdGcm9tVk06IGZ1bmN0aW9uKCkKKyAgICB7
CisgICAgICAgIHJldHVybiBmYWxzZTsKKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNw
ZWN0b3IuT2JqZWN0LnByb3RvdHlwZQorfQorCisvKiogQHR5cGUge1dlYkluc3BlY3Rvci5MaXZl
RWRpdFN1cHBvcnR9ICovCitXZWJJbnNwZWN0b3IubGl2ZUVkaXRTdXBwb3J0ID0gbnVsbDsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvUmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKaW5kZXggMDBmMTFjMjE1NTU0MzE0YjdlZWJlOTM3M2Q5ZTFiNjIz
YzNkY2NlZi4uMmZiYTM4NjYyZDU3MWY3ODg4NGZhZTY4MGI0OTQwZWU0MjNjNzExMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJjZVNjcmlwdE1h
cHBpbmcuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9SZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuanMKQEAgLTUxLDQ3ICs1MSwxMCBAQCBXZWJJbnNwZWN0b3IuUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nLnByb3RvdHlwZSA9IHsKICAgICB7CiAgICAgICAgIHZhciBkZWJ1Z2dl
ck1vZGVsTG9jYXRpb24gPSAvKiogQHR5cGUge1dlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkxv
Y2F0aW9ufSAqLyAocmF3TG9jYXRpb24pOwogICAgICAgICB2YXIgc2NyaXB0ID0gV2ViSW5zcGVj
dG9yLmRlYnVnZ2VyTW9kZWwuc2NyaXB0Rm9ySWQoZGVidWdnZXJNb2RlbExvY2F0aW9uLnNjcmlw
dElkKTsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZVVJU291cmNl
Q29kZUZvclNjcmlwdChzY3JpcHQpIHx8IHRoaXMuX2dldE9yQ3JlYXRlVGVtcG9yYXJ5VUlTb3Vy
Y2VDb2RlKHNjcmlwdCk7Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuc2NyaXB0RmlsZSgpICYm
IHVpU291cmNlQ29kZS5zY3JpcHRGaWxlKCkuaGFzRGl2ZXJnZWRGcm9tVk0oKSkKLSAgICAgICAg
ICAgIHVpU291cmNlQ29kZSA9IHRoaXMuX2dldE9yQ3JlYXRlT3JpZ2luYWxVSVNvdXJjZUNvZGUo
c2NyaXB0LCB1aVNvdXJjZUNvZGUpOwotICAgICAgICBjb25zb2xlLmFzc2VydCghIXVpU291cmNl
Q29kZSk7Ci0gICAgICAgIHJldHVybiBuZXcgV2ViSW5zcGVjdG9yLlVJTG9jYXRpb24odWlTb3Vy
Y2VDb2RlLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24ubGluZU51bWJlciwgZGVidWdnZXJNb2RlbExv
Y2F0aW9uLmNvbHVtbk51bWJlciB8fCAwKTsKLSAgICB9LAotCi0gICAgLyoqCi0gICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKLSAgICAgKi8KLSAg
ICBfaGFzTWVyZ2VkVG9WTTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQotICAgIHsKLSAgICAgICAg
dmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlKHVpU291cmNlQ29kZSk7
Ci0gICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCi0gICAgICAgICAgICByZXR1cm47Ci0gICAg
ICAgIHRoaXMuX2RlbGV0ZU9yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0cyhzY3JpcHRzKTsK
LSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQotICAgICAg
ICAgICAgc2NyaXB0c1tpXS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwotICAgIH0sCi0KLSAgICAv
KioKLSAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29k
ZQotICAgICAqLwotICAgIF9oYXNEaXZlcmdlZEZyb21WTTogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
KQotICAgIHsKLSAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VD
b2RlKHVpU291cmNlQ29kZSk7Ci0gICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCi0gICAgICAg
ICAgICByZXR1cm47Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2NyaXB0cy5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHNjcmlwdHNbaV0uc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAg
ICB9LAotCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3Jp
cHQKLSAgICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQotICAgICAqLwot
ICAgIF93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQ6IGZ1bmN0aW9uKHNjcmlwdCkKLSAg
ICB7Ci0gICAgICAgIGlmIChzY3JpcHQuaXNBbm9ueW1vdXNTY3JpcHQoKSB8fCB0aGlzLl9pc0R5
bmFtaWNTY3JpcHQoc2NyaXB0KSkKKyAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX3dv
cmtzcGFjZVVJU291cmNlQ29kZUZvclNjcmlwdChzY3JpcHQpOworICAgICAgICBpZiAoIXVpU291
cmNlQ29kZSkKICAgICAgICAgICAgIHJldHVybiBudWxsOwotICAgICAgICByZXR1cm4gdGhpcy5f
d29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSTChzY3JpcHQuc291cmNlVVJMKTsKKyAgICAgICAg
cmV0dXJuIG5ldyBXZWJJbnNwZWN0b3IuVUlMb2NhdGlvbih1aVNvdXJjZUNvZGUsIGRlYnVnZ2Vy
TW9kZWxMb2NhdGlvbi5saW5lTnVtYmVyLCBkZWJ1Z2dlck1vZGVsTG9jYXRpb24uY29sdW1uTnVt
YmVyIHx8IDApOwogICAgIH0sCiAKICAgICAvKioKQEAgLTExMiwxNzUgKzc1LDY4IEBAIFdlYklu
c3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAgICAqLwogICAg
IGFkZFNjcmlwdDogZnVuY3Rpb24oc2NyaXB0KQogICAgIHsKLSAgICAgICAgaWYgKCFzY3JpcHQu
aXNBbm9ueW1vdXNTY3JpcHQoKSkgewotICAgICAgICAgICAgdGhpcy5fc2NyaXB0cy5wdXNoKHNj
cmlwdCk7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0c0ZvclNvdXJjZVVSTCA9IHNjcmlwdC5pc0lu
bGluZVNjcmlwdCgpID8gdGhpcy5faW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA6IHRoaXMuX25v
bklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7Ci0gICAgICAgICAgICB2YXIgYnVja2V0ID0gc2Ny
aXB0c0ZvclNvdXJjZVVSTFtzY3JpcHQuc291cmNlVVJMXSB8fCBbXTsKLSAgICAgICAgICAgIHNj
cmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0gPSBidWNrZXQ7Ci0gICAgICAgICAg
ICBidWNrZXQucHVzaChzY3JpcHQpOwotICAgICAgICB9Ci0KLSAgICAgICAgc2NyaXB0LnNldFNv
dXJjZU1hcHBpbmcodGhpcyk7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jr
c3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKLSAgICAgICAgaWYgKHVpU291cmNl
Q29kZSkgewotICAgICAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNv
dXJjZUNvZGUsIFtzY3JpcHRdKTsKKyAgICAgICAgaWYgKHNjcmlwdC5pc0Fub255bW91c1Njcmlw
dCgpIHx8IHNjcmlwdC5pc0R5bmFtaWNTY3JpcHQoKSkKICAgICAgICAgICAgIHJldHVybjsKLSAg
ICAgICAgfQogCi0gICAgICAgIHZhciBzY3JpcHRzID0gc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkg
PyB0aGlzLl9zY3JpcHRzRm9yU291cmNlVVJMKHNjcmlwdC5zb3VyY2VVUkwsIHRydWUpIDogW3Nj
cmlwdF07CisgICAgICAgIHZhciBzY3JpcHRzRm9yU291cmNlVVJMID0gc2NyaXB0LmlzSW5saW5l
U2NyaXB0KCkgPyB0aGlzLl9pbmxpbmVTY3JpcHRzRm9yU291cmNlVVJMIDogdGhpcy5fbm9uSW5s
aW5lU2NyaXB0c0ZvclNvdXJjZVVSTDsKKyAgICAgICAgc2NyaXB0c0ZvclNvdXJjZVVSTFtzY3Jp
cHQuc291cmNlVVJMXSA9IHNjcmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0gfHwg
W107CisgICAgICAgIHNjcmlwdHNGb3JTb3VyY2VVUkxbc2NyaXB0LnNvdXJjZVVSTF0ucHVzaChz
Y3JpcHQpOwogCi0gICAgICAgIGlmICh0aGlzLl9kZWxldGVUZW1wb3JhcnlVSVNvdXJjZUNvZGVG
b3JTY3JpcHRzKHNjcmlwdHMpKSB7Ci0gICAgICAgICAgICB0aGlzLl9kZWxldGVPcmlnaW5hbFVJ
U291cmNlQ29kZUZvclNjcmlwdHMoc2NyaXB0cyk7Ci0gICAgICAgICAgICB0aGlzLl9nZXRPckNy
ZWF0ZVRlbXBvcmFyeVVJU291cmNlQ29kZShzY3JpcHQpOwotICAgICAgICB9CisgICAgICAgIHZh
ciB1aVNvdXJjZUNvZGUgPSB0aGlzLl93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2Ny
aXB0KTsKKyAgICAgICAgaWYgKCF1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgICAgICAKKyAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh1aVNv
dXJjZUNvZGUsIFtzY3JpcHRdKTsKICAgICB9LAogCi0gICAgLyoqCi0gICAgICogQHBhcmFtIHtB
cnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59IHNjcmlwdHMKLSAgICAgKi8KLSAgICBfZGVsZXRl
T3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRzOiBmdW5jdGlvbihzY3JpcHRzKQorICAgIF91
aVNvdXJjZUNvZGVBZGRlZFRvV29ya3NwYWNlOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAg
ICAgIHZhciBvcmlnaW5hbFVJU291cmNlQ29kZTsKLSAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBzY3JpcHRzLmxlbmd0aDsgKytpKSB7Ci0gICAgICAgICAgICBvcmlnaW5hbFVJU291cmNlQ29k
ZSA9IG9yaWdpbmFsVUlTb3VyY2VDb2RlIHx8IHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbc2NyaXB0c1tpXS5zY3JpcHRJZF07Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5f
b3JpZ2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElkXTsKLSAg
ICAgICAgfQotICAgICAgICBpZiAoIW9yaWdpbmFsVUlTb3VyY2VDb2RlKQorICAgICAgICB2YXIg
dWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyAo
ZXZlbnQuZGF0YSk7CisgICAgICAgIGNvbnNvbGUuYXNzZXJ0KCEhdWlTb3VyY2VDb2RlLnVybCk7
CisKKyAgICAgICAgdmFyIHNjcmlwdHMgPSB0aGlzLl9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlKHVp
U291cmNlQ29kZSk7CisgICAgICAgIGlmICghc2NyaXB0cy5sZW5ndGgpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIHRoaXMuX3dvcmtzcGFjZS5yZW1vdmVUZW1wb3JhcnlVSVNvdXJjZUNv
ZGUob3JpZ2luYWxVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9zY3JpcHRJZHNGb3JPcmln
aW5hbFVJU291cmNlQ29kZS5yZW1vdmUob3JpZ2luYWxVSVNvdXJjZUNvZGUpOwotICAgIH0sCiAK
LSAgICAvKioKLSAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuU2NyaXB0Pn0gc2Ny
aXB0cwotICAgICAqIEByZXR1cm4ge2Jvb2xlYW59Ci0gICAgICovCi0gICAgX2RlbGV0ZVRlbXBv
cmFyeVVJU291cmNlQ29kZUZvclNjcmlwdHM6IGZ1bmN0aW9uKHNjcmlwdHMpCi0gICAgewotICAg
ICAgICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOwotICAgICAgICBmb3IgKHZhciBpID0gMDsg
aSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNl
Q29kZSA9IHRlbXBvcmFyeVVJU291cmNlQ29kZSB8fCB0aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNv
ZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElkXTsKLSAgICAgICAgICAgIGRlbGV0ZSB0
aGlzLl90ZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHRzW2ldLnNjcmlwdElk
XTsKLSAgICAgICAgfQotICAgICAgICBpZiAoIXRlbXBvcmFyeVVJU291cmNlQ29kZSkKLSAgICAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgdGhpcy5fd29ya3NwYWNlLnJlbW92ZVRlbXBv
cmFyeVVJU291cmNlQ29kZSh0ZW1wb3JhcnlVSVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9z
Y3JpcHRJZHNGb3JUZW1wb3JhcnlVSVNvdXJjZUNvZGUucmVtb3ZlKHRlbXBvcmFyeVVJU291cmNl
Q29kZSk7Ci0gICAgICAgIHJldHVybiB0cnVlOworICAgICAgICB0aGlzLl9iaW5kVUlTb3VyY2VD
b2RlVG9TY3JpcHRzKHVpU291cmNlQ29kZSwgc2NyaXB0cyk7CiAgICAgfSwKIAogICAgIC8qKgog
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0g
ICAgICogQHBhcmFtIHtBcnJheS48V2ViSW5zcGVjdG9yLlNjcmlwdD59IHNjcmlwdHMKICAgICAg
Ki8KLSAgICBfYmluZFVJU291cmNlQ29kZVRvU2NyaXB0czogZnVuY3Rpb24odWlTb3VyY2VDb2Rl
LCBzY3JpcHRzKQorICAgIF9oYXNNZXJnZWRUb1ZNOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAg
ICAgewotICAgICAgICBjb25zb2xlLmFzc2VydChzY3JpcHRzLmxlbmd0aCk7Ci0gICAgICAgIGlm
ICh1aVNvdXJjZUNvZGUuaXNFZGl0YWJsZSgpKSB7Ci0gICAgICAgICAgICB2YXIgc2NyaXB0Rmls
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuUmVzb3VyY2VTY3JpcHRGaWxlKHRoaXMsIHVpU291cmNlQ29k
ZSk7Ci0gICAgICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3JpcHRGaWxlKTsK
LSAgICAgICAgfQorICAgICAgICB2YXIgc2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJj
ZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKKyAgICAg
ICAgICAgIHJldHVybjsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0
aDsgKytpKQotICAgICAgICAgICAgc2NyaXB0c1tpXS5zZXRTb3VyY2VNYXBwaW5nKHRoaXMpOwot
ICAgICAgICB1aVNvdXJjZUNvZGUuc2V0U291cmNlTWFwcGluZyh0aGlzKTsKLSAgICB9LAotCi0g
ICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAg
KiBAcmV0dXJuIHtib29sZWFufQotICAgICAqLwotICAgIF9pc0R5bmFtaWNTY3JpcHQ6IGZ1bmN0
aW9uKHNjcmlwdCkKLSAgICB7Ci0gICAgICAgIGlmIChzY3JpcHQuaXNBbm9ueW1vdXNTY3JpcHQo
KSB8fCBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSkKLSAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
LSAgICAgICAgdmFyIGlubGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTCA9IHRoaXMuX3NjcmlwdHNG
b3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSk7Ci0gICAgICAgIHJldHVybiAhIWlu
bGluZVNjcmlwdHNXaXRoVGhlU2FtZVVSTC5sZW5ndGg7Ci0gICAgfSwKLQotICAgIC8qKgotICAg
ICAqIEBwYXJhbSB7c3RyaW5nfSBzb3VyY2VVUkwKLSAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlz
SW5saW5lU2NyaXB0Ci0gICAgICogQHJldHVybiB7IUFycmF5LjwhV2ViSW5zcGVjdG9yLlNjcmlw
dD59Ci0gICAgICovCi0gICAgX3NjcmlwdHNGb3JTb3VyY2VVUkw6IGZ1bmN0aW9uKHNvdXJjZVVS
TCwgaXNJbmxpbmVTY3JpcHQpCi0gICAgewotICAgICAgICB2YXIgc2NyaXB0c0ZvclNvdXJjZVVS
TCA9IGlzSW5saW5lU2NyaXB0ID8gdGhpcy5faW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA6IHRo
aXMuX25vbklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7Ci0gICAgICAgIHJldHVybiBzY3JpcHRz
Rm9yU291cmNlVVJMW3NvdXJjZVVSTF0gfHwgW107CisgICAgICAgICAgICBzY3JpcHRzW2ldLmVu
YWJsZVNvdXJjZU1hcHBpbmcodGhpcyk7CiAgICAgfSwKIAogICAgIC8qKgotICAgICAqIEBwYXJh
bSB7QXJyYXkuPFdlYkluc3BlY3Rvci5TY3JpcHQ+fSBzY3JpcHRzCi0gICAgICogQHBhcmFtIHtX
ZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPX0gZGl2ZXJnZWRWZXJzaW9uCi0gICAgICogQHJldHVy
biB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0KLSAgICAgKi8KLSAgICBfY3JlYXRlVUlTb3Vy
Y2VDb2RlOiBmdW5jdGlvbihzY3JpcHRzLCBkaXZlcmdlZFZlcnNpb24pCi0gICAgewotICAgICAg
ICB2YXIgc2NyaXB0ID0gc2NyaXB0c1swXTsKLSAgICAgICAgdmFyIGNvbnRlbnRQcm92aWRlciA9
IHNjcmlwdC5pc0lubGluZVNjcmlwdCgpID8gbmV3IFdlYkluc3BlY3Rvci5Db25jYXRlbmF0ZWRT
Y3JpcHRzQ29udGVudFByb3ZpZGVyKHNjcmlwdHMuc2xpY2UoKSkgOiBzY3JpcHQ7Ci0gICAgICAg
IHZhciBpc0R5bmFtaWNTY3JpcHQgPSB0aGlzLl9pc0R5bmFtaWNTY3JpcHQoc2NyaXB0KTsKLSAg
ICAgICAgdmFyIHVybCA9IGlzRHluYW1pY1NjcmlwdCA/ICIiIDogc2NyaXB0LnNvdXJjZVVSTDsK
LSAgICAgICAgdmFyIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHRoaXMuX3dvcmtzcGFjZS5hZGRU
ZW1wb3JhcnlVSVNvdXJjZUNvZGUodXJsLCBjb250ZW50UHJvdmlkZXIsICFzY3JpcHQuaXNJbmxp
bmVTY3JpcHQoKSAmJiAhZGl2ZXJnZWRWZXJzaW9uLCBzY3JpcHQuaXNDb250ZW50U2NyaXB0KTsK
LSAgICAgICAgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlLmRpdmVyZ2VkVmVyc2lvbiA9IGRpdmVyZ2Vk
VmVyc2lvbjsKLSAgICAgICAgcmV0dXJuIHRlbXBvcmFyeVVJU291cmNlQ29kZTsKLSAgICB9LAot
Ci0gICAgLyoqCi0gICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAg
ICAgKiBAcmV0dXJuIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfQorICAgICAqIEBwYXJhbSB7
V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCiAgICAgICovCi0gICAgX2dl
dE9yQ3JlYXRlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlOiBmdW5jdGlvbihzY3JpcHQpCisgICAgX2hh
c0RpdmVyZ2VkRnJvbVZNOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICB2
YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5fdGVtcG9yYXJ5VUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXTsKLSAgICAgICAgaWYgKHRlbXBvcmFyeVVJU291cmNl
Q29kZSkKLSAgICAgICAgICAgIHJldHVybiB0ZW1wb3JhcnlVSVNvdXJjZUNvZGU7Ci0KLSAgICAg
ICAgdmFyIHNjcmlwdHMgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IHRoaXMuX3NjcmlwdHNG
b3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSkgOiBbc2NyaXB0XTsKLSAgICAgICAg
dGVtcG9yYXJ5VUlTb3VyY2VDb2RlID0gdGhpcy5fY3JlYXRlVUlTb3VyY2VDb2RlKHNjcmlwdHMp
OwotICAgICAgICB2YXIgc2NyaXB0SWRzID0gW107Ci0gICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgc2NyaXB0cy5sZW5ndGg7ICsraSkgewotICAgICAgICAgICAgdGhpcy5fdGVtcG9yYXJ5VUlT
b3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0c1tpXS5zY3JpcHRJZF0gPSB0ZW1wb3JhcnlVSVNv
dXJjZUNvZGU7Ci0gICAgICAgICAgICBzY3JpcHRJZHMucHVzaChzY3JpcHRzW2ldLnNjcmlwdElk
KTsKLSAgICAgICAgfQotICAgICAgICB0aGlzLl9zY3JpcHRJZHNGb3JUZW1wb3JhcnlVSVNvdXJj
ZUNvZGUucHV0KHRlbXBvcmFyeVVJU291cmNlQ29kZSwgc2NyaXB0SWRzKTsKLSAgICAgICAgdGhp
cy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyh0ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIHNjcmlw
dHMpOwotICAgICAgICByZXR1cm4gdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOworICAgICAgICB2YXIg
c2NyaXB0cyA9IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAg
ICAgICAgaWYgKCFzY3JpcHRzLmxlbmd0aCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAg
Zm9yICh2YXIgaSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2Ny
aXB0c1tpXS5kaXNhYmxlU291cmNlTWFwcGluZyh0aGlzKTsKICAgICB9LAogCiAgICAgLyoqCiAg
ICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuU2NyaXB0fSBzY3JpcHQKLSAgICAgKiBAcGFyYW0g
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IGRpdmVyZ2VkVmVyc2lvbgogICAgICAqIEByZXR1
cm4ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9CiAgICAgICovCi0gICAgX2dldE9yQ3JlYXRl
T3JpZ2luYWxVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHNjcmlwdCwgZGl2ZXJnZWRWZXJzaW9uKQot
ICAgIHsKLSAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdGhpcy5fb3JpZ2luYWxV
SVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwotICAgICAgICBpZiAob3Jp
Z2luYWxVSVNvdXJjZUNvZGUpCi0gICAgICAgICAgICByZXR1cm4gb3JpZ2luYWxVSVNvdXJjZUNv
ZGU7Ci0KLSAgICAgICAgdmFyIHNjcmlwdHMgPSBzY3JpcHQuaXNJbmxpbmVTY3JpcHQoKSA/IHRo
aXMuX3NjcmlwdHNGb3JTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZVVSTCwgdHJ1ZSkgOiBbc2NyaXB0
XTsKLSAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVhdGVVSVNvdXJjZUNv
ZGUoc2NyaXB0cywgZGl2ZXJnZWRWZXJzaW9uKTsKLSAgICAgICAgdmFyIHNjcmlwdElkcyA9IFtd
OwotICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IHNjcmlwdHMubGVuZ3RoOyArK2kpIHsKLSAg
ICAgICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0c1tp
XS5zY3JpcHRJZF0gPSBvcmlnaW5hbFVJU291cmNlQ29kZTsKLSAgICAgICAgICAgIHNjcmlwdElk
cy5wdXNoKHNjcmlwdHNbaV0uc2NyaXB0SWQpOwotICAgICAgICB9Ci0gICAgICAgIHRoaXMuX3Nj
cmlwdElkc0Zvck9yaWdpbmFsVUlTb3VyY2VDb2RlLnB1dChvcmlnaW5hbFVJU291cmNlQ29kZSwg
c2NyaXB0SWRzKTsKLSAgICAgICAgdGhpcy5fYmluZFVJU291cmNlQ29kZVRvU2NyaXB0cyhvcmln
aW5hbFVJU291cmNlQ29kZSwgc2NyaXB0cyk7Ci0gICAgICAgIHJldHVybiBvcmlnaW5hbFVJU291
cmNlQ29kZTsKLSAgICB9LAotCi0gICAgX3VpU291cmNlQ29kZUFkZGVkVG9Xb3Jrc3BhY2U6IGZ1
bmN0aW9uKGV2ZW50KQorICAgIF93b3Jrc3BhY2VVSVNvdXJjZUNvZGVGb3JTY3JpcHQ6IGZ1bmN0
aW9uKHNjcmlwdCkKICAgICB7Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSAvKiogQHR5cGUg
e1dlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGV9ICovIChldmVudC5kYXRhKTsKLSAgICAgICAgY29u
c29sZS5hc3NlcnQoISF1aVNvdXJjZUNvZGUudXJsKTsKLQotICAgICAgICB2YXIgc2NyaXB0cyA9
IHRoaXMuX3NjcmlwdHNGb3JVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKLSAgICAgICAgaWYg
KCFzY3JpcHRzLmxlbmd0aCkKLSAgICAgICAgICAgIHJldHVybjsKLQotICAgICAgICB0aGlzLl9k
ZWxldGVUZW1wb3JhcnlVSVNvdXJjZUNvZGVGb3JTY3JpcHRzKHNjcmlwdHMpOwotICAgICAgICB0
aGlzLl9kZWxldGVPcmlnaW5hbFVJU291cmNlQ29kZUZvclNjcmlwdHMoc2NyaXB0cyk7Ci0gICAg
ICAgIHRoaXMuX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHModWlTb3VyY2VDb2RlLCBzY3JpcHRz
KTsKKyAgICAgICAgaWYgKHNjcmlwdC5pc0Fub255bW91c1NjcmlwdCgpIHx8IHNjcmlwdC5pc0R5
bmFtaWNTY3JpcHQoKSkKKyAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAvLyBGSVhN
RTogd29ya2Fyb3VuZCBmb3Igc2NyaXB0LmlzRHluYW1pY1NjcmlwdCgpIGJlaW5nIHVucmVsaWFi
bGUuCisgICAgICAgIGlmICghc2NyaXB0LmlzSW5saW5lU2NyaXB0KCkgJiYgdGhpcy5faW5saW5l
U2NyaXB0c0ZvclNvdXJjZVVSTFtzY3JpcHQuc291cmNlVVJMXSkKKyAgICAgICAgICAgIHJldHVy
biBudWxsOworICAgICAgICByZXR1cm4gdGhpcy5fd29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVS
TChzY3JpcHQuc291cmNlVVJMKTsKICAgICB9LAogCiAgICAgLyoqCkBAIC0yODksMTAgKzE0NSw2
IEBAIFdlYkluc3BlY3Rvci5SZXNvdXJjZVNjcmlwdE1hcHBpbmcucHJvdG90eXBlID0gewogICAg
ICAqLwogICAgIF9zY3JpcHRzRm9yVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUp
CiAgICAgewotICAgICAgICB2YXIgc2NyaXB0SWRzID0gdGhpcy5fc2NyaXB0SWRzRm9yT3JpZ2lu
YWxVSVNvdXJjZUNvZGUuZ2V0KHVpU291cmNlQ29kZSkgfHwgdGhpcy5fc2NyaXB0SWRzRm9yVGVt
cG9yYXJ5VUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpOwotICAgICAgICBpZiAoc2NyaXB0
SWRzKQotICAgICAgICAgICAgcmV0dXJuIHNjcmlwdElkcy5tYXAoV2ViSW5zcGVjdG9yLmRlYnVn
Z2VyTW9kZWwuc2NyaXB0Rm9ySWQuYmluZChXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbCkpOwot
CiAgICAgICAgIHZhciBpc0lubGluZVNjcmlwdDsKICAgICAgICAgc3dpdGNoICh1aVNvdXJjZUNv
ZGUuY29udGVudFR5cGUoKSkgewogICAgICAgICBjYXNlIFdlYkluc3BlY3Rvci5yZXNvdXJjZVR5
cGVzLkRvY3VtZW50OgpAQCAtMzA0LDIyICsxNTYsMzAgQEAgV2ViSW5zcGVjdG9yLlJlc291cmNl
U2NyaXB0TWFwcGluZy5wcm90b3R5cGUgPSB7CiAgICAgICAgIGRlZmF1bHQ6CiAgICAgICAgICAg
ICByZXR1cm4gW107CiAgICAgICAgIH0KLSAgICAgICAgcmV0dXJuIHRoaXMuX3NjcmlwdHNGb3JT
b3VyY2VVUkwodWlTb3VyY2VDb2RlLnVybCwgaXNJbmxpbmVTY3JpcHQpOworICAgICAgICB2YXIg
c2NyaXB0c0ZvclNvdXJjZVVSTCA9IGlzSW5saW5lU2NyaXB0ID8gdGhpcy5faW5saW5lU2NyaXB0
c0ZvclNvdXJjZVVSTCA6IHRoaXMuX25vbklubGluZVNjcmlwdHNGb3JTb3VyY2VVUkw7CisgICAg
ICAgIHJldHVybiBzY3JpcHRzRm9yU291cmNlVVJMW3VpU291cmNlQ29kZS51cmxdIHx8IFtdOwor
ICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5VSVNvdXJjZUNv
ZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYkluc3BlY3Rvci5TY3Jp
cHQ+fSBzY3JpcHRzCisgICAgICovCisgICAgX2JpbmRVSVNvdXJjZUNvZGVUb1NjcmlwdHM6IGZ1
bmN0aW9uKHVpU291cmNlQ29kZSwgc2NyaXB0cykKKyAgICB7CisgICAgICAgIGNvbnNvbGUuYXNz
ZXJ0KHNjcmlwdHMubGVuZ3RoKTsKKyAgICAgICAgdmFyIHNjcmlwdEZpbGUgPSBuZXcgV2ViSW5z
cGVjdG9yLlJlc291cmNlU2NyaXB0RmlsZSh0aGlzLCB1aVNvdXJjZUNvZGUpOworICAgICAgICB1
aVNvdXJjZUNvZGUuc2V0U2NyaXB0RmlsZShzY3JpcHRGaWxlKTsKKyAgICAgICAgZm9yICh2YXIg
aSA9IDA7IGkgPCBzY3JpcHRzLmxlbmd0aDsgKytpKQorICAgICAgICAgICAgc2NyaXB0c1tpXS5w
dXNoU291cmNlTWFwcGluZyh0aGlzKTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLnNldFNvdXJjZU1h
cHBpbmcodGhpcyk7CiAgICAgfSwKIAogICAgIF9yZXNldDogZnVuY3Rpb24oKQogICAgIHsKLSAg
ICAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9yLlVJU291cmNlQ29k
ZT59ICovCi0gICAgICAgIHRoaXMuX3RlbXBvcmFyeVVJU291cmNlQ29kZUZvclNjcmlwdElkID0g
e307Ci0gICAgICAgIHRoaXMuX3NjcmlwdElkc0ZvclRlbXBvcmFyeVVJU291cmNlQ29kZSA9IG5l
dyBNYXAoKTsKLSAgICAgICAgLyoqIEB0eXBlIHtPYmplY3QuPHN0cmluZywgV2ViSW5zcGVjdG9y
LlVJU291cmNlQ29kZT59ICovCi0gICAgICAgIHRoaXMuX29yaWdpbmFsVUlTb3VyY2VDb2RlRm9y
U2NyaXB0SWQgPSB7fTsKLSAgICAgICAgdGhpcy5fc2NyaXB0SWRzRm9yT3JpZ2luYWxVSVNvdXJj
ZUNvZGUgPSBuZXcgTWFwKCk7CiAgICAgICAgIC8qKiBAdHlwZSB7IU9iamVjdC48c3RyaW5nLCAh
QXJyYXkuPCFXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPj59ICovCiAgICAgICAgIHRoaXMuX2lu
bGluZVNjcmlwdHNGb3JTb3VyY2VVUkwgPSB7fTsKICAgICAgICAgLyoqIEB0eXBlIHshT2JqZWN0
LjxzdHJpbmcsICFBcnJheS48IVdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+Pn0gKi8KICAgICAg
ICAgdGhpcy5fbm9uSW5saW5lU2NyaXB0c0ZvclNvdXJjZVVSTCA9IHt9OwotICAgICAgICB0aGlz
Ll9zY3JpcHRzID0gW107CiAgICAgfSwKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHQuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
ZnJvbnQtZW5kL1NjcmlwdC5qcwppbmRleCA4YzgwYmEwYmIxOWU0NTczOTdhZWZiYWE0MDZiMmI4
MWQwMGY2YTQ0Li4wZTE5ZjNmZDI2ZjI0OTI0OTY3NWY2ZTNlYTVjZTkxZWE0NDJiNDg1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcworKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1NjcmlwdC5qcwpAQCAtMjUsNiAr
MjUsNyBAQAogCiAvKioKICAqIEBjb25zdHJ1Y3RvcgorICogQGV4dGVuZHMge1dlYkluc3BlY3Rv
ci5PYmplY3R9CiAgKiBAaW1wbGVtZW50cyB7V2ViSW5zcGVjdG9yLkNvbnRlbnRQcm92aWRlcn0K
ICAqIEBwYXJhbSB7c3RyaW5nfSBzY3JpcHRJZAogICogQHBhcmFtIHtzdHJpbmd9IHNvdXJjZVVS
TApAQCAtNDgsNiArNDksMTEgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdCA9IGZ1bmN0aW9uKHNjcmlw
dElkLCBzb3VyY2VVUkwsIHN0YXJ0TGluZSwgc3RhcnRDb2x1bW4sIGVuZEwKICAgICB0aGlzLnNv
dXJjZU1hcFVSTCA9IHNvdXJjZU1hcFVSTDsKICAgICB0aGlzLmhhc1NvdXJjZVVSTCA9IGhhc1Nv
dXJjZVVSTDsKICAgICB0aGlzLl9sb2NhdGlvbnMgPSBbXTsKKyAgICB0aGlzLl9zb3VyY2VNYXBw
aW5ncyA9IFtdOworfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0LkV2ZW50cyA9IHsKKyAgICBTY3Jp
cHRFZGl0ZWQ6ICJTY3JpcHRFZGl0ZWQiLAogfQogCiBXZWJJbnNwZWN0b3IuU2NyaXB0LnNuaXBw
ZXRTb3VyY2VVUkxQcmVmaXggPSAic25pcHBldHM6Ly8vIjsKQEAgLTE0Niw2ICsxNTIsOCBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmICghZXJyb3Ip
CiAgICAgICAgICAgICAgICAgdGhpcy5fc291cmNlID0gbmV3U291cmNlOwogICAgICAgICAgICAg
Y2FsbGJhY2soZXJyb3IsIGNhbGxGcmFtZXMpOworICAgICAgICAgICAgaWYgKCFlcnJvcikKKyAg
ICAgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJbnNwZWN0b3Iu
U2NyaXB0LkV2ZW50cy5TY3JpcHRFZGl0ZWQsIG5ld1NvdXJjZSk7CiAgICAgICAgIH0KICAgICAg
ICAgaWYgKHRoaXMuc2NyaXB0SWQpIHsKICAgICAgICAgICAgIC8vIFNjcmlwdCBmYWlsZWQgdG8g
cGFyc2UuCkBAIC0xNzIsNiArMTgwLDIyIEBAIFdlYkluc3BlY3Rvci5TY3JpcHQucHJvdG90eXBl
ID0gewogICAgIH0sCiAKICAgICAvKioKKyAgICAgKiBAcGFyYW0ge2Jvb2xlYW59IGlzRHluYW1p
Y1NjcmlwdAorICAgICAqLworICAgIHNldElzRHluYW1pY1NjcmlwdDogZnVuY3Rpb24oaXNEeW5h
bWljU2NyaXB0KQorICAgIHsKKyAgICAgICAgdGhpcy5faXNEeW5hbWljU2NyaXB0ID0gaXNEeW5h
bWljU2NyaXB0OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcmV0dXJuIHtib29sZWFufQor
ICAgICAqLworICAgIGlzRHluYW1pY1NjcmlwdDogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAg
cmV0dXJuICEhdGhpcy5faXNEeW5hbWljU2NyaXB0OworICAgIH0sCisKKyAgICAvKioKICAgICAg
KiBAcmV0dXJuIHtib29sZWFufQogICAgICAqLwogICAgIGlzU25pcHBldDogZnVuY3Rpb24oKQpA
QCAtMTg2LDE2ICsyMTAsODQgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdC5wcm90b3R5cGUgPSB7CiAg
ICAgICovCiAgICAgcmF3TG9jYXRpb25Ub1VJTG9jYXRpb246IGZ1bmN0aW9uKGxpbmVOdW1iZXIs
IGNvbHVtbk51bWJlcikKICAgICB7Ci0gICAgICAgIHZhciB1aUxvY2F0aW9uID0gdGhpcy5fc291
cmNlTWFwcGluZy5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihuZXcgV2ViSW5zcGVjdG9yLkRlYnVn
Z2VyTW9kZWwuTG9jYXRpb24odGhpcy5zY3JpcHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVy
IHx8IDApKTsKKyAgICAgICAgdmFyIHNvdXJjZU1hcHBpbmdzID0gdGhpcy5fZW5hYmxlZFNvdXJj
ZU1hcHBpbmdzKCk7CisgICAgICAgIHZhciB1aUxvY2F0aW9uOworICAgICAgICB2YXIgcmF3TG9j
YXRpb24gPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24odGhpcy5zY3Jp
cHRJZCwgbGluZU51bWJlciwgY29sdW1uTnVtYmVyIHx8IDApOworICAgICAgICBmb3IgKHZhciBp
ID0gc291cmNlTWFwcGluZ3MubGVuZ3RoIC0gMTsgIXVpTG9jYXRpb24gJiYgaSA+PSAwOyAtLWkp
CisgICAgICAgICAgICB1aUxvY2F0aW9uID0gc291cmNlTWFwcGluZ3NbaV0ucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24ocmF3TG9jYXRpb24pOworICAgICAgICBjb25zb2xlLmFzc2VydCh1aUxvY2F0
aW9uLCAiU2NyaXB0IHJhdyBsb2NhdGlvbiBjYW4gbm90IGJlIG1hcHBlZCB0byBhbnkgdWkgbG9j
YXRpb24uIik7CiAgICAgICAgIHJldHVybiB1aUxvY2F0aW9uLnVpU291cmNlQ29kZS5vdmVycmlk
ZUxvY2F0aW9uKHVpTG9jYXRpb24pOwogICAgIH0sCiAKKyAgICBfZW5hYmxlZFNvdXJjZU1hcHBp
bmdzOiBmdW5jdGlvbigpCisgICAgeworICAgICAgICBmdW5jdGlvbiBmaWx0ZXIoc291cmNlTWFw
cGluZykKKyAgICAgICAgeworICAgICAgICAgICAgcmV0dXJuICF0aGlzLl9kaXNhYmxlZFNvdXJj
ZU1hcHBpbmdzLmdldChzb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgfQorCisgICAgICAgIHZhciBz
b3VyY2VNYXBwaW5ncyA9IHRoaXMuX2Rpc2FibGVkU291cmNlTWFwcGluZ3MgPyB0aGlzLl9zb3Vy
Y2VNYXBwaW5ncy5maWx0ZXIoZmlsdGVyLmJpbmQodGhpcykpIDogdGhpcy5fc291cmNlTWFwcGlu
Z3Muc2xpY2UoKTsKKyAgICAgICAgY29uc29sZS5hc3NlcnQoc291cmNlTWFwcGluZ3MubGVuZ3Ro
LCAiU2NyaXB0IGRvZXMgbm90IGhhdmUgYW55IHNvdXJjZSBtYXBwaW5nLiIpOworICAgICAgICBy
ZXR1cm4gc291cmNlTWFwcGluZ3M7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7
QXJyYXkuPFdlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nPn0gb2xkU291cmNlTWFwcGluZ3MKKyAg
ICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuU291cmNlTWFwcGluZz59IG5ld1NvdXJj
ZU1hcHBpbmdzCisgICAgICovCisgICAgX3NvdXJjZU1hcHBpbmdzRGlmZmVyOiBmdW5jdGlvbihv
bGRTb3VyY2VNYXBwaW5ncywgbmV3U291cmNlTWFwcGluZ3MpCisgICAgeworICAgICAgICBpZiAo
b2xkU291cmNlTWFwcGluZ3MubGVuZ3RoICE9PSBuZXdTb3VyY2VNYXBwaW5ncy5sZW5ndGgpCisg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBuZXdT
b3VyY2VNYXBwaW5ncy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgaWYgKG9sZFNvdXJjZU1h
cHBpbmdzW2ldICE9PSBuZXdTb3VyY2VNYXBwaW5nc1tpXSkKKyAgICAgICAgICAgICAgICByZXR1
cm4gdHJ1ZTsKKyAgICAgICAgfQorICAgICAgICByZXR1cm4gZmFsc2U7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1h
cHBpbmcKKyAgICAgKi8KKyAgICBkaXNhYmxlU291cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNl
TWFwcGluZykKKyAgICB7CisgICAgICAgIHZhciBvbGRTb3VyY2VNYXBwaW5ncyA9IHRoaXMuX2Vu
YWJsZWRTb3VyY2VNYXBwaW5ncygpOworICAgICAgICB0aGlzLl9kaXNhYmxlZFNvdXJjZU1hcHBp
bmdzID0gdGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5ncyB8fCBuZXcgTWFwKCk7CisgICAgICAg
IHRoaXMuX2Rpc2FibGVkU291cmNlTWFwcGluZ3MucHV0KHNvdXJjZU1hcHBpbmcsIHRydWUpOwor
ICAgICAgICBpZiAodGhpcy5fc291cmNlTWFwcGluZ3NEaWZmZXIob2xkU291cmNlTWFwcGluZ3Ms
dGhpcy5fZW5hYmxlZFNvdXJjZU1hcHBpbmdzKCkpKQorICAgICAgICAgICAgdGhpcy5fdXBkYXRl
TG9jYXRpb25zKCk7CisgICAgfSwKKwogICAgIC8qKgogICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNvdXJjZU1hcHBpbmd9IHNvdXJjZU1hcHBpbmcKICAgICAgKi8KLSAgICBzZXRTb3VyY2VN
YXBwaW5nOiBmdW5jdGlvbihzb3VyY2VNYXBwaW5nKQorICAgIGVuYWJsZVNvdXJjZU1hcHBpbmc6
IGZ1bmN0aW9uKHNvdXJjZU1hcHBpbmcpCisgICAgeworICAgICAgICB2YXIgb2xkU291cmNlTWFw
cGluZ3MgPSB0aGlzLl9lbmFibGVkU291cmNlTWFwcGluZ3MoKTsKKyAgICAgICAgdGhpcy5fZGlz
YWJsZWRTb3VyY2VNYXBwaW5ncy5yZW1vdmUoc291cmNlTWFwcGluZyk7CisgICAgICAgIGlmICgh
dGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5ncy5zaXplKCkpCisgICAgICAgICAgICBkZWxldGUg
dGhpcy5fZGlzYWJsZWRTb3VyY2VNYXBwaW5nczsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZU1h
cHBpbmdzRGlmZmVyKG9sZFNvdXJjZU1hcHBpbmdzLHRoaXMuX2VuYWJsZWRTb3VyY2VNYXBwaW5n
cygpKSkKKyAgICAgICAgICAgIHRoaXMuX3VwZGF0ZUxvY2F0aW9ucygpOworICAgIH0sCisKKyAg
ICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5Tb3VyY2VNYXBwaW5nfSBzb3VyY2VN
YXBwaW5nCisgICAgICovCisgICAgcHVzaFNvdXJjZU1hcHBpbmc6IGZ1bmN0aW9uKHNvdXJjZU1h
cHBpbmcpCisgICAgeworICAgICAgICB0aGlzLl9zb3VyY2VNYXBwaW5ncy5wdXNoKHNvdXJjZU1h
cHBpbmcpOworICAgICAgICB0aGlzLl91cGRhdGVMb2NhdGlvbnMoKTsKKyAgICB9LAorCisgICAg
cG9wU291cmNlTWFwcGluZzogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5fc291cmNl
TWFwcGluZ3MucG9wKCk7CisgICAgICAgIHRoaXMuX3VwZGF0ZUxvY2F0aW9ucygpOworICAgIH0s
CisKKyAgICBfdXBkYXRlTG9jYXRpb25zOiBmdW5jdGlvbigpCiAgICAgewotICAgICAgICB0aGlz
Ll9zb3VyY2VNYXBwaW5nID0gc291cmNlTWFwcGluZzsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7
IGkgPCB0aGlzLl9sb2NhdGlvbnMubGVuZ3RoOyArK2kpCiAgICAgICAgICAgICB0aGlzLl9sb2Nh
dGlvbnNbaV0udXBkYXRlKCk7CiAgICAgfSwKQEAgLTIxMiw3ICszMDQsOSBAQCBXZWJJbnNwZWN0
b3IuU2NyaXB0LnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fbG9jYXRpb25zLnB1c2gobG9j
YXRpb24pOwogICAgICAgICBsb2NhdGlvbi51cGRhdGUoKTsKICAgICAgICAgcmV0dXJuIGxvY2F0
aW9uOwotICAgIH0KKyAgICB9LAorCisgICAgX19wcm90b19fOiBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZQogfQogCiAvKioKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvU2NyaXB0U25pcHBldE1vZGVsLmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKaW5kZXggZjViMTQ0YjgyMTJmMjI4
MTI5YWVkYzdhYmU0ZjI2ZjE3MzdiMjFiMy4uMDQ5ZmVjZjUyZTc5MTU2OWI1ZjUxZmE1YjlkYTIx
ZmY4MmJjNjgyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9TY3JpcHRTbmlwcGV0TW9kZWwuanMKQEAgLTE0NCwxMCArMTQ0LDEwIEBAIFdlYklu
c3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9kZWwucHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0
dXJuOwogCiAgICAgICAgIHZhciBicmVha3BvaW50TG9jYXRpb25zID0gdGhpcy5fcmVtb3ZlQnJl
YWtwb2ludHModWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdmFyIGNyZWF0ZWRVSVNvdXJjZUNvZGUg
PSB0aGlzLl9yZWxlYXNlU25pcHBldFNjcmlwdCh1aVNvdXJjZUNvZGUpOworICAgICAgICB2YXIg
c2NyaXB0VUlTb3VyY2VDb2RlID0gdGhpcy5fcmVsZWFzZVNuaXBwZXRTY3JpcHQodWlTb3VyY2VD
b2RlKTsKICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHVpU291cmNlQ29kZSwgYnJl
YWtwb2ludExvY2F0aW9ucyk7Ci0gICAgICAgIGlmIChjcmVhdGVkVUlTb3VyY2VDb2RlKQotICAg
ICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKGNyZWF0ZWRVSVNvdXJjZUNvZGUsIGJy
ZWFrcG9pbnRMb2NhdGlvbnMpOworICAgICAgICBpZiAoc2NyaXB0VUlTb3VyY2VDb2RlKQorICAg
ICAgICAgICAgdGhpcy5fcmVzdG9yZUJyZWFrcG9pbnRzKHNjcmlwdFVJU291cmNlQ29kZSwgYnJl
YWtwb2ludExvY2F0aW9ucyk7CiAgICAgfSwKIAogICAgIC8qKgpAQCAtMzA0LDMwICszMDQsMTQg
QEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICByZXR1cm47CiAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSB0aGlzLl91aVNvdXJjZUNv
ZGVGb3JTbmlwcGV0SWRbc25pcHBldElkXTsKIAotICAgICAgICBpZiAoIXVpU291cmNlQ29kZSB8
fCB0aGlzLl9ldmFsdWF0aW9uU291cmNlVVJMKHVpU291cmNlQ29kZSkgIT09IHNjcmlwdC5zb3Vy
Y2VVUkwpIHsKLSAgICAgICAgICAgIHRoaXMuX2NyZWF0ZVVJU291cmNlQ29kZUZvclNjcmlwdChz
Y3JpcHQpOworICAgICAgICBpZiAoIXVpU291cmNlQ29kZSB8fCB0aGlzLl9ldmFsdWF0aW9uU291
cmNlVVJMKHVpU291cmNlQ29kZSkgIT09IHNjcmlwdC5zb3VyY2VVUkwpCiAgICAgICAgICAgICBy
ZXR1cm47Ci0gICAgICAgIH0KIAogICAgICAgICBjb25zb2xlLmFzc2VydCghdGhpcy5fc2NyaXB0
Rm9yVUlTb3VyY2VDb2RlLmdldCh1aVNvdXJjZUNvZGUpKTsKICAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKICAgICAg
ICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7
CiAgICAgICAgIHVpU291cmNlQ29kZS5zY3JpcHRGaWxlKCkuc2V0SGFzRGl2ZXJnZWRGcm9tVk0o
ZmFsc2UpOwotICAgICAgICBzY3JpcHQuc2V0U291cmNlTWFwcGluZyh0aGlzLl9zbmlwcGV0U2Ny
aXB0TWFwcGluZyk7Ci0gICAgfSwKLQotICAgIC8qKgotICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlNjcmlwdH0gc2NyaXB0Ci0gICAgICogQHJldHVybiB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gdWlTb3VyY2VDb2RlCi0gICAgICovCi0gICAgX2NyZWF0ZVVJU291cmNlQ29kZUZvclNj
cmlwdDogZnVuY3Rpb24oc2NyaXB0KQotICAgIHsKLSAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9
IHRoaXMuX3dvcmtzcGFjZS5hZGRUZW1wb3JhcnlVSVNvdXJjZUNvZGUoc2NyaXB0LnNvdXJjZVVS
TCwgc2NyaXB0LCBmYWxzZSwgdHJ1ZSk7Ci0gICAgICAgIHVpU291cmNlQ29kZS5zZXRTb3VyY2VN
YXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nKTsKLSAgICAgICAgdGhpcy5fdWlTb3Vy
Y2VDb2RlRm9yU2NyaXB0SWRbc2NyaXB0LnNjcmlwdElkXSA9IHVpU291cmNlQ29kZTsKLSAgICAg
ICAgdGhpcy5fc2NyaXB0Rm9yVUlTb3VyY2VDb2RlLnB1dCh1aVNvdXJjZUNvZGUsIHNjcmlwdCk7
Ci0gICAgICAgIHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBw
aW5nKTsKLSAgICAgICAgcmV0dXJuIHVpU291cmNlQ29kZTsKKyAgICAgICAgc2NyaXB0LnB1c2hT
b3VyY2VNYXBwaW5nKHRoaXMuX3NuaXBwZXRTY3JpcHRNYXBwaW5nKTsKICAgICB9LAogCiAgICAg
LyoqCkBAIC0zNzAsOSArMzU0LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdFNuaXBwZXRNb2RlbC5w
cm90b3R5cGUgPSB7CiAgICAgICAgIGRlbGV0ZSB0aGlzLl91aVNvdXJjZUNvZGVGb3JTY3JpcHRJ
ZFtzY3JpcHQuc2NyaXB0SWRdOwogICAgICAgICB0aGlzLl9zY3JpcHRGb3JVSVNvdXJjZUNvZGUu
cmVtb3ZlKHVpU291cmNlQ29kZSk7CiAgICAgICAgIGRlbGV0ZSB1aVNvdXJjZUNvZGUuX2V2YWx1
YXRpb25JbmRleDsKLSAgICAgICAgdmFyIGNyZWF0ZWRVSVNvdXJjZUNvZGUgPSB0aGlzLl9jcmVh
dGVVSVNvdXJjZUNvZGVGb3JTY3JpcHQoc2NyaXB0KTsKKyAgICAgICAgc2NyaXB0LnBvcFNvdXJj
ZU1hcHBpbmcodGhpcy5fc25pcHBldFNjcmlwdE1hcHBpbmcpOwogICAgICAgICB1aVNvdXJjZUNv
ZGUuc2NyaXB0RmlsZSgpLnNldElzRGl2ZXJnaW5nRnJvbVZNKGZhbHNlKTsKLSAgICAgICAgcmV0
dXJuIGNyZWF0ZWRVSVNvdXJjZUNvZGU7CisgICAgICAgIHJldHVybiBzY3JpcHQucmF3TG9jYXRp
b25Ub1VJTG9jYXRpb24oMCwgMCkudWlTb3VyY2VDb2RlOwogICAgIH0sCiAKICAgICAvKioKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYyBi
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvV2ViS2l0LnFyYwppbmRleCBjY2Zh
YmMzYzczOWFkNzFlOTBjZGE1OWUzYTAyZjIzYTFhOTJkNDdiLi4zYmM4ZWQxNzc1NWMyMzBkMTQ1
OTRjMmIxZGMwOTNlOGNmMTQxODJjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvZnJvbnQtZW5kL1dlYktpdC5xcmMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC9XZWJLaXQucXJjCkBAIC00OSw2ICs0OSw3IEBACiAgICAgPGZpbGU+RGF0YUdyaWQu
anM8L2ZpbGU+CiAgICAgPGZpbGU+RGVidWdnZXJNb2RlbC5qczwvZmlsZT4KICAgICA8ZmlsZT5E
ZWJ1Z2dlclNjcmlwdE1hcHBpbmcuanM8L2ZpbGU+CisgICAgPGZpbGU+RGVmYXVsdFNjcmlwdE1h
cHBpbmcuanM8L2ZpbGU+CiAgICAgPGZpbGU+RGVmYXVsdFRleHRFZGl0b3IuanM8L2ZpbGU+CiAg
ICAgPGZpbGU+RGlhbG9nLmpzPC9maWxlPgogICAgIDxmaWxlPkRpcmVjdG9yeUNvbnRlbnRWaWV3
LmpzPC9maWxlPgpAQCAtMTA0LDYgKzEwNSw3IEBACiAgICAgPGZpbGU+anNkaWZmbGliLmpzPC9m
aWxlPgogICAgIDxmaWxlPktleWJvYXJkU2hvcnRjdXQuanM8L2ZpbGU+CiAgICAgPGZpbGU+TGlu
a2lmaWVyLmpzPC9maWxlPgorICAgIDxmaWxlPkxpdmVFZGl0U3VwcG9ydC5qczwvZmlsZT4KICAg
ICA8ZmlsZT5NZW1vcnlTdGF0aXN0aWNzLmpzPC9maWxlPgogICAgIDxmaWxlPk1ldHJpY3NTaWRl
YmFyUGFuZS5qczwvZmlsZT4KICAgICA8ZmlsZT5OYXRpdmVCcmVha3BvaW50c1NpZGViYXJQYW5l
LmpzPC9maWxlPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVu
ZC9pbnNwZWN0b3IuaHRtbCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5z
cGVjdG9yLmh0bWwKaW5kZXggMTljOTMzODlmOTM2ZWEyZmVlM2Y0N2JkZjkwYWUwMTQ3OTViNTM4
Yi4uOTA4YzZhNWU3ZDAyYmYyNThkMWI1YmI4NTQ5OTc2MGMzZTY2MGRlYyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCkBAIC0xNDEs
OCArMTQxLDEwIEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lC
SUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iV29ya3NwYWNlLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2
YXNjcmlwdCIgc3JjPSJCcmVha3BvaW50TWFuYWdlci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlw
dCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29udGVudFByb3ZpZGVycy5qcyI+PC9zY3Jp
cHQ+CisgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iRGVmYXVsdFNjcmlw
dE1hcHBpbmcuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0
IiBzcmM9IlJlc291cmNlU2NyaXB0TWFwcGluZy5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iQ29tcGlsZXJTY3JpcHRNYXBwaW5nLmpzIj48L3Nj
cmlwdD4KKyAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJMaXZlRWRpdFN1
cHBvcnQuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBz
cmM9IlNBU1NTb3VyY2VNYXBwaW5nLmpzIj48L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRl
eHQvamF2YXNjcmlwdCIgc3JjPSJET01BZ2VudC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iVGVzdENvbnRyb2xsZXIuanMiPjwvc2NyaXB0Pgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3Iu
anMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwppbmRl
eCBkYzEzYTNlZjE5MTI1NjhiZGYyYWEwOWViOTcyMmFmOGI1MzhmYWQ0Li5jZjYwYjhiNDc1OTI1
MzY3YTVhYmEyYzEwYWYxMzlmNTAwODVkNzc0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtNDM2LDYgKzQzNiw3IEBAIFdlYkluc3Bl
Y3Rvci5fZG9Mb2FkZWREb25lV2l0aENhcGFiaWxpdGllcyA9IGZ1bmN0aW9uKCkKIAogICAgIHRo
aXMuc2NyaXB0U25pcHBldE1vZGVsID0gbmV3IFdlYkluc3BlY3Rvci5TY3JpcHRTbmlwcGV0TW9k
ZWwodGhpcy53b3Jrc3BhY2UsIHRoaXMubmV0d29ya1dvcmtzcGFjZVByb3ZpZGVyKTsKICAgICBu
ZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyU2NyaXB0TWFwcGluZyh0aGlzLndvcmtzcGFjZSwgdGhp
cy5uZXR3b3JrV29ya3NwYWNlUHJvdmlkZXIpOworICAgIHRoaXMubGl2ZUVkaXRTdXBwb3J0ID0g
bmV3IFdlYkluc3BlY3Rvci5MaXZlRWRpdFN1cHBvcnQodGhpcy53b3Jrc3BhY2UpOwogICAgIHRo
aXMuc3R5bGVDb250ZW50QmluZGluZyA9IG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVDb250ZW50Qmlu
ZGluZyh0aGlzLmNzc01vZGVsKTsKICAgICBuZXcgV2ViSW5zcGVjdG9yLk5ldHdvcmtVSVNvdXJj
ZUNvZGVQcm92aWRlcih0aGlzLndvcmtzcGFjZSwgdGhpcy5uZXR3b3JrV29ya3NwYWNlUHJvdmlk
ZXIpOwogICAgIG5ldyBXZWJJbnNwZWN0b3IuU3R5bGVzU291cmNlTWFwcGluZyh0aGlzLndvcmtz
cGFjZSk7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTljZGY2YTg3ZDg4MTFlNmRkYTg0Mzc5NWYxMDI5YjI1NGU4MDgwYS4u
ZTkwYTY1YjQ3ZWJlYmY3MTJhOWExYjE5NjE4YWJiNzdmYjVmYzUwZSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDIyIEBACisyMDEyLTExLTIyICBWc2V2b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3Jn
PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IFNpbXBsaWZ5IHNjcmlwdCBtYXBwaW5ncyBieSBp
bnRyb2R1Y2luZyBEZWZhdWx0U2NyaXB0TWFwcGluZy4KKyAgICAgICAgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMzAzOAorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXIt
c2NyaXB0LW1hcHBpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtw
b2ludC1tYW5hZ2VyLWV4cGVjdGVkLnR4dDoKKyAgICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1tYW5hZ2VyLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL2R5
bmFtaWMtc2NyaXB0LXRhZy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVn
Z2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy1leHBlY3RlZC50eHQ6CisgICAgICAgICogaW5zcGVj
dG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy5odG1sOgorICAgICAgICAqIGluc3Bl
Y3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0LWV4cGVjdGVkLnR4dDoKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sOgorICAg
ICAgICAqIGluc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3Rl
ZC50eHQ6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNlLXNjcmlwdC1tYXBw
aW5nLmh0bWw6CisgICAgICAgICogaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRt
bDoKKwogMjAxMi0xMS0yMSAgWXVyeSBTZW1pa2hhdHNreSAgPHl1cnlzQGNocm9taXVtLm9yZz4K
IAogICAgICAgICBVbnJldmlld2VkLiBVcGRhdGVkIHRlc3QgZXhwZWN0YXRpb25zLgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1h
cHBpbmcuaHRtbCBiL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2NvbXBpbGVyLXNj
cmlwdC1tYXBwaW5nLmh0bWwKaW5kZXggZWJkZTA0ZjE2NGQ0YmZlNDExNjExODkzZWM3YmJmOTJm
MDY1NmU5MC4uMjc2NjA1YzY2MmRlZDU1MWVjMDc3ZDY4ZjAzODk5NTI0Y2MxODViNCAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvY29tcGlsZXItc2NyaXB0LW1h
cHBpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2luc3BlY3Rvci9jb21waWxl
ci1zY3JpcHQtbWFwcGluZy5odG1sCkBAIC04LDExICs4LDE1IEBACiAKIGZ1bmN0aW9uIHRlc3Qo
KQogeworICAgIHZhciBkZWZhdWx0U2NyaXB0TWFwcGluZzsKKyAgICB2YXIgcmVzb3VyY2VTY3Jp
cHRNYXBwaW5nOworCiAgICAgZnVuY3Rpb24gY3JlYXRlQ29tcGlsZXJTY3JpcHRNYXBwaW5nKCkK
ICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuY3JlYXRlV29ya3NwYWNlKCk7CiAgICAgICAg
IHZhciBjb21waWxlclNjcmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkNvbXBpbGVyU2Ny
aXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UsIEluc3BlY3RvclRlc3QudGVz
dE5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlcik7Ci0gICAgICAgIHZhciByZXNvdXJjZVNjcmlwdE1h
cHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JU
ZXN0LnRlc3RXb3Jrc3BhY2UpOworICAgICAgICByZXNvdXJjZVNjcmlwdE1hcHBpbmcgPSBuZXcg
V2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0b3JUZXN0LnRlc3RXb3Jr
c3BhY2UpOworICAgICAgICBkZWZhdWx0U2NyaXB0TWFwcGluZyA9IG5ldyBXZWJJbnNwZWN0b3Iu
RGVmYXVsdFNjcmlwdE1hcHBpbmcoSW5zcGVjdG9yVGVzdC50ZXN0V29ya3NwYWNlKTsKICAgICAg
ICAgcmV0dXJuIGNvbXBpbGVyU2NyaXB0TWFwcGluZzsKICAgICB9CiAKQEAgLTEzOCw2ICsxNDIs
NyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHZhciBzY3JpcHQ7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAgIHZhciBt
YXBwaW5nID0gY3JlYXRlQ29tcGlsZXJTY3JpcHRNYXBwaW5nKCk7CisgICAgICAgICAgICB2YXIg
b3JpZ2luYWxVSVNvdXJjZUNvZGU7CiAgICAgICAgICAgICBzdGVwMSgpOwogCiAgICAgICAgICAg
ICBmdW5jdGlvbiBzdGVwMSgpCkBAIC0xNDUsMzQgKzE1MCwzNSBAQCBmdW5jdGlvbiB0ZXN0KCkK
ICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlV
SVNvdXJjZUNvZGVBZGRlZEV2ZW50KG9yaWdpbmFsVUlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAg
ICAgICAgICAgIHNjcmlwdCA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jaygiY29tcGls
ZWQuanMiLCAwLCAwLCB0cnVlLCAiIik7CiAgICAgICAgICAgICAgICAgc2NyaXB0LnNvdXJjZU1h
cFVSTCA9ICJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2Ut
bWFwLmpzb24iOwotICAgICAgICAgICAgICAgIHNjcmlwdC5zZXRTb3VyY2VNYXBwaW5nKG1hcHBp
bmcpOworICAgICAgICAgICAgICAgIGRlZmF1bHRTY3JpcHRNYXBwaW5nLmFkZFNjcmlwdChzY3Jp
cHQpOworICAgICAgICAgICAgICAgIHJlc291cmNlU2NyaXB0TWFwcGluZy5hZGRTY3JpcHQoc2Ny
aXB0KTsKICAgICAgICAgICAgICAgICBtYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQpOwogICAgICAg
ICAgICAgICAgIGFmdGVyU2NyaXB0QWRkZWQoKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAg
ICAgZnVuY3Rpb24gb3JpZ2luYWxVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAg
ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0Rm9yV29ya3NwYWNl
VUlTb3VyY2VDb2RlQWRkZWRFdmVudChmaXJzdFVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2
ZW50KG9yaWdpbmFsUmVzb3VyY2VVSVNvdXJjZUNvZGVBZGRlZCk7CisgICAgICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5hZGRNb2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UoImNvbXBpbGVkLmpz
IiwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlwZXMuU2NyaXB0LCAiIik7CiAgICAgICAgICAgICB9
CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGZpcnN0VUlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VD
b2RlKQorICAgICAgICAgICAgZnVuY3Rpb24gb3JpZ2luYWxSZXNvdXJjZVVJU291cmNlQ29kZUFk
ZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KHNlY29uZFVJU291
cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jr
c3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KGZpcnN0VUlTb3VyY2VDb2RlQWRkZWQpOworICAg
ICAgICAgICAgICAgIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwogICAgICAg
ICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBzZWNvbmRVSVNvdXJjZUNvZGVBZGRlZCh1
aVNvdXJjZUNvZGUpCisgICAgICAgICAgICBmdW5jdGlvbiBmaXJzdFVJU291cmNlQ29kZUFkZGVk
KHVpU291cmNlQ29kZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JU
ZXN0LndhaXRGb3JXb3Jrc3BhY2VVSVNvdXJjZUNvZGVBZGRlZEV2ZW50KG9yaWdpbmFsUmVzb3Vy
Y2VVSVNvdXJjZUNvZGVBZGRlZCk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRN
b2NrVUlTb3VyY2VDb2RlVG9Xb3Jrc3BhY2UoImNvbXBpbGVkLmpzIiwgV2ViSW5zcGVjdG9yLnJl
c291cmNlVHlwZXMuU2NyaXB0LCAiIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53
YWl0Rm9yV29ya3NwYWNlVUlTb3VyY2VDb2RlQWRkZWRFdmVudChzZWNvbmRVSVNvdXJjZUNvZGVB
ZGRlZCk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIG9yaWdpbmFsUmVz
b3VyY2VVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpIHsgfQorICAgICAgICAgICAgZnVu
Y3Rpb24gc2Vjb25kVUlTb3VyY2VDb2RlQWRkZWQodWlTb3VyY2VDb2RlKSB7IH0KIAogICAgICAg
ICAgICAgZnVuY3Rpb24gYWZ0ZXJTY3JpcHRBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29kZTEgPSBJbnNwZWN0b3JUZXN0LnRl
c3RXb3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJMKCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5z
cGVjdG9yL3Jlc291cmNlcy9zb3VyY2UxLmpzIik7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291
cmNlQ29kZTIgPSBJbnNwZWN0b3JUZXN0LnRlc3RXb3Jrc3BhY2UudWlTb3VyY2VDb2RlRm9yVVJM
KCJodHRwOi8vbG9jYWxob3N0OjgwMDAvaW5zcGVjdG9yL3Jlc291cmNlcy9zb3VyY2UyLmpzIik7
Ci0gICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlID0gbWFwcGluZy5fb3Jp
Z2luYWxVSVNvdXJjZUNvZGVGb3JTY3JpcHRJZFtzY3JpcHQuc2NyaXB0SWRdOwogCiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlMSwgNCwg
NCwgc2NyaXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDgxKSk7CiAgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odWlTb3VyY2VDb2RlMSwgNSwgNCwgc2Ny
aXB0LnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDkzKSk7CkBAIC0yMjAsNiArMjI2LDggQEAg
ZnVuY3Rpb24gdGVzdCgpCiAKICAgICAgICAgICAgIGZ1bmN0aW9uIGNvbXBpbGVkVUlTb3VyY2VD
b2RlQWRkZWQodWlTb3VyY2VDb2RlKSB7IH0KICAgICAgICAgICAgIAorICAgICAgICAgICAgZGVm
YXVsdFNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CisgICAgICAgICAgICByZXNvdXJj
ZVNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0KHNjcmlwdCk7CiAgICAgICAgICAgICBtYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQpOwogCiAgICAgICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gSW5zcGVj
dG9yVGVzdC50ZXN0V29ya3NwYWNlLnVpU291cmNlQ29kZUZvclVSTCgic291cmNlLmpzIik7CmRp
ZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvYnJlYWtwb2ludC1tYW5h
Z2VyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3Bv
aW50LW1hbmFnZXItZXhwZWN0ZWQudHh0CmluZGV4IDMzODg2NzAxMjgxNzkzOWY2NDJmMzFhOWVi
ZmFlZWE0ZWVkNGQzYTcuLjRkYjUxNTE0YWNmZDJlOWU1M2ExYjRjNTU5NmQ5ZjNlMDBjNDZjMDMg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1h
bmFnZXItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9i
cmVha3BvaW50LW1hbmFnZXItZXhwZWN0ZWQudHh0CkBAIC0xMTAsMjAgKzExMCwxMiBAQCBSdW5u
aW5nOiB0ZXN0UmVzdG9yZUJyZWFrcG9pbnRzQWZ0ZXJUZW1wb3JhcnlVSVNvdXJjZUNvZGVSZW1v
dmVkCiAgICAgYS5qczoyMCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKICAgICBiLmpzOjMgZW5h
YmxlZDp0cnVlIGNvbmRpdGlvbjoKICAgQWRkaW5nIHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6IGEu
anMpCi0gICAgZGVidWdnZXJNb2RlbC5zZXRCcmVha3BvaW50KGEuanM6MTA6Zm9vID09IGJhcikK
LSAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMTAsIGZvbyA9PSBiYXIsIHRydWUpCi0gICAgTG9j
YXRpb24gY3JlYXRlZDogYS5qczoxMAotICAgIGJyZWFrcG9pbnRBZGRlZChhLmpzLCAyMCwgLCBm
YWxzZSkKICAgQWRkaW5nIFVJU291cmNlQ29kZTogYS5qcykKLSAgUmVtb3ZpbmcgdGVtcG9yYXJ5
IFVJU291cmNlQ29kZTogYS5qcykKLSAgICBicmVha3BvaW50UmVtb3ZlZChhLmpzLCAxMCkKLSAg
ICBMb2NhdGlvbiBkaXNwb3NlZDogYS5qczoxMAotICAgIGRlYnVnZ2VyTW9kZWwucmVtb3ZlQnJl
YWtwb2ludChhLmpzOjEwKQotICAgIGJyZWFrcG9pbnRSZW1vdmVkKGEuanMsIDIwKQogICAgIGRl
YnVnZ2VyTW9kZWwuc2V0QnJlYWtwb2ludChhLmpzOjEwOmZvbyA9PSBiYXIpCiAgICAgYnJlYWtw
b2ludEFkZGVkKGEuanMsIDEwLCBmb28gPT0gYmFyLCB0cnVlKQogICAgIExvY2F0aW9uIGNyZWF0
ZWQ6IGEuanM6MTAKICAgICBicmVha3BvaW50QWRkZWQoYS5qcywgMjAsICwgZmFsc2UpCisgIFJl
bW92aW5nIHRlbXBvcmFyeSBVSVNvdXJjZUNvZGU6IGEuanMpCiAgIER1bXBpbmcgU3RvcmFnZQog
ICAgIGEuanM6MTAgZW5hYmxlZDp0cnVlIGNvbmRpdGlvbjpmb28gPT0gYmFyCiAgICAgYS5qczoy
MCBlbmFibGVkOmZhbHNlIGNvbmRpdGlvbjoKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9icmVha3BvaW50LW1hbmFnZXIuaHRtbAppbmRleCBkNGU1M2E0ZGRkNjg1
MjA1MzhkYTU3ZTYyNDIzZTRiNTNkMjVhOGY1Li43YWQ5ZGM4NzIwZTAyYzdlNjJhZGFjY2U5NzI3
ZWY2YzM5MGI1ZDJhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
YnJlYWtwb2ludC1tYW5hZ2VyLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL2JyZWFrcG9pbnQtbWFuYWdlci5odG1sCkBAIC00Myw3ICs0Myw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBfYWRkU2NyaXB0OiBmdW5jdGlvbihzY3JpcHRJZCwgdXJsKQogICAgICAg
ICB7CiAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdElkXSA9IG5ldyBXZWJJbnNwZWN0
b3IuU2NyaXB0KHNjcmlwdElkLCB1cmwpOwotICAgICAgICAgICAgdGhpcy5fc2NyaXB0c1tzY3Jp
cHRJZF0uc2V0U291cmNlTWFwcGluZyh0aGlzLl9zb3VyY2VNYXBwaW5nKTsKKyAgICAgICAgICAg
IHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdLnB1c2hTb3VyY2VNYXBwaW5nKHRoaXMuX3NvdXJjZU1h
cHBpbmcpOwogICAgICAgICB9LAogCiAgICAgICAgIHNldEJyZWFrcG9pbnRCeVNjcmlwdExvY2F0
aW9uOiBmdW5jdGlvbihsb2NhdGlvbiwgY29uZGl0aW9uLCBjYWxsYmFjaykKQEAgLTk2LDEwICs5
NiwxNiBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHMgPSB7fTsK
ICAgICAgICAgfSwKIAotICAgICAgICBzZXRTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihzb3VyY2VN
YXBwaW5nKQorICAgICAgICBwdXNoU291cmNlTWFwcGluZzogZnVuY3Rpb24oc291cmNlTWFwcGlu
ZykKICAgICAgICAgewogICAgICAgICAgICAgZm9yICh2YXIgc2NyaXB0SWQgaW4gdGhpcy5fc2Ny
aXB0cykKLSAgICAgICAgICAgICAgICB0aGlzLl9zY3JpcHRzW3NjcmlwdElkXS5zZXRTb3VyY2VN
YXBwaW5nKHNvdXJjZU1hcHBpbmcpOworICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHNbc2Ny
aXB0SWRdLnB1c2hTb3VyY2VNYXBwaW5nKHNvdXJjZU1hcHBpbmcpOworICAgICAgICB9LAorCisg
ICAgICAgIGRpc2FibGVTb3VyY2VNYXBwaW5nOiBmdW5jdGlvbihzb3VyY2VNYXBwaW5nKQorICAg
ICAgICB7CisgICAgICAgICAgICBmb3IgKHZhciBzY3JpcHRJZCBpbiB0aGlzLl9zY3JpcHRzKQor
ICAgICAgICAgICAgICAgIHRoaXMuX3NjcmlwdHNbc2NyaXB0SWRdLmRpc2FibGVTb3VyY2VNYXBw
aW5nKHNvdXJjZU1hcHBpbmcpOwogICAgICAgICB9CiAgICAgfQogICAgIERlYnVnZ2VyTW9kZWxN
b2NrLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsK
QEAgLTM3OCwxMCArMzg0LDEwIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHVp
U291cmNlQ29kZUEgPSBhZGRVSVNvdXJjZUNvZGUoYnJlYWtwb2ludE1hbmFnZXIsICJhLmpzIik7
CiAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiXG4gIFRvZ2dsaW5nIHNvdXJj
ZSBtYXBwaW5nLiIpOwogICAgICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX3NvdXJjZU1hcHBp
bmcgPSBzaGlmdGluZ01hcHBpbmc7Ci0gICAgICAgICAgICBicmVha3BvaW50TWFuYWdlci5fZGVi
dWdnZXJNb2RlbC5zZXRTb3VyY2VNYXBwaW5nKHNoaWZ0aW5nTWFwcGluZyk7CisgICAgICAgICAg
ICBicmVha3BvaW50TWFuYWdlci5fZGVidWdnZXJNb2RlbC5wdXNoU291cmNlTWFwcGluZyhzaGlm
dGluZ01hcHBpbmcpOwogICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlxuICBU
b2dnbGluZyBzb3VyY2UgbWFwcGluZyBiYWNrLiIpOwogICAgICAgICAgICAgYnJlYWtwb2ludE1h
bmFnZXIuX3NvdXJjZU1hcHBpbmcgPSBkZWZhdWx0TWFwcGluZzsKLSAgICAgICAgICAgIGJyZWFr
cG9pbnRNYW5hZ2VyLl9kZWJ1Z2dlck1vZGVsLnNldFNvdXJjZU1hcHBpbmcoZGVmYXVsdE1hcHBp
bmcpOworICAgICAgICAgICAgYnJlYWtwb2ludE1hbmFnZXIuX2RlYnVnZ2VyTW9kZWwuZGlzYWJs
ZVNvdXJjZU1hcHBpbmcoc2hpZnRpbmdNYXBwaW5nKTsKICAgICAgICAgICAgIHJlc2V0QnJlYWtw
b2ludE1hbmFnZXIoYnJlYWtwb2ludE1hbmFnZXIsIG5leHQpOwogICAgICAgICB9LAogCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvZHluYW1pYy1zY3JpcHQtdGFn
LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNj
cmlwdC10YWctZXhwZWN0ZWQudHh0CmluZGV4IDVkNTk5MWMyMjZjZDNiZGYwOWVjOWUxYzI5MjQ3
NmI2YTA0YzVjMGIuLjEyMGVmMzU1NzBjMTE4MDAxYTU5NTJmMTIxN2QxYzAxYjk2OGI4YWEgMTAw
NjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10
YWctZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5h
bWljLXNjcmlwdC10YWctZXhwZWN0ZWQudHh0CkBAIC05LDEzICs5LDEzIEBAIHNjcmlwdDI6IExh
eW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlwdC10YWcuaHRtbAogSXMg
YW5vbnltb3VzOmZhbHNlCiBJcyBpbmxpbmUgc2NyaXB0OmZhbHNlCiBEdW1waW5nIHVpU291cmNl
Q29kZXM6Ci1VSVNvdXJjZUNvZGU6IAotVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiB0cnVlCitV
SVNvdXJjZUNvZGU6IExheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9keW5hbWljLXNjcmlw
dC10YWcuaHRtbAorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQogVUlTb3VyY2VDb2Rl
IGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2phdmFzY3JpcHQKIFVJ
U291cmNlQ29kZSBjb250ZW50OiBmdW5jdGlvbiBmb28oKSB7IH0KLVVJU291cmNlQ29kZTogCi1V
SVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKK1VJU291cmNlQ29kZTogTGF5b3V0VGVzdHMv
aW5zcGVjdG9yL2RlYnVnZ2VyL2R5bmFtaWMtc2NyaXB0LXRhZy5odG1sCitVSVNvdXJjZUNvZGUg
aXMgZWRpdGFibGU6IGZhbHNlCiBVSVNvdXJjZUNvZGUgaXMgY29udGVudCBzY3JpcHQ6IGZhbHNl
CiBNaW1lIHR5cGU6IHRleHQvamF2YXNjcmlwdAogVUlTb3VyY2VDb2RlIGNvbnRlbnQ6IGZ1bmN0
aW9uIGJhcigpIHsgfQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L2xpdmUtZWRpdC1icmVha3BvaW50cy1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNwZWN0
b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAppbmRleCBhNTky
Mjc3M2NhNjZlMTUwNDRiNDMzYjhmNzY4OTIyMTMyMWM0NWZiLi5iZjk0N2FjYjQ1MTdmMDgzYTIz
MjdkZDQ2MGVkNDkyMjU1NWVjZjViIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4dAorKysgYi9MYXlvdXRU
ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLWV4cGVjdGVkLnR4
dApAQCAtNDAsOSArNDAsOSBAQCBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAgRHVtcGluZyBicmVh
a3BvaW50IGxvY2F0aW9ucwogICAgICAgICB1cmw6IGVkaXQtbWUuanMsIGxpbmVOdW1iZXI6IDIs
IGlzVGVtcG9yYXJ5OiBmYWxzZQogRWRpdGluZyBzb3VyY2U6CisgICAgT3JpZ2luYWxUZXh0RWRp
dG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAgICAg
VGV4dEVkaXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQogICAgIFRleHRFZGl0
b3IuYWRkQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9y
aWdpbmFsVGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9
IGZhbHNlKQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCiAgICAgICAgIGVkaXQtbWUu
anM6MiwgZW5hYmxlZDp0cnVlCiAgICAgRHVtcGluZyBicmVha3BvaW50IGxvY2F0aW9ucwpAQCAt
NjksOSArNjksOSBAQCBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAgRHVtcGluZyBicmVha3BvaW50
IGxvY2F0aW9ucwogICAgICAgICB1cmw6IGVkaXQtbWUuanMsIGxpbmVOdW1iZXI6IDIsIGlzVGVt
cG9yYXJ5OiBmYWxzZQogRWRpdGluZyBzb3VyY2U6CisgICAgT3JpZ2luYWxUZXh0RWRpdG9yLmFk
ZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAgICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQogICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9yaWdpbmFs
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCiAgICAgICAgIGVkaXQtbWUuanM6Miwg
ZW5hYmxlZDp0cnVlCiAgICAgRHVtcGluZyBicmVha3BvaW50IGxvY2F0aW9ucwpAQCAtMTA4LDkg
KzEwOCw5IEBAIFNldHRpbmcgYnJlYWtwb2ludDoKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9j
YXRpb25zCiAgICAgICAgIHVybDogZWRpdC1tZS5qcywgbGluZU51bWJlcjogMiwgaXNUZW1wb3Jh
cnk6IGZhbHNlCiBFZGl0aW5nIHNvdXJjZToKKyAgICBPcmlnaW5hbFRleHRFZGl0b3IuYWRkQnJl
YWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSBmYWxzZSkKICAgICBUZXh0RWRpdG9y
LnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCiAgICAgVGV4dEVkaXRvci5hZGRCcmVh
a3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IHRydWUpCi0gICAgT3JpZ2luYWxUZXh0
RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFsc2UpCiAg
ICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKICAgICAgICAgZWRpdC1tZS5qczoyLCBlbmFi
bGVkOnRydWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCkBAIC0xNDcsMjQgKzE0
NywxNCBAQCBTaG93aW5nIHNjcmlwdCBzb3VyY2U6CiBTZXR0aW5nIGJyZWFrcG9pbnQ6CiAgICAg
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRy
dWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5l
TnVtYmVyOiAyLCBpc1RlbXBvcmFyeTogdHJ1ZQogRWRpdGluZyBzb3VyY2U6Ci0gICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQotICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSB0cnVlKQotICAgIE9yaWdpbmFs
VGV4dEVkaXRvci5hZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNl
KQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRy
dWUKICAgICBEdW1waW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5l
TnVtYmVyOiAyLCBpc1RlbXBvcmFyeTogdHJ1ZQogVW5kb2luZyBzb3VyY2UgZWRpdGluZzoKLSAg
ICBPcmlnaW5hbFRleHRFZGl0b3IucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMikKLSAg
ICBUZXh0RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVk
aXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQotICAgIFRleHRFZGl0b3IuYWRk
QnJlYWtwb2ludChsaW5lTnVtYmVyID0gMiwgZGlzYWJsZWQgPSBmYWxzZSkKICAgICBEdW1waW5n
IGJyZWFrcG9pbnQgc3RvcmFnZQotICAgICAgICA6MiwgZW5hYmxlZDp0cnVlCiAgICAgRHVtcGlu
ZyBicmVha3BvaW50IGxvY2F0aW9ucwogICAgICAgICB1cmw6ICwgbGluZU51bWJlcjogMiwgaXNU
ZW1wb3Jhcnk6IHRydWUKIEZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtwb2ludDoKQEAgLTE4MCwyNCAr
MTcwLDE0IEBAIFNob3dpbmcgc2NyaXB0IHNvdXJjZToKIFNldHRpbmcgYnJlYWtwb2ludDoKICAg
ICBUZXh0RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFs
c2UpCiAgICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKLSAgICAgICAgOjIsIGVuYWJsZWQ6
dHJ1ZQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBsb2NhdGlvbnMKICAgICAgICAgdXJsOiAsIGxp
bmVOdW1iZXI6IDIsIGlzVGVtcG9yYXJ5OiB0cnVlCiBFZGl0aW5nIHNvdXJjZToKLSAgICBUZXh0
RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVkaXRvci5h
ZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IHRydWUpCi0gICAgT3JpZ2lu
YWxUZXh0RWRpdG9yLmFkZEJyZWFrcG9pbnQobGluZU51bWJlciA9IDIsIGRpc2FibGVkID0gZmFs
c2UpCiAgICAgRHVtcGluZyBicmVha3BvaW50IHN0b3JhZ2UKLSAgICAgICAgOjIsIGVuYWJsZWQ6
dHJ1ZQogICAgIER1bXBpbmcgYnJlYWtwb2ludCBsb2NhdGlvbnMKICAgICAgICAgdXJsOiAsIGxp
bmVOdW1iZXI6IDIsIGlzVGVtcG9yYXJ5OiB0cnVlCiBVbmRvaW5nIHNvdXJjZSBlZGl0aW5nOgot
ICAgIE9yaWdpbmFsVGV4dEVkaXRvci5yZW1vdmVCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyKQot
ICAgIFRleHRFZGl0b3IucmVtb3ZlQnJlYWtwb2ludChsaW5lTnVtYmVyID0gMikKLSAgICBUZXh0
RWRpdG9yLnJlbW92ZUJyZWFrcG9pbnQobGluZU51bWJlciA9IDIpCi0gICAgVGV4dEVkaXRvci5h
ZGRCcmVha3BvaW50KGxpbmVOdW1iZXIgPSAyLCBkaXNhYmxlZCA9IGZhbHNlKQogICAgIER1bXBp
bmcgYnJlYWtwb2ludCBzdG9yYWdlCi0gICAgICAgIDoyLCBlbmFibGVkOnRydWUKICAgICBEdW1w
aW5nIGJyZWFrcG9pbnQgbG9jYXRpb25zCiAgICAgICAgIHVybDogLCBsaW5lTnVtYmVyOiAyLCBp
c1RlbXBvcmFyeTogdHJ1ZQogRmluYWxseSByZW1vdmluZyBicmVha3BvaW50OgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50cy5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL2xpdmUtZWRpdC1icmVha3BvaW50
cy5odG1sCmluZGV4IGJlOGI0NTUxMjRiNmRhZWJlNjI4NzZjNTRjMmI4MTEyMTYwMzllZDQuLmYw
NTEzZTIyNWI1MWJkYWRhNzU0YWJhNmNhMDIxYzE3OTdmM2Y5ZjUgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9saXZlLWVkaXQtYnJlYWtwb2ludHMuaHRtbAorKysg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvbGl2ZS1lZGl0LWJyZWFrcG9pbnRzLmh0
bWwKQEAgLTI5NSw3ICsyOTUsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBmdW5jdGlv
biB0ZXN0RWRpdEFub255bW91c1VuZG8obmV4dCkKICAgICAgICAgewotICAgICAgICAgICAgdmFy
IGphdmFTY3JpcHRTb3VyY2VGcmFtZSwgdWlTb3VyY2VDb2RlLCBzY3JpcHQsIG9yaWdpbmFsSmF2
YVNjcmlwdFNvdXJjZUZyYW1lLCBvcmlnaW5hbFVJU291cmNlQ29kZTsKKyAgICAgICAgICAgIHZh
ciBqYXZhU2NyaXB0U291cmNlRnJhbWUsIHVpU291cmNlQ29kZSwgc2NyaXB0LCBsaXZlRWRpdFNv
dXJjZUZyYW1lLCBsaXZlRWRpdFVJU291cmNlQ29kZTsKICAgICAgICAgICAgIAogICAgICAgICAg
ICAgZnVuY3Rpb24gdGVzdEZ1bmN0aW9uKCkKICAgICAgICAgICAgIHsKQEAgLTMyOSwzMSArMzI5
LDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgICAgIHNjcmlwdCA9IFdlYkluc3Bl
Y3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZvcklkKGxvY2F0aW9uLnNjcmlwdElkKTsKIAogICAg
ICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwotICAgICAg
ICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJFZGl0aW5nIHNvdXJjZToiKTsKLSAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlcGxhY2VJblNvdXJjZShqYXZhU2NyaXB0U291
cmNlRnJhbWUsICJ9IiwgIn0vLyIpOwotCi0gICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJj
ZUNvZGUgPSBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJl
cikudWlTb3VyY2VDb2RlOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1VJU291
cmNlQ29kZShvcmlnaW5hbFVJU291cmNlQ29kZSwgZGlkU2hvd09yaWdpbmFsVUlTb3VyY2VDb2Rl
KTsKKyAgICAgICAgICAgICAgICBsaXZlRWRpdFVJU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5s
aXZlRWRpdFN1cHBvcnQudWlTb3VyY2VDb2RlRm9yTGl2ZUVkaXQodWlTb3VyY2VDb2RlKTsKKyAg
ICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNv
dXJjZUNvZGUsIGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZSk7CiAgICAgICAgICAgICB9CiAK
LSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dPcmlnaW5hbFVJU291cmNlQ29kZShzb3VyY2VG
cmFtZSkKKyAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZShz
b3VyY2VGcmFtZSkKICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICBvcmlnaW5hbEphdmFT
Y3JpcHRTb3VyY2VGcmFtZSA9IHNvdXJjZUZyYW1lOwotICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYXNzZXJ0VHJ1ZShvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSAhPT0gamF2YVNj
cmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJh
bWVzIHNob3VsZCBkaWZmZXIuIik7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3Nl
cnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2RlICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5k
IG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGRpZmZlci4iKTsKLQorICAgICAgICAgICAg
ICAgIGxpdmVFZGl0U291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFzc2VydFRydWUobGl2ZUVkaXRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlw
dFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVz
IHNob3VsZCBkaWZmZXIuIik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRU
cnVlKGxpdmVFZGl0VUlTb3VyY2VDb2RlICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9y
aWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGRpZmZlci4iKTsKKyAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWRpdGluZyBzb3VyY2U6Iik7CisgICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5yZXBsYWNlSW5Tb3VyY2UoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAi
fSIsICJ9Ly8iKTsKICAgICAgICAgICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2Nh
dGlvbnMoKTsKKworICAgICAgICAgICAgICAgIHZhciBvcmlnaW5hbFVJU291cmNlQ29kZSA9IHNj
cmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbihsb2NhdGlvbi5saW5lTnVtYmVyKS51aVNvdXJj
ZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFs
VUlTb3VyY2VDb2RlID09PSB1aVNvdXJjZUNvZGUsICJNYXBwZWQgYW5kIG9yaWdpbmFsIHVpU291
cmNlQ29kZXMgc2hvdWxkIGJlIHRoZSBzYW1lLiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJVbmRvaW5nIHNvdXJjZSBlZGl0aW5nOiIpOwotICAgICAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFn
ZXIuQnJlYWtwb2ludC5wcm90b3R5cGUsICJfYWRkUmVzb2x2ZWRMb2NhdGlvbiIsIGJyZWFrcG9p
bnRSZXNvbHZlZEFnYWluKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnVuZG9Tb3Vy
Y2VFZGl0aW5nKGphdmFTY3JpcHRTb3VyY2VGcmFtZSk7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC51bmRvU291cmNlRWRpdGluZyhsaXZlRWRpdFNvdXJjZUZyYW1lKTsKKyAgICAgICAg
ICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2NhdGlvbnMoKTsKKyAgICAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCBkaWRTaG93
T3JpZ2luYWxVSVNvdXJjZUNvZGUpOwogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5j
dGlvbiBicmVha3BvaW50UmVzb2x2ZWRBZ2FpbigpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRT
aG93T3JpZ2luYWxVSVNvdXJjZUNvZGUoc291cmNlRnJhbWUpCiAgICAgICAgICAgICB7Ci0gICAg
ICAgICAgICAgICAgZHVtcEJyZWFrcG9pbnRTdG9yYWdlQW5kTG9jYXRpb25zKCk7CiAgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIkZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtw
b2ludDoiKTsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnJlbW92ZUJyZWFrcG9pbnQo
amF2YVNjcmlwdFNvdXJjZUZyYW1lLCAyKTsKLQogICAgICAgICAgICAgICAgIGR1bXBCcmVha3Bv
aW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwogICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAg
ICAgICAgIH0KQEAgLTM2MSw3ICszNjEsNyBAQCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgICAgICBm
dW5jdGlvbiB0ZXN0RWRpdER5bmFtaWNBbm9ueW1vdXNVbmRvKG5leHQpCiAgICAgICAgIHsKLSAg
ICAgICAgICAgIHZhciBqYXZhU2NyaXB0U291cmNlRnJhbWUsIHVpU291cmNlQ29kZSwgc2NyaXB0
LCBvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSwgb3JpZ2luYWxVSVNvdXJjZUNvZGU7Cisg
ICAgICAgICAgICB2YXIgamF2YVNjcmlwdFNvdXJjZUZyYW1lLCB1aVNvdXJjZUNvZGUsIHNjcmlw
dCwgbGl2ZUVkaXRTb3VyY2VGcmFtZSwgbGl2ZUVkaXRVSVNvdXJjZUNvZGU7CiAgICAgICAgICAg
ICAKICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZXZhbHVhdGVJblBhZ2UoImxvYWREeW5hbWlj
QW5vbnltb3VzU2NyaXB0KCkiLCBJbnNwZWN0b3JUZXN0LnJ1blRlc3RGdW5jdGlvbkFuZFdhaXRV
bnRpbFBhdXNlZC5iaW5kKEluc3BlY3RvclRlc3QsIHBhdXNlZCkpOwogICAgICAgICAgICAgZnVu
Y3Rpb24gcGF1c2VkKCkKQEAgLTM5MSwzMSArMzkxLDMxIEBAIGZ1bmN0aW9uIHRlc3QoKQogICAg
ICAgICAgICAgICAgIHNjcmlwdCA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnNjcmlwdEZv
cklkKGxvY2F0aW9uLnNjcmlwdElkKTsKIAogICAgICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50
U3RvcmFnZUFuZExvY2F0aW9ucygpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
UmVzdWx0KCJFZGl0aW5nIHNvdXJjZToiKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnJlcGxhY2VJblNvdXJjZShqYXZhU2NyaXB0U291cmNlRnJhbWUsICJ9IiwgIn0vLyIpOwotCi0g
ICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUgPSBzY3JpcHQucmF3TG9jYXRpb25U
b1VJTG9jYXRpb24obG9jYXRpb24ubGluZU51bWJlcikudWlTb3VyY2VDb2RlOwotICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Quc2hvd1VJU291cmNlQ29kZShvcmlnaW5hbFVJU291cmNlQ29k
ZSwgZGlkU2hvd09yaWdpbmFsVUlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBsaXZlRWRp
dFVJU291cmNlQ29kZSA9IFdlYkluc3BlY3Rvci5saXZlRWRpdFN1cHBvcnQudWlTb3VyY2VDb2Rl
Rm9yTGl2ZUVkaXQodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LnNob3dVSVNvdXJjZUNvZGUobGl2ZUVkaXRVSVNvdXJjZUNvZGUsIGRpZFNob3dMaXZlRWRpdFNj
cmlwdFNvdXJjZSk7CiAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGZ1bmN0aW9uIGRpZFNo
b3dPcmlnaW5hbFVJU291cmNlQ29kZShzb3VyY2VGcmFtZSkKKyAgICAgICAgICAgIGZ1bmN0aW9u
IGRpZFNob3dMaXZlRWRpdFNjcmlwdFNvdXJjZShzb3VyY2VGcmFtZSkKICAgICAgICAgICAgIHsK
LSAgICAgICAgICAgICAgICBvcmlnaW5hbEphdmFTY3JpcHRTb3VyY2VGcmFtZSA9IHNvdXJjZUZy
YW1lOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0VHJ1ZShvcmlnaW5hbEph
dmFTY3JpcHRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFu
ZCBvcmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVzIHNob3VsZCBkaWZmZXIuIik7Ci0gICAg
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2Rl
ICE9PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hv
dWxkIGRpZmZlci4iKTsKLQorICAgICAgICAgICAgICAgIGxpdmVFZGl0U291cmNlRnJhbWUgPSBz
b3VyY2VGcmFtZTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUobGl2
ZUVkaXRTb3VyY2VGcmFtZSAhPT0gamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAiRWRpdGVkIGFuZCBv
cmlnaW5hbCBqYXZhU2NyaXB0U291cmNlRnJhbWVzIHNob3VsZCBkaWZmZXIuIik7CisgICAgICAg
ICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRUcnVlKGxpdmVFZGl0VUlTb3VyY2VDb2RlICE9
PSB1aVNvdXJjZUNvZGUsICJFZGl0ZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxk
IGRpZmZlci4iKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiRWRp
dGluZyBzb3VyY2U6Iik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5yZXBsYWNlSW5T
b3VyY2UoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAifSIsICJ9Ly8iKTsKICAgICAgICAgICAgICAg
ICBkdW1wQnJlYWtwb2ludFN0b3JhZ2VBbmRMb2NhdGlvbnMoKTsKKworICAgICAgICAgICAgICAg
IHZhciBvcmlnaW5hbFVJU291cmNlQ29kZSA9IHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bihsb2NhdGlvbi5saW5lTnVtYmVyKS51aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hc3NlcnRUcnVlKG9yaWdpbmFsVUlTb3VyY2VDb2RlID09PSB1aVNvdXJjZUNv
ZGUsICJNYXBwZWQgYW5kIG9yaWdpbmFsIHVpU291cmNlQ29kZXMgc2hvdWxkIGJlIHRoZSBzYW1l
LiIpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJVbmRvaW5nIHNv
dXJjZSBlZGl0aW5nOiIpOwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZl
cihXZWJJbnNwZWN0b3IuQnJlYWtwb2ludE1hbmFnZXIuQnJlYWtwb2ludC5wcm90b3R5cGUsICJf
YWRkUmVzb2x2ZWRMb2NhdGlvbiIsIGJyZWFrcG9pbnRSZXNvbHZlZEFnYWluKTsKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LnVuZG9Tb3VyY2VFZGl0aW5nKGphdmFTY3JpcHRTb3VyY2VG
cmFtZSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC51bmRvU291cmNlRWRpdGluZyhs
aXZlRWRpdFNvdXJjZUZyYW1lKTsKKyAgICAgICAgICAgICAgICBkdW1wQnJlYWtwb2ludFN0b3Jh
Z2VBbmRMb2NhdGlvbnMoKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LnNob3dVSVNv
dXJjZUNvZGUodWlTb3VyY2VDb2RlLCBkaWRTaG93T3JpZ2luYWxVSVNvdXJjZUNvZGUpOwogICAg
ICAgICAgICAgfQogCi0gICAgICAgICAgICBmdW5jdGlvbiBicmVha3BvaW50UmVzb2x2ZWRBZ2Fp
bigpCisgICAgICAgICAgICBmdW5jdGlvbiBkaWRTaG93T3JpZ2luYWxVSVNvdXJjZUNvZGUoc291
cmNlRnJhbWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgZHVtcEJyZWFrcG9pbnRT
dG9yYWdlQW5kTG9jYXRpb25zKCk7CiAgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRS
ZXN1bHQoIkZpbmFsbHkgcmVtb3ZpbmcgYnJlYWtwb2ludDoiKTsKICAgICAgICAgICAgICAgICBJ
bnNwZWN0b3JUZXN0LnJlbW92ZUJyZWFrcG9pbnQoamF2YVNjcmlwdFNvdXJjZUZyYW1lLCAyKTsK
LQogICAgICAgICAgICAgICAgIGR1bXBCcmVha3BvaW50U3RvcmFnZUFuZExvY2F0aW9ucygpOwog
ICAgICAgICAgICAgICAgIG5leHQoKTsKICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0LWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVzZS1pbi1pbmxpbmUtc2Ny
aXB0LWV4cGVjdGVkLnR4dAppbmRleCAxNTM3OTBlZDhjZWFkZjhjOGQ2ODE2YWY5ZDViMWYxYjUz
M2ExNmVjLi44Mjg2OWJlNzc3NTZiYjIzNjNhN2M5ZjFjOGU0YjAzYWUzNzdlZDI4IDEwMDY0NAot
LS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlw
dC1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3BhdXNl
LWluLWlubGluZS1zY3JpcHQtZXhwZWN0ZWQudHh0CkBAIC00LDEwICs0LDkgQEAgRGVidWdnZXIg
d2FzIGVuYWJsZWQuCiBEaWQgbG9hZCBmcm9udC1lbmQKIFBhdXNlZDogZmFsc2UKIGRpZFBhdXNl
QWZ0ZXJSZWxvYWQKLVNjcmlwdCBleGVjdXRpb24gcGF1c2VkLgotZGlkU2hvd1NjcmlwdAogU291
cmNlIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0byB0aGUgY2FsbCBzdGFjazoKLUZyYW1lIDApIGxp
bmUgNiwgY29udGVudDogPC9zY3JpcHQ+PHNjcmlwdD5mdW5jdGlvbiBmMSgpIHsgZGVidWdnZXI7
IH08L3NjcmlwdD4gKG11c3QgYmUgcGFydCBvZiBmdW5jdGlvbiAnZjEnKQorU2NyaXB0IGV4ZWN1
dGlvbiBwYXVzZWQuCitGcmFtZSAwKSBsaW5lIDYsIGNvbnRlbnQ6ICAgICAgICAgIDxzY3JpcHQ+
ZnVuY3Rpb24gZjEoKSB7IGRlYnVnZ2VyOyB9PC9zY3JpcHQ+IChtdXN0IGJlIHBhcnQgb2YgZnVu
Y3Rpb24gJ2YxJykKIEZyYW1lIDEpIGxpbmUgOCwgY29udGVudDogZnVuY3Rpb24gZjIoKSB7IHJl
dHVybiBmMSgpOyB9IChtdXN0IGJlIHBhcnQgb2YgZnVuY3Rpb24gJ2YyJykKIEZyYW1lIDIpIGxp
bmUgMTQsIGNvbnRlbnQ6ICAgICByZXR1cm4gZjIoKTsgKG11c3QgYmUgcGFydCBvZiBmdW5jdGlv
biAnZjMnKQogRnJhbWUgMykgbGluZSAxNiwgY29udGVudDogZjMoKTsgKG11c3QgYmUgcGFydCBv
ZiBmdW5jdGlvbiAnJykKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dl
ci9wYXVzZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcGF1c2UtaW4taW5saW5lLXNjcmlwdC5odG1sCmluZGV4IDk0ZDkwMTM1ZmJlNzk4NDM4
NTI0ODUwNDMwNjc2MzkzODJiMGE5ZTIuLjcxYWY1MzgwZjdkOThlMTcwN2I1NzMyZDQ2OTY2ZTc0
ZjY5NDEwZmUgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9wYXVz
ZS1pbi1pbmxpbmUtc2NyaXB0Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3BhdXNlLWluLWlubGluZS1zY3JpcHQuaHRtbApAQCAtNDYsMzUgKzQ2LDMxIEBAIHZhciB0
ZXN0ID0gZnVuY3Rpb24oKQogICAgIGZ1bmN0aW9uIGRpZFBhdXNlQWZ0ZXJSZWxvYWQoZGV0YWls
cykKICAgICB7CiAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJkaWRQYXVzZUFmdGVy
UmVsb2FkIik7Ci0gICAgICAgIGZvciAodmFyIHNjcmlwdElkIGluIFdlYkluc3BlY3Rvci5kZWJ1
Z2dlck1vZGVsLnNjcmlwdHMpIHsKLSAgICAgICAgICAgIHZhciBzY3JpcHQgPSBXZWJJbnNwZWN0
b3IuZGVidWdnZXJNb2RlbC5zY3JpcHRzW3NjcmlwdElkXTsKLSAgICAgICAgICAgIGlmIChzY3Jp
cHQuc291cmNlVVJMICYmIHNjcmlwdC5zb3VyY2VVUkwuaW5kZXhPZih0ZXN0TmFtZSkgIT09IC0x
ICYmIHNjcmlwdC5saW5lT2Zmc2V0ID09IDYpIHsKLSAgICAgICAgICAgICAgICB2YXIgbG9jYXRp
b24gPSBuZXcgV2ViSW5zcGVjdG9yLkRlYnVnZ2VyTW9kZWwuTG9jYXRpb24oc2NyaXB0LnNjcmlw
dElkLCA2LCAwKTsKLSAgICAgICAgICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IFdlYkluc3BlY3Rv
ci5kZWJ1Z2dlck1vZGVsLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKGxvY2F0aW9uKTsKLSAgICAg
ICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuc2hvd1VJU291cmNlQ29kZSh1
aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7Ci0gICAgICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1l
ID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLnZpc2libGVWaWV3OwotICAgICAgICAgICAg
ICAgIGlmIChzb3VyY2VGcmFtZS5sb2FkZWQpCi0gICAgICAgICAgICAgICAgICAgIGRpZFNob3dT
Y3JpcHQoc291cmNlRnJhbWUpOwotICAgICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRTbmlmZmVyKHNvdXJjZUZyYW1lLCAib25UZXh0RWRpdG9y
Q29udGVudExvYWRlZCIsIGRpZFNob3dTY3JpcHQuYmluZChudWxsLCBzb3VyY2VGcmFtZSkpOwot
ICAgICAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgICAgIH0KLSAgICAgICAgfQorICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiU291cmNlIHN0cmluZ3MgY29ycmVzcG9uZGluZyB0
byB0aGUgY2FsbCBzdGFjazoiKTsKKyAgICAgICAgZHVtcE5leHRDYWxsRnJhbWUoZGlkRHVtcCk7
CiAgICAgfQogCi0gICAgZnVuY3Rpb24gZGlkU2hvd1NjcmlwdChzb3VyY2VGcmFtZSkKKyAgICB2
YXIgY2FsbEZyYW1lSW5kZXggPSAwOworICAgIGZ1bmN0aW9uIGR1bXBOZXh0Q2FsbEZyYW1lKG5l
eHQpCiAgICAgewotICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiZGlkU2hvd1Njcmlw
dCIpOwotICAgICAgICB2YXIgcmVzb3VyY2VUZXh0ID0gc291cmNlRnJhbWUuX3RleHRFZGl0b3Iu
dGV4dCgpOwotICAgICAgICB2YXIgbGluZXMgPSByZXNvdXJjZVRleHQuc3BsaXQoIlxuIik7CiAg
ICAgICAgIHZhciBjYWxsRnJhbWVzID0gV2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuY2FsbEZy
YW1lczsKLSAgICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoIlNvdXJjZSBzdHJpbmdzIGNv
cnJlc3BvbmRpbmcgdG8gdGhlIGNhbGwgc3RhY2s6Iik7Ci0gICAgICAgIGZvciAodmFyIGkgPSAw
OyBpIDwgY2FsbEZyYW1lcy5sZW5ndGg7IGkrKykgewotICAgICAgICAgICAgdmFyIGZyYW1lID0g
Y2FsbEZyYW1lc1tpXTsKLSAgICAgICAgICAgIHZhciBsaW5lTnVtYmVyID0gZnJhbWUubG9jYXRp
b24ubGluZU51bWJlcjsKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGcmFt
ZSAiICsgaSArICIpIGxpbmUgIiArIGxpbmVOdW1iZXIgKyAiLCBjb250ZW50OiAiICsgbGluZXNb
bGluZU51bWJlcl0gKyAiIChtdXN0IGJlIHBhcnQgb2YgZnVuY3Rpb24gJyIgKyBmcmFtZS5mdW5j
dGlvbk5hbWUgKyAiJykiKTsKKyAgICAgICAgaWYgKGNhbGxGcmFtZUluZGV4ID09PSBjYWxsRnJh
bWVzLmxlbmd0aCkgeworICAgICAgICAgICAgbmV4dCgpOworICAgICAgICAgICAgcmV0dXJuOwor
ICAgICAgICB9CisgICAgICAgIHZhciBmcmFtZSA9IGNhbGxGcmFtZXNbY2FsbEZyYW1lSW5kZXhd
OworICAgICAgICB2YXIgdWlMb2NhdGlvbiA9IFdlYkluc3BlY3Rvci5kZWJ1Z2dlck1vZGVsLnJh
d0xvY2F0aW9uVG9VSUxvY2F0aW9uKGZyYW1lLmxvY2F0aW9uKTsKKyAgICAgICAgSW5zcGVjdG9y
VGVzdC5zaG93VUlTb3VyY2VDb2RlKHVpTG9jYXRpb24udWlTb3VyY2VDb2RlLCBkdW1wQ2FsbEZy
YW1lTGluZSk7CisKKyAgICAgICAgZnVuY3Rpb24gZHVtcENhbGxGcmFtZUxpbmUoc291cmNlRnJh
bWUpCisgICAgICAgIHsKKyAgICAgICAgICAgIHZhciByZXNvdXJjZVRleHQgPSBzb3VyY2VGcmFt
ZS5fdGV4dEVkaXRvci50ZXh0KCk7CisgICAgICAgICAgICB2YXIgbGluZXMgPSByZXNvdXJjZVRl
eHQuc3BsaXQoIlxuIik7CisgICAgICAgICAgICB2YXIgbGluZU51bWJlciA9IHVpTG9jYXRpb24u
bGluZU51bWJlcjsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVzdWx0KCJGcmFtZSAi
ICsgY2FsbEZyYW1lSW5kZXggKyAiKSBsaW5lICIgKyBsaW5lTnVtYmVyICsgIiwgY29udGVudDog
IiArIGxpbmVzW2xpbmVOdW1iZXJdICsgIiAobXVzdCBiZSBwYXJ0IG9mIGZ1bmN0aW9uICciICsg
ZnJhbWUuZnVuY3Rpb25OYW1lICsgIicpIik7CisgICAgICAgICAgICBjYWxsRnJhbWVJbmRleCsr
CisgICAgICAgICAgICBkdW1wTmV4dENhbGxGcmFtZShuZXh0KTsKICAgICAgICAgfQotICAgICAg
ICBJbnNwZWN0b3JUZXN0LnJlc3VtZUV4ZWN1dGlvbihkaWRSZXN1bWUpOwogICAgIH0KIAogICAg
IGZ1bmN0aW9uIHVpU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKQEAgLTgyLDYgKzc4LDEx
IEBAIHZhciB0ZXN0ID0gZnVuY3Rpb24oKQogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3Vs
dCgidWlTb3VyY2VDb2RlQWRkZWQiKTsKICAgICB9CiAKKyAgICBmdW5jdGlvbiBkaWREdW1wKCkK
KyAgICB7CisgICAgICAgIEluc3BlY3RvclRlc3QucmVzdW1lRXhlY3V0aW9uKGRpZFJlc3VtZSk7
CisgICAgfQorCiAgICAgZnVuY3Rpb24gZGlkUmVzdW1lKCkKICAgICB7CiAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYWRkUmVzdWx0KCJkaWRSZXN1bWUiKTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1leHBlY3RlZC50eHQg
Yi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmct
ZXhwZWN0ZWQudHh0CmluZGV4IDI2NTc4NmRkOWM3OTc5ZTQ5OGE2YzMyNjFlOGVmMTQ2MmY0OWM2
MWQuLmFhMzU4NGFkNzEwMDU3OTNjZjMwODg2NjVkNmFjMGFjNWEyZjRiZjMgMTAwNjQ0Ci0tLSBh
L0xheW91dFRlc3RzL2luc3BlY3Rvci9kZWJ1Z2dlci9yZXNvdXJjZS1zY3JpcHQtbWFwcGluZy1l
eHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3Jlc291cmNl
LXNjcmlwdC1tYXBwaW5nLWV4cGVjdGVkLnR4dApAQCAtNCw4ICs0LDggQEAgVGVzdHMgUmVzb3Vy
Y2VTY3JpcHRNYXBwaW5nIGNsYXNzLgogUnVubmluZzogdGVzdFNjcmlwdFdpdGhQZW5kaW5nUmVz
b3VyY2UKIEFkZGluZyBzY3JpcHQgZm9yIHBlbmRpbmcgcmVxdWVzdC4KIFVJU291cmNlQ29kZTog
Zm9vLmpzCi1VSVNvdXJjZUNvZGUgaXMgZWRpdGFibGU6IHRydWUKLVVJU291cmNlQ29kZSBpcyBj
b250ZW50IHNjcmlwdDogdHJ1ZQorVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxzZQorVUlT
b3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0L2phdmFz
Y3JpcHQKIFVJU291cmNlQ29kZSBjb250ZW50OiA8Y29udGVudCBzY3JpcHQgc291cmNlPgogQWRk
aW5nIHVpU291cmNlQ29kZSBmb3IgZmluaXNoZWQgcmVzb3VyY2UuCkBAIC00MSw3ICs0MSw3IEBA
IFVJU291cmNlQ29kZTogaW5kZXguaHRtbAogVUlTb3VyY2VDb2RlIGlzIGVkaXRhYmxlOiBmYWxz
ZQogVUlTb3VyY2VDb2RlIGlzIGNvbnRlbnQgc2NyaXB0OiBmYWxzZQogTWltZSB0eXBlOiB0ZXh0
L2h0bWwKLVVJU291cmNlQ29kZSBjb250ZW50OiAgIDxzY3JpcHQ+PHNjcmlwdCBzb3VyY2UgMT48
L3NjcmlwdD4gPHNjcmlwdD48c2NyaXB0IHNvdXJjZSAyPjwvc2NyaXB0PgorVUlTb3VyY2VDb2Rl
IGNvbnRlbnQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8c2NyaXB0Pjxz
Y3JpcHQgc291cmNlIDI+PC9zY3JpcHQ+CiBBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hl
ZCByZXNvdXJjZS4KIFVJU291cmNlQ29kZTogaW5kZXguaHRtbAogVUlTb3VyY2VDb2RlIGlzIGVk
aXRhYmxlOiBmYWxzZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3Jlc291cmNlLXNjcmlwdC1tYXBwaW5nLmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbAppbmRleCA2NjJhYWMwNDIzOWZkNzI4
NzM1MjhiZGViNGJiM2ZmM2RkMTU4YjA4Li4yNjJlMjUwZWNiODQ5OTlhODQ1NTA0OWIwMTZhMDg5
YTgxYjU5NTgyIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvcmVz
b3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVi
dWdnZXIvcmVzb3VyY2Utc2NyaXB0LW1hcHBpbmcuaHRtbApAQCAtNyw5ICs3LDExIEBACiBmdW5j
dGlvbiB0ZXN0KCkKIHsKICAgICB2YXIgd29ya3NwYWNlOworICAgIHZhciBkZWZhdWx0U2NyaXB0
TWFwcGluZzsKICAgICBmdW5jdGlvbiBjcmVhdGVSZXNvdXJjZVNjcmlwdE1hcHBpbmcoKQogICAg
IHsKICAgICAgICAgSW5zcGVjdG9yVGVzdC5jcmVhdGVXb3Jrc3BhY2UoKTsKKyAgICAgICAgZGVm
YXVsdFNjcmlwdE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLkRlZmF1bHRTY3JpcHRNYXBwaW5n
KEluc3BlY3RvclRlc3QudGVzdFdvcmtzcGFjZSk7CiAgICAgICAgIHZhciByZXNvdXJjZVNjcmlw
dE1hcHBpbmcgPSBuZXcgV2ViSW5zcGVjdG9yLlJlc291cmNlU2NyaXB0TWFwcGluZyhJbnNwZWN0
b3JUZXN0LnRlc3RXb3Jrc3BhY2UpOwogICAgICAgICByZXR1cm4gcmVzb3VyY2VTY3JpcHRNYXBw
aW5nOwogICAgIH0KQEAgLTI3LDIwICsyOSwyMSBAQCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAg
ICAgIHsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHNj
cmlwdCBmb3IgcGVuZGluZyByZXF1ZXN0LiIpOwogICAgICAgICAgICAgICAgIHNjcmlwdCA9IElu
c3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAsIDAsIHRydWUsICI8Y29udGVudCBz
Y3JpcHQgc291cmNlPiIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldv
cmtzcGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkRXZlbnQob3JpZ2luYWxVSVNvdXJjZUNv
ZGVBZGRlZCk7CisgICAgICAgICAgICAgICAgZGVmYXVsdFNjcmlwdE1hcHBpbmcuYWRkU2NyaXB0
KHNjcmlwdCk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFkZFNjcmlw
dChzY3JpcHQpOwogICAgICAgICAgICAgICAgIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRl
c3Qud2FpdEZvcldvcmtzcGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkRXZlbnQodGVtcG9y
YXJ5VUlTb3VyY2VDb2RlQWRkZWQpOwotICAgICAgICAgICAgICAgIHZhciB0ZW1wb3JhcnlVSVNv
dXJjZUNvZGU7CisgICAgICAgICAgICAgICAgdmFyIG9yaWdpbmFsVUlTb3VyY2VDb2RlOwogICAg
ICAgICAgICAgICAgIHNjcmlwdC5yYXdMb2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KTsKIAotICAg
ICAgICAgICAgICAgIGZ1bmN0aW9uIHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKHVpU291cmNl
Q29kZSkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBvcmlnaW5hbFVJU291cmNlQ29kZUFkZGVk
KHVpU291cmNlQ29kZSkKICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgIHRl
bXBvcmFyeVVJU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKKyAgICAgICAgICAgICAgICAgICAg
b3JpZ2luYWxVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CiAgICAgICAgICAgICAgICAgfQog
Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24odGVtcG9yYXJ5
VUlTb3VyY2VDb2RlLCAwLCA1LCBzY3JpcHQucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkp
OwotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQs
IDEwLCAwLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUudWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAs
IDApKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodGVt
cG9yYXJ5VUlTb3VyY2VDb2RlLCBzdGVwMik7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jaGVja1VJTG9jYXRpb24ob3JpZ2luYWxVSVNvdXJjZUNvZGUsIDAsIDUsIHNjcmlwdC5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdCwgMTAsIDAsIG9yaWdpbmFsVUlTb3VyY2VDb2RlLnVp
TG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9y
VGVzdC5kdW1wVUlTb3VyY2VDb2RlKG9yaWdpbmFsVUlTb3VyY2VDb2RlLCBzdGVwMik7CiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKQEAgLTk4LDYgKzEwMSw4
IEBAIGZ1bmN0aW9uIHRlc3QoKQogICAgICAgICAgICAgdmFyIHNjcmlwdDI7CiAgICAgICAgICAg
ICBXZWJJbnNwZWN0b3IuZGVidWdnZXJNb2RlbC5fcmVzZXQoKTsKICAgICAgICAgICAgIHZhciBy
ZXNvdXJjZVNjcmlwdE1hcHBpbmcgPSBjcmVhdGVSZXNvdXJjZVNjcmlwdE1hcHBpbmcoKTsKKyAg
ICAgICAgICAgIHZhciBvcmlnaW5hbFVJU291cmNlQ29kZTE7CisgICAgICAgICAgICB2YXIgb3Jp
Z2luYWxVSVNvdXJjZUNvZGUyOwogICAgICAgICAgICAgdmFyIHVybCA9ICJpbmRleC5odG1sIjsK
ICAgICAgICAgICAgIHN0ZXAxKCk7CiAKQEAgLTEwNSw0NSArMTEwLDQzIEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRkUmVz
dWx0KCJBZGRpbmcgZmlyc3Qgc2NyaXB0IGZvciBwZW5kaW5nIHJlcXVlc3QuIik7CiAgICAgICAg
ICAgICAgICAgc2NyaXB0MSA9IEluc3BlY3RvclRlc3QuY3JlYXRlU2NyaXB0TW9jayh1cmwsIDAs
IDEwLCBmYWxzZSwgIjxzY3JpcHQgc291cmNlIDE+Iik7CisgICAgICAgICAgICAgICAgSW5zcGVj
dG9yVGVzdC53YWl0Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWRFdmVudChv
cmlnaW5hbFVJU291cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0U2NyaXB0
TWFwcGluZy5hZGRTY3JpcHQoc2NyaXB0MSk7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3Jp
cHRNYXBwaW5nLmFkZFNjcmlwdChzY3JpcHQxKTsKICAgICAgICAgICAgICAgICAKLSAgICAgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlVSVNvdXJjZUNv
ZGVBZGRlZEV2ZW50KHRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVkKTsKLSAgICAgICAgICAgICAg
ICB2YXIgdGVtcG9yYXJ5VUlTb3VyY2VDb2RlOwogICAgICAgICAgICAgICAgIHNjcmlwdDEucmF3
TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSk7CiAKLSAgICAgICAgICAgICAgICBmdW5jdGlvbiB0
ZW1wb3JhcnlVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCisgICAgICAgICAgICAgICAg
ZnVuY3Rpb24gb3JpZ2luYWxVSVNvdXJjZUNvZGVBZGRlZCh1aVNvdXJjZUNvZGUpCiAgICAgICAg
ICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUgPSB1
aVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgICAgIG9yaWdpbmFsVUlTb3VyY2VDb2RlMSA9
IHVpU291cmNlQ29kZTsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBJbnNw
ZWN0b3JUZXN0LmNoZWNrVUlMb2NhdGlvbih0ZW1wb3JhcnlVSVNvdXJjZUNvZGUsIDAsIDUsIHNj
cmlwdDEucmF3TG9jYXRpb25Ub1VJTG9jYXRpb24oMCwgNSkpOwotICAgICAgICAgICAgICAgIElu
c3BlY3RvclRlc3QuY2hlY2tSYXdMb2NhdGlvbihzY3JpcHQxLCAxMCwgMCwgdGVtcG9yYXJ5VUlT
b3VyY2VDb2RlLnVpTG9jYXRpb25Ub1Jhd0xvY2F0aW9uKDEwLCAwKSk7Ci0gICAgICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5kdW1wVUlTb3VyY2VDb2RlKHRlbXBvcmFyeVVJU291cmNlQ29kZSwg
c3RlcDIpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tVSUxvY2F0aW9uKG9y
aWdpbmFsVUlTb3VyY2VDb2RlMSwgMCwgNSwgc2NyaXB0MS5yYXdMb2NhdGlvblRvVUlMb2NhdGlv
bigwLCA1KSk7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1Jhd0xvY2F0aW9u
KHNjcmlwdDEsIDEwLCAwLCBvcmlnaW5hbFVJU291cmNlQ29kZTEudWlMb2NhdGlvblRvUmF3TG9j
YXRpb24oMTAsIDApKTsKKyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmR1bXBVSVNvdXJj
ZUNvZGUob3JpZ2luYWxVSVNvdXJjZUNvZGUxLCBzdGVwMik7CiAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgIGZ1bmN0aW9uIHN0ZXAyKCkKICAgICAgICAgICAgIHsKICAgICAgICAgICAgICAg
ICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiQWRkaW5nIHNlY29uZCBzY3JpcHQgZm9yIHBlbmRp
bmcgcmVxdWVzdC4iKTsKICAgICAgICAgICAgICAgICBzY3JpcHQyID0gSW5zcGVjdG9yVGVzdC5j
cmVhdGVTY3JpcHRNb2NrKHVybCwgMCwgNDUsIGZhbHNlLCAiPHNjcmlwdCBzb3VyY2UgMj4iKTsK
LSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1wb3JhcnlV
SVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQoZnVuY3Rpb24oKSB7IH0pOwotICAgICAgICAgICAgICAg
IEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVRlbXBvcmFyeVVJU291cmNlQ29kZUFkZGVk
RXZlbnQodGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWQpOwotICAgICAgICAgICAgICAgIHZhciB0
ZW1wb3JhcnlVSVNvdXJjZUNvZGU7CisgICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC53YWl0
Rm9yV29ya3NwYWNlVGVtcG9yYXJ5VUlTb3VyY2VDb2RlQWRkZWRFdmVudChvcmlnaW5hbFVJU291
cmNlQ29kZUFkZGVkKTsKKyAgICAgICAgICAgICAgICBkZWZhdWx0U2NyaXB0TWFwcGluZy5hZGRT
Y3JpcHQoc2NyaXB0Mik7CiAgICAgICAgICAgICAgICAgcmVzb3VyY2VTY3JpcHRNYXBwaW5nLmFk
ZFNjcmlwdChzY3JpcHQyKTsKIAotICAgICAgICAgICAgICAgIGZ1bmN0aW9uIHRlbXBvcmFyeVVJ
U291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKKyAgICAgICAgICAgICAgICBmdW5jdGlvbiBv
cmlnaW5hbFVJU291cmNlQ29kZUFkZGVkKHVpU291cmNlQ29kZSkKICAgICAgICAgICAgICAgICB7
Ci0gICAgICAgICAgICAgICAgICAgIHRlbXBvcmFyeVVJU291cmNlQ29kZSA9IHVpU291cmNlQ29k
ZTsKKyAgICAgICAgICAgICAgICAgICAgb3JpZ2luYWxVSVNvdXJjZUNvZGUyID0gdWlTb3VyY2VD
b2RlOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
Y2hlY2tVSUxvY2F0aW9uKHRlbXBvcmFyeVVJU291cmNlQ29kZSwgMCwgNSwgc2NyaXB0Mi5yYXdM
b2NhdGlvblRvVUlMb2NhdGlvbigwLCA1KSk7Ci0gICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVz
dC5jaGVja1Jhd0xvY2F0aW9uKHNjcmlwdDEsIDEwLCAwLCB0ZW1wb3JhcnlVSVNvdXJjZUNvZGUu
dWlMb2NhdGlvblRvUmF3TG9jYXRpb24oMTAsIDApKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0
b3JUZXN0LmR1bXBVSVNvdXJjZUNvZGUodGVtcG9yYXJ5VUlTb3VyY2VDb2RlLCBzdGVwMyk7Cisg
ICAgICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5jaGVja1VJTG9jYXRpb24ob3JpZ2luYWxVSVNv
dXJjZUNvZGUyLCAwLCA1LCBzY3JpcHQyLnJhd0xvY2F0aW9uVG9VSUxvY2F0aW9uKDAsIDUpKTsK
KyAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrUmF3TG9jYXRpb24oc2NyaXB0MSwg
MTAsIDAsIG9yaWdpbmFsVUlTb3VyY2VDb2RlMS51aUxvY2F0aW9uVG9SYXdMb2NhdGlvbigxMCwg
MCkpOworICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuZHVtcFVJU291cmNlQ29kZShvcmln
aW5hbFVJU291cmNlQ29kZTIsIHN0ZXAzKTsKICAgICAgICAgICAgIH0KIAogICAgICAgICAgICAg
ZnVuY3Rpb24gc3RlcDMoKQogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QuYWRkUmVzdWx0KCJBZGRpbmcgdWlTb3VyY2VDb2RlIGZvciBmaW5pc2hlZCByZXNvdXJj
ZS4iKTsKLSAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LndhaXRGb3JXb3Jrc3BhY2VUZW1w
b3JhcnlVSVNvdXJjZUNvZGVSZW1vdmVkRXZlbnQoZnVuY3Rpb24oKSB7IH0pOwogICAgICAgICAg
ICAgICAgIEluc3BlY3RvclRlc3Qud2FpdEZvcldvcmtzcGFjZVVJU291cmNlQ29kZUFkZGVkRXZl
bnQodWlTb3VyY2VDb2RlQWRkZWQpOwogICAgICAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYWRk
TW9ja1VJU291cmNlQ29kZVRvV29ya3NwYWNlKHVybCwgV2ViSW5zcGVjdG9yLnJlc291cmNlVHlw
ZXMuRG9jdW1lbnQsICI8cmVzb3VyY2UgY29udGVudD4iKTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0
VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRtbCBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKaW5kZXggZDhmOGVkYmZhNmNj
ZTNmOTkwOTdmMGNhMjFiMmQyYmZjZmI2M2IzNi4uZDA5MWRkMjNjOTJkZDJkYWYxMjNjNzQ5NmQ0
MGFhMzE1OGNiM2U0ZCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2Vy
L3NjcmlwdHMtcGFuZWwuaHRtbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c2NyaXB0cy1wYW5lbC5odG1sCkBAIC04OCw3ICs4OCw2IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAg
ICAgICAgICAgICAvLyBQbHVnIGNvbXBpbGVyIHNvdXJjZSBtYXBwaW5nLgogICAgICAgICAgICAg
d29ya3NwYWNlLm5ldHdvcmtXb3Jrc3BhY2VQcm92aWRlci5hZGRGaWxlKCJzb3VyY2UuanMiLCBj
b250ZW50UHJvdmlkZXIsIGZhbHNlKTsKLSAgICAgICAgICAgIHdvcmtzcGFjZS5yZW1vdmVUZW1w
b3JhcnlVSVNvdXJjZUNvZGUodGVtcG9yYXJ5VUlTb3VyY2VDb2RlKTsKIAogICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5kdW1wU2NyaXB0c05hdmlnYXRvcihwYW5lbC5fbmF2aWdhdG9yKTsKICAg
ICAgICAgICAgIG5leHQoKTsK
</data>
<flag name="review"
          id="191132"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>