<?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>75173</bug_id>
          
          <creation_ts>2011-12-23 08:07:50 -0800</creation_ts>
          <short_desc>Web Inspector: Extract FileSelector from ScriptsPanel.</short_desc>
          <delta_ts>2011-12-26 06:30:50 -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>
          
          <blocked>75093</blocked>
          <everconfirmed>0</everconfirmed>
          <reporter name="Vsevolod Vlasov">vsevik</reporter>
          <assigned_to name="Vsevolod Vlasov">vsevik</assigned_to>
          <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>526859</commentid>
    <comment_count>0</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-23 08:07:50 -0800</bug_when>
    <thetext>Extract FileSelector from ScriptsPanel.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526867</commentid>
    <comment_count>1</comment_count>
      <attachid>120468</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-23 08:32:48 -0800</bug_when>
    <thetext>Created attachment 120468
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>526967</commentid>
    <comment_count>2</comment_count>
      <attachid>120468</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-12-24 01:36:37 -0800</bug_when>
    <thetext>Comment on attachment 120468
Patch

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

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:174
&gt; +    this._sourceFramesByUISourceCodes = new Map();

this._sourceFramesByUISourceCode (not plural)

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:264
&gt; +        uiSourceCodes = this._sourceFramesByUISourceCodes;

var uiSourceCode (please run compiler)

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:487
&gt; +        this._sourceFramesByUISourceCodes.put(uiSourceCode, sourceFrame)

missing ;

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:-654
&gt; -        if (this._navigator)

no delegation to the file selector here. why?

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:-733
&gt; -            // FIXME: We should always add anonymous scripts to navigator (in a separate folder tree element)

This fixme should probably stay.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:974
&gt; +    get defaultFocusedElement() { },

long term it should be get view()?

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:979
&gt; +    show: function(element) { },

Open comment: Imagine that we end up leaving both: simple file selector and navigator panel. You will then need to delegate editor layout to that component. As a result, you no longer need to expose show / defaultFocusedElement at all.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:995
&gt; +    setScriptSourceIsBeingEdited: function(uiSourceCode, inEditMode) { },

You rather need a &quot;dirty&quot; marker, not inEditMode.

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:1001
&gt; +    replaceUISourceCodes: function(oldUISourceCodeList, uiSourceCodeList) { },

trailing coma

&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:1022
&gt; +WebInspector.ScriptsPanel.SimpleFileSelector.prototype = {

ComboBoxFileSelector or DropBoxFileSelector?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527172</commentid>
    <comment_count>3</comment_count>
      <attachid>120468</attachid>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-26 02:28:30 -0800</bug_when>
    <thetext>Comment on attachment 120468
Patch

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

&gt;&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:-654
&gt;&gt; -        if (this._navigator)
&gt; 
&gt; no delegation to the file selector here. why?

This method is only called from _uiSourceCodeReplaced which makes all necessary delegations to file selector.

&gt;&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:-733
&gt;&gt; -            // FIXME: We should always add anonymous scripts to navigator (in a separate folder tree element)
&gt; 
&gt; This fixme should probably stay.

We now add all scripts to script navigator. I added a FIXME there to create a separate section fro anonymous scripts though.

&gt;&gt; Source/WebCore/inspector/front-end/ScriptsPanel.js:995
&gt;&gt; +    setScriptSourceIsBeingEdited: function(uiSourceCode, inEditMode) { },
&gt; 
&gt; You rather need a &quot;dirty&quot; marker, not inEditMode.

I&apos;ll take care of that separately.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>527206</commentid>
    <comment_count>4</comment_count>
    <who name="Vsevolod Vlasov">vsevik</who>
    <bug_when>2011-12-26 06:30:50 -0800</bug_when>
    <thetext>Committed r103683: &lt;http://trac.webkit.org/changeset/103683&gt;</thetext>
  </long_desc>
      
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>120468</attachid>
            <date>2011-12-23 08:32:48 -0800</date>
            <delta_ts>2011-12-26 02:28:30 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-75173-20111223203245.patch</filename>
            <type>text/plain</type>
            <size>62899</size>
            <attacher name="Vsevolod Vlasov">vsevik</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTAzNTU1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNTY3NDc5MjIyZTVmMzY1
YzEzZTk0NjhkN2IwNTY1YzkxMTUwYTRjNC4uZDFhMmVkNzk3MDZkYzM5MGJmYmIwMjI3OGY1NDgx
ZGExNTZjMjU3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDYxIEBACisyMDExLTEyLTIzICBWc2V2
b2xvZCBWbGFzb3YgIDx2c2V2aWtAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFdlYiBJbnNwZWN0
b3I6IEV4dHJhY3QgRmlsZVNlbGVjdG9yIGZyb20gU2NyaXB0c1BhbmVsLgorICAgICAgICBodHRw
czovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzUxNzMKKworICAgICAgICBSZXZp
ZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQv
U2NyaXB0c05hdmlnYXRvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdh
dG9yKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZS5n
ZXQgZGVmYXVsdEZvY3VzZWRFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLnByb3RvdHlwZS5zaG93KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLnByb3RvdHlwZS5yZXZlYWxVSVNvdXJjZUNvZGUuZ2V0IGlmKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZS5zZXRTY3JpcHRTb3VyY2VJ
c0JlaW5nRWRpdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLnBy
b3RvdHlwZS5yZXBsYWNlVUlTb3VyY2VDb2Rlcyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2Ny
aXB0c05hdmlnYXRvci5wcm90b3R5cGUuc2NyaXB0U2VsZWN0ZWQpOgorICAgICAgICAqIGluc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5wcm90b3R5cGUuZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAg
IChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdWlTb3VyY2VDb2RlQWRkZWQu
Z2V0IGlmKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLnNl
dFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbC5wcm90b3R5cGUuX3Jlc2V0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwucHJvdG90eXBlLl9zaG93U291cmNlTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fc2hvd0FuZFJldmVhbEluRmlsZVNlbGVjdG9yKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlLl9jcmVhdGVTb3VyY2VG
cmFtZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fdXBk
YXRlRXhlY3V0aW9uTGluZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnBy
b3RvdHlwZS5fc2NyaXB0U2VsZWN0ZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQ
YW5lbC5GaWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5G
aWxlU2VsZWN0b3IucHJvdG90eXBlLmdldCBkZWZhdWx0Rm9jdXNlZEVsZW1lbnQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IucHJvdG90eXBlLnNob3cp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IucHJvdG90
eXBlLmFkZFVJU291cmNlQ29kZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LkZpbGVTZWxlY3Rvci5wcm90b3R5cGUucmV2ZWFsVUlTb3VyY2VDb2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLnByb3RvdHlwZS5zZXRTY3JpcHRT
b3VyY2VJc0JlaW5nRWRpdGVkKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
RmlsZVNlbGVjdG9yLnByb3RvdHlwZS5yZXBsYWNlVUlTb3VyY2VDb2Rlcyk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvcik6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuZ2V0
IGRlZmF1bHRGb2N1c2VkRWxlbWVudCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuc2hvdyk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuc2hvd0RlYnVn
U2lkZWJhclJlc2l6ZVdpZGdldCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuYWRkVUlTb3VyY2VDb2RlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2ltcGxlRmlsZVNlbGVjdG9yLnByb3RvdHlwZS5y
ZXZlYWxVSVNvdXJjZUNvZGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5T
aW1wbGVGaWxlU2VsZWN0b3IucHJvdG90eXBlLl9pbm5lclJldmVhbFVJU291cmNlQ29kZSk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90
b3R5cGUuX2FkZFRvSGlzdG9yeSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVs
LlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUucmVwbGFjZVVJU291cmNlQ29kZXMpOgorICAg
ICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW1wbGVGaWxlU2VsZWN0b3IucHJvdG90
eXBlLl9zaG93U2NyaXB0Rm9sZGVyc1NldHRpbmdDaGFuZ2VkKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwuU2ltcGxlRmlsZVNlbGVjdG9yLnByb3RvdHlwZS5fcmVzZXQpOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW1wbGVGaWxlU2VsZWN0b3IucHJv
dG90eXBlLnNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0ZWQpOgorICAgICAgICAoV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5TaW1wbGVGaWxlU2VsZWN0b3IucHJvdG90eXBlLl9jcmVhdGVFZGl0
b3JUb29sYmFyKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2ltcGxlRmls
ZVNlbGVjdG9yLnByb3RvdHlwZS5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdC5nZXQgdmFyKToKKyAg
ICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwuU2ltcGxlRmlsZVNlbGVjdG9yLnByb3Rv
dHlwZS5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdC5pbnNlcnRPcmRlcmVkLm9wdGlvbkNvbXBhcmUp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW1wbGVGaWxlU2VsZWN0b3Iu
cHJvdG90eXBlLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0Lmluc2VydE9yZGVyZWQpOgorICAgICAg
ICAoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5TaW1wbGVGaWxlU2VsZWN0b3IucHJvdG90eXBl
Ll9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5TY3JpcHRz
UGFuZWwuU2ltcGxlRmlsZVNlbGVjdG9yLnByb3RvdHlwZS5fcmVzZXRGaWxlc1NlbGVjdCk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90
b3R5cGUuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucyk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuX2dvQmFjayk6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90
b3R5cGUuX2dvRm9yd2FyZCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNp
bXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUuX2ZpbGVzU2VsZWN0Q2hhbmdlZCk6CisgICAgICAg
ICogaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuaHRtbDoKKyAgICAgICAgKiBpbnNwZWN0
b3IvZnJvbnQtZW5kL3V0aWxpdGllcy5qczoKKyAgICAgICAgKCk6CisKIDIwMTEtMTItMjIgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGFiYmVkUGFuZSBzaG91bGQgc3VwcG9ydCBjbG9zZWFibGUgdGFicywgaGlkaW5nIHRh
YnMgaW50byBkcm9wIGRvd24gbWVudS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvU2NyaXB0c05hdmlnYXRvci5qcwppbmRleCBlZWZhMzJiYjhkMWU1MDc2
YmRhOGE4ZmMwOGI4MGIyMDlmNDBkZDliLi42NGE2MjQ0YWE0ZmRiMzhkYzAwNjc0YmViNjZjOGI5
NTg2MTMzMzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L1NjcmlwdHNOYXZpZ2F0b3IuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzTmF2aWdhdG9yLmpzCkBAIC0yNywxNyArMjcsMjAgQEAKICAqLwogCiAvKioK
LSAqIEBleHRlbmRzIHtXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZX0KKyAqIEBpbXBsZW1lbnRzIHtX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvcn0KKyAqIEBleHRlbmRzIHtXZWJJ
bnNwZWN0b3IuT2JqZWN0fQogICogQGNvbnN0cnVjdG9yCiAgKi8KIFdlYkluc3BlY3Rvci5TY3Jp
cHRzTmF2aWdhdG9yID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiB7Ci0gICAgV2ViSW5z
cGVjdG9yLlRhYmJlZFBhbmUuY2FsbCh0aGlzKTsKLSAgICB0aGlzLnNocmlua2FibGVUYWJzID0g
dHJ1ZTsKKyAgICBXZWJJbnNwZWN0b3IuT2JqZWN0LmNhbGwodGhpcyk7CisgICAgCisgICAgdGhp
cy5fdGFiYmVkUGFuZSA9IG5ldyBXZWJJbnNwZWN0b3IuVGFiYmVkUGFuZSgpOworICAgIHRoaXMu
X3RhYmJlZFBhbmUuc2hyaW5rYWJsZVRhYnMgPSB0cnVlOwogCiAgICAgdGhpcy5fcHJlc2VudGF0
aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKIAotICAgIHRoaXMuZWxlbWVudC5pZCA9ICJz
Y3JpcHRzLW5hdmlnYXRvci10YWJiZWQtcGFuZSI7CisgICAgdGhpcy5fdGFiYmVkUGFuZS5lbGVt
ZW50LmlkID0gInNjcmlwdHMtbmF2aWdhdG9yLXRhYmJlZC1wYW5lIjsKICAgCiAgICAgdGhpcy5f
bmF2aWdhdG9yU2NyaXB0c1RyZWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib2wi
KTsKICAgICB2YXIgc2NyaXB0c1ZpZXcgPSBuZXcgV2ViSW5zcGVjdG9yLlZpZXcoKTsKQEAgLTQ1
LDggKzQ4LDggQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IgPSBmdW5jdGlvbihwcmVz
ZW50YXRpb25Nb2RlbCkKICAgICBzY3JpcHRzVmlldy5lbGVtZW50LmFkZFN0eWxlQ2xhc3MoIm5h
dmlnYXRvciIpOwogICAgIHNjcmlwdHNWaWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2
aWdhdG9yU2NyaXB0c1RyZWVFbGVtZW50KTsKICAgICB0aGlzLl9uYXZpZ2F0b3JTY3JpcHRzVHJl
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuTmF2aWdhdG9yVHJlZU91dGxpbmUodGhpcy5fbmF2aWdhdG9y
U2NyaXB0c1RyZWVFbGVtZW50KTsKLSAgICB0aGlzLmFwcGVuZFRhYihXZWJJbnNwZWN0b3IuU2Ny
aXB0c05hdmlnYXRvci5TY3JpcHRzVGFiLCBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIlNjcmlwdHMi
KSwgc2NyaXB0c1ZpZXcpOwotICAgIHRoaXMuc2VsZWN0VGFiKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLlNjcmlwdHNUYWIpOworICAgIHRoaXMuX3RhYmJlZFBhbmUuYXBwZW5kVGFiKFdl
Ykluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLlNjcmlwdHNUYWIsIFdlYkluc3BlY3Rvci5VSVN0
cmluZygiU2NyaXB0cyIpLCBzY3JpcHRzVmlldyk7CisgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxl
Y3RUYWIoV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuU2NyaXB0c1RhYik7CiAKICAgICB0
aGlzLl9uYXZpZ2F0b3JDb250ZW50U2NyaXB0c1RyZWVFbGVtZW50ID0gZG9jdW1lbnQuY3JlYXRl
RWxlbWVudCgib2wiKTsKICAgICB2YXIgY29udGVudFNjcmlwdHNWaWV3ID0gbmV3IFdlYkluc3Bl
Y3Rvci5WaWV3KCk7CkBAIC01NCw3ICs1Nyw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdh
dG9yID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9kZWwpCiAgICAgY29udGVudFNjcmlwdHNWaWV3
LmVsZW1lbnQuYWRkU3R5bGVDbGFzcygibmF2aWdhdG9yIik7CiAgICAgY29udGVudFNjcmlwdHNW
aWV3LmVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5fbmF2aWdhdG9yQ29udGVudFNjcmlwdHNUcmVl
RWxlbWVudCk7CiAgICAgdGhpcy5fbmF2aWdhdG9yQ29udGVudFNjcmlwdHNUcmVlID0gbmV3IFdl
Ykluc3BlY3Rvci5OYXZpZ2F0b3JUcmVlT3V0bGluZSh0aGlzLl9uYXZpZ2F0b3JDb250ZW50U2Ny
aXB0c1RyZWVFbGVtZW50KTsKLSAgICB0aGlzLmFwcGVuZFRhYihXZWJJbnNwZWN0b3IuU2NyaXB0
c05hdmlnYXRvci5Db250ZW50U2NyaXB0c1RhYiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250
ZW50IHNjcmlwdHMiKSwgY29udGVudFNjcmlwdHNWaWV3KTsKKyAgICB0aGlzLl90YWJiZWRQYW5l
LmFwcGVuZFRhYihXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5Db250ZW50U2NyaXB0c1Rh
YiwgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IHNjcmlwdHMiKSwgY29udGVudFNjcmlw
dHNWaWV3KTsKIAogICAgIHRoaXMuX2ZvbGRlclRyZWVFbGVtZW50cyA9IHt9OwogICAgIApAQCAt
NjksMTYgKzcyLDMwIEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yID0gZnVuY3Rpb24o
cHJlc2VudGF0aW9uTW9kZWwpCiBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5TY3JpcHRz
VGFiID0gInNjcmlwdHMiOwogV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuQ29udGVudFNj
cmlwdHNUYWIgPSAiY29udGVudFNjcmlwdHMiOwogCi1XZWJJbnNwZWN0b3IuU2NyaXB0c05hdmln
YXRvci5FdmVudHMgPSB7Ci0gICAgU2NyaXB0U2VsZWN0ZWQ6ICJTY3JpcHRTZWxlY3RlZCIKLX0K
LQogV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewogICAgIC8qKgor
ICAgICAqIEB0eXBlIHtFbGVtZW50fQorICAgICAqLworICAgIGdldCBkZWZhdWx0Rm9jdXNlZEVs
ZW1lbnQoKQorICAgIHsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3RhYmJlZFBhbmUuZWxlbWVudDsK
KyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBlbGVtZW50CisgICAg
ICovCisgICAgc2hvdzogZnVuY3Rpb24oZWxlbWVudCkKKyAgICB7CisgICAgICAgIHRoaXMuX3Rh
YmJlZFBhbmUuc2hvdyhlbGVtZW50KTsKKyAgICB9LAorCisgICAgLyoqCiAgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKi8KICAgICBh
ZGRVSVNvdXJjZUNvZGU6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKICAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBXZSBzaG91bGQgaGF2ZSBhIHNlcGFyYXRlIHNlY3Rpb24gZm9yIGFub255bW91cyBz
Y3JpcHRzLgorICAgICAgICAKICAgICAgICAgdmFyIHNjcmlwdFRpdGxlID0gdWlTb3VyY2VDb2Rl
LmRpc3BsYXlOYW1lID8gdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lIDogV2ViSW5zcGVjdG9yLlVJ
U3RyaW5nKCIocHJvZ3JhbSkiKTsKICAgICAgICAgdmFyIHNjcmlwdFRyZWVFbGVtZW50ID0gbmV3
IFdlYkluc3BlY3Rvci5OYXZpZ2F0b3JTY3JpcHRUcmVlRWxlbWVudCh0aGlzLCB1aVNvdXJjZUNv
ZGUsIHNjcmlwdFRpdGxlKTsKICAgICAgICAgdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNv
dXJjZUNvZGUucHV0KHVpU291cmNlQ29kZSwgc2NyaXB0VHJlZUVsZW1lbnQpOwpAQCAtOTMsMTcg
KzExMCwzNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvci5wcm90b3R5cGUgPSB7CiAg
ICAgcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAg
ICAgICB0aGlzLl9sYXN0U2VsZWN0ZWRVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7Ci0gICAg
ICAgIHRoaXMuc2VsZWN0VGFiKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPyBXZWJJbnNw
ZWN0b3IuU2NyaXB0c05hdmlnYXRvci5Db250ZW50U2NyaXB0c1RhYiA6IFdlYkluc3BlY3Rvci5T
Y3JpcHRzTmF2aWdhdG9yLlNjcmlwdHNUYWIpOwotICAgICAgICB0aGlzLl9zY3JpcHRUcmVlRWxl
bWVudHNCeVVJU291cmNlQ29kZS5nZXQodWlTb3VyY2VDb2RlKS5yZXZlYWxBbmRTZWxlY3QoKTsK
KyAgICAgICAgdGhpcy5fdGFiYmVkUGFuZS5zZWxlY3RUYWIodWlTb3VyY2VDb2RlLmlzQ29udGVu
dFNjcmlwdCA/IFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkNvbnRlbnRTY3JpcHRzVGFi
IDogV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IuU2NyaXB0c1RhYik7CisKKyAgICAgICAg
dmFyIHNjcmlwdFRyZWVFbGVtZW50ID0gdGhpcy5fc2NyaXB0VHJlZUVsZW1lbnRzQnlVSVNvdXJj
ZUNvZGUuZ2V0KHVpU291cmNlQ29kZSk7CisgICAgICAgIHNjcmlwdFRyZWVFbGVtZW50LnJldmVh
bEFuZFNlbGVjdCgpOwogICAgIH0sCi0gICAgCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dl
Ykluc3BlY3Rvci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqIEBwYXJhbSB7Ym9v
bGVhbn0gaW5FZGl0TW9kZQorICAgICAqLworICAgIHNldFNjcmlwdFNvdXJjZUlzQmVpbmdFZGl0
ZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaW5FZGl0TW9kZSkKKyAgICB7CisgICAgICAgIC8v
IEZJWE1FOiBpbXBsZW1lbnQKKyAgICB9LAorCisgICAgLyoqCisgICAgICogQHBhcmFtIHtBcnJh
eS48V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZT59IG9sZFVJU291cmNlQ29kZUxpc3QKKyAgICAg
KiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlPn0gdWlTb3VyY2VDb2Rl
TGlzdAorICAgICAqLworICAgIHJlcGxhY2VVSVNvdXJjZUNvZGVzOiBmdW5jdGlvbihvbGRVSVNv
dXJjZUNvZGVMaXN0LCB1aVNvdXJjZUNvZGVMaXN0KQorICAgIHsKKyAgICAgICAgLy8gRklYTUU6
IGltcGxlbWVudAorICAgIH0sCisKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqLwogICAgIHNjcmlwdFNlbGVjdGVk
OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewogICAgICAgICB0aGlzLl9sYXN0U2VsZWN0
ZWRVSVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7Ci0gICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVu
dFRvTGlzdGVuZXJzKFdlYkluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yLkV2ZW50cy5TY3JpcHRT
ZWxlY3RlZCwgdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5kaXNwYXRjaEV2ZW50VG9MaXN0
ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IuRXZlbnRzLlNjcmlw
dFNlbGVjdGVkLCB1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAgICAgCiAgICAgLyoqCkBAIC0xODYs
NyArMjIzLDcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlID0gewog
ICAgIH0KIH0KIAotV2ViSW5zcGVjdG9yLlNjcmlwdHNOYXZpZ2F0b3IucHJvdG90eXBlLl9fcHJv
dG9fXyA9IFdlYkluc3BlY3Rvci5UYWJiZWRQYW5lLnByb3RvdHlwZTsKK1dlYkluc3BlY3Rvci5T
Y3JpcHRzTmF2aWdhdG9yLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3IuT2JqZWN0
LnByb3RvdHlwZTsKIAogLyoqCiAgKiBAY29uc3RydWN0b3IKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU2NyaXB0c1BhbmVsLmpzIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TY3JpcHRzUGFuZWwuanMKaW5kZXggNTlhNTU0NGFhZTdj
YjdhNmUyNjdlZmRkMjQ2ZDhjZWM1NWE0ODc1NS4uYTRkM2RhNWJlYmRmZjk4ZDlkZWMyN2YwMmNm
MjM3NjI5NTg1YzA5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9TY3JpcHRzUGFuZWwuanMKQEAgLTQzLDcgKzQzLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlw
dHNQYW5lbCA9IGZ1bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgIH0KICAgICBXZWJJbnNw
ZWN0b3IuR29Ub0xpbmVEaWFsb2cuaW5zdGFsbCh0aGlzLCB2aWV3R2V0dGVyLmJpbmQodGhpcykp
OwogCi0gICAgdGhpcy5lZGl0b3JUb29sYmFyID0gdGhpcy5fY3JlYXRlRWRpdG9yVG9vbGJhcigp
OwogICAgIHRoaXMuZGVidWdUb29sYmFyID0gdGhpcy5fY3JlYXRlRGVidWdUb29sYmFyKCk7CiAK
ICAgICBjb25zdCBpbml0aWFsRGVidWdTaWRlYmFyV2lkdGggPSAyMjU7CkBAIC01OCw3ICs1Nyw2
IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwgPSBmdW5jdGlvbihwcmVzZW50YXRpb25Nb2Rl
bCkKICAgICB0aGlzLmRlYnVnU2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQgPSBkb2N1bWVudC5j
cmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICB0aGlzLmRlYnVnU2lkZWJhclJlc2l6ZVdpZGdldEVs
ZW1lbnQuaWQgPSAic2NyaXB0cy1kZWJ1Zy1zaWRlYmFyLXJlc2l6ZXItd2lkZ2V0IjsKICAgICB0
aGlzLnNwbGl0Vmlldy5pbnN0YWxsUmVzaXplcih0aGlzLmRlYnVnU2lkZWJhclJlc2l6ZVdpZGdl
dEVsZW1lbnQpOwotICAgIHRoaXMuZWRpdG9yVG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmRlYnVn
U2lkZWJhclJlc2l6ZVdpZGdldEVsZW1lbnQpOwogCiAgICAgaWYgKFByZWZlcmVuY2VzLnVzZVNj
cmlwdE5hdmlnYXRvcikgewogICAgICAgICBjb25zdCBpbml0aWFsTmF2aWdhdG9yV2lkdGggPSAy
MjU7CkBAIC02OSwxMSArNjcsMTAgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0
aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgICAgICB0aGlzLmVkaXRvclZpZXcubWluaW1hbE1h
aW5XaWR0aFBlcmNlbnQgPSBtaW5pbWFsVmlld3NDb250YWluZXJXaWR0aFBlcmNlbnQ7CiAgICAg
ICAgIHRoaXMuZWRpdG9yVmlldy5zaG93KHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50KTsKIAot
ICAgICAgICB0aGlzLmVkaXRvclZpZXcubWFpbkVsZW1lbnQuYXBwZW5kQ2hpbGQodGhpcy5lZGl0
b3JUb29sYmFyKTsKLSAgICAgICAgCi0gICAgICAgIHRoaXMuX25hdmlnYXRvciA9IG5ldyBXZWJJ
bnNwZWN0b3IuU2NyaXB0c05hdmlnYXRvcih0aGlzLl9wcmVzZW50YXRpb25Nb2RlbCk7Ci0gICAg
ICAgIHRoaXMuX25hdmlnYXRvci5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5TY3JpcHRz
TmF2aWdhdG9yLkV2ZW50cy5TY3JpcHRTZWxlY3RlZCwgdGhpcy5fc2NyaXB0U2VsZWN0ZWRJbk5h
dmlnYXRvciwgdGhpcykKLSAgICAgICAgdGhpcy5fbmF2aWdhdG9yLnNob3codGhpcy5lZGl0b3JW
aWV3LnNpZGViYXJFbGVtZW50KTsKKyAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yID0gbmV3IFdl
Ykluc3BlY3Rvci5TY3JpcHRzTmF2aWdhdG9yKHRoaXMuX3ByZXNlbnRhdGlvbk1vZGVsKTsKKyAg
ICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yLmFkZEV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNj
cmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IuRXZlbnRzLlNjcmlwdFNlbGVjdGVkLCB0aGlzLl9zY3Jp
cHRTZWxlY3RlZCwgdGhpcykKKworICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3Iuc2hvdyh0aGlz
LmVkaXRvclZpZXcuc2lkZWJhckVsZW1lbnQpOwogCiAgICAgICAgIHRoaXMudmlld3NDb250YWlu
ZXJFbGVtZW50ID0gdGhpcy5lZGl0b3JWaWV3Lm1haW5FbGVtZW50OwogCkBAIC04Miw4ICs3OSwx
MiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsID0gZnVuY3Rpb24ocHJlc2VudGF0aW9uTW9k
ZWwpCiAgICAgICAgIHRoaXMuZWRpdG9yVmlldy5pbnN0YWxsUmVzaXplcih0aGlzLl9uYXZpZ2F0
b3JSZXNpemVXaWRnZXRFbGVtZW50KTsKICAgICAgICAgdGhpcy5lZGl0b3JWaWV3LnNpZGViYXJF
bGVtZW50LmFwcGVuZENoaWxkKHRoaXMuX25hdmlnYXRvclJlc2l6ZVdpZGdldEVsZW1lbnQpOwog
ICAgIH0gZWxzZSB7Ci0gICAgICAgIHRoaXMuc3BsaXRWaWV3Lm1haW5FbGVtZW50LmFwcGVuZENo
aWxkKHRoaXMuZWRpdG9yVG9vbGJhcik7CisgICAgICAgIHRoaXMuX2ZpbGVTZWxlY3RvciA9IG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvcih0aGlzLl9wcmVz
ZW50YXRpb25Nb2RlbCk7CisgICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5zaG93RGVidWdTaWRl
YmFyUmVzaXplV2lkZ2V0KHRoaXMuZGVidWdTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCk7CiAg
ICAgICAgIHRoaXMudmlld3NDb250YWluZXJFbGVtZW50ID0gdGhpcy5zcGxpdFZpZXcubWFpbkVs
ZW1lbnQ7CisgICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5hZGRFdmVudExpc3RlbmVyKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLkV2ZW50cy5TY3JpcHRTZWxlY3RlZCwg
dGhpcy5fc2NyaXB0U2VsZWN0ZWQsIHRoaXMpOworICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3Iu
YWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5F
dmVudHMuUmVsZWFzZWRGb2N1c0FmdGVyU2VsZWN0aW9uLCB0aGlzLl9maWxlU2VsZWN0b3JSZWxl
YXNlZEZvY3VzLCB0aGlzKTsKKyAgICAgICAgdGhpcy5fZmlsZVNlbGVjdG9yLnNob3codGhpcy5z
cGxpdFZpZXcubWFpbkVsZW1lbnQpOwogICAgIH0KIAogICAgIHRoaXMuc2lkZWJhclBhbmVzID0g
e307CkBAIC0xNjgsOSArMTY5LDkgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbCA9IGZ1bmN0
aW9uKHByZXNlbnRhdGlvbk1vZGVsKQogICAgIGlmIChlbmFibGVEZWJ1Z2dlcikKICAgICAgICAg
V2ViSW5zcGVjdG9yLmRlYnVnZ2VyTW9kZWwuZW5hYmxlRGVidWdnZXIoKTsKIAotICAgIFdlYklu
c3BlY3Rvci5zZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVycy5hZGRDaGFuZ2VMaXN0ZW5lcih0aGlz
Ll9zaG93U2NyaXB0Rm9sZGVyc1NldHRpbmdDaGFuZ2VkLmJpbmQodGhpcykpOwotCiAgICAgV2Vi
SW5zcGVjdG9yLmFkdmFuY2VkU2VhcmNoQ29udHJvbGxlci5yZWdpc3RlclNlYXJjaFNjb3BlKG5l
dyBXZWJJbnNwZWN0b3IuU2NyaXB0c1NlYXJjaFNjb3BlKCkpOworICAgIAorICAgIHRoaXMuX3Nv
dXJjZUZyYW1lc0J5VUlTb3VyY2VDb2RlcyA9IG5ldyBNYXAoKTsKIH0KIAogLy8gS2VlcCB0aGVz
ZSBpbiBzeW5jIHdpdGggV2ViQ29yZTo6U2NyaXB0RGVidWdTZXJ2ZXIKQEAgLTE5Myw3ICsxOTQs
NyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgIGdldCBk
ZWZhdWx0Rm9jdXNlZEVsZW1lbnQoKQogICAgIHsKLSAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVz
U2VsZWN0RWxlbWVudDsKKyAgICAgICAgcmV0dXJuIHRoaXMuX2ZpbGVTZWxlY3Rvci5kZWZhdWx0
Rm9jdXNlZEVsZW1lbnQ7CiAgICAgfSwKIAogICAgIGdldCBwYXVzZWQoKQpAQCAtMjI0LDE0NCAr
MjI1LDI5IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgIHsK
ICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291
cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKIAotICAgICAgICBpZiAoIXVpU291cmNlQ29kZS51cmwp
IHsKLSAgICAgICAgICAgIC8vIEFub255bW91cyBzb3VyY2VzIGFyZSBzaG93biBvbmx5IHdoZW4g
c3RlcHBpbmcuCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICBpZiAo
dGhpcy5fbmF2aWdhdG9yKQotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdG9yLmFkZFVJU291cmNl
Q29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0
KHVpU291cmNlQ29kZSk7CisgICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5hZGRVSVNvdXJjZUNv
ZGUodWlTb3VyY2VDb2RlKTsKIAogICAgICAgICB2YXIgbGFzdFZpZXdlZFVSTCA9IFdlYkluc3Bl
Y3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2NyaXB0RmlsZS5nZXQoKTsKICAgICAgICAgaWYgKCF0
aGlzLl9pbml0aWFsVmlld1NlbGVjdGlvblByb2Nlc3NlZCkgewogICAgICAgICAgICAgdGhpcy5f
aW5pdGlhbFZpZXdTZWxlY3Rpb25Qcm9jZXNzZWQgPSB0cnVlOwogICAgICAgICAgICAgLy8gT3B0
aW9uIHdlIGp1c3QgYWRkZWQgaXMgdGhlIG9ubHkgb3B0aW9uIGluIGZpbGVzIHNlbGVjdC4KICAg
ICAgICAgICAgIC8vIFdlIGhhdmUgdG8gc2hvdyBjb3JyZXNwb25kaW5nIHNvdXJjZSBmcmFtZSBp
bW1lZGlhdGVseS4KLSAgICAgICAgICAgIHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlz
dG9yeSh1aVNvdXJjZUNvZGUpOworICAgICAgICAgICAgdGhpcy5fc2hvd0FuZFJldmVhbEluRmls
ZVNlbGVjdG9yKHVpU291cmNlQ29kZSk7CiAgICAgICAgICAgICAvLyBSZXN0b3JlIG9yaWdpbmFs
IHZhbHVlIG9mIGxhc3RWaWV3ZWRTY3JpcHRGaWxlIGJlY2F1c2UKICAgICAgICAgICAgIC8vIHNv
dXJjZSBmcmFtZSB3YXMgc2hvd24gYXMgYSByZXN1bHQgb2YgaW5pdGlhbCBsb2FkLgogICAgICAg
ICAgICAgV2ViSW5zcGVjdG9yLnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlLnNldChsYXN0
Vmlld2VkVVJMKTsKICAgICAgICAgfSBlbHNlIGlmICh1aVNvdXJjZUNvZGUudXJsID09PSBsYXN0
Vmlld2VkVVJMKQotICAgICAgICAgICAgdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0
b3J5KHVpU291cmNlQ29kZSk7CisgICAgICAgICAgICB0aGlzLl9zaG93QW5kUmV2ZWFsSW5GaWxl
U2VsZWN0b3IodWlTb3VyY2VDb2RlKTsKICAgICB9LAogCiAgICAgX3VpU291cmNlQ29kZVJlbW92
ZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8q
KiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gKi8gZXZlbnQuZGF0YTsKLSAgICAg
ICAgCi0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUuX3NvdXJjZUZyYW1lKQotICAgICAgICAgICAg
dWlTb3VyY2VDb2RlLl9zb3VyY2VGcmFtZS5kZXRhY2goKTsKLSAgICB9LAotCi0gICAgX3Nob3dT
Y3JpcHRGb2xkZXJzU2V0dGluZ0NoYW5nZWQ6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHZh
ciBzZWxlY3RlZE9wdGlvbiA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudFt0aGlzLl9maWxlc1Nl
bGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF07Ci0gICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBz
ZWxlY3RlZE9wdGlvbiA/IHNlbGVjdGVkT3B0aW9uLl91aVNvdXJjZUNvZGUgOiBudWxsOwotCi0g
ICAgICAgIHZhciBvcHRpb25zID0gQXJyYXkucHJvdG90eXBlLnNsaWNlLmNhbGwodGhpcy5fZmls
ZXNTZWxlY3RFbGVtZW50KTsKLSAgICAgICAgdGhpcy5fcmVzZXRGaWxlc1NlbGVjdCgpOwotICAg
ICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9wdGlvbnMubGVuZ3RoOyArK2kpIHsKLSAgICAgICAg
ICAgIGlmIChvcHRpb25zW2ldLl91aVNvdXJjZUNvZGUpCi0gICAgICAgICAgICAgICAgdGhpcy5f
YWRkT3B0aW9uVG9GaWxlc1NlbGVjdChvcHRpb25zW2ldLl91aVNvdXJjZUNvZGUpOwotICAgICAg
ICB9Ci0KLSAgICAgICAgaWYgKHVpU291cmNlQ29kZSkgewotICAgICAgICAgICAgdmFyIGluZGV4
ID0gdWlTb3VyY2VDb2RlLl9vcHRpb24uaW5kZXg7Ci0gICAgICAgICAgICBpZiAodHlwZW9mIGlu
ZGV4ID09PSAibnVtYmVyIikKLSAgICAgICAgICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQuc2VsZWN0ZWRJbmRleCA9IGluZGV4OwotICAgICAgICB9Ci0gICAgfSwKLQotICAgIC8qKgot
ICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCi0g
ICAgICovCi0gICAgX2FkZE9wdGlvblRvRmlsZXNTZWxlY3Q6IGZ1bmN0aW9uKHVpU291cmNlQ29k
ZSkKLSAgICB7Ci0gICAgICAgIHZhciBzaG93U2NyaXB0Rm9sZGVycyA9IFdlYkluc3BlY3Rvci5z
ZXR0aW5ncy5zaG93U2NyaXB0Rm9sZGVycy5nZXQoKTsKLQotICAgICAgICB2YXIgc2VsZWN0ID0g
dGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50OwotICAgICAgICBpZiAoIXNlbGVjdC5kb21haW5PcHRp
b25zKQotICAgICAgICAgICAgc2VsZWN0LmRvbWFpbk9wdGlvbnMgPSB7fTsKLSAgICAgICAgaWYg
KCFzZWxlY3QuZm9sZGVyT3B0aW9ucykKLSAgICAgICAgICAgIHNlbGVjdC5mb2xkZXJPcHRpb25z
ID0ge307Ci0KLSAgICAgICAgdmFyIG9wdGlvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9w
dGlvbiIpOwotICAgICAgICBvcHRpb24uX3VpU291cmNlQ29kZSA9IHVpU291cmNlQ29kZTsKLSAg
ICAgICAgdmFyIHBhcnNlZFVSTCA9IHVpU291cmNlQ29kZS51cmwuYXNQYXJzZWRVUkwoKTsKLQot
ICAgICAgICBjb25zdCBpbmRlbnQgPSBXZWJJbnNwZWN0b3IuaXNNYWMoKSA/ICIiIDogIlx1MDBh
MFx1MDBhMFx1MDBhMFx1MDBhMCI7Ci0KLSAgICAgICAgb3B0aW9uLmRpc3BsYXlOYW1lID0gdWlT
b3VyY2VDb2RlLmRpc3BsYXlOYW1lOwotCi0gICAgICAgIHZhciBjb250ZW50U2NyaXB0UHJlZml4
ID0gdWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCA/ICIyOiIgOiAiMDoiOwotICAgICAgICB2
YXIgZm9sZGVyTmFtZSA9IHVpU291cmNlQ29kZS5mb2xkZXJOYW1lOwotICAgICAgICB2YXIgZG9t
YWluID0gdWlTb3VyY2VDb2RlLmRvbWFpbjsKLQotICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlz
Q29udGVudFNjcmlwdCAmJiBkb21haW4pIHsKLSAgICAgICAgICAgIC8vIFJlbmRlciBleHRlbnNp
b24gZG9tYWluIGFzIGEgcGF0aCBpbiBzdHJ1Y3R1cmVkIHZpZXcKLSAgICAgICAgICAgIGZvbGRl
ck5hbWUgPSBkb21haW4gKyAoZm9sZGVyTmFtZSA/IGZvbGRlck5hbWUgOiAiIik7Ci0gICAgICAg
ICAgICBkb21haW4gPSAiIjsKLSAgICAgICAgfQotCi0gICAgICAgIHZhciBmb2xkZXJOYW1lRm9y
U29ydGluZyA9IGNvbnRlbnRTY3JpcHRQcmVmaXggKyAoZG9tYWluID8gZG9tYWluICsgIlx0XHQi
IDogIiIpICsgZm9sZGVyTmFtZTsKLQotICAgICAgICBpZiAoc2hvd1NjcmlwdEZvbGRlcnMpIHsK
LSAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gaW5kZW50ICsgKHVpU291cmNlQ29kZS5kaXNwbGF5
TmFtZSA/IHVpU291cmNlQ29kZS5kaXNwbGF5TmFtZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygi
KHByb2dyYW0pIikpOwotICAgICAgICAgICAgb3B0aW9uLm5hbWVGb3JTb3J0aW5nID0gZm9sZGVy
TmFtZUZvclNvcnRpbmcgKyAiXHQvXHQiICsgdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lOyAvLyBV
c2UgJ1x0JyB0byBtYWtlIGZpbGVzIHN0aWNrIHRvIHRoZWlyIGZvbGRlci4KLSAgICAgICAgfSBl
bHNlIHsKLSAgICAgICAgICAgIG9wdGlvbi50ZXh0ID0gdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1l
ID8gdWlTb3VyY2VDb2RlLmRpc3BsYXlOYW1lIDogV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCIocHJv
Z3JhbSkiKTsKLSAgICAgICAgICAgIC8vIENvbnRlbnQgc2NyaXB0IHNob3VsZCBjb250YWluIGl0
cyBkb21haW4gbmFtZSBhcyBhIHByZWZpeAotICAgICAgICAgICAgaWYgKHVpU291cmNlQ29kZS5p
c0NvbnRlbnRTY3JpcHQgJiYgZm9sZGVyTmFtZSkKLSAgICAgICAgICAgICAgICBvcHRpb24udGV4
dCA9IGZvbGRlck5hbWUgKyAiLyIgKyBvcHRpb24udGV4dDsKLSAgICAgICAgICAgIG9wdGlvbi5u
YW1lRm9yU29ydGluZyA9IGNvbnRlbnRTY3JpcHRQcmVmaXggKyBvcHRpb24udGV4dDsKLSAgICAg
ICAgfQotICAgICAgICBvcHRpb24udGl0bGUgPSB1aVNvdXJjZUNvZGUudXJsOwotCi0gICAgICAg
IGlmICh1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0KQotICAgICAgICAgICAgb3B0aW9uLmFk
ZFN0eWxlQ2xhc3MoImV4dGVuc2lvbi1zY3JpcHQiKTsKLQotICAgICAgICBmdW5jdGlvbiBpbnNl
cnRPcmRlcmVkKG9wdGlvbikKLSAgICAgICAgewotICAgICAgICAgICAgZnVuY3Rpb24gb3B0aW9u
Q29tcGFyZShhLCBiKQotICAgICAgICAgICAgewotICAgICAgICAgICAgICAgIHJldHVybiBhLm5h
bWVGb3JTb3J0aW5nLmxvY2FsZUNvbXBhcmUoYi5uYW1lRm9yU29ydGluZyk7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgICAgICB2YXIgaW5zZXJ0aW9uSW5kZXggPSBpbnNlcnRpb25JbmRleEZvck9i
amVjdEluTGlzdFNvcnRlZEJ5RnVuY3Rpb24ob3B0aW9uLCBzZWxlY3QuY2hpbGROb2Rlcywgb3B0
aW9uQ29tcGFyZSk7Ci0gICAgICAgICAgICBzZWxlY3QuaW5zZXJ0QmVmb3JlKG9wdGlvbiwgaW5z
ZXJ0aW9uSW5kZXggPCAwID8gbnVsbCA6IHNlbGVjdC5jaGlsZE5vZGVzLml0ZW0oaW5zZXJ0aW9u
SW5kZXgpKTsKLSAgICAgICAgfQotCi0gICAgICAgIGluc2VydE9yZGVyZWQob3B0aW9uKTsKLQot
ICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVudFNjcmlwdCAmJiAhc2VsZWN0LmNvbnRl
bnRTY3JpcHRTZWN0aW9uKSB7Ci0gICAgICAgICAgICB2YXIgY29udGVudFNjcmlwdFNlY3Rpb24g
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAgICAgIGNvbnRlbnRT
Y3JpcHRTZWN0aW9uLnRleHQgPSAiXHUyMDE0ICIgKyBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIkNv
bnRlbnQgc2NyaXB0cyIpICsgIiBcdTIwMTQiOwotICAgICAgICAgICAgY29udGVudFNjcmlwdFNl
Y3Rpb24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICAgICAgY29udGVudFNjcmlwdFNlY3Rpb24u
bmFtZUZvclNvcnRpbmcgPSAiMS9Db250ZW50U2NyaXB0U2VwYXJhdG9yIjsKLSAgICAgICAgICAg
IHNlbGVjdC5jb250ZW50U2NyaXB0U2VjdGlvbiA9IGNvbnRlbnRTY3JpcHRTZWN0aW9uOwotICAg
ICAgICAgICAgaW5zZXJ0T3JkZXJlZChjb250ZW50U2NyaXB0U2VjdGlvbik7Ci0gICAgICAgIH0K
LQotICAgICAgICBpZiAoc2hvd1NjcmlwdEZvbGRlcnMgJiYgIXVpU291cmNlQ29kZS5pc0NvbnRl
bnRTY3JpcHQgJiYgZG9tYWluICYmICFzZWxlY3QuZG9tYWluT3B0aW9uc1tkb21haW5dKSB7Ci0g
ICAgICAgICAgICB2YXIgZG9tYWluT3B0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3B0
aW9uIik7Ci0gICAgICAgICAgICBkb21haW5PcHRpb24udGV4dCA9ICJcdTIwMTQgIiArIGRvbWFp
biArICIgXHUyMDE0IjsKLSAgICAgICAgICAgIGRvbWFpbk9wdGlvbi5uYW1lRm9yU29ydGluZyA9
ICIwOiIgKyBkb21haW47Ci0gICAgICAgICAgICBkb21haW5PcHRpb24uZGlzYWJsZWQgPSB0cnVl
OwotICAgICAgICAgICAgc2VsZWN0LmRvbWFpbk9wdGlvbnNbZG9tYWluXSA9IGRvbWFpbk9wdGlv
bjsKLSAgICAgICAgICAgIGluc2VydE9yZGVyZWQoZG9tYWluT3B0aW9uKTsKLSAgICAgICAgfQog
Ci0gICAgICAgIGlmIChzaG93U2NyaXB0Rm9sZGVycyAmJiBmb2xkZXJOYW1lICYmICFzZWxlY3Qu
Zm9sZGVyT3B0aW9uc1tmb2xkZXJOYW1lRm9yU29ydGluZ10pIHsKLSAgICAgICAgICAgIHZhciBm
b2xkZXJPcHRpb24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKLSAgICAgICAg
ICAgIGZvbGRlck9wdGlvbi50ZXh0ID0gZm9sZGVyTmFtZTsKLSAgICAgICAgICAgIGZvbGRlck9w
dGlvbi5uYW1lRm9yU29ydGluZyA9IGZvbGRlck5hbWVGb3JTb3J0aW5nOwotICAgICAgICAgICAg
Zm9sZGVyT3B0aW9uLmRpc2FibGVkID0gdHJ1ZTsKLSAgICAgICAgICAgIHNlbGVjdC5mb2xkZXJP
cHRpb25zW2ZvbGRlck5hbWVGb3JTb3J0aW5nXSA9IGZvbGRlck9wdGlvbjsKLSAgICAgICAgICAg
IGluc2VydE9yZGVyZWQoZm9sZGVyT3B0aW9uKTsKKyAgICAgICAgaWYgKHRoaXMuX3NvdXJjZUZy
YW1lc0J5VUlTb3VyY2VDb2Rlcy5nZXQodWlTb3VyY2VDb2RlKSkgeworICAgICAgICAgICAgdGhp
cy5fc291cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGUpLmRldGFjaCgp
OworICAgICAgICAgICAgdGhpcy5fc291cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLnJlbW92ZSh1
aVNvdXJjZUNvZGUpOwogICAgICAgICB9Ci0KLSAgICAgICAgb3B0aW9uLl91aVNvdXJjZUNvZGUg
PSB1aVNvdXJjZUNvZGU7Ci0gICAgICAgIHVpU291cmNlQ29kZS5fb3B0aW9uID0gb3B0aW9uOwog
ICAgIH0sCiAKICAgICAvKioKQEAgLTM3MCwyMSArMjU2LDE1IEBAIFdlYkluc3BlY3Rvci5TY3Jp
cHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIHNldFNjcmlwdFNvdXJjZUlzQmVp
bmdFZGl0ZWQ6IGZ1bmN0aW9uKHVpU291cmNlQ29kZSwgaW5FZGl0TW9kZSkKICAgICB7Ci0gICAg
ICAgIHZhciBvcHRpb24gPSB1aVNvdXJjZUNvZGUuX29wdGlvbjsKLSAgICAgICAgaWYgKCFvcHRp
b24pCi0gICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIGlmIChpbkVkaXRNb2RlKQotICAgICAg
ICAgICAgb3B0aW9uLnRleHQgPSBvcHRpb24udGV4dC5yZXBsYWNlKC9bXipdJC8sICIkJioiKTsK
LSAgICAgICAgZWxzZQotICAgICAgICAgICAgb3B0aW9uLnRleHQgPSBvcHRpb24udGV4dC5yZXBs
YWNlKC9bKl0kLywgIiIpOworICAgICAgICB0aGlzLl9maWxlU2VsZWN0b3Iuc2V0U2NyaXB0U291
cmNlSXNCZWluZ0VkaXRlZCh1aVNvdXJjZUNvZGUsIGluRWRpdE1vZGUpOwogICAgIH0sCiAKICAg
ICBfY29uc29sZU1lc3NhZ2VzQ2xlYXJlZDogZnVuY3Rpb24oKQogICAgIHsKLSAgICAgICAgZm9y
ICh2YXIgaSA9IDA7IGkgPCB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQubGVuZ3RoOyArK2kpIHsK
LSAgICAgICAgICAgIHZhciBvcHRpb24gPSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnRbaV07Ci0g
ICAgICAgICAgICBpZiAob3B0aW9uLl91aVNvdXJjZUNvZGUgJiYgb3B0aW9uLl91aVNvdXJjZUNv
ZGUuX3NvdXJjZUZyYW1lKQotICAgICAgICAgICAgICAgIG9wdGlvbi5fdWlTb3VyY2VDb2RlLl9z
b3VyY2VGcmFtZS5jbGVhck1lc3NhZ2VzKCk7CisgICAgICAgIHVpU291cmNlQ29kZXMgPSB0aGlz
Ll9zb3VyY2VGcmFtZXNCeVVJU291cmNlQ29kZXM7CisgICAgICAgIGZvciAodmFyIGkgPSAwOyBp
IDwgdWlTb3VyY2VDb2Rlcy5sZW5ndGg7ICsraSkgeworICAgICAgICAgICAgdmFyIHNvdXJjZUZy
YW1lID0gdGhpcy5fc291cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGVz
W2ldKQorICAgICAgICAgICAgc291cmNlRnJhbWUuY2xlYXJNZXNzYWdlcygpOwogICAgICAgICB9
CiAgICAgfSwKIApAQCAtMzkyLDcgKzI3Miw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIG1lc3NhZ2UgPSBldmVudC5kYXRhOwog
Ci0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IG1lc3NhZ2UudWlTb3VyY2VDb2RlLl9zb3VyY2VG
cmFtZTsKKyAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVzQnlVSVNv
dXJjZUNvZGVzLmdldChtZXNzYWdlLnVpU291cmNlQ29kZSkKICAgICAgICAgaWYgKHNvdXJjZUZy
YW1lICYmIHNvdXJjZUZyYW1lLmxvYWRlZCkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lLmFkZE1l
c3NhZ2VUb1NvdXJjZShtZXNzYWdlLmxpbmVOdW1iZXIsIG1lc3NhZ2Uub3JpZ2luYWxNZXNzYWdl
KTsKICAgICB9LApAQCAtNDAxLDcgKzI4MSw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwu
cHJvdG90eXBlID0gewogICAgIHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC5kYXRh
OwogCi0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlLl9z
b3VyY2VGcmFtZTsKKyAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVz
QnlVSVNvdXJjZUNvZGVzLmdldChicmVha3BvaW50LnVpU291cmNlQ29kZSkKICAgICAgICAgaWYg
KHNvdXJjZUZyYW1lICYmIHNvdXJjZUZyYW1lLmxvYWRlZCkKICAgICAgICAgICAgIHNvdXJjZUZy
YW1lLmFkZEJyZWFrcG9pbnQoYnJlYWtwb2ludC5saW5lTnVtYmVyLCBicmVha3BvaW50LnJlc29s
dmVkLCBicmVha3BvaW50LmNvbmRpdGlvbiwgYnJlYWtwb2ludC5lbmFibGVkKTsKIApAQCAtNDEy
LDcgKzI5Miw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAg
IHsKICAgICAgICAgdmFyIGJyZWFrcG9pbnQgPSBldmVudC5kYXRhOwogCi0gICAgICAgIHZhciBz
b3VyY2VGcmFtZSA9IGJyZWFrcG9pbnQudWlTb3VyY2VDb2RlLl9zb3VyY2VGcmFtZTsKKyAgICAg
ICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLmdl
dChicmVha3BvaW50LnVpU291cmNlQ29kZSkKICAgICAgICAgaWYgKHNvdXJjZUZyYW1lICYmIHNv
dXJjZUZyYW1lLmxvYWRlZCkKICAgICAgICAgICAgIHNvdXJjZUZyYW1lLnJlbW92ZUJyZWFrcG9p
bnQoYnJlYWtwb2ludC5saW5lTnVtYmVyKTsKIApAQCAtNTEwLDE1ICszOTAsOCBAQCBXZWJJbnNw
ZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAgICAgICB0aGlzLl9kZWJ1Z2dl
clJlc3VtZWQoKTsKIAotICAgICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3QgPSBbXTsKLSAgICAg
ICAgdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPSAtMTsKLSAgICAgICAgdGhpcy5fdXBk
YXRlQmFja0FuZEZvcndhcmRCdXR0b25zKCk7Ci0KLSAgICAgICAgdGhpcy5fcmVzZXRGaWxlc1Nl
bGVjdCgpOwotCiAgICAgICAgIGRlbGV0ZSB0aGlzLl9pbml0aWFsVmlld1NlbGVjdGlvblByb2Nl
c3NlZDsKIAotICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IG51bGw7CiAKICAgICAgICAgdGhpcy5z
aWRlYmFyUGFuZXMuanNCcmVha3BvaW50cy5yZXNldCgpOwpAQCAtNTI3LDE0ICs0MDAsNiBAQCBX
ZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHRoaXMu
c2lkZWJhclBhbmVzLndvcmtlcnMucmVzZXQoKTsKICAgICB9LAogCi0gICAgX3Jlc2V0RmlsZXNT
ZWxlY3Q6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVu
dC5yZW1vdmVDaGlsZHJlbigpOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuZG9t
YWluT3B0aW9ucyA9IHt9OwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuZm9sZGVy
T3B0aW9ucyA9IHt9OwotICAgICAgICBkZWxldGUgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmNv
bnRlbnRTY3JpcHRTZWN0aW9uOwotICAgIH0sCi0KICAgICBnZXQgdmlzaWJsZVZpZXcoKQogICAg
IHsKICAgICAgICAgcmV0dXJuIHRoaXMuX3Zpc2libGVWaWV3OwpAQCAtNTgyLDcgKzQ0Nyw3IEBA
IFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogICAgICAqLwogICAgIF9z
aG93U291cmNlTGluZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBsaW5lTnVtYmVyKQogICAgIHsK
LSAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9I
aXN0b3J5KHVpU291cmNlQ29kZSk7CisgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3No
b3dBbmRSZXZlYWxJbkZpbGVTZWxlY3Rvcih1aVNvdXJjZUNvZGUpOwogICAgICAgICBpZiAodHlw
ZW9mIGxpbmVOdW1iZXIgPT09ICJudW1iZXIiKQogICAgICAgICAgICAgc291cmNlRnJhbWUuaGln
aGxpZ2h0TGluZShsaW5lTnVtYmVyKTsKICAgICB9LApAQCAtNTkwLDI3ICs0NTUsMTMgQEAgV2Vi
SW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgLyoqCiAgICAgICogQHBh
cmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKICAgICAgKi8KLSAg
ICBfc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUp
CisgICAgX3Nob3dTb3VyY2VGcmFtZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlKQogICAgIHsKLSAg
ICAgICAgaWYgKCF1aVNvdXJjZUNvZGUuX29wdGlvbikKLSAgICAgICAgICAgIHJldHVybjsKLQot
ICAgICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zaG93U291cmNlRnJhbWUodWlTb3VyY2VD
b2RlKTsKLQotICAgICAgICB2YXIgb2xkSW5kZXggPSB0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJ
bmRleDsKLSAgICAgICAgaWYgKG9sZEluZGV4ID49IDApCi0gICAgICAgICAgICB0aGlzLl9iYWNr
Rm9yd2FyZExpc3Quc3BsaWNlKG9sZEluZGV4ICsgMSwgdGhpcy5fYmFja0ZvcndhcmRMaXN0Lmxl
bmd0aCAtIG9sZEluZGV4KTsKLQotICAgICAgICAvLyBDaGVjayBmb3IgYSBwcmV2aW91cyBlbnRy
eSBvZiB0aGUgc2FtZSBvYmplY3QgaW4gX2JhY2tGb3J3YXJkTGlzdC4KLSAgICAgICAgLy8gSWYg
b25lIGlzIGZvdW5kLCByZW1vdmUgaXQuCi0gICAgICAgIHZhciBwcmV2aW91c0VudHJ5SW5kZXgg
PSB0aGlzLl9iYWNrRm9yd2FyZExpc3QuaW5kZXhPZih1aVNvdXJjZUNvZGUpOwotICAgICAgICBp
ZiAocHJldmlvdXNFbnRyeUluZGV4ICE9PSAtMSkKLSAgICAgICAgICAgIHRoaXMuX2JhY2tGb3J3
YXJkTGlzdC5zcGxpY2UocHJldmlvdXNFbnRyeUluZGV4LCAxKTsKLQotICAgICAgICB0aGlzLl9i
YWNrRm9yd2FyZExpc3QucHVzaCh1aVNvdXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9jdXJyZW50
QmFja0ZvcndhcmRJbmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxOworICAg
ICAgICB2YXIgc291cmNlRnJhbWUgPSB0aGlzLl9zb3VyY2VGcmFtZXNCeVVJU291cmNlQ29kZXMu
Z2V0KHVpU291cmNlQ29kZSkgfHwgdGhpcy5fY3JlYXRlU291cmNlRnJhbWUodWlTb3VyY2VDb2Rl
KTsKKyAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IHNvdXJjZUZyYW1lOwogCi0gICAgICAgIHRo
aXMuX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOworICAgICAgICBpZiAodWlTb3VyY2VD
b2RlLnVybCkKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5zZXR0aW5ncy5sYXN0Vmlld2VkU2Ny
aXB0RmlsZS5zZXQodWlTb3VyY2VDb2RlLnVybCk7CiAKICAgICAgICAgcmV0dXJuIHNvdXJjZUZy
YW1lOwogICAgIH0sCkBAIC02MTgsMTkgKzQ2OSwxMCBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLnByb3RvdHlwZSA9IHsKICAgICAvKioKICAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rvci5V
SVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQogICAgICAqLwotICAgIF9zaG93U291cmNlRnJhbWU6
IGZ1bmN0aW9uKHVpU291cmNlQ29kZSkKKyAgICBfc2hvd0FuZFJldmVhbEluRmlsZVNlbGVjdG9y
OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICBpZiAodGhpcy5fbmF2aWdh
dG9yKQotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdG9yLnJldmVhbFVJU291cmNlQ29kZSh1aVNv
dXJjZUNvZGUpOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRl
eCA9IHVpU291cmNlQ29kZS5fb3B0aW9uLmluZGV4OwotCi0gICAgICAgIHZhciBzb3VyY2VGcmFt
ZSA9IHVpU291cmNlQ29kZS5fc291cmNlRnJhbWUgfHwgdGhpcy5fY3JlYXRlU291cmNlRnJhbWUo
dWlTb3VyY2VDb2RlKTsKLSAgICAgICAgdGhpcy52aXNpYmxlVmlldyA9IHNvdXJjZUZyYW1lOwot
Ci0gICAgICAgIGlmICh1aVNvdXJjZUNvZGUudXJsKQotICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LnNldHRpbmdzLmxhc3RWaWV3ZWRTY3JpcHRGaWxlLnNldCh1aVNvdXJjZUNvZGUudXJsKTsKLQot
ICAgICAgICByZXR1cm4gc291cmNlRnJhbWU7CisgICAgICAgIHRoaXMuX2ZpbGVTZWxlY3Rvci5y
ZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgcmV0dXJuIHRoaXMuX3No
b3dTb3VyY2VGcmFtZSh1aVNvdXJjZUNvZGUpOwogICAgIH0sCiAKICAgICAvKioKQEAgLTY0Miw3
ICs0ODQsNyBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZSA9IHsKIAogICAg
ICAgICBzb3VyY2VGcmFtZS5fdWlTb3VyY2VDb2RlID0gdWlTb3VyY2VDb2RlOwogICAgICAgICBz
b3VyY2VGcmFtZS5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5Tb3VyY2VGcmFtZS5FdmVu
dHMuTG9hZGVkLCB0aGlzLl9zb3VyY2VGcmFtZUxvYWRlZCwgdGhpcyk7Ci0gICAgICAgIHVpU291
cmNlQ29kZS5fc291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKKyAgICAgICAgdGhpcy5fc291cmNl
RnJhbWVzQnlVSVNvdXJjZUNvZGVzLnB1dCh1aVNvdXJjZUNvZGUsIHNvdXJjZUZyYW1lKQogICAg
ICAgICByZXR1cm4gc291cmNlRnJhbWU7CiAgICAgfSwKIApAQCAtNjUxLDE4ICs0OTMsMTAgQEAg
V2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICovCiAgICAgX3Jl
bW92ZVNvdXJjZUZyYW1lOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCiAgICAgewotICAgICAgICBp
ZiAodGhpcy5fbmF2aWdhdG9yKQotICAgICAgICAgICAgdGhpcy5fbmF2aWdhdG9yLnJlbW92ZVVJ
U291cmNlQ29kZSh1aVNvdXJjZUNvZGUpOwotICAgICAgICAKLSAgICAgICAgdmFyIG9wdGlvbiA9
IHVpU291cmNlQ29kZS5fb3B0aW9uOwotICAgICAgICAvLyBGSVhNRTogZmluZCBvdXQgd2h5IHdl
IGFyZSBnZXR0aW5nIGhlcmUgd2l0aCBvcHRpb24gZGV0YWNoZWQuCi0gICAgICAgIGlmIChvcHRp
b24gJiYgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50ID09PSBvcHRpb24ucGFyZW50RWxlbWVudCkK
LSAgICAgICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZChvcHRpb24p
OwotCi0gICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHVpU291cmNlQ29kZS5fc291cmNlRnJhbWU7
CisgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3NvdXJjZUZyYW1lc0J5VUlTb3VyY2VD
b2Rlcy5nZXQodWlTb3VyY2VDb2RlKTsKICAgICAgICAgaWYgKCFzb3VyY2VGcmFtZSkKICAgICAg
ICAgICAgIHJldHVybjsKLSAgICAgICAgZGVsZXRlIHVpU291cmNlQ29kZS5fc291cmNlRnJhbWU7
CisgICAgICAgIHRoaXMuX3NvdXJjZUZyYW1lc0J5VUlTb3VyY2VDb2Rlcy5yZW1vdmUodWlTb3Vy
Y2VDb2RlKTsKICAgICAgICAgc291cmNlRnJhbWUuZGV0YWNoKCk7CiAgICAgICAgIHNvdXJjZUZy
YW1lLnJlbW92ZUV2ZW50TGlzdGVuZXIoV2ViSW5zcGVjdG9yLlNvdXJjZUZyYW1lLkV2ZW50cy5M
b2FkZWQsIHRoaXMuX3NvdXJjZUZyYW1lTG9hZGVkLCB0aGlzKTsKICAgICB9LApAQCAtNjc4LDE2
ICs1MTIsMTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHZhciB2aXNpYmxlID0gZmFsc2U7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgb2xk
VUlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7ICsraSkgewogICAgICAgICAgICAgdmFyIHVpU291cmNl
Q29kZSA9IG9sZFVJU291cmNlQ29kZUxpc3RbaV07Ci0gICAgICAgICAgICBpZiAodWlTb3VyY2VD
b2RlLl9zb3VyY2VGcmFtZSA9PT0gdGhpcy52aXNpYmxlVmlldykKKworICAgICAgICAgICAgdmFy
IHNvdXJjZUZyYW1lID0gdGhpcy5fc291cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLmdldCh1aVNv
dXJjZUNvZGUpOworICAgICAgICAgICAgaWYgKHNvdXJjZUZyYW1lICYmIHNvdXJjZUZyYW1lID09
PSB0aGlzLnZpc2libGVWaWV3KQogICAgICAgICAgICAgICAgIHZpc2libGUgPSB0cnVlOwogICAg
ICAgICAgICAgdGhpcy5fcmVtb3ZlU291cmNlRnJhbWUodWlTb3VyY2VDb2RlKTsKICAgICAgICAg
fQogCi0gICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgdWlTb3VyY2VDb2RlTGlzdC5sZW5ndGg7
ICsraSkKLSAgICAgICAgICAgIHRoaXMuX3VpU291cmNlQ29kZUFkZGVkKHsgZGF0YTogdWlTb3Vy
Y2VDb2RlTGlzdFtpXSB9KTsKLQogICAgICAgICBpZiAodmlzaWJsZSkKICAgICAgICAgICAgIHRo
aXMuX3Nob3dTb3VyY2VGcmFtZSh1aVNvdXJjZUNvZGVMaXN0WzBdKTsKKworICAgICAgICB0aGlz
Ll9maWxlU2VsZWN0b3IucmVwbGFjZVVJU291cmNlQ29kZXMob2xkVUlTb3VyY2VDb2RlTGlzdCwg
dWlTb3VyY2VDb2RlTGlzdCk7CiAgICAgfSwKIAogICAgIF9zb3VyY2VGcmFtZUxvYWRlZDogZnVu
Y3Rpb24oZXZlbnQpCkBAIC03MjgsMTQgKzU2Myw3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFu
ZWwucHJvdG90eXBlID0gewogICAgICAgICBpZiAoIXVpTG9jYXRpb24pCiAgICAgICAgICAgICBy
ZXR1cm47CiAKLSAgICAgICAgaWYgKCF1aUxvY2F0aW9uLnVpU291cmNlQ29kZS5fb3B0aW9uKSB7
Ci0gICAgICAgICAgICAvLyBBbm9ueW1vdXMgc2NyaXB0cyBhcmUgbm90IGFkZGVkIHRvIGZpbGVz
IHNlbGVjdCBieSBkZWZhdWx0LgotICAgICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBhbHdh
eXMgYWRkIGFub255bW91cyBzY3JpcHRzIHRvIG5hdmlnYXRvciAoaW4gYSBzZXBhcmF0ZSBmb2xk
ZXIgdHJlZSBlbGVtZW50KQotICAgICAgICAgICAgaWYgKHRoaXMuX25hdmlnYXRvcikKLSAgICAg
ICAgICAgICAgICB0aGlzLl9uYXZpZ2F0b3IuYWRkVUlTb3VyY2VDb2RlKHVpTG9jYXRpb24udWlT
b3VyY2VDb2RlKTsKLSAgICAgICAgICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodWlM
b2NhdGlvbi51aVNvdXJjZUNvZGUpOwotICAgICAgICB9Ci0gICAgICAgIHZhciBzb3VyY2VGcmFt
ZSA9IHRoaXMuX3Nob3dTb3VyY2VGcmFtZUFuZEFkZFRvSGlzdG9yeSh1aUxvY2F0aW9uLnVpU291
cmNlQ29kZSk7CisgICAgICAgIHZhciBzb3VyY2VGcmFtZSA9IHRoaXMuX3Nob3dBbmRSZXZlYWxJ
bkZpbGVTZWxlY3Rvcih1aUxvY2F0aW9uLnVpU291cmNlQ29kZSk7CiAgICAgICAgIHNvdXJjZUZy
YW1lLnNldEV4ZWN1dGlvbkxpbmUodWlMb2NhdGlvbi5saW5lTnVtYmVyKTsKICAgICAgICAgdGhp
cy5fZXhlY3V0aW9uU291cmNlRnJhbWUgPSBzb3VyY2VGcmFtZTsKICAgICB9LApAQCAtNzU4LDIw
ICs1ODYsMTcgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAg
ICAgIHRoaXMuX3VwZGF0ZUV4ZWN1dGlvbkxpbmUodGhpcy5fcHJlc2VudGF0aW9uTW9kZWwuZXhl
Y3V0aW9uTGluZUxvY2F0aW9uKTsKICAgICB9LAogCi0gICAgX3NjcmlwdFNlbGVjdGVkSW5OYXZp
Z2F0b3I6IGZ1bmN0aW9uKGV2ZW50KQorICAgIF9zY3JpcHRTZWxlY3RlZDogZnVuY3Rpb24oZXZl
bnQpCiAgICAgewogICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gLyoqIEB0eXBlIHtXZWJJbnNw
ZWN0b3IuVUlTb3VyY2VDb2RlfSAqLyBldmVudC5kYXRhOwotICAgICAgICB0aGlzLl9zaG93U291
cmNlRnJhbWVBbmRBZGRUb0hpc3RvcnkodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgdGhpcy5fc2hv
d1NvdXJjZUZyYW1lKHVpU291cmNlQ29kZSk7CiAgICAgfSwKIAotICAgIF9maWxlc1NlbGVjdENo
YW5nZWQ6IGZ1bmN0aW9uKGZvY3VzU291cmNlKQorICAgIF9maWxlU2VsZWN0b3JSZWxlYXNlZEZv
Y3VzOiBmdW5jdGlvbihldmVudCkKICAgICB7Ci0gICAgICAgIGlmICh0aGlzLl9maWxlc1NlbGVj
dEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9PT0gLTEpCi0gICAgICAgICAgICByZXR1cm47Ci0KLSAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudFt0aGlzLl9m
aWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0uX3VpU291cmNlQ29kZTsKLSAgICAgICAg
dmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc2hvd1NvdXJjZUZyYW1lQW5kQWRkVG9IaXN0b3J5KHVp
U291cmNlQ29kZSk7Ci0gICAgICAgIGlmIChzb3VyY2VGcmFtZSAmJiBmb2N1c1NvdXJjZSkKKyAg
ICAgICAgdmFyIHVpU291cmNlQ29kZSA9IC8qKiBAdHlwZSB7V2ViSW5zcGVjdG9yLlVJU291cmNl
Q29kZX0gKi8gZXZlbnQuZGF0YTsKKyAgICAgICAgdmFyIHNvdXJjZUZyYW1lID0gdGhpcy5fc291
cmNlRnJhbWVzQnlVSVNvdXJjZUNvZGVzLmdldCh1aVNvdXJjZUNvZGUpOworICAgICAgICBpZiAo
c291cmNlRnJhbWUpCiAgICAgICAgICAgICBzb3VyY2VGcmFtZS5mb2N1cygpOwogICAgIH0sCiAK
QEAgLTgzNSwxMiArNjYwLDYgQEAgV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUg
PSB7CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9u
czogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdGhpcy5iYWNrQnV0dG9uLmRpc2FibGVkID0g
dGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPD0gMDsKLSAgICAgICAgdGhpcy5mb3J3YXJk
QnV0dG9uLmRpc2FibGVkID0gdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPj0gKHRoaXMu
X2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKTsKLSAgICB9LAotCiAgICAgX2NsZWFySW50ZXJm
YWNlOiBmdW5jdGlvbigpCiAgICAgewogICAgICAgICB0aGlzLnNpZGViYXJQYW5lcy5jYWxsc3Rh
Y2sudXBkYXRlKG51bGwpOwpAQCAtODU2LDI4ICs2NzUsNiBAQCBXZWJJbnNwZWN0b3IuU2NyaXB0
c1BhbmVsLnByb3RvdHlwZSA9IHsKICAgICAgICAgdGhpcy5fdXBkYXRlRGVidWdnZXJCdXR0b25z
KCk7CiAgICAgfSwKIAotICAgIF9nb0JhY2s6IGZ1bmN0aW9uKCkKLSAgICB7Ci0gICAgICAgIGlm
ICh0aGlzLl9jdXJyZW50QmFja0ZvcndhcmRJbmRleCA8PSAwKSB7Ci0gICAgICAgICAgICBjb25z
b2xlLmVycm9yKCJDYW4ndCBnbyBiYWNrIGZyb20gaW5kZXggIiArIHRoaXMuX2N1cnJlbnRCYWNr
Rm9yd2FyZEluZGV4KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAg
IHRoaXMuX3Nob3dTb3VyY2VGcmFtZSh0aGlzLl9iYWNrRm9yd2FyZExpc3RbLS10aGlzLl9jdXJy
ZW50QmFja0ZvcndhcmRJbmRleF0pOwotICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2Fy
ZEJ1dHRvbnMoKTsKLSAgICB9LAotCi0gICAgX2dvRm9yd2FyZDogZnVuY3Rpb24oKQotICAgIHsK
LSAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID49IHRoaXMuX2JhY2tG
b3J3YXJkTGlzdC5sZW5ndGggLSAxKSB7Ci0gICAgICAgICAgICBjb25zb2xlLmVycm9yKCJDYW4n
dCBnbyBmb3J3YXJkIGZyb20gaW5kZXggIiArIHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4
KTsKLSAgICAgICAgICAgIHJldHVybjsKLSAgICAgICAgfQotCi0gICAgICAgIHRoaXMuX3Nob3dT
b3VyY2VGcmFtZSh0aGlzLl9iYWNrRm9yd2FyZExpc3RbKyt0aGlzLl9jdXJyZW50QmFja0Zvcndh
cmRJbmRleF0pOwotICAgICAgICB0aGlzLl91cGRhdGVCYWNrQW5kRm9yd2FyZEJ1dHRvbnMoKTsK
LSAgICB9LAotCiAgICAgZ2V0IGRlYnVnZ2luZ0VuYWJsZWQoKQogICAgIHsKICAgICAgICAgcmV0
dXJuIHRoaXMuX2RlYnVnZ2VyRW5hYmxlZDsKQEAgLTk5Nyw0OCArNzk0LDYgQEAgV2ViSW5zcGVj
dG9yLlNjcmlwdHNQYW5lbC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBXZWJJbnNwZWN0b3Iu
ZXZhbHVhdGVJbkNvbnNvbGUoc2VsZWN0aW9uLnRvU3RyaW5nKCkpOwogICAgIH0sCiAKLSAgICBf
Y3JlYXRlRWRpdG9yVG9vbGJhcjogZnVuY3Rpb24oKQotICAgIHsKLSAgICAgICAgdmFyIGVkaXRv
clRvb2xiYXIgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKLSAgICAgICAgZWRpdG9y
VG9vbGJhci5jbGFzc05hbWUgPSAic3RhdHVzLWJhciI7Ci0gICAgICAgIGVkaXRvclRvb2xiYXIu
aWQgPSAic2NyaXB0cy1lZGl0b3ItdG9vbGJhciI7Ci0KLSAgICAgICAgdGhpcy5iYWNrQnV0dG9u
ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgIHRoaXMuYmFja0J1
dHRvbi5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKLSAgICAgICAgdGhpcy5iYWNrQnV0
dG9uLmlkID0gInNjcmlwdHMtYmFjayI7Ci0gICAgICAgIHRoaXMuYmFja0J1dHRvbi50aXRsZSA9
IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgcHJldmlvdXMgc2NyaXB0IHJlc291cmNl
LiIpOwotICAgICAgICB0aGlzLmJhY2tCdXR0b24uZGlzYWJsZWQgPSB0cnVlOwotICAgICAgICB0
aGlzLmJhY2tCdXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikp
OwotICAgICAgICB0aGlzLmJhY2tCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlz
Ll9nb0JhY2suYmluZCh0aGlzKSwgZmFsc2UpOwotICAgICAgICBlZGl0b3JUb29sYmFyLmFwcGVu
ZENoaWxkKHRoaXMuYmFja0J1dHRvbik7Ci0KLSAgICAgICAgdGhpcy5mb3J3YXJkQnV0dG9uID0g
ZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYnV0dG9uIik7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1
dHRvbi5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKLSAgICAgICAgdGhpcy5mb3J3YXJk
QnV0dG9uLmlkID0gInNjcmlwdHMtZm9yd2FyZCI7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRv
bi50aXRsZSA9IFdlYkluc3BlY3Rvci5VSVN0cmluZygiU2hvdyB0aGUgbmV4dCBzY3JpcHQgcmVz
b3VyY2UuIik7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCA9IHRydWU7Ci0g
ICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5hcHBlbmRDaGlsZChkb2N1bWVudC5jcmVhdGVFbGVt
ZW50KCJpbWciKSk7Ci0gICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5hZGRFdmVudExpc3RlbmVy
KCJjbGljayIsIHRoaXMuX2dvRm9yd2FyZC5iaW5kKHRoaXMpLCBmYWxzZSk7Ci0gICAgICAgIGVk
aXRvclRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5mb3J3YXJkQnV0dG9uKTsKLQotICAgICAgICB0
aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzZWxlY3Qi
KTsKLSAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9ICJzdGF0dXMt
YmFyLWl0ZW0iOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuaWQgPSAic2NyaXB0
cy1maWxlcyI7Ci0gICAgICAgIHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudC5hZGRFdmVudExpc3Rl
bmVyKCJjaGFuZ2UiLCB0aGlzLl9maWxlc1NlbGVjdENoYW5nZWQuYmluZCh0aGlzLCB0cnVlKSwg
ZmFsc2UpOwotICAgICAgICB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5l
cigia2V5dXAiLCB0aGlzLl9maWxlc1NlbGVjdENoYW5nZWQuYmluZCh0aGlzLCBmYWxzZSksIGZh
bHNlKTsKLSAgICAgICAgZWRpdG9yVG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLl9maWxlc1NlbGVj
dEVsZW1lbnQpOwotCi0gICAgICAgIHRoaXMuZnVuY3Rpb25zU2VsZWN0RWxlbWVudCA9IGRvY3Vt
ZW50LmNyZWF0ZUVsZW1lbnQoInNlbGVjdCIpOwotICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVj
dEVsZW1lbnQuY2xhc3NOYW1lID0gInN0YXR1cy1iYXItaXRlbSI7Ci0gICAgICAgIHRoaXMuZnVu
Y3Rpb25zU2VsZWN0RWxlbWVudC5pZCA9ICJzY3JpcHRzLWZ1bmN0aW9ucyI7Ci0KLSAgICAgICAg
Ly8gRklYTUU6IGFwcGVuZCB0aGUgZnVuY3Rpb25zIHNlbGVjdCBlbGVtZW50IHRvIHRoZSB0b3Ag
c3RhdHVzIGJhciB3aGVuIGl0Ci0gICAgICAgIC8vIGlzIGltcGxlbWVudGVkLgotICAgICAgICAv
LyBlZGl0b3JUb29sYmFyLmFwcGVuZENoaWxkKHRoaXMuZnVuY3Rpb25zU2VsZWN0RWxlbWVudCk7
Ci0gICAgICAgIAotICAgICAgICByZXR1cm4gZWRpdG9yVG9vbGJhcjsKLSAgICB9LAotCiAgICAg
X2NyZWF0ZURlYnVnVG9vbGJhcjogZnVuY3Rpb24oKQogICAgIHsKICAgICAgICAgdmFyIGRlYnVn
VG9vbGJhciA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwpAQCAtMTIwMSwzICs5NTYs
NDA3IEBAIFdlYkluc3BlY3Rvci5TY3JpcHRzUGFuZWwucHJvdG90eXBlID0gewogfQogCiBXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLnByb3RvdHlwZS5fX3Byb3RvX18gPSBXZWJJbnNwZWN0b3Iu
UGFuZWwucHJvdG90eXBlOworCisvKioKKyAqIEBpbnRlcmZhY2UKKyAqLworV2ViSW5zcGVjdG9y
LlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3IgPSBmdW5jdGlvbigpIHsgfQorCitXZWJJbnNwZWN0
b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMgPSB7CisgICAgU2NyaXB0U2VsZWN0
ZWQ6ICJTY3JpcHRTZWxlY3RlZCIsCisgICAgUmVsZWFzZWRGb2N1c0FmdGVyU2VsZWN0aW9uOiAi
UmVsZWFzZWRGb2N1c0FmdGVyU2VsZWN0aW9uIgorfQorCitXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLkZpbGVTZWxlY3Rvci5wcm90b3R5cGUgPSB7CisgICAgLyoqCisgICAgICogQHR5cGUge0Vs
ZW1lbnR9CisgICAgICovCisgICAgZ2V0IGRlZmF1bHRGb2N1c2VkRWxlbWVudCgpIHsgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7RWxlbWVudH0gZWxlbWVudAorICAgICAqLworICAgIHNo
b3c6IGZ1bmN0aW9uKGVsZW1lbnQpIHsgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2Vi
SW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgYWRkVUlT
b3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgfSwKKworICAgIC8qKgorICAgICAq
IEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICov
CisgICAgcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpIHsgfSwKKwor
ICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3Vy
Y2VDb2RlCisgICAgICogQHBhcmFtIHtib29sZWFufSBpbkVkaXRNb2RlCisgICAgICovCisgICAg
c2V0U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpbkVk
aXRNb2RlKSB7IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0
b3IuVUlTb3VyY2VDb2RlPn0gb2xkVUlTb3VyY2VDb2RlTGlzdAorICAgICAqIEBwYXJhbSB7QXJy
YXkuPFdlYkluc3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0CisgICAgICov
CisgICAgcmVwbGFjZVVJU291cmNlQ29kZXM6IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3Qs
IHVpU291cmNlQ29kZUxpc3QpIHsgfSwKK30KKworLyoqCisgKiBAaW1wbGVtZW50cyB7V2ViSW5z
cGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxlU2VsZWN0b3J9CisgKiBAZXh0ZW5kcyB7V2ViSW5zcGVj
dG9yLk9iamVjdH0KKyAqIEBjb25zdHJ1Y3RvcgorICovCitXZWJJbnNwZWN0b3IuU2NyaXB0c1Bh
bmVsLlNpbXBsZUZpbGVTZWxlY3RvciA9IGZ1bmN0aW9uKHByZXNlbnRhdGlvbk1vZGVsKQorewor
ICAgIFdlYkluc3BlY3Rvci5PYmplY3QuY2FsbCh0aGlzKTsKKyAgICB0aGlzLmVkaXRvclRvb2xi
YXIgPSB0aGlzLl9jcmVhdGVFZGl0b3JUb29sYmFyKCk7CisgICAgCisgICAgdGhpcy5fcHJlc2Vu
dGF0aW9uTW9kZWwgPSBwcmVzZW50YXRpb25Nb2RlbDsKKyAgICBXZWJJbnNwZWN0b3Iuc2V0dGlu
Z3Muc2hvd1NjcmlwdEZvbGRlcnMuYWRkQ2hhbmdlTGlzdGVuZXIodGhpcy5fc2hvd1NjcmlwdEZv
bGRlcnNTZXR0aW5nQ2hhbmdlZC5iaW5kKHRoaXMpKTsKKyAgICBXZWJJbnNwZWN0b3IuZGVidWdn
ZXJNb2RlbC5hZGRFdmVudExpc3RlbmVyKFdlYkluc3BlY3Rvci5EZWJ1Z2dlck1vZGVsLkV2ZW50
cy5EZWJ1Z2dlcldhc0Rpc2FibGVkLCB0aGlzLl9yZXNldCwgdGhpcyk7CisgICAgdGhpcy5fcHJl
c2VudGF0aW9uTW9kZWwuYWRkRXZlbnRMaXN0ZW5lcihXZWJJbnNwZWN0b3IuRGVidWdnZXJQcmVz
ZW50YXRpb25Nb2RlbC5FdmVudHMuRGVidWdnZXJSZXNldCwgdGhpcy5fcmVzZXQsIHRoaXMpOwor
ICAgIAorICAgIHRoaXMuX2JhY2tGb3J3YXJkTGlzdCA9IFtdOworfQorCitXZWJJbnNwZWN0b3Iu
U2NyaXB0c1BhbmVsLlNpbXBsZUZpbGVTZWxlY3Rvci5wcm90b3R5cGUgPSB7CisgICAgZ2V0IGRl
ZmF1bHRGb2N1c2VkRWxlbWVudCgpCisgICAgeworICAgICAgICByZXR1cm4gdGhpcy5fZmlsZXNT
ZWxlY3RFbGVtZW50OworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0VsZW1lbnR9
IGVsZW1lbnQKKyAgICAgKi8KKyAgICBzaG93OiBmdW5jdGlvbihlbGVtZW50KQorICAgIHsKKyAg
ICAgICAgZWxlbWVudC5hcHBlbmRDaGlsZCh0aGlzLmVkaXRvclRvb2xiYXIpOworICAgIH0sCisg
ICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtFbGVtZW50fSBkZWJ1Z1NpZGViYXJSZXNpemVX
aWRnZXRFbGVtZW50CisgICAgICovCisgICAgc2hvd0RlYnVnU2lkZWJhclJlc2l6ZVdpZGdldDog
ZnVuY3Rpb24oZGVidWdTaWRlYmFyUmVzaXplV2lkZ2V0RWxlbWVudCkKKyAgICB7CisgICAgICAg
IHRoaXMuZWRpdG9yVG9vbGJhci5hcHBlbmRDaGlsZChkZWJ1Z1NpZGViYXJSZXNpemVXaWRnZXRF
bGVtZW50KTsKKyAgICB9LAorICAgIAorICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVj
dG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VDb2RlCisgICAgICovCisgICAgYWRkVUlTb3VyY2VD
b2RlOiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCisgICAgeworICAgICAgICBpZiAoIXVpU291cmNl
Q29kZS51cmwpIHsKKyAgICAgICAgICAgIC8vIEFub255bW91cyBzb3VyY2VzIGFyZSBzaG93biBv
bmx5IHdoZW4gc3RlcHBpbmcuCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIH0KKworICAg
ICAgICB0aGlzLl9hZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHVpU291cmNlQ29kZSk7CisgICAgfSwK
KworICAgIC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlT
b3VyY2VDb2RlCisgICAgICovCisgICAgcmV2ZWFsVUlTb3VyY2VDb2RlOiBmdW5jdGlvbih1aVNv
dXJjZUNvZGUpCisgICAgeworICAgICAgICB0aGlzLl9pbm5lclJldmVhbFVJU291cmNlQ29kZSh1
aVNvdXJjZUNvZGUsIHRydWUpOworICAgIH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFt
IHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKiBAcGFyYW0g
e2Jvb2xlYW59IGFkZFRvSGlzdG9yeQorICAgICAqLworICAgIF9pbm5lclJldmVhbFVJU291cmNl
Q29kZTogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBhZGRUb0hpc3RvcnkpCisgICAgeworICAgICAg
ICBpZiAoIXVpU291cmNlQ29kZS5fb3B0aW9uKSB7CisgICAgICAgICAgICAvLyBBbm9ueW1vdXMg
c2NyaXB0cyBhcmUgbm90IGFkZGVkIHRvIGZpbGVzIHNlbGVjdCBieSBkZWZhdWx0LgorICAgICAg
ICAgICAgdGhpcy5fYWRkT3B0aW9uVG9GaWxlc1NlbGVjdCh1aVNvdXJjZUNvZGUpOworICAgICAg
ICB9CisgICAgICAgIAorICAgICAgICBpZiAoIXVpU291cmNlQ29kZS5fb3B0aW9uKQorICAgICAg
ICAgICAgcmV0dXJuOworCisgICAgICAgIGlmIChhZGRUb0hpc3RvcnkpCisgICAgICAgICAgICB0
aGlzLl9hZGRUb0hpc3RvcnkodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgCisgICAgICAgIHRoaXMu
X3VwZGF0ZUJhY2tBbmRGb3J3YXJkQnV0dG9ucygpOworICAgICAgICB0aGlzLl9maWxlc1NlbGVj
dEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHVpU291cmNlQ29kZS5fb3B0aW9uLmluZGV4OworICAg
IH0sCisgICAgCisgICAgLyoqCisgICAgICogQHBhcmFtIHtXZWJJbnNwZWN0b3IuVUlTb3VyY2VD
b2RlfSB1aVNvdXJjZUNvZGUKKyAgICAgKi8KKyAgICBfYWRkVG9IaXN0b3J5OiBmdW5jdGlvbih1
aVNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB2YXIgb2xkSW5kZXggPSB0aGlzLl9jdXJyZW50
QmFja0ZvcndhcmRJbmRleDsKKyAgICAgICAgaWYgKG9sZEluZGV4ID49IDApCisgICAgICAgICAg
ICB0aGlzLl9iYWNrRm9yd2FyZExpc3Quc3BsaWNlKG9sZEluZGV4ICsgMSwgdGhpcy5fYmFja0Zv
cndhcmRMaXN0Lmxlbmd0aCAtIG9sZEluZGV4KTsKKworICAgICAgICAvLyBDaGVjayBmb3IgYSBw
cmV2aW91cyBlbnRyeSBvZiB0aGUgc2FtZSBvYmplY3QgaW4gX2JhY2tGb3J3YXJkTGlzdC4gSWYg
b25lIGlzIGZvdW5kLCByZW1vdmUgaXQuCisgICAgICAgIHZhciBwcmV2aW91c0VudHJ5SW5kZXgg
PSB0aGlzLl9iYWNrRm9yd2FyZExpc3QuaW5kZXhPZih1aVNvdXJjZUNvZGUpOworICAgICAgICBp
ZiAocHJldmlvdXNFbnRyeUluZGV4ICE9PSAtMSkKKyAgICAgICAgICAgIHRoaXMuX2JhY2tGb3J3
YXJkTGlzdC5zcGxpY2UocHJldmlvdXNFbnRyeUluZGV4LCAxKTsKKworICAgICAgICB0aGlzLl9i
YWNrRm9yd2FyZExpc3QucHVzaCh1aVNvdXJjZUNvZGUpOworICAgICAgICB0aGlzLl9jdXJyZW50
QmFja0ZvcndhcmRJbmRleCA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxOworICAg
IH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge0FycmF5LjxXZWJJbnNwZWN0b3IuVUlTb3Vy
Y2VDb2RlPn0gb2xkVUlTb3VyY2VDb2RlTGlzdAorICAgICAqIEBwYXJhbSB7QXJyYXkuPFdlYklu
c3BlY3Rvci5VSVNvdXJjZUNvZGU+fSB1aVNvdXJjZUNvZGVMaXN0CisgICAgICovCisgICAgcmVw
bGFjZVVJU291cmNlQ29kZXM6IGZ1bmN0aW9uKG9sZFVJU291cmNlQ29kZUxpc3QsIHVpU291cmNl
Q29kZUxpc3QpCisgICAgeworICAgICAgICB2YXIgdmlzaWJsZSA9IGZhbHNlOworICAgICAgICB2
YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLl9maWxlc1NlbGVjdEVsZW1lbnRbdGhpcy5fZmlsZXNT
ZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdOworICAgICAgICB2YXIgc2VsZWN0ZWRVSVNvdXJj
ZUNvZGUgPSBzZWxlY3RlZE9wdGlvbiA/IHNlbGVjdGVkT3B0aW9uLl91aVNvdXJjZUNvZGUgOiBu
dWxsOworICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IG9sZFVJU291cmNlQ29kZUxpc3QubGVu
Z3RoOyArK2kpIHsKKyAgICAgICAgICAgIHZhciB1aVNvdXJjZUNvZGUgPSBvbGRVSVNvdXJjZUNv
ZGVMaXN0W2ldOworICAgICAgICAgICAgaWYgKHNlbGVjdGVkVUlTb3VyY2VDb2RlID09PSBvbGRV
SVNvdXJjZUNvZGVMaXN0W2ldKQorICAgICAgICAgICAgICAgIHZpc2libGUgPSB0cnVlOworICAg
ICAgICAgICAgdmFyIG9wdGlvbiA9IHVpU291cmNlQ29kZS5fb3B0aW9uOworICAgICAgICAgICAg
Ly8gRklYTUU6IGZpbmQgb3V0IHdoeSB3ZSBhcmUgZ2V0dGluZyBoZXJlIHdpdGggb3B0aW9uIGRl
dGFjaGVkLgorICAgICAgICAgICAgaWYgKG9wdGlvbiAmJiB0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQgPT09IG9wdGlvbi5wYXJlbnRFbGVtZW50KQorICAgICAgICAgICAgICAgIHRoaXMuX2ZpbGVz
U2VsZWN0RWxlbWVudC5yZW1vdmVDaGlsZChvcHRpb24pOworICAgICAgICB9CisgICAgICAgICAg
ICAKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCB1aVNvdXJjZUNvZGVMaXN0Lmxlbmd0aDsg
KytpKQorICAgICAgICAgICAgdGhpcy5hZGRVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlTGlzdFtp
XSk7CisKKyAgICAgICAgaWYgKHZpc2libGUpCisgICAgICAgICAgICB0aGlzLl9maWxlc1NlbGVj
dEVsZW1lbnQuc2VsZWN0ZWRJbmRleCA9IHVpU291cmNlQ29kZUxpc3RbMF0uX29wdGlvbi5pbmRl
eDsKKyAgICB9LAorICAgIAorICAgIF9zaG93U2NyaXB0Rm9sZGVyc1NldHRpbmdDaGFuZ2VkOiBm
dW5jdGlvbigpCisgICAgeworICAgICAgICB2YXIgc2VsZWN0ZWRPcHRpb24gPSB0aGlzLl9maWxl
c1NlbGVjdEVsZW1lbnRbdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXhdOwor
ICAgICAgICB2YXIgdWlTb3VyY2VDb2RlID0gc2VsZWN0ZWRPcHRpb24gPyBzZWxlY3RlZE9wdGlv
bi5fdWlTb3VyY2VDb2RlIDogbnVsbDsKKworICAgICAgICB2YXIgb3B0aW9ucyA9IEFycmF5LnBy
b3RvdHlwZS5zbGljZS5jYWxsKHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudCk7CisgICAgICAgIHRo
aXMuX3Jlc2V0RmlsZXNTZWxlY3QoKTsKKyAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBvcHRp
b25zLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICBpZiAob3B0aW9uc1tpXS5fdWlTb3VyY2VD
b2RlKQorICAgICAgICAgICAgICAgIHRoaXMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3Qob3B0aW9u
c1tpXS5fdWlTb3VyY2VDb2RlKTsKKyAgICAgICAgfQorCisgICAgICAgIGlmICh1aVNvdXJjZUNv
ZGUpIHsKKyAgICAgICAgICAgIHZhciBpbmRleCA9IHVpU291cmNlQ29kZS5fb3B0aW9uLmluZGV4
OworICAgICAgICAgICAgaWYgKHR5cGVvZiBpbmRleCA9PT0gIm51bWJlciIpCisgICAgICAgICAg
ICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LnNlbGVjdGVkSW5kZXggPSBpbmRleDsKKyAg
ICAgICAgfQorICAgIH0sCisgICAgCisgICAgX3Jlc2V0OiBmdW5jdGlvbigpCisgICAgeworICAg
ICAgICB0aGlzLl9iYWNrRm9yd2FyZExpc3QgPSBbXTsKKyAgICAgICAgdGhpcy5fY3VycmVudEJh
Y2tGb3J3YXJkSW5kZXggPSAtMTsKKyAgICAgICAgdGhpcy5fdXBkYXRlQmFja0FuZEZvcndhcmRC
dXR0b25zKCk7CisgICAgICAgIHRoaXMuX3Jlc2V0RmlsZXNTZWxlY3QoKTsKKyAgICAgICAgdGhp
cy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50LnJlbW92ZUNoaWxkcmVuKCk7CisgICAgfSwKKworICAg
IC8qKgorICAgICAqIEBwYXJhbSB7V2ViSW5zcGVjdG9yLlVJU291cmNlQ29kZX0gdWlTb3VyY2VD
b2RlCisgICAgICogQHBhcmFtIHtib29sZWFufSBpbkVkaXRNb2RlCisgICAgICovCisgICAgc2V0
U2NyaXB0U291cmNlSXNCZWluZ0VkaXRlZDogZnVuY3Rpb24odWlTb3VyY2VDb2RlLCBpbkVkaXRN
b2RlKQorICAgIHsKKyAgICAgICAgdmFyIG9wdGlvbiA9IHVpU291cmNlQ29kZS5fb3B0aW9uOwor
ICAgICAgICBpZiAoIW9wdGlvbikKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKGlu
RWRpdE1vZGUpCisgICAgICAgICAgICBvcHRpb24udGV4dCA9IG9wdGlvbi50ZXh0LnJlcGxhY2Uo
L1teKl0kLywgIiQmKiIpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBvcHRpb24udGV4dCA9
IG9wdGlvbi50ZXh0LnJlcGxhY2UoL1sqXSQvLCAiIik7CisgICAgfSwKKworICAgIC8qKgorICAg
ICAqIEByZXR1cm4ge0VsZW1lbnR9CisgICAgICovCisgICAgX2NyZWF0ZUVkaXRvclRvb2xiYXI6
IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHZhciBlZGl0b3JUb29sYmFyID0gZG9jdW1lbnQu
Y3JlYXRlRWxlbWVudCgiZGl2Iik7CisgICAgICAgIGVkaXRvclRvb2xiYXIuY2xhc3NOYW1lID0g
InN0YXR1cy1iYXIiOworICAgICAgICBlZGl0b3JUb29sYmFyLmlkID0gInNjcmlwdHMtZWRpdG9y
LXRvb2xiYXIiOworCisgICAgICAgIHRoaXMuYmFja0J1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVs
ZW1lbnQoImJ1dHRvbiIpOworICAgICAgICB0aGlzLmJhY2tCdXR0b24uY2xhc3NOYW1lID0gInN0
YXR1cy1iYXItaXRlbSI7CisgICAgICAgIHRoaXMuYmFja0J1dHRvbi5pZCA9ICJzY3JpcHRzLWJh
Y2siOworICAgICAgICB0aGlzLmJhY2tCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0b3IuVUlTdHJp
bmcoIlNob3cgdGhlIHByZXZpb3VzIHNjcmlwdCByZXNvdXJjZS4iKTsKKyAgICAgICAgdGhpcy5i
YWNrQnV0dG9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgdGhpcy5iYWNrQnV0dG9uLmFwcGVu
ZENoaWxkKGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImltZyIpKTsKKyAgICAgICAgdGhpcy5iYWNr
QnV0dG9uLmFkZEV2ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5fZ29CYWNrLmJpbmQodGhpcyks
IGZhbHNlKTsKKyAgICAgICAgZWRpdG9yVG9vbGJhci5hcHBlbmRDaGlsZCh0aGlzLmJhY2tCdXR0
b24pOworCisgICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbiA9IGRvY3VtZW50LmNyZWF0ZUVsZW1l
bnQoImJ1dHRvbiIpOworICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24uY2xhc3NOYW1lID0gInN0
YXR1cy1iYXItaXRlbSI7CisgICAgICAgIHRoaXMuZm9yd2FyZEJ1dHRvbi5pZCA9ICJzY3JpcHRz
LWZvcndhcmQiOworICAgICAgICB0aGlzLmZvcndhcmRCdXR0b24udGl0bGUgPSBXZWJJbnNwZWN0
b3IuVUlTdHJpbmcoIlNob3cgdGhlIG5leHQgc2NyaXB0IHJlc291cmNlLiIpOworICAgICAgICB0
aGlzLmZvcndhcmRCdXR0b24uZGlzYWJsZWQgPSB0cnVlOworICAgICAgICB0aGlzLmZvcndhcmRC
dXR0b24uYXBwZW5kQ2hpbGQoZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW1nIikpOworICAgICAg
ICB0aGlzLmZvcndhcmRCdXR0b24uYWRkRXZlbnRMaXN0ZW5lcigiY2xpY2siLCB0aGlzLl9nb0Zv
cndhcmQuYmluZCh0aGlzKSwgZmFsc2UpOworICAgICAgICBlZGl0b3JUb29sYmFyLmFwcGVuZENo
aWxkKHRoaXMuZm9yd2FyZEJ1dHRvbik7CisKKyAgICAgICAgdGhpcy5fZmlsZXNTZWxlY3RFbGVt
ZW50ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VsZWN0Iik7CisgICAgICAgIHRoaXMuX2Zp
bGVzU2VsZWN0RWxlbWVudC5jbGFzc05hbWUgPSAic3RhdHVzLWJhci1pdGVtIjsKKyAgICAgICAg
dGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50LmlkID0gInNjcmlwdHMtZmlsZXMiOworICAgICAgICB0
aGlzLl9maWxlc1NlbGVjdEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiY2hhbmdlIiwgdGhpcy5f
ZmlsZXNTZWxlY3RDaGFuZ2VkLmJpbmQodGhpcywgdHJ1ZSksIGZhbHNlKTsKKyAgICAgICAgdGhp
cy5fZmlsZXNTZWxlY3RFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoImtleXVwIiwgdGhpcy5fZmls
ZXNTZWxlY3RDaGFuZ2VkLmJpbmQodGhpcywgZmFsc2UpLCBmYWxzZSk7CisgICAgICAgIGVkaXRv
clRvb2xiYXIuYXBwZW5kQ2hpbGQodGhpcy5fZmlsZXNTZWxlY3RFbGVtZW50KTsKKworICAgICAg
ICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJz
ZWxlY3QiKTsKKyAgICAgICAgdGhpcy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50LmNsYXNzTmFtZSA9
ICJzdGF0dXMtYmFyLWl0ZW0iOworICAgICAgICB0aGlzLmZ1bmN0aW9uc1NlbGVjdEVsZW1lbnQu
aWQgPSAic2NyaXB0cy1mdW5jdGlvbnMiOworCisgICAgICAgIC8vIEZJWE1FOiBhcHBlbmQgdGhl
IGZ1bmN0aW9ucyBzZWxlY3QgZWxlbWVudCB0byB0aGUgdG9wIHN0YXR1cyBiYXIgd2hlbiBpdCBp
cyBpbXBsZW1lbnRlZC4gCisgICAgICAgIC8vIGVkaXRvclRvb2xiYXIuYXBwZW5kQ2hpbGQodGhp
cy5mdW5jdGlvbnNTZWxlY3RFbGVtZW50KTsKKyAgICAgICAgCisgICAgICAgIHJldHVybiBlZGl0
b3JUb29sYmFyOworICAgIH0sCisKKyAgICAvKioKKyAgICAgKiBAcGFyYW0ge1dlYkluc3BlY3Rv
ci5VSVNvdXJjZUNvZGV9IHVpU291cmNlQ29kZQorICAgICAqLworICAgIF9hZGRPcHRpb25Ub0Zp
bGVzU2VsZWN0OiBmdW5jdGlvbih1aVNvdXJjZUNvZGUpCisgICAgeworICAgICAgICB2YXIgc2hv
d1NjcmlwdEZvbGRlcnMgPSBXZWJJbnNwZWN0b3Iuc2V0dGluZ3Muc2hvd1NjcmlwdEZvbGRlcnMu
Z2V0KCk7CisKKyAgICAgICAgdmFyIHNlbGVjdCA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudDsK
KyAgICAgICAgaWYgKCFzZWxlY3QuZG9tYWluT3B0aW9ucykKKyAgICAgICAgICAgIHNlbGVjdC5k
b21haW5PcHRpb25zID0ge307CisgICAgICAgIGlmICghc2VsZWN0LmZvbGRlck9wdGlvbnMpCisg
ICAgICAgICAgICBzZWxlY3QuZm9sZGVyT3B0aW9ucyA9IHt9OworCisgICAgICAgIHZhciBvcHRp
b24gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJvcHRpb24iKTsKKyAgICAgICAgb3B0aW9uLl91
aVNvdXJjZUNvZGUgPSB1aVNvdXJjZUNvZGU7CisgICAgICAgIHZhciBwYXJzZWRVUkwgPSB1aVNv
dXJjZUNvZGUudXJsLmFzUGFyc2VkVVJMKCk7CisKKyAgICAgICAgY29uc3QgaW5kZW50ID0gV2Vi
SW5zcGVjdG9yLmlzTWFjKCkgPyAiIiA6ICJcdTAwYTBcdTAwYTBcdTAwYTBcdTAwYTAiOworCisg
ICAgICAgIG9wdGlvbi5kaXNwbGF5TmFtZSA9IHVpU291cmNlQ29kZS5kaXNwbGF5TmFtZTsKKwor
ICAgICAgICB2YXIgY29udGVudFNjcmlwdFByZWZpeCA9IHVpU291cmNlQ29kZS5pc0NvbnRlbnRT
Y3JpcHQgPyAiMjoiIDogIjA6IjsKKyAgICAgICAgdmFyIGZvbGRlck5hbWUgPSB1aVNvdXJjZUNv
ZGUuZm9sZGVyTmFtZTsKKyAgICAgICAgdmFyIGRvbWFpbiA9IHVpU291cmNlQ29kZS5kb21haW47
CisKKyAgICAgICAgaWYgKHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgJiYgZG9tYWluKSB7
CisgICAgICAgICAgICAvLyBSZW5kZXIgZXh0ZW5zaW9uIGRvbWFpbiBhcyBhIHBhdGggaW4gc3Ry
dWN0dXJlZCB2aWV3CisgICAgICAgICAgICBmb2xkZXJOYW1lID0gZG9tYWluICsgKGZvbGRlck5h
bWUgPyBmb2xkZXJOYW1lIDogIiIpOworICAgICAgICAgICAgZG9tYWluID0gIiI7CisgICAgICAg
IH0KKworICAgICAgICB2YXIgZm9sZGVyTmFtZUZvclNvcnRpbmcgPSBjb250ZW50U2NyaXB0UHJl
Zml4ICsgKGRvbWFpbiA/IGRvbWFpbiArICJcdFx0IiA6ICIiKSArIGZvbGRlck5hbWU7CisKKyAg
ICAgICAgaWYgKHNob3dTY3JpcHRGb2xkZXJzKSB7CisgICAgICAgICAgICBvcHRpb24udGV4dCA9
IGluZGVudCArICh1aVNvdXJjZUNvZGUuZGlzcGxheU5hbWUgPyB1aVNvdXJjZUNvZGUuZGlzcGxh
eU5hbWUgOiBXZWJJbnNwZWN0b3IuVUlTdHJpbmcoIihwcm9ncmFtKSIpKTsKKyAgICAgICAgICAg
IG9wdGlvbi5uYW1lRm9yU29ydGluZyA9IGZvbGRlck5hbWVGb3JTb3J0aW5nICsgIlx0L1x0IiAr
IHVpU291cmNlQ29kZS5kaXNwbGF5TmFtZTsgLy8gVXNlICdcdCcgdG8gbWFrZSBmaWxlcyBzdGlj
ayB0byB0aGVpciBmb2xkZXIuCisgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICBvcHRpb24u
dGV4dCA9IHVpU291cmNlQ29kZS5kaXNwbGF5TmFtZSA/IHVpU291cmNlQ29kZS5kaXNwbGF5TmFt
ZSA6IFdlYkluc3BlY3Rvci5VSVN0cmluZygiKHByb2dyYW0pIik7CisgICAgICAgICAgICAvLyBD
b250ZW50IHNjcmlwdCBzaG91bGQgY29udGFpbiBpdHMgZG9tYWluIG5hbWUgYXMgYSBwcmVmaXgK
KyAgICAgICAgICAgIGlmICh1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ICYmIGZvbGRlck5h
bWUpCisgICAgICAgICAgICAgICAgb3B0aW9uLnRleHQgPSBmb2xkZXJOYW1lICsgIi8iICsgb3B0
aW9uLnRleHQ7CisgICAgICAgICAgICBvcHRpb24ubmFtZUZvclNvcnRpbmcgPSBjb250ZW50U2Ny
aXB0UHJlZml4ICsgb3B0aW9uLnRleHQ7CisgICAgICAgIH0KKyAgICAgICAgb3B0aW9uLnRpdGxl
ID0gdWlTb3VyY2VDb2RlLnVybDsKKworICAgICAgICBpZiAodWlTb3VyY2VDb2RlLmlzQ29udGVu
dFNjcmlwdCkKKyAgICAgICAgICAgIG9wdGlvbi5hZGRTdHlsZUNsYXNzKCJleHRlbnNpb24tc2Ny
aXB0Iik7CisKKyAgICAgICAgZnVuY3Rpb24gaW5zZXJ0T3JkZXJlZChvcHRpb24pCisgICAgICAg
IHsKKyAgICAgICAgICAgIGZ1bmN0aW9uIG9wdGlvbkNvbXBhcmUoYSwgYikKKyAgICAgICAgICAg
IHsKKyAgICAgICAgICAgICAgICByZXR1cm4gYS5uYW1lRm9yU29ydGluZy5sb2NhbGVDb21wYXJl
KGIubmFtZUZvclNvcnRpbmcpOworICAgICAgICAgICAgfQorICAgICAgICAgICAgdmFyIGluc2Vy
dGlvbkluZGV4ID0gaW5zZXJ0aW9uSW5kZXhGb3JPYmplY3RJbkxpc3RTb3J0ZWRCeUZ1bmN0aW9u
KG9wdGlvbiwgc2VsZWN0LmNoaWxkTm9kZXMsIG9wdGlvbkNvbXBhcmUpOworICAgICAgICAgICAg
c2VsZWN0Lmluc2VydEJlZm9yZShvcHRpb24sIGluc2VydGlvbkluZGV4IDwgMCA/IG51bGwgOiBz
ZWxlY3QuY2hpbGROb2Rlcy5pdGVtKGluc2VydGlvbkluZGV4KSk7CisgICAgICAgIH0KKworICAg
ICAgICBpbnNlcnRPcmRlcmVkKG9wdGlvbik7CisKKyAgICAgICAgaWYgKHVpU291cmNlQ29kZS5p
c0NvbnRlbnRTY3JpcHQgJiYgIXNlbGVjdC5jb250ZW50U2NyaXB0U2VjdGlvbikgeworICAgICAg
ICAgICAgdmFyIGNvbnRlbnRTY3JpcHRTZWN0aW9uID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgi
b3B0aW9uIik7CisgICAgICAgICAgICBjb250ZW50U2NyaXB0U2VjdGlvbi50ZXh0ID0gIlx1MjAx
NCAiICsgV2ViSW5zcGVjdG9yLlVJU3RyaW5nKCJDb250ZW50IHNjcmlwdHMiKSArICIgXHUyMDE0
IjsKKyAgICAgICAgICAgIGNvbnRlbnRTY3JpcHRTZWN0aW9uLmRpc2FibGVkID0gdHJ1ZTsKKyAg
ICAgICAgICAgIGNvbnRlbnRTY3JpcHRTZWN0aW9uLm5hbWVGb3JTb3J0aW5nID0gIjEvQ29udGVu
dFNjcmlwdFNlcGFyYXRvciI7CisgICAgICAgICAgICBzZWxlY3QuY29udGVudFNjcmlwdFNlY3Rp
b24gPSBjb250ZW50U2NyaXB0U2VjdGlvbjsKKyAgICAgICAgICAgIGluc2VydE9yZGVyZWQoY29u
dGVudFNjcmlwdFNlY3Rpb24pOworICAgICAgICB9CisKKyAgICAgICAgaWYgKHNob3dTY3JpcHRG
b2xkZXJzICYmICF1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ICYmIGRvbWFpbiAmJiAhc2Vs
ZWN0LmRvbWFpbk9wdGlvbnNbZG9tYWluXSkgeworICAgICAgICAgICAgdmFyIGRvbWFpbk9wdGlv
biA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9wdGlvbiIpOworICAgICAgICAgICAgZG9tYWlu
T3B0aW9uLnRleHQgPSAiXHUyMDE0ICIgKyBkb21haW4gKyAiIFx1MjAxNCI7CisgICAgICAgICAg
ICBkb21haW5PcHRpb24ubmFtZUZvclNvcnRpbmcgPSAiMDoiICsgZG9tYWluOworICAgICAgICAg
ICAgZG9tYWluT3B0aW9uLmRpc2FibGVkID0gdHJ1ZTsKKyAgICAgICAgICAgIHNlbGVjdC5kb21h
aW5PcHRpb25zW2RvbWFpbl0gPSBkb21haW5PcHRpb247CisgICAgICAgICAgICBpbnNlcnRPcmRl
cmVkKGRvbWFpbk9wdGlvbik7CisgICAgICAgIH0KKworICAgICAgICBpZiAoc2hvd1NjcmlwdEZv
bGRlcnMgJiYgZm9sZGVyTmFtZSAmJiAhc2VsZWN0LmZvbGRlck9wdGlvbnNbZm9sZGVyTmFtZUZv
clNvcnRpbmddKSB7CisgICAgICAgICAgICB2YXIgZm9sZGVyT3B0aW9uID0gZG9jdW1lbnQuY3Jl
YXRlRWxlbWVudCgib3B0aW9uIik7CisgICAgICAgICAgICBmb2xkZXJPcHRpb24udGV4dCA9IGZv
bGRlck5hbWU7CisgICAgICAgICAgICBmb2xkZXJPcHRpb24ubmFtZUZvclNvcnRpbmcgPSBmb2xk
ZXJOYW1lRm9yU29ydGluZzsKKyAgICAgICAgICAgIGZvbGRlck9wdGlvbi5kaXNhYmxlZCA9IHRy
dWU7CisgICAgICAgICAgICBzZWxlY3QuZm9sZGVyT3B0aW9uc1tmb2xkZXJOYW1lRm9yU29ydGlu
Z10gPSBmb2xkZXJPcHRpb247CisgICAgICAgICAgICBpbnNlcnRPcmRlcmVkKGZvbGRlck9wdGlv
bik7CisgICAgICAgIH0KKworICAgICAgICBvcHRpb24uX3VpU291cmNlQ29kZSA9IHVpU291cmNl
Q29kZTsKKyAgICAgICAgdWlTb3VyY2VDb2RlLl9vcHRpb24gPSBvcHRpb247CisgICAgfSwKKwor
ICAgIF9yZXNldEZpbGVzU2VsZWN0OiBmdW5jdGlvbigpCisgICAgeworICAgICAgICB0aGlzLl9m
aWxlc1NlbGVjdEVsZW1lbnQucmVtb3ZlQ2hpbGRyZW4oKTsKKyAgICAgICAgdGhpcy5fZmlsZXNT
ZWxlY3RFbGVtZW50LmRvbWFpbk9wdGlvbnMgPSB7fTsKKyAgICAgICAgdGhpcy5fZmlsZXNTZWxl
Y3RFbGVtZW50LmZvbGRlck9wdGlvbnMgPSB7fTsKKyAgICAgICAgZGVsZXRlIHRoaXMuX2ZpbGVz
U2VsZWN0RWxlbWVudC5jb250ZW50U2NyaXB0U2VjdGlvbjsKKyAgICB9LAorCisgICAgX3VwZGF0
ZUJhY2tBbmRGb3J3YXJkQnV0dG9uczogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdGhpcy5i
YWNrQnV0dG9uLmRpc2FibGVkID0gdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5kZXggPD0gMDsK
KyAgICAgICAgdGhpcy5mb3J3YXJkQnV0dG9uLmRpc2FibGVkID0gdGhpcy5fY3VycmVudEJhY2tG
b3J3YXJkSW5kZXggPj0gKHRoaXMuX2JhY2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKTsKKyAgICB9
LAorCisgICAgX2dvQmFjazogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgaWYgKHRoaXMuX2N1
cnJlbnRCYWNrRm9yd2FyZEluZGV4IDw9IDApIHsKKyAgICAgICAgICAgIGNvbnNvbGUuZXJyb3Io
IkNhbid0IGdvIGJhY2sgZnJvbSBpbmRleCAiICsgdGhpcy5fY3VycmVudEJhY2tGb3J3YXJkSW5k
ZXgpOworICAgICAgICAgICAgcmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgdmFyIHVpU291
cmNlQ29kZSA9IHRoaXMuX2JhY2tGb3J3YXJkTGlzdFstLXRoaXMuX2N1cnJlbnRCYWNrRm9yd2Fy
ZEluZGV4XTsKKyAgICAgICAgdGhpcy5faW5uZXJSZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VD
b2RlLCBmYWxzZSk7CisgICAgICAgIHRoaXMuZGlzcGF0Y2hFdmVudFRvTGlzdGVuZXJzKFdlYklu
c3BlY3Rvci5TY3JpcHRzUGFuZWwuRmlsZVNlbGVjdG9yLkV2ZW50cy5TY3JpcHRTZWxlY3RlZCwg
dWlTb3VyY2VDb2RlKTsKKyAgICB9LAorCisgICAgX2dvRm9yd2FyZDogZnVuY3Rpb24oKQorICAg
IHsKKyAgICAgICAgaWYgKHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZEluZGV4ID49IHRoaXMuX2Jh
Y2tGb3J3YXJkTGlzdC5sZW5ndGggLSAxKSB7CisgICAgICAgICAgICBjb25zb2xlLmVycm9yKCJD
YW4ndCBnbyBmb3J3YXJkIGZyb20gaW5kZXggIiArIHRoaXMuX2N1cnJlbnRCYWNrRm9yd2FyZElu
ZGV4KTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgfQorCisgICAgICAgIHZhciB1aVNv
dXJjZUNvZGUgPSB0aGlzLl9iYWNrRm9yd2FyZExpc3RbKyt0aGlzLl9jdXJyZW50QmFja0Zvcndh
cmRJbmRleF07CisgICAgICAgIHRoaXMuX2lubmVyUmV2ZWFsVUlTb3VyY2VDb2RlKHVpU291cmNl
Q29kZSwgZmFsc2UpOworICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycyhXZWJJ
bnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuU2NyaXB0U2VsZWN0ZWQs
IHVpU291cmNlQ29kZSk7CisgICAgfSwKKworICAgIC8qKgorICAgICAqIEBwYXJhbSB7Ym9vbGVh
bn0gZm9jdXNTb3VyY2UKKyAgICAgKi8KKyAgICBfZmlsZXNTZWxlY3RDaGFuZ2VkOiBmdW5jdGlv
bihmb2N1c1NvdXJjZSkKKyAgICB7CisgICAgICAgIGlmICh0aGlzLl9maWxlc1NlbGVjdEVsZW1l
bnQuc2VsZWN0ZWRJbmRleCA9PT0gLTEpCisgICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAg
dmFyIHVpU291cmNlQ29kZSA9IHRoaXMuX2ZpbGVzU2VsZWN0RWxlbWVudFt0aGlzLl9maWxlc1Nl
bGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleF0uX3VpU291cmNlQ29kZTsKKyAgICAgICAgdGhpcy5f
aW5uZXJSZXZlYWxVSVNvdXJjZUNvZGUodWlTb3VyY2VDb2RlLCB0cnVlKTsKKyAgICAgICAgdGhp
cy5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoV2ViSW5zcGVjdG9yLlNjcmlwdHNQYW5lbC5GaWxl
U2VsZWN0b3IuRXZlbnRzLlNjcmlwdFNlbGVjdGVkLCB1aVNvdXJjZUNvZGUpOworICAgICAgICBp
ZiAoZm9jdXNTb3VyY2UpCisgICAgICAgICAgICB0aGlzLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVy
cyhXZWJJbnNwZWN0b3IuU2NyaXB0c1BhbmVsLkZpbGVTZWxlY3Rvci5FdmVudHMuUmVsZWFzZWRG
b2N1c0FmdGVyU2VsZWN0aW9uLCB1aVNvdXJjZUNvZGUpOworICAgIH0sCit9CisKK1dlYkluc3Bl
Y3Rvci5TY3JpcHRzUGFuZWwuU2ltcGxlRmlsZVNlbGVjdG9yLnByb3RvdHlwZS5fX3Byb3RvX18g
PSBXZWJJbnNwZWN0b3IuT2JqZWN0LnByb3RvdHlwZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmh0bWwgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5odG1sCmluZGV4IDYyMzRhNDY0OTA3ZmY2Njcx
YjFmY2U5ZWE0ZDQ5NTUwZGJiNGEzM2QuLjMzYWRhNGE1ZGE2OTE2MjVhZTRkNTU4NmJmYmZiNzUz
MGJiZmYwZGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
aW5zcGVjdG9yLmh0bWwKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9p
bnNwZWN0b3IuaHRtbApAQCAtMTE1LDggKzExNSw4IEBAIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgICAgPHNjcmlwdCB0
eXBlPSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iUmVzb3VyY2VWaWV3LmpzIj48L3NjcmlwdD4KICAg
ICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJKYXZhU2NyaXB0U291cmNlRnJh
bWUuanMiPjwvc2NyaXB0PgogICAgIDxzY3JpcHQgdHlwZT0idGV4dC9qYXZhc2NyaXB0IiBzcmM9
IlNwbGl0Vmlldy5qcyI+PC9zY3JpcHQ+Ci0gICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3Jp
cHQiIHNyYz0iU2NyaXB0c05hdmlnYXRvci5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBl
PSJ0ZXh0L2phdmFzY3JpcHQiIHNyYz0iU2NyaXB0c1BhbmVsLmpzIj48L3NjcmlwdD4KKyAgICA8
c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJTY3JpcHRzTmF2aWdhdG9yLmpzIj48
L3NjcmlwdD4KICAgICA8c2NyaXB0IHR5cGU9InRleHQvamF2YXNjcmlwdCIgc3JjPSJSZXNvdXJj
ZXNQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0L2phdmFzY3JpcHQi
IHNyYz0iUHJvZmlsZXNQYW5lbC5qcyI+PC9zY3JpcHQ+CiAgICAgPHNjcmlwdCB0eXBlPSJ0ZXh0
L2phdmFzY3JpcHQiIHNyYz0iQ29uc29sZVBhbmVsLmpzIj48L3NjcmlwdD4KZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvdXRpbGl0aWVzLmpzIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC91dGlsaXRpZXMuanMKaW5kZXggZTBjMGE2MjM2
NWE0MDhhYmQwODY5YzhlOTM4ZjM2YjU0ZTg2OWM0MS4uNzdkY2Q1MGVjMGExODVkZmFhMDY5NDg0
OGNiMWU0YjJmN2NlODY0ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zy
b250LWVuZC91dGlsaXRpZXMuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC91dGlsaXRpZXMuanMKQEAgLTExODQsNiArMTE4NCwxNCBAQCBNYXAucHJvdG90eXBlID0g
ewogICAgICAgICBkZWxldGUgdGhpcy5fbWFwW2tleS5fX2lkZW50aWZpZXJdOwogICAgIH0sCiAg
ICAgCisgICAga2V5czogZnVuY3Rpb24oKQorICAgIHsKKyAgICAgICAgdmFyIHJlc3VsdCA9IFtd
OworICAgICAgICBmb3IgKHZhciBrZXkgaW4gdGhpcy5fbWFwKQorICAgICAgICAgICAgcmVzdWx0
LnB1c2goa2V5KTsKKyAgICAgICAgcmV0dXJuIHJlc3VsdDsKKyAgICB9LAorICAgIAogICAgIC8q
KgogICAgICAqIEBwYXJhbSB7T2JqZWN0fSBrZXkKICAgICAgKi8KZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCAwYThkY2QyN2Y3
MDk2MDA2NjE1MjdjZDE4OTliYzFhNDZmZGEzYzcyLi5hYzIxZmZmNWU4ZGIwMjFhM2IxYjYxZmZl
ZDcxMTI3MGRiNDk1NTE0IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTYgQEAKKzIwMTEtMTItMjMgIFZzZXZv
bG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgV2ViIEluc3BlY3Rv
cjogRXh0cmFjdCBGaWxlU2VsZWN0b3IgZnJvbSBTY3JpcHRzUGFuZWwuCisgICAgICAgIGh0dHBz
Oi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD03NTE3MworCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogaHR0cC90ZXN0cy9pbnNwZWN0b3Iv
ZGVidWdnZXItdGVzdC5qczoKKyAgICAgICAgKGluaXRpYWxpemVfRGVidWdnZXJUZXN0KToKKyAg
ICAgICAgKiBpbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sOgorICAgICAgICAq
IGluc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvZGVidWdnZXIvc291cmNlLWZyYW1lLWNvdW50Lmh0bWw6CisKIDIwMTEtMTItMjIgIFZz
ZXZvbG9kIFZsYXNvdiAgPHZzZXZpa0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgV2ViIEluc3Bl
Y3RvcjogVGFiYmVkUGFuZSBzaG91bGQgc3VwcG9ydCBjbG9zZWFibGUgdGFicywgaGlkaW5nIHRh
YnMgaW50byBkcm9wIGRvd24gbWVudS4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2h0dHAvdGVz
dHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRlc3QuanMgYi9MYXlvdXRUZXN0cy9odHRwL3Rlc3RzL2lu
c3BlY3Rvci9kZWJ1Z2dlci10ZXN0LmpzCmluZGV4IDhlMTk1Y2UxYjA0ZGZiYmQ4OTc1MzQxMmQx
NTBkYjRiMDM4OWVhY2MuLjNjODY1NDU2NDc0Zjg4ODdkZGViMmNkMDQzNjJjNWEyNjg4NWVjMTQg
MTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2h0dHAvdGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyLXRl
c3QuanMKKysrIGIvTGF5b3V0VGVzdHMvaHR0cC90ZXN0cy9pbnNwZWN0b3IvZGVidWdnZXItdGVz
dC5qcwpAQCAtMTU5LDcgKzE1OSw3IEBAIEluc3BlY3RvclRlc3Quc2hvd1NjcmlwdFNvdXJjZSA9
IGZ1bmN0aW9uKHNjcmlwdE5hbWUsIGNhbGxiYWNrKQogICAgIGZvciAodmFyIGkgPSAwOyBpIDwg
ZmlsZXNTZWxlY3QubGVuZ3RoOyArK2kpIHsKICAgICAgICAgaWYgKGZpbGVzU2VsZWN0W2ldLmRp
c3BsYXlOYW1lID09PSBzY3JpcHROYW1lKSB7CiAgICAgICAgICAgICBmaWxlc1NlbGVjdC5zZWxl
Y3RlZEluZGV4ID0gaTsKLSAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5f
ZmlsZXNTZWxlY3RDaGFuZ2VkKCk7CisgICAgICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLnNj
cmlwdHMuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7CiAgICAgICAgICAgICB2
YXIgc291cmNlRnJhbWUgPSBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMudmlzaWJsZVZpZXc7
CiAgICAgICAgICAgICBpZiAoc291cmNlRnJhbWUubG9hZGVkKQogICAgICAgICAgICAgICAgIGNh
bGxiYWNrKHNvdXJjZUZyYW1lKTsKQEAgLTE2OCw3ICsxNjgsNyBAQCBJbnNwZWN0b3JUZXN0LnNo
b3dTY3JpcHRTb3VyY2UgPSBmdW5jdGlvbihzY3JpcHROYW1lLCBjYWxsYmFjaykKICAgICAgICAg
ICAgIHJldHVybjsKICAgICAgICAgfQogICAgIH0KLSAgICBJbnNwZWN0b3JUZXN0LmFkZFNuaWZm
ZXIoV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLCAiX2FkZE9wdGlvblRvRmlsZXNTZWxlY3Qi
LCBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UuYmluZChJbnNwZWN0b3JUZXN0LCBzY3Jp
cHROYW1lLCBjYWxsYmFjaykpOworICAgIEluc3BlY3RvclRlc3QuYWRkU25pZmZlcihXZWJJbnNw
ZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVTZWxlY3RvciwgIl9hZGRPcHRpb25Ub0ZpbGVzU2Vs
ZWN0IiwgSW5zcGVjdG9yVGVzdC5zaG93U2NyaXB0U291cmNlLmJpbmQoSW5zcGVjdG9yVGVzdCwg
c2NyaXB0TmFtZSwgY2FsbGJhY2spKTsKIH07CiAKIEluc3BlY3RvclRlc3Quc2V0QnJlYWtwb2lu
dCA9IGZ1bmN0aW9uKHNvdXJjZUZyYW1lLCBsaW5lTnVtYmVyLCBjb25kaXRpb24sIGVuYWJsZWQp
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5l
bC5odG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVnZ2VyL3NjcmlwdHMtcGFuZWwuaHRt
bAppbmRleCA1Y2MzNWE4YjdkNGVlM2FmNTBhZjc2ZDIxNmE3ZjIzOGIzOGMyNmJjLi4yZTI0Njk0
NzY2MDA2ZmE2ZGVkODI5OWVkMTc0NDJkZjdiYjQ0MmJiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1wYW5lbC5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXBhbmVsLmh0bWwKQEAgLTMwLDEyICszMCwxMiBA
QCBmdW5jdGlvbiB0ZXN0KCkKIAogICAgIGZ1bmN0aW9uIHNob3dTb3VyY2VGcmFtZShwYW5lbCwg
ZmlsZU5hbWUpCiAgICAgewotICAgICAgICB2YXIgc2VsZWN0ID0gcGFuZWwuX2ZpbGVzU2VsZWN0
RWxlbWVudDsKKyAgICAgICAgdmFyIHNlbGVjdCA9IHBhbmVsLl9maWxlU2VsZWN0b3IuX2ZpbGVz
U2VsZWN0RWxlbWVudDsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3QubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgIGlmIChzZWxlY3RbaV0udGV4dC5pbmRleE9mKGZpbGVOYW1l
KSA9PT0gLTEpCiAgICAgICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICAgICBzZWxlY3Qu
c2VsZWN0ZWRJbmRleCA9IGk7Ci0gICAgICAgICAgICBwYW5lbC5fZmlsZXNTZWxlY3RDaGFuZ2Vk
KCk7CisgICAgICAgICAgICBwYW5lbC5fZmlsZVNlbGVjdG9yLl9maWxlc1NlbGVjdENoYW5nZWQo
KTsKICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICB9CiAgICAgfQpAQCAtNTIsNyArNTIsNyBA
QCBmdW5jdGlvbiB0ZXN0KCkKICAgICAgICAgICAgIHBhbmVsLl91aVNvdXJjZUNvZGVBZGRlZCh7
IGRhdGE6IGNyZWF0ZVVJU291Y2VDb2RlKCJiYXouanMiKSB9KTsKIAogICAgICAgICAgICAgSW5z
cGVjdG9yVGVzdC5hZGRSZXN1bHQoIkR1bXAgZmlsZXMgc2VsZWN0OiIpOwotICAgICAgICAgICAg
dmFyIHNlbGVjdCA9IHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQ7CisgICAgICAgICAgICB2YXIg
c2VsZWN0ID0gcGFuZWwuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RFbGVtZW50OwogICAgICAg
ICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3QubGVuZ3RoOyArK2kpCiAgICAgICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5hZGRSZXN1bHQoc2VsZWN0W2ldLnRleHQucmVwbGFjZSgvXHUw
MGEwL2csICIgIikpOwogCkBAIC02Miw3ICs2Miw3IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAg
ICAgICAgICAvLyBTZWxlY3QgImJhei5qcyIuCiAgICAgICAgICAgICBzZWxlY3Quc2VsZWN0ZWRJ
bmRleCA9IDE7Ci0gICAgICAgICAgICBwYW5lbC5fZmlsZXNTZWxlY3RDaGFuZ2VkKCk7CisgICAg
ICAgICAgICBwYW5lbC5fZmlsZVNlbGVjdG9yLl9maWxlc1NlbGVjdENoYW5nZWQoKTsKICAgICAg
ICAgICAgIHBhbmVsLmRldGFjaCgpOwogCiAgICAgICAgICAgICBuZXh0KCk7CkBAIC04MCw4ICs4
MCw4IEBAIGZ1bmN0aW9uIHRlc3QoKQogCiAgICAgICAgICAgICBmdW5jdGlvbiBjaGVja0N1cnJl
bnRseVNlbGVjdGVkRmlsZU5hbWUoZmlsZU5hbWUpCiAgICAgICAgICAgICB7Ci0gICAgICAgICAg
ICAgICAgdmFyIGluZGV4ID0gcGFuZWwuX2ZpbGVzU2VsZWN0RWxlbWVudC5zZWxlY3RlZEluZGV4
OwotICAgICAgICAgICAgICAgIHZhciB0ZXh0ID0gcGFuZWwuX2ZpbGVzU2VsZWN0RWxlbWVudFtp
bmRleF0udGV4dDsKKyAgICAgICAgICAgICAgICB2YXIgaW5kZXggPSBwYW5lbC5fZmlsZVNlbGVj
dG9yLl9maWxlc1NlbGVjdEVsZW1lbnQuc2VsZWN0ZWRJbmRleDsKKyAgICAgICAgICAgICAgICB2
YXIgdGV4dCA9IHBhbmVsLl9maWxlU2VsZWN0b3IuX2ZpbGVzU2VsZWN0RWxlbWVudFtpbmRleF0u
dGV4dDsKICAgICAgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydFRydWUodGV4dC5pbmRl
eE9mKGZpbGVOYW1lKSAhPT0gLTEsCiAgICAgICAgICAgICAgICAgICAgICJXcm9uZyBvcHRpb24g
dGV4dC4gRXhwZWN0ZWQgPCIgKyBmaWxlTmFtZSArICI+LCBmb3VuZCA8IiArIHRleHQgKyAiPi4i
KTsKICAgICAgICAgICAgIH0KQEAgLTg5LDM3ICs4OSwzNyBAQCBmdW5jdGlvbiB0ZXN0KCkKICAg
ICAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgZmlsZXMubGVuZ3RoOyArK2kpCiAgICAgICAg
ICAgICAgICAgc2hvd1NvdXJjZUZyYW1lKHBhbmVsLCBmaWxlc1tpXSk7CiAgICAgICAgICAgICBj
aGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDMuanMiKTsKLSAgICAgICAgICAg
IEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHBhbmVsLmZvcndhcmRCdXR0b24uZGlz
YWJsZWQsICJGb3J3YXJkIHNob3VsZCBiZSBkaXNhYmxlZC4iKTsKKyAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHBhbmVsLl9maWxlU2VsZWN0b3IuZm9yd2FyZEJ1
dHRvbi5kaXNhYmxlZCwgIkZvcndhcmQgc2hvdWxkIGJlIGRpc2FibGVkLiIpOwogCi0gICAgICAg
ICAgICBwYW5lbC5iYWNrQnV0dG9uLmNsaWNrKCk7CisgICAgICAgICAgICBwYW5lbC5fZmlsZVNl
bGVjdG9yLmJhY2tCdXR0b24uY2xpY2soKTsKICAgICAgICAgICAgIGNoZWNrQ3VycmVudGx5U2Vs
ZWN0ZWRGaWxlTmFtZSgic2NyaXB0Mi5qcyIpOwotICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5h
c3NlcnRFcXVhbHMoZmFsc2UsIHBhbmVsLmZvcndhcmRCdXR0b24uZGlzYWJsZWQsICJGb3J3YXJk
IHNob3VsZCBiZSBlbmFibGVkIGFmdGVyIGJhY2sgYnV0dG9uIGNsaWNrLiIpOworICAgICAgICAg
ICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHMoZmFsc2UsIHBhbmVsLl9maWxlU2VsZWN0b3Iu
Zm9yd2FyZEJ1dHRvbi5kaXNhYmxlZCwgIkZvcndhcmQgc2hvdWxkIGJlIGVuYWJsZWQgYWZ0ZXIg
YmFjayBidXR0b24gY2xpY2suIik7CiAKLSAgICAgICAgICAgIHBhbmVsLmZvcndhcmRCdXR0b24u
Y2xpY2soKTsKKyAgICAgICAgICAgIHBhbmVsLl9maWxlU2VsZWN0b3IuZm9yd2FyZEJ1dHRvbi5j
bGljaygpOwogICAgICAgICAgICAgY2hlY2tDdXJyZW50bHlTZWxlY3RlZEZpbGVOYW1lKCJzY3Jp
cHQzLmpzIik7Ci0gICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscyh0cnVlLCBw
YW5lbC5mb3J3YXJkQnV0dG9uLmRpc2FibGVkLCAiRm9yd2FyZCBzaG91bGQgYmUgZGlzYWJsZWQg
YWZ0ZXIgZm9yd2FyZCBidXR0b24gY2xpY2suIik7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0
LmFzc2VydEVxdWFscyh0cnVlLCBwYW5lbC5fZmlsZVNlbGVjdG9yLmZvcndhcmRCdXR0b24uZGlz
YWJsZWQsICJGb3J3YXJkIHNob3VsZCBiZSBkaXNhYmxlZCBhZnRlciBmb3J3YXJkIGJ1dHRvbiBj
bGljay4iKTsKIAotICAgICAgICAgICAgcGFuZWwuYmFja0J1dHRvbi5jbGljaygpOworICAgICAg
ICAgICAgcGFuZWwuX2ZpbGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7CiAgICAgICAgICAg
ICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDIuanMiKTsKIAotICAgICAg
ICAgICAgcGFuZWwuYmFja0J1dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFuZWwuX2ZpbGVT
ZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7CiAgICAgICAgICAgICBjaGVja0N1cnJlbnRseVNl
bGVjdGVkRmlsZU5hbWUoInNjcmlwdDEuanMiKTsKIAotICAgICAgICAgICAgcGFuZWwuYmFja0J1
dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFuZWwuX2ZpbGVTZWxlY3Rvci5iYWNrQnV0dG9u
LmNsaWNrKCk7CiAgICAgICAgICAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoImlu
ZGV4Lmh0bWwiKTsKIAotICAgICAgICAgICAgcGFuZWwuZm9yd2FyZEJ1dHRvbi5jbGljaygpOwot
ICAgICAgICAgICAgcGFuZWwuZm9yd2FyZEJ1dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFu
ZWwuX2ZpbGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmNsaWNrKCk7CisgICAgICAgICAgICBwYW5l
bC5fZmlsZVNlbGVjdG9yLmZvcndhcmRCdXR0b24uY2xpY2soKTsKICAgICAgICAgICAgIGNoZWNr
Q3VycmVudGx5U2VsZWN0ZWRGaWxlTmFtZSgic2NyaXB0Mi5qcyIpOwogCiAgICAgICAgICAgICBz
aG93U291cmNlRnJhbWUocGFuZWwsICJzY3JpcHQxLmpzIik7CiAgICAgICAgICAgICBjaGVja0N1
cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoInNjcmlwdDEuanMiKTsKLSAgICAgICAgICAgIEluc3Bl
Y3RvclRlc3QuYXNzZXJ0RXF1YWxzKHRydWUsIHBhbmVsLmZvcndhcmRCdXR0b24uZGlzYWJsZWQp
OworICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5hc3NlcnRFcXVhbHModHJ1ZSwgcGFuZWwuX2Zp
bGVTZWxlY3Rvci5mb3J3YXJkQnV0dG9uLmRpc2FibGVkKTsKIAotICAgICAgICAgICAgcGFuZWwu
YmFja0J1dHRvbi5jbGljaygpOworICAgICAgICAgICAgcGFuZWwuX2ZpbGVTZWxlY3Rvci5iYWNr
QnV0dG9uLmNsaWNrKCk7CiAgICAgICAgICAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5h
bWUoInNjcmlwdDIuanMiKTsKIAotICAgICAgICAgICAgcGFuZWwuYmFja0J1dHRvbi5jbGljaygp
OworICAgICAgICAgICAgcGFuZWwuX2ZpbGVTZWxlY3Rvci5iYWNrQnV0dG9uLmNsaWNrKCk7CiAg
ICAgICAgICAgICBjaGVja0N1cnJlbnRseVNlbGVjdGVkRmlsZU5hbWUoImluZGV4Lmh0bWwiKTsK
IAogICAgICAgICAgICAgcGFuZWwuZGV0YWNoKCk7CkBAIC0xMzgsNyArMTM4LDcgQEAgZnVuY3Rp
b24gdGVzdCgpCiAgICAgICAgICAgICB7CiAgICAgICAgICAgICAgICAgdmFyIHVpU291cmNlQ29k
ZSA9IG5ldyBXZWJJbnNwZWN0b3IuVUlTb3VyY2VDb2RlKG5leHRJZCsrLCB1cmwsIG51bGwsIG51
bGwpOwogICAgICAgICAgICAgICAgIHVpU291cmNlQ29kZS5pc0NvbnRlbnRTY3JpcHQgPSBpc0Nv
bnRlbnRTY3JpcHQ7Ci0gICAgICAgICAgICAgICAgcGFuZWwuX2FkZE9wdGlvblRvRmlsZXNTZWxl
Y3QodWlTb3VyY2VDb2RlKTsKKyAgICAgICAgICAgICAgICBwYW5lbC5fZmlsZVNlbGVjdG9yLl9h
ZGRPcHRpb25Ub0ZpbGVzU2VsZWN0KHVpU291cmNlQ29kZSk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgICAgICBhZGRPcHRpb24ocm9vdFVSTCArICJmb28vYmFyL3NjcmlwdC5qcyIsIGZhbHNlKTsK
ICAgICAgICAgICAgIGFkZE9wdGlvbihyb290VVJMICsgImZvby9iYXIvY29udGVudFNjcmlwdDIu
anM/YT0xIiwgdHJ1ZSk7CkBAIC0xNTEsNyArMTUxLDcgQEAgZnVuY3Rpb24gdGVzdCgpCiAgICAg
ICAgICAgICBhZGRPcHRpb24oIj9hPWIiLCBmYWxzZSk7CiAgICAgICAgICAgICBhZGRPcHRpb24o
InZlcnlfbG9vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29v
b29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb29vb25nX3VybCIsIGZhbHNl
KTsKIAotICAgICAgICAgICAgdmFyIHNlbGVjdCA9IHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQ7
CisgICAgICAgICAgICB2YXIgc2VsZWN0ID0gcGFuZWwuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxl
Y3RFbGVtZW50OwogICAgICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkgPCBzZWxlY3QubGVuZ3Ro
OyArK2kpIHsKICAgICAgICAgICAgICAgICB2YXIgb3B0aW9uID0gc2VsZWN0W2ldOwogICAgICAg
ICAgICAgICAgIHZhciB0ZXh0ID0gb3B0aW9uLnRleHQucmVwbGFjZSgvLipMYXlvdXRUZXN0cy8s
ICJMYXlvdXRUZXN0cyIpOwpAQCAtMTc0LDIwICsxNzQsMjAgQEAgZnVuY3Rpb24gdGVzdCgpCiAg
ICAgICAgICAgICB2YXIgY29tcGlsZWRTb3VyY2VDb2RlID0gY3JlYXRlVUlTb3VjZUNvZGUoImNv
bXBpbGVkLmpzIik7CiAgICAgICAgICAgICBwYW5lbC5fdWlTb3VyY2VDb2RlQWRkZWQoeyBkYXRh
OiBjb21waWxlZFNvdXJjZUNvZGUgfSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3QuYXNz
ZXJ0RXF1YWxzKDIsIHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQubGVuZ3RoKTsKKyAgICAgICAg
ICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDIsIHBhbmVsLl9maWxlU2VsZWN0b3IuX2Zp
bGVzU2VsZWN0RWxlbWVudC5sZW5ndGgpOwogCiAgICAgICAgICAgICAvLyBQbHVnIGNvbXBpbGVy
IHNvdXJjZSBtYXBwaW5nLgogICAgICAgICAgICAgdmFyIHNvdXJjZTFTb3VyY2VDb2RlID0gY3Jl
YXRlVUlTb3VjZUNvZGUoInNvdXJjZTEuanMiKTsKICAgICAgICAgICAgIHZhciBzb3VyY2UyU291
cmNlQ29kZSA9IGNyZWF0ZVVJU291Y2VDb2RlKCJzb3VyY2UyLmpzIik7CiAgICAgICAgICAgICBw
YW5lbC5fdWlTb3VyY2VDb2RlUmVwbGFjZWQoeyBkYXRhOiB7IG9sZFVJU291cmNlQ29kZUxpc3Q6
IFtjb21waWxlZFNvdXJjZUNvZGVdLCB1aVNvdXJjZUNvZGVMaXN0OiBbc291cmNlMVNvdXJjZUNv
ZGUsIHNvdXJjZTJTb3VyY2VDb2RlXSB9fSk7CiAKLSAgICAgICAgICAgIEluc3BlY3RvclRlc3Qu
YXNzZXJ0RXF1YWxzKDMsIHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQubGVuZ3RoKTsKKyAgICAg
ICAgICAgIEluc3BlY3RvclRlc3QuYXNzZXJ0RXF1YWxzKDMsIHBhbmVsLl9maWxlU2VsZWN0b3Iu
X2ZpbGVzU2VsZWN0RWxlbWVudC5sZW5ndGgpOwogICAgICAgICAgICAgc2hvd1NvdXJjZUZyYW1l
KHBhbmVsLCAic291cmNlMi5qcyIpOwogICAgICAgICAgICAgc2hvd1NvdXJjZUZyYW1lKHBhbmVs
LCAic291cmNlMS5qcyIpOwogCiAgICAgICAgICAgICAvLyBVbnBsdWcgY29tcGlsZXIgc291cmNl
IG1hcHBpbmcuCiAgICAgICAgICAgICBwYW5lbC5fdWlTb3VyY2VDb2RlUmVwbGFjZWQoeyBkYXRh
OiB7IG9sZFVJU291cmNlQ29kZUxpc3Q6IFtzb3VyY2UxU291cmNlQ29kZSwgc291cmNlMlNvdXJj
ZUNvZGVdLCB1aVNvdXJjZUNvZGVMaXN0OiBbY29tcGlsZWRTb3VyY2VDb2RlXSB9fSk7Ci0gICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygyLCBwYW5lbC5fZmlsZXNTZWxlY3RF
bGVtZW50Lmxlbmd0aCk7CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmFzc2VydEVxdWFscygy
LCBwYW5lbC5fZmlsZVNlbGVjdG9yLl9maWxlc1NlbGVjdEVsZW1lbnQubGVuZ3RoKTsKIAogICAg
ICAgICAgICAgcGFuZWwuZGV0YWNoKCk7CiAgICAgICAgICAgICBuZXh0KCk7CmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwgYi9M
YXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIvc2NyaXB0cy1zb3J0aW5nLmh0bWwKaW5kZXgg
MWU5ODNjZTMwYjllNGY0MGU4NWNmNDA0MjlhZDQ4MWViYzVmNTA0Ny4uOTQyNDA3MTY0YzM5NDYx
OGQyZmQ0ZGQ3YjBiNTdhZmMwZDhiMTBmYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW5zcGVj
dG9yL2RlYnVnZ2VyL3NjcmlwdHMtc29ydGluZy5odG1sCisrKyBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zY3JpcHRzLXNvcnRpbmcuaHRtbApAQCAtNTksMTQgKzU5LDE0IEBAIGZ1
bmN0aW9uIHRlc3QoKQogICAgIHsKICAgICAgICAgdmFyIHVpU291cmNlQ29kZSA9IG5ldyBXZWJJ
bnNwZWN0b3IuVUlTb3VyY2VDb2RlKG5leHRJZCsrLCB1cmwsIG51bGwsIG51bGwpOwogICAgICAg
ICB1aVNvdXJjZUNvZGUuaXNDb250ZW50U2NyaXB0ID0gaXNDb250ZW50U2NyaXB0OwotICAgICAg
ICBXZWJJbnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodWlT
b3VyY2VDb2RlKTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRzLl9maWxlU2Vs
ZWN0b3IuX2FkZE9wdGlvblRvRmlsZXNTZWxlY3QodWlTb3VyY2VDb2RlKTsKICAgICB9CiAKICAg
ICBmdW5jdGlvbiBkdW1wU2NyaXB0c0xpc3QoKQogICAgIHsKICAgICAgICAgSW5zcGVjdG9yVGVz
dC5hZGRSZXN1bHQoIiIpOwogICAgICAgICBJbnNwZWN0b3JUZXN0LmFkZFJlc3VsdCgiV2ViSW5z
cGVjdG9yLnNldHRpbmdzLnNob3dTY3JpcHRGb2xkZXJzID0gIiArIFdlYkluc3BlY3Rvci5zZXR0
aW5ncy5zaG93U2NyaXB0Rm9sZGVycy5nZXQoKSk7Ci0gICAgICAgIHZhciBzZWxlY3QgPSBXZWJJ
bnNwZWN0b3IucGFuZWxzLnNjcmlwdHMuX2ZpbGVzU2VsZWN0RWxlbWVudDsKKyAgICAgICAgdmFy
IHNlbGVjdCA9IFdlYkluc3BlY3Rvci5wYW5lbHMuc2NyaXB0cy5fZmlsZVNlbGVjdG9yLl9maWxl
c1NlbGVjdEVsZW1lbnQ7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgc2VsZWN0Lmxlbmd0
aDsgKytpKSB7CiAgICAgICAgICAgICBpZiAoc2VsZWN0W2ldLl91aVNvdXJjZUNvZGUgJiYgc2Vs
ZWN0W2ldLl91aVNvdXJjZUNvZGUudXJsLmluZGV4T2YoIkxheW91dFRlc3RzLyIpICE9PSAtMSkK
ICAgICAgICAgICAgICAgICBjb250aW51ZTsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbCBiL0xheW91dFRlc3RzL2luc3Bl
Y3Rvci9kZWJ1Z2dlci9zb3VyY2UtZnJhbWUtY291bnQuaHRtbAppbmRleCA3NWYyZWU3YTBmM2U1
ODFjYzY0M2M4OGMxODY5OWQ3OWY5YjIyYWI4Li5kOTZjNjYzZTE1MTViMGRkODIxYjc1ZTUwYjMw
YjM4OWZkMzgyZGY1IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3IvZGVidWdnZXIv
c291cmNlLWZyYW1lLWNvdW50Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yL2RlYnVn
Z2VyL3NvdXJjZS1mcmFtZS1jb3VudC5odG1sCkBAIC0xNCw3ICsxNCw3IEBAIGZ1bmN0aW9uIHRl
c3QoKQogICAgICAgICBmdW5jdGlvbiB0ZXN0U291cmNlRnJhbWVzQ291bnQobmV4dCkKICAgICAg
ICAgewogICAgICAgICAgICAgdmFyIHBhbmVsID0gV2ViSW5zcGVjdG9yLnBhbmVscy5zY3JpcHRz
OwotICAgICAgICAgICAgdmFyIHNlbGVjdCA9IHBhbmVsLl9maWxlc1NlbGVjdEVsZW1lbnQ7Cisg
ICAgICAgICAgICB2YXIgc2VsZWN0ID0gcGFuZWwuX2ZpbGVTZWxlY3Rvci5fZmlsZXNTZWxlY3RF
bGVtZW50OwogICAgICAgICAgICAgdmFyIHNvdXJjZUZyYW1lQ291bnQgPSAwOwogCiAgICAgICAg
ICAgICBJbnNwZWN0b3JUZXN0LnNob3dTY3JpcHRTb3VyY2UoInNvdXJjZS1mcmFtZS1jb3VudC5o
dG1sIiwgZGlkU2hvd1NjcmlwdFNvdXJjZSk7Cg==
</data>
<flag name="review"
          id="120742"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>