<?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>209773</bug_id>
          
          <creation_ts>2020-03-30 14:39:05 -0700</creation_ts>
          <short_desc>Hit test with clipPath referencing parent element causes infinite recursion</short_desc>
          <delta_ts>2020-06-17 12:01:32 -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>SVG</component>
          <version>WebKit Local Build</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>macOS 10.15</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=208279</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=210203</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Doug Kelly">dougk</reporter>
          <assigned_to name="Doug Kelly">dougk</assigned_to>
          <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>ggaren</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rniwa</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1635737</commentid>
    <comment_count>0</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-03-30 14:39:05 -0700</bug_when>
    <thetext>This is a continuation of bug #208279; when referencing an element via a use tag, you can still land in a situation where the result is infinite recursion due to the hit test.

&lt;rdar://problem/60002347&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1635755</commentid>
    <comment_count>1</comment_count>
      <attachid>394968</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-03-30 14:51:50 -0700</bug_when>
    <thetext>Created attachment 394968
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636410</commentid>
    <comment_count>2</comment_count>
      <attachid>394968</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-01 00:40:34 -0700</bug_when>
    <thetext>Comment on attachment 394968
Patch

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

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:52
&gt; +    ASSERT(m_visitedElements.isEmpty());

This is a weird and very late assertion. Visiting nodes for hit testing should happen only during that operation.

&gt; Source/WebCore/svg/SVGDocumentExtensions.cpp:379
&gt; +void SVGDocumentExtensions::startVisiting(const RenderElement&amp; element)
&gt; +{
&gt; +    // We should never be visiting an element more than once.
&gt; +    ASSERT(!m_visitedElements.contains(&amp;element));
&gt; +    m_visitedElements.add(&amp;element);
&gt; +}
&gt; +
&gt; +void SVGDocumentExtensions::stopVisiting(const RenderElement&amp; element)
&gt; +{
&gt; +    ASSERT(m_visitedElements.contains(&amp;element));
&gt; +    m_visitedElements.remove(&amp;element);
&gt; +}
&gt; +
&gt; +bool SVGDocumentExtensions::isVisiting(const RenderElement&amp; element)
&gt; +{
&gt; +    return m_visitedElements.contains(&amp;element);
&gt; +}

I do not think tracking the visited renderers in the SVGDocumentExtensions is a good design. I would suggest moving this m_visitedElements to RenderSVGRoot. At the beginning and at the end of RenderSVGRoot::nodeAtPoint(), this m_visitedElements should be empty.

To visit a renderer you can write the following code:

    auto* root = SVGRenderSupport::findTreeRootObject(element);
    root-&gt;startVisiting(element);

And RenderSVGRoot::nodeAtPoint() can look like this:

RenderSVGRoot::nodeAtPoint()
{
    {
        CurrentVisitedElementsMaintainer maintainer(*this);
        for (RenderObject* child = lastChild(); child; child = child-&gt;previousSibling()) {
            ...
        }
    }
    ASSERT(m_visitedElements.isEmpty());

    ...
}

&gt; LayoutTests/svg/hittest/svg-clip-path-child-element-with-use.html:20
&gt; +    &lt;use href=&quot;#group&quot;/&gt;

Please add another test case where the cycle goes to the root.
    &lt;use href=&quot;#svg&quot;/&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1636734</commentid>
    <comment_count>3</comment_count>
      <attachid>395225</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-01 16:28:01 -0700</bug_when>
    <thetext>Created attachment 395225
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637017</commentid>
    <comment_count>4</comment_count>
      <attachid>395225</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2020-04-02 12:45:38 -0700</bug_when>
    <thetext>Comment on attachment 395225
Patch

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

&gt; Source/WebCore/ChangeLog:3
&gt; +        Hit test with clipPath referencing parent element causes infinite recursion (when referenced by use element)

I think the cyclic referencing can happen without the use element. So maybe you need to change the title to something like: SVG cyclic referencing causes hit-testing a clipPath to recurse infinitely.

&gt; Source/WebCore/ChangeLog:12
&gt; +        visiting the same element twice, and thus breaking any cycles which might occur in the SVG document.  By
&gt; +        storing the data at the top of the SVG document, this keeps a finite scope for the set of renderers, and

The visited elements are stored now in the RenderSVGRoot.

&gt; Source/WebCore/ChangeLog:19
&gt; +
&gt; +

One extra line.

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.cpp:405
&gt; +    ASSERT(m_visitedElements.isEmpty());

Since you made m_visitedElements accessible from the methods of this class expect in this place, can&apos;t we add a new function and name isVisitingAny() or something similar and replace this assertion by 

ASSERT(!isVisitingAny());

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.cpp:458
&gt; +    // We should never be visiting an element more than once.

This comment adds no value. The assertion below says the same thing.

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.cpp:460
&gt; +    ASSERT(!m_visitedElements.contains(&amp;element));
&gt; +    m_visitedElements.add(&amp;element);

Another way to write this and save one HashSet traversal is:

auto result = m_visitedElements.add(&amp;element);
ASSERT_UNUSED(result, result.isNewEntry);

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.cpp:466
&gt; +    ASSERT(m_visitedElements.contains(&amp;element));
&gt; +    m_visitedElements.remove(&amp;element);

Another way to write this is:

bool result = m_visitedElements.remove(&amp;element);
ASSERT_UNUSED(result, result);

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:105
&gt; +    WeakPtr&lt;RenderElement&gt; m_element;

I am puzzled by this WeakPtr. m_visitedElements is supposed to keep renderers while they are alive in the calling stack. So there is no possibility at any point that any of them will be freed before it is removed from m_visitedElements. So I think we do not need m_element and it is fine to have m_visitedElements be HashSet of raw pointers.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637033</commentid>
    <comment_count>5</comment_count>
      <attachid>395225</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-02 13:32:11 -0700</bug_when>
    <thetext>Comment on attachment 395225
Patch

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

&gt;&gt; Source/WebCore/ChangeLog:3
&gt;&gt; +        Hit test with clipPath referencing parent element causes infinite recursion (when referenced by use element)
&gt; 
&gt; I think the cyclic referencing can happen without the use element. So maybe you need to change the title to something like: SVG cyclic referencing causes hit-testing a clipPath to recurse infinitely.

Fair, I was distinguishing this from the past change. :)

&gt;&gt; Source/WebCore/ChangeLog:12
&gt;&gt; +        storing the data at the top of the SVG document, this keeps a finite scope for the set of renderers, and
&gt; 
&gt; The visited elements are stored now in the RenderSVGRoot.

Good catch.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGRoot.cpp:405
&gt;&gt; +    ASSERT(m_visitedElements.isEmpty());
&gt; 
&gt; Since you made m_visitedElements accessible from the methods of this class expect in this place, can&apos;t we add a new function and name isVisitingAny() or something similar and replace this assertion by 
&gt; 
&gt; ASSERT(!isVisitingAny());

I&apos;m not sure I understand your point here -- it&apos;s not that I made m_visitedElements accessible from the methods of the class; it *is* a member of the class.  In any case, this check isn&apos;t performed anywhere else besides this function... I don&apos;t think an additional function for this test makes much sense.

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:105
&gt;&gt; +    WeakPtr&lt;RenderElement&gt; m_element;
&gt; 
&gt; I am puzzled by this WeakPtr. m_visitedElements is supposed to keep renderers while they are alive in the calling stack. So there is no possibility at any point that any of them will be freed before it is removed from m_visitedElements. So I think we do not need m_element and it is fine to have m_visitedElements be HashSet of raw pointers.

This may not need to be a WeakPtr, but the purpose of this class is to manage scope of visited elements -- when this object is destroyed, it will correctly remove the element from m_visitedElements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1637038</commentid>
    <comment_count>6</comment_count>
      <attachid>395293</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-02 13:35:25 -0700</bug_when>
    <thetext>Created attachment 395293
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638743</commentid>
    <comment_count>7</comment_count>
      <attachid>395293</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-07 12:54:28 -0700</bug_when>
    <thetext>Comment on attachment 395293
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.h:120
&gt; +    HashSet&lt;const RenderElement*&gt; m_visitedElements;

If the visited elements set should only exist within the scope of a given CurrentVisitedElementsMaintainer, then perhaps it would be clearer (and smaller) for this data member to be a pointer to a CurrentVisitedElementsMaintainer, and the CurrentVisitedElementsMaintainer can hold the set of visited elements, and implement the functionality of startVisiting / stopVisiting / isVisiting.

(In the ideal world, we would explicitly pass the CurrentVisitedElementsMaintainer object to every function that needed to participate; but if that&apos;s not practical, storing a pointer to the CurrentVisitedElementsMaintainer inside the RenderSVGRoot seems OK to me. I don&apos;t really love the design where m_visitedElements lives on the RenderSVGRoot because it&apos;s a paradox for a heap-allocated object to maintain stack-scoped state.)

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:98
&gt; +class CurrentVisitedElementsMaintainer {

Let&apos;s call this VisitedElementsScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638744</commentid>
    <comment_count>8</comment_count>
      <attachid>395293</attachid>
    <who name="Ryosuke Niwa">rniwa</who>
    <bug_when>2020-04-07 12:54:44 -0700</bug_when>
    <thetext>Comment on attachment 395293
Patch

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

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.h:67
&gt; +    void startVisiting(RenderElement&amp;);
&gt; +    void stopVisiting(RenderElement&amp;);
&gt; +    bool isVisiting(const RenderElement&amp;) const;

There are very generic names. We should probably rename them to something like:
addElementToCycleDetector, removeElementFromCycleDetector, &amp; isElementInCycle or something.

&gt; Source/WebCore/rendering/svg/RenderSVGRoot.h:120
&gt; +    HashSet&lt;const RenderElement*&gt; m_visitedElements;

Please use WeakHashSet.

&gt; Source/WebCore/rendering/svg/RenderSVGShape.cpp:369
&gt; +    CurrentVisitedElementsMaintainer maintainer(*this);

We usually call these objects *Scope. I think we should call this one SVGCycleDetectionScope or something.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:98
&gt; +class CurrentVisitedElementsMaintainer {

This is a very generic name. We should probably call it SVGRenderCycleDetectionScope.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638921</commentid>
    <comment_count>9</comment_count>
      <attachid>395768</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-07 20:13:15 -0700</bug_when>
    <thetext>Created attachment 395768
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638934</commentid>
    <comment_count>10</comment_count>
      <attachid>395768</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-07 21:07:20 -0700</bug_when>
    <thetext>Comment on attachment 395768
Patch

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

r=me

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:107
&gt; +    static WeakHashSet&lt;RenderElement&gt;&amp; getVisitedElements();

WebKit style is to name a C++ accessor by the accessed value&apos;s name. In this case, &quot;visitedElements()&quot;. (We usually reserve the &quot;get&quot; prefix for something that returns an out parameter.)

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:108
&gt; +    static WeakHashSet&lt;RenderElement&gt;&amp; getVisitedElements();
&gt; +    WeakPtr&lt;RenderElement&gt; m_element;

Upon reflection, I think it would be slightly clearer to make these pointers RefPtr. We don&apos;t actually intend for them to become null or disappear -- we just want a safe pointer idiom.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638951</commentid>
    <comment_count>11</comment_count>
      <attachid>395768</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-07 23:49:42 -0700</bug_when>
    <thetext>Comment on attachment 395768
Patch

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

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:107
&gt;&gt; +    static WeakHashSet&lt;RenderElement&gt;&amp; getVisitedElements();
&gt; 
&gt; WebKit style is to name a C++ accessor by the accessed value&apos;s name. In this case, &quot;visitedElements()&quot;. (We usually reserve the &quot;get&quot; prefix for something that returns an out parameter.)

Seems reasonable (and easy enough to do).

&gt;&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:108
&gt;&gt; +    WeakPtr&lt;RenderElement&gt; m_element;
&gt; 
&gt; Upon reflection, I think it would be slightly clearer to make these pointers RefPtr. We don&apos;t actually intend for them to become null or disappear -- we just want a safe pointer idiom.

RenderObject doesn&apos;t seem to inherit from RefCounted, so I *think* the best I can do is a WeakPtr?  At least, trying to use a RefPtr encounters a compiler error because deref() doesn&apos;t exist.  (Also, I don&apos;t assume you&apos;re implying that WeakHashSet should be changed, because I don&apos;t see an analog here.)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1638958</commentid>
    <comment_count>12</comment_count>
      <attachid>395777</attachid>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-08 00:26:11 -0700</bug_when>
    <thetext>Created attachment 395777
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639098</commentid>
    <comment_count>13</comment_count>
    <who name="alan">zalan</who>
    <bug_when>2020-04-08 09:42:21 -0700</bug_when>
    <thetext>&gt; Upon reflection, I think it would be slightly clearer to make these pointers
&gt; RefPtr. We don&apos;t actually intend for them to become null or disappear -- we
&gt; just want a safe pointer idiom.
Renderers should not be refcounted as they have a very clear ownership (and it is never a shared one). We&apos;ve been using the weakptr to indicate weak reference across the rendering codebase.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639101</commentid>
    <comment_count>14</comment_count>
      <attachid>395777</attachid>
    <who name="Geoffrey Garen">ggaren</who>
    <bug_when>2020-04-08 09:48:44 -0700</bug_when>
    <thetext>Comment on attachment 395777
Patch

r=me

Okeedokee</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639113</commentid>
    <comment_count>15</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-04-08 10:00:38 -0700</bug_when>
    <thetext>Committed r259722: &lt;https://trac.webkit.org/changeset/259722&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 395777.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639148</commentid>
    <comment_count>16</comment_count>
      <attachid>395777</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2020-04-08 10:48:56 -0700</bug_when>
    <thetext>Comment on attachment 395777
Patch

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

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:521
&gt; +    bool result = visitedElements().remove(*m_element.get());

Normally we don’t need both &quot;*&quot; and &quot;.get()&quot;.

&gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:101
&gt; +    SVGHitTestCycleDetectionScope(const RenderElement&amp;);

We should add &quot;explicit&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1639176</commentid>
    <comment_count>17</comment_count>
    <who name="Doug Kelly">dougk</who>
    <bug_when>2020-04-08 11:25:51 -0700</bug_when>
    <thetext>(In reply to Darin Adler from comment #16)
&gt; Comment on attachment 395777 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=395777&amp;action=review
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/SVGRenderSupport.cpp:521
&gt; &gt; +    bool result = visitedElements().remove(*m_element.get());
&gt; 
&gt; Normally we don’t need both &quot;*&quot; and &quot;.get()&quot;.
&gt; 
&gt; &gt; Source/WebCore/rendering/svg/SVGRenderSupport.h:101
&gt; &gt; +    SVGHitTestCycleDetectionScope(const RenderElement&amp;);
&gt; 
&gt; We should add &quot;explicit&quot;.

Thanks, addressed in bug #210203.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>394968</attachid>
            <date>2020-03-30 14:51:50 -0700</date>
            <delta_ts>2020-04-01 16:28:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209773-20200330145149.patch</filename>
            <type>text/plain</type>
            <size>15431</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjZDg5MWM1YzVjMWMw
NTU0ODk1YWViZjMzYjI1MTlkODkxMTBlOS4uMjczODYwZmFmMGNiMjgzNzU3NjI3MDVjYWVkMDli
NmUyNzM2YTc0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ0IEBACisyMDIwLTAzLTMwICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBh
dGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbiAo
d2hlbiByZWZlcmVuY2VkIGJ5IHVzZSBlbGVtZW50KQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBvbiBmdXJ0aGVyIGludmVzdGlnYXRpb24sIHRoZSBv
cmlnaW5hbCBmaXggZm9yIHRoZSBoaXQgdGVzdCBpbiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIg
dG8gcHJldmVudAorICAgICAgICBpbmZpbml0ZSByZWN1cnNpb24gd2FzIGluY29tcGxldGUsIGFz
IHNvbWV0aGluZyBzdWNoIGFzIGEgdXNlIGVsZW1lbnQgY291bGQgZWFzaWx5IGNhdXNlIGFub3Ro
ZXIgY3ljbGUgd2hpY2gKKyAgICAgICAgd291bGQgbm90IGJlIGRldGVjdGVkIGJ5IHRoZSBpbml0
aWFsIGZpeC4gIEluc3RlYWQsIGJ5IG1haW50YWluaW5nIGEgc2V0IG9mIHZpc2l0ZWQgZWxlbWVu
dHMsIHdlIGNhbiBwcmV2ZW50CisgICAgICAgIHZpc2l0aW5nIHRoZSBzYW1lIGVsZW1lbnQgdHdp
Y2UsIGFuZCB0aHVzIGJyZWFraW5nIGFueSBjeWNsZXMgd2hpY2ggbWlnaHQgb2NjdXIgaW4gdGhl
IFNWRyBkb2N1bWVudC4gIEJ5CisgICAgICAgIHN0b3JpbmcgdGhlIGRhdGEgYXQgdGhlIHRvcCBv
ZiB0aGUgU1ZHIGRvY3VtZW50LCB0aGlzIGtlZXBzIGEgZmluaXRlIHNjb3BlIGZvciB0aGUgc2V0
IG9mIHJlbmRlcmVycywgYW5kCisgICAgICAgIHByb3ZpZGVzIGEgZ29vZCBwb2ludCB0byBhc3Nl
cnQgdGhhdCB3ZSBjb3JyZWN0bHkgY2xlYW4gdXAgb3VyIHNldCBvZiB2aXNpdGVkIG5vZGVzIChh
bHRob3VnaCB0aGUgUkFJSS1zdHlsZQorICAgICAgICBDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFp
bnRhaW5lciBzaG91bGQgZG8gdGhpcyBmb3IgdXMpLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJl
ZCBieSBhbiBleGlzdGluZyB0ZXN0LCBidXQgaW5jbHVkZXMgYW4gYWRkaXRpb25hbCB0ZXN0IGNh
c2Ugd2hpY2ggaWxsdXN0cmF0ZXMgdGhlIG1vcmUgY29tcGxleAorICAgICAgICBkb2N1bWVudCBz
dHJ1Y3R1cmUuCisKKyAgICAgICAgVGVzdDogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xp
cENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3Vw
cG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSk6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdEb2N1bWVudEV4dGVuc2lvbnM6On5T
VkdEb2N1bWVudEV4dGVuc2lvbnMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRG9jdW1lbnRFeHRl
bnNpb25zOjpzdGFydFZpc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6c3RvcFZpc2l0aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0RvY3VtZW50RXh0
ZW5zaW9uczo6aXNWaXNpdGluZyk6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50VmlzaXRlZEVs
ZW1lbnRzTWFpbnRhaW5lcjo6Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXI6On5DdXJyZW50
VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lcik6CisgICAgICAgICogc3ZnL1NWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oOgorCiAyMDIwLTAzLTI1ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+
CiAKICAgICAgICAgRXZlbnQgbGlzdGVuZXJzIHJlZ2lzdGVyZWQgd2l0aCAnb25jZScgb3B0aW9u
IG1heSBnZXQgZ2FyYmFnZSBjb2xsZWN0ZWQgdG9vIHNvb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcAppbmRleCBiMmJmNWRlODhh
N2RkNDdlYmM3MTg4MTkyZmQ4ZjBhZmY2MzBmZTg5Li4yMmY4NTExODBlYmNlZTA4MzRiNmUwZDA4
ZjMxZGQyMmVhZTg2ZDY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBAIC0zMiw2ICszMiw3IEBACiAjaW5jbHVkZSAiUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJUcmVlQnVpbGRlci5oIgog
I2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNpbmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMu
aCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3Vy
Y2VzLmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzQ2FjaGUuaCIKQEAgLTE2NSw3ICsxNjYsOSBA
QCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0
UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAogCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpw
b2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwotICAgICAgICAgICAgICAgIAorCisgICAgQ3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50
YWluZXIgbWFpbnRhaW5lcigqdGhpcyk7CisKICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQg
PSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxkID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7
CiAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxv
Y2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVz
dWx0KHJlc3VsdCwgTGF5b3V0UG9pbnQobG9jYWxQb2ludCkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCAyNzhlYjljNGQxOTZhNzk3
OTc2YTZlMTUxMmM1MjA1YjIwZmFhZmY1Li40NmRiM2Y3YmFmODdjZDdiZTI5NGVkMWZmY2I1YzVi
MTIzZjJmNGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R0ltYWdlLmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAj
aW5jbHVkZSAiUmVuZGVyU1ZHUmVzb3VyY2UuaCIKICNpbmNsdWRlICJSZW5kZXJTVkdSZXNvdXJj
ZUZpbHRlci5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0ZW5zaW9ucy5oIgogI2luY2x1ZGUg
IlNWR0ltYWdlRWxlbWVudC5oIgogI2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNp
bmNsdWRlICJTVkdSZXNvdXJjZXMuaCIKQEAgLTIyNiw2ICsyMjcsOCBAQCBib29sIFJlbmRlclNW
R0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBI
aXRUZXN0UmVzdQogICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGlu
Z0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisg
ICAgICAgIEN1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyIG1haW50YWluZXIoKnRoaXMp
OworCiAgICAgICAgIGlmIChoaXRSdWxlcy5jYW5IaXRGaWxsKSB7CiAgICAgICAgICAgICBpZiAo
bV9vYmplY3RCb3VuZGluZ0JveC5jb250YWlucyhsb2NhbFBvaW50KSkgewogICAgICAgICAgICAg
ICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBMYXlvdXRQb2ludChsb2NhbFBvaW50KSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291
cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAKaW5kZXggYWJkYmY0NjRhZWM1MWJhMjlmOWFkYjJkZDJlZTk4NDk4
YTlmZWUzZS4uM2YyM2UyNWI0ZTIyZmM3ZmI0ODlmMzc0YmIxNzAwM2EzOTFlZjg0OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBw
ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyLmNwcApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgIlJlbmRlclNWR1RleHQu
aCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKKyNp
bmNsdWRlICJTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCIKICNpbmNsdWRlICJTVkdOYW1lcy5oIgog
I2luY2x1ZGUgIlNWR1JlbmRlcmluZ0NvbnRleHQuaCIKICNpbmNsdWRlICJTVkdSZXNvdXJjZXMu
aCIKQEAgLTI2Miw2ICsyNjMsOCBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlcjo6aGl0
VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRpbgogICAgIGlmICgh
U1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgcG9pbnQpKQogICAg
ICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5l
ciBtYWludGFpbmVyKCp0aGlzKTsKKwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0
aFVuaXRzKCkgPT0gU1ZHVW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9Y
KSB7CiAgICAgICAgIEFmZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9y
bS50cmFuc2xhdGUob2JqZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CkBAIC0yNzgsMTUgKzI4
MSw2IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQo
Y29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3VuZGluCiAgICAgICAgIGlmICghcmVuZGVyZXItPmlz
U1ZHU2hhcGUoKSAmJiAhcmVuZGVyZXItPmlzU1ZHVGV4dCgpICYmICFjaGlsZE5vZGUtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OnVzZVRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAg
ICBjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAg
aWYgKGlzPFJlZmVyZW5jZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgewot
ICAgICAgICAgICAgYXV0byYgY2xpcFBhdGggPSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9w
ZXJhdGlvbj4oKnN0eWxlLmNsaXBQYXRoKCkpOwotICAgICAgICAgICAgQXRvbVN0cmluZyBpZChj
bGlwUGF0aC5mcmFnbWVudCgpKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ciogY2xpcHBlciA9IGdldFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXI+KGRvY3VtZW50KCksIGlkKTsKLSAgICAgICAgICAgIGlmIChjbGlwcGVyID09IHRoaXMp
Ci0gICAgICAgICAgICAgICAgY29udGludWU7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRQb2lu
dCBoaXRQb2ludDsKICAgICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoaGl0UG9pbnQpOwogICAg
ICAgICBjb25zdGV4cHIgT3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0
VHlwZSB7IEhpdFRlc3RSZXF1ZXN0OjpTVkdDbGlwQ29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkRp
c2FsbG93VXNlckFnZW50U2hhZG93Q29udGVudCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAppbmRleCBmYTE5ZDE1YmI0NTY0NGZjMWJjYTli
MWRmNTIzODE3MGY5ZDljOTRlLi41NmU2ZTQ1ZmUyYzY0NmVjMGZmMDlkMTE3NGUwN2RmZTQyN2I0
ZTMyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1No
YXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBl
LmNwcApAQCAtMzgsNiArMzgsNyBAQAogI2luY2x1ZGUgIlBvaW50ZXJFdmVudHNIaXRSdWxlcy5o
IgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNlTWFya2VyLmgiCiAjaW5jbHVkZSAiUmVuZGVy
U1ZHUmVzb3VyY2VTb2xpZENvbG9yLmgiCisjaW5jbHVkZSAiU1ZHRG9jdW1lbnRFeHRlbnNpb25z
LmgiCiAjaW5jbHVkZSAiU1ZHUGF0aERhdGEuaCIKICNpbmNsdWRlICJTVkdSZW5kZXJpbmdDb250
ZXh0LmgiCiAjaW5jbHVkZSAiU1ZHUmVzb3VyY2VzLmgiCkBAIC0zNjYsNiArMzY3LDggQEAgYm9v
bCBSZW5kZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3UKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5D
bGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
KyAgICBDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lciBtYWludGFpbmVyKCp0aGlzKTsK
KwogICAgIFBvaW50ZXJFdmVudHNIaXRSdWxlcyBoaXRSdWxlcyhQb2ludGVyRXZlbnRzSGl0UnVs
ZXM6OlNWR19QQVRIX0hJVFRFU1RJTkcsIHJlcXVlc3QsIHN0eWxlKCkucG9pbnRlckV2ZW50cygp
KTsKICAgICBib29sIGlzVmlzaWJsZSA9IChzdHlsZSgpLnZpc2liaWxpdHkoKSA9PSBWaXNpYmls
aXR5OjpWaXNpYmxlKTsKICAgICBpZiAoaXNWaXNpYmxlIHx8ICFoaXRSdWxlcy5yZXF1aXJlVmlz
aWJsZSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJT
VkdUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5j
cHAKaW5kZXggZjAyMzUxOTMwODU2NTU0ZGRlZTgyM2E4NGNjMmM1NGViY2FjNWQzYy4uNzI4YzIx
YWE4MTJkYTZiNjBhMWMzMWY4ZmM1NDQwZmYzMmJlMjkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCkBAIC0zOSw2ICszOSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyU1ZHSW5saW5lVGV4dC5oIgogI2luY2x1ZGUgIlJlbmRlclNWR1Jlc291cmNl
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU1ZHUm9vdC5oIgorI2luY2x1ZGUgIlNWR0RvY3VtZW50RXh0
ZW5zaW9ucy5oIgogI2luY2x1ZGUgIlNWR0xlbmd0aExpc3QuaCIKICNpbmNsdWRlICJTVkdSZXNv
dXJjZXNDYWNoZS5oIgogI2luY2x1ZGUgIlNWR1Jvb3RJbmxpbmVCb3guaCIKQEAgLTQ0MCw2ICs0
NDEsOCBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVz
dFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgICAgICAgICAgaWYgKCFTVkdSZW5k
ZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAg
ICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIAogCisgICAgICAgICAgICBDdXJyZW50Vmlz
aXRlZEVsZW1lbnRzTWFpbnRhaW5lciBtYWludGFpbmVyKCp0aGlzKTsKKwogICAgICAgICAgICAg
SGl0VGVzdExvY2F0aW9uIGhpdFRlc3RMb2NhdGlvbihMYXlvdXRQb2ludChmbG9vcmVkSW50UG9p
bnQobG9jYWxQb2ludCkpKTsKICAgICAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6bm9kZUF0
UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0TG9jYXRpb24sIExheW91dFBvaW50KCksIGhp
dFRlc3RBY3Rpb24pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmY2FmMDBjNTBiYmY2MDNlZjNhM2E5ZmQ4
MzRkM2M5OWUzMzNiOTU1Li5iYWRiM2QyNDUwMjYzYWRjNzBkMzAyYjNjMmQyYWU5MGFkMTE5OGU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBv
cnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAKQEAgLTQwNyw2ICs0MDcsOSBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250
ZXh0VG9DU1NDbGlwcGluZ0FyZWEoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogCiBib29s
IFNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoY29uc3QgUmVuZGVyRWxlbWVu
dCYgcmVuZGVyZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogeworICAgIGlmIChyZW5kZXJl
ci5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5pc1Zpc2l0aW5nKHJlbmRlcmVyKSkK
KyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQ2xpcFBhdGhPcGVyYXRpb24qIGNsaXBQYXRo
T3BlcmF0aW9uID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0aCgpOwogICAgIGlmIChpczxTaGFw
ZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlvbikgfHwgaXM8Qm94Q2xpcFBhdGhP
cGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkKICAgICAgICAgcmV0dXJuIGlzUG9pbnRJbkNT
U0NsaXBwaW5nQXJlYShyZW5kZXJlciwgcG9pbnQpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmNwcAppbmRleCBhNzFiYjAwMWE5MWMzNjJhY2JiMGFiOWI4YzM3
MDg1NGY0M2ViOGZlLi43YmZlNzIzOTM2NjE0N2Y2MWI0NzQ0NGJmZmQ1NzMwNDBjZmUxOWUwIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcApAQCAtMjgs
NiArMjgsNyBAQAogI2luY2x1ZGUgIkZyYW1lLmgiCiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIK
ICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNNSUxUaW1lQ29udGFpbmVyLmgiCiAjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlNWR1Jlc291cmNlc0NhY2hlLmgiCkBAIC00Niw3ICs0NywxMCBAQCBTVkdEb2N1bWVudEV4dGVu
c2lvbnM6OlNWR0RvY3VtZW50RXh0ZW5zaW9ucyhEb2N1bWVudCYgZG9jdW1lbnQpCiB7CiB9CiAK
LVNWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygpID0gZGVmYXVs
dDsKK1NWR0RvY3VtZW50RXh0ZW5zaW9uczo6flNWR0RvY3VtZW50RXh0ZW5zaW9ucygpCit7Cisg
ICAgQVNTRVJUKG1fdmlzaXRlZEVsZW1lbnRzLmlzRW1wdHkoKSk7Cit9CiAKIHZvaWQgU1ZHRG9j
dW1lbnRFeHRlbnNpb25zOjphZGRUaW1lQ29udGFpbmVyKFNWR1NWR0VsZW1lbnQmIGVsZW1lbnQp
CiB7CkBAIC0zNTYsNCArMzYwLDMzIEBAIHZvaWQgU1ZHRG9jdW1lbnRFeHRlbnNpb25zOjp1bnJl
Z2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KFNWR0ZvbnRGYWNlRWxlbWVudCYgZWxlCiAKICNlbmRp
ZgogCit2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c3RhcnRWaXNpdGluZyhjb25zdCBSZW5k
ZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIFdlIHNob3VsZCBuZXZlciBiZSB2aXNpdGlu
ZyBhbiBlbGVtZW50IG1vcmUgdGhhbiBvbmNlLgorICAgIEFTU0VSVCghbV92aXNpdGVkRWxlbWVu
dHMuY29udGFpbnMoJmVsZW1lbnQpKTsKKyAgICBtX3Zpc2l0ZWRFbGVtZW50cy5hZGQoJmVsZW1l
bnQpOworfQorCit2b2lkIFNWR0RvY3VtZW50RXh0ZW5zaW9uczo6c3RvcFZpc2l0aW5nKGNvbnN0
IFJlbmRlckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgQVNTRVJUKG1fdmlzaXRlZEVsZW1lbnRz
LmNvbnRhaW5zKCZlbGVtZW50KSk7CisgICAgbV92aXNpdGVkRWxlbWVudHMucmVtb3ZlKCZlbGVt
ZW50KTsKK30KKworYm9vbCBTVkdEb2N1bWVudEV4dGVuc2lvbnM6OmlzVmlzaXRpbmcoY29uc3Qg
UmVuZGVyRWxlbWVudCYgZWxlbWVudCkKK3sKKyAgICByZXR1cm4gbV92aXNpdGVkRWxlbWVudHMu
Y29udGFpbnMoJmVsZW1lbnQpOworfQorCitDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5l
cjo6Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYg
ZWxlbWVudCkKK3sKKyAgICBtX2VsZW1lbnQgPSBtYWtlV2Vha1B0cigmZWxlbWVudCk7CisgICAg
bV9lbGVtZW50LT5kb2N1bWVudCgpLmFjY2Vzc1NWR0V4dGVuc2lvbnMoKS5zdGFydFZpc2l0aW5n
KCptX2VsZW1lbnQuZ2V0KCkpOworfQorCitDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5l
cjo6fkN1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyKCkKK3sKKyAgICBtX2VsZW1lbnQt
PmRvY3VtZW50KCkuYWNjZXNzU1ZHRXh0ZW5zaW9ucygpLnN0b3BWaXNpdGluZygqbV9lbGVtZW50
LmdldCgpKTsKK30KKwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3Vt
ZW50RXh0ZW5zaW9ucy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0RvY3VtZW50RXh0ZW5zaW9u
cy5oCmluZGV4IDAzNTYzZGY0M2Q4NjY1MzFlYjljZjhlNGNmNzIxNGMxZWRjNThhODEuLjRhZTEw
NzlkOWFkNjI5ZTY3NmMyZWY4MjAyNWY3NjNmYTY3ZmY2ZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdEb2N1bWVudEV4dGVuc2lvbnMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmgKQEAgLTc2LDEyICs3NiwxNyBAQCBwdWJsaWM6CiAg
ICAgdm9pZCB1bnJlZ2lzdGVyU1ZHRm9udEZhY2VFbGVtZW50KFNWR0ZvbnRGYWNlRWxlbWVudCYp
OwogI2VuZGlmCiAKKyAgICB2b2lkIHN0YXJ0VmlzaXRpbmcoY29uc3QgUmVuZGVyRWxlbWVudCYp
OworICAgIHZvaWQgc3RvcFZpc2l0aW5nKGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKKyAgICBib29s
IGlzVmlzaXRpbmcoY29uc3QgUmVuZGVyRWxlbWVudCYpOworCiBwcml2YXRlOgogICAgIERvY3Vt
ZW50JiBtX2RvY3VtZW50OwogICAgIEhhc2hTZXQ8U1ZHU1ZHRWxlbWVudCo+IG1fdGltZUNvbnRh
aW5lcnM7IC8vIEZvciBTVkcgMS4yIHN1cHBvcnQgdGhpcyB3aWxsIG5lZWQgdG8gYmUgbWFkZSBt
b3JlIGdlbmVyYWwuCiAjaWYgRU5BQkxFKFNWR19GT05UUykKICAgICBIYXNoU2V0PFNWR0ZvbnRG
YWNlRWxlbWVudCo+IG1fc3ZnRm9udEZhY2VFbGVtZW50czsKICNlbmRpZgorICAgIEhhc2hTZXQ8
Y29uc3QgUmVuZGVyRWxlbWVudCo+IG1fdmlzaXRlZEVsZW1lbnRzOwogICAgIEhhc2hNYXA8QXRv
bVN0cmluZywgUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIqPiBtX3Jlc291cmNlczsKICAgICBI
YXNoTWFwPEF0b21TdHJpbmcsIHN0ZDo6dW5pcXVlX3B0cjxQZW5kaW5nRWxlbWVudHM+PiBtX3Bl
bmRpbmdSZXNvdXJjZXM7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nLgogICAgIEhhc2hN
YXA8QXRvbVN0cmluZywgc3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4+IG1fcGVuZGlu
Z1Jlc291cmNlc0ZvclJlbW92YWw7IC8vIFJlc291cmNlcyB0aGF0IGFyZSBwZW5kaW5nIGFuZCBz
Y2hlZHVsZWQgZm9yIHJlbW92YWwuCkBAIC0xMTEsNCArMTE2LDE0IEBAIHByaXZhdGU6CiAgICAg
c3RkOjp1bmlxdWVfcHRyPFBlbmRpbmdFbGVtZW50cz4gcmVtb3ZlUGVuZGluZ1Jlc291cmNlRm9y
UmVtb3ZhbChjb25zdCBBdG9tU3RyaW5nJik7CiB9OwogCitjbGFzcyBDdXJyZW50VmlzaXRlZEVs
ZW1lbnRzTWFpbnRhaW5lciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoQ3VycmVudFZpc2l0
ZWRFbGVtZW50c01haW50YWluZXIpOworcHVibGljOgorICAgIEN1cnJlbnRWaXNpdGVkRWxlbWVu
dHNNYWludGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKKyAgICB+Q3VycmVudFZpc2l0ZWRF
bGVtZW50c01haW50YWluZXIoKTsKKworcHJpdmF0ZToKKyAgICBXZWFrUHRyPFJlbmRlckVsZW1l
bnQ+IG1fZWxlbWVudDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCA5YWEy
YTQyNmI1NjRhMzRhNTAwODM1NDQ1YzNjNzU5YWJhZmE0M2IxLi4zNTgzODllMjM0NzQ3Nzc5Yzc0
MmI3YTllMWQ0YmI4YThjZjVlODQwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cK
KysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTMgQEAKKzIwMjAtMDMtMzAg
IERvdWcgS2VsbHkgIDxkb3Vna0BhcHBsZS5jb20+CisKKyAgICAgICAgSGl0IHRlc3Qgd2l0aCBj
bGlwUGF0aCByZWZlcmVuY2luZyBwYXJlbnQgZWxlbWVudCBjYXVzZXMgaW5maW5pdGUgcmVjdXJz
aW9uICh3aGVuIHJlZmVyZW5jZWQgYnkgdXNlIGVsZW1lbnQpCisgICAgICAgIGh0dHBzOi8vYnVn
cy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzMKKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgt
Y2hpbGQtZWxlbWVudC13aXRoLXVzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS5odG1sOiBBZGRl
ZC4KKwogMjAyMC0wMy0yNSAgSmFzb24gTGF3cmVuY2UgIDxsYXdyZW5jZS5qQGFwcGxlLmNvbT4K
IAogICAgICAgICBbIE1hYyB3azIgXSBzdmcvYXMtaW1hZ2Uvc3ZnLWltYWdlLXdpdGgtZGF0YS11
cmktYmFja2dyb3VuZC5odG1sIGlzIGZsYWt5IGZhaWxpbmcuCmRpZmYgLS1naXQgYS9MYXlvdXRU
ZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UtZXhw
ZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1l
bGVtZW50LXdpdGgtdXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjZhMmJiYjFkYzQ4Njg5
NDVhMTUyNWQ0NWY1MTkyZDdmYjNlOWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMv
c3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLWV4cGVjdGVk
LnR4dApAQCAtMCwwICsxIEBACitUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJlY3Vyc2l2ZSBj
bGlwUGF0aC4gVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQQVNTCmRpZmYg
LS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1l
bnQtd2l0aC11c2UuaHRtbCBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgt
Y2hpbGQtZWxlbWVudC13aXRoLXVzZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmM5NGQ4NDIyNjI3MzgxZGVj
MTAyNDM3ZjhlMzkyMGM4YzM2YzVjMjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UuaHRtbApAQCAt
MCwwICsxLDIxIEBACis8c3R5bGU+CisucGF0aCB7IC13ZWJraXQtY2xpcC1wYXRoOiB1cmwoI2Ns
aXBwYXRoKTsgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkZXZlbnQoKSB7Cisg
ICAgZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2ludCgzNywgNzApOworICAgIGlmICh3aW5kb3cu
dGVzdFJ1bm5lcikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUZXN0cyBT
VkcgaGl0IHRlc3Qgd2l0aCBhIHJlY3Vyc2l2ZSBjbGlwUGF0aC4gIFRlc3QgcGFzc2VzIGlmIFdl
YktpdCBkb2VzIG5vdCBjcmFzaC4gIFBBU1MiOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1Rl
eHQoKTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1sb2FkZXZlbnQoKT4KKzxz
dmcgY29udGVudFNjcmlwdFR5cGU9InRleHQvZWNtYXNjcmlwdCI+Cis8cGF0aCBkPSJNMTYgOCBM
MzIgNTYiIGNsYXNzPSJwYXRoIiAvPgorPGcgaWQ9Imdyb3VwIj4KKyAgICA8dGV4dCBjbGlwLXBh
dGg9InVybCgjY2xpcHBhdGgpIiB0bz0iY3VycmVudENvbG9yIj5UZXh0PC90ZXh0PgorPC9nPgor
PGNsaXBQYXRoIGlkPSJjbGlwcGF0aCIgY2xpcFBhdGhVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3gi
PgorICAgIDx1c2UgaHJlZj0iI2dyb3VwIi8+Cis8L2NsaXBQYXRoPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395225</attachid>
            <date>2020-04-01 16:28:01 -0700</date>
            <delta_ts>2020-04-02 13:35:23 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209773-20200401162801.patch</filename>
            <type>text/plain</type>
            <size>17519</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjZDg5MWM1YzVjMWMw
NTU0ODk1YWViZjMzYjI1MTlkODkxMTBlOS4uOGQzMTgwMDBmZmNkYjI2MzJkOGM1ZDkxOWQzOWJm
MWE2YWI1N2VkNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ3IEBACisyMDIwLTA0LTAxICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBh
dGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbiAo
d2hlbiByZWZlcmVuY2VkIGJ5IHVzZSBlbGVtZW50KQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBvbiBmdXJ0aGVyIGludmVzdGlnYXRpb24sIHRoZSBv
cmlnaW5hbCBmaXggZm9yIHRoZSBoaXQgdGVzdCBpbiBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIg
dG8gcHJldmVudAorICAgICAgICBpbmZpbml0ZSByZWN1cnNpb24gd2FzIGluY29tcGxldGUsIGFz
IHNvbWV0aGluZyBzdWNoIGFzIGEgdXNlIGVsZW1lbnQgY291bGQgZWFzaWx5IGNhdXNlIGFub3Ro
ZXIgY3ljbGUgd2hpY2gKKyAgICAgICAgd291bGQgbm90IGJlIGRldGVjdGVkIGJ5IHRoZSBpbml0
aWFsIGZpeC4gIEluc3RlYWQsIGJ5IG1haW50YWluaW5nIGEgc2V0IG9mIHZpc2l0ZWQgZWxlbWVu
dHMsIHdlIGNhbiBwcmV2ZW50CisgICAgICAgIHZpc2l0aW5nIHRoZSBzYW1lIGVsZW1lbnQgdHdp
Y2UsIGFuZCB0aHVzIGJyZWFraW5nIGFueSBjeWNsZXMgd2hpY2ggbWlnaHQgb2NjdXIgaW4gdGhl
IFNWRyBkb2N1bWVudC4gIEJ5CisgICAgICAgIHN0b3JpbmcgdGhlIGRhdGEgYXQgdGhlIHRvcCBv
ZiB0aGUgU1ZHIGRvY3VtZW50LCB0aGlzIGtlZXBzIGEgZmluaXRlIHNjb3BlIGZvciB0aGUgc2V0
IG9mIHJlbmRlcmVycywgYW5kCisgICAgICAgIHByb3ZpZGVzIGEgZ29vZCBwb2ludCB0byBhc3Nl
cnQgdGhhdCB3ZSBjb3JyZWN0bHkgY2xlYW4gdXAgb3VyIHNldCBvZiB2aXNpdGVkIG5vZGVzIChh
bHRob3VnaCB0aGUgUkFJSS1zdHlsZQorICAgICAgICBDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFp
bnRhaW5lciBzaG91bGQgZG8gdGhpcyBmb3IgdXMpLgorCisgICAgICAgIFRoaXMgaXMgY292ZXJl
ZCBieSBhbiBleGlzdGluZyB0ZXN0LCBidXQgaW5jbHVkZXMgYWRkaXRpb25hbCB0ZXN0IGNhc2Vz
IHdoaWNoIGlsbHVzdHJhdGUgdGhlIG1vcmUgY29tcGxleAorICAgICAgICBkb2N1bWVudCBzdHJ1
Y3R1cmUuCisKKworICAgICAgICBUZXN0czogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2hpdHRlc3Qv
c3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwKKworICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR0NvbnRhaW5lcjo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFn
ZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdS
ZXNvdXJjZUNsaXBwZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VD
bGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQ
b2ludCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290OjpzdGFydFZpc2l0aW5nKToK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnN0b3BWaXNpdGluZyk6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojppc1Zpc2l0aW5nIGNvbnN0KToKKyAgICAgICAgKiBy
ZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1NoYXBlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1NoYXBlOjpub2Rl
QXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludCk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEpOgorICAgICAgICAo
V2ViQ29yZTo6Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXI6OkN1cnJlbnRWaXNpdGVk
RWxlbWVudHNNYWludGFpbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkN1cnJlbnRWaXNpdGVkRWxl
bWVudHNNYWludGFpbmVyOjp+Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oOgorCiAyMDIwLTAzLTI1ICBD
aHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgRXZlbnQgbGlzdGVuZXJz
IHJlZ2lzdGVyZWQgd2l0aCAnb25jZScgb3B0aW9uIG1heSBnZXQgZ2FyYmFnZSBjb2xsZWN0ZWQg
dG9vIHNvb24KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Q29udGFpbmVyLmNwcAppbmRleCBiMmJmNWRlODhhN2RkNDdlYmM3MTg4MTkyZmQ4ZjBhZmY2MzBm
ZTg5Li44ZjZlOTdhNmVkYzQ1NjY3NTA0MThmYWU0ODgzOTI2OTU2ZTlhYzU0IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCkBA
IC0xNjUsNyArMTY1LDkgQEAgYm9vbCBSZW5kZXJTVkdDb250YWluZXI6Om5vZGVBdEZsb2F0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3QKIAogICAgIGlmICghU1ZH
UmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAKKworICAgIEN1cnJlbnRWaXNp
dGVkRWxlbWVudHNNYWludGFpbmVyIG1haW50YWluZXIoKnRoaXMpOworCiAgICAgZm9yIChSZW5k
ZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2
aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVx
dWVzdCwgcmVzdWx0LCBsb2NhbFBvaW50LCBoaXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAg
dXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXgg
Mjc4ZWI5YzRkMTk2YTc5Nzk3NmE2ZTE1MTJjNTIwNWIyMGZhYWZmNS4uNTBkYTgzNGNkZDdhMjM0
ZjQ0MmE1NzllOTU1OGY2OWQ2Nzg5Y2U1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAgLTIyNiw2ICsyMjYsOCBAQCBib29sIFJlbmRl
clNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0
LCBIaXRUZXN0UmVzdQogICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlw
cGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgICAgIEN1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyIG1haW50YWluZXIoKnRo
aXMpOworCiAgICAgICAgIGlmIChoaXRSdWxlcy5jYW5IaXRGaWxsKSB7CiAgICAgICAgICAgICBp
ZiAobV9vYmplY3RCb3VuZGluZ0JveC5jb250YWlucyhsb2NhbFBvaW50KSkgewogICAgICAgICAg
ICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBMYXlvdXRQb2ludChsb2NhbFBvaW50
KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlQ2xpcHBlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNW
R1Jlc291cmNlQ2xpcHBlci5jcHAKaW5kZXggYWJkYmY0NjRhZWM1MWJhMjlmOWFkYjJkZDJlZTk4
NDk4YTlmZWUzZS4uYTUxODA1YjNmZTg4ZGFhMmExODhkZDYwYjRhZTgxYjkzN2MxZjFjZiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNs
aXBwZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVz
b3VyY2VDbGlwcGVyLmNwcApAQCAtMjYyLDYgKzI2Miw4IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3Vy
Y2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBvYmplY3RCb3Vu
ZGluCiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlz
LCBwb2ludCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAorICAgIEN1cnJlbnRWaXNpdGVkRWxl
bWVudHNNYWludGFpbmVyIG1haW50YWluZXIoKnRoaXMpOworCiAgICAgaWYgKGNsaXBQYXRoRWxl
bWVudCgpLmNsaXBQYXRoVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19VTklUX1RZUEVfT0JK
RUNUQk9VTkRJTkdCT1gpIHsKICAgICAgICAgQWZmaW5lVHJhbnNmb3JtIHRyYW5zZm9ybTsKICAg
ICAgICAgdHJhbnNmb3JtLnRyYW5zbGF0ZShvYmplY3RCb3VuZGluZ0JveC5sb2NhdGlvbigpKTsK
QEAgLTI3OCwxNSArMjgwLDYgQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRl
c3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICAgICAgaWYg
KCFyZW5kZXJlci0+aXNTVkdTaGFwZSgpICYmICFyZW5kZXJlci0+aXNTVkdUZXh0KCkgJiYgIWNo
aWxkTm9kZS0+aGFzVGFnTmFtZShTVkdOYW1lczo6dXNlVGFnKSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogCi0gICAgICAgIGNvbnN0IFJlbmRlclN0eWxlJiBzdHlsZSA9IHJlbmRlcmVyLT5zdHls
ZSgpOwotICAgICAgICBpZiAoaXM8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KHN0eWxlLmNs
aXBQYXRoKCkpKSB7Ci0gICAgICAgICAgICBhdXRvJiBjbGlwUGF0aCA9IGRvd25jYXN0PFJlZmVy
ZW5jZUNsaXBQYXRoT3BlcmF0aW9uPigqc3R5bGUuY2xpcFBhdGgoKSk7Ci0gICAgICAgICAgICBB
dG9tU3RyaW5nIGlkKGNsaXBQYXRoLmZyYWdtZW50KCkpOwotICAgICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gZ2V0UmVuZGVyU1ZHUmVzb3VyY2VCeUlkPFJlbmRl
clNWR1Jlc291cmNlQ2xpcHBlcj4oZG9jdW1lbnQoKSwgaWQpOwotICAgICAgICAgICAgaWYgKGNs
aXBwZXIgPT0gdGhpcykKLSAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgfQotCiAg
ICAgICAgIEludFBvaW50IGhpdFBvaW50OwogICAgICAgICBIaXRUZXN0UmVzdWx0IHJlc3VsdCho
aXRQb2ludCk7CiAgICAgICAgIGNvbnN0ZXhwciBPcHRpb25TZXQ8SGl0VGVzdFJlcXVlc3Q6OlJl
cXVlc3RUeXBlPiBoaXRUeXBlIHsgSGl0VGVzdFJlcXVlc3Q6OlNWR0NsaXBDb250ZW50LCBIaXRU
ZXN0UmVxdWVzdDo6RGlzYWxsb3dVc2VyQWdlbnRTaGFkb3dDb250ZW50IH07CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAppbmRleCBhMDhiMzIxNTE1
OGU0MjY2YzAzNzQ4MzMxZTYwNWVlZWQ3NDFlNWIwLi44Mjk1OGE0YTMzMDRjNTZiZDhkNjkxYTQ1
MGFhOTIzMjk0OTEyNjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jvb3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5jcHAKQEAgLTQwMiw2ICs0MDIsOCBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZQogICAgIExheW91dFBvaW50IHBvaW50SW5QYXJlbnQgPSBsb2NhdGlvbkluQ29udGFpbmVyLnBv
aW50KCkgLSB0b0xheW91dFNpemUoYWNjdW11bGF0ZWRPZmZzZXQpOwogICAgIExheW91dFBvaW50
IHBvaW50SW5Cb3JkZXJCb3ggPSBwb2ludEluUGFyZW50IC0gdG9MYXlvdXRTaXplKGxvY2F0aW9u
KCkpOwogCisgICAgQVNTRVJUKG1fdmlzaXRlZEVsZW1lbnRzLmlzRW1wdHkoKSk7CisKICAgICAv
LyBUZXN0IFNWRyBjb250ZW50IGlmIHRoZSBwb2ludCBpcyBpbiBvdXIgY29udGVudCBib3ggb3Ig
aXQgaXMgaW5zaWRlIHRoZSB2aXN1YWxPdmVyZmxvd1JlY3QgYW5kIHRoZSBvdmVyZmxvdyBpcyB2
aXNpYmxlLgogICAgIC8vIEZJWE1FOiBUaGlzIHNob3VsZCBiZSBhbiBpbnRlcnNlY3Rpb24gd2hl
biByZWN0LWJhc2VkIGhpdCB0ZXN0cyBhcmUgc3VwcG9ydGVkIGJ5IG5vZGVBdEZsb2F0UG9pbnQu
CiAgICAgaWYgKGNvbnRlbnRCb3hSZWN0KCkuY29udGFpbnMocG9pbnRJbkJvcmRlckJveCkgfHwg
KCFzaG91bGRBcHBseVZpZXdwb3J0Q2xpcCgpICYmIHZpc3VhbE92ZXJmbG93UmVjdCgpLmNvbnRh
aW5zKHBvaW50SW5QYXJlbnQpKSkgewpAQCAtNDExLDggKzQxMywxMCBAQCBib29sIFJlbmRlclNW
R1Jvb3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0
UmVzdWx0JiByZQogICAgICAgICAgICAgLy8gRklYTUU6IG5vZGVBdEZsb2F0UG9pbnQoKSBkb2Vz
bid0IGhhbmRsZSByZWN0LWJhc2VkIGhpdCB0ZXN0cyB5ZXQuCiAgICAgICAgICAgICBpZiAoY2hp
bGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhbFBvaW50LCBoaXRUZXN0
QWN0aW9uKSkgewogICAgICAgICAgICAgICAgIHVwZGF0ZUhpdFRlc3RSZXN1bHQocmVzdWx0LCBw
b2ludEluQm9yZGVyQm94KTsKLSAgICAgICAgICAgICAgICBpZiAocmVzdWx0LmFkZE5vZGVUb0xp
c3RCYXNlZFRlc3RSZXN1bHQoY2hpbGQtPm5vZGUoKSwgcmVxdWVzdCwgbG9jYXRpb25JbkNvbnRh
aW5lcikgPT0gSGl0VGVzdFByb2dyZXNzOjpTdG9wKQorICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBs
b2NhdGlvbkluQ29udGFpbmVyKSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApIHsKKyAgICAgICAg
ICAgICAgICAgICAgQVNTRVJUKG1fdmlzaXRlZEVsZW1lbnRzLmlzRW1wdHkoKSk7CiAgICAgICAg
ICAgICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAg
IH0KICAgICAgICAgfQogICAgIH0KQEAgLTQzMSw2ICs0MzUsOCBAQCBib29sIFJlbmRlclNWR1Jv
b3Q6Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVz
dWx0JiByZQogICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKG1fdmlzaXRlZEVsZW1lbnRz
LmlzRW1wdHkoKSk7CisKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKQEAgLTQ0Nyw0ICs0NTMsMjIg
QEAgdm9pZCBSZW5kZXJTVkdSb290OjphZGRSZXNvdXJjZUZvckNsaWVudEludmFsaWRhdGlvbihS
ZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcioKICAgICBzdmdSb290LT5tX3Jlc291cmNlc05lZWRp
bmdUb0ludmFsaWRhdGVDbGllbnRzLmFkZChyZXNvdXJjZSk7CiB9CiAKK3ZvaWQgUmVuZGVyU1ZH
Um9vdDo6c3RhcnRWaXNpdGluZyhSZW5kZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIC8vIFdl
IHNob3VsZCBuZXZlciBiZSB2aXNpdGluZyBhbiBlbGVtZW50IG1vcmUgdGhhbiBvbmNlLgorICAg
IEFTU0VSVCghbV92aXNpdGVkRWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQpKTsKKyAgICBtX3Zp
c2l0ZWRFbGVtZW50cy5hZGQoJmVsZW1lbnQpOworfQorCit2b2lkIFJlbmRlclNWR1Jvb3Q6OnN0
b3BWaXNpdGluZyhSZW5kZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIEFTU0VSVChtX3Zpc2l0
ZWRFbGVtZW50cy5jb250YWlucygmZWxlbWVudCkpOworICAgIG1fdmlzaXRlZEVsZW1lbnRzLnJl
bW92ZSgmZWxlbWVudCk7Cit9CisKK2Jvb2wgUmVuZGVyU1ZHUm9vdDo6aXNWaXNpdGluZyhjb25z
dCBSZW5kZXJFbGVtZW50JiBlbGVtZW50KSBjb25zdAoreworICAgIHJldHVybiBtX3Zpc2l0ZWRF
bGVtZW50cy5jb250YWlucygmZWxlbWVudCk7Cit9CisKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKaW5kZXggYzc2MzViN2RjNTg5NzE2OTUwMzhiNDFh
NzVhNWM5M2FlODJiOGYzMi4uN2Y2YmFiNDk4NjQ2NzZlN2FjNDdhMjYwNzA0NjZmNWE1MzhkYjMy
OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmgKQEAg
LTYyLDYgKzYyLDEwIEBAIHB1YmxpYzoKICAgICAvLyBtZXRob2QgZHVyaW5nIGxheW91dCB3aGVu
IHRoZXkgYXJlIGludmFsaWRhdGVkIGJ5IGEgZmlsdGVyLgogICAgIHN0YXRpYyB2b2lkIGFkZFJl
c291cmNlRm9yQ2xpZW50SW52YWxpZGF0aW9uKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKik7
CiAKKyAgICB2b2lkIHN0YXJ0VmlzaXRpbmcoUmVuZGVyRWxlbWVudCYpOworICAgIHZvaWQgc3Rv
cFZpc2l0aW5nKFJlbmRlckVsZW1lbnQmKTsKKyAgICBib29sIGlzVmlzaXRpbmcoY29uc3QgUmVu
ZGVyRWxlbWVudCYpIGNvbnN0OworCiBwcml2YXRlOgogICAgIHZvaWQgZWxlbWVudCgpIGNvbnN0
ID0gZGVsZXRlOwogCkBAIC0xMTMsNiArMTE3LDcgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIEFm
ZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9QYXJlbnRUcmFuc2Zvcm07CiAgICAgQWZmaW5lVHJhbnNm
b3JtIG1fbG9jYWxUb0JvcmRlckJveFRyYW5zZm9ybTsKICAgICBIYXNoU2V0PFJlbmRlclNWR1Jl
c291cmNlQ29udGFpbmVyKj4gbV9yZXNvdXJjZXNOZWVkaW5nVG9JbnZhbGlkYXRlQ2xpZW50czsK
KyAgICBIYXNoU2V0PGNvbnN0IFJlbmRlckVsZW1lbnQqPiBtX3Zpc2l0ZWRFbGVtZW50czsKICAg
ICBib29sIG1faXNMYXlvdXRTaXplQ2hhbmdlZCA6IDE7CiAgICAgYm9vbCBtX25lZWRzQm91bmRh
cmllc09yVHJhbnNmb3JtVXBkYXRlIDogMTsKICAgICBib29sIG1faGFzQm94RGVjb3JhdGlvbnMg
OiAxOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdT
aGFwZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNw
cAppbmRleCBmYTE5ZDE1YmI0NTY0NGZjMWJjYTliMWRmNTIzODE3MGY5ZDljOTRlLi44YzJmZWM3
M2I3YTViZTJjM2VhMGY3MzlhMjI1N2E5NTJkMDA1ODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcApAQCAtMzY2LDYgKzM2Niw4IEBAIGJv
b2wgUmVuZGVyU1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3Qm
IHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludElu
Q2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
CisgICAgQ3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIgbWFpbnRhaW5lcigqdGhpcyk7
CisKICAgICBQb2ludGVyRXZlbnRzSGl0UnVsZXMgaGl0UnVsZXMoUG9pbnRlckV2ZW50c0hpdFJ1
bGVzOjpTVkdfUEFUSF9ISVRURVNUSU5HLCByZXF1ZXN0LCBzdHlsZSgpLnBvaW50ZXJFdmVudHMo
KSk7CiAgICAgYm9vbCBpc1Zpc2libGUgPSAoc3R5bGUoKS52aXNpYmlsaXR5KCkgPT0gVmlzaWJp
bGl0eTo6VmlzaWJsZSk7CiAgICAgaWYgKGlzVmlzaWJsZSB8fCAhaGl0UnVsZXMucmVxdWlyZVZp
c2libGUpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQu
Y3BwCmluZGV4IGYwMjM1MTkzMDg1NjU1NGRkZWU4MjNhODRjYzJjNTRlYmNhYzVkM2MuLjA0OTgx
Yzc2M2Q3OTVkMjkyY2ZlMmY4NTljNjVlYzlkMDg1MDIzZDQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcApAQCAtNDQwLDYgKzQ0MCw4IEBAIGJv
b2wgUmVuZGVyU1ZHVGV4dDo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsCiAgICAgICAgICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6
OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICAgICAgICAg
IHJldHVybiBmYWxzZTsgICAgICAgCiAKKyAgICAgICAgICAgIEN1cnJlbnRWaXNpdGVkRWxlbWVu
dHNNYWludGFpbmVyIG1haW50YWluZXIoKnRoaXMpOworCiAgICAgICAgICAgICBIaXRUZXN0TG9j
YXRpb24gaGl0VGVzdExvY2F0aW9uKExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBv
aW50KSkpOwogICAgICAgICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChyZXF1
ZXN0LCByZXN1bHQsIGhpdFRlc3RMb2NhdGlvbiwgTGF5b3V0UG9pbnQoKSwgaGl0VGVzdEFjdGlv
bik7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
U1ZHUmVuZGVyU3VwcG9ydC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jl
bmRlclN1cHBvcnQuY3BwCmluZGV4IGZjYWYwMGM1MGJiZjYwM2VmM2EzYTlmZDgzNGQzYzk5ZTMz
M2I5NTUuLjI2YmRiMGY1NDBkMTQ3YzgzNmMzY2JhZGY4NTI3M2IwODgyYTRkOTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAt
NDA3LDYgKzQwNywxMCBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OmNsaXBDb250ZXh0VG9DU1ND
bGlwcGluZ0FyZWEoR3JhcGhpY3NDb250ZXh0JiBjb250ZXh0LCBjbwogCiBib29sIFNWR1JlbmRl
clN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoY29uc3QgUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IEZsb2F0UG9pbnQmIHBvaW50KQogeworICAgIGF1dG8qIHJvb3QgPSBTVkdSZW5k
ZXJTdXBwb3J0OjpmaW5kVHJlZVJvb3RPYmplY3QocmVuZGVyZXIpOworICAgIGlmIChyb290LT5p
c1Zpc2l0aW5nKHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQ2xpcFBh
dGhPcGVyYXRpb24qIGNsaXBQYXRoT3BlcmF0aW9uID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0
aCgpOwogICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlv
bikgfHwgaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkKICAgICAg
ICAgcmV0dXJuIGlzUG9pbnRJbkNTU0NsaXBwaW5nQXJlYShyZW5kZXJlciwgcG9pbnQpOwpAQCAt
NTA2LDQgKzUxMCwxNyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2Vz
dG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVsZQogCiAjZW5kaWYKIAorQ3Vy
cmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXI6OkN1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWlu
dGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgbV9lbGVtZW50ID0g
bWFrZVdlYWtQdHIoJmVsZW1lbnQpOworICAgIGF1dG8qIHJvb3QgPSBTVkdSZW5kZXJTdXBwb3J0
OjpmaW5kVHJlZVJvb3RPYmplY3QoKm1fZWxlbWVudC5nZXQoKSk7CisgICAgcm9vdC0+c3RhcnRW
aXNpdGluZygqbV9lbGVtZW50LmdldCgpKTsKK30KKworQ3VycmVudFZpc2l0ZWRFbGVtZW50c01h
aW50YWluZXI6On5DdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lcigpCit7CisgICAgYXV0
byogcm9vdCA9IFNWR1JlbmRlclN1cHBvcnQ6OmZpbmRUcmVlUm9vdE9iamVjdCgqbV9lbGVtZW50
LmdldCgpKTsKKyAgICByb290LT5zdG9wVmlzaXRpbmcoKm1fZWxlbWVudC5nZXQoKSk7Cit9CisK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgK
aW5kZXggY2MzMzZlN2ZjZDhkMDRhZDliZThkNDRlNmJlNDdlN2MzNDBmMDVmYy4uZDRhM2Y4YjNj
YTE2NjcxYzNkNWM4MTYwNDJmZTcwMTBkMjI0NzI2ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmgKQEAgLTk1LDQgKzk1LDE0IEBAIHByaXZh
dGU6CiAgICAgflNWR1JlbmRlclN1cHBvcnQoKTsKIH07CiAKK2NsYXNzIEN1cnJlbnRWaXNpdGVk
RWxlbWVudHNNYWludGFpbmVyIHsKKyAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShDdXJyZW50Vmlz
aXRlZEVsZW1lbnRzTWFpbnRhaW5lcik7CitwdWJsaWM6CisgICAgQ3VycmVudFZpc2l0ZWRFbGVt
ZW50c01haW50YWluZXIoY29uc3QgUmVuZGVyRWxlbWVudCYpOworICAgIH5DdXJyZW50VmlzaXRl
ZEVsZW1lbnRzTWFpbnRhaW5lcigpOworCitwcml2YXRlOgorICAgIFdlYWtQdHI8UmVuZGVyRWxl
bWVudD4gbV9lbGVtZW50OworfTsKKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCmluZGV4IDlh
YTJhNDI2YjU2NGEzNGE1MDA4MzU0NDVjM2M3NTlhYmFmYTQzYjEuLjM0NWMxYWI0MGM5ODIwZGM5
YmMyOTUxMGQ3ODM5MWVkYzMyYTU2ZTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL0NoYW5nZUxv
ZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNSBAQAorMjAyMC0wNC0w
MSAgRG91ZyBLZWxseSAgPGRvdWdrQGFwcGxlLmNvbT4KKworICAgICAgICBIaXQgdGVzdCB3aXRo
IGNsaXBQYXRoIHJlZmVyZW5jaW5nIHBhcmVudCBlbGVtZW50IGNhdXNlcyBpbmZpbml0ZSByZWN1
cnNpb24gKHdoZW4gcmVmZXJlbmNlZCBieSB1c2UgZWxlbWVudCkKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIwOTc3MworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0
aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICog
c3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QtZXhw
ZWN0ZWQudHh0OiBBZGRlZC4KKyAgICAgICAgKiBzdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNo
aWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC5odG1sOiBBZGRlZC4KKyAgICAgICAgKiBzdmcvaGl0
dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UuaHRtbDogQWRkZWQuCisK
IDIwMjAtMDMtMjUgIEphc29uIExhd3JlbmNlICA8bGF3cmVuY2UuakBhcHBsZS5jb20+CiAKICAg
ICAgICAgWyBNYWMgd2syIF0gc3ZnL2FzLWltYWdlL3N2Zy1pbWFnZS13aXRoLWRhdGEtdXJpLWJh
Y2tncm91bmQuaHRtbCBpcyBmbGFreSBmYWlsaW5nLgpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMv
c3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLWV4cGVjdGVk
LnR4dCBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVu
dC13aXRoLXVzZS1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI2YTJiYmIxZGM0ODY4OTQ1YTE1
MjVkNDVmNTE5MmQ3ZmIzZTljYQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9o
aXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1leHBlY3RlZC50eHQK
QEAgLTAsMCArMSBAQAorVGVzdHMgU1ZHIGhpdCB0ZXN0IHdpdGggYSByZWN1cnNpdmUgY2xpcFBh
dGguIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4gUEFTUwpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdp
dGgtdXNlLXJvb3QtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNs
aXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QtZXhwZWN0ZWQudHh0Cm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAuLmUyNmEyYmJiMWRjNDg2ODk0NWExNTI1ZDQ1ZjUxOTJkN2ZiM2U5Y2EKLS0tIC9kZXYvbnVs
bAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1l
bnQtd2l0aC11c2Utcm9vdC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSBAQAorVGVzdHMgU1ZHIGhp
dCB0ZXN0IHdpdGggYSByZWN1cnNpdmUgY2xpcFBhdGguIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBk
b2VzIG5vdCBjcmFzaC4gUEFTUwpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qv
c3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbCBiL0xheW91dFRl
c3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290
Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uODk2ZmViYmZhZWVmMjQ0YmNlYzg4NTZhMjk2ZjZkYzI1OWQwMzFj
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBh
dGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPHN0
eWxlPgorLnBhdGggeyAtd2Via2l0LWNsaXAtcGF0aDogdXJsKCNjbGlwcGF0aCk7IH0KKzwvc3R5
bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9hZGV2ZW50KCkgeworICAgIGRvY3VtZW50LmNhcmV0
UmFuZ2VGcm9tUG9pbnQoMzcsIDcwKTsKKyAgICBpZiAod2luZG93LnRlc3RSdW5uZXIpIHsKKyAg
ICAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiVGVzdHMgU1ZHIGhpdCB0ZXN0IHdpdGgg
YSByZWN1cnNpdmUgY2xpcFBhdGguICBUZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9lcyBub3QgY3Jh
c2guICBQQVNTIjsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7CisgICAgfQorfQor
PC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9bG9hZGV2ZW50KCk+Cis8c3ZnIGNvbnRlbnRTY3JpcHRU
eXBlPSJ0ZXh0L2VjbWFzY3JpcHQiIGlkPSJzdmciPgorPHBhdGggZD0iTTE2IDggTDMyIDU2IiBj
bGFzcz0icGF0aCIgLz4KKzxnIGlkPSJncm91cCI+CisgICAgPHRleHQgY2xpcC1wYXRoPSJ1cmwo
I2NsaXBwYXRoKSIgdG89ImN1cnJlbnRDb2xvciI+VGV4dDwvdGV4dD4KKzwvZz4KKzxjbGlwUGF0
aCBpZD0iY2xpcHBhdGgiIGNsaXBQYXRoVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAgICA8
dXNlIGhyZWY9IiNzdmciLz4KKzwvY2xpcFBhdGg+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9z
dmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UuaHRtbCBiL0xh
eW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVz
ZS5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAuLmM5NGQ4NDIyNjI3MzgxZGVjMTAyNDM3ZjhlMzkyMGM4YzM2YzVj
MjIKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1w
YXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UuaHRtbApAQCAtMCwwICsxLDIxIEBACis8c3R5bGU+
CisucGF0aCB7IC13ZWJraXQtY2xpcC1wYXRoOiB1cmwoI2NsaXBwYXRoKTsgfQorPC9zdHlsZT4K
KzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkZXZlbnQoKSB7CisgICAgZG9jdW1lbnQuY2FyZXRSYW5n
ZUZyb21Qb2ludCgzNywgNzApOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAg
ICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJl
Y3Vyc2l2ZSBjbGlwUGF0aC4gIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4g
IFBBU1MiOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9Cit9Cis8L3Nj
cmlwdD4KKzxib2R5IG9ubG9hZD1sb2FkZXZlbnQoKT4KKzxzdmcgY29udGVudFNjcmlwdFR5cGU9
InRleHQvZWNtYXNjcmlwdCI+Cis8cGF0aCBkPSJNMTYgOCBMMzIgNTYiIGNsYXNzPSJwYXRoIiAv
PgorPGcgaWQ9Imdyb3VwIj4KKyAgICA8dGV4dCBjbGlwLXBhdGg9InVybCgjY2xpcHBhdGgpIiB0
bz0iY3VycmVudENvbG9yIj5UZXh0PC90ZXh0PgorPC9nPgorPGNsaXBQYXRoIGlkPSJjbGlwcGF0
aCIgY2xpcFBhdGhVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgIDx1c2UgaHJlZj0iI2dy
b3VwIi8+Cis8L2NsaXBQYXRoPgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395293</attachid>
            <date>2020-04-02 13:35:25 -0700</date>
            <delta_ts>2020-04-07 20:13:13 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209773-20200402133524.patch</filename>
            <type>text/plain</type>
            <size>17421</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5MDEyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNzFjZDg5MWM1YzVjMWMw
NTU0ODk1YWViZjMzYjI1MTlkODkxMTBlOS4uN2ZmMjI0Yzk5Y2YwNmYyNzk3Y2FhOGU4YmI4NzUz
NWIzZWIwZWZlMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ2IEBACisyMDIwLTA0LTAxICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBh
dGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBvbiBmdXJ0
aGVyIGludmVzdGlnYXRpb24sIHRoZSBvcmlnaW5hbCBmaXggZm9yIHRoZSBoaXQgdGVzdCBpbiBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIgdG8gcHJldmVudAorICAgICAgICBpbmZpbml0ZSByZWN1
cnNpb24gd2FzIGluY29tcGxldGUsIGFzIHNvbWV0aGluZyBzdWNoIGFzIGEgdXNlIGVsZW1lbnQg
Y291bGQgZWFzaWx5IGNhdXNlIGFub3RoZXIgY3ljbGUgd2hpY2gKKyAgICAgICAgd291bGQgbm90
IGJlIGRldGVjdGVkIGJ5IHRoZSBpbml0aWFsIGZpeC4gIEluc3RlYWQsIGJ5IG1haW50YWluaW5n
IGEgc2V0IG9mIHZpc2l0ZWQgZWxlbWVudHMsIHdlIGNhbiBwcmV2ZW50CisgICAgICAgIHZpc2l0
aW5nIHRoZSBzYW1lIGVsZW1lbnQgdHdpY2UsIGFuZCB0aHVzIGJyZWFraW5nIGFueSBjeWNsZXMg
d2hpY2ggbWlnaHQgb2NjdXIgaW4gdGhlIFNWRyBkb2N1bWVudC4gIEJ5CisgICAgICAgIHN0b3Jp
bmcgdGhlIGRhdGEgd2l0aCB0aGUgUmVuZGVyU1ZHUm9vdCwgdGhpcyBrZWVwcyBhIGZpbml0ZSBz
Y29wZSBmb3IgdGhlIHNldCBvZiByZW5kZXJlcnMsIGFuZCBwcm92aWRlcworICAgICAgICBhIGdv
b2QgcG9pbnQgdG8gYXNzZXJ0IHRoYXQgd2UgY29ycmVjdGx5IGNsZWFuIHVwIG91ciBzZXQgb2Yg
dmlzaXRlZCBub2RlcyAoYWx0aG91Z2ggdGhlIFJBSUktc3R5bGUKKyAgICAgICAgQ3VycmVudFZp
c2l0ZWRFbGVtZW50c01haW50YWluZXIgc2hvdWxkIGRvIHRoaXMgZm9yIHVzKS4KKworICAgICAg
ICBUaGlzIGlzIGNvdmVyZWQgYnkgYW4gZXhpc3RpbmcgdGVzdCwgYnV0IGluY2x1ZGVzIGFkZGl0
aW9uYWwgdGVzdCBjYXNlcyB3aGljaCBpbGx1c3RyYXRlIHRoZSBtb3JlIGNvbXBsZXgKKyAgICAg
ICAgZG9jdW1lbnQgc3RydWN0dXJlLgorCisgICAgICAgIFRlc3RzOiBzdmcvaGl0dGVzdC9zdmct
Y2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC5odG1sCisgICAgICAgICAgICAg
ICBzdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UuaHRtbAor
CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNW
R1Jvb3Q6Om5vZGVBdFBvaW50KToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OnN0
YXJ0VmlzaXRpbmcpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUm9vdDo6c3RvcFZpc2l0
aW5nKToKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1Jvb3Q6OmlzVmlzaXRpbmcgY29uc3Qp
OgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oOgorICAgICAgICAqIHJl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVy
U1ZHU2hhcGU6Om5vZGVBdEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdUZXh0Ojpub2RlQXRG
bG9hdFBvaW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJl
YSk6CisgICAgICAgIChXZWJDb3JlOjpDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lcjo6
Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q3Vy
cmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXI6On5DdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFp
bnRhaW5lcik6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0Lmg6CisK
IDIwMjAtMDMtMjUgIENocmlzIER1bWV6ICA8Y2R1bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBF
dmVudCBsaXN0ZW5lcnMgcmVnaXN0ZXJlZCB3aXRoICdvbmNlJyBvcHRpb24gbWF5IGdldCBnYXJi
YWdlIGNvbGxlY3RlZCB0b28gc29vbgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCmluZGV4IGIyYmY1ZGU4OGE3ZGQ0N2ViYzcxODgx
OTJmZDhmMGFmZjYzMGZlODkuLjhmNmU5N2E2ZWRjNDU2Njc1MDQxOGZhZTQ4ODM5MjY5NTZlOWFj
NTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHQ29u
dGFpbmVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0Nv
bnRhaW5lci5jcHAKQEAgLTE2NSw3ICsxNjUsOSBAQCBib29sIFJlbmRlclNWR0NvbnRhaW5lcjo6
bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVzdAog
CiAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBs
b2NhbFBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgIAorCisg
ICAgQ3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIgbWFpbnRhaW5lcigqdGhpcyk7CisK
ICAgICBmb3IgKFJlbmRlck9iamVjdCogY2hpbGQgPSBsYXN0Q2hpbGQoKTsgY2hpbGQ7IGNoaWxk
ID0gY2hpbGQtPnByZXZpb3VzU2libGluZygpKSB7CiAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0
RmxvYXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7
CiAgICAgICAgICAgICB1cGRhdGVIaXRUZXN0UmVzdWx0KHJlc3VsdCwgTGF5b3V0UG9pbnQobG9j
YWxQb2ludCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAppbmRleCAyNzhlYjljNGQxOTZhNzk3OTc2YTZlMTUxMmM1MjA1YjIwZmFhZmY1Li41
MGRhODM0Y2RkN2EyMzRmNDQyYTU3OWU5NTU4ZjY5ZDY3ODljZTU0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMjI2LDYgKzIyNiw4
IEBAIGJvb2wgUmVuZGVyU1ZHSW1hZ2U6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJl
cXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1CiAgICAgICAgIGlmICghU1ZHUmVuZGVyU3VwcG9y
dDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAgICAgICBy
ZXR1cm4gZmFsc2U7CiAKKyAgICAgICAgQ3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIg
bWFpbnRhaW5lcigqdGhpcyk7CisKICAgICAgICAgaWYgKGhpdFJ1bGVzLmNhbkhpdEZpbGwpIHsK
ICAgICAgICAgICAgIGlmIChtX29iamVjdEJvdW5kaW5nQm94LmNvbnRhaW5zKGxvY2FsUG9pbnQp
KSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExheW91dFBv
aW50KGxvY2FsUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCBhYmRiZjQ2NGFlYzUxYmEy
OWY5YWRiMmRkMmVlOTg0OThhOWZlZTNlLi5hNTE4MDViM2ZlODhkYWEyYTE4OGRkNjBiNGFlODFi
OTM3YzFmMWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjIsNiArMjYyLDggQEAgYm9vbCBS
ZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChjb25zdCBGbG9hdFJl
Y3QmIG9iamVjdEJvdW5kaW4KICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlw
cGluZ0FyZWEoKnRoaXMsIHBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgQ3Vy
cmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIgbWFpbnRhaW5lcigqdGhpcyk7CisKICAgICBp
ZiAoY2xpcFBhdGhFbGVtZW50KCkuY2xpcFBhdGhVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWCkgewogICAgICAgICBBZmZpbmVUcmFuc2Zvcm0g
dHJhbnNmb3JtOwogICAgICAgICB0cmFuc2Zvcm0udHJhbnNsYXRlKG9iamVjdEJvdW5kaW5nQm94
LmxvY2F0aW9uKCkpOwpAQCAtMjc4LDE1ICsyODAsNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNl
Q2xpcHBlcjo6aGl0VGVzdENsaXBDb250ZW50KGNvbnN0IEZsb2F0UmVjdCYgb2JqZWN0Qm91bmRp
bgogICAgICAgICBpZiAoIXJlbmRlcmVyLT5pc1NWR1NoYXBlKCkgJiYgIXJlbmRlcmVyLT5pc1NW
R1RleHQoKSAmJiAhY2hpbGROb2RlLT5oYXNUYWdOYW1lKFNWR05hbWVzOjp1c2VUYWcpKQogICAg
ICAgICAgICAgY29udGludWU7CiAKLSAgICAgICAgY29uc3QgUmVuZGVyU3R5bGUmIHN0eWxlID0g
cmVuZGVyZXItPnN0eWxlKCk7Ci0gICAgICAgIGlmIChpczxSZWZlcmVuY2VDbGlwUGF0aE9wZXJh
dGlvbj4oc3R5bGUuY2xpcFBhdGgoKSkpIHsKLSAgICAgICAgICAgIGF1dG8mIGNsaXBQYXRoID0g
ZG93bmNhc3Q8UmVmZXJlbmNlQ2xpcFBhdGhPcGVyYXRpb24+KCpzdHlsZS5jbGlwUGF0aCgpKTsK
LSAgICAgICAgICAgIEF0b21TdHJpbmcgaWQoY2xpcFBhdGguZnJhZ21lbnQoKSk7Ci0gICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIqIGNsaXBwZXIgPSBnZXRSZW5kZXJTVkdSZXNv
dXJjZUJ5SWQ8UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyPihkb2N1bWVudCgpLCBpZCk7Ci0gICAg
ICAgICAgICBpZiAoY2xpcHBlciA9PSB0aGlzKQotICAgICAgICAgICAgICAgIGNvbnRpbnVlOwot
ICAgICAgICB9Ci0KICAgICAgICAgSW50UG9pbnQgaGl0UG9pbnQ7CiAgICAgICAgIEhpdFRlc3RS
ZXN1bHQgcmVzdWx0KGhpdFBvaW50KTsKICAgICAgICAgY29uc3RleHByIE9wdGlvblNldDxIaXRU
ZXN0UmVxdWVzdDo6UmVxdWVzdFR5cGU+IGhpdFR5cGUgeyBIaXRUZXN0UmVxdWVzdDo6U1ZHQ2xp
cENvbnRlbnQsIEhpdFRlc3RSZXF1ZXN0OjpEaXNhbGxvd1VzZXJBZ2VudFNoYWRvd0NvbnRlbnQg
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9v
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCmlu
ZGV4IGEwOGIzMjE1MTU4ZTQyNjZjMDM3NDgzMzFlNjA1ZWVlZDc0MWU1YjAuLjQ0Mjk2ZDQ2OGZh
MzliZDBmMTUxMzkzYTJmNDhmMDRlODA0MWZkNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcApAQCAtNDAyLDYgKzQwMiw4IEBAIGJvb2wgUmVu
ZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhp
dFRlc3RSZXN1bHQmIHJlCiAgICAgTGF5b3V0UG9pbnQgcG9pbnRJblBhcmVudCA9IGxvY2F0aW9u
SW5Db250YWluZXIucG9pbnQoKSAtIHRvTGF5b3V0U2l6ZShhY2N1bXVsYXRlZE9mZnNldCk7CiAg
ICAgTGF5b3V0UG9pbnQgcG9pbnRJbkJvcmRlckJveCA9IHBvaW50SW5QYXJlbnQgLSB0b0xheW91
dFNpemUobG9jYXRpb24oKSk7CiAKKyAgICBBU1NFUlQobV92aXNpdGVkRWxlbWVudHMuaXNFbXB0
eSgpKTsKKwogICAgIC8vIFRlc3QgU1ZHIGNvbnRlbnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBj
b250ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhlIHZpc3VhbE92ZXJmbG93UmVjdCBhbmQgdGhl
IG92ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8gRklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGlu
dGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9k
ZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJveFJlY3QoKS5jb250YWlucyhwb2ludElu
Qm9yZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmlld3BvcnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZs
b3dSZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVudCkpKSB7CkBAIC00MTEsOCArNDEzLDEwIEBA
IGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJl
cXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgICAgICAvLyBGSVhNRTogbm9kZUF0Rmxv
YXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFzZWQgaGl0IHRlc3RzIHlldC4KICAgICAg
ICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2Fs
UG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJl
c3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gpOwotICAgICAgICAgICAgICAgIGlmIChyZXN1
bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBs
b2NhdGlvbkluQ29udGFpbmVyKSA9PSBIaXRUZXN0UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAgICAg
ICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFzZWRUZXN0UmVzdWx0KGNoaWxkLT5ub2Rl
KCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIpID09IEhpdFRlc3RQcm9ncmVzczo6U3Rv
cCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQobV92aXNpdGVkRWxlbWVudHMuaXNFbXB0
eSgpKTsKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHRydWU7CisgICAgICAgICAgICAgICAg
fQogICAgICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQpAQCAtNDMxLDYgKzQzNSw4IEBAIGJv
b2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVl
c3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAgIH0KICAgICB9CiAKKyAgICBBU1NFUlQobV92
aXNpdGVkRWxlbWVudHMuaXNFbXB0eSgpKTsKKwogICAgIHJldHVybiBmYWxzZTsKIH0KIApAQCAt
NDQ3LDQgKzQ1MywyMSBAQCB2b2lkIFJlbmRlclNWR1Jvb3Q6OmFkZFJlc291cmNlRm9yQ2xpZW50
SW52YWxpZGF0aW9uKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyKgogICAgIHN2Z1Jvb3QtPm1f
cmVzb3VyY2VzTmVlZGluZ1RvSW52YWxpZGF0ZUNsaWVudHMuYWRkKHJlc291cmNlKTsKIH0KIAor
dm9pZCBSZW5kZXJTVkdSb290OjpzdGFydFZpc2l0aW5nKFJlbmRlckVsZW1lbnQmIGVsZW1lbnQp
Cit7CisgICAgYXV0byByZXN1bHQgPSBtX3Zpc2l0ZWRFbGVtZW50cy5hZGQoJmVsZW1lbnQpOwor
ICAgIEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQuaXNOZXdFbnRyeSk7Cit9CisKK3ZvaWQg
UmVuZGVyU1ZHUm9vdDo6c3RvcFZpc2l0aW5nKFJlbmRlckVsZW1lbnQmIGVsZW1lbnQpCit7Cisg
ICAgYm9vbCByZXN1bHQgPSBtX3Zpc2l0ZWRFbGVtZW50cy5yZW1vdmUoJmVsZW1lbnQpOworICAg
IEFTU0VSVF9VTlVTRUQocmVzdWx0LCByZXN1bHQpOworfQorCitib29sIFJlbmRlclNWR1Jvb3Q6
OmlzVmlzaXRpbmcoY29uc3QgUmVuZGVyRWxlbWVudCYgZWxlbWVudCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gbV92aXNpdGVkRWxlbWVudHMuY29udGFpbnMoJmVsZW1lbnQpOworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuaCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5oCmluZGV4IGM3NjM1Yjdk
YzU4OTcxNjk1MDM4YjQxYTc1YTVjOTNhZTgyYjhmMzIuLjdmNmJhYjQ5ODY0Njc2ZTdhYzQ3YTI2
MDcwNDY2ZjVhNTM4ZGIzMjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUm9vdC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUm9vdC5oCkBAIC02Miw2ICs2MiwxMCBAQCBwdWJsaWM6CiAgICAgLy8gbWV0aG9kIGR1
cmluZyBsYXlvdXQgd2hlbiB0aGV5IGFyZSBpbnZhbGlkYXRlZCBieSBhIGZpbHRlci4KICAgICBz
dGF0aWMgdm9pZCBhZGRSZXNvdXJjZUZvckNsaWVudEludmFsaWRhdGlvbihSZW5kZXJTVkdSZXNv
dXJjZUNvbnRhaW5lciopOwogCisgICAgdm9pZCBzdGFydFZpc2l0aW5nKFJlbmRlckVsZW1lbnQm
KTsKKyAgICB2b2lkIHN0b3BWaXNpdGluZyhSZW5kZXJFbGVtZW50Jik7CisgICAgYm9vbCBpc1Zp
c2l0aW5nKGNvbnN0IFJlbmRlckVsZW1lbnQmKSBjb25zdDsKKwogcHJpdmF0ZToKICAgICB2b2lk
IGVsZW1lbnQoKSBjb25zdCA9IGRlbGV0ZTsKIApAQCAtMTEzLDYgKzExNyw3IEBAIHByaXZhdGU6
CiAgICAgbXV0YWJsZSBBZmZpbmVUcmFuc2Zvcm0gbV9sb2NhbFRvUGFyZW50VHJhbnNmb3JtOwog
ICAgIEFmZmluZVRyYW5zZm9ybSBtX2xvY2FsVG9Cb3JkZXJCb3hUcmFuc2Zvcm07CiAgICAgSGFz
aFNldDxSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lcio+IG1fcmVzb3VyY2VzTmVlZGluZ1RvSW52
YWxpZGF0ZUNsaWVudHM7CisgICAgSGFzaFNldDxjb25zdCBSZW5kZXJFbGVtZW50Kj4gbV92aXNp
dGVkRWxlbWVudHM7CiAgICAgYm9vbCBtX2lzTGF5b3V0U2l6ZUNoYW5nZWQgOiAxOwogICAgIGJv
b2wgbV9uZWVkc0JvdW5kYXJpZXNPclRyYW5zZm9ybVVwZGF0ZSA6IDE7CiAgICAgYm9vbCBtX2hh
c0JveERlY29yYXRpb25zIDogMTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdTaGFwZS5jcHAKaW5kZXggZmExOWQxNWJiNDU2NDRmYzFiY2E5YjFkZjUyMzgxNzBm
OWQ5Yzk0ZS4uOGMyZmVjNzNiN2E1YmUyYzNlYTBmNzM5YTIyNTdhOTUyZDAwNTg4MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHAKQEAgLTM2
Niw2ICszNjYsOCBAQCBib29sIFJlbmRlclNWR1NoYXBlOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0
IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgIGlmICghU1ZHUmVuZGVy
U3VwcG9ydDo6cG9pbnRJbkNsaXBwaW5nQXJlYSgqdGhpcywgbG9jYWxQb2ludCkpCiAgICAgICAg
IHJldHVybiBmYWxzZTsKIAorICAgIEN1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyIG1h
aW50YWluZXIoKnRoaXMpOworCiAgICAgUG9pbnRlckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBv
aW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1BBVEhfSElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUo
KS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJp
bGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpOwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhp
dFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmMDIzNTE5MzA4NTY1NTRkZGVlODIzYTg0Y2MyYzU0
ZWJjYWM1ZDNjLi4wNDk4MWM3NjNkNzk1ZDI5MmNmZTJmODU5YzY1ZWM5ZDA4NTAyM2Q0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ0
MCw2ICs0NDAsOCBAQCBib29sIFJlbmRlclNWR1RleHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3Qg
SGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bAogICAgICAgICAgICAgaWYgKCFT
VkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkK
ICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAgICAgIAogCisgICAgICAgICAgICBDdXJy
ZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lciBtYWludGFpbmVyKCp0aGlzKTsKKwogICAgICAg
ICAgICAgSGl0VGVzdExvY2F0aW9uIGhpdFRlc3RMb2NhdGlvbihMYXlvdXRQb2ludChmbG9vcmVk
SW50UG9pbnQobG9jYWxQb2ludCkpKTsKICAgICAgICAgICAgIHJldHVybiBSZW5kZXJCbG9jazo6
bm9kZUF0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBoaXRUZXN0TG9jYXRpb24sIExheW91dFBvaW50
KCksIGhpdFRlc3RBY3Rpb24pOwogICAgICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcAppbmRleCBmY2FmMDBjNTBiYmY2MDNlZjNh
M2E5ZmQ4MzRkM2M5OWUzMzNiOTU1Li4yNmJkYjBmNTQwZDE0N2M4MzZjM2NiYWRmODUyNzNiMDg4
MmE0ZDk1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRl
clN1cHBvcnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5jcHAKQEAgLTQwNyw2ICs0MDcsMTAgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojpj
bGlwQ29udGV4dFRvQ1NTQ2xpcHBpbmdBcmVhKEdyYXBoaWNzQ29udGV4dCYgY29udGV4dCwgY28K
IAogYm9vbCBTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdBcmVhKGNvbnN0IFJlbmRl
ckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFBvaW50JiBwb2ludCkKIHsKKyAgICBhdXRv
KiByb290ID0gU1ZHUmVuZGVyU3VwcG9ydDo6ZmluZFRyZWVSb290T2JqZWN0KHJlbmRlcmVyKTsK
KyAgICBpZiAocm9vdC0+aXNWaXNpdGluZyhyZW5kZXJlcikpCisgICAgICAgIHJldHVybiBmYWxz
ZTsKKwogICAgIENsaXBQYXRoT3BlcmF0aW9uKiBjbGlwUGF0aE9wZXJhdGlvbiA9IHJlbmRlcmVy
LnN0eWxlKCkuY2xpcFBhdGgoKTsKICAgICBpZiAoaXM8U2hhcGVDbGlwUGF0aE9wZXJhdGlvbj4o
Y2xpcFBhdGhPcGVyYXRpb24pIHx8IGlzPEJveENsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9w
ZXJhdGlvbikpCiAgICAgICAgIHJldHVybiBpc1BvaW50SW5DU1NDbGlwcGluZ0FyZWEocmVuZGVy
ZXIsIHBvaW50KTsKQEAgLTUwNiw0ICs1MTAsMTcgQEAgdm9pZCBTVkdSZW5kZXJTdXBwb3J0Ojp1
cGRhdGVNYXNrZWRBbmNlc3RvclNob3VsZElzb2xhdGVCbGVuZGluZyhjb25zdCBSZW5kZXJFbGUK
IAogI2VuZGlmCiAKK0N1cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyOjpDdXJyZW50Vmlz
aXRlZEVsZW1lbnRzTWFpbnRhaW5lcihjb25zdCBSZW5kZXJFbGVtZW50JiBlbGVtZW50KQorewor
ICAgIG1fZWxlbWVudCA9IG1ha2VXZWFrUHRyKCZlbGVtZW50KTsKKyAgICBhdXRvKiByb290ID0g
U1ZHUmVuZGVyU3VwcG9ydDo6ZmluZFRyZWVSb290T2JqZWN0KCptX2VsZW1lbnQuZ2V0KCkpOwor
ICAgIHJvb3QtPnN0YXJ0VmlzaXRpbmcoKm1fZWxlbWVudC5nZXQoKSk7Cit9CisKK0N1cnJlbnRW
aXNpdGVkRWxlbWVudHNNYWludGFpbmVyOjp+Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWlu
ZXIoKQoreworICAgIGF1dG8qIHJvb3QgPSBTVkdSZW5kZXJTdXBwb3J0OjpmaW5kVHJlZVJvb3RP
YmplY3QoKm1fZWxlbWVudC5nZXQoKSk7CisgICAgcm9vdC0+c3RvcFZpc2l0aW5nKCptX2VsZW1l
bnQuZ2V0KCkpOworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1NWR1JlbmRlclN1cHBvcnQuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZH
UmVuZGVyU3VwcG9ydC5oCmluZGV4IGNjMzM2ZTdmY2Q4ZDA0YWQ5YmU4ZDQ0ZTZiZTQ3ZTdjMzQw
ZjA1ZmMuLmQ0YTNmOGIzY2ExNjY3MWMzZDVjODE2MDQyZmU3MDEwZDIyNDcyNmQgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5oCkBAIC05NSw0
ICs5NSwxNCBAQCBwcml2YXRlOgogICAgIH5TVkdSZW5kZXJTdXBwb3J0KCk7CiB9OwogCitjbGFz
cyBDdXJyZW50VmlzaXRlZEVsZW1lbnRzTWFpbnRhaW5lciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoQ3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIpOworcHVibGljOgorICAgIEN1
cnJlbnRWaXNpdGVkRWxlbWVudHNNYWludGFpbmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmKTsKKyAg
ICB+Q3VycmVudFZpc2l0ZWRFbGVtZW50c01haW50YWluZXIoKTsKKworcHJpdmF0ZToKKyAgICBX
ZWFrUHRyPFJlbmRlckVsZW1lbnQ+IG1fZWxlbWVudDsKK307CisKIH0gLy8gbmFtZXNwYWNlIFdl
YkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0No
YW5nZUxvZwppbmRleCA5YWEyYTQyNmI1NjRhMzRhNTAwODM1NDQ1YzNjNzU5YWJhZmE0M2IxLi4z
NDVjMWFiNDBjOTgyMGRjOWJjMjk1MTBkNzgzOTFlZGMzMmE1NmUxIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTUgQEAKKzIwMjAtMDQtMDEgIERvdWcgS2VsbHkgIDxkb3Vna0BhcHBsZS5jb20+CisKKyAgICAg
ICAgSGl0IHRlc3Qgd2l0aCBjbGlwUGF0aCByZWZlcmVuY2luZyBwYXJlbnQgZWxlbWVudCBjYXVz
ZXMgaW5maW5pdGUgcmVjdXJzaW9uICh3aGVuIHJlZmVyZW5jZWQgYnkgdXNlIGVsZW1lbnQpCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMDk3NzMKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9oaXR0
ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13
aXRoLXVzZS1yb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3Qv
c3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbDogQWRkZWQuCisg
ICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNl
Lmh0bWw6IEFkZGVkLgorCiAyMDIwLTAzLTI1ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpA
YXBwbGUuY29tPgogCiAgICAgICAgIFsgTWFjIHdrMiBdIHN2Zy9hcy1pbWFnZS9zdmctaW1hZ2Ut
d2l0aC1kYXRhLXVyaS1iYWNrZ3JvdW5kLmh0bWwgaXMgZmxha3kgZmFpbGluZy4KZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13
aXRoLXVzZS1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1w
YXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UtZXhwZWN0ZWQudHh0Cm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLmUyNmEy
YmJiMWRjNDg2ODk0NWExNTI1ZDQ1ZjUxOTJkN2ZiM2U5Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9M
YXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11
c2UtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEgQEAKK1Rlc3RzIFNWRyBoaXQgdGVzdCB3aXRoIGEg
cmVjdXJzaXZlIGNsaXBQYXRoLiBUZXN0IHBhc3NlcyBpZiBXZWJLaXQgZG9lcyBub3QgY3Jhc2gu
IFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgt
Y2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290LWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL3N2
Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290LWV4cGVj
dGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwLi5lMjZhMmJiYjFkYzQ4Njg5NDVhMTUyNWQ0NWY1MTkyZDdmYjNl
OWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAt
cGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QtZXhwZWN0ZWQudHh0CkBAIC0wLDAgKzEg
QEAKK1Rlc3RzIFNWRyBoaXQgdGVzdCB3aXRoIGEgcmVjdXJzaXZlIGNsaXBQYXRoLiBUZXN0IHBh
c3NlcyBpZiBXZWJLaXQgZG9lcyBub3QgY3Jhc2guIFBBU1MKZGlmZiAtLWdpdCBhL0xheW91dFRl
c3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290
Lmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1l
bnQtd2l0aC11c2Utcm9vdC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjg5NmZlYmJmYWVlZjI0NGJjZWM4ODU2
YTI5NmY2ZGMyNTlkMDMxY2EKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9zdmcvaGl0
dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC5odG1sCkBAIC0w
LDAgKzEsMjEgQEAKKzxzdHlsZT4KKy5wYXRoIHsgLXdlYmtpdC1jbGlwLXBhdGg6IHVybCgjY2xp
cHBhdGgpOyB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRldmVudCgpIHsKKyAg
ICBkb2N1bWVudC5jYXJldFJhbmdlRnJvbVBvaW50KDM3LCA3MCk7CisgICAgaWYgKHdpbmRvdy50
ZXN0UnVubmVyKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIlRlc3RzIFNW
RyBoaXQgdGVzdCB3aXRoIGEgcmVjdXJzaXZlIGNsaXBQYXRoLiAgVGVzdCBwYXNzZXMgaWYgV2Vi
S2l0IGRvZXMgbm90IGNyYXNoLiAgUEFTUyI7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4
dCgpOworICAgIH0KK30KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWxvYWRldmVudCgpPgorPHN2
ZyBjb250ZW50U2NyaXB0VHlwZT0idGV4dC9lY21hc2NyaXB0IiBpZD0ic3ZnIj4KKzxwYXRoIGQ9
Ik0xNiA4IEwzMiA1NiIgY2xhc3M9InBhdGgiIC8+Cis8ZyBpZD0iZ3JvdXAiPgorICAgIDx0ZXh0
IGNsaXAtcGF0aD0idXJsKCNjbGlwcGF0aCkiIHRvPSJjdXJyZW50Q29sb3IiPlRleHQ8L3RleHQ+
Cis8L2c+Cis8Y2xpcFBhdGggaWQ9ImNsaXBwYXRoIiBjbGlwUGF0aFVuaXRzPSJvYmplY3RCb3Vu
ZGluZ0JveCI+CisgICAgPHVzZSBocmVmPSIjc3ZnIi8+Cis8L2NsaXBQYXRoPgpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdp
dGgtdXNlLmh0bWwgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxk
LWVsZW1lbnQtd2l0aC11c2UuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5jOTRkODQyMjYyNzM4MWRlYzEwMjQz
N2Y4ZTM5MjBjOGMzNmM1YzIyCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hp
dHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwKQEAgLTAsMCAr
MSwyMSBAQAorPHN0eWxlPgorLnBhdGggeyAtd2Via2l0LWNsaXAtcGF0aDogdXJsKCNjbGlwcGF0
aCk7IH0KKzwvc3R5bGU+Cis8c2NyaXB0PgorZnVuY3Rpb24gbG9hZGV2ZW50KCkgeworICAgIGRv
Y3VtZW50LmNhcmV0UmFuZ2VGcm9tUG9pbnQoMzcsIDcwKTsKKyAgICBpZiAod2luZG93LnRlc3RS
dW5uZXIpIHsKKyAgICAgICAgZG9jdW1lbnQuYm9keS5pbm5lclRleHQgPSAiVGVzdHMgU1ZHIGhp
dCB0ZXN0IHdpdGggYSByZWN1cnNpdmUgY2xpcFBhdGguICBUZXN0IHBhc3NlcyBpZiBXZWJLaXQg
ZG9lcyBub3QgY3Jhc2guICBQQVNTIjsKKyAgICAgICAgdGVzdFJ1bm5lci5kdW1wQXNUZXh0KCk7
CisgICAgfQorfQorPC9zY3JpcHQ+Cis8Ym9keSBvbmxvYWQ9bG9hZGV2ZW50KCk+Cis8c3ZnIGNv
bnRlbnRTY3JpcHRUeXBlPSJ0ZXh0L2VjbWFzY3JpcHQiPgorPHBhdGggZD0iTTE2IDggTDMyIDU2
IiBjbGFzcz0icGF0aCIgLz4KKzxnIGlkPSJncm91cCI+CisgICAgPHRleHQgY2xpcC1wYXRoPSJ1
cmwoI2NsaXBwYXRoKSIgdG89ImN1cnJlbnRDb2xvciI+VGV4dDwvdGV4dD4KKzwvZz4KKzxjbGlw
UGF0aCBpZD0iY2xpcHBhdGgiIGNsaXBQYXRoVW5pdHM9Im9iamVjdEJvdW5kaW5nQm94Ij4KKyAg
ICA8dXNlIGhyZWY9IiNncm91cCIvPgorPC9jbGlwUGF0aD4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395768</attachid>
            <date>2020-04-07 20:13:15 -0700</date>
            <delta_ts>2020-04-08 00:26:09 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209773-20200407201314.patch</filename>
            <type>text/plain</type>
            <size>16222</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQxZmE4NDU2ZmE4MmFi
NTlhMzJjODFkNzZiZGI2YzY0NzQzOWNmMy4uMGEyOGUxOWYwOTNmMjI2M2ZhYzM1ZTUzY2VkZGYw
N2FjNDJmODhjZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA0LTA3ICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBh
dGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAwMjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcG9uIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgdGhl
IG9yaWdpbmFsIGZpeCBmb3IgdGhlIGhpdCB0ZXN0IGluIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ciB0byBwcmV2ZW50CisgICAgICAgIGluZmluaXRlIHJlY3Vyc2lvbiB3YXMgaW5jb21wbGV0ZSwg
YXMgc29tZXRoaW5nIHN1Y2ggYXMgYSB1c2UgZWxlbWVudCBjb3VsZCBlYXNpbHkgY2F1c2UgYW5v
dGhlciBjeWNsZSB3aGljaAorICAgICAgICB3b3VsZCBub3QgYmUgZGV0ZWN0ZWQgYnkgdGhlIGlu
aXRpYWwgZml4LiAgSW5zdGVhZCwgYnkgbWFpbnRhaW5pbmcgYSBzZXQgb2YgdmlzaXRlZCBlbGVt
ZW50cywgd2UgY2FuIHByZXZlbnQKKyAgICAgICAgdmlzaXRpbmcgdGhlIHNhbWUgZWxlbWVudCB0
d2ljZSwgYW5kIHRodXMgYnJlYWtpbmcgYW55IGN5Y2xlcyB3aGljaCBtaWdodCBvY2N1ciBpbiB0
aGUgU1ZHIGRvY3VtZW50LiAgV2UKKyAgICAgICAgdHJhY2sgdGhlc2UgZWxlbWVudHMgd2l0aGlu
IHRoZSBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBjbGFzcywgd2hlcmUgdGhlIHNldCBv
ZiB2aXNpdGVkIGVsZW1lbnRzIGFyZQorICAgICAgICBtYWludGFpbmVkIHN0YXRpY2FsbHksIGFu
ZCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHdpbGwgbWFuYWdlIHRoZSBzY29wZSwgYXMgYW4gUkFJ
SS1zdHlsZSBvYmplY3QuCisKKyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFuIGV4aXN0aW5n
IHRlc3QsIGJ1dCBpbmNsdWRlcyBhZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2hpY2ggaWxsdXN0cmF0
ZSB0aGUgbW9yZSBjb21wbGV4CisgICAgICAgIGRvY3VtZW50IHN0cnVjdHVyZS4KKworICAgICAg
ICBUZXN0czogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNl
LXJvb3QuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xp
cENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVB
dEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdB
cmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjpT
VkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6flNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjpnZXRWaXNp
dGVkRWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9u
U2NvcGU6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0
aW9uU2NvcGU6OmlzVmlzaXRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVy
U3VwcG9ydC5oOgorCiAyMDIwLTA0LTA3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5j
b20+CiAKICAgICAgICAgW1dlYkF1dGhuXSBDYW5jZWwgV2ViQXV0aG4gcmVxdWVzdHMgd2hlbiB1
c2VycyBjYW5jZWwgTG9jYWxBdXRoZW50aWNhdGlvbiBwcm9tcHRzCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYjJiZjVk
ZTg4YTdkZDQ3ZWJjNzE4ODE5MmZkOGYwYWZmNjMwZmU4OS4uZmFkZjZlZjMzYWY5ZmI2Mzc3MmJi
NzkzOGMzNWI5ZTg2MTU0MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTY1LDcgKzE2NSw5IEBAIGJvb2wgUmVu
ZGVyU1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiBy
ZXF1ZXN0LCBIaXRUZXN0CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlw
cGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAg
ICAgICAgICAgICAgCisKKyAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRUZXN0
U2NvcGUoKnRoaXMpOworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxk
KCk7IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBp
ZiAoY2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhbFBvaW50LCBo
aXRUZXN0QWN0aW9uKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQs
IExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMjc4ZWI5YzRkMTk2YTc5Nzk3NmE2ZTE1MTJj
NTIwNWIyMGZhYWZmNS4uYmFiNGZmZDdiZTUzMTI0YzYyNGQ3NGMxYTYyZjU3ZTQ4NzRjNTczNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
QEAgLTIyNiw2ICsyMjYsOCBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50
KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgICAgICBpZiAo
IVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQp
KQogICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIFNWR0hpdFRlc3RDeWNsZURl
dGVjdGlvblNjb3BlIGhpdFRlc3RTY29wZSgqdGhpcyk7CisKICAgICAgICAgaWYgKGhpdFJ1bGVz
LmNhbkhpdEZpbGwpIHsKICAgICAgICAgICAgIGlmIChtX29iamVjdEJvdW5kaW5nQm94LmNvbnRh
aW5zKGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChy
ZXN1bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCAw
ZmYyNTljZTkwNjdhMTgyMDg5YzY5OTA2MzRkNzEwMzhhOTEyNjE4Li4zODM4MzdkYWYyYzkzMWE4
YTVkNTQ4MzhiYWM0OGZjMjZiNDg3OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjgsNiAr
MjY4LDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVu
dChjb25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICBpZiAoIVNWR1JlbmRlclN1cHBv
cnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIHBvaW50KSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCisgICAgU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGUgaGl0VGVzdFNjb3BlKCp0
aGlzKTsKKwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZH
VW5pdFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEFm
ZmluZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2Jq
ZWN0Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CkBAIC0yODQsMTUgKzI4Niw2IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0
JiBvYmplY3RCb3VuZGluCiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSAmJiAh
cmVuZGVyZXItPmlzU1ZHVGV4dCgpICYmICFjaGlsZE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6
OnVzZVRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKGlzPFJlZmVyZW5j
ZUNsaXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgewotICAgICAgICAgICAgYXV0
byYgY2xpcFBhdGggPSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxl
LmNsaXBQYXRoKCkpOwotICAgICAgICAgICAgQXRvbVN0cmluZyBpZChjbGlwUGF0aC5mcmFnbWVu
dCgpKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdl
dFJlbmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGRvY3VtZW50
KCksIGlkKTsKLSAgICAgICAgICAgIGlmIChjbGlwcGVyID09IHRoaXMpCi0gICAgICAgICAgICAg
ICAgY29udGludWU7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRQb2ludCBoaXRQb2ludDsKICAg
ICAgICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoaGl0UG9pbnQpOwogICAgICAgICBjb25zdGV4cHIg
T3B0aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RS
ZXF1ZXN0OjpTVkdDbGlwQ29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50
U2hhZG93Q29udGVudCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUm9vdC5jcHAKaW5kZXggYTA4YjMyMTUxNThlNDI2NmMwMzc0ODMzMWU2MDVlZWVkNzQxZTVi
MC4uMTlkMzAyMjYxNTg0ZWU2YmQ1NTIwNzljYjMzZTNiZWNlYmJiZDI2NiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MDIsNiArNDAy
LDggQEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVz
dCYgcmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICBMYXlvdXRQb2ludCBwb2ludEluUGFy
ZW50ID0gbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxh
dGVkT2Zmc2V0KTsKICAgICBMYXlvdXRQb2ludCBwb2ludEluQm9yZGVyQm94ID0gcG9pbnRJblBh
cmVudCAtIHRvTGF5b3V0U2l6ZShsb2NhdGlvbigpKTsKIAorICAgIEFTU0VSVChTVkdIaXRUZXN0
Q3ljbGVEZXRlY3Rpb25TY29wZTo6aXNFbXB0eSgpKTsKKwogICAgIC8vIFRlc3QgU1ZHIGNvbnRl
bnQgaWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhl
IHZpc3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8g
RklYTUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0
IHRlc3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVu
dEJveFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmll
d3BvcnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVu
dCkpKSB7CkBAIC00MTEsOCArNDEzLDEwIEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9p
bnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAg
ICAgICAgICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3Qt
YmFzZWQgaGl0IHRlc3RzIHlldC4KICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQ
b2ludChyZXF1ZXN0LCByZXN1bHQsIGxvY2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAg
ICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gp
OwotICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3Vs
dChjaGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyKSA9PSBIaXRUZXN0
UHJvZ3Jlc3M6OlN0b3ApCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0
QmFzZWRUZXN0UmVzdWx0KGNoaWxkLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWlu
ZXIpID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkgeworICAgICAgICAgICAgICAgICAgICBBU1NF
UlQoU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6OmlzRW1wdHkoKSk7CiAgICAgICAgICAg
ICAgICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0K
ICAgICAgICAgfQogICAgIH0KQEAgLTQzMSw2ICs0MzUsOCBAQCBib29sIFJlbmRlclNWR1Jvb3Q6
Om5vZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0
JiByZQogICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKFNWR0hpdFRlc3RDeWNsZURldGVj
dGlvblNjb3BlOjppc0VtcHR5KCkpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGZhMTlk
MTViYjQ1NjQ0ZmMxYmNhOWIxZGY1MjM4MTcwZjlkOWM5NGUuLjMzNWJiZjBmMmVkNDAzOGE5YjMw
M2Q1NmJiZjQ0NjU1MzY4YWY2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0zNjYsNiArMzY2LDggQEAgYm9vbCBSZW5kZXJTVkdT
aGFwZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0
VGVzdFJlc3UKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEo
KnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBTVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRUZXN0U2NvcGUoKnRoaXMpOworCiAgICAgUG9pbnRl
ckV2ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1BBVEhf
SElUVEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wg
aXNWaXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUp
OwogICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmMDIz
NTE5MzA4NTY1NTRkZGVlODIzYTg0Y2MyYzU0ZWJjYWM1ZDNjLi5hMjZkZDZjYzZjNmQ1YTYyYTFi
YjRjMjU4NjZhNTUxNzU1NzMyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ0MCw2ICs0NDAsOCBAQCBib29sIFJlbmRlclNWR1Rl
eHQ6Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRl
c3RSZXN1bAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBp
bmdBcmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7
ICAgICAgIAogCisgICAgICAgICAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRU
ZXN0U2NvcGUoKnRoaXMpOworCiAgICAgICAgICAgICBIaXRUZXN0TG9jYXRpb24gaGl0VGVzdExv
Y2F0aW9uKExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBvaW50KSkpOwogICAgICAg
ICAgICAgcmV0dXJuIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhp
dFRlc3RMb2NhdGlvbiwgTGF5b3V0UG9pbnQoKSwgaGl0VGVzdEFjdGlvbik7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9y
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3Bw
CmluZGV4IGZjYWYwMGM1MGJiZjYwM2VmM2EzYTlmZDgzNGQzYzk5ZTMzM2I5NTUuLjkzZGEwYzli
YWNiMWQzN2YyNGY1Njc2N2ZhNmY1NDNkYWU1MjQ3MDIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNDA3LDYgKzQwNyw5IEBA
IHZvaWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcENvbnRleHRUb0NTU0NsaXBwaW5nQXJlYShHcmFw
aGljc0NvbnRleHQmIGNvbnRleHQsIGNvCiAKIGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJ
bkNsaXBwaW5nQXJlYShjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRQ
b2ludCYgcG9pbnQpCiB7CisgICAgaWYgKFNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjpp
c1Zpc2l0aW5nKHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQ2xpcFBh
dGhPcGVyYXRpb24qIGNsaXBQYXRoT3BlcmF0aW9uID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0
aCgpOwogICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlv
bikgfHwgaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkKICAgICAg
ICAgcmV0dXJuIGlzUG9pbnRJbkNTU0NsaXBwaW5nQXJlYShyZW5kZXJlciwgcG9pbnQpOwpAQCAt
NTA2LDQgKzUwOSwzMyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2Vz
dG9yU2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVsZQogCiAjZW5kaWYKIAorU1ZH
SGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3Bl
KGNvbnN0IFJlbmRlckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgbV9lbGVtZW50ID0gbWFrZVdl
YWtQdHIoJmVsZW1lbnQpOworICAgIGF1dG8gcmVzdWx0ID0gZ2V0VmlzaXRlZEVsZW1lbnRzKCku
YWRkKG1fZWxlbWVudC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5p
c05ld0VudHJ5KTsKK30KKworU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6On5TVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSgpCit7CisgICAgYm9vbCByZXN1bHQgPSBnZXRWaXNpdGVk
RWxlbWVudHMoKS5yZW1vdmUoKm1fZWxlbWVudC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChy
ZXN1bHQsIHJlc3VsdCk7Cit9CisKK1dlYWtIYXNoU2V0PFJlbmRlckVsZW1lbnQ+JiBTVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6Z2V0VmlzaXRlZEVsZW1lbnRzKCkKK3sKKyAgICBzdGF0
aWMgTmV2ZXJEZXN0cm95ZWQ8V2Vha0hhc2hTZXQ8UmVuZGVyRWxlbWVudD4+IHNfdmlzaXRlZEVs
ZW1lbnRzOworICAgIHJldHVybiBzX3Zpc2l0ZWRFbGVtZW50czsKK30KKworYm9vbCBTVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuIGdldFZpc2l0
ZWRFbGVtZW50cygpLmNvbXB1dGVzRW1wdHkoKTsKK30KKworYm9vbCBTVkdIaXRUZXN0Q3ljbGVE
ZXRlY3Rpb25TY29wZTo6aXNWaXNpdGluZyhjb25zdCBSZW5kZXJFbGVtZW50JiBlbGVtZW50KQor
eworICAgIHJldHVybiBnZXRWaXNpdGVkRWxlbWVudHMoKS5jb250YWlucyhlbGVtZW50KTsKK30K
KwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJT
dXBwb3J0LmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQu
aAppbmRleCBjYzMzNmU3ZmNkOGQwNGFkOWJlOGQ0NGU2YmU0N2U3YzM0MGYwNWZjLi5kZTQxOTQ0
NWM4ODE3NTU2ZDVlODNkYTc1OTYwMzA0MjljMzg1ZjA2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaApAQCAtOTUsNCArOTUsMTcgQEAgcHJp
dmF0ZToKICAgICB+U1ZHUmVuZGVyU3VwcG9ydCgpOwogfTsKIAorY2xhc3MgU1ZHSGl0VGVzdEN5
Y2xlRGV0ZWN0aW9uU2NvcGUgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0hpdFRlc3RD
eWNsZURldGVjdGlvblNjb3BlKTsKK3B1YmxpYzoKKyAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rp
b25TY29wZShjb25zdCBSZW5kZXJFbGVtZW50Jik7CisgICAgflNWR0hpdFRlc3RDeWNsZURldGVj
dGlvblNjb3BlKCk7CisgICAgc3RhdGljIGJvb2wgaXNFbXB0eSgpOworICAgIHN0YXRpYyBib29s
IGlzVmlzaXRpbmcoY29uc3QgUmVuZGVyRWxlbWVudCYpOworCitwcml2YXRlOgorICAgIHN0YXRp
YyBXZWFrSGFzaFNldDxSZW5kZXJFbGVtZW50PiYgZ2V0VmlzaXRlZEVsZW1lbnRzKCk7CisgICAg
V2Vha1B0cjxSZW5kZXJFbGVtZW50PiBtX2VsZW1lbnQ7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9D
aGFuZ2VMb2cKaW5kZXggOTMxNTI5ZWJiZmE2NGUxY2YzNGEyNjJjYzYwMGQ2YThkZjZhMjcyZi4u
MDJkN2IxZWE5MTVkZmFjYjRlZDcwNmRlYjlmOGIwMTFhNzhlZDRlOCAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsx
LDE2IEBACisyMDIwLTA0LTA3ICBEb3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAg
ICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBhdGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1
c2VzIGluZmluaXRlIHJlY3Vyc2lvbgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9z
aG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAwMjM0Nz4K
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9o
aXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1leHBlY3RlZC50eHQ6
IEFkZGVkLgorICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVu
dC13aXRoLXVzZS1yb290LWV4cGVjdGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRl
c3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbDogQWRkZWQu
CisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgt
dXNlLmh0bWw6IEFkZGVkLgorCiAyMDIwLTA0LTA3ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNl
LmpAYXBwbGUuY29tPgogCiAgICAgICAgIFsgQ2F0YWxpbmEgd2syIF0gd2VicnRjL3BlZXItY29u
bmVjdGlvbi1hdWRpby1tdXRlMi5odG1sIGlzIGZsYWt5IHRpbWluZyBvdXQuCmRpZmYgLS1naXQg
YS9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0
aC11c2UtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0
aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0
NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjZhMmJi
YjFkYzQ4Njg5NDVhMTUyNWQ0NWY1MTkyZDdmYjNlOWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5
b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNl
LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJl
Y3Vyc2l2ZSBjbGlwUGF0aC4gVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQ
QVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNo
aWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcv
aGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC1leHBlY3Rl
ZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMC4uZTI2YTJiYmIxZGM0ODY4OTQ1YTE1MjVkNDVmNTE5MmQ3ZmIzZTlj
YQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBh
dGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBA
CitUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJlY3Vyc2l2ZSBjbGlwUGF0aC4gVGVzdCBwYXNz
ZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0
cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC5o
dG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50
LXdpdGgtdXNlLXJvb3QuaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi44OTZmZWJiZmFlZWYyNDRiY2VjODg1NmEy
OTZmNmRjMjU5ZDAzMWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRl
c3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbApAQCAtMCww
ICsxLDIxIEBACis8c3R5bGU+CisucGF0aCB7IC13ZWJraXQtY2xpcC1wYXRoOiB1cmwoI2NsaXBw
YXRoKTsgfQorPC9zdHlsZT4KKzxzY3JpcHQ+CitmdW5jdGlvbiBsb2FkZXZlbnQoKSB7CisgICAg
ZG9jdW1lbnQuY2FyZXRSYW5nZUZyb21Qb2ludCgzNywgNzApOworICAgIGlmICh3aW5kb3cudGVz
dFJ1bm5lcikgeworICAgICAgICBkb2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUZXN0cyBTVkcg
aGl0IHRlc3Qgd2l0aCBhIHJlY3Vyc2l2ZSBjbGlwUGF0aC4gIFRlc3QgcGFzc2VzIGlmIFdlYktp
dCBkb2VzIG5vdCBjcmFzaC4gIFBBU1MiOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQo
KTsKKyAgICB9Cit9Cis8L3NjcmlwdD4KKzxib2R5IG9ubG9hZD1sb2FkZXZlbnQoKT4KKzxzdmcg
Y29udGVudFNjcmlwdFR5cGU9InRleHQvZWNtYXNjcmlwdCIgaWQ9InN2ZyI+Cis8cGF0aCBkPSJN
MTYgOCBMMzIgNTYiIGNsYXNzPSJwYXRoIiAvPgorPGcgaWQ9Imdyb3VwIj4KKyAgICA8dGV4dCBj
bGlwLXBhdGg9InVybCgjY2xpcHBhdGgpIiB0bz0iY3VycmVudENvbG9yIj5UZXh0PC90ZXh0Pgor
PC9nPgorPGNsaXBQYXRoIGlkPSJjbGlwcGF0aCIgY2xpcFBhdGhVbml0cz0ib2JqZWN0Qm91bmRp
bmdCb3giPgorICAgIDx1c2UgaHJlZj0iI3N2ZyIvPgorPC9jbGlwUGF0aD4KZGlmZiAtLWdpdCBh
L0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRo
LXVzZS5odG1sIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1l
bGVtZW50LXdpdGgtdXNlLmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uYzk0ZDg0MjI2MjczODFkZWMxMDI0Mzdm
OGUzOTIwYzhjMzZjNWMyMgotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0
ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS5odG1sCkBAIC0wLDAgKzEs
MjEgQEAKKzxzdHlsZT4KKy5wYXRoIHsgLXdlYmtpdC1jbGlwLXBhdGg6IHVybCgjY2xpcHBhdGgp
OyB9Cis8L3N0eWxlPgorPHNjcmlwdD4KK2Z1bmN0aW9uIGxvYWRldmVudCgpIHsKKyAgICBkb2N1
bWVudC5jYXJldFJhbmdlRnJvbVBvaW50KDM3LCA3MCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVu
bmVyKSB7CisgICAgICAgIGRvY3VtZW50LmJvZHkuaW5uZXJUZXh0ID0gIlRlc3RzIFNWRyBoaXQg
dGVzdCB3aXRoIGEgcmVjdXJzaXZlIGNsaXBQYXRoLiAgVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRv
ZXMgbm90IGNyYXNoLiAgUEFTUyI7CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOwor
ICAgIH0KK30KKzwvc2NyaXB0PgorPGJvZHkgb25sb2FkPWxvYWRldmVudCgpPgorPHN2ZyBjb250
ZW50U2NyaXB0VHlwZT0idGV4dC9lY21hc2NyaXB0Ij4KKzxwYXRoIGQ9Ik0xNiA4IEwzMiA1NiIg
Y2xhc3M9InBhdGgiIC8+Cis8ZyBpZD0iZ3JvdXAiPgorICAgIDx0ZXh0IGNsaXAtcGF0aD0idXJs
KCNjbGlwcGF0aCkiIHRvPSJjdXJyZW50Q29sb3IiPlRleHQ8L3RleHQ+Cis8L2c+Cis8Y2xpcFBh
dGggaWQ9ImNsaXBwYXRoIiBjbGlwUGF0aFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAg
PHVzZSBocmVmPSIjZ3JvdXAiLz4KKzwvY2xpcFBhdGg+Cg==
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>395777</attachid>
            <date>2020-04-08 00:26:11 -0700</date>
            <delta_ts>2020-04-08 10:00:38 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-209773-20200408002610.patch</filename>
            <type>text/plain</type>
            <size>16201</size>
            <attacher name="Doug Kelly">dougk</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjU5Njg0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTQxZmE4NDU2ZmE4MmFi
NTlhMzJjODFkNzZiZGI2YzY0NzQzOWNmMy4uNzM4OTU5NzRhNzA3MDNkYzJlYmY2N2RmNjQxYzhi
ZjFmNjE3MTQ2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDQ1IEBACisyMDIwLTA0LTA3ICBEb3Vn
IEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xpcFBh
dGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lvbgor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5NzczCisg
ICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAwMjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBVcG9uIGZ1cnRoZXIgaW52ZXN0aWdhdGlvbiwgdGhl
IG9yaWdpbmFsIGZpeCBmb3IgdGhlIGhpdCB0ZXN0IGluIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ciB0byBwcmV2ZW50CisgICAgICAgIGluZmluaXRlIHJlY3Vyc2lvbiB3YXMgaW5jb21wbGV0ZSwg
YXMgc29tZXRoaW5nIHN1Y2ggYXMgYSB1c2UgZWxlbWVudCBjb3VsZCBlYXNpbHkgY2F1c2UgYW5v
dGhlciBjeWNsZSB3aGljaAorICAgICAgICB3b3VsZCBub3QgYmUgZGV0ZWN0ZWQgYnkgdGhlIGlu
aXRpYWwgZml4LiAgSW5zdGVhZCwgYnkgbWFpbnRhaW5pbmcgYSBzZXQgb2YgdmlzaXRlZCBlbGVt
ZW50cywgd2UgY2FuIHByZXZlbnQKKyAgICAgICAgdmlzaXRpbmcgdGhlIHNhbWUgZWxlbWVudCB0
d2ljZSwgYW5kIHRodXMgYnJlYWtpbmcgYW55IGN5Y2xlcyB3aGljaCBtaWdodCBvY2N1ciBpbiB0
aGUgU1ZHIGRvY3VtZW50LiAgV2UKKyAgICAgICAgdHJhY2sgdGhlc2UgZWxlbWVudHMgd2l0aGlu
IHRoZSBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBjbGFzcywgd2hlcmUgdGhlIHNldCBv
ZiB2aXNpdGVkIGVsZW1lbnRzIGFyZQorICAgICAgICBtYWludGFpbmVkIHN0YXRpY2FsbHksIGFu
ZCBpbnN0YW5jZXMgb2YgdGhlIGNsYXNzIHdpbGwgbWFuYWdlIHRoZSBzY29wZSwgYXMgYW4gUkFJ
SS1zdHlsZSBvYmplY3QuCisKKyAgICAgICAgVGhpcyBpcyBjb3ZlcmVkIGJ5IGFuIGV4aXN0aW5n
IHRlc3QsIGJ1dCBpbmNsdWRlcyBhZGRpdGlvbmFsIHRlc3QgY2FzZXMgd2hpY2ggaWxsdXN0cmF0
ZSB0aGUgbW9yZSBjb21wbGV4CisgICAgICAgIGRvY3VtZW50IHN0cnVjdHVyZS4KKworICAgICAg
ICBUZXN0czogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNl
LXJvb3QuaHRtbAorICAgICAgICAgICAgICAgc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwKKworICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHQ29udGFpbmVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR0NvbnRhaW5lcjo6
bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6bm9kZUF0RmxvYXRQb2lu
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xp
cENvbnRlbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUm9vdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludCk6CisgICAgICAgICog
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdTaGFwZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5k
ZXJTVkdTaGFwZTo6bm9kZUF0RmxvYXRQb2ludCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdUZXh0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclNWR1RleHQ6Om5vZGVB
dEZsb2F0UG9pbnQpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdB
cmVhKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjpT
VkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdIaXRU
ZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6flNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjp2aXNpdGVk
RWxlbWVudHMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2Nv
cGU6OmlzRW1wdHkpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9u
U2NvcGU6OmlzVmlzaXRpbmcpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3Vw
cG9ydC5oOgorCiAyMDIwLTA0LTA3ICBKaWV3ZW4gVGFuICA8amlld2VuX3RhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW1dlYkF1dGhuXSBDYW5jZWwgV2ViQXV0aG4gcmVxdWVzdHMgd2hlbiB1c2Vy
cyBjYW5jZWwgTG9jYWxBdXRoZW50aWNhdGlvbiBwcm9tcHRzCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0NvbnRhaW5lci5jcHAKaW5kZXggYjJiZjVkZTg4
YTdkZDQ3ZWJjNzE4ODE5MmZkOGYwYWZmNjMwZmU4OS4uZmFkZjZlZjMzYWY5ZmI2Mzc3MmJiNzkz
OGMzNWI5ZTg2MTU0MTgwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdDb250YWluZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHQ29udGFpbmVyLmNwcApAQCAtMTY1LDcgKzE2NSw5IEBAIGJvb2wgUmVuZGVy
U1ZHQ29udGFpbmVyOjpub2RlQXRGbG9hdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1
ZXN0LCBIaXRUZXN0CiAKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGlu
Z0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAg
ICAgICAgICAgCisKKyAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRUZXN0U2Nv
cGUoKnRoaXMpOworCiAgICAgZm9yIChSZW5kZXJPYmplY3QqIGNoaWxkID0gbGFzdENoaWxkKCk7
IGNoaWxkOyBjaGlsZCA9IGNoaWxkLT5wcmV2aW91c1NpYmxpbmcoKSkgewogICAgICAgICBpZiAo
Y2hpbGQtPm5vZGVBdEZsb2F0UG9pbnQocmVxdWVzdCwgcmVzdWx0LCBsb2NhbFBvaW50LCBoaXRU
ZXN0QWN0aW9uKSkgewogICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIExh
eW91dFBvaW50KGxvY2FsUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggMjc4ZWI5YzRkMTk2YTc5Nzk3NmE2ZTE1MTJjNTIw
NWIyMGZhYWZmNS4uYmFiNGZmZDdiZTUzMTI0YzYyNGQ3NGMxYTYyZjU3ZTQ4NzRjNTczNyAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKQEAg
LTIyNiw2ICsyMjYsOCBAQCBib29sIFJlbmRlclNWR0ltYWdlOjpub2RlQXRGbG9hdFBvaW50KGNv
bnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdQogICAgICAgICBpZiAoIVNW
R1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIGxvY2FsUG9pbnQpKQog
ICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwogCisgICAgICAgIFNWR0hpdFRlc3RDeWNsZURldGVj
dGlvblNjb3BlIGhpdFRlc3RTY29wZSgqdGhpcyk7CisKICAgICAgICAgaWYgKGhpdFJ1bGVzLmNh
bkhpdEZpbGwpIHsKICAgICAgICAgICAgIGlmIChtX29iamVjdEJvdW5kaW5nQm94LmNvbnRhaW5z
KGxvY2FsUG9pbnQpKSB7CiAgICAgICAgICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1
bHQsIExheW91dFBvaW50KGxvY2FsUG9pbnQpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyLmNwcAppbmRleCAwZmYy
NTljZTkwNjdhMTgyMDg5YzY5OTA2MzRkNzEwMzhhOTEyNjE4Li4zODM4MzdkYWYyYzkzMWE4YTVk
NTQ4MzhiYWM0OGZjMjZiNDg3OWQxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlQ2xpcHBlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXIuY3BwCkBAIC0yNjgsNiArMjY4
LDggQEAgYm9vbCBSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI6OmhpdFRlc3RDbGlwQ29udGVudChj
b25zdCBGbG9hdFJlY3QmIG9iamVjdEJvdW5kaW4KICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6
OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRoaXMsIHBvaW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCisgICAgU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGUgaGl0VGVzdFNjb3BlKCp0aGlz
KTsKKwogICAgIGlmIChjbGlwUGF0aEVsZW1lbnQoKS5jbGlwUGF0aFVuaXRzKCkgPT0gU1ZHVW5p
dFR5cGVzOjpTVkdfVU5JVF9UWVBFX09CSkVDVEJPVU5ESU5HQk9YKSB7CiAgICAgICAgIEFmZmlu
ZVRyYW5zZm9ybSB0cmFuc2Zvcm07CiAgICAgICAgIHRyYW5zZm9ybS50cmFuc2xhdGUob2JqZWN0
Qm91bmRpbmdCb3gubG9jYXRpb24oKSk7CkBAIC0yODQsMTUgKzI4Niw2IEBAIGJvb2wgUmVuZGVy
U1ZHUmVzb3VyY2VDbGlwcGVyOjpoaXRUZXN0Q2xpcENvbnRlbnQoY29uc3QgRmxvYXRSZWN0JiBv
YmplY3RCb3VuZGluCiAgICAgICAgIGlmICghcmVuZGVyZXItPmlzU1ZHU2hhcGUoKSAmJiAhcmVu
ZGVyZXItPmlzU1ZHVGV4dCgpICYmICFjaGlsZE5vZGUtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OnVz
ZVRhZykpCiAgICAgICAgICAgICBjb250aW51ZTsKIAotICAgICAgICBjb25zdCBSZW5kZXJTdHls
ZSYgc3R5bGUgPSByZW5kZXJlci0+c3R5bGUoKTsKLSAgICAgICAgaWYgKGlzPFJlZmVyZW5jZUNs
aXBQYXRoT3BlcmF0aW9uPihzdHlsZS5jbGlwUGF0aCgpKSkgewotICAgICAgICAgICAgYXV0byYg
Y2xpcFBhdGggPSBkb3duY2FzdDxSZWZlcmVuY2VDbGlwUGF0aE9wZXJhdGlvbj4oKnN0eWxlLmNs
aXBQYXRoKCkpOwotICAgICAgICAgICAgQXRvbVN0cmluZyBpZChjbGlwUGF0aC5mcmFnbWVudCgp
KTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IGdldFJl
bmRlclNWR1Jlc291cmNlQnlJZDxSZW5kZXJTVkdSZXNvdXJjZUNsaXBwZXI+KGRvY3VtZW50KCks
IGlkKTsKLSAgICAgICAgICAgIGlmIChjbGlwcGVyID09IHRoaXMpCi0gICAgICAgICAgICAgICAg
Y29udGludWU7Ci0gICAgICAgIH0KLQogICAgICAgICBJbnRQb2ludCBoaXRQb2ludDsKICAgICAg
ICAgSGl0VGVzdFJlc3VsdCByZXN1bHQoaGl0UG9pbnQpOwogICAgICAgICBjb25zdGV4cHIgT3B0
aW9uU2V0PEhpdFRlc3RSZXF1ZXN0OjpSZXF1ZXN0VHlwZT4gaGl0VHlwZSB7IEhpdFRlc3RSZXF1
ZXN0OjpTVkdDbGlwQ29udGVudCwgSGl0VGVzdFJlcXVlc3Q6OkRpc2FsbG93VXNlckFnZW50U2hh
ZG93Q29udGVudCB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSb290LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
Um9vdC5jcHAKaW5kZXggYTA4YjMyMTUxNThlNDI2NmMwMzc0ODMzMWU2MDVlZWVkNzQxZTViMC4u
MTlkMzAyMjYxNTg0ZWU2YmQ1NTIwNzljYjMzZTNiZWNlYmJiZDI2NiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSb290LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jvb3QuY3BwCkBAIC00MDIsNiArNDAyLDgg
QEAgYm9vbCBSZW5kZXJTVkdSb290Ojpub2RlQXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYg
cmVxdWVzdCwgSGl0VGVzdFJlc3VsdCYgcmUKICAgICBMYXlvdXRQb2ludCBwb2ludEluUGFyZW50
ID0gbG9jYXRpb25JbkNvbnRhaW5lci5wb2ludCgpIC0gdG9MYXlvdXRTaXplKGFjY3VtdWxhdGVk
T2Zmc2V0KTsKICAgICBMYXlvdXRQb2ludCBwb2ludEluQm9yZGVyQm94ID0gcG9pbnRJblBhcmVu
dCAtIHRvTGF5b3V0U2l6ZShsb2NhdGlvbigpKTsKIAorICAgIEFTU0VSVChTVkdIaXRUZXN0Q3lj
bGVEZXRlY3Rpb25TY29wZTo6aXNFbXB0eSgpKTsKKwogICAgIC8vIFRlc3QgU1ZHIGNvbnRlbnQg
aWYgdGhlIHBvaW50IGlzIGluIG91ciBjb250ZW50IGJveCBvciBpdCBpcyBpbnNpZGUgdGhlIHZp
c3VhbE92ZXJmbG93UmVjdCBhbmQgdGhlIG92ZXJmbG93IGlzIHZpc2libGUuCiAgICAgLy8gRklY
TUU6IFRoaXMgc2hvdWxkIGJlIGFuIGludGVyc2VjdGlvbiB3aGVuIHJlY3QtYmFzZWQgaGl0IHRl
c3RzIGFyZSBzdXBwb3J0ZWQgYnkgbm9kZUF0RmxvYXRQb2ludC4KICAgICBpZiAoY29udGVudEJv
eFJlY3QoKS5jb250YWlucyhwb2ludEluQm9yZGVyQm94KSB8fCAoIXNob3VsZEFwcGx5Vmlld3Bv
cnRDbGlwKCkgJiYgdmlzdWFsT3ZlcmZsb3dSZWN0KCkuY29udGFpbnMocG9pbnRJblBhcmVudCkp
KSB7CkBAIC00MTEsOCArNDEzLDEwIEBAIGJvb2wgUmVuZGVyU1ZHUm9vdDo6bm9kZUF0UG9pbnQo
Y29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RSZXN1bHQmIHJlCiAgICAgICAg
ICAgICAvLyBGSVhNRTogbm9kZUF0RmxvYXRQb2ludCgpIGRvZXNuJ3QgaGFuZGxlIHJlY3QtYmFz
ZWQgaGl0IHRlc3RzIHlldC4KICAgICAgICAgICAgIGlmIChjaGlsZC0+bm9kZUF0RmxvYXRQb2lu
dChyZXF1ZXN0LCByZXN1bHQsIGxvY2FsUG9pbnQsIGhpdFRlc3RBY3Rpb24pKSB7CiAgICAgICAg
ICAgICAgICAgdXBkYXRlSGl0VGVzdFJlc3VsdChyZXN1bHQsIHBvaW50SW5Cb3JkZXJCb3gpOwot
ICAgICAgICAgICAgICAgIGlmIChyZXN1bHQuYWRkTm9kZVRvTGlzdEJhc2VkVGVzdFJlc3VsdChj
aGlsZC0+bm9kZSgpLCByZXF1ZXN0LCBsb2NhdGlvbkluQ29udGFpbmVyKSA9PSBIaXRUZXN0UHJv
Z3Jlc3M6OlN0b3ApCisgICAgICAgICAgICAgICAgaWYgKHJlc3VsdC5hZGROb2RlVG9MaXN0QmFz
ZWRUZXN0UmVzdWx0KGNoaWxkLT5ub2RlKCksIHJlcXVlc3QsIGxvY2F0aW9uSW5Db250YWluZXIp
ID09IEhpdFRlc3RQcm9ncmVzczo6U3RvcCkgeworICAgICAgICAgICAgICAgICAgICBBU1NFUlQo
U1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6OmlzRW1wdHkoKSk7CiAgICAgICAgICAgICAg
ICAgICAgIHJldHVybiB0cnVlOworICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgIH0KICAg
ICAgICAgfQogICAgIH0KQEAgLTQzMSw2ICs0MzUsOCBAQCBib29sIFJlbmRlclNWR1Jvb3Q6Om5v
ZGVBdFBvaW50KGNvbnN0IEhpdFRlc3RSZXF1ZXN0JiByZXF1ZXN0LCBIaXRUZXN0UmVzdWx0JiBy
ZQogICAgICAgICB9CiAgICAgfQogCisgICAgQVNTRVJUKFNWR0hpdFRlc3RDeWNsZURldGVjdGlv
blNjb3BlOjppc0VtcHR5KCkpOworCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1NoYXBlLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHU2hhcGUuY3BwCmluZGV4IGZhMTlkMTVi
YjQ1NjQ0ZmMxYmNhOWIxZGY1MjM4MTcwZjlkOWM5NGUuLjMzNWJiZjBmMmVkNDAzOGE5YjMwM2Q1
NmJiZjQ0NjU1MzY4YWY2ODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHU2hhcGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHU2hhcGUuY3BwCkBAIC0zNjYsNiArMzY2LDggQEAgYm9vbCBSZW5kZXJTVkdTaGFw
ZTo6bm9kZUF0RmxvYXRQb2ludChjb25zdCBIaXRUZXN0UmVxdWVzdCYgcmVxdWVzdCwgSGl0VGVz
dFJlc3UKICAgICBpZiAoIVNWR1JlbmRlclN1cHBvcnQ6OnBvaW50SW5DbGlwcGluZ0FyZWEoKnRo
aXMsIGxvY2FsUG9pbnQpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKKyAgICBTVkdIaXRUZXN0
Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRUZXN0U2NvcGUoKnRoaXMpOworCiAgICAgUG9pbnRlckV2
ZW50c0hpdFJ1bGVzIGhpdFJ1bGVzKFBvaW50ZXJFdmVudHNIaXRSdWxlczo6U1ZHX1BBVEhfSElU
VEVTVElORywgcmVxdWVzdCwgc3R5bGUoKS5wb2ludGVyRXZlbnRzKCkpOwogICAgIGJvb2wgaXNW
aXNpYmxlID0gKHN0eWxlKCkudmlzaWJpbGl0eSgpID09IFZpc2liaWxpdHk6OlZpc2libGUpOwog
ICAgIGlmIChpc1Zpc2libGUgfHwgIWhpdFJ1bGVzLnJlcXVpcmVWaXNpYmxlKSB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1RleHQuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdUZXh0LmNwcAppbmRleCBmMDIzNTE5
MzA4NTY1NTRkZGVlODIzYTg0Y2MyYzU0ZWJjYWM1ZDNjLi5hMjZkZDZjYzZjNmQ1YTYyYTFiYjRj
MjU4NjZhNTUxNzU1NzMyOGQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1RleHQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHVGV4dC5jcHAKQEAgLTQ0MCw2ICs0NDAsOCBAQCBib29sIFJlbmRlclNWR1RleHQ6
Om5vZGVBdEZsb2F0UG9pbnQoY29uc3QgSGl0VGVzdFJlcXVlc3QmIHJlcXVlc3QsIEhpdFRlc3RS
ZXN1bAogICAgICAgICAgICAgaWYgKCFTVkdSZW5kZXJTdXBwb3J0Ojpwb2ludEluQ2xpcHBpbmdB
cmVhKCp0aGlzLCBsb2NhbFBvaW50KSkKICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7ICAg
ICAgIAogCisgICAgICAgICAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZSBoaXRUZXN0
U2NvcGUoKnRoaXMpOworCiAgICAgICAgICAgICBIaXRUZXN0TG9jYXRpb24gaGl0VGVzdExvY2F0
aW9uKExheW91dFBvaW50KGZsb29yZWRJbnRQb2ludChsb2NhbFBvaW50KSkpOwogICAgICAgICAg
ICAgcmV0dXJuIFJlbmRlckJsb2NrOjpub2RlQXRQb2ludChyZXF1ZXN0LCByZXN1bHQsIGhpdFRl
c3RMb2NhdGlvbiwgTGF5b3V0UG9pbnQoKSwgaGl0VGVzdEFjdGlvbik7CiAgICAgICAgIH0KZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuY3BwCmlu
ZGV4IGZjYWYwMGM1MGJiZjYwM2VmM2EzYTlmZDgzNGQzYzk5ZTMzM2I5NTUuLjIyOGQ0YzFiMDZi
NDA4OTIwNTVkYjgyMjgzNzlhOGM2NzVlYWVmNGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyU3VwcG9ydC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmNwcApAQCAtNDA3LDYgKzQwNyw5IEBAIHZv
aWQgU1ZHUmVuZGVyU3VwcG9ydDo6Y2xpcENvbnRleHRUb0NTU0NsaXBwaW5nQXJlYShHcmFwaGlj
c0NvbnRleHQmIGNvbnRleHQsIGNvCiAKIGJvb2wgU1ZHUmVuZGVyU3VwcG9ydDo6cG9pbnRJbkNs
aXBwaW5nQXJlYShjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgY29uc3QgRmxvYXRQb2lu
dCYgcG9pbnQpCiB7CisgICAgaWYgKFNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlOjppc1Zp
c2l0aW5nKHJlbmRlcmVyKSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOworCiAgICAgQ2xpcFBhdGhP
cGVyYXRpb24qIGNsaXBQYXRoT3BlcmF0aW9uID0gcmVuZGVyZXIuc3R5bGUoKS5jbGlwUGF0aCgp
OwogICAgIGlmIChpczxTaGFwZUNsaXBQYXRoT3BlcmF0aW9uPihjbGlwUGF0aE9wZXJhdGlvbikg
fHwgaXM8Qm94Q2xpcFBhdGhPcGVyYXRpb24+KGNsaXBQYXRoT3BlcmF0aW9uKSkKICAgICAgICAg
cmV0dXJuIGlzUG9pbnRJbkNTU0NsaXBwaW5nQXJlYShyZW5kZXJlciwgcG9pbnQpOwpAQCAtNTA2
LDQgKzUwOSwzMyBAQCB2b2lkIFNWR1JlbmRlclN1cHBvcnQ6OnVwZGF0ZU1hc2tlZEFuY2VzdG9y
U2hvdWxkSXNvbGF0ZUJsZW5kaW5nKGNvbnN0IFJlbmRlckVsZQogCiAjZW5kaWYKIAorU1ZHSGl0
VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6OlNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlKGNv
bnN0IFJlbmRlckVsZW1lbnQmIGVsZW1lbnQpCit7CisgICAgbV9lbGVtZW50ID0gbWFrZVdlYWtQ
dHIoJmVsZW1lbnQpOworICAgIGF1dG8gcmVzdWx0ID0gdmlzaXRlZEVsZW1lbnRzKCkuYWRkKG1f
ZWxlbWVudC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJlc3VsdC5pc05ld0Vu
dHJ5KTsKK30KKworU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGU6On5TVkdIaXRUZXN0Q3lj
bGVEZXRlY3Rpb25TY29wZSgpCit7CisgICAgYm9vbCByZXN1bHQgPSB2aXNpdGVkRWxlbWVudHMo
KS5yZW1vdmUoKm1fZWxlbWVudC5nZXQoKSk7CisgICAgQVNTRVJUX1VOVVNFRChyZXN1bHQsIHJl
c3VsdCk7Cit9CisKK1dlYWtIYXNoU2V0PFJlbmRlckVsZW1lbnQ+JiBTVkdIaXRUZXN0Q3ljbGVE
ZXRlY3Rpb25TY29wZTo6dmlzaXRlZEVsZW1lbnRzKCkKK3sKKyAgICBzdGF0aWMgTmV2ZXJEZXN0
cm95ZWQ8V2Vha0hhc2hTZXQ8UmVuZGVyRWxlbWVudD4+IHNfdmlzaXRlZEVsZW1lbnRzOworICAg
IHJldHVybiBzX3Zpc2l0ZWRFbGVtZW50czsKK30KKworYm9vbCBTVkdIaXRUZXN0Q3ljbGVEZXRl
Y3Rpb25TY29wZTo6aXNFbXB0eSgpCit7CisgICAgcmV0dXJuIHZpc2l0ZWRFbGVtZW50cygpLmNv
bXB1dGVzRW1wdHkoKTsKK30KKworYm9vbCBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZTo6
aXNWaXNpdGluZyhjb25zdCBSZW5kZXJFbGVtZW50JiBlbGVtZW50KQoreworICAgIHJldHVybiB2
aXNpdGVkRWxlbWVudHMoKS5jb250YWlucyhlbGVtZW50KTsKK30KKwogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJTdXBwb3J0LmggYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclN1cHBvcnQuaAppbmRleCBjYzMzNmU3ZmNk
OGQwNGFkOWJlOGQ0NGU2YmU0N2U3YzM0MGYwNWZjLi5lNDhlYmZlN2FlYjdhODBkMzA3NTBiOTRh
NjZjMmIzOWFkMmM1ZjkyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclN1cHBvcnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NW
R1JlbmRlclN1cHBvcnQuaApAQCAtOTUsNCArOTUsMTcgQEAgcHJpdmF0ZToKICAgICB+U1ZHUmVu
ZGVyU3VwcG9ydCgpOwogfTsKIAorY2xhc3MgU1ZHSGl0VGVzdEN5Y2xlRGV0ZWN0aW9uU2NvcGUg
eworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3Bl
KTsKK3B1YmxpYzoKKyAgICBTVkdIaXRUZXN0Q3ljbGVEZXRlY3Rpb25TY29wZShjb25zdCBSZW5k
ZXJFbGVtZW50Jik7CisgICAgflNWR0hpdFRlc3RDeWNsZURldGVjdGlvblNjb3BlKCk7CisgICAg
c3RhdGljIGJvb2wgaXNFbXB0eSgpOworICAgIHN0YXRpYyBib29sIGlzVmlzaXRpbmcoY29uc3Qg
UmVuZGVyRWxlbWVudCYpOworCitwcml2YXRlOgorICAgIHN0YXRpYyBXZWFrSGFzaFNldDxSZW5k
ZXJFbGVtZW50PiYgdmlzaXRlZEVsZW1lbnRzKCk7CisgICAgV2Vha1B0cjxSZW5kZXJFbGVtZW50
PiBtX2VsZW1lbnQ7Cit9OworCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9DaGFuZ2VMb2cgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKaW5kZXggOTMxNTI5
ZWJiZmE2NGUxY2YzNGEyNjJjYzYwMGQ2YThkZjZhMjcyZi4uMDJkN2IxZWE5MTVkZmFjYjRlZDcw
NmRlYjlmOGIwMTFhNzhlZDRlOCAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCisr
KyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2IEBACisyMDIwLTA0LTA3ICBE
b3VnIEtlbGx5ICA8ZG91Z2tAYXBwbGUuY29tPgorCisgICAgICAgIEhpdCB0ZXN0IHdpdGggY2xp
cFBhdGggcmVmZXJlbmNpbmcgcGFyZW50IGVsZW1lbnQgY2F1c2VzIGluZmluaXRlIHJlY3Vyc2lv
bgorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjA5Nzcz
CisgICAgICAgIDxyZGFyOi8vcHJvYmxlbS82MDAwMjM0Nz4KKworICAgICAgICBSZXZpZXdlZCBi
eSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIHN2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgt
Y2hpbGQtZWxlbWVudC13aXRoLXVzZS1leHBlY3RlZC50eHQ6IEFkZGVkLgorICAgICAgICAqIHN2
Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS1yb290LWV4cGVj
dGVkLnR4dDogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbDogQWRkZWQuCisgICAgICAgICogc3ZnL2hpdHRl
c3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLmh0bWw6IEFkZGVkLgorCiAy
MDIwLTA0LTA3ICBKYXNvbiBMYXdyZW5jZSAgPGxhd3JlbmNlLmpAYXBwbGUuY29tPgogCiAgICAg
ICAgIFsgQ2F0YWxpbmEgd2syIF0gd2VicnRjL3BlZXItY29ubmVjdGlvbi1hdWRpby1tdXRlMi5o
dG1sIGlzIGZsYWt5IHRpbWluZyBvdXQuCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvaGl0
dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2UtZXhwZWN0ZWQudHh0IGIv
TGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgt
dXNlLWV4cGVjdGVkLnR4dApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi5lMjZhMmJiYjFkYzQ4Njg5NDVhMTUyNWQ0NWY1
MTkyZDdmYjNlOWNhCi0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qv
c3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLWV4cGVjdGVkLnR4dApAQCAtMCww
ICsxIEBACitUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJlY3Vyc2l2ZSBjbGlwUGF0aC4gVGVz
dCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiBQQVNTCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Ut
cm9vdC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xpcC1wYXRo
LWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAx
MDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uZTI2
YTJiYmIxZGM0ODY4OTQ1YTE1MjVkNDVmNTE5MmQ3ZmIzZTljYQotLS0gL2Rldi9udWxsCisrKyBi
L0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRo
LXVzZS1yb290LWV4cGVjdGVkLnR4dApAQCAtMCwwICsxIEBACitUZXN0cyBTVkcgaGl0IHRlc3Qg
d2l0aCBhIHJlY3Vyc2l2ZSBjbGlwUGF0aC4gVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90
IGNyYXNoLiBQQVNTCmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9zdmcvaGl0dGVzdC9zdmctY2xp
cC1wYXRoLWNoaWxkLWVsZW1lbnQtd2l0aC11c2Utcm9vdC5odG1sIGIvTGF5b3V0VGVzdHMvc3Zn
L2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwLi44OTZmZWJiZmFlZWYyNDRiY2VjODg1NmEyOTZmNmRjMjU5ZDAzMWNhCi0tLSAv
ZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGls
ZC1lbGVtZW50LXdpdGgtdXNlLXJvb3QuaHRtbApAQCAtMCwwICsxLDIxIEBACis8c3R5bGU+Cisu
cGF0aCB7IC13ZWJraXQtY2xpcC1wYXRoOiB1cmwoI2NsaXBwYXRoKTsgfQorPC9zdHlsZT4KKzxz
Y3JpcHQ+CitmdW5jdGlvbiBsb2FkZXZlbnQoKSB7CisgICAgZG9jdW1lbnQuY2FyZXRSYW5nZUZy
b21Qb2ludCgzNywgNzApOworICAgIGlmICh3aW5kb3cudGVzdFJ1bm5lcikgeworICAgICAgICBk
b2N1bWVudC5ib2R5LmlubmVyVGV4dCA9ICJUZXN0cyBTVkcgaGl0IHRlc3Qgd2l0aCBhIHJlY3Vy
c2l2ZSBjbGlwUGF0aC4gIFRlc3QgcGFzc2VzIGlmIFdlYktpdCBkb2VzIG5vdCBjcmFzaC4gIFBB
U1MiOworICAgICAgICB0ZXN0UnVubmVyLmR1bXBBc1RleHQoKTsKKyAgICB9Cit9Cis8L3Njcmlw
dD4KKzxib2R5IG9ubG9hZD1sb2FkZXZlbnQoKT4KKzxzdmcgY29udGVudFNjcmlwdFR5cGU9InRl
eHQvZWNtYXNjcmlwdCIgaWQ9InN2ZyI+Cis8cGF0aCBkPSJNMTYgOCBMMzIgNTYiIGNsYXNzPSJw
YXRoIiAvPgorPGcgaWQ9Imdyb3VwIj4KKyAgICA8dGV4dCBjbGlwLXBhdGg9InVybCgjY2xpcHBh
dGgpIiB0bz0iY3VycmVudENvbG9yIj5UZXh0PC90ZXh0PgorPC9nPgorPGNsaXBQYXRoIGlkPSJj
bGlwcGF0aCIgY2xpcFBhdGhVbml0cz0ib2JqZWN0Qm91bmRpbmdCb3giPgorICAgIDx1c2UgaHJl
Zj0iI3N2ZyIvPgorPC9jbGlwUGF0aD4KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3N2Zy9oaXR0
ZXN0L3N2Zy1jbGlwLXBhdGgtY2hpbGQtZWxlbWVudC13aXRoLXVzZS5odG1sIGIvTGF5b3V0VGVz
dHMvc3ZnL2hpdHRlc3Qvc3ZnLWNsaXAtcGF0aC1jaGlsZC1lbGVtZW50LXdpdGgtdXNlLmh0bWwK
bmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMC4uYzk0ZDg0MjI2MjczODFkZWMxMDI0MzdmOGUzOTIwYzhjMzZjNWMyMgotLS0g
L2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL3N2Zy9oaXR0ZXN0L3N2Zy1jbGlwLXBhdGgtY2hp
bGQtZWxlbWVudC13aXRoLXVzZS5odG1sCkBAIC0wLDAgKzEsMjEgQEAKKzxzdHlsZT4KKy5wYXRo
IHsgLXdlYmtpdC1jbGlwLXBhdGg6IHVybCgjY2xpcHBhdGgpOyB9Cis8L3N0eWxlPgorPHNjcmlw
dD4KK2Z1bmN0aW9uIGxvYWRldmVudCgpIHsKKyAgICBkb2N1bWVudC5jYXJldFJhbmdlRnJvbVBv
aW50KDM3LCA3MCk7CisgICAgaWYgKHdpbmRvdy50ZXN0UnVubmVyKSB7CisgICAgICAgIGRvY3Vt
ZW50LmJvZHkuaW5uZXJUZXh0ID0gIlRlc3RzIFNWRyBoaXQgdGVzdCB3aXRoIGEgcmVjdXJzaXZl
IGNsaXBQYXRoLiAgVGVzdCBwYXNzZXMgaWYgV2ViS2l0IGRvZXMgbm90IGNyYXNoLiAgUEFTUyI7
CisgICAgICAgIHRlc3RSdW5uZXIuZHVtcEFzVGV4dCgpOworICAgIH0KK30KKzwvc2NyaXB0Pgor
PGJvZHkgb25sb2FkPWxvYWRldmVudCgpPgorPHN2ZyBjb250ZW50U2NyaXB0VHlwZT0idGV4dC9l
Y21hc2NyaXB0Ij4KKzxwYXRoIGQ9Ik0xNiA4IEwzMiA1NiIgY2xhc3M9InBhdGgiIC8+Cis8ZyBp
ZD0iZ3JvdXAiPgorICAgIDx0ZXh0IGNsaXAtcGF0aD0idXJsKCNjbGlwcGF0aCkiIHRvPSJjdXJy
ZW50Q29sb3IiPlRleHQ8L3RleHQ+Cis8L2c+Cis8Y2xpcFBhdGggaWQ9ImNsaXBwYXRoIiBjbGlw
UGF0aFVuaXRzPSJvYmplY3RCb3VuZGluZ0JveCI+CisgICAgPHVzZSBocmVmPSIjZ3JvdXAiLz4K
KzwvY2xpcFBhdGg+Cg==
</data>

          </attachment>
      

    </bug>

</bugzilla>