<?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>58992</bug_id>
          
          <creation_ts>2011-04-20 07:51:41 -0700</creation_ts>
          <short_desc>Web Inspector: Metrics pane editing and visual feedback improvements</short_desc>
          <delta_ts>2011-04-21 05:21:21 -0700</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="Alexander Pavlov (apavlov)">apavlov</reporter>
          <assigned_to name="Alexander Pavlov (apavlov)">apavlov</assigned_to>
          <cc>abarth</cc>
    
    <cc>apavlov</cc>
    
    <cc>bweinstein</cc>
    
    <cc>eric</cc>
    
    <cc>joepeck</cc>
    
    <cc>keishi</cc>
    
    <cc>loislo</cc>
    
    <cc>pfeldman</cc>
    
    <cc>pmuellr</cc>
    
    <cc>rik</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit.review.bot</cc>
    
    <cc>yurys</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>389226</commentid>
    <comment_count>0</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-20 07:51:41 -0700</bug_when>
    <thetext>- The visual box model components should be highlighted on hover both in the Metrics pane and in the inspected page.
- The edit boxes for dimensions should honor [Page]Up/Down for increments/decrements, just like in the Styles pane.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389254</commentid>
    <comment_count>1</comment_count>
      <attachid>90344</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-20 08:46:20 -0700</bug_when>
    <thetext>Created attachment 90344
[PATCH] Suggested solution</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389276</commentid>
    <comment_count>2</comment_count>
      <attachid>90344</attachid>
    <who name="Pavel Feldman">pfeldman</who>
    <bug_when>2011-04-20 09:19:28 -0700</bug_when>
    <thetext>Comment on attachment 90344
[PATCH] Suggested solution

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

&gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:94
&gt; +void drawHighlightForBox(GraphicsContext&amp; context, const FloatQuad&amp; contentQuad, const FloatQuad&amp; paddingQuad, const FloatQuad&amp; borderQuad, const FloatQuad&amp; marginQuad, const String&amp; mode)

mode -&gt; enum

&gt; Source/WebCore/inspector/Inspector.json:900
&gt; +                    { &quot;name&quot;: &quot;mode&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The box model component(s) to highlight: \&quot;content\&quot;, \&quot;padding\&quot;, \&quot;border\&quot;, \&quot;margin\&quot;, \&quot;all\&quot; (default: \&quot;all\&quot;).&quot; },

&quot;enum&quot;: [&quot;content&quot;, &quot;padding&quot;, ...]

&gt; Source/WebCore/inspector/InspectorDOMAgent.h:181
&gt; +    void highlight(ErrorString*, Node*, const String&amp; mode = &quot;all&quot;);

Do not use default values unless necessary.

&gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:224
&gt; +                widthElement.addEventListener(&quot;click&quot;, this.startEditing.bind(this, widthElement, &quot;width&quot;, &quot;width&quot;, style), false);

why did this change?

&gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:262
&gt; +        WebInspector.highlightDOMNode(0, &quot;&quot;);

mode should be optional.

&gt; Source/WebCore/inspector/front-end/inspector.js:320
&gt; +            DOMAgent.highlightDOMNode(nodeId, mode);

mode || &quot;all&quot;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389322</commentid>
    <comment_count>3</comment_count>
      <attachid>90357</attachid>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-20 10:19:01 -0700</bug_when>
    <thetext>Created attachment 90357
[PATCH] Comments addressed</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389324</commentid>
    <comment_count>4</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-20 10:20:16 -0700</bug_when>
    <thetext>(In reply to comment #2)
&gt; (From update of attachment 90344 [details])
&gt; View in context: https://bugs.webkit.org/attachment.cgi?id=90344&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/inspector/DOMNodeHighlighter.cpp:94
&gt; &gt; +void drawHighlightForBox(GraphicsContext&amp; context, const FloatQuad&amp; contentQuad, const FloatQuad&amp; paddingQuad, const FloatQuad&amp; borderQuad, const FloatQuad&amp; marginQuad, const String&amp; mode)
&gt; 
&gt; mode -&gt; enum

Done

&gt; &gt; Source/WebCore/inspector/Inspector.json:900
&gt; &gt; +                    { &quot;name&quot;: &quot;mode&quot;, &quot;type&quot;: &quot;string&quot;, &quot;optional&quot;: true, &quot;description&quot;: &quot;The box model component(s) to highlight: \&quot;content\&quot;, \&quot;padding\&quot;, \&quot;border\&quot;, \&quot;margin\&quot;, \&quot;all\&quot; (default: \&quot;all\&quot;).&quot; },
&gt; 
&gt; &quot;enum&quot;: [&quot;content&quot;, &quot;padding&quot;, ...]

Done

&gt; &gt; Source/WebCore/inspector/InspectorDOMAgent.h:181
&gt; &gt; +    void highlight(ErrorString*, Node*, const String&amp; mode = &quot;all&quot;);
&gt; 
&gt; Do not use default values unless necessary.

Done

&gt; &gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:224
&gt; &gt; +                widthElement.addEventListener(&quot;click&quot;, this.startEditing.bind(this, widthElement, &quot;width&quot;, &quot;width&quot;, style), false);
&gt; 
&gt; why did this change?

Inadvertent change, reverted

&gt; &gt; Source/WebCore/inspector/front-end/MetricsSidebarPane.js:262
&gt; &gt; +        WebInspector.highlightDOMNode(0, &quot;&quot;);
&gt; 
&gt; mode should be optional.

Done

&gt; &gt; Source/WebCore/inspector/front-end/inspector.js:320
&gt; &gt; +            DOMAgent.highlightDOMNode(nodeId, mode);
&gt; 
&gt; mode || &quot;all&quot;

Done</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389326</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-20 10:20:44 -0700</bug_when>
    <thetext>Attachment 90357 did not pass style-queue:

Failed to run &quot;[&apos;Tools/Scripts/check-webkit-style&apos;, &apos;--diff-files&apos;, u&apos;Source/WebCore/ChangeLog&apos;, u&apos;Source/WebCor...&quot; exit_code: 1

Source/WebCore/inspector/DOMNodeHighlighter.h:47:  The parameter name &quot;mode&quot; adds no information, so it should be removed.  [readability/parameter_name] [5]
Total errors found: 1 in 12 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389913</commentid>
    <comment_count>6</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-21 02:57:05 -0700</bug_when>
    <thetext>Committed r84481: &lt;http://trac.webkit.org/changeset/84481&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389914</commentid>
    <comment_count>7</comment_count>
    <who name="Alexander Pavlov (apavlov)">apavlov</who>
    <bug_when>2011-04-21 02:58:06 -0700</bug_when>
    <thetext>This is an upstream of Chromium issue http://code.google.com/p/chromium/issues/detail?id=77773</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>389944</commentid>
    <comment_count>8</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2011-04-21 05:21:21 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/84481 might have broken Leopard Intel Debug (Tests)</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90344</attachid>
            <date>2011-04-20 08:46:20 -0700</date>
            <delta_ts>2011-04-20 10:19:01 -0700</delta_ts>
            <desc>[PATCH] Suggested solution</desc>
            <filename>metricsimprove.patch</filename>
            <type>text/plain</type>
            <size>37639</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDU5MWM2MGFiZmRmOWFjZWNlNmNlMzBhOGIxYTI5NDMyMjEwOGViZjEKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gQXByIDE4
IDIxOjMzOjE3IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVhNWI3My4uN2Rj
MDk4YjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZworKysgYi9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MSBAQAorMjAxMS0wNC0yMCAgQWxleGFuZGVy
IFBhdmxvdiAgPGFwYXZsb3ZAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFJldmlld2VkIGJ5IE5P
Qk9EWSAoT09QUyEpLgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1ldHJpY3MgcGFuZSBlZGl0
aW5nIGFuZCB2aXN1YWwgZmVlZGJhY2sgaW1wcm92ZW1lbnRzCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD01ODk5MgorCisgICAgICAgICogaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpET01Ob2RlSGlnaGxp
Z2h0ZXI6OkRyYXdOb2RlSGlnaGxpZ2h0KToKKyAgICAgICAgKiBpbnNwZWN0b3IvRE9NTm9kZUhp
Z2hsaWdodGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJ
bnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpoaWdobGlnaHRET01Ob2RlKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckRPTUFnZW50OjpkcmF3Tm9kZUhpZ2hsaWdodCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3Bl
Y3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1v
ZGVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZS5zZXRU
ZXh0LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5
cGUuc2V0VGV4dCk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVydHkucHJvdG90eXBl
LnNldFZhbHVlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUu
c2V0RGlzYWJsZWQuY2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5
LnByb3RvdHlwZS5zZXREaXNhYmxlZCk6CisgICAgICAgICogaW5zcGVjdG9yL2Zyb250LWVuZC9F
bGVtZW50c1BhbmVsLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJv
dG90eXBlLnN0YXJ0RWRpdGluZ1N0eWxlKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVtZW50
c1BhbmVsLnByb3RvdHlwZS5lbmRFZGl0aW5nU3R5bGUpOgorICAgICAgICAoV2ViSW5zcGVjdG9y
LkVsZW1lbnRzUGFuZWwucHJvdG90eXBlLl9hdHRyaWJ1dGVzVXBkYXRlZCk6CisgICAgICAgICog
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRy
aWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9oaWdobGlnaHRET01Ob2RlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl9oaWdobGlnaHRET01Ob2Rl
LmdldEJveFJlY3RhbmdsZUVsZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NT
aWRlYmFyUGFuZS5wcm90b3R5cGUuX3VwZGF0ZS5jcmVhdGVCb3hQYXJ0RWxlbWVudCk6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fdXBkYXRlKToK
KyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLnN0YXJ0
RWRpdGluZyk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZS5faGFuZGxlS2V5RG93bik6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGVi
YXJQYW5lLnByb3RvdHlwZS5lZGl0aW5nRW5kZWQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1l
dHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuZWRpdGluZ0NhbmNlbGxlZCk6CisgICAgICAgIChX
ZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5fYXBwbHlVc2VySW5wdXQu
Y2FsbGJhY2spOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90
b3R5cGUuX2FwcGx5VXNlcklucHV0KToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lk
ZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdDb21taXR0ZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanM6CisgICAgICAgIChXZWJJbnNwZWN0b3Iu
U3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEZsb2F0TnVtYmVyKToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkSGV4TnVtYmVyKToKKyAgICAgICAgKFdlYklu
c3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlLmVsZW1lbnQudXNl
cklucHV0LnByZXZpb3VzQ29udGVudC5jb250ZXh0Lm1vdmVEaXJlY3Rpb24pOgorICAgICAgICAq
IGluc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzczoKKyAgICAgICAgKC5tZXRyaWNzIC5o
b3ZlcmVkID4gLmxhYmVsKToKKyAgICAgICAgKC5tZXRyaWNzIC5wb3NpdGlvbik6CisgICAgICAg
ICgubWV0cmljcyAubWFyZ2luKToKKyAgICAgICAgKC5tZXRyaWNzIC5tYXJnaW4uaG92ZXJlZCk6
CisgICAgICAgICgubWV0cmljcyAuYm9yZGVyKToKKyAgICAgICAgKC5tZXRyaWNzIC5ib3JkZXIu
aG92ZXJlZCk6CisgICAgICAgICgubWV0cmljcyAucGFkZGluZyk6CisgICAgICAgICgubWV0cmlj
cyAucGFkZGluZy5ob3ZlcmVkKToKKyAgICAgICAgKC5tZXRyaWNzIC5jb250ZW50KToKKyAgICAg
ICAgKC5tZXRyaWNzIC5jb250ZW50LmhvdmVyZWQpOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9u
dC1lbmQvaW5zcGVjdG9yLmpzOgorICAgICAgICAoV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5v
ZGUpOgorCiAyMDExLTA0LTE4ICBEb21pbmljIENvb25leSAgPGRvbWluaWNjQGNocm9taXVtLm9y
Zz4KIAogICAgICAgICBSZXZpZXdlZCBieSBEaW1pdHJpIEdsYXprb3YuCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0ZXIuY3BwCmluZGV4IDQxNjA5ZDguLjQ5
YTRhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxp
Z2h0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01Ob2RlSGlnaGxpZ2h0
ZXIuY3BwCkBAIC05MSwyMSArOTEsMzAgQEAgdm9pZCBkcmF3T3V0bGluZWRRdWFkV2l0aENsaXAo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIHF1YWQsIGMKICAgICBj
b250ZXh0LnJlc3RvcmUoKTsKIH0KIAotdm9pZCBkcmF3SGlnaGxpZ2h0Rm9yQm94KEdyYXBoaWNz
Q29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBjb250ZW50UXVhZCwgY29uc3QgRmxv
YXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBib3JkZXJRdWFkLCBjb25zdCBG
bG9hdFF1YWQmIG1hcmdpblF1YWQpCit2b2lkIGRyYXdIaWdobGlnaHRGb3JCb3goR3JhcGhpY3ND
b250ZXh0JiBjb250ZXh0LCBjb25zdCBGbG9hdFF1YWQmIGNvbnRlbnRRdWFkLCBjb25zdCBGbG9h
dFF1YWQmIHBhZGRpbmdRdWFkLCBjb25zdCBGbG9hdFF1YWQmIGJvcmRlclF1YWQsIGNvbnN0IEZs
b2F0UXVhZCYgbWFyZ2luUXVhZCwgY29uc3QgU3RyaW5nJiBtb2RlKQogewogICAgIHN0YXRpYyBj
b25zdCBDb2xvciBjb250ZW50Qm94Q29sb3IoMTI1LCAxNzMsIDIxNywgMTI4KTsKICAgICBzdGF0
aWMgY29uc3QgQ29sb3IgcGFkZGluZ0JveENvbG9yKDEyNSwgMTczLCAyMTcsIDE2MCk7CiAgICAg
c3RhdGljIGNvbnN0IENvbG9yIGJvcmRlckJveENvbG9yKDEyNSwgMTczLCAyMTcsIDE5Mik7CiAg
ICAgc3RhdGljIGNvbnN0IENvbG9yIG1hcmdpbkJveENvbG9yKDEyNSwgMTczLCAyMTcsIDIyOCk7
CiAKLSAgICBpZiAobWFyZ2luUXVhZCAhPSBib3JkZXJRdWFkKQorICAgIEZsb2F0UXVhZCBjbGlw
UXVhZDsKKyAgICBpZiAobW9kZSA9PSAibWFyZ2luIiB8fCAobW9kZSA9PSAiYWxsIiAmJiBtYXJn
aW5RdWFkICE9IGJvcmRlclF1YWQpKSB7CiAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xp
cChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3JkZXJRdWFkLCBtYXJnaW5Cb3hDb2xvcik7Ci0gICAg
aWYgKGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1YWQpCisgICAgICAgIGNsaXBRdWFkID0gYm9yZGVy
UXVhZDsKKyAgICB9CisgICAgaWYgKG1vZGUgPT0gImJvcmRlciIgfHwgKG1vZGUgPT0gImFsbCIg
JiYgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkpIHsKICAgICAgICAgZHJhd091dGxpbmVkUXVh
ZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQsIHBhZGRpbmdRdWFkLCBib3JkZXJCb3hDb2xv
cik7Ci0gICAgaWYgKHBhZGRpbmdRdWFkICE9IGNvbnRlbnRRdWFkKQorICAgICAgICBjbGlwUXVh
ZCA9IHBhZGRpbmdRdWFkOworICAgIH0KKyAgICBpZiAobW9kZSA9PSAicGFkZGluZyIgfHwgKG1v
ZGUgPT0gImFsbCIgJiYgcGFkZGluZ1F1YWQgIT0gY29udGVudFF1YWQpKSB7CiAgICAgICAgIGRy
YXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBwYWRkaW5nUXVhZCwgY29udGVudFF1YWQs
IHBhZGRpbmdCb3hDb2xvcik7Ci0KLSAgICBkcmF3T3V0bGluZWRRdWFkKGNvbnRleHQsIGNvbnRl
bnRRdWFkLCBjb250ZW50Qm94Q29sb3IpOworICAgICAgICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFk
OworICAgIH0KKyAgICBpZiAobW9kZSA9PSAiY29udGVudCIgfHwgbW9kZSA9PSAiYWxsIikKKyAg
ICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250ZW50UXVhZCwgY29udGVudEJveENv
bG9yKTsKKyAgICBlbHNlCisgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0
LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xvcik7CiB9CiAKIHZvaWQgZHJhd0hp
Z2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0
LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1YWRzKQpAQCAtMjEyLDcgKzIyMSw3
IEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUq
IG5vZGUsIGNvbnN0IEludFJlY3QmIGJvdW5kCiAKIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0
ZXIgewogCi12b2lkIERyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwg
Tm9kZSogbm9kZSkKK3ZvaWQgRHJhd05vZGVIaWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiBjb250
ZXh0LCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgUmVuZGVyT2JqZWN0
KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFt
ZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CkBAIC0yNjgsNyArMjc3LDcgQEAgdm9pZCBE
cmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUpCiAK
ICAgICAgICAgdGl0bGVBbmNob3JCb3ggPSBhYnNNYXJnaW5RdWFkLmVuY2xvc2luZ0JvdW5kaW5n
Qm94KCk7CiAKLSAgICAgICAgZHJhd0hpZ2hsaWdodEZvckJveChjb250ZXh0LCBhYnNDb250ZW50
UXVhZCwgYWJzUGFkZGluZ1F1YWQsIGFic0JvcmRlclF1YWQsIGFic01hcmdpblF1YWQpOworICAg
ICAgICBkcmF3SGlnaGxpZ2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBhYnNQYWRk
aW5nUXVhZCwgYWJzQm9yZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCwgbW9kZSk7CiAgICAgfSBlbHNl
IGlmIChyZW5kZXJlci0+aXNSZW5kZXJJbmxpbmUoKSB8fCBpc1NWR1JlbmRlcmVyKSB7CiAgICAg
ICAgIC8vIEZJWE1FOiBXZSBzaG91bGQgc2hvdyBtYXJnaW5zL3BhZGRpbmcvYm9yZGVyIGZvciBp
bmxpbmVzLgogICAgICAgICBWZWN0b3I8RmxvYXRRdWFkPiBsaW5lQm94UXVhZHM7CkBAIC0yODUs
NyArMjk0LDggQEAgdm9pZCBEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRl
eHQsIE5vZGUqIG5vZGUpCiAgICAgICAgIHJldHVybjsKIAogICAgIFdlYkNvcmU6OlNldHRpbmdz
KiBzZXR0aW5ncyA9IGNvbnRhaW5pbmdGcmFtZS0+c2V0dGluZ3MoKTsKLSAgICBkcmF3RWxlbWVu
dFRpdGxlKGNvbnRleHQsIG5vZGUsIGJvdW5kaW5nQm94LCB0aXRsZUFuY2hvckJveCwgb3Zlcmxh
eVJlY3QsIHNldHRpbmdzKTsKKyAgICBpZiAobW9kZSA9PSAiYWxsIikKKyAgICAgICAgZHJhd0Vs
ZW1lbnRUaXRsZShjb250ZXh0LCBub2RlLCBib3VuZGluZ0JveCwgdGl0bGVBbmNob3JCb3gsIG92
ZXJsYXlSZWN0LCBzZXR0aW5ncyk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIERPTU5vZGVIaWdobGln
aHRlcgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGln
aHRlci5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5oCmlu
ZGV4IDFkZTFlZWMuLjgyYWZjZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9ET01Ob2RlSGlnaGxpZ2h0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmgKQEAgLTI5LDYgKzI5LDggQEAKICNpZm5kZWYgRE9NTm9kZUhpZ2hs
aWdodGVyX2gKICNkZWZpbmUgRE9NTm9kZUhpZ2hsaWdodGVyX2gKIAorI2luY2x1ZGUgIlBsYXRm
b3JtU3RyaW5nLmgiCisKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgR3JhcGhpY3NDb250
ZXh0OwpAQCAtMzYsNyArMzgsNyBAQCBjbGFzcyBOb2RlOwogCiBuYW1lc3BhY2UgRE9NTm9kZUhp
Z2hsaWdodGVyIHsKIAotdm9pZCBEcmF3Tm9kZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmLCBO
b2RlKik7Cit2b2lkIERyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYsIE5vZGUqLCBj
b25zdCBTdHJpbmcmIG1vZGUpOwogCiB9IC8vIG5hbWVzcGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCmluZGV4IDlkNzE2OGIuLjM1
OTM2ZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3IuanNv
bgorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24KQEAgLTg5Niw3
ICs4OTYsOCBAQAogICAgICAgICAgICAgewogICAgICAgICAgICAgICAgICJuYW1lIjogImhpZ2hs
aWdodERPTU5vZGUiLAogICAgICAgICAgICAgICAgICJwYXJhbWV0ZXJzIjogWwotICAgICAgICAg
ICAgICAgICAgICB7ICJuYW1lIjogIm5vZGVJZCIsICJ0eXBlIjogImludGVnZXIiIH0KKyAgICAg
ICAgICAgICAgICAgICAgeyAibmFtZSI6ICJub2RlSWQiLCAidHlwZSI6ICJpbnRlZ2VyIiB9LAor
ICAgICAgICAgICAgICAgICAgICB7ICJuYW1lIjogIm1vZGUiLCAidHlwZSI6ICJzdHJpbmciLCAi
b3B0aW9uYWwiOiB0cnVlLCAiZGVzY3JpcHRpb24iOiAiVGhlIGJveCBtb2RlbCBjb21wb25lbnQo
cykgdG8gaGlnaGxpZ2h0OiBcImNvbnRlbnRcIiwgXCJwYWRkaW5nXCIsIFwiYm9yZGVyXCIsIFwi
bWFyZ2luXCIsIFwiYWxsXCIgKGRlZmF1bHQ6IFwiYWxsXCIpLiIgfSwKICAgICAgICAgICAgICAg
ICBdCiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggY2I3NjFkMC4uYjRkOGU1YyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCkBAIC05
NDYsMTcgKzk0NiwxOCBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JO
b2RlKEVycm9yU3RyaW5nKiwgYm9vbCBlbmFibGVkKQogICAgIHNldFNlYXJjaGluZ0Zvck5vZGUo
ZW5hYmxlZCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodChFcnJvclN0
cmluZyosIE5vZGUqIG5vZGUpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHQoRXJy
b3JTdHJpbmcqLCBOb2RlKiBub2RlLCBjb25zdCBTdHJpbmcmIG1vZGUpCiB7CiAgICAgQVNTRVJU
X0FSRyhub2RlLCBub2RlKTsKICAgICBtX2hpZ2hsaWdodGVkTm9kZSA9IG5vZGU7CisgICAgbV9o
aWdobGlnaHRNb2RlID0gbW9kZTsKICAgICBtX2NsaWVudC0+aGlnaGxpZ2h0KG5vZGUpOwogfQog
Ci12b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRET01Ob2RlKEVycm9yU3RyaW5nKiBl
cnJvciwgaW50IG5vZGVJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodERPTU5v
ZGUoRXJyb3JTdHJpbmcqIGVycm9yLCBpbnQgbm9kZUlkLCBTdHJpbmcqIG1vZGUpCiB7CiAgICAg
aWYgKE5vZGUqIG5vZGUgPSBub2RlRm9ySWQobm9kZUlkKSkKLSAgICAgICAgaGlnaGxpZ2h0KGVy
cm9yLCBub2RlKTsKKyAgICAgICAgaGlnaGxpZ2h0KGVycm9yLCBub2RlLCBtb2RlICYmICFtb2Rl
LT5pc0VtcHR5KCkgPyAqbW9kZSA6ICJhbGwiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIGZyYW1l
SWQpCkBAIC0xMzk1LDcgKzEzOTYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpkcmF3Tm9k
ZUhpZ2hsaWdodChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQpIGNvbnN0CiAgICAgaWYgKCFtX2hp
Z2hsaWdodGVkTm9kZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgRE9NTm9kZUhpZ2hsaWdodGVy
OjpEcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSk7Cisg
ICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpEcmF3Tm9kZUhpZ2hsaWdodChjb250ZXh0LCBtX2hpZ2hs
aWdodGVkTm9kZS5nZXQoKSwgbV9oaWdobGlnaHRNb2RlKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuaApp
bmRleCA1MjZiZjM0Li45MDZiODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yRE9NQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuaApAQCAtMTMwLDcgKzEzMCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIHB1
c2hOb2RlVG9Gcm9udGVuZChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGlu
dCogbm9kZUlkKTsKICAgICB2b2lkIHB1c2hOb2RlQnlQYXRoVG9Gcm9udGVuZChFcnJvclN0cmlu
ZyosIGNvbnN0IFN0cmluZyYgcGF0aCwgaW50KiBub2RlSWQpOwogICAgIHZvaWQgaGlkZUhpZ2hs
aWdodChFcnJvclN0cmluZyopOwotICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShFcnJvclN0cmlu
ZyosIGludCBub2RlSWQpOworICAgIHZvaWQgaGlnaGxpZ2h0RE9NTm9kZShFcnJvclN0cmluZyos
IGludCBub2RlSWQsIFN0cmluZyogbW9kZSk7CiAgICAgdm9pZCBoaWRlRE9NTm9kZUhpZ2hsaWdo
dChFcnJvclN0cmluZyogZXJyb3IpIHsgaGlkZUhpZ2hsaWdodChlcnJvcik7IH0KICAgICB2b2lk
IGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkKTsKICAg
ICB2b2lkIGhpZGVGcmFtZUhpZ2hsaWdodChFcnJvclN0cmluZyogZXJyb3IpIHsgaGlkZUhpZ2hs
aWdodChlcnJvcik7IH0KQEAgLTE3OCw3ICsxNzgsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3Rv
ckRPTUFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBQYWdlKiwgSW5zcGVjdG9yQ2xpZW50Kiwg
SW5zcGVjdG9yU3RhdGUqLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKIAogICAgIHZvaWQgc2V0
U2VhcmNoaW5nRm9yTm9kZShib29sIGVuYWJsZWQpOwotICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9y
U3RyaW5nKiwgTm9kZSopOworICAgIHZvaWQgaGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSos
IGNvbnN0IFN0cmluZyYgbW9kZSA9ICJhbGwiKTsKIAogICAgIC8vIE5vZGUtcmVsYXRlZCBtZXRo
b2RzLgogICAgIHR5cGVkZWYgSGFzaE1hcDxSZWZQdHI8Tm9kZT4sIGludD4gTm9kZVRvSWRNYXA7
CkBAIC0yMjgsNiArMjI4LDcgQEAgcHJpdmF0ZToKICAgICBIYXNoU2V0PFJlZlB0cjxOb2RlPiA+
IG1fc2VhcmNoUmVzdWx0czsKICAgICBPd25QdHI8UmV2YWxpZGF0ZVN0eWxlQXR0cmlidXRlVGFz
az4gbV9yZXZhbGlkYXRlU3R5bGVBdHRyVGFzazsKICAgICBSZWZQdHI8Tm9kZT4gbV9oaWdobGln
aHRlZE5vZGU7CisgICAgU3RyaW5nIG1faGlnaGxpZ2h0TW9kZTsKICAgICBSZWZQdHI8Tm9kZT4g
bV9ub2RlVG9Gb2N1czsKICAgICBib29sIG1fc2VhcmNoaW5nRm9yTm9kZTsKIH07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKaW5k
ZXggNzU5NmJjNC4uMzZjMDE4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvQ1NTU3R5bGVNb2RlbC5qcwpAQCAtNTA5LDcgKzUwOSw3IEBAIFdlYkluc3Bl
Y3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKICAgICAgICAgICAgICAgICB9CiAKLSAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuY3Nz
TW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZChzdHlsZS5pZC5zdHlsZVNoZWV0SWQsIG1ham9y
Q2hhbmdlLCB1c2VyQ2FsbGJhY2suYmluZCh0aGlzLCBzdHlsZSkpOworICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0
eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjayA/IHVzZXJDYWxsYmFjay5iaW5k
KHRoaXMsIHN0eWxlKSA6IG51bGwpOwogICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAg
ICAgICBjb25zb2xlLmVycm9yKEpTT04uc3RyaW5naWZ5KGVycm9yKSk7CiAgICAgICAgICAgICAg
ICAgaWYgKHVzZXJDYWxsYmFjaykKQEAgLTUyNCwxMCArNTI0LDEwIEBAIFdlYkluc3BlY3Rvci5D
U1NQcm9wZXJ0eS5wcm90b3R5cGUgPSB7CiAgICAgICAgIENTU0FnZW50LnNldFByb3BlcnR5VGV4
dCh0aGlzLm93bmVyU3R5bGUuaWQsIHRoaXMuaW5kZXgsIHByb3BlcnR5VGV4dCwgdGhpcy5pbmRl
eCA8IHRoaXMub3duZXJTdHlsZS5wYXN0TGFzdFNvdXJjZVByb3BlcnR5SW5kZXgoKSwgY2FsbGJh
Y2suYmluZCh0aGlzKSk7CiAgICAgfSwKIAotICAgIHNldFZhbHVlOiBmdW5jdGlvbihuZXdWYWx1
ZSwgdXNlckNhbGxiYWNrKQorICAgIHNldFZhbHVlOiBmdW5jdGlvbihuZXdWYWx1ZSwgbWFqb3JD
aGFuZ2UsIHVzZXJDYWxsYmFjaykKICAgICB7CiAgICAgICAgIHZhciB0ZXh0ID0gdGhpcy5uYW1l
ICsgIjogIiArIG5ld1ZhbHVlICsgKHRoaXMucHJpb3JpdHkgPyAiICEiICsgdGhpcy5wcmlvcml0
eSA6ICIiKSArICI7IgotICAgICAgICB0aGlzLnNldFRleHQodGV4dCwgdXNlckNhbGxiYWNrKTsK
KyAgICAgICAgdGhpcy5zZXRUZXh0KHRleHQsIG1ham9yQ2hhbmdlLCB1c2VyQ2FsbGJhY2spOwog
ICAgIH0sCiAKICAgICBzZXREaXNhYmxlZDogZnVuY3Rpb24oZGlzYWJsZWQsIHVzZXJDYWxsYmFj
aykKQEAgLTUzOSwxNSArNTM5LDE2IEBAIFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5wcm90b3R5
cGUgPSB7CiAKICAgICAgICAgZnVuY3Rpb24gY2FsbGJhY2soZXJyb3IsIHN0eWxlUGF5bG9hZCkK
ICAgICAgICAgewotICAgICAgICAgICAgaWYgKCF1c2VyQ2FsbGJhY2spCisgICAgICAgICAgICBp
ZiAoZXJyb3IpIHsKKyAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQorICAgICAgICAg
ICAgICAgICAgICB1c2VyQ2FsbGJhY2sobnVsbCk7CiAgICAgICAgICAgICAgICAgcmV0dXJuOwot
ICAgICAgICAgICAgaWYgKGVycm9yKQotICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxs
KTsKLSAgICAgICAgICAgIGVsc2UgeworICAgICAgICAgICAgfQorICAgICAgICAgICAgaWYgKHVz
ZXJDYWxsYmFjaykgewogICAgICAgICAgICAgICAgIHZhciBzdHlsZSA9IFdlYkluc3BlY3Rvci5D
U1NTdHlsZURlY2xhcmF0aW9uLnBhcnNlUGF5bG9hZChzdHlsZVBheWxvYWQpOwogICAgICAgICAg
ICAgICAgIHVzZXJDYWxsYmFjayhzdHlsZSk7Ci0gICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc01vZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQodGhpcy5vd25lclN0eWxlLmlkLnN0eWxl
U2hlZXRJZCwgZmFsc2UpOwogICAgICAgICAgICAgfQorICAgICAgICAgICAgV2ViSW5zcGVjdG9y
LmNzc01vZGVsLl9maXJlU3R5bGVTaGVldENoYW5nZWQodGhpcy5vd25lclN0eWxlLmlkLnN0eWxl
U2hlZXRJZCwgZmFsc2UpOwogICAgICAgICB9CiAKICAgICAgICAgQ1NTQWdlbnQudG9nZ2xlUHJv
cGVydHkodGhpcy5vd25lclN0eWxlLmlkLCB0aGlzLmluZGV4LCBkaXNhYmxlZCwgY2FsbGJhY2su
YmluZCh0aGlzKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQt
ZW5kL0VsZW1lbnRzUGFuZWwuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5k
L0VsZW1lbnRzUGFuZWwuanMKaW5kZXggMWY2ZjU2Yi4uM2MwNTI1OCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50c1BhbmVsLmpzCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwpAQCAtNDIx
LDEzICs0MjEsMjMgQEAgV2ViSW5zcGVjdG9yLkVsZW1lbnRzUGFuZWwucHJvdG90eXBlID0gewog
ICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLmZvY3VzZWRET01Ob2RlID0geDsKICAgICB9LAogCisg
ICAgc3RhcnRFZGl0aW5nU3R5bGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIHRoaXMuX2lz
RWRpdGluZ1N0eWxlID0gdHJ1ZTsKKyAgICB9LAorCisgICAgZW5kRWRpdGluZ1N0eWxlOiBmdW5j
dGlvbigpCisgICAgeworICAgICAgICBkZWxldGUgdGhpcy5faXNFZGl0aW5nU3R5bGU7CisgICAg
fSwKKwogICAgIF9hdHRyaWJ1dGVzVXBkYXRlZDogZnVuY3Rpb24oZXZlbnQpCiAgICAgewogICAg
ICAgICB0aGlzLnJlY2VudGx5TW9kaWZpZWROb2Rlcy5wdXNoKHtub2RlOiBldmVudC5kYXRhLCB1
cGRhdGVkOiB0cnVlfSk7CiAgICAgICAgIGlmICh0aGlzLnZpc2libGUpCiAgICAgICAgICAgICB0
aGlzLl91cGRhdGVNb2RpZmllZE5vZGVzU29vbigpOwogCi0gICAgICAgIGlmICghdGhpcy5zaWRl
YmFyUGFuZXMuc3R5bGVzLmlzTW9kaWZ5aW5nU3R5bGUgJiYgZXZlbnQuZGF0YSA9PT0gdGhpcy5m
b2N1c2VkRE9NTm9kZSkKKyAgICAgICAgaWYgKCF0aGlzLl9pc0VkaXRpbmdTdHlsZSAmJiBldmVu
dC5kYXRhID09PSB0aGlzLmZvY3VzZWRET01Ob2RlKQogICAgICAgICAgICAgdGhpcy5fc3R5bGVT
aGVldENoYW5nZWQoKTsKICAgICB9LAogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvZnJvbnQtZW5kL01ldHJpY3NTaWRlYmFyUGFuZS5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCmluZGV4IGFmYTM4MzkuLmJl
NDQwM2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0
cmljc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1l
bmQvTWV0cmljc1NpZGViYXJQYW5lLmpzCkBAIC0yOSw3ICsyOSw2IEBACiBXZWJJbnNwZWN0b3Iu
TWV0cmljc1NpZGViYXJQYW5lID0gZnVuY3Rpb24oKQogewogICAgIFdlYkluc3BlY3Rvci5TaWRl
YmFyUGFuZS5jYWxsKHRoaXMsIFdlYkluc3BlY3Rvci5VSVN0cmluZygiTWV0cmljcyIpKTsKLSAg
ICB0aGlzLl9pbmxpbmVTdHlsZUlkID0gbnVsbDsKIH0KIAogV2ViSW5zcGVjdG9yLk1ldHJpY3NT
aWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CkBAIC03Niw2ICs3NSw1NSBAQCBXZWJJbnNwZWN0b3Iu
TWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgcmV0dXJuIHsgbGVmdDog
bGVmdCwgdG9wOiB0b3AsIHJpZ2h0OiByaWdodCwgYm90dG9tOiBib3R0b20gfTsKICAgICB9LAog
CisgICAgX2hpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9uKHNob3dIaWdobGlnaHQsIG1vZGUsIGV2
ZW50KQorICAgIHsKKyAgICAgICAgZnVuY3Rpb24gZW5jbG9zaW5nT3JTZWxmV2l0aENsYXNzSW5B
cnJheShlbGVtZW50LCBjbGFzc05hbWVzKQorICAgICAgICB7CisgICAgICAgICAgICBmb3IgKHZh
ciBub2RlID0gZWxlbWVudDsgbm9kZSAmJiBub2RlICE9PSBlbGVtZW50Lm93bmVyRG9jdW1lbnQ7
IG5vZGUgPSBub2RlLnBhcmVudE5vZGUpIHsKKyAgICAgICAgICAgICAgICBpZiAobm9kZS5ub2Rl
VHlwZSA9PT0gTm9kZS5FTEVNRU5UX05PREUpIHsKKyAgICAgICAgICAgICAgICAgICAgZm9yICh2
YXIgaSA9IDA7IGkgPCBjbGFzc05hbWVzLmxlbmd0aDsgKytpKSB7CisgICAgICAgICAgICAgICAg
ICAgICAgICBpZiAobm9kZS5oYXNTdHlsZUNsYXNzKGNsYXNzTmFtZXNbaV0pKQorICAgICAgICAg
ICAgICAgICAgICAgICAgICAgIHJldHVybiBub2RlOworICAgICAgICAgICAgICAgICAgICB9Cisg
ICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICAgICAgcmV0dXJuIG51bGw7
CisgICAgICAgIH0KKworICAgICAgICBmdW5jdGlvbiBnZXRCb3hSZWN0YW5nbGVFbGVtZW50KGVs
ZW1lbnQpCisgICAgICAgIHsKKyAgICAgICAgICAgIGlmICghZWxlbWVudCkKKyAgICAgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgICAgIHJldHVybiBlbmNsb3NpbmdPclNlbGZXaXRo
Q2xhc3NJbkFycmF5KGVsZW1lbnQsIFsibWV0cmljcyIsICJtYXJnaW4iLCAiYm9yZGVyIiwgInBh
ZGRpbmciLCAiY29udGVudCJdKTsKKyAgICAgICAgfQorCisgICAgICAgIGV2ZW50LnN0b3BQcm9w
YWdhdGlvbigpOworICAgICAgICB2YXIgZnJvbUVsZW1lbnQgPSBnZXRCb3hSZWN0YW5nbGVFbGVt
ZW50KGV2ZW50LmZyb21FbGVtZW50KTsKKyAgICAgICAgdmFyIHRvRWxlbWVudCA9IGdldEJveFJl
Y3RhbmdsZUVsZW1lbnQoZXZlbnQudG9FbGVtZW50KTsKKworICAgICAgICBpZiAoZnJvbUVsZW1l
bnQgPT09IHRvRWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICBpZiAoc2hv
d0hpZ2hsaWdodCkgeworICAgICAgICAgICAgLy8gSW50byBlbGVtZW50LgorICAgICAgICAgICAg
aWYgKHRoaXMubm9kZSAmJiB0b0VsZW1lbnQpCisgICAgICAgICAgICAgICAgdG9FbGVtZW50LmFk
ZFN0eWxlQ2xhc3MoImhvdmVyZWQiKTsKKyAgICAgICAgICAgIHZhciBub2RlSWQgPSB0aGlzLm5v
ZGUgPyB0aGlzLm5vZGUuaWQgOiAwOworICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgLy8g
T3V0IG9mIGVsZW1lbnQuCisgICAgICAgICAgICBpZiAoZnJvbUVsZW1lbnQpCisgICAgICAgICAg
ICAgICAgZnJvbUVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiaG92ZXJlZCIpOworICAgICAgICAg
ICAgdmFyIG5vZGVJZCA9IDA7CisgICAgICAgIH0KKyAgICAgICAgaWYgKG5vZGVJZCkgeworICAg
ICAgICAgICAgaWYgKHRoaXMuX2hpZ2hsaWdodE1vZGUgPT09IG1vZGUpCisgICAgICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICAgICAgdGhpcy5faGlnaGxpZ2h0TW9kZSA9IG1vZGU7CisgICAg
ICAgIH0gZWxzZQorICAgICAgICAgICAgZGVsZXRlIHRoaXMuX2hpZ2hsaWdodE1vZGU7CisgICAg
ICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRET01Ob2RlKG5vZGVJZCwgbW9kZSk7CisgICAgfSwK
KwogICAgIF91cGRhdGU6IGZ1bmN0aW9uKHN0eWxlKQogICAgIHsKICAgICAgICAgLy8gVXBkYXRp
bmcgd2l0aCBjb21wdXRlZCBzdHlsZS4KQEAgLTk2LDcgKzE0NCw3IEBAIFdlYkluc3BlY3Rvci5N
ZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdmFyIGVsZW1lbnQg
PSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGVsZW1lbnQuY2xh
c3NOYW1lID0gc2lkZTsKICAgICAgICAgICAgIGVsZW1lbnQudGV4dENvbnRlbnQgPSB2YWx1ZTsK
LSAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlzLnN0
YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGVsZW1lbnQsIG5hbWUsIHByb3BlcnR5TmFtZSksIGZhbHNl
KTsKKyAgICAgICAgICAgIGVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2siLCB0aGlz
LnN0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIGVsZW1lbnQsIG5hbWUsIHByb3BlcnR5TmFtZSwgc3R5
bGUpLCBmYWxzZSk7CiAgICAgICAgICAgICByZXR1cm4gZWxlbWVudDsKICAgICAgICAgfQogCkBA
IC0xNjcsMTEgKzIxNSwxMyBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3Rv
dHlwZSA9IHsKIAogICAgICAgICAgICAgdmFyIGJveEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVF
bGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGJveEVsZW1lbnQuY2xhc3NOYW1lID0gbmFtZTsK
KyAgICAgICAgICAgIGJveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhp
cy5faGlnaGxpZ2h0RE9NTm9kZS5iaW5kKHRoaXMsIHRydWUsIG5hbWUpLCBmYWxzZSk7CisgICAg
ICAgICAgICBib3hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0IiwgdGhpcy5faGln
aGxpZ2h0RE9NTm9kZS5iaW5kKHRoaXMsIGZhbHNlLCAiIiksIGZhbHNlKTsKIAogICAgICAgICAg
ICAgaWYgKG5hbWUgPT09ICJjb250ZW50IikgewogICAgICAgICAgICAgICAgIHZhciB3aWR0aEVs
ZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgICAgICAgICAg
d2lkdGhFbGVtZW50LnRleHRDb250ZW50ID0gZ2V0Q29udGVudEFyZWFXaWR0aFB4KHN0eWxlKTsK
LSAgICAgICAgICAgICAgICB3aWR0aEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigiZGJsY2xpY2si
LCB0aGlzLnN0YXJ0RWRpdGluZy5iaW5kKHRoaXMsIHdpZHRoRWxlbWVudCwgIndpZHRoIiwgIndp
ZHRoIiwgc3R5bGUpLCBmYWxzZSk7CisgICAgICAgICAgICAgICAgd2lkdGhFbGVtZW50LmFkZEV2
ZW50TGlzdGVuZXIoImNsaWNrIiwgdGhpcy5zdGFydEVkaXRpbmcuYmluZCh0aGlzLCB3aWR0aEVs
ZW1lbnQsICJ3aWR0aCIsICJ3aWR0aCIsIHN0eWxlKSwgZmFsc2UpOwogCiAgICAgICAgICAgICAg
ICAgdmFyIGhlaWdodEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAg
ICAgICAgICAgICAgICAgaGVpZ2h0RWxlbWVudC50ZXh0Q29udGVudCA9IGdldENvbnRlbnRBcmVh
SGVpZ2h0UHgoc3R5bGUpOwpAQCAtMjA0LDggKzI1NCwxMiBAQCBXZWJJbnNwZWN0b3IuTWV0cmlj
c1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogCiAgICAgICAgIG1ldHJpY3NF
bGVtZW50LmFwcGVuZENoaWxkKHByZXZpb3VzQm94KTsKKyAgICAgICAgbWV0cmljc0VsZW1lbnQu
YWRkRXZlbnRMaXN0ZW5lcigibW91c2VvdmVyIiwgdGhpcy5faGlnaGxpZ2h0RE9NTm9kZS5iaW5k
KHRoaXMsIHRydWUsICIiKSwgZmFsc2UpOworICAgICAgICBtZXRyaWNzRWxlbWVudC5hZGRFdmVu
dExpc3RlbmVyKCJtb3VzZW91dCIsIHRoaXMuX2hpZ2hsaWdodERPTU5vZGUuYmluZCh0aGlzLCBm
YWxzZSwgIiIpLCBmYWxzZSk7CiAgICAgICAgIHRoaXMuYm9keUVsZW1lbnQucmVtb3ZlQ2hpbGRy
ZW4oKTsKICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5hcHBlbmRDaGlsZChtZXRyaWNzRWxlbWVu
dCk7CisKKyAgICAgICAgV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUoMCwgIiIpOwogICAg
IH0sCiAKICAgICBzdGFydEVkaXRpbmc6IGZ1bmN0aW9uKHRhcmdldEVsZW1lbnQsIGJveCwgc3R5
bGVQcm9wZXJ0eSwgY29tcHV0ZWRTdHlsZSkKQEAgLTIxNCwyNyArMjY4LDEwMCBAQCBXZWJJbnNw
ZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICAgICAgICAgIHJldHVy
bjsKIAogICAgICAgICB2YXIgY29udGV4dCA9IHsgYm94OiBib3gsIHN0eWxlUHJvcGVydHk6IHN0
eWxlUHJvcGVydHksIGNvbXB1dGVkU3R5bGU6IGNvbXB1dGVkU3R5bGUgfTsKKyAgICAgICAgdmFy
IGJvdW5kS2V5RG93biA9IHRoaXMuX2hhbmRsZUtleURvd24uYmluZCh0aGlzLCBjb250ZXh0LCBz
dHlsZVByb3BlcnR5KTsKKyAgICAgICAgY29udGV4dC5rZXlEb3duSGFuZGxlciA9IGJvdW5kS2V5
RG93bjsKKyAgICAgICAgdGFyZ2V0RWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJrZXlkb3duIiwg
Ym91bmRLZXlEb3duLCBmYWxzZSk7CiAKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVt
ZW50cy5zdGFydEVkaXRpbmdTdHlsZSgpOwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0
aW5nKHRhcmdldEVsZW1lbnQsIHsKICAgICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAg
ICAgICAgICBjb21taXRIYW5kbGVyOiB0aGlzLmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwK
ICAgICAgICAgICAgIGNhbmNlbEhhbmRsZXI6IHRoaXMuZWRpdGluZ0NhbmNlbGxlZC5iaW5kKHRo
aXMpCiAgICAgICAgIH0pOworICAgICAgICB3aW5kb3cuZ2V0U2VsZWN0aW9uKCkuc2V0QmFzZUFu
ZEV4dGVudCh0YXJnZXRFbGVtZW50LCAwLCB0YXJnZXRFbGVtZW50LCAxKTsKKyAgICB9LAorCisg
ICAgX2hhbmRsZUtleURvd246IGZ1bmN0aW9uKGNvbnRleHQsIHN0eWxlUHJvcGVydHksIGV2ZW50
KQorICAgIHsKKyAgICAgICAgaWYgKCEvXig/OlBhZ2UpPyg/OlVwfERvd24pJC8udGVzdChldmVu
dC5rZXlJZGVudGlmaWVyKSkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgdmFyIGVsZW1l
bnQgPSBldmVudC5jdXJyZW50VGFyZ2V0OworCisgICAgICAgIHZhciBzZWxlY3Rpb24gPSB3aW5k
b3cuZ2V0U2VsZWN0aW9uKCk7CisgICAgICAgIGlmICghc2VsZWN0aW9uLnJhbmdlQ291bnQpCisg
ICAgICAgICAgICByZXR1cm47CisKKyAgICAgICAgdmFyIHNlbGVjdGlvblJhbmdlID0gc2VsZWN0
aW9uLmdldFJhbmdlQXQoMCk7CisgICAgICAgIGlmIChzZWxlY3Rpb25SYW5nZS5jb21tb25BbmNl
c3RvckNvbnRhaW5lciAhPT0gZWxlbWVudCAmJiAhc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0
b3JDb250YWluZXIuaXNEZXNjZW5kYW50KGVsZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIHZhciBvcmlnaW5hbFZhbHVlID0gZWxlbWVudC50ZXh0Q29udGVudDsKKyAgICAg
ICAgdmFyIHdvcmRSYW5nZSA9IHNlbGVjdGlvblJhbmdlLnN0YXJ0Q29udGFpbmVyLnJhbmdlT2ZX
b3JkKHNlbGVjdGlvblJhbmdlLnN0YXJ0T2Zmc2V0LCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUuU3R5bGVWYWx1ZURlbGltaXRlcnMsIGVsZW1lbnQpOworICAgICAgICB2YXIgd29yZFN0
cmluZyA9IHdvcmRSYW5nZS50b1N0cmluZygpOworCisgICAgICAgIHZhciBtYXRjaGVzID0gLygu
Kj8pKC0/KD86XGQrKD86XC5cZCspP3xcLlxkKykpKC4qKS8uZXhlYyh3b3JkU3RyaW5nKTsKKyAg
ICAgICAgdmFyIHJlcGxhY2VtZW50U3RyaW5nOworICAgICAgICBpZiAobWF0Y2hlcyAmJiBtYXRj
aGVzLmxlbmd0aCkgeworICAgICAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKKyAgICAgICAg
ICAgIHN1ZmZpeCA9IG1hdGNoZXNbM107CisgICAgICAgICAgICBudW1iZXIgPSBXZWJJbnNwZWN0
b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEZsb2F0TnVtYmVyKHBhcnNlRmxvYXQobWF0Y2hl
c1syXSksIGV2ZW50KTsKKyAgICAgICAgICAgIGlmIChzdHlsZVByb3BlcnR5ICE9PSAibWFyZ2lu
IiAmJiBudW1iZXIgPCAwKQorICAgICAgICAgICAgICAgIG51bWJlciA9IDA7CisKKyAgICAgICAg
ICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVyICsgc3VmZml4OworICAgICAg
ICB9CisgICAgICAgIGlmICghcmVwbGFjZW1lbnRTdHJpbmcpCisgICAgICAgICAgICByZXR1cm47
CisKKyAgICAgICAgdmFyIHJlcGxhY2VtZW50VGV4dE5vZGUgPSBkb2N1bWVudC5jcmVhdGVUZXh0
Tm9kZShyZXBsYWNlbWVudFN0cmluZyk7CisKKyAgICAgICAgd29yZFJhbmdlLmRlbGV0ZUNvbnRl
bnRzKCk7CisgICAgICAgIHdvcmRSYW5nZS5pbnNlcnROb2RlKHJlcGxhY2VtZW50VGV4dE5vZGUp
OworCisgICAgICAgIHZhciBmaW5hbFNlbGVjdGlvblJhbmdlID0gZG9jdW1lbnQuY3JlYXRlUmFu
Z2UoKTsKKyAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRTdGFydChyZXBsYWNlbWVudFRl
eHROb2RlLCAwKTsKKyAgICAgICAgZmluYWxTZWxlY3Rpb25SYW5nZS5zZXRFbmQocmVwbGFjZW1l
bnRUZXh0Tm9kZSwgcmVwbGFjZW1lbnRTdHJpbmcubGVuZ3RoKTsKKworICAgICAgICBzZWxlY3Rp
b24ucmVtb3ZlQWxsUmFuZ2VzKCk7CisgICAgICAgIHNlbGVjdGlvbi5hZGRSYW5nZShmaW5hbFNl
bGVjdGlvblJhbmdlKTsKKworICAgICAgICBldmVudC5oYW5kbGVkID0gdHJ1ZTsKKyAgICAgICAg
ZXZlbnQucHJldmVudERlZmF1bHQoKTsKKyAgICAgICAgdGhpcy5fYXBwbHlVc2VySW5wdXQoZWxl
bWVudCwgcmVwbGFjZW1lbnRTdHJpbmcsIG9yaWdpbmFsVmFsdWUsIGNvbnRleHQsIGZhbHNlKTsK
KyAgICB9LAorCisgICAgZWRpdGluZ0VuZGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQor
ICAgIHsKKyAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eURhdGE7CisgICAgICAg
IGRlbGV0ZSB0aGlzLnByZXZpb3VzUHJvcGVydHlEYXRhQ2FuZGlkYXRlOworICAgICAgICBlbGVt
ZW50LnJlbW92ZUV2ZW50TGlzdGVuZXIoImtleWRvd24iLCBjb250ZXh0LmtleURvd25IYW5kbGVy
LCBmYWxzZSk7CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGlu
Z1N0eWxlKCk7CiAgICAgfSwKIAogICAgIGVkaXRpbmdDYW5jZWxsZWQ6IGZ1bmN0aW9uKGVsZW1l
bnQsIGNvbnRleHQpCiAgICAgeworICAgICAgICBpZiAoIm9yaWdpbmFsUHJvcGVydHlEYXRhIiBp
biB0aGlzICYmIHRoaXMuaW5saW5lU3R5bGUpIHsKKyAgICAgICAgICAgIGlmICghdGhpcy5vcmln
aW5hbFByb3BlcnR5RGF0YSkgeworICAgICAgICAgICAgICAgIC8vIEFuIGFkZGVkIHByb3BlcnR5
LCByZW1vdmUgdGhlIGxhc3QgcHJvcGVydHkgaW4gdGhlIHN0eWxlLgorICAgICAgICAgICAgICAg
IHZhciBwYXN0TGFzdFNvdXJjZVByb3BlcnR5SW5kZXggPSB0aGlzLmlubGluZVN0eWxlLnBhc3RM
YXN0U291cmNlUHJvcGVydHlJbmRleCgpOworICAgICAgICAgICAgICAgIGlmIChwYXN0TGFzdFNv
dXJjZVByb3BlcnR5SW5kZXgpCisgICAgICAgICAgICAgICAgICAgIHRoaXMuaW5saW5lU3R5bGUu
YWxsUHJvcGVydGllc1twYXN0TGFzdFNvdXJjZVByb3BlcnR5SW5kZXggLSAxXS5zZXRUZXh0KCIi
LCBmYWxzZSk7CisgICAgICAgICAgICB9IGVsc2UKKyAgICAgICAgICAgICAgICB0aGlzLmlubGlu
ZVN0eWxlLmFsbFByb3BlcnRpZXNbdGhpcy5vcmlnaW5hbFByb3BlcnR5RGF0YS5pbmRleF0uc2V0
VGV4dCh0aGlzLm9yaWdpbmFsUHJvcGVydHlEYXRhLnByb3BlcnR5VGV4dCwgZmFsc2UpOworICAg
ICAgICB9CisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGVsZW1lbnQsIGNvbnRleHQpOwogICAg
ICAgICB0aGlzLnVwZGF0ZSgpOwogICAgIH0sCiAKLSAgICBlZGl0aW5nQ29tbWl0dGVkOiBmdW5j
dGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCkKKyAgICBf
YXBwbHlVc2VySW5wdXQ6IGZ1bmN0aW9uKGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250
ZW50LCBjb250ZXh0LCBjb21taXRFZGl0b3IpCiAgICAgewogICAgICAgICBpZiAoIXRoaXMuaW5s
aW5lU3R5bGUpIHsKICAgICAgICAgICAgIC8vIEVsZW1lbnQgaGFzIG5vIHJlbmRlcmVyLgorICAg
ICAgICAgICAgZGVsZXRlIHRoaXMub3JpZ2luYWxQcm9wZXJ0eVZhbHVlOwogICAgICAgICAgICAg
cmV0dXJuIHRoaXMuZWRpdGluZ0NhbmNlbGxlZChlbGVtZW50LCBjb250ZXh0KTsgLy8gbm90aGlu
ZyBjaGFuZ2VkLCBzbyBjYW5jZWwKICAgICAgICAgfQogCi0gICAgICAgIGlmICh1c2VySW5wdXQg
PT09IHByZXZpb3VzQ29udGVudCkKKyAgICAgICAgaWYgKGNvbW1pdEVkaXRvciAmJiB1c2VySW5w
dXQgPT09IHByZXZpb3VzQ29udGVudCkKICAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRpbmdD
YW5jZWxsZWQoZWxlbWVudCwgY29udGV4dCk7IC8vIG5vdGhpbmcgY2hhbmdlZCwgc28gY2FuY2Vs
CiAKICAgICAgICAgaWYgKGNvbnRleHQuYm94ICE9PSAicG9zaXRpb24iICYmICghdXNlcklucHV0
IHx8IHVzZXJJbnB1dCA9PT0gIlx1MjAxMiIpKQpAQCAtMjcwLDM3ICszOTcsNDIgQEAgV2ViSW5z
cGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICB1c2Vy
SW5wdXQgPSB1c2VyVmFsdWVQeCArICJweCI7CiAgICAgICAgIH0KIAorICAgICAgICB0aGlzLnBy
ZXZpb3VzUHJvcGVydHlEYXRhQ2FuZGlkYXRlID0gbnVsbDsKICAgICAgICAgdmFyIHNlbGYgPSB0
aGlzOwogICAgICAgICB2YXIgY2FsbGJhY2sgPSBmdW5jdGlvbihzdHlsZSkgewogICAgICAgICAg
ICAgaWYgKCFzdHlsZSkKICAgICAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgICAgICBzZWxm
LmlubGluZVN0eWxlID0gc3R5bGU7Ci0gICAgICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnRUb0xp
c3RlbmVycygibWV0cmljcyBlZGl0ZWQiKTsKLSAgICAgICAgICAgIHNlbGYudXBkYXRlKCk7Cisg
ICAgICAgICAgICBpZiAoISgib3JpZ2luYWxQcm9wZXJ0eURhdGEiIGluIHNlbGYpKQorICAgICAg
ICAgICAgICAgIHNlbGYub3JpZ2luYWxQcm9wZXJ0eURhdGEgPSBzZWxmLnByZXZpb3VzUHJvcGVy
dHlEYXRhQ2FuZGlkYXRlOworICAgICAgICAgICAgaWYgKCJfaGlnaGxpZ2h0TW9kZSIgaW4gc2Vs
ZikgeworICAgICAgICAgICAgICAgIFdlYkluc3BlY3Rvci5oaWdobGlnaHRET01Ob2RlKDAsICIi
KTsKKyAgICAgICAgICAgICAgICBXZWJJbnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZShzZWxmLm5v
ZGUuaWQsIHNlbGYuX2hpZ2hsaWdodE1vZGUpOworICAgICAgICAgICAgfQorICAgICAgICAgICAg
aWYgKGNvbW1pdEVkaXRvcikgeworICAgICAgICAgICAgICAgIHNlbGYuZGlzcGF0Y2hFdmVudFRv
TGlzdGVuZXJzKCJtZXRyaWNzIGVkaXRlZCIpOworICAgICAgICAgICAgICAgIHNlbGYudXBkYXRl
KCk7CisgICAgICAgICAgICB9CiAgICAgICAgIH07CiAKLSAgICAgICAgZnVuY3Rpb24gc2V0RW5h
YmxlZFZhbHVlQ2FsbGJhY2soY29udGV4dCwgc3R5bGUpCi0gICAgICAgIHsKLSAgICAgICAgICAg
IHZhciBwcm9wZXJ0eSA9IHN0eWxlLmdldExpdmVQcm9wZXJ0eShzdHlsZVByb3BlcnR5KTsKLSAg
ICAgICAgICAgIGlmICghcHJvcGVydHkpCi0gICAgICAgICAgICAgICAgc3R5bGUuYXBwZW5kUHJv
cGVydHkoY29udGV4dC5zdHlsZVByb3BlcnR5LCB1c2VySW5wdXQsIGNhbGxiYWNrKTsKLSAgICAg
ICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0VmFsdWUodXNlcklucHV0
LCBjYWxsYmFjayk7Ci0gICAgICAgIH0KLQogICAgICAgICB2YXIgYWxsUHJvcGVydGllcyA9IHRo
aXMuaW5saW5lU3R5bGUuYWxsUHJvcGVydGllczsKICAgICAgICAgZm9yICh2YXIgaSA9IDA7IGkg
PCBhbGxQcm9wZXJ0aWVzLmxlbmd0aDsgKytpKSB7CiAgICAgICAgICAgICB2YXIgcHJvcGVydHkg
PSBhbGxQcm9wZXJ0aWVzW2ldOwogICAgICAgICAgICAgaWYgKHByb3BlcnR5Lm5hbWUgIT09IGNv
bnRleHQuc3R5bGVQcm9wZXJ0eSB8fCBwcm9wZXJ0eS5pbmFjdGl2ZSkKICAgICAgICAgICAgICAg
ICBjb250aW51ZTsKLSAgICAgICAgICAgIGlmIChwcm9wZXJ0eS5kaXNhYmxlZCkKLSAgICAgICAg
ICAgICAgICBwcm9wZXJ0eS5zZXREaXNhYmxlZChmYWxzZSwgc2V0RW5hYmxlZFZhbHVlQ2FsbGJh
Y2suYmluZChudWxsLCBjb250ZXh0KSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAg
ICAgcHJvcGVydHkuc2V0VmFsdWUodXNlcklucHV0LCBjYWxsYmFjayk7CisKKyAgICAgICAgICAg
IHRoaXMucHJldmlvdXNQcm9wZXJ0eURhdGFDYW5kaWRhdGUgPSBwcm9wZXJ0eTsKKyAgICAgICAg
ICAgIHByb3BlcnR5LnNldFZhbHVlKHVzZXJJbnB1dCwgY29tbWl0RWRpdG9yLCBjYWxsYmFjayk7
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgICAgIH0KIAogICAgICAgICB0aGlzLmlubGluZVN0
eWxlLmFwcGVuZFByb3BlcnR5KGNvbnRleHQuc3R5bGVQcm9wZXJ0eSwgdXNlcklucHV0LCBjYWxs
YmFjayk7CisgICAgfSwKKworICAgIGVkaXRpbmdDb21taXR0ZWQ6IGZ1bmN0aW9uKGVsZW1lbnQs
IHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0KQorICAgIHsKKyAgICAgICAgdGhp
cy5lZGl0aW5nRW5kZWQoZWxlbWVudCwgY29udGV4dCk7CisgICAgICAgIHRoaXMuX2FwcGx5VXNl
cklucHV0KGVsZW1lbnQsIHVzZXJJbnB1dCwgcHJldmlvdXNDb250ZW50LCBjb250ZXh0LCB0cnVl
KTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9u
dC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJv
bnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCmluZGV4IGE2NjIwMDguLmY1N2VlYTkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBh
bmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRl
YmFyUGFuZS5qcwpAQCAtMTEwLDYgKzExMCw3NSBAQCBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJh
clBhbmUuUHNldWRvSWROYW1lcyA9IFsKICAgICAiLXdlYmtpdC1yZXNpemVyIiwgIi13ZWJraXQt
aW5wdXQtbGlzdC1idXR0b24iLCAiLXdlYmtpdC1pbm5lci1zcGluLWJ1dHRvbiIsICItd2Via2l0
LW91dGVyLXNwaW4tYnV0dG9uIgogXTsKIAorV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5l
LmFsdGVyZWRGbG9hdE51bWJlciA9IGZ1bmN0aW9uKG51bWJlciwgZXZlbnQpCit7CisgICAgdmFy
IGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8IGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7CisgICAgLy8gSWYgdGhlIG51bWJlciBpcyBuZWFy
IHplcm8gb3IgdGhlIG51bWJlciBpcyBvbmUgYW5kIHRoZSBkaXJlY3Rpb24gd2lsbCB0YWtlIGl0
IG5lYXIgemVyby4KKyAgICB2YXIgbnVtYmVyTmVhclplcm8gPSAobnVtYmVyIDwgMSAmJiBudW1i
ZXIgPiAtMSk7CisgICAgaWYgKG51bWJlciA9PT0gMSAmJiBldmVudC5rZXlJZGVudGlmaWVyID09
PSAiRG93biIpCisgICAgICAgIG51bWJlck5lYXJaZXJvID0gdHJ1ZTsKKyAgICBlbHNlIGlmIChu
dW1iZXIgPT09IC0xICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIpCisgICAgICAgIG51
bWJlck5lYXJaZXJvID0gdHJ1ZTsKKworICAgIHZhciByZXN1bHQ7CisgICAgaWYgKG51bWJlck5l
YXJaZXJvICYmIGV2ZW50LmFsdEtleSAmJiBhcnJvd0tleVByZXNzZWQpIHsKKyAgICAgICAgaWYg
KGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIikKKyAgICAgICAgICAgIHJlc3VsdCA9IE1h
dGguY2VpbChudW1iZXIgLSAxKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcmVzdWx0ID0g
TWF0aC5mbG9vcihudW1iZXIgKyAxKTsKKyAgICB9IGVsc2UgeworICAgICAgICAvLyBKdW1wIGJ5
IDEwIHdoZW4gc2hpZnQgaXMgZG93biBvciBqdW1wIGJ5IDAuMSB3aGVuIG5lYXIgemVybyBvciBB
bHQvT3B0aW9uIGlzIGRvd24uCisgICAgICAgIC8vIEFsc28ganVtcCBieSAxMCBmb3IgcGFnZSB1
cCBhbmQgZG93biwgb3IgYnkgMTAwIGlmIHNoaWZ0IGlzIGhlbGQgd2l0aCBhIHBhZ2Uga2V5Lgor
ICAgICAgICB2YXIgY2hhbmdlQW1vdW50ID0gMTsKKyAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5
ICYmICFhcnJvd0tleVByZXNzZWQpCisgICAgICAgICAgICBjaGFuZ2VBbW91bnQgPSAxMDA7Cisg
ICAgICAgIGVsc2UgaWYgKGV2ZW50LnNoaWZ0S2V5IHx8ICFhcnJvd0tleVByZXNzZWQpCisgICAg
ICAgICAgICBjaGFuZ2VBbW91bnQgPSAxMDsKKyAgICAgICAgZWxzZSBpZiAoZXZlbnQuYWx0S2V5
IHx8IG51bWJlck5lYXJaZXJvKQorICAgICAgICAgICAgY2hhbmdlQW1vdW50ID0gMC4xOworCisg
ICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgfHwgZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIlBhZ2VEb3duIikKKyAgICAgICAgICAgIGNoYW5nZUFtb3VudCAqPSAtMTsK
KworICAgICAgICAvLyBNYWtlIHRoZSBuZXcgbnVtYmVyIGFuZCBjb25zdHJhaW4gaXQgdG8gYSBw
cmVjaXNpb24gb2YgNiwgdGhpcyBtYXRjaGVzIG51bWJlcnMgdGhlIGVuZ2luZSByZXR1cm5zLgor
ICAgICAgICAvLyBVc2UgdGhlIE51bWJlciBjb25zdHJ1Y3RvciB0byBmb3JnZXQgdGhlIGZpeGVk
IHByZWNpc2lvbiwgc28gMS4xMDAwMDAgd2lsbCBwcmludCBhcyAxLjEuCisgICAgICAgIHJlc3Vs
dCA9IE51bWJlcigobnVtYmVyICsgY2hhbmdlQW1vdW50KS50b0ZpeGVkKDYpKTsKKyAgICB9CisK
KyAgICByZXR1cm4gcmVzdWx0OworfQorCitXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUu
YWx0ZXJlZEhleE51bWJlciA9IGZ1bmN0aW9uKGhleFN0cmluZywgZXZlbnQpCit7CisgICAgdmFy
IG51bWJlciA9IHBhcnNlSW50KGhleFN0cmluZywgMTYpOworICAgIGlmIChpc05hTihudW1iZXIp
IHx8ICFpc0Zpbml0ZShudW1iZXIpKQorICAgICAgICByZXR1cm4gaGV4U3RyaW5nOworCisgICAg
dmFyIG1heFZhbHVlID0gTWF0aC5wb3coMTYsIGhleFN0cmluZy5sZW5ndGgpIC0gMTsKKyAgICB2
YXIgYXJyb3dLZXlQcmVzc2VkID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIgfHwgZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKTsKKworICAgIHZhciBkZWx0YTsKKyAgICBpZiAo
YXJyb3dLZXlQcmVzc2VkKQorICAgICAgICBkZWx0YSA9IChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiVXAiKSA/IDEgOiAtMTsKKyAgICBlbHNlCisgICAgICAgIGRlbHRhID0gKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJQYWdlVXAiKSA/IDE2IDogLTE2OworCisgICAgaWYgKGV2ZW50LnNoaWZ0
S2V5KQorICAgICAgICBkZWx0YSAqPSAxNjsKKworICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyBk
ZWx0YTsKKyAgICBpZiAocmVzdWx0IDwgMCkKKyAgICAgICAgcmVzdWx0ID0gMDsgLy8gQ29sb3Ig
aGV4IHZhbHVlcyBhcmUgbmV2ZXIgbmVnYXRpdmUsIHNvIGNsYW1wIHRvIDAuCisgICAgZWxzZSBp
ZiAocmVzdWx0ID4gbWF4VmFsdWUpCisgICAgICAgIHJldHVybiBoZXhTdHJpbmc7CisKKyAgICAv
LyBFbnN1cmUgdGhlIHJlc3VsdCBsZW5ndGggaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIGhl
eCB2YWx1ZS4KKyAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKDE2KS50b1Vw
cGVyQ2FzZSgpOworICAgIGZvciAodmFyIGkgPSAwLCBsZW5ndGhEZWx0YSA9IGhleFN0cmluZy5s
ZW5ndGggLSByZXN1bHRTdHJpbmcubGVuZ3RoOyBpIDwgbGVuZ3RoRGVsdGE7ICsraSkKKyAgICAg
ICAgcmVzdWx0U3RyaW5nID0gIjAiICsgcmVzdWx0U3RyaW5nOworICAgIHJldHVybiByZXN1bHRT
dHJpbmc7Cit9LAorCiBXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUucHJvdG90eXBlID0g
ewogICAgIF9jb250ZXh0TWVudUV2ZW50RmlyZWQ6IGZ1bmN0aW9uKGV2ZW50KQogICAgIHsKQEAg
LTE2MDksNyArMTY3OCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQu
cHJvdG90eXBlID0gewogICAgICAgICAgICAgcmV0dXJuICJtb3ZlLWZvcndhcmQiOwogICAgICAg
ICB9CiAKLSAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5pc01vZGlmeWluZ1N0eWxlID0gdHJ1ZTsK
KyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5zdGFydEVkaXRpbmdTdHlsZSgp
OwogICAgICAgICBXZWJJbnNwZWN0b3Iuc3RhcnRFZGl0aW5nKHNlbGVjdEVsZW1lbnQsIHsKICAg
ICAgICAgICAgIGNvbnRleHQ6IGNvbnRleHQsCiAgICAgICAgICAgICBjb21taXRIYW5kbGVyOiB0
aGlzLmVkaXRpbmdDb21taXR0ZWQuYmluZCh0aGlzKSwKQEAgLTE2NDksNyArMTcxOCw3IEBAIFdl
Ykluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAg
ICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkgewogICAgICAgICAgICAgcHJlZml4ID0g
bWF0Y2hlc1sxXTsKICAgICAgICAgICAgIHN1ZmZpeCA9IG1hdGNoZXNbM107Ci0gICAgICAgICAg
ICBudW1iZXIgPSB0aGlzLl9hbHRlcmVkSGV4TnVtYmVyKG1hdGNoZXNbMl0sIGV2ZW50KTsKKyAg
ICAgICAgICAgIG51bWJlciA9IFdlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVk
SGV4TnVtYmVyKG1hdGNoZXNbMl0sIGV2ZW50KTsKIAogICAgICAgICAgICAgcmVwbGFjZW1lbnRT
dHJpbmcgPSBwcmVmaXggKyBudW1iZXIgKyBzdWZmaXg7CiAgICAgICAgIH0gZWxzZSB7CkBAIC0x
NjU3LDcgKzE3MjYsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnBy
b3RvdHlwZSA9IHsKICAgICAgICAgICAgIGlmIChtYXRjaGVzICYmIG1hdGNoZXMubGVuZ3RoKSB7
CiAgICAgICAgICAgICAgICAgcHJlZml4ID0gbWF0Y2hlc1sxXTsKICAgICAgICAgICAgICAgICBz
dWZmaXggPSBtYXRjaGVzWzNdOwotICAgICAgICAgICAgICAgIG51bWJlciA9IHRoaXMuX2FsdGVy
ZWRGbG9hdE51bWJlcihwYXJzZUZsb2F0KG1hdGNoZXNbMl0pLCBldmVudCk7CisgICAgICAgICAg
ICAgICAgbnVtYmVyID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFsdGVyZWRGbG9h
dE51bWJlcihwYXJzZUZsb2F0KG1hdGNoZXNbMl0pLCBldmVudCk7CiAKICAgICAgICAgICAgICAg
ICByZXBsYWNlbWVudFN0cmluZyA9IHByZWZpeCArIG51bWJlciArIHN1ZmZpeDsKICAgICAgICAg
ICAgIH0KQEAgLTE2OTAsNzUgKzE3NTksNiBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRy
ZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgfQogICAgIH0sCiAKLSAgICBfYWx0ZXJl
ZEZsb2F0TnVtYmVyOiBmdW5jdGlvbihudW1iZXIsIGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFy
IGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8IGV2ZW50
LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7Ci0gICAgICAgIC8vIElmIHRoZSBudW1iZXIgaXMg
bmVhciB6ZXJvIG9yIHRoZSBudW1iZXIgaXMgb25lIGFuZCB0aGUgZGlyZWN0aW9uIHdpbGwgdGFr
ZSBpdCBuZWFyIHplcm8uCi0gICAgICAgIHZhciBudW1iZXJOZWFyWmVybyA9IChudW1iZXIgPCAx
ICYmIG51bWJlciA+IC0xKTsKLSAgICAgICAgaWYgKG51bWJlciA9PT0gMSAmJiBldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiRG93biIpCi0gICAgICAgICAgICBudW1iZXJOZWFyWmVybyA9IHRydWU7
Ci0gICAgICAgIGVsc2UgaWYgKG51bWJlciA9PT0gLTEgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9
PT0gIlVwIikKLSAgICAgICAgICAgIG51bWJlck5lYXJaZXJvID0gdHJ1ZTsKLQotICAgICAgICB2
YXIgcmVzdWx0OwotICAgICAgICBpZiAobnVtYmVyTmVhclplcm8gJiYgZXZlbnQuYWx0S2V5ICYm
IGFycm93S2V5UHJlc3NlZCkgewotICAgICAgICAgICAgaWYgKGV2ZW50LmtleUlkZW50aWZpZXIg
PT09ICJEb3duIikKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBNYXRoLmNlaWwobnVtYmVyIC0g
MSk7Ci0gICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgcmVzdWx0ID0gTWF0aC5mbG9v
cihudW1iZXIgKyAxKTsKLSAgICAgICAgfSBlbHNlIHsKLSAgICAgICAgICAgIC8vIEp1bXAgYnkg
MTAgd2hlbiBzaGlmdCBpcyBkb3duIG9yIGp1bXAgYnkgMC4xIHdoZW4gbmVhciB6ZXJvIG9yIEFs
dC9PcHRpb24gaXMgZG93bi4KLSAgICAgICAgICAgIC8vIEFsc28ganVtcCBieSAxMCBmb3IgcGFn
ZSB1cCBhbmQgZG93biwgb3IgYnkgMTAwIGlmIHNoaWZ0IGlzIGhlbGQgd2l0aCBhIHBhZ2Uga2V5
LgotICAgICAgICAgICAgdmFyIGNoYW5nZUFtb3VudCA9IDE7Ci0gICAgICAgICAgICBpZiAoZXZl
bnQuc2hpZnRLZXkgJiYgIWFycm93S2V5UHJlc3NlZCkKLSAgICAgICAgICAgICAgICBjaGFuZ2VB
bW91bnQgPSAxMDA7Ci0gICAgICAgICAgICBlbHNlIGlmIChldmVudC5zaGlmdEtleSB8fCAhYXJy
b3dLZXlQcmVzc2VkKQotICAgICAgICAgICAgICAgIGNoYW5nZUFtb3VudCA9IDEwOwotICAgICAg
ICAgICAgZWxzZSBpZiAoZXZlbnQuYWx0S2V5IHx8IG51bWJlck5lYXJaZXJvKQotICAgICAgICAg
ICAgICAgIGNoYW5nZUFtb3VudCA9IDAuMTsKLQotICAgICAgICAgICAgaWYgKGV2ZW50LmtleUlk
ZW50aWZpZXIgPT09ICJEb3duIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZURvd24i
KQotICAgICAgICAgICAgICAgIGNoYW5nZUFtb3VudCAqPSAtMTsKLQotICAgICAgICAgICAgLy8g
TWFrZSB0aGUgbmV3IG51bWJlciBhbmQgY29uc3RyYWluIGl0IHRvIGEgcHJlY2lzaW9uIG9mIDYs
IHRoaXMgbWF0Y2hlcyBudW1iZXJzIHRoZSBlbmdpbmUgcmV0dXJucy4KLSAgICAgICAgICAgIC8v
IFVzZSB0aGUgTnVtYmVyIGNvbnN0cnVjdG9yIHRvIGZvcmdldCB0aGUgZml4ZWQgcHJlY2lzaW9u
LCBzbyAxLjEwMDAwMCB3aWxsIHByaW50IGFzIDEuMS4KLSAgICAgICAgICAgIHJlc3VsdCA9IE51
bWJlcigobnVtYmVyICsgY2hhbmdlQW1vdW50KS50b0ZpeGVkKDYpKTsKLSAgICAgICAgfQotCi0g
ICAgICAgIHJldHVybiByZXN1bHQ7Ci0gICAgfSwKLQotICAgIF9hbHRlcmVkSGV4TnVtYmVyOiBm
dW5jdGlvbihoZXhTdHJpbmcsIGV2ZW50KQotICAgIHsKLSAgICAgICAgdmFyIG51bWJlciA9IHBh
cnNlSW50KGhleFN0cmluZywgMTYpOwotICAgICAgICBpZiAoaXNOYU4obnVtYmVyKSB8fCAhaXNG
aW5pdGUobnVtYmVyKSkKLSAgICAgICAgICAgIHJldHVybiBoZXhTdHJpbmc7Ci0KLSAgICAgICAg
dmFyIG1heFZhbHVlID0gTWF0aC5wb3coMTYsIGhleFN0cmluZy5sZW5ndGgpIC0gMTsKLSAgICAg
ICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8
IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJEb3duIik7Ci0KLSAgICAgICAgdmFyIGRlbHRhOwot
ICAgICAgICBpZiAoYXJyb3dLZXlQcmVzc2VkKQotICAgICAgICAgICAgZGVsdGEgPSAoZXZlbnQu
a2V5SWRlbnRpZmllciA9PT0gIlVwIikgPyAxIDogLTE7Ci0gICAgICAgIGVsc2UKLSAgICAgICAg
ICAgIGRlbHRhID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlVXAiKSA/IDE2IDogLTE2
OwotCi0gICAgICAgIGlmIChldmVudC5zaGlmdEtleSkKLSAgICAgICAgICAgIGRlbHRhICo9IDE2
OwotCi0gICAgICAgIHZhciByZXN1bHQgPSBudW1iZXIgKyBkZWx0YTsKLSAgICAgICAgaWYgKHJl
c3VsdCA8IDApCi0gICAgICAgICAgICByZXN1bHQgPSAwOyAvLyBDb2xvciBoZXggdmFsdWVzIGFy
ZSBuZXZlciBuZWdhdGl2ZSwgc28gY2xhbXAgdG8gMC4KLSAgICAgICAgZWxzZSBpZiAocmVzdWx0
ID4gbWF4VmFsdWUpCi0gICAgICAgICAgICByZXR1cm4gaGV4U3RyaW5nOwotCi0gICAgICAgIC8v
IEVuc3VyZSB0aGUgcmVzdWx0IGxlbmd0aCBpcyB0aGUgc2FtZSBhcyB0aGUgb3JpZ2luYWwgaGV4
IHZhbHVlLgotICAgICAgICB2YXIgcmVzdWx0U3RyaW5nID0gcmVzdWx0LnRvU3RyaW5nKDE2KS50
b1VwcGVyQ2FzZSgpOwotICAgICAgICBmb3IgKHZhciBpID0gMCwgbGVuZ3RoRGVsdGEgPSBoZXhT
dHJpbmcubGVuZ3RoIC0gcmVzdWx0U3RyaW5nLmxlbmd0aDsgaSA8IGxlbmd0aERlbHRhOyArK2kp
Ci0gICAgICAgICAgICByZXN1bHRTdHJpbmcgPSAiMCIgKyByZXN1bHRTdHJpbmc7Ci0gICAgICAg
IHJldHVybiByZXN1bHRTdHJpbmc7Ci0gICAgfSwKLQogICAgIGVkaXRpbmdFbmRlZDogZnVuY3Rp
b24oY29udGV4dCkKICAgICB7CiAgICAgICAgIHRoaXMuaGFzQ2hpbGRyZW4gPSBjb250ZXh0Lmhh
c0NoaWxkcmVuOwpAQCAtMTc3MSw3ICsxNzcxLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICBlZGl0ZWRFbGVtZW50LnBh
cmVudEVsZW1lbnQucmVtb3ZlU3R5bGVDbGFzcygiY2hpbGQtZWRpdGluZyIpOwogCiAgICAgICAg
IGRlbGV0ZSB0aGlzLm9yaWdpbmFsUHJvcGVydHlUZXh0OwotICAgICAgICBkZWxldGUgdGhpcy5f
cGFyZW50UGFuZS5pc01vZGlmeWluZ1N0eWxlOworICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxz
LmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOwogICAgIH0sCiAKICAgICBlZGl0aW5nQ2FuY2Vs
bGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQpAQCAtMTgyMCw3ICsxODIwLDcgQEAgV2Vi
SW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAg
IHZhciBpc0RpcnR5VmlhUGFzdGUgPSBpc0RhdGFQYXN0ZWQgJiYgKHRoaXMubmFtZUVsZW1lbnQu
dGV4dENvbnRlbnQgIT09IGNvbnRleHQub3JpZ2luYWxOYW1lIHx8IHRoaXMudmFsdWVFbGVtZW50
LnRleHRDb250ZW50ICE9PSBjb250ZXh0Lm9yaWdpbmFsVmFsdWUpOwogICAgICAgICB2YXIgc2hv
dWxkQ29tbWl0TmV3UHJvcGVydHkgPSB0aGlzLl9uZXdQcm9wZXJ0eSAmJiAobW92ZVRvT3RoZXIg
fHwgKCFtb3ZlRGlyZWN0aW9uICYmICFpc0VkaXRpbmdOYW1lKSB8fCAoaXNFZGl0aW5nTmFtZSAm
JiBibGFua0lucHV0KSk7CiAgICAgICAgIGlmICgoKHVzZXJJbnB1dCAhPT0gcHJldmlvdXNDb250
ZW50IHx8IGlzRGlydHlWaWFQYXN0ZSkgJiYgIXRoaXMuX25ld1Byb3BlcnR5KSB8fCBzaG91bGRD
b21taXROZXdQcm9wZXJ0eSkgewotICAgICAgICAgICAgdGhpcy5fcGFyZW50UGFuZS5pc01vZGlm
eWluZ1N0eWxlID0gdHJ1ZTsKKyAgICAgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVu
dHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKICAgICAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuc2Vj
dGlvbi5fYWZ0ZXJVcGRhdGUgPSBtb3ZlVG9OZXh0Q2FsbGJhY2suYmluZCh0aGlzLCB0aGlzLl9u
ZXdQcm9wZXJ0eSwgIWJsYW5rSW5wdXQsIHRoaXMudHJlZU91dGxpbmUuc2VjdGlvbik7CiAgICAg
ICAgICAgICB2YXIgcHJvcGVydHlUZXh0OwogICAgICAgICAgICAgaWYgKGJsYW5rSW5wdXQgfHwg
KHRoaXMuX25ld1Byb3BlcnR5ICYmIC9eXHMqJC8udGVzdCh0aGlzLnZhbHVlRWxlbWVudC50ZXh0
Q29udGVudCkpKQpAQCAtMTg0Myw3ICsxODQzLDcgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVy
dHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgIC8vIFRoZSBDYWxsYmFjayB0byBz
dGFydCBlZGl0aW5nIHRoZSBuZXh0L3ByZXZpb3VzIHByb3BlcnR5L3NlbGVjdG9yLgogICAgICAg
ICBmdW5jdGlvbiBtb3ZlVG9OZXh0Q2FsbGJhY2soYWxyZWFkeU5ldywgdmFsdWVDaGFuZ2VkLCBz
ZWN0aW9uKQogICAgICAgICB7Ci0gICAgICAgICAgICBkZWxldGUgdGhpcy5fcGFyZW50UGFuZS5p
c01vZGlmeWluZ1N0eWxlOworICAgICAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50
cy5lbmRFZGl0aW5nU3R5bGUoKTsKIAogICAgICAgICAgICAgaWYgKCFtb3ZlRGlyZWN0aW9uKQog
ICAgICAgICAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9m
cm9udC1lbmQvaW5zcGVjdG9yLmNzcwppbmRleCBkNmZlZjg5Li42ZWZmNjEwIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCkBAIC0xNzky
LDggKzE3OTIsMTMgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0
bGUgewogICAgIHBhZGRpbmctcmlnaHQ6IDJweDsKIH0KIAorLm1ldHJpY3MgLmhvdmVyZWQgPiAu
bGFiZWwgeworICAgIGJvcmRlcjogMXB4IHNvbGlkIGJsYWNrOworfQorCiAubWV0cmljcyAucG9z
aXRpb24gewogICAgIGJvcmRlcjogMXB4IHJnYig2NiUsIDY2JSwgNjYlKSBkb3R0ZWQ7CisgICAg
YmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAg
IHRleHQtYWxpZ246IGNlbnRlcjsKICAgICBwYWRkaW5nOiAzcHg7CkBAIC0xODAyLDYgKzE4MDcs
NyBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAKIC5t
ZXRyaWNzIC5tYXJnaW4gewogICAgIGJvcmRlcjogMXB4IGRhc2hlZDsKKyAgICBiYWNrZ3JvdW5k
LWNvbG9yOiB3aGl0ZTsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgdGV4dC1hbGln
bjogY2VudGVyOwogICAgIHZlcnRpY2FsLWFsaWduOiBtaWRkbGU7CkBAIC0xODA5LDggKzE4MTUs
MTMgQEAgYm9keS5wbGF0Zm9ybS13aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAg
IG1hcmdpbjogM3B4OwogfQogCisubWV0cmljcyAubWFyZ2luLmhvdmVyZWQgeworICAgIGJhY2tn
cm91bmQtY29sb3I6IHJnYigxMzksIDE4MiwgMjIxKTsKK30KKwogLm1ldHJpY3MgLmJvcmRlciB7
CiAgICAgYm9yZGVyOiAxcHggYmxhY2sgc29saWQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hp
dGU7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsK
ICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpAQCAtMTgxOCw4ICsxODI5LDEzIEBAIGJvZHku
cGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBtYXJnaW46IDNw
eDsKIH0KIAorLm1ldHJpY3MgLmJvcmRlci5ob3ZlcmVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9y
OiByZ2IoMTU3LCAxOTMsIDIyNik7Cit9CisKIC5tZXRyaWNzIC5wYWRkaW5nIHsKICAgICBib3Jk
ZXI6IDFweCBncmV5IGRhc2hlZDsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiB3aGl0ZTsKICAgICBk
aXNwbGF5OiBpbmxpbmUtYmxvY2s7CiAgICAgdGV4dC1hbGlnbjogY2VudGVyOwogICAgIHZlcnRp
Y2FsLWFsaWduOiBtaWRkbGU7CkBAIC0xODI3LDkgKzE4NDMsMTQgQEAgYm9keS5wbGF0Zm9ybS13
aW5kb3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogICAgIG1hcmdpbjogM3B4OwogfQogCisu
bWV0cmljcyAucGFkZGluZy5ob3ZlcmVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTcz
LCAyMDQsIDIzMSk7Cit9CisKIC5tZXRyaWNzIC5jb250ZW50IHsKICAgICBwb3NpdGlvbjogc3Rh
dGljOwogICAgIGJvcmRlcjogMXB4IGdyZXkgc29saWQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjog
d2hpdGU7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwogICAgIHRleHQtYWxpZ246IGNlbnRl
cjsKICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpAQCAtMTg0MCw2ICsxODYxLDEwIEBAIGJv
ZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBvdmVyZmxv
dzogdmlzaWJsZTsKIH0KIAorLm1ldHJpY3MgLmNvbnRlbnQuaG92ZXJlZCB7CisgICAgYmFja2dy
b3VuZC1jb2xvcjogcmdiKDE5MCwgMjE0LCAyMzYpOworfQorCiAubWV0cmljcyAuY29udGVudCBz
cGFuIHsKICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpzCmluZGV4IGMwMmU4MTkuLjhiMjI4OTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9y
LmpzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvaW5zcGVjdG9yLmpz
CkBAIC0zMDUsNyArMzA1LDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKICAgICAgICAgICAgIGVy
cm9yV2FybmluZ0VsZW1lbnQudGl0bGUgPSBudWxsOwogICAgIH0sCiAKLSAgICBoaWdobGlnaHRE
T01Ob2RlOiBmdW5jdGlvbihub2RlSWQpCisgICAgaGlnaGxpZ2h0RE9NTm9kZTogZnVuY3Rpb24o
bm9kZUlkLCBtb2RlKQogICAgIHsKICAgICAgICAgaWYgKCJfaGlkZURPTU5vZGVIaWdobGlnaHRU
aW1lb3V0IiBpbiB0aGlzKSB7CiAgICAgICAgICAgICBjbGVhclRpbWVvdXQodGhpcy5faGlkZURP
TU5vZGVIaWdobGlnaHRUaW1lb3V0KTsKQEAgLTMxNyw3ICszMTcsNyBAQCB2YXIgV2ViSW5zcGVj
dG9yID0gewogCiAgICAgICAgIHRoaXMuX2hpZ2hsaWdodGVkRE9NTm9kZUlkID0gbm9kZUlkOwog
ICAgICAgICBpZiAobm9kZUlkKQotICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0RE9NTm9k
ZShub2RlSWQpOworICAgICAgICAgICAgRE9NQWdlbnQuaGlnaGxpZ2h0RE9NTm9kZShub2RlSWQs
IG1vZGUpOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICBET01BZ2VudC5oaWRlRE9NTm9kZUhp
Z2hsaWdodCgpOwogICAgIH0sCg==
</data>
<flag name="review"
          id="83086"
          type_id="1"
          status="-"
          setter="pfeldman"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>90357</attachid>
            <date>2011-04-20 10:19:01 -0700</date>
            <delta_ts>2011-04-20 10:22:51 -0700</delta_ts>
            <desc>[PATCH] Comments addressed</desc>
            <filename>metricsimprove.patch</filename>
            <type>text/plain</type>
            <size>39506</size>
            <attacher name="Alexander Pavlov (apavlov)">apavlov</attacher>
            
              <data encoding="base64">Y29tbWl0IDM5MWQwODI5YzdkY2U3NjcyMTFmOWYzOWEzNzExYzExMDIzNTFmNzcKQXV0aG9yOiBB
bGV4YW5kZXIgUGF2bG92IDxhcGF2bG92QGNocm9taXVtLm9yZz4KRGF0ZTogICBNb24gQXByIDE4
IDIxOjMzOjE3IDIwMTEgKzA0MDAKCiAgICBGaXgKCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggODVhNWI3My4uMzQx
YmMwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY2IEBACisyMDExLTA0LTIwICBBbGV4YW5kZXIg
UGF2bG92ICA8YXBhdmxvdkBjaHJvbWl1bS5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTWV0cmljcyBwYW5lIGVkaXRp
bmcgYW5kIHZpc3VhbCBmZWVkYmFjayBpbXByb3ZlbWVudHMKKyAgICAgICAgaHR0cHM6Ly9idWdz
LndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTU4OTkyCisKKyAgICAgICAgQWRkZWQgdmlzdWFs
IGZlZWRiYWNrIHdoZW4gaG92ZXJpbmcgb3ZlciB0aGUgYm94IG1vZGVsIGNvbXBvbmVudHMgb2Yg
dGhlIE1ldHJpY3MgcGFuZQorICAgICAgICBhbmQgaGFuZGxpbmcgb2YgdGhlIFtQYWdlXVVwL0Rv
d24ga2V5cyB3aGVuIGVkaXRpbmcgdGhlIGJveCBtb2RlbCB2YWx1ZXMuCisKKyAgICAgICAgKiBp
bnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRPTU5v
ZGVIaWdobGlnaHRlcjo6RHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAqIGluc3BlY3Rvci9E
T01Ob2RlSGlnaGxpZ2h0ZXIuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yLmpzb246
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0KToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRET01Ob2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6ZHJhd05vZGVIaWdobGlnaHQpOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1l
bmQvQ1NTU3R5bGVNb2RlbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5DU1NQcm9wZXJ0eS5w
cm90b3R5cGUuc2V0VGV4dC5jYWxsYmFjayk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJv
cGVydHkucHJvdG90eXBlLnNldFRleHQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLkNTU1Byb3Bl
cnR5LnByb3RvdHlwZS5zZXRWYWx1ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuQ1NTUHJvcGVy
dHkucHJvdG90eXBlLnNldERpc2FibGVkLmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rv
ci5DU1NQcm9wZXJ0eS5wcm90b3R5cGUuc2V0RGlzYWJsZWQpOgorICAgICAgICAqIGluc3BlY3Rv
ci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5FbGVt
ZW50c1BhbmVsLnByb3RvdHlwZS5zdGFydEVkaXRpbmdTdHlsZSk6CisgICAgICAgIChXZWJJbnNw
ZWN0b3IuRWxlbWVudHNQYW5lbC5wcm90b3R5cGUuZW5kRWRpdGluZ1N0eWxlKToKKyAgICAgICAg
KFdlYkluc3BlY3Rvci5FbGVtZW50c1BhbmVsLnByb3RvdHlwZS5fYXR0cmlidXRlc1VwZGF0ZWQp
OgorICAgICAgICAqIGluc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzOgor
ICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZSk6CisgICAgICAgIChXZWJJ
bnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGlnaGxpZ2h0RE9NTm9kZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5faGln
aGxpZ2h0RE9NTm9kZS5nZXRCb3hSZWN0YW5nbGVFbGVtZW50KToKKyAgICAgICAgKFdlYkluc3Bl
Y3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLl91cGRhdGUuY3JlYXRlQm94UGFydEVs
ZW1lbnQpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5
cGUuX3VwZGF0ZSk6CisgICAgICAgIChXZWJJbnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnBy
b3RvdHlwZS5zdGFydEVkaXRpbmcpOgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRl
YmFyUGFuZS5wcm90b3R5cGUuX2hhbmRsZUtleURvd24pOgorICAgICAgICAoV2ViSW5zcGVjdG9y
Lk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuZWRpdGluZ0VuZGVkKToKKyAgICAgICAgKFdl
Ykluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlLmVkaXRpbmdDYW5jZWxsZWQp
OgorICAgICAgICAoV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUuX2Fw
cGx5VXNlcklucHV0LmNhbGxiYWNrKToKKyAgICAgICAgKFdlYkluc3BlY3Rvci5NZXRyaWNzU2lk
ZWJhclBhbmUucHJvdG90eXBlLl9hcHBseVVzZXJJbnB1dCk6CisgICAgICAgIChXZWJJbnNwZWN0
b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZS5lZGl0aW5nQ29tbWl0dGVkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzOgorICAgICAgICAo
V2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFsdGVyZWRGbG9hdE51bWJlcik6CisgICAg
ICAgIChXZWJJbnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlcik6Cisg
ICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSk6
CisgICAgICAgIChXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlw
ZS5lbGVtZW50LnVzZXJJbnB1dC5wcmV2aW91c0NvbnRlbnQuY29udGV4dC5tb3ZlRGlyZWN0aW9u
KToKKyAgICAgICAgKiBpbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3M6CisgICAgICAg
ICgubWV0cmljcyAuaG92ZXJlZCA+IC5sYWJlbCk6CisgICAgICAgICgubWV0cmljcyAucG9zaXRp
b24pOgorICAgICAgICAoLm1ldHJpY3MgLm1hcmdpbik6CisgICAgICAgICgubWV0cmljcyAubWFy
Z2luLmhvdmVyZWQpOgorICAgICAgICAoLm1ldHJpY3MgLmJvcmRlcik6CisgICAgICAgICgubWV0
cmljcyAuYm9yZGVyLmhvdmVyZWQpOgorICAgICAgICAoLm1ldHJpY3MgLnBhZGRpbmcpOgorICAg
ICAgICAoLm1ldHJpY3MgLnBhZGRpbmcuaG92ZXJlZCk6CisgICAgICAgICgubWV0cmljcyAuY29u
dGVudCk6CisgICAgICAgICgubWV0cmljcyAuY29udGVudC5ob3ZlcmVkKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qczoKKyAgICAgICAgKFdlYkluc3BlY3Rvci5o
aWdobGlnaHRET01Ob2RlKToKKwogMjAxMS0wNC0xOCAgRG9taW5pYyBDb29uZXkgIDxkb21pbmlj
Y0BjaHJvbWl1bS5vcmc+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGltaXRyaSBHbGF6a292Lgpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0RPTU5vZGVIaWdobGlnaHRlci5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmNwcAppbmRl
eCA0MTYwOWQ4Li45YzdhMGI4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
RE9NTm9kZUhpZ2hsaWdodGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9N
Tm9kZUhpZ2hsaWdodGVyLmNwcApAQCAtOTEsMjEgKzkxLDMwIEBAIHZvaWQgZHJhd091dGxpbmVk
UXVhZFdpdGhDbGlwKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBx
dWFkLCBjCiAgICAgY29udGV4dC5yZXN0b3JlKCk7CiB9CiAKLXZvaWQgZHJhd0hpZ2hsaWdodEZv
ckJveChHcmFwaGljc0NvbnRleHQmIGNvbnRleHQsIGNvbnN0IEZsb2F0UXVhZCYgY29udGVudFF1
YWQsIGNvbnN0IEZsb2F0UXVhZCYgcGFkZGluZ1F1YWQsIGNvbnN0IEZsb2F0UXVhZCYgYm9yZGVy
UXVhZCwgY29uc3QgRmxvYXRRdWFkJiBtYXJnaW5RdWFkKQordm9pZCBkcmF3SGlnaGxpZ2h0Rm9y
Qm94KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY29uc3QgRmxvYXRRdWFkJiBjb250ZW50UXVh
ZCwgY29uc3QgRmxvYXRRdWFkJiBwYWRkaW5nUXVhZCwgY29uc3QgRmxvYXRRdWFkJiBib3JkZXJR
dWFkLCBjb25zdCBGbG9hdFF1YWQmIG1hcmdpblF1YWQsIERPTU5vZGVIaWdobGlnaHRlcjo6SGln
aGxpZ2h0TW9kZSBtb2RlKQogewogICAgIHN0YXRpYyBjb25zdCBDb2xvciBjb250ZW50Qm94Q29s
b3IoMTI1LCAxNzMsIDIxNywgMTI4KTsKICAgICBzdGF0aWMgY29uc3QgQ29sb3IgcGFkZGluZ0Jv
eENvbG9yKDEyNSwgMTczLCAyMTcsIDE2MCk7CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIGJvcmRl
ckJveENvbG9yKDEyNSwgMTczLCAyMTcsIDE5Mik7CiAgICAgc3RhdGljIGNvbnN0IENvbG9yIG1h
cmdpbkJveENvbG9yKDEyNSwgMTczLCAyMTcsIDIyOCk7CiAKLSAgICBpZiAobWFyZ2luUXVhZCAh
PSBib3JkZXJRdWFkKQorICAgIEZsb2F0UXVhZCBjbGlwUXVhZDsKKyAgICBpZiAobW9kZSA9PSBE
T01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1hcmdpbiB8fCAobW9kZSA9PSBET01Ob2RlSGln
aGxpZ2h0ZXI6OkhpZ2hsaWdodEFsbCAmJiBtYXJnaW5RdWFkICE9IGJvcmRlclF1YWQpKSB7CiAg
ICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBtYXJnaW5RdWFkLCBib3Jk
ZXJRdWFkLCBtYXJnaW5Cb3hDb2xvcik7Ci0gICAgaWYgKGJvcmRlclF1YWQgIT0gcGFkZGluZ1F1
YWQpCisgICAgICAgIGNsaXBRdWFkID0gYm9yZGVyUXVhZDsKKyAgICB9CisgICAgaWYgKG1vZGUg
PT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXIgfHwgKG1vZGUgPT0gRE9NTm9k
ZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgYm9yZGVyUXVhZCAhPSBwYWRkaW5nUXVhZCkp
IHsKICAgICAgICAgZHJhd091dGxpbmVkUXVhZFdpdGhDbGlwKGNvbnRleHQsIGJvcmRlclF1YWQs
IHBhZGRpbmdRdWFkLCBib3JkZXJCb3hDb2xvcik7Ci0gICAgaWYgKHBhZGRpbmdRdWFkICE9IGNv
bnRlbnRRdWFkKQorICAgICAgICBjbGlwUXVhZCA9IHBhZGRpbmdRdWFkOworICAgIH0KKyAgICBp
ZiAobW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmcgfHwgKG1vZGUg
PT0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRBbGwgJiYgcGFkZGluZ1F1YWQgIT0gY29u
dGVudFF1YWQpKSB7CiAgICAgICAgIGRyYXdPdXRsaW5lZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBw
YWRkaW5nUXVhZCwgY29udGVudFF1YWQsIHBhZGRpbmdCb3hDb2xvcik7Ci0KLSAgICBkcmF3T3V0
bGluZWRRdWFkKGNvbnRleHQsIGNvbnRlbnRRdWFkLCBjb250ZW50Qm94Q29sb3IpOworICAgICAg
ICBjbGlwUXVhZCA9IGNvbnRlbnRRdWFkOworICAgIH0KKyAgICBpZiAobW9kZSA9PSBET01Ob2Rl
SGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodENvbnRlbnQgfHwgbW9kZSA9PSBET01Ob2RlSGlnaGxpZ2h0
ZXI6OkhpZ2hsaWdodEFsbCkKKyAgICAgICAgZHJhd091dGxpbmVkUXVhZChjb250ZXh0LCBjb250
ZW50UXVhZCwgY29udGVudEJveENvbG9yKTsKKyAgICBlbHNlCisgICAgICAgIGRyYXdPdXRsaW5l
ZFF1YWRXaXRoQ2xpcChjb250ZXh0LCBjbGlwUXVhZCwgY2xpcFF1YWQsIGNvbnRlbnRCb3hDb2xv
cik7CiB9CiAKIHZvaWQgZHJhd0hpZ2hsaWdodEZvckxpbmVCb3hlc09yU1ZHUmVuZGVyZXIoR3Jh
cGhpY3NDb250ZXh0JiBjb250ZXh0LCBjb25zdCBWZWN0b3I8RmxvYXRRdWFkPiYgbGluZUJveFF1
YWRzKQpAQCAtMjEyLDggKzIyMSw5IEBAIHZvaWQgZHJhd0VsZW1lbnRUaXRsZShHcmFwaGljc0Nv
bnRleHQmIGNvbnRleHQsIE5vZGUqIG5vZGUsIGNvbnN0IEludFJlY3QmIGJvdW5kCiAKIG5hbWVz
cGFjZSBET01Ob2RlSGlnaGxpZ2h0ZXIgewogCi12b2lkIERyYXdOb2RlSGlnaGxpZ2h0KEdyYXBo
aWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSkKK3ZvaWQgRHJhd05vZGVIaWdobGlnaHQo
R3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBOb2RlKiBub2RlLCBIaWdobGlnaHRNb2RlIG1vZGUp
CiB7CisgICAgbm9kZS0+ZG9jdW1lbnQoKS0+dXBkYXRlTGF5b3V0SWdub3JlUGVuZGluZ1N0eWxl
c2hlZXRzKCk7CiAgICAgUmVuZGVyT2JqZWN0KiByZW5kZXJlciA9IG5vZGUtPnJlbmRlcmVyKCk7
CiAgICAgRnJhbWUqIGNvbnRhaW5pbmdGcmFtZSA9IG5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7
CiAKQEAgLTI2OCw3ICsyNzgsNyBAQCB2b2lkIERyYXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29u
dGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSkKIAogICAgICAgICB0aXRsZUFuY2hvckJveCA9IGFi
c01hcmdpblF1YWQuZW5jbG9zaW5nQm91bmRpbmdCb3goKTsKIAotICAgICAgICBkcmF3SGlnaGxp
Z2h0Rm9yQm94KGNvbnRleHQsIGFic0NvbnRlbnRRdWFkLCBhYnNQYWRkaW5nUXVhZCwgYWJzQm9y
ZGVyUXVhZCwgYWJzTWFyZ2luUXVhZCk7CisgICAgICAgIGRyYXdIaWdobGlnaHRGb3JCb3goY29u
dGV4dCwgYWJzQ29udGVudFF1YWQsIGFic1BhZGRpbmdRdWFkLCBhYnNCb3JkZXJRdWFkLCBhYnNN
YXJnaW5RdWFkLCBtb2RlKTsKICAgICB9IGVsc2UgaWYgKHJlbmRlcmVyLT5pc1JlbmRlcklubGlu
ZSgpIHx8IGlzU1ZHUmVuZGVyZXIpIHsKICAgICAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzaG93
IG1hcmdpbnMvcGFkZGluZy9ib3JkZXIgZm9yIGlubGluZXMuCiAgICAgICAgIFZlY3RvcjxGbG9h
dFF1YWQ+IGxpbmVCb3hRdWFkczsKQEAgLTI4NSw3ICsyOTUsOCBAQCB2b2lkIERyYXdOb2RlSGln
aGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgTm9kZSogbm9kZSkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgV2ViQ29yZTo6U2V0dGluZ3MqIHNldHRpbmdzID0gY29udGFpbmluZ0ZyYW1l
LT5zZXR0aW5ncygpOwotICAgIGRyYXdFbGVtZW50VGl0bGUoY29udGV4dCwgbm9kZSwgYm91bmRp
bmdCb3gsIHRpdGxlQW5jaG9yQm94LCBvdmVybGF5UmVjdCwgc2V0dGluZ3MpOworICAgIGlmICht
b2RlID09IERPTU5vZGVIaWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsKQorICAgICAgICBkcmF3RWxl
bWVudFRpdGxlKGNvbnRleHQsIG5vZGUsIGJvdW5kaW5nQm94LCB0aXRsZUFuY2hvckJveCwgb3Zl
cmxheVJlY3QsIHNldHRpbmdzKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgRE9NTm9kZUhpZ2hsaWdo
dGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdo
dGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvRE9NTm9kZUhpZ2hsaWdodGVyLmgKaW5k
ZXggMWRlMWVlYy4uZWU5ZThhMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0RPTU5vZGVIaWdobGlnaHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9ET01O
b2RlSGlnaGxpZ2h0ZXIuaApAQCAtMzYsNyArMzYsMTUgQEAgY2xhc3MgTm9kZTsKIAogbmFtZXNw
YWNlIERPTU5vZGVIaWdobGlnaHRlciB7CiAKLXZvaWQgRHJhd05vZGVIaWdobGlnaHQoR3JhcGhp
Y3NDb250ZXh0JiwgTm9kZSopOworZW51bSBIaWdobGlnaHRNb2RlIHsKKyAgICBIaWdobGlnaHRB
bGwsCisgICAgSGlnaGxpZ2h0Q29udGVudCwKKyAgICBIaWdobGlnaHRQYWRkaW5nLAorICAgIEhp
Z2hsaWdodEJvcmRlciwKKyAgICBIaWdobGlnaHRNYXJnaW4KK307CisKK3ZvaWQgRHJhd05vZGVI
aWdobGlnaHQoR3JhcGhpY3NDb250ZXh0JiwgTm9kZSosIEhpZ2hsaWdodE1vZGUgbW9kZSk7CiAK
IH0gLy8gbmFtZXNwYWNlIERPTU5vZGVIaWdobGlnaHRlcgogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yLmpzb24gYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yLmpzb24KaW5kZXggOWQ3MTY4Yi4uNWYxYWRkYSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvci5qc29uCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3IuanNvbgpAQCAtODk2LDcgKzg5Niw4IEBACiAgICAgICAgICAg
ICB7CiAgICAgICAgICAgICAgICAgIm5hbWUiOiAiaGlnaGxpZ2h0RE9NTm9kZSIsCiAgICAgICAg
ICAgICAgICAgInBhcmFtZXRlcnMiOiBbCi0gICAgICAgICAgICAgICAgICAgIHsgIm5hbWUiOiAi
bm9kZUlkIiwgInR5cGUiOiAiaW50ZWdlciIgfQorICAgICAgICAgICAgICAgICAgICB7ICJuYW1l
IjogIm5vZGVJZCIsICJ0eXBlIjogImludGVnZXIiIH0sCisgICAgICAgICAgICAgICAgICAgIHsg
Im5hbWUiOiAibW9kZSIsICJ0eXBlIjogInN0cmluZyIsICJlbnVtIjogWyJhbGwiLCAiY29udGVu
dCIsICJwYWRkaW5nIiwgImJvcmRlciIsICJtYXJnaW4iXSwgIm9wdGlvbmFsIjogdHJ1ZSwgImRl
c2NyaXB0aW9uIjogIlRoZSBib3ggbW9kZWwgY29tcG9uZW50KHMpIHRvIGhpZ2hsaWdodCAoZGVm
YXVsdDogXCJhbGxcIikuIiB9LAogICAgICAgICAgICAgICAgIF0KICAgICAgICAgICAgIH0sCiAg
ICAgICAgICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFn
ZW50LmNwcAppbmRleCBjYjc2MWQwLi40YTlkMjQzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKQEAgLTkyNiw3ICs5MjYsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50Ojptb3VzZURpZE1vdmVPdmVyRWxlbWVudChjb25zdCBIaXRUZXN0UmVz
dWx0JiByZXN1bHQsIHVucwogICAgICAgICBub2RlID0gbm9kZS0+cGFyZW50Tm9kZSgpOwogICAg
IGlmIChub2RlKSB7CiAgICAgICAgIEVycm9yU3RyaW5nIGVycm9yOwotICAgICAgICBoaWdobGln
aHQoJmVycm9yLCBub2RlKTsKKyAgICAgICAgaGlnaGxpZ2h0KCZlcnJvciwgbm9kZSwgImFsbCIp
OwogICAgIH0KIH0KIApAQCAtOTQ2LDI0ICs5NDYsMjUgQEAgdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyosIGJvb2wgZW5hYmxlZCkKICAgICBz
ZXRTZWFyY2hpbmdGb3JOb2RlKGVuYWJsZWQpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFnZW50
OjpoaWdobGlnaHQoRXJyb3JTdHJpbmcqLCBOb2RlKiBub2RlKQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6aGlnaGxpZ2h0KEVycm9yU3RyaW5nKiwgTm9kZSogbm9kZSwgY29uc3QgU3RyaW5nJiBt
b2RlKQogewogICAgIEFTU0VSVF9BUkcobm9kZSwgbm9kZSk7CiAgICAgbV9oaWdobGlnaHRlZE5v
ZGUgPSBub2RlOworICAgIG1faGlnaGxpZ2h0TW9kZSA9IG1vZGU7CiAgICAgbV9jbGllbnQtPmhp
Z2hsaWdodChub2RlKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RE9N
Tm9kZShFcnJvclN0cmluZyogZXJyb3IsIGludCBub2RlSWQpCit2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRET01Ob2RlKEVycm9yU3RyaW5nKiBlcnJvciwgaW50IG5vZGVJZCwgU3Ry
aW5nKiBtb2RlKQogewogICAgIGlmIChOb2RlKiBub2RlID0gbm9kZUZvcklkKG5vZGVJZCkpCi0g
ICAgICAgIGhpZ2hsaWdodChlcnJvciwgbm9kZSk7CisgICAgICAgIGhpZ2hsaWdodChlcnJvciwg
bm9kZSwgbW9kZSAmJiAhbW9kZS0+aXNFbXB0eSgpID8gKm1vZGUgOiAiYWxsIik7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nKiBlcnJvciwg
Y29uc3QgU3RyaW5nJiBmcmFtZUlkKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1faW5zdHJ1bWVu
dGluZ0FnZW50cy0+aW5zcGVjdG9yUmVzb3VyY2VBZ2VudCgpLT5mcmFtZUZvcklkKGZyYW1lSWQp
OwogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+b3duZXJFbGVtZW50KCkpCi0gICAgICAgIGhpZ2hs
aWdodChlcnJvciwgZnJhbWUtPm93bmVyRWxlbWVudCgpKTsKKyAgICAgICAgaGlnaGxpZ2h0KGVy
cm9yLCBmcmFtZS0+b3duZXJFbGVtZW50KCksICJhbGwiKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JE
T01BZ2VudDo6aGlkZUhpZ2hsaWdodChFcnJvclN0cmluZyopCkBAIC0xMzIzLDE0ICsxMzI0LDYg
QEAgTm9kZSogSW5zcGVjdG9yRE9NQWdlbnQ6Om5vZGVGb3JQYXRoKGNvbnN0IFN0cmluZyYgcGF0
aCkKICAgICByZXR1cm4gbm9kZTsKIH0KIAotUGFzc1JlZlB0cjxJbnNwZWN0b3JBcnJheT4gSW5z
cGVjdG9yRE9NQWdlbnQ6OnRvQXJyYXkoY29uc3QgVmVjdG9yPFN0cmluZz4mIGRhdGEpCi17Ci0g
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiByZXN1bHQgPSBJbnNwZWN0b3JBcnJheTo6Y3JlYXRl
KCk7Ci0gICAgZm9yICh1bnNpZ25lZCBpID0gMDsgaSA8IGRhdGEuc2l6ZSgpOyArK2kpCi0gICAg
ICAgIHJlc3VsdC0+cHVzaFN0cmluZyhkYXRhW2ldKTsKLSAgICByZXR1cm4gcmVzdWx0LnJlbGVh
c2UoKTsKLX0KLQogdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6b25NYXRjaEpvYnNUaW1lcihUaW1l
cjxJbnNwZWN0b3JET01BZ2VudD4qKQogewogICAgIGlmICghbV9wZW5kaW5nTWF0Y2hKb2JzLnNp
emUoKSkgewpAQCAtMTM5NSw3ICsxMzg4LDE2IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmRy
YXdOb2RlSGlnaGxpZ2h0KEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCkgY29uc3QKICAgICBpZiAo
IW1faGlnaGxpZ2h0ZWROb2RlKQogICAgICAgICByZXR1cm47CiAKLSAgICBET01Ob2RlSGlnaGxp
Z2h0ZXI6OkRyYXdOb2RlSGlnaGxpZ2h0KGNvbnRleHQsIG1faGlnaGxpZ2h0ZWROb2RlLmdldCgp
KTsKKyAgICBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodE1vZGUgbW9kZSA9IERPTU5vZGVI
aWdobGlnaHRlcjo6SGlnaGxpZ2h0QWxsOworICAgIGlmIChtX2hpZ2hsaWdodE1vZGUgPT0gImNv
bnRlbnQiKQorICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGlnaHRDb250
ZW50OworICAgIGVsc2UgaWYgKG1faGlnaGxpZ2h0TW9kZSA9PSAicGFkZGluZyIpCisgICAgICAg
IG1vZGUgPSBET01Ob2RlSGlnaGxpZ2h0ZXI6OkhpZ2hsaWdodFBhZGRpbmc7CisgICAgZWxzZSBp
ZiAobV9oaWdobGlnaHRNb2RlID09ICJib3JkZXIiKQorICAgICAgICBtb2RlID0gRE9NTm9kZUhp
Z2hsaWdodGVyOjpIaWdobGlnaHRCb3JkZXI7CisgICAgZWxzZSBpZiAobV9oaWdobGlnaHRNb2Rl
ID09ICJtYXJnaW4iKQorICAgICAgICBtb2RlID0gRE9NTm9kZUhpZ2hsaWdodGVyOjpIaWdobGln
aHRNYXJnaW47CisgICAgRE9NTm9kZUhpZ2hsaWdodGVyOjpEcmF3Tm9kZUhpZ2hsaWdodChjb250
ZXh0LCBtX2hpZ2hsaWdodGVkTm9kZS5nZXQoKSwgbW9kZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNl
IFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgK
aW5kZXggNTI2YmYzNC4uZDg5ODlhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBw
dXNoTm9kZVRvRnJvbnRlbmQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBp
bnQqIG5vZGVJZCk7CiAgICAgdm9pZCBwdXNoTm9kZUJ5UGF0aFRvRnJvbnRlbmQoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcmIHBhdGgsIGludCogbm9kZUlkKTsKICAgICB2b2lkIGhpZGVIaWdo
bGlnaHQoRXJyb3JTdHJpbmcqKTsKLSAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUoRXJyb3JTdHJp
bmcqLCBpbnQgbm9kZUlkKTsKKyAgICB2b2lkIGhpZ2hsaWdodERPTU5vZGUoRXJyb3JTdHJpbmcq
LCBpbnQgbm9kZUlkLCBTdHJpbmcqIG1vZGUpOwogICAgIHZvaWQgaGlkZURPTU5vZGVIaWdobGln
aHQoRXJyb3JTdHJpbmcqIGVycm9yKSB7IGhpZGVIaWdobGlnaHQoZXJyb3IpOyB9CiAgICAgdm9p
ZCBoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnJhbWVJZCk7CiAg
ICAgdm9pZCBoaWRlRnJhbWVIaWdobGlnaHQoRXJyb3JTdHJpbmcqIGVycm9yKSB7IGhpZGVIaWdo
bGlnaHQoZXJyb3IpOyB9CkBAIC0xNzgsNyArMTc4LDcgQEAgcHJpdmF0ZToKICAgICBJbnNwZWN0
b3JET01BZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiwgUGFnZSosIEluc3BlY3RvckNsaWVudCos
IEluc3BlY3RvclN0YXRlKiwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CiAKICAgICB2b2lkIHNl
dFNlYXJjaGluZ0Zvck5vZGUoYm9vbCBlbmFibGVkKTsKLSAgICB2b2lkIGhpZ2hsaWdodChFcnJv
clN0cmluZyosIE5vZGUqKTsKKyAgICB2b2lkIGhpZ2hsaWdodChFcnJvclN0cmluZyosIE5vZGUq
LCBjb25zdCBTdHJpbmcmIG1vZGUpOwogCiAgICAgLy8gTm9kZS1yZWxhdGVkIG1ldGhvZHMuCiAg
ICAgdHlwZWRlZiBIYXNoTWFwPFJlZlB0cjxOb2RlPiwgaW50PiBOb2RlVG9JZE1hcDsKQEAgLTIw
NCw3ICsyMDQsNiBAQCBwcml2YXRlOgogICAgIHZvaWQgcmVwb3J0Tm9kZXNBc1NlYXJjaFJlc3Vs
dHMoTGlzdEhhc2hTZXQ8Tm9kZSo+JiByZXN1bHRDb2xsZWN0b3IpOwogCiAgICAgTm9kZSogbm9k
ZUZvclBhdGgoY29uc3QgU3RyaW5nJiBwYXRoKTsKLSAgICBQYXNzUmVmUHRyPEluc3BlY3RvckFy
cmF5PiB0b0FycmF5KGNvbnN0IFZlY3RvcjxTdHJpbmc+JiBkYXRhKTsKIAogICAgIHZvaWQgZGlz
Y2FyZEJpbmRpbmdzKCk7CiAKQEAgLTIyOCw2ICsyMjcsNyBAQCBwcml2YXRlOgogICAgIEhhc2hT
ZXQ8UmVmUHRyPE5vZGU+ID4gbV9zZWFyY2hSZXN1bHRzOwogICAgIE93blB0cjxSZXZhbGlkYXRl
U3R5bGVBdHRyaWJ1dGVUYXNrPiBtX3JldmFsaWRhdGVTdHlsZUF0dHJUYXNrOwogICAgIFJlZlB0
cjxOb2RlPiBtX2hpZ2hsaWdodGVkTm9kZTsKKyAgICBTdHJpbmcgbV9oaWdobGlnaHRNb2RlOwog
ICAgIFJlZlB0cjxOb2RlPiBtX25vZGVUb0ZvY3VzOwogICAgIGJvb2wgbV9zZWFyY2hpbmdGb3JO
b2RlOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQv
Q1NTU3R5bGVNb2RlbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvQ1NT
U3R5bGVNb2RlbC5qcwppbmRleCA3NTk2YmM0Li4zNmMwMThjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0NTU1N0eWxlTW9kZWwuanMKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9DU1NTdHlsZU1vZGVsLmpzCkBAIC01MDksNyAr
NTA5LDcgQEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgICAgIH0KIAotICAgICAgICAgICAgICAg
IFdlYkluc3BlY3Rvci5jc3NNb2RlbC5fZmlyZVN0eWxlU2hlZXRDaGFuZ2VkKHN0eWxlLmlkLnN0
eWxlU2hlZXRJZCwgbWFqb3JDaGFuZ2UsIHVzZXJDYWxsYmFjay5iaW5kKHRoaXMsIHN0eWxlKSk7
CisgICAgICAgICAgICAgICAgV2ViSW5zcGVjdG9yLmNzc01vZGVsLl9maXJlU3R5bGVTaGVldENo
YW5nZWQoc3R5bGUuaWQuc3R5bGVTaGVldElkLCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrID8g
dXNlckNhbGxiYWNrLmJpbmQodGhpcywgc3R5bGUpIDogbnVsbCk7CiAgICAgICAgICAgICB9IGVs
c2UgewogICAgICAgICAgICAgICAgIGNvbnNvbGUuZXJyb3IoSlNPTi5zdHJpbmdpZnkoZXJyb3Ip
KTsKICAgICAgICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKQpAQCAtNTI0LDEwICs1MjQsMTAg
QEAgV2ViSW5zcGVjdG9yLkNTU1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKICAgICAgICAgQ1NTQWdl
bnQuc2V0UHJvcGVydHlUZXh0KHRoaXMub3duZXJTdHlsZS5pZCwgdGhpcy5pbmRleCwgcHJvcGVy
dHlUZXh0LCB0aGlzLmluZGV4IDwgdGhpcy5vd25lclN0eWxlLnBhc3RMYXN0U291cmNlUHJvcGVy
dHlJbmRleCgpLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKICAgICB9LAogCi0gICAgc2V0VmFsdWU6
IGZ1bmN0aW9uKG5ld1ZhbHVlLCB1c2VyQ2FsbGJhY2spCisgICAgc2V0VmFsdWU6IGZ1bmN0aW9u
KG5ld1ZhbHVlLCBtYWpvckNoYW5nZSwgdXNlckNhbGxiYWNrKQogICAgIHsKICAgICAgICAgdmFy
IHRleHQgPSB0aGlzLm5hbWUgKyAiOiAiICsgbmV3VmFsdWUgKyAodGhpcy5wcmlvcml0eSA/ICIg
ISIgKyB0aGlzLnByaW9yaXR5IDogIiIpICsgIjsiCi0gICAgICAgIHRoaXMuc2V0VGV4dCh0ZXh0
LCB1c2VyQ2FsbGJhY2spOworICAgICAgICB0aGlzLnNldFRleHQodGV4dCwgbWFqb3JDaGFuZ2Us
IHVzZXJDYWxsYmFjayk7CiAgICAgfSwKIAogICAgIHNldERpc2FibGVkOiBmdW5jdGlvbihkaXNh
YmxlZCwgdXNlckNhbGxiYWNrKQpAQCAtNTM5LDE1ICs1MzksMTYgQEAgV2ViSW5zcGVjdG9yLkNT
U1Byb3BlcnR5LnByb3RvdHlwZSA9IHsKIAogICAgICAgICBmdW5jdGlvbiBjYWxsYmFjayhlcnJv
ciwgc3R5bGVQYXlsb2FkKQogICAgICAgICB7Ci0gICAgICAgICAgICBpZiAoIXVzZXJDYWxsYmFj
aykKKyAgICAgICAgICAgIGlmIChlcnJvcikgeworICAgICAgICAgICAgICAgIGlmICh1c2VyQ2Fs
bGJhY2spCisgICAgICAgICAgICAgICAgICAgIHVzZXJDYWxsYmFjayhudWxsKTsKICAgICAgICAg
ICAgICAgICByZXR1cm47Ci0gICAgICAgICAgICBpZiAoZXJyb3IpCi0gICAgICAgICAgICAgICAg
dXNlckNhbGxiYWNrKG51bGwpOwotICAgICAgICAgICAgZWxzZSB7CisgICAgICAgICAgICB9Cisg
ICAgICAgICAgICBpZiAodXNlckNhbGxiYWNrKSB7CiAgICAgICAgICAgICAgICAgdmFyIHN0eWxl
ID0gV2ViSW5zcGVjdG9yLkNTU1N0eWxlRGVjbGFyYXRpb24ucGFyc2VQYXlsb2FkKHN0eWxlUGF5
bG9hZCk7CiAgICAgICAgICAgICAgICAgdXNlckNhbGxiYWNrKHN0eWxlKTsKLSAgICAgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLm93
bmVyU3R5bGUuaWQuc3R5bGVTaGVldElkLCBmYWxzZSk7CiAgICAgICAgICAgICB9CisgICAgICAg
ICAgICBXZWJJbnNwZWN0b3IuY3NzTW9kZWwuX2ZpcmVTdHlsZVNoZWV0Q2hhbmdlZCh0aGlzLm93
bmVyU3R5bGUuaWQuc3R5bGVTaGVldElkLCBmYWxzZSk7CiAgICAgICAgIH0KIAogICAgICAgICBD
U1NBZ2VudC50b2dnbGVQcm9wZXJ0eSh0aGlzLm93bmVyU3R5bGUuaWQsIHRoaXMuaW5kZXgsIGRp
c2FibGVkLCBjYWxsYmFjay5iaW5kKHRoaXMpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcyBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9mcm9udC1lbmQvRWxlbWVudHNQYW5lbC5qcwppbmRleCAxZjZmNTZiLi4zYzA1MjU4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL0VsZW1lbnRz
UGFuZWwuanMKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9FbGVtZW50
c1BhbmVsLmpzCkBAIC00MjEsMTMgKzQyMSwyMyBAQCBXZWJJbnNwZWN0b3IuRWxlbWVudHNQYW5l
bC5wcm90b3R5cGUgPSB7CiAgICAgICAgIHRoaXMudHJlZU91dGxpbmUuZm9jdXNlZERPTU5vZGUg
PSB4OwogICAgIH0sCiAKKyAgICBzdGFydEVkaXRpbmdTdHlsZTogZnVuY3Rpb24oKQorICAgIHsK
KyAgICAgICAgdGhpcy5faXNFZGl0aW5nU3R5bGUgPSB0cnVlOworICAgIH0sCisKKyAgICBlbmRF
ZGl0aW5nU3R5bGU6IGZ1bmN0aW9uKCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0aGlzLl9pc0Vk
aXRpbmdTdHlsZTsKKyAgICB9LAorCiAgICAgX2F0dHJpYnV0ZXNVcGRhdGVkOiBmdW5jdGlvbihl
dmVudCkKICAgICB7CiAgICAgICAgIHRoaXMucmVjZW50bHlNb2RpZmllZE5vZGVzLnB1c2goe25v
ZGU6IGV2ZW50LmRhdGEsIHVwZGF0ZWQ6IHRydWV9KTsKICAgICAgICAgaWYgKHRoaXMudmlzaWJs
ZSkKICAgICAgICAgICAgIHRoaXMuX3VwZGF0ZU1vZGlmaWVkTm9kZXNTb29uKCk7CiAKLSAgICAg
ICAgaWYgKCF0aGlzLnNpZGViYXJQYW5lcy5zdHlsZXMuaXNNb2RpZnlpbmdTdHlsZSAmJiBldmVu
dC5kYXRhID09PSB0aGlzLmZvY3VzZWRET01Ob2RlKQorICAgICAgICBpZiAoIXRoaXMuX2lzRWRp
dGluZ1N0eWxlICYmIGV2ZW50LmRhdGEgPT09IHRoaXMuZm9jdXNlZERPTU5vZGUpCiAgICAgICAg
ICAgICB0aGlzLl9zdHlsZVNoZWV0Q2hhbmdlZCgpOwogICAgIH0sCiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9mcm9udC1lbmQvTWV0cmljc1NpZGViYXJQYW5lLmpzIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMK
aW5kZXggYWZhMzgzOS4uZjIxZjNlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL2Zyb250LWVuZC9NZXRyaWNzU2lkZWJhclBhbmUuanMKQEAgLTI5LDcgKzI5LDYg
QEAKIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUgPSBmdW5jdGlvbigpCiB7CiAgICAg
V2ViSW5zcGVjdG9yLlNpZGViYXJQYW5lLmNhbGwodGhpcywgV2ViSW5zcGVjdG9yLlVJU3RyaW5n
KCJNZXRyaWNzIikpOwotICAgIHRoaXMuX2lubGluZVN0eWxlSWQgPSBudWxsOwogfQogCiBXZWJJ
bnNwZWN0b3IuTWV0cmljc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKQEAgLTc2LDYgKzc1LDU1
IEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90eXBlID0gewogICAgICAg
ICByZXR1cm4geyBsZWZ0OiBsZWZ0LCB0b3A6IHRvcCwgcmlnaHQ6IHJpZ2h0LCBib3R0b206IGJv
dHRvbSB9OwogICAgIH0sCiAKKyAgICBfaGlnaGxpZ2h0RE9NTm9kZTogZnVuY3Rpb24oc2hvd0hp
Z2hsaWdodCwgbW9kZSwgZXZlbnQpCisgICAgeworICAgICAgICBmdW5jdGlvbiBlbmNsb3NpbmdP
clNlbGZXaXRoQ2xhc3NJbkFycmF5KGVsZW1lbnQsIGNsYXNzTmFtZXMpCisgICAgICAgIHsKKyAg
ICAgICAgICAgIGZvciAodmFyIG5vZGUgPSBlbGVtZW50OyBub2RlICYmIG5vZGUgIT09IGVsZW1l
bnQub3duZXJEb2N1bWVudDsgbm9kZSA9IG5vZGUucGFyZW50Tm9kZSkgeworICAgICAgICAgICAg
ICAgIGlmIChub2RlLm5vZGVUeXBlID09PSBOb2RlLkVMRU1FTlRfTk9ERSkgeworICAgICAgICAg
ICAgICAgICAgICBmb3IgKHZhciBpID0gMDsgaSA8IGNsYXNzTmFtZXMubGVuZ3RoOyArK2kpIHsK
KyAgICAgICAgICAgICAgICAgICAgICAgIGlmIChub2RlLmhhc1N0eWxlQ2xhc3MoY2xhc3NOYW1l
c1tpXSkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIG5vZGU7CisgICAgICAg
ICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAg
ICAgICByZXR1cm4gbnVsbDsKKyAgICAgICAgfQorCisgICAgICAgIGZ1bmN0aW9uIGdldEJveFJl
Y3RhbmdsZUVsZW1lbnQoZWxlbWVudCkKKyAgICAgICAgeworICAgICAgICAgICAgaWYgKCFlbGVt
ZW50KQorICAgICAgICAgICAgICAgIHJldHVybiBudWxsOworICAgICAgICAgICAgcmV0dXJuIGVu
Y2xvc2luZ09yU2VsZldpdGhDbGFzc0luQXJyYXkoZWxlbWVudCwgWyJtZXRyaWNzIiwgIm1hcmdp
biIsICJib3JkZXIiLCAicGFkZGluZyIsICJjb250ZW50Il0pOworICAgICAgICB9CisKKyAgICAg
ICAgZXZlbnQuc3RvcFByb3BhZ2F0aW9uKCk7CisgICAgICAgIHZhciBmcm9tRWxlbWVudCA9IGdl
dEJveFJlY3RhbmdsZUVsZW1lbnQoZXZlbnQuZnJvbUVsZW1lbnQpOworICAgICAgICB2YXIgdG9F
bGVtZW50ID0gZ2V0Qm94UmVjdGFuZ2xlRWxlbWVudChldmVudC50b0VsZW1lbnQpOworCisgICAg
ICAgIGlmIChmcm9tRWxlbWVudCA9PT0gdG9FbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOwor
CisgICAgICAgIGlmIChzaG93SGlnaGxpZ2h0KSB7CisgICAgICAgICAgICAvLyBJbnRvIGVsZW1l
bnQuCisgICAgICAgICAgICBpZiAodGhpcy5ub2RlICYmIHRvRWxlbWVudCkKKyAgICAgICAgICAg
ICAgICB0b0VsZW1lbnQuYWRkU3R5bGVDbGFzcygiaG92ZXJlZCIpOworICAgICAgICAgICAgdmFy
IG5vZGVJZCA9IHRoaXMubm9kZSA/IHRoaXMubm9kZS5pZCA6IDA7CisgICAgICAgIH0gZWxzZSB7
CisgICAgICAgICAgICAvLyBPdXQgb2YgZWxlbWVudC4KKyAgICAgICAgICAgIGlmIChmcm9tRWxl
bWVudCkKKyAgICAgICAgICAgICAgICBmcm9tRWxlbWVudC5yZW1vdmVTdHlsZUNsYXNzKCJob3Zl
cmVkIik7CisgICAgICAgICAgICB2YXIgbm9kZUlkID0gMDsKKyAgICAgICAgfQorICAgICAgICBp
ZiAobm9kZUlkKSB7CisgICAgICAgICAgICBpZiAodGhpcy5faGlnaGxpZ2h0TW9kZSA9PT0gbW9k
ZSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICB0aGlzLl9oaWdobGlnaHRN
b2RlID0gbW9kZTsKKyAgICAgICAgfSBlbHNlCisgICAgICAgICAgICBkZWxldGUgdGhpcy5faGln
aGxpZ2h0TW9kZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUobm9kZUlk
LCBtb2RlKTsKKyAgICB9LAorCiAgICAgX3VwZGF0ZTogZnVuY3Rpb24oc3R5bGUpCiAgICAgewog
ICAgICAgICAvLyBVcGRhdGluZyB3aXRoIGNvbXB1dGVkIHN0eWxlLgpAQCAtOTYsNyArMTQ0LDcg
QEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFuZS5wcm90b3R5cGUgPSB7CiAgICAgICAg
ICAgICB2YXIgZWxlbWVudCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICAg
ICAgICAgZWxlbWVudC5jbGFzc05hbWUgPSBzaWRlOwogICAgICAgICAgICAgZWxlbWVudC50ZXh0
Q29udGVudCA9IHZhbHVlOwotICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJk
YmxjbGljayIsIHRoaXMuc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgZWxlbWVudCwgbmFtZSwgcHJv
cGVydHlOYW1lKSwgZmFsc2UpOworICAgICAgICAgICAgZWxlbWVudC5hZGRFdmVudExpc3RlbmVy
KCJkYmxjbGljayIsIHRoaXMuc3RhcnRFZGl0aW5nLmJpbmQodGhpcywgZWxlbWVudCwgbmFtZSwg
cHJvcGVydHlOYW1lLCBzdHlsZSksIGZhbHNlKTsKICAgICAgICAgICAgIHJldHVybiBlbGVtZW50
OwogICAgICAgICB9CiAKQEAgLTE2Nyw2ICsyMTUsOCBAQCBXZWJJbnNwZWN0b3IuTWV0cmljc1Np
ZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKIAogICAgICAgICAgICAgdmFyIGJveEVsZW1lbnQgPSBk
b2N1bWVudC5jcmVhdGVFbGVtZW50KCJkaXYiKTsKICAgICAgICAgICAgIGJveEVsZW1lbnQuY2xh
c3NOYW1lID0gbmFtZTsKKyAgICAgICAgICAgIGJveEVsZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigi
bW91c2VvdmVyIiwgdGhpcy5faGlnaGxpZ2h0RE9NTm9kZS5iaW5kKHRoaXMsIHRydWUsIG5hbWUp
LCBmYWxzZSk7CisgICAgICAgICAgICBib3hFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNl
b3V0IiwgdGhpcy5faGlnaGxpZ2h0RE9NTm9kZS5iaW5kKHRoaXMsIGZhbHNlLCAiIiksIGZhbHNl
KTsKIAogICAgICAgICAgICAgaWYgKG5hbWUgPT09ICJjb250ZW50IikgewogICAgICAgICAgICAg
ICAgIHZhciB3aWR0aEVsZW1lbnQgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CkBA
IC0yMDQsOCArMjU0LDEyIEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBhbmUucHJvdG90
eXBlID0gewogICAgICAgICB9CiAKICAgICAgICAgbWV0cmljc0VsZW1lbnQuYXBwZW5kQ2hpbGQo
cHJldmlvdXNCb3gpOworICAgICAgICBtZXRyaWNzRWxlbWVudC5hZGRFdmVudExpc3RlbmVyKCJt
b3VzZW92ZXIiLCB0aGlzLl9oaWdobGlnaHRET01Ob2RlLmJpbmQodGhpcywgdHJ1ZSwgIiIpLCBm
YWxzZSk7CisgICAgICAgIG1ldHJpY3NFbGVtZW50LmFkZEV2ZW50TGlzdGVuZXIoIm1vdXNlb3V0
IiwgdGhpcy5faGlnaGxpZ2h0RE9NTm9kZS5iaW5kKHRoaXMsIGZhbHNlLCAiIiksIGZhbHNlKTsK
ICAgICAgICAgdGhpcy5ib2R5RWxlbWVudC5yZW1vdmVDaGlsZHJlbigpOwogICAgICAgICB0aGlz
LmJvZHlFbGVtZW50LmFwcGVuZENoaWxkKG1ldHJpY3NFbGVtZW50KTsKKworICAgICAgICBXZWJJ
bnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZSgwKTsKICAgICB9LAogCiAgICAgc3RhcnRFZGl0aW5n
OiBmdW5jdGlvbih0YXJnZXRFbGVtZW50LCBib3gsIHN0eWxlUHJvcGVydHksIGNvbXB1dGVkU3R5
bGUpCkBAIC0yMTQsMjcgKzI2OCwxMDAgQEAgV2ViSW5zcGVjdG9yLk1ldHJpY3NTaWRlYmFyUGFu
ZS5wcm90b3R5cGUgPSB7CiAgICAgICAgICAgICByZXR1cm47CiAKICAgICAgICAgdmFyIGNvbnRl
eHQgPSB7IGJveDogYm94LCBzdHlsZVByb3BlcnR5OiBzdHlsZVByb3BlcnR5LCBjb21wdXRlZFN0
eWxlOiBjb21wdXRlZFN0eWxlIH07CisgICAgICAgIHZhciBib3VuZEtleURvd24gPSB0aGlzLl9o
YW5kbGVLZXlEb3duLmJpbmQodGhpcywgY29udGV4dCwgc3R5bGVQcm9wZXJ0eSk7CisgICAgICAg
IGNvbnRleHQua2V5RG93bkhhbmRsZXIgPSBib3VuZEtleURvd247CisgICAgICAgIHRhcmdldEVs
ZW1lbnQuYWRkRXZlbnRMaXN0ZW5lcigia2V5ZG93biIsIGJvdW5kS2V5RG93biwgZmFsc2UpOwog
CisgICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUo
KTsKICAgICAgICAgV2ViSW5zcGVjdG9yLnN0YXJ0RWRpdGluZyh0YXJnZXRFbGVtZW50LCB7CiAg
ICAgICAgICAgICBjb250ZXh0OiBjb250ZXh0LAogICAgICAgICAgICAgY29tbWl0SGFuZGxlcjog
dGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJpbmQodGhpcyksCiAgICAgICAgICAgICBjYW5jZWxIYW5k
bGVyOiB0aGlzLmVkaXRpbmdDYW5jZWxsZWQuYmluZCh0aGlzKQogICAgICAgICB9KTsKKyAgICAg
ICAgd2luZG93LmdldFNlbGVjdGlvbigpLnNldEJhc2VBbmRFeHRlbnQodGFyZ2V0RWxlbWVudCwg
MCwgdGFyZ2V0RWxlbWVudCwgMSk7CisgICAgfSwKKworICAgIF9oYW5kbGVLZXlEb3duOiBmdW5j
dGlvbihjb250ZXh0LCBzdHlsZVByb3BlcnR5LCBldmVudCkKKyAgICB7CisgICAgICAgIGlmICgh
L14oPzpQYWdlKT8oPzpVcHxEb3duKSQvLnRlc3QoZXZlbnQua2V5SWRlbnRpZmllcikpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIHZhciBlbGVtZW50ID0gZXZlbnQuY3VycmVudFRhcmdl
dDsKKworICAgICAgICB2YXIgc2VsZWN0aW9uID0gd2luZG93LmdldFNlbGVjdGlvbigpOworICAg
ICAgICBpZiAoIXNlbGVjdGlvbi5yYW5nZUNvdW50KQorICAgICAgICAgICAgcmV0dXJuOworCisg
ICAgICAgIHZhciBzZWxlY3Rpb25SYW5nZSA9IHNlbGVjdGlvbi5nZXRSYW5nZUF0KDApOworICAg
ICAgICBpZiAoc2VsZWN0aW9uUmFuZ2UuY29tbW9uQW5jZXN0b3JDb250YWluZXIgIT09IGVsZW1l
bnQgJiYgIXNlbGVjdGlvblJhbmdlLmNvbW1vbkFuY2VzdG9yQ29udGFpbmVyLmlzRGVzY2VuZGFu
dChlbGVtZW50KSkKKyAgICAgICAgICAgIHJldHVybjsKKworICAgICAgICB2YXIgb3JpZ2luYWxW
YWx1ZSA9IGVsZW1lbnQudGV4dENvbnRlbnQ7CisgICAgICAgIHZhciB3b3JkUmFuZ2UgPSBzZWxl
Y3Rpb25SYW5nZS5zdGFydENvbnRhaW5lci5yYW5nZU9mV29yZChzZWxlY3Rpb25SYW5nZS5zdGFy
dE9mZnNldCwgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlN0eWxlVmFsdWVEZWxpbWl0
ZXJzLCBlbGVtZW50KTsKKyAgICAgICAgdmFyIHdvcmRTdHJpbmcgPSB3b3JkUmFuZ2UudG9TdHJp
bmcoKTsKKworICAgICAgICB2YXIgbWF0Y2hlcyA9IC8oLio/KSgtPyg/OlxkKyg/OlwuXGQrKT98
XC5cZCspKSguKikvLmV4ZWMod29yZFN0cmluZyk7CisgICAgICAgIHZhciByZXBsYWNlbWVudFN0
cmluZzsKKyAgICAgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hlcy5sZW5ndGgpIHsKKyAgICAgICAg
ICAgIHByZWZpeCA9IG1hdGNoZXNbMV07CisgICAgICAgICAgICBzdWZmaXggPSBtYXRjaGVzWzNd
OworICAgICAgICAgICAgbnVtYmVyID0gV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFs
dGVyZWRGbG9hdE51bWJlcihwYXJzZUZsb2F0KG1hdGNoZXNbMl0pLCBldmVudCk7CisgICAgICAg
ICAgICBpZiAoc3R5bGVQcm9wZXJ0eSAhPT0gIm1hcmdpbiIgJiYgbnVtYmVyIDwgMCkKKyAgICAg
ICAgICAgICAgICBudW1iZXIgPSAwOworCisgICAgICAgICAgICByZXBsYWNlbWVudFN0cmluZyA9
IHByZWZpeCArIG51bWJlciArIHN1ZmZpeDsKKyAgICAgICAgfQorICAgICAgICBpZiAoIXJlcGxh
Y2VtZW50U3RyaW5nKQorICAgICAgICAgICAgcmV0dXJuOworCisgICAgICAgIHZhciByZXBsYWNl
bWVudFRleHROb2RlID0gZG9jdW1lbnQuY3JlYXRlVGV4dE5vZGUocmVwbGFjZW1lbnRTdHJpbmcp
OworCisgICAgICAgIHdvcmRSYW5nZS5kZWxldGVDb250ZW50cygpOworICAgICAgICB3b3JkUmFu
Z2UuaW5zZXJ0Tm9kZShyZXBsYWNlbWVudFRleHROb2RlKTsKKworICAgICAgICB2YXIgZmluYWxT
ZWxlY3Rpb25SYW5nZSA9IGRvY3VtZW50LmNyZWF0ZVJhbmdlKCk7CisgICAgICAgIGZpbmFsU2Vs
ZWN0aW9uUmFuZ2Uuc2V0U3RhcnQocmVwbGFjZW1lbnRUZXh0Tm9kZSwgMCk7CisgICAgICAgIGZp
bmFsU2VsZWN0aW9uUmFuZ2Uuc2V0RW5kKHJlcGxhY2VtZW50VGV4dE5vZGUsIHJlcGxhY2VtZW50
U3RyaW5nLmxlbmd0aCk7CisKKyAgICAgICAgc2VsZWN0aW9uLnJlbW92ZUFsbFJhbmdlcygpOwor
ICAgICAgICBzZWxlY3Rpb24uYWRkUmFuZ2UoZmluYWxTZWxlY3Rpb25SYW5nZSk7CisKKyAgICAg
ICAgZXZlbnQuaGFuZGxlZCA9IHRydWU7CisgICAgICAgIGV2ZW50LnByZXZlbnREZWZhdWx0KCk7
CisgICAgICAgIHRoaXMuX2FwcGx5VXNlcklucHV0KGVsZW1lbnQsIHJlcGxhY2VtZW50U3RyaW5n
LCBvcmlnaW5hbFZhbHVlLCBjb250ZXh0LCBmYWxzZSk7CisgICAgfSwKKworICAgIGVkaXRpbmdF
bmRlZDogZnVuY3Rpb24oZWxlbWVudCwgY29udGV4dCkKKyAgICB7CisgICAgICAgIGRlbGV0ZSB0
aGlzLm9yaWdpbmFsUHJvcGVydHlEYXRhOworICAgICAgICBkZWxldGUgdGhpcy5wcmV2aW91c1By
b3BlcnR5RGF0YUNhbmRpZGF0ZTsKKyAgICAgICAgZWxlbWVudC5yZW1vdmVFdmVudExpc3RlbmVy
KCJrZXlkb3duIiwgY29udGV4dC5rZXlEb3duSGFuZGxlciwgZmFsc2UpOworICAgICAgICBXZWJJ
bnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLmVuZEVkaXRpbmdTdHlsZSgpOwogICAgIH0sCiAKICAg
ICBlZGl0aW5nQ2FuY2VsbGVkOiBmdW5jdGlvbihlbGVtZW50LCBjb250ZXh0KQogICAgIHsKKyAg
ICAgICAgaWYgKCJvcmlnaW5hbFByb3BlcnR5RGF0YSIgaW4gdGhpcyAmJiB0aGlzLmlubGluZVN0
eWxlKSB7CisgICAgICAgICAgICBpZiAoIXRoaXMub3JpZ2luYWxQcm9wZXJ0eURhdGEpIHsKKyAg
ICAgICAgICAgICAgICAvLyBBbiBhZGRlZCBwcm9wZXJ0eSwgcmVtb3ZlIHRoZSBsYXN0IHByb3Bl
cnR5IGluIHRoZSBzdHlsZS4KKyAgICAgICAgICAgICAgICB2YXIgcGFzdExhc3RTb3VyY2VQcm9w
ZXJ0eUluZGV4ID0gdGhpcy5pbmxpbmVTdHlsZS5wYXN0TGFzdFNvdXJjZVByb3BlcnR5SW5kZXgo
KTsKKyAgICAgICAgICAgICAgICBpZiAocGFzdExhc3RTb3VyY2VQcm9wZXJ0eUluZGV4KQorICAg
ICAgICAgICAgICAgICAgICB0aGlzLmlubGluZVN0eWxlLmFsbFByb3BlcnRpZXNbcGFzdExhc3RT
b3VyY2VQcm9wZXJ0eUluZGV4IC0gMV0uc2V0VGV4dCgiIiwgZmFsc2UpOworICAgICAgICAgICAg
fSBlbHNlCisgICAgICAgICAgICAgICAgdGhpcy5pbmxpbmVTdHlsZS5hbGxQcm9wZXJ0aWVzW3Ro
aXMub3JpZ2luYWxQcm9wZXJ0eURhdGEuaW5kZXhdLnNldFRleHQodGhpcy5vcmlnaW5hbFByb3Bl
cnR5RGF0YS5wcm9wZXJ0eVRleHQsIGZhbHNlKTsKKyAgICAgICAgfQorICAgICAgICB0aGlzLmVk
aXRpbmdFbmRlZChlbGVtZW50LCBjb250ZXh0KTsKICAgICAgICAgdGhpcy51cGRhdGUoKTsKICAg
ICB9LAogCi0gICAgZWRpdGluZ0NvbW1pdHRlZDogZnVuY3Rpb24oZWxlbWVudCwgdXNlcklucHV0
LCBwcmV2aW91c0NvbnRlbnQsIGNvbnRleHQpCisgICAgX2FwcGx5VXNlcklucHV0OiBmdW5jdGlv
bihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwgY29tbWl0RWRp
dG9yKQogICAgIHsKICAgICAgICAgaWYgKCF0aGlzLmlubGluZVN0eWxlKSB7CiAgICAgICAgICAg
ICAvLyBFbGVtZW50IGhhcyBubyByZW5kZXJlci4KKyAgICAgICAgICAgIGRlbGV0ZSB0aGlzLm9y
aWdpbmFsUHJvcGVydHlWYWx1ZTsKICAgICAgICAgICAgIHJldHVybiB0aGlzLmVkaXRpbmdDYW5j
ZWxsZWQoZWxlbWVudCwgY29udGV4dCk7IC8vIG5vdGhpbmcgY2hhbmdlZCwgc28gY2FuY2VsCiAg
ICAgICAgIH0KIAotICAgICAgICBpZiAodXNlcklucHV0ID09PSBwcmV2aW91c0NvbnRlbnQpCisg
ICAgICAgIGlmIChjb21taXRFZGl0b3IgJiYgdXNlcklucHV0ID09PSBwcmV2aW91c0NvbnRlbnQp
CiAgICAgICAgICAgICByZXR1cm4gdGhpcy5lZGl0aW5nQ2FuY2VsbGVkKGVsZW1lbnQsIGNvbnRl
eHQpOyAvLyBub3RoaW5nIGNoYW5nZWQsIHNvIGNhbmNlbAogCiAgICAgICAgIGlmIChjb250ZXh0
LmJveCAhPT0gInBvc2l0aW9uIiAmJiAoIXVzZXJJbnB1dCB8fCB1c2VySW5wdXQgPT09ICJcdTIw
MTIiKSkKQEAgLTI3MCwzNyArMzk3LDQyIEBAIFdlYkluc3BlY3Rvci5NZXRyaWNzU2lkZWJhclBh
bmUucHJvdG90eXBlID0gewogICAgICAgICAgICAgdXNlcklucHV0ID0gdXNlclZhbHVlUHggKyAi
cHgiOwogICAgICAgICB9CiAKKyAgICAgICAgdGhpcy5wcmV2aW91c1Byb3BlcnR5RGF0YUNhbmRp
ZGF0ZSA9IG51bGw7CiAgICAgICAgIHZhciBzZWxmID0gdGhpczsKICAgICAgICAgdmFyIGNhbGxi
YWNrID0gZnVuY3Rpb24oc3R5bGUpIHsKICAgICAgICAgICAgIGlmICghc3R5bGUpCiAgICAgICAg
ICAgICAgICAgcmV0dXJuOwogICAgICAgICAgICAgc2VsZi5pbmxpbmVTdHlsZSA9IHN0eWxlOwot
ICAgICAgICAgICAgc2VsZi5kaXNwYXRjaEV2ZW50VG9MaXN0ZW5lcnMoIm1ldHJpY3MgZWRpdGVk
Iik7Ci0gICAgICAgICAgICBzZWxmLnVwZGF0ZSgpOworICAgICAgICAgICAgaWYgKCEoIm9yaWdp
bmFsUHJvcGVydHlEYXRhIiBpbiBzZWxmKSkKKyAgICAgICAgICAgICAgICBzZWxmLm9yaWdpbmFs
UHJvcGVydHlEYXRhID0gc2VsZi5wcmV2aW91c1Byb3BlcnR5RGF0YUNhbmRpZGF0ZTsKKyAgICAg
ICAgICAgIGlmICgiX2hpZ2hsaWdodE1vZGUiIGluIHNlbGYpIHsKKyAgICAgICAgICAgICAgICBX
ZWJJbnNwZWN0b3IuaGlnaGxpZ2h0RE9NTm9kZSgwLCAiIik7CisgICAgICAgICAgICAgICAgV2Vi
SW5zcGVjdG9yLmhpZ2hsaWdodERPTU5vZGUoc2VsZi5ub2RlLmlkLCBzZWxmLl9oaWdobGlnaHRN
b2RlKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgICAgIGlmIChjb21taXRFZGl0b3IpIHsKKyAg
ICAgICAgICAgICAgICBzZWxmLmRpc3BhdGNoRXZlbnRUb0xpc3RlbmVycygibWV0cmljcyBlZGl0
ZWQiKTsKKyAgICAgICAgICAgICAgICBzZWxmLnVwZGF0ZSgpOworICAgICAgICAgICAgfQogICAg
ICAgICB9OwogCi0gICAgICAgIGZ1bmN0aW9uIHNldEVuYWJsZWRWYWx1ZUNhbGxiYWNrKGNvbnRl
eHQsIHN0eWxlKQotICAgICAgICB7Ci0gICAgICAgICAgICB2YXIgcHJvcGVydHkgPSBzdHlsZS5n
ZXRMaXZlUHJvcGVydHkoc3R5bGVQcm9wZXJ0eSk7Ci0gICAgICAgICAgICBpZiAoIXByb3BlcnR5
KQotICAgICAgICAgICAgICAgIHN0eWxlLmFwcGVuZFByb3BlcnR5KGNvbnRleHQuc3R5bGVQcm9w
ZXJ0eSwgdXNlcklucHV0LCBjYWxsYmFjayk7Ci0gICAgICAgICAgICAgZWxzZQotICAgICAgICAg
ICAgICAgIHByb3BlcnR5LnNldFZhbHVlKHVzZXJJbnB1dCwgY2FsbGJhY2spOwotICAgICAgICB9
Ci0KICAgICAgICAgdmFyIGFsbFByb3BlcnRpZXMgPSB0aGlzLmlubGluZVN0eWxlLmFsbFByb3Bl
cnRpZXM7CiAgICAgICAgIGZvciAodmFyIGkgPSAwOyBpIDwgYWxsUHJvcGVydGllcy5sZW5ndGg7
ICsraSkgewogICAgICAgICAgICAgdmFyIHByb3BlcnR5ID0gYWxsUHJvcGVydGllc1tpXTsKICAg
ICAgICAgICAgIGlmIChwcm9wZXJ0eS5uYW1lICE9PSBjb250ZXh0LnN0eWxlUHJvcGVydHkgfHwg
cHJvcGVydHkuaW5hY3RpdmUpCiAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgICAg
ICBpZiAocHJvcGVydHkuZGlzYWJsZWQpCi0gICAgICAgICAgICAgICAgcHJvcGVydHkuc2V0RGlz
YWJsZWQoZmFsc2UsIHNldEVuYWJsZWRWYWx1ZUNhbGxiYWNrLmJpbmQobnVsbCwgY29udGV4dCkp
OwotICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIHByb3BlcnR5LnNldFZhbHVlKHVz
ZXJJbnB1dCwgY2FsbGJhY2spOworCisgICAgICAgICAgICB0aGlzLnByZXZpb3VzUHJvcGVydHlE
YXRhQ2FuZGlkYXRlID0gcHJvcGVydHk7CisgICAgICAgICAgICBwcm9wZXJ0eS5zZXRWYWx1ZSh1
c2VySW5wdXQsIGNvbW1pdEVkaXRvciwgY2FsbGJhY2spOwogICAgICAgICAgICAgcmV0dXJuOwog
ICAgICAgICB9CiAKICAgICAgICAgdGhpcy5pbmxpbmVTdHlsZS5hcHBlbmRQcm9wZXJ0eShjb250
ZXh0LnN0eWxlUHJvcGVydHksIHVzZXJJbnB1dCwgY2FsbGJhY2spOworICAgIH0sCisKKyAgICBl
ZGl0aW5nQ29tbWl0dGVkOiBmdW5jdGlvbihlbGVtZW50LCB1c2VySW5wdXQsIHByZXZpb3VzQ29u
dGVudCwgY29udGV4dCkKKyAgICB7CisgICAgICAgIHRoaXMuZWRpdGluZ0VuZGVkKGVsZW1lbnQs
IGNvbnRleHQpOworICAgICAgICB0aGlzLl9hcHBseVVzZXJJbnB1dChlbGVtZW50LCB1c2VySW5w
dXQsIHByZXZpb3VzQ29udGVudCwgY29udGV4dCwgdHJ1ZSk7CiAgICAgfQogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5l
LmpzIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250LWVuZC9TdHlsZXNTaWRlYmFyUGFu
ZS5qcwppbmRleCBhNjYyMDA4Li5mNTdlZWE5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvZnJvbnQtZW5kL1N0eWxlc1NpZGViYXJQYW5lLmpzCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9mcm9udC1lbmQvU3R5bGVzU2lkZWJhclBhbmUuanMKQEAgLTExMCw2ICsx
MTAsNzUgQEAgV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLlBzZXVkb0lkTmFtZXMgPSBb
CiAgICAgIi13ZWJraXQtcmVzaXplciIsICItd2Via2l0LWlucHV0LWxpc3QtYnV0dG9uIiwgIi13
ZWJraXQtaW5uZXItc3Bpbi1idXR0b24iLCAiLXdlYmtpdC1vdXRlci1zcGluLWJ1dHRvbiIKIF07
CiAKK1dlYkluc3BlY3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkRmxvYXROdW1iZXIgPSBm
dW5jdGlvbihudW1iZXIsIGV2ZW50KQoreworICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93
biIpOworICAgIC8vIElmIHRoZSBudW1iZXIgaXMgbmVhciB6ZXJvIG9yIHRoZSBudW1iZXIgaXMg
b25lIGFuZCB0aGUgZGlyZWN0aW9uIHdpbGwgdGFrZSBpdCBuZWFyIHplcm8uCisgICAgdmFyIG51
bWJlck5lYXJaZXJvID0gKG51bWJlciA8IDEgJiYgbnVtYmVyID4gLTEpOworICAgIGlmIChudW1i
ZXIgPT09IDEgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKQorICAgICAgICBudW1i
ZXJOZWFyWmVybyA9IHRydWU7CisgICAgZWxzZSBpZiAobnVtYmVyID09PSAtMSAmJiBldmVudC5r
ZXlJZGVudGlmaWVyID09PSAiVXAiKQorICAgICAgICBudW1iZXJOZWFyWmVybyA9IHRydWU7CisK
KyAgICB2YXIgcmVzdWx0OworICAgIGlmIChudW1iZXJOZWFyWmVybyAmJiBldmVudC5hbHRLZXkg
JiYgYXJyb3dLZXlQcmVzc2VkKSB7CisgICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09
PSAiRG93biIpCisgICAgICAgICAgICByZXN1bHQgPSBNYXRoLmNlaWwobnVtYmVyIC0gMSk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHJlc3VsdCA9IE1hdGguZmxvb3IobnVtYmVyICsgMSk7
CisgICAgfSBlbHNlIHsKKyAgICAgICAgLy8gSnVtcCBieSAxMCB3aGVuIHNoaWZ0IGlzIGRvd24g
b3IganVtcCBieSAwLjEgd2hlbiBuZWFyIHplcm8gb3IgQWx0L09wdGlvbiBpcyBkb3duLgorICAg
ICAgICAvLyBBbHNvIGp1bXAgYnkgMTAgZm9yIHBhZ2UgdXAgYW5kIGRvd24sIG9yIGJ5IDEwMCBp
ZiBzaGlmdCBpcyBoZWxkIHdpdGggYSBwYWdlIGtleS4KKyAgICAgICAgdmFyIGNoYW5nZUFtb3Vu
dCA9IDE7CisgICAgICAgIGlmIChldmVudC5zaGlmdEtleSAmJiAhYXJyb3dLZXlQcmVzc2VkKQor
ICAgICAgICAgICAgY2hhbmdlQW1vdW50ID0gMTAwOworICAgICAgICBlbHNlIGlmIChldmVudC5z
aGlmdEtleSB8fCAhYXJyb3dLZXlQcmVzc2VkKQorICAgICAgICAgICAgY2hhbmdlQW1vdW50ID0g
MTA7CisgICAgICAgIGVsc2UgaWYgKGV2ZW50LmFsdEtleSB8fCBudW1iZXJOZWFyWmVybykKKyAg
ICAgICAgICAgIGNoYW5nZUFtb3VudCA9IDAuMTsKKworICAgICAgICBpZiAoZXZlbnQua2V5SWRl
bnRpZmllciA9PT0gIkRvd24iIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJQYWdlRG93biIp
CisgICAgICAgICAgICBjaGFuZ2VBbW91bnQgKj0gLTE7CisKKyAgICAgICAgLy8gTWFrZSB0aGUg
bmV3IG51bWJlciBhbmQgY29uc3RyYWluIGl0IHRvIGEgcHJlY2lzaW9uIG9mIDYsIHRoaXMgbWF0
Y2hlcyBudW1iZXJzIHRoZSBlbmdpbmUgcmV0dXJucy4KKyAgICAgICAgLy8gVXNlIHRoZSBOdW1i
ZXIgY29uc3RydWN0b3IgdG8gZm9yZ2V0IHRoZSBmaXhlZCBwcmVjaXNpb24sIHNvIDEuMTAwMDAw
IHdpbGwgcHJpbnQgYXMgMS4xLgorICAgICAgICByZXN1bHQgPSBOdW1iZXIoKG51bWJlciArIGNo
YW5nZUFtb3VudCkudG9GaXhlZCg2KSk7CisgICAgfQorCisgICAgcmV0dXJuIHJlc3VsdDsKK30K
KworV2ViSW5zcGVjdG9yLlN0eWxlc1NpZGViYXJQYW5lLmFsdGVyZWRIZXhOdW1iZXIgPSBmdW5j
dGlvbihoZXhTdHJpbmcsIGV2ZW50KQoreworICAgIHZhciBudW1iZXIgPSBwYXJzZUludChoZXhT
dHJpbmcsIDE2KTsKKyAgICBpZiAoaXNOYU4obnVtYmVyKSB8fCAhaXNGaW5pdGUobnVtYmVyKSkK
KyAgICAgICAgcmV0dXJuIGhleFN0cmluZzsKKworICAgIHZhciBtYXhWYWx1ZSA9IE1hdGgucG93
KDE2LCBoZXhTdHJpbmcubGVuZ3RoKSAtIDE7CisgICAgdmFyIGFycm93S2V5UHJlc3NlZCA9IChl
dmVudC5rZXlJZGVudGlmaWVyID09PSAiVXAiIHx8IGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJE
b3duIik7CisKKyAgICB2YXIgZGVsdGE7CisgICAgaWYgKGFycm93S2V5UHJlc3NlZCkKKyAgICAg
ICAgZGVsdGEgPSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIikgPyAxIDogLTE7CisgICAg
ZWxzZQorICAgICAgICBkZWx0YSA9IChldmVudC5rZXlJZGVudGlmaWVyID09PSAiUGFnZVVwIikg
PyAxNiA6IC0xNjsKKworICAgIGlmIChldmVudC5zaGlmdEtleSkKKyAgICAgICAgZGVsdGEgKj0g
MTY7CisKKyAgICB2YXIgcmVzdWx0ID0gbnVtYmVyICsgZGVsdGE7CisgICAgaWYgKHJlc3VsdCA8
IDApCisgICAgICAgIHJlc3VsdCA9IDA7IC8vIENvbG9yIGhleCB2YWx1ZXMgYXJlIG5ldmVyIG5l
Z2F0aXZlLCBzbyBjbGFtcCB0byAwLgorICAgIGVsc2UgaWYgKHJlc3VsdCA+IG1heFZhbHVlKQor
ICAgICAgICByZXR1cm4gaGV4U3RyaW5nOworCisgICAgLy8gRW5zdXJlIHRoZSByZXN1bHQgbGVu
Z3RoIGlzIHRoZSBzYW1lIGFzIHRoZSBvcmlnaW5hbCBoZXggdmFsdWUuCisgICAgdmFyIHJlc3Vs
dFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKKyAgICBmb3IgKHZh
ciBpID0gMCwgbGVuZ3RoRGVsdGEgPSBoZXhTdHJpbmcubGVuZ3RoIC0gcmVzdWx0U3RyaW5nLmxl
bmd0aDsgaSA8IGxlbmd0aERlbHRhOyArK2kpCisgICAgICAgIHJlc3VsdFN0cmluZyA9ICIwIiAr
IHJlc3VsdFN0cmluZzsKKyAgICByZXR1cm4gcmVzdWx0U3RyaW5nOworfSwKKwogV2ViSW5zcGVj
dG9yLlN0eWxlc1NpZGViYXJQYW5lLnByb3RvdHlwZSA9IHsKICAgICBfY29udGV4dE1lbnVFdmVu
dEZpcmVkOiBmdW5jdGlvbihldmVudCkKICAgICB7CkBAIC0xNjA5LDcgKzE2NzgsNyBAQCBXZWJJ
bnNwZWN0b3IuU3R5bGVQcm9wZXJ0eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAg
ICAgIHJldHVybiAibW92ZS1mb3J3YXJkIjsKICAgICAgICAgfQogCi0gICAgICAgIHRoaXMuX3Bh
cmVudFBhbmUuaXNNb2RpZnlpbmdTdHlsZSA9IHRydWU7CisgICAgICAgIFdlYkluc3BlY3Rvci5w
YW5lbHMuZWxlbWVudHMuc3RhcnRFZGl0aW5nU3R5bGUoKTsKICAgICAgICAgV2ViSW5zcGVjdG9y
LnN0YXJ0RWRpdGluZyhzZWxlY3RFbGVtZW50LCB7CiAgICAgICAgICAgICBjb250ZXh0OiBjb250
ZXh0LAogICAgICAgICAgICAgY29tbWl0SGFuZGxlcjogdGhpcy5lZGl0aW5nQ29tbWl0dGVkLmJp
bmQodGhpcyksCkBAIC0xNjQ5LDcgKzE3MTgsNyBAQCBXZWJJbnNwZWN0b3IuU3R5bGVQcm9wZXJ0
eVRyZWVFbGVtZW50LnByb3RvdHlwZSA9IHsKICAgICAgICAgaWYgKG1hdGNoZXMgJiYgbWF0Y2hl
cy5sZW5ndGgpIHsKICAgICAgICAgICAgIHByZWZpeCA9IG1hdGNoZXNbMV07CiAgICAgICAgICAg
ICBzdWZmaXggPSBtYXRjaGVzWzNdOwotICAgICAgICAgICAgbnVtYmVyID0gdGhpcy5fYWx0ZXJl
ZEhleE51bWJlcihtYXRjaGVzWzJdLCBldmVudCk7CisgICAgICAgICAgICBudW1iZXIgPSBXZWJJ
bnNwZWN0b3IuU3R5bGVzU2lkZWJhclBhbmUuYWx0ZXJlZEhleE51bWJlcihtYXRjaGVzWzJdLCBl
dmVudCk7CiAKICAgICAgICAgICAgIHJlcGxhY2VtZW50U3RyaW5nID0gcHJlZml4ICsgbnVtYmVy
ICsgc3VmZml4OwogICAgICAgICB9IGVsc2UgewpAQCAtMTY1Nyw3ICsxNzI2LDcgQEAgV2ViSW5z
cGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7CiAgICAgICAgICAg
ICBpZiAobWF0Y2hlcyAmJiBtYXRjaGVzLmxlbmd0aCkgewogICAgICAgICAgICAgICAgIHByZWZp
eCA9IG1hdGNoZXNbMV07CiAgICAgICAgICAgICAgICAgc3VmZml4ID0gbWF0Y2hlc1szXTsKLSAg
ICAgICAgICAgICAgICBudW1iZXIgPSB0aGlzLl9hbHRlcmVkRmxvYXROdW1iZXIocGFyc2VGbG9h
dChtYXRjaGVzWzJdKSwgZXZlbnQpOworICAgICAgICAgICAgICAgIG51bWJlciA9IFdlYkluc3Bl
Y3Rvci5TdHlsZXNTaWRlYmFyUGFuZS5hbHRlcmVkRmxvYXROdW1iZXIocGFyc2VGbG9hdChtYXRj
aGVzWzJdKSwgZXZlbnQpOwogCiAgICAgICAgICAgICAgICAgcmVwbGFjZW1lbnRTdHJpbmcgPSBw
cmVmaXggKyBudW1iZXIgKyBzdWZmaXg7CiAgICAgICAgICAgICB9CkBAIC0xNjkwLDc1ICsxNzU5
LDYgQEAgV2ViSW5zcGVjdG9yLlN0eWxlUHJvcGVydHlUcmVlRWxlbWVudC5wcm90b3R5cGUgPSB7
CiAgICAgICAgIH0KICAgICB9LAogCi0gICAgX2FsdGVyZWRGbG9hdE51bWJlcjogZnVuY3Rpb24o
bnVtYmVyLCBldmVudCkKLSAgICB7Ci0gICAgICAgIHZhciBhcnJvd0tleVByZXNzZWQgPSAoZXZl
bnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93
biIpOwotICAgICAgICAvLyBJZiB0aGUgbnVtYmVyIGlzIG5lYXIgemVybyBvciB0aGUgbnVtYmVy
IGlzIG9uZSBhbmQgdGhlIGRpcmVjdGlvbiB3aWxsIHRha2UgaXQgbmVhciB6ZXJvLgotICAgICAg
ICB2YXIgbnVtYmVyTmVhclplcm8gPSAobnVtYmVyIDwgMSAmJiBudW1iZXIgPiAtMSk7Ci0gICAg
ICAgIGlmIChudW1iZXIgPT09IDEgJiYgZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIkRvd24iKQot
ICAgICAgICAgICAgbnVtYmVyTmVhclplcm8gPSB0cnVlOwotICAgICAgICBlbHNlIGlmIChudW1i
ZXIgPT09IC0xICYmIGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIpCi0gICAgICAgICAgICBu
dW1iZXJOZWFyWmVybyA9IHRydWU7Ci0KLSAgICAgICAgdmFyIHJlc3VsdDsKLSAgICAgICAgaWYg
KG51bWJlck5lYXJaZXJvICYmIGV2ZW50LmFsdEtleSAmJiBhcnJvd0tleVByZXNzZWQpIHsKLSAg
ICAgICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIpCi0gICAgICAgICAg
ICAgICAgcmVzdWx0ID0gTWF0aC5jZWlsKG51bWJlciAtIDEpOwotICAgICAgICAgICAgZWxzZQot
ICAgICAgICAgICAgICAgIHJlc3VsdCA9IE1hdGguZmxvb3IobnVtYmVyICsgMSk7Ci0gICAgICAg
IH0gZWxzZSB7Ci0gICAgICAgICAgICAvLyBKdW1wIGJ5IDEwIHdoZW4gc2hpZnQgaXMgZG93biBv
ciBqdW1wIGJ5IDAuMSB3aGVuIG5lYXIgemVybyBvciBBbHQvT3B0aW9uIGlzIGRvd24uCi0gICAg
ICAgICAgICAvLyBBbHNvIGp1bXAgYnkgMTAgZm9yIHBhZ2UgdXAgYW5kIGRvd24sIG9yIGJ5IDEw
MCBpZiBzaGlmdCBpcyBoZWxkIHdpdGggYSBwYWdlIGtleS4KLSAgICAgICAgICAgIHZhciBjaGFu
Z2VBbW91bnQgPSAxOwotICAgICAgICAgICAgaWYgKGV2ZW50LnNoaWZ0S2V5ICYmICFhcnJvd0tl
eVByZXNzZWQpCi0gICAgICAgICAgICAgICAgY2hhbmdlQW1vdW50ID0gMTAwOwotICAgICAgICAg
ICAgZWxzZSBpZiAoZXZlbnQuc2hpZnRLZXkgfHwgIWFycm93S2V5UHJlc3NlZCkKLSAgICAgICAg
ICAgICAgICBjaGFuZ2VBbW91bnQgPSAxMDsKLSAgICAgICAgICAgIGVsc2UgaWYgKGV2ZW50LmFs
dEtleSB8fCBudW1iZXJOZWFyWmVybykKLSAgICAgICAgICAgICAgICBjaGFuZ2VBbW91bnQgPSAw
LjE7Ci0KLSAgICAgICAgICAgIGlmIChldmVudC5rZXlJZGVudGlmaWVyID09PSAiRG93biIgfHwg
ZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlBhZ2VEb3duIikKLSAgICAgICAgICAgICAgICBjaGFu
Z2VBbW91bnQgKj0gLTE7Ci0KLSAgICAgICAgICAgIC8vIE1ha2UgdGhlIG5ldyBudW1iZXIgYW5k
IGNvbnN0cmFpbiBpdCB0byBhIHByZWNpc2lvbiBvZiA2LCB0aGlzIG1hdGNoZXMgbnVtYmVycyB0
aGUgZW5naW5lIHJldHVybnMuCi0gICAgICAgICAgICAvLyBVc2UgdGhlIE51bWJlciBjb25zdHJ1
Y3RvciB0byBmb3JnZXQgdGhlIGZpeGVkIHByZWNpc2lvbiwgc28gMS4xMDAwMDAgd2lsbCBwcmlu
dCBhcyAxLjEuCi0gICAgICAgICAgICByZXN1bHQgPSBOdW1iZXIoKG51bWJlciArIGNoYW5nZUFt
b3VudCkudG9GaXhlZCg2KSk7Ci0gICAgICAgIH0KLQotICAgICAgICByZXR1cm4gcmVzdWx0Owot
ICAgIH0sCi0KLSAgICBfYWx0ZXJlZEhleE51bWJlcjogZnVuY3Rpb24oaGV4U3RyaW5nLCBldmVu
dCkKLSAgICB7Ci0gICAgICAgIHZhciBudW1iZXIgPSBwYXJzZUludChoZXhTdHJpbmcsIDE2KTsK
LSAgICAgICAgaWYgKGlzTmFOKG51bWJlcikgfHwgIWlzRmluaXRlKG51bWJlcikpCi0gICAgICAg
ICAgICByZXR1cm4gaGV4U3RyaW5nOwotCi0gICAgICAgIHZhciBtYXhWYWx1ZSA9IE1hdGgucG93
KDE2LCBoZXhTdHJpbmcubGVuZ3RoKSAtIDE7Ci0gICAgICAgIHZhciBhcnJvd0tleVByZXNzZWQg
PSAoZXZlbnQua2V5SWRlbnRpZmllciA9PT0gIlVwIiB8fCBldmVudC5rZXlJZGVudGlmaWVyID09
PSAiRG93biIpOwotCi0gICAgICAgIHZhciBkZWx0YTsKLSAgICAgICAgaWYgKGFycm93S2V5UHJl
c3NlZCkKLSAgICAgICAgICAgIGRlbHRhID0gKGV2ZW50LmtleUlkZW50aWZpZXIgPT09ICJVcCIp
ID8gMSA6IC0xOwotICAgICAgICBlbHNlCi0gICAgICAgICAgICBkZWx0YSA9IChldmVudC5rZXlJ
ZGVudGlmaWVyID09PSAiUGFnZVVwIikgPyAxNiA6IC0xNjsKLQotICAgICAgICBpZiAoZXZlbnQu
c2hpZnRLZXkpCi0gICAgICAgICAgICBkZWx0YSAqPSAxNjsKLQotICAgICAgICB2YXIgcmVzdWx0
ID0gbnVtYmVyICsgZGVsdGE7Ci0gICAgICAgIGlmIChyZXN1bHQgPCAwKQotICAgICAgICAgICAg
cmVzdWx0ID0gMDsgLy8gQ29sb3IgaGV4IHZhbHVlcyBhcmUgbmV2ZXIgbmVnYXRpdmUsIHNvIGNs
YW1wIHRvIDAuCi0gICAgICAgIGVsc2UgaWYgKHJlc3VsdCA+IG1heFZhbHVlKQotICAgICAgICAg
ICAgcmV0dXJuIGhleFN0cmluZzsKLQotICAgICAgICAvLyBFbnN1cmUgdGhlIHJlc3VsdCBsZW5n
dGggaXMgdGhlIHNhbWUgYXMgdGhlIG9yaWdpbmFsIGhleCB2YWx1ZS4KLSAgICAgICAgdmFyIHJl
c3VsdFN0cmluZyA9IHJlc3VsdC50b1N0cmluZygxNikudG9VcHBlckNhc2UoKTsKLSAgICAgICAg
Zm9yICh2YXIgaSA9IDAsIGxlbmd0aERlbHRhID0gaGV4U3RyaW5nLmxlbmd0aCAtIHJlc3VsdFN0
cmluZy5sZW5ndGg7IGkgPCBsZW5ndGhEZWx0YTsgKytpKQotICAgICAgICAgICAgcmVzdWx0U3Ry
aW5nID0gIjAiICsgcmVzdWx0U3RyaW5nOwotICAgICAgICByZXR1cm4gcmVzdWx0U3RyaW5nOwot
ICAgIH0sCi0KICAgICBlZGl0aW5nRW5kZWQ6IGZ1bmN0aW9uKGNvbnRleHQpCiAgICAgewogICAg
ICAgICB0aGlzLmhhc0NoaWxkcmVuID0gY29udGV4dC5oYXNDaGlsZHJlbjsKQEAgLTE3NzEsNyAr
MTc3MSw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAgICAgZWRpdGVkRWxlbWVudC5wYXJlbnRFbGVtZW50LnJlbW92ZVN0eWxl
Q2xhc3MoImNoaWxkLWVkaXRpbmciKTsKIAogICAgICAgICBkZWxldGUgdGhpcy5vcmlnaW5hbFBy
b3BlcnR5VGV4dDsKLSAgICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFBhbmUuaXNNb2RpZnlpbmdT
dHlsZTsKKyAgICAgICAgV2ViSW5zcGVjdG9yLnBhbmVscy5lbGVtZW50cy5lbmRFZGl0aW5nU3R5
bGUoKTsKICAgICB9LAogCiAgICAgZWRpdGluZ0NhbmNlbGxlZDogZnVuY3Rpb24oZWxlbWVudCwg
Y29udGV4dCkKQEAgLTE4MjAsNyArMTgyMCw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5
VHJlZUVsZW1lbnQucHJvdG90eXBlID0gewogICAgICAgICB2YXIgaXNEaXJ0eVZpYVBhc3RlID0g
aXNEYXRhUGFzdGVkICYmICh0aGlzLm5hbWVFbGVtZW50LnRleHRDb250ZW50ICE9PSBjb250ZXh0
Lm9yaWdpbmFsTmFtZSB8fCB0aGlzLnZhbHVlRWxlbWVudC50ZXh0Q29udGVudCAhPT0gY29udGV4
dC5vcmlnaW5hbFZhbHVlKTsKICAgICAgICAgdmFyIHNob3VsZENvbW1pdE5ld1Byb3BlcnR5ID0g
dGhpcy5fbmV3UHJvcGVydHkgJiYgKG1vdmVUb090aGVyIHx8ICghbW92ZURpcmVjdGlvbiAmJiAh
aXNFZGl0aW5nTmFtZSkgfHwgKGlzRWRpdGluZ05hbWUgJiYgYmxhbmtJbnB1dCkpOwogICAgICAg
ICBpZiAoKCh1c2VySW5wdXQgIT09IHByZXZpb3VzQ29udGVudCB8fCBpc0RpcnR5VmlhUGFzdGUp
ICYmICF0aGlzLl9uZXdQcm9wZXJ0eSkgfHwgc2hvdWxkQ29tbWl0TmV3UHJvcGVydHkpIHsKLSAg
ICAgICAgICAgIHRoaXMuX3BhcmVudFBhbmUuaXNNb2RpZnlpbmdTdHlsZSA9IHRydWU7CisgICAg
ICAgICAgICBXZWJJbnNwZWN0b3IucGFuZWxzLmVsZW1lbnRzLnN0YXJ0RWRpdGluZ1N0eWxlKCk7
CiAgICAgICAgICAgICB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24uX2FmdGVyVXBkYXRlID0gbW92
ZVRvTmV4dENhbGxiYWNrLmJpbmQodGhpcywgdGhpcy5fbmV3UHJvcGVydHksICFibGFua0lucHV0
LCB0aGlzLnRyZWVPdXRsaW5lLnNlY3Rpb24pOwogICAgICAgICAgICAgdmFyIHByb3BlcnR5VGV4
dDsKICAgICAgICAgICAgIGlmIChibGFua0lucHV0IHx8ICh0aGlzLl9uZXdQcm9wZXJ0eSAmJiAv
XlxzKiQvLnRlc3QodGhpcy52YWx1ZUVsZW1lbnQudGV4dENvbnRlbnQpKSkKQEAgLTE4NDMsNyAr
MTg0Myw3IEBAIFdlYkluc3BlY3Rvci5TdHlsZVByb3BlcnR5VHJlZUVsZW1lbnQucHJvdG90eXBl
ID0gewogICAgICAgICAvLyBUaGUgQ2FsbGJhY2sgdG8gc3RhcnQgZWRpdGluZyB0aGUgbmV4dC9w
cmV2aW91cyBwcm9wZXJ0eS9zZWxlY3Rvci4KICAgICAgICAgZnVuY3Rpb24gbW92ZVRvTmV4dENh
bGxiYWNrKGFscmVhZHlOZXcsIHZhbHVlQ2hhbmdlZCwgc2VjdGlvbikKICAgICAgICAgewotICAg
ICAgICAgICAgZGVsZXRlIHRoaXMuX3BhcmVudFBhbmUuaXNNb2RpZnlpbmdTdHlsZTsKKyAgICAg
ICAgICAgIFdlYkluc3BlY3Rvci5wYW5lbHMuZWxlbWVudHMuZW5kRWRpdGluZ1N0eWxlKCk7CiAK
ICAgICAgICAgICAgIGlmICghbW92ZURpcmVjdGlvbikKICAgICAgICAgICAgICAgICByZXR1cm47
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rv
ci5jc3MgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5jc3MK
aW5kZXggZDZmZWY4OS4uNmVmZjYxMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL2Zyb250LWVuZC9pbnNwZWN0b3IuY3NzCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9mcm9udC1lbmQvaW5zcGVjdG9yLmNzcwpAQCAtMTc5Miw4ICsxNzkyLDEzIEBAIGJvZHkucGxh
dGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBwYWRkaW5nLXJpZ2h0
OiAycHg7CiB9CiAKKy5tZXRyaWNzIC5ob3ZlcmVkID4gLmxhYmVsIHsKKyAgICBib3JkZXI6IDFw
eCBzb2xpZCBibGFjazsKK30KKwogLm1ldHJpY3MgLnBvc2l0aW9uIHsKICAgICBib3JkZXI6IDFw
eCByZ2IoNjYlLCA2NiUsIDY2JSkgZG90dGVkOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRl
OwogICAgIGRpc3BsYXk6IGlubGluZS1ibG9jazsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAg
ICAgcGFkZGluZzogM3B4OwpAQCAtMTgwMiw2ICsxODA3LDcgQEAgYm9keS5wbGF0Zm9ybS13aW5k
b3dzIC5zaWRlYmFyLXBhbmUtc3VidGl0bGUgewogCiAubWV0cmljcyAubWFyZ2luIHsKICAgICBi
b3JkZXI6IDFweCBkYXNoZWQ7CisgICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgZGlz
cGxheTogaW5saW5lLWJsb2NrOwogICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICB2ZXJ0aWNh
bC1hbGlnbjogbWlkZGxlOwpAQCAtMTgwOSw4ICsxODE1LDEzIEBAIGJvZHkucGxhdGZvcm0td2lu
ZG93cyAuc2lkZWJhci1wYW5lLXN1YnRpdGxlIHsKICAgICBtYXJnaW46IDNweDsKIH0KIAorLm1l
dHJpY3MgLm1hcmdpbi5ob3ZlcmVkIHsKKyAgICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2IoMTM5LCAx
ODIsIDIyMSk7Cit9CisKIC5tZXRyaWNzIC5ib3JkZXIgewogICAgIGJvcmRlcjogMXB4IGJsYWNr
IHNvbGlkOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgIGRpc3BsYXk6IGlubGlu
ZS1ibG9jazsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgdmVydGljYWwtYWxpZ246IG1p
ZGRsZTsKQEAgLTE4MTgsOCArMTgyOSwxMyBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNpZGVi
YXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgbWFyZ2luOiAzcHg7CiB9CiAKKy5tZXRyaWNzIC5ib3Jk
ZXIuaG92ZXJlZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE1NywgMTkzLCAyMjYpOwor
fQorCiAubWV0cmljcyAucGFkZGluZyB7CiAgICAgYm9yZGVyOiAxcHggZ3JleSBkYXNoZWQ7Cisg
ICAgYmFja2dyb3VuZC1jb2xvcjogd2hpdGU7CiAgICAgZGlzcGxheTogaW5saW5lLWJsb2NrOwog
ICAgIHRleHQtYWxpZ246IGNlbnRlcjsKICAgICB2ZXJ0aWNhbC1hbGlnbjogbWlkZGxlOwpAQCAt
MTgyNyw5ICsxODQzLDE0IEBAIGJvZHkucGxhdGZvcm0td2luZG93cyAuc2lkZWJhci1wYW5lLXN1
YnRpdGxlIHsKICAgICBtYXJnaW46IDNweDsKIH0KIAorLm1ldHJpY3MgLnBhZGRpbmcuaG92ZXJl
ZCB7CisgICAgYmFja2dyb3VuZC1jb2xvcjogcmdiKDE3MywgMjA0LCAyMzEpOworfQorCiAubWV0
cmljcyAuY29udGVudCB7CiAgICAgcG9zaXRpb246IHN0YXRpYzsKICAgICBib3JkZXI6IDFweCBn
cmV5IHNvbGlkOworICAgIGJhY2tncm91bmQtY29sb3I6IHdoaXRlOwogICAgIGRpc3BsYXk6IGlu
bGluZS1ibG9jazsKICAgICB0ZXh0LWFsaWduOiBjZW50ZXI7CiAgICAgdmVydGljYWwtYWxpZ246
IG1pZGRsZTsKQEAgLTE4NDAsNiArMTg2MSwxMCBAQCBib2R5LnBsYXRmb3JtLXdpbmRvd3MgLnNp
ZGViYXItcGFuZS1zdWJ0aXRsZSB7CiAgICAgb3ZlcmZsb3c6IHZpc2libGU7CiB9CiAKKy5tZXRy
aWNzIC5jb250ZW50LmhvdmVyZWQgeworICAgIGJhY2tncm91bmQtY29sb3I6IHJnYigxOTAsIDIx
NCwgMjM2KTsKK30KKwogLm1ldHJpY3MgLmNvbnRlbnQgc3BhbiB7CiAgICAgZGlzcGxheTogaW5s
aW5lLWJsb2NrOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL2Zyb250
LWVuZC9pbnNwZWN0b3IuanMgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2lu
c3BlY3Rvci5qcwppbmRleCBjMDJlODE5Li4xOWYyODYwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcworKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvZnJvbnQtZW5kL2luc3BlY3Rvci5qcwpAQCAtMzA1LDcgKzMwNSw3IEBAIHZh
ciBXZWJJbnNwZWN0b3IgPSB7CiAgICAgICAgICAgICBlcnJvcldhcm5pbmdFbGVtZW50LnRpdGxl
ID0gbnVsbDsKICAgICB9LAogCi0gICAgaGlnaGxpZ2h0RE9NTm9kZTogZnVuY3Rpb24obm9kZUlk
KQorICAgIGhpZ2hsaWdodERPTU5vZGU6IGZ1bmN0aW9uKG5vZGVJZCwgbW9kZSkKICAgICB7CiAg
ICAgICAgIGlmICgiX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCIgaW4gdGhpcykgewogICAg
ICAgICAgICAgY2xlYXJUaW1lb3V0KHRoaXMuX2hpZGVET01Ob2RlSGlnaGxpZ2h0VGltZW91dCk7
CkBAIC0zMTcsNyArMzE3LDcgQEAgdmFyIFdlYkluc3BlY3RvciA9IHsKIAogICAgICAgICB0aGlz
Ll9oaWdobGlnaHRlZERPTU5vZGVJZCA9IG5vZGVJZDsKICAgICAgICAgaWYgKG5vZGVJZCkKLSAg
ICAgICAgICAgIERPTUFnZW50LmhpZ2hsaWdodERPTU5vZGUobm9kZUlkKTsKKyAgICAgICAgICAg
IERPTUFnZW50LmhpZ2hsaWdodERPTU5vZGUobm9kZUlkLCBtb2RlIHx8ICJhbGwiKTsKICAgICAg
ICAgZWxzZQogICAgICAgICAgICAgRE9NQWdlbnQuaGlkZURPTU5vZGVIaWdobGlnaHQoKTsKICAg
ICB9LAo=
</data>
<flag name="review"
          id="83100"
          type_id="1"
          status="+"
          setter="pfeldman"
    />
          </attachment>
      

    </bug>

</bugzilla>