<?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>216931</bug_id>
          
          <creation_ts>2020-09-24 09:51:40 -0700</creation_ts>
          <short_desc>Reduce the reliance on PseudoElement in the animation code</short_desc>
          <delta_ts>2021-01-12 11:05:34 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Animations</component>
          <version>WebKit Nightly Build</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=220550</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="Antoine Quint">graouts</reporter>
          <assigned_to name="Antoine Quint">graouts</assigned_to>
          <cc>annulen</cc>
    
    <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>cmarcelo</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>ryuan.choi</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1691550</commentid>
    <comment_count>0</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-24 09:51:40 -0700</bug_when>
    <thetext>Reduce the reliance on PseudoElement in the animation code</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691554</commentid>
    <comment_count>1</comment_count>
      <attachid>409588</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-24 09:59:43 -0700</bug_when>
    <thetext>Created attachment 409588
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691560</commentid>
    <comment_count>2</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-24 10:14:17 -0700</bug_when>
    <thetext>I have a few open questions about this patch:

1. Should we use Optional&lt;const Styleable&gt; or even Optional&lt;Styleable&gt; instead of const Optional&lt;const Styleable&gt;?

2. Should the element member of Styleable be Ref&lt;Element&gt; instead of Element&amp;?

3. Should we expose methods to access ElementAnimationRareData on Styleable directly? This would allow writing styleable.ensureAnimations() instead of styleable.element.ensureAnimations(styleable.pseudoId).

And some notes about places where I couldn&apos;t yet find a way out of using PseudoElement:

1. In KeyframeEffect::didChangeTargetStyleable(), in order for Element::invalidateStyleInternal() to be called on the new target, we have to ensure we create a PseudoElement in case the target is a pseudo-element.

2. In Style::TreeResolver::createAnimatedElementUpdate() we also require the use of PseudoElement to call Element::renderOrDisplayContentsStyle() on it. We would need a way to obtain the same RenderStyle object based on an Element/PseudoId combination.

3. In Style::TreeResolver::resolvePseudoStyle() we also require the use of PseudoElement.

4. KeyframeEffect::renderer() is another place where we rely on PseudoElement still in order to get the target RenderElement for the Element/PseudoId pair.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691564</commentid>
    <comment_count>3</comment_count>
      <attachid>409592</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-24 10:25:47 -0700</bug_when>
    <thetext>Created attachment 409592
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691566</commentid>
    <comment_count>4</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2020-09-24 10:28:28 -0700</bug_when>
    <thetext>&lt;rdar://problem/69511682&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691600</commentid>
    <comment_count>5</comment_count>
      <attachid>409605</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-24 11:19:23 -0700</bug_when>
    <thetext>Created attachment 409605
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691818</commentid>
    <comment_count>6</comment_count>
      <attachid>409605</attachid>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-25 02:07:27 -0700</bug_when>
    <thetext>Comment on attachment 409605
Patch

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

&gt; Source/WebCore/animation/WebAnimationUtilities.cpp:65
&gt; +        if (pseudoId == PseudoId::None)
&gt; +            return NotPseudo;
&gt; +        if (pseudoId == PseudoId::Marker)
&gt; +            return Marker;
&gt; +        if (pseudoId == PseudoId::Before)
&gt; +            return Before;
&gt; +        if (pseudoId == PseudoId::After)
&gt; +            return After;

switch?

&gt; Source/WebCore/animation/WebAnimationUtilities.cpp:73
&gt; +    auto pseudoIdAsString = [](PseudoId pseudoId) -&gt; String {
&gt; +        TextStream stream;
&gt; +        stream &lt;&lt; pseudoId;
&gt; +        return stream.release();
&gt; +    };

I think TextStreams are mostly just for debugging. If there isn&apos;t a general function for this you should write it.

However since PseudoId set is fixed you could also just provide sorting order for all of them and avoid the strings for now.

&gt; Source/WebCore/dom/ElementRareData.h:178
&gt; -    std::unique_ptr&lt;ElementAnimationRareData&gt; m_animationRareData;
&gt; +    HashMap&lt;PseudoId, std::unique_ptr&lt;ElementAnimationRareData&gt;, WTF::IntHash&lt;PseudoId&gt;, WTF::StrongEnumHashTraits&lt;PseudoId&gt;&gt; m_animationRareData;

I think this would almost always have zero-to-one and at most a couple of members. HashMap seem bit heavyweight for that. Maybe just use a Vector?

&gt; Source/WebCore/rendering/RenderElement.cpp:2313
&gt; +Optional&lt;Styleable&gt; RenderElement::styleable() const
&gt; +{
&gt; +    if (auto* element = this-&gt;element())
&gt; +        return Styleable(*element, element-&gt;pseudoId());
&gt; +    return WTF::nullopt;
&gt; +}

Maybe put this to Styleable instead as something like

static Styleable fromRenderer(const RenderElement&amp;)

RenderElement has enough stuff already.

This doesn&apos;t seem correct for before/after. &apos;element&apos; will point to the PseudoElement instead of the host Element which doesn&apos;t match how the other code expects Styleable to work.

&gt; Source/WebCore/style/Styleable.h:34
&gt; +struct Styleable {

We might consider putting this to Style namespace but it is ok for now as-is.

&gt; Source/WebCore/style/Styleable.h:42
&gt; +    Styleable(Element&amp; element, PseudoId pseudoId)
&gt; +        : element(element)
&gt; +        , pseudoId(pseudoId)
&gt; +    {
&gt; +    }

Asserting that element is not a PseudoElement would be good. Maybe it can also assert that if pseudo is before/after the PseudoElement exists on the element?

&gt; LayoutTests/imported/w3c/web-platform-tests/css/css-transitions/non-rendered-element-002-expected.txt:2
&gt; -Harness Error (TIMEOUT), message = null
&gt; -
&gt; -TIMEOUT Transitions on ::before/::after pseudo-elements are canceled when the content property is cleared Test timed out
&gt; +PASS Transitions on ::before/::after pseudo-elements are canceled when the content property is cleared 

Would be good to understand this progression.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691849</commentid>
    <comment_count>7</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2020-09-25 05:01:20 -0700</bug_when>
    <thetext>(In reply to Antoine Quint from comment #2)
&gt; I have a few open questions about this patch:
&gt; 
&gt; 1. Should we use Optional&lt;const Styleable&gt; or even Optional&lt;Styleable&gt;
&gt; instead of const Optional&lt;const Styleable&gt;?

Current use seems fine. 

&gt; 2. Should the element member of Styleable be Ref&lt;Element&gt; instead of
&gt; Element&amp;?

Might be a good idea. We&apos;ll need to be careful with reference cycles if Stylable is used in containers.
 
&gt; 3. Should we expose methods to access ElementAnimationRareData on Styleable
&gt; directly? This would allow writing styleable.ensureAnimations() instead of
&gt; styleable.element.ensureAnimations(styleable.pseudoId).

Probably better to keep Stylable simple.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691852</commentid>
    <comment_count>8</comment_count>
      <attachid>409683</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-25 06:02:18 -0700</bug_when>
    <thetext>Created attachment 409683
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691861</commentid>
    <comment_count>9</comment_count>
      <attachid>409687</attachid>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-25 06:42:39 -0700</bug_when>
    <thetext>Created attachment 409687
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691890</commentid>
    <comment_count>10</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2020-09-25 08:22:10 -0700</bug_when>
    <thetext>Committed r267571: &lt;https://trac.webkit.org/changeset/267571&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1691891</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2020-09-25 08:22:14 -0700</bug_when>
    <thetext>Tools/Scripts/svn-apply failed to apply attachment 409687 to trunk.
Please resolve the conflicts and upload a new patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1719064</commentid>
    <comment_count>12</comment_count>
    <who name="Antoine Quint">graouts</who>
    <bug_when>2021-01-12 11:05:34 -0800</bug_when>
    <thetext>This caused bug 220550.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409588</attachid>
            <date>2020-09-24 09:59:43 -0700</date>
            <delta_ts>2020-09-24 10:27:58 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216931-20200924185941.patch</filename>
            <type>text/plain</type>
            <size>118203</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0NTEzZGVmZjUxYjE0
YTFkMTQ5MGEyNGE5MDllYjdjMTY0ZjhkNy4uOGMwMjg4ZDVlN2NjNTYyZDM1YTcyMTg2NzE0MmM1
ZjIyYmY2MWE1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NiBAQAorMjAyMC0wOS0yNCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJl
bGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIHNvIGZhciByZWxp
ZWQgb24gUHNldWRvRWxlbWVudCBhcyBhIGZvdW5kYXRpb24gZm9yIHN1cHBvcnRpbmcgYW5pbWF0
aW9ucyBvZiBwc2V1ZG8tZWxlbWVudHMuIFRoaXMgaXMgbm90IGEKKyAgICAgICAgZ3JlYXQgY2hv
aWNlIHNpbmNlIFBzZXVkb0VsZW1lbnQgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gOjpiZWZvcmUg
YW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIG9ubHkuIFRoaXMgcGF0Y2gKKyAgICAgICAgcmVm
YWN0b3JzIGFuaW1hdGlvbi1yZWxhdGVkIGNvZGUgdG8gcmVseSBvbiBQc2V1ZG9FbGVtZW50IGFz
IGxpdHRsZSBhcyBwb3NzaWJsZSB3aXRob3V0IG1ha2luZyBjaGFuZ2VzIG91dHNpZGUKKyAgICAg
ICAgb2YgdGhlIGFuaW1hdGlvbiBjb2RlLCBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkcyBzdXBwb3J0
aW5nIGFuaW1hdGlvbiBvZiBtb3JlIHBzZXVkby1lbGVtZW50cy4KKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgYSBuZXcgc3RydWN0IFN0eWxlYWJsZSB3aGljaCBjb21iaW5lcyBhbiBF
bGVtZW50JiBhbmQgUHNldWRvSWQuIFdlIHVzZSB0aGlzIHN0cnVjdCBpbnN0ZWFkCisgICAgICAg
IG9mIEVsZW1lbnQgb2JqZWN0cyB3aGVyZXZlciBuZWNlc3NhcnkgaW4gdGhlIGFuaW1hdGlvbiBj
b2RlLiBPbiB0b3Agb2YgdGhhdCwgd2UgYWRkIGEgUHNldWRvSWQgcGFyYW1ldGVyIHRvIGFsbCB0
aGUKKyAgICAgICAgRWxlbWVudCBtZXRob2RzIHdyYXBwaW5nIGFjY2VzcyB0byBFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEgYW5kIHVzZSBhIEhhc2hNYXA8UHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0
cjxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+PgorICAgICAgICB0byBiZSBhYmxlIHRvIHNlcGFy
YXRlIGFuaW1hdGlvbiBkYXRhIHBlciBwc2V1ZG8tZWxlbWVudC4KKworICAgICAgICAqIFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgKiBhbmltYXRpb24vQW5pbWF0
aW9uVGltZWxpbmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnJl
bW92ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5p
bWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25U
aW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxp
c3RzRm9yT3duaW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGlu
ZTo6cmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6
OkFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50V2FzUmVtb3ZlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpBbmltYXRpb25UaW1lbGluZTo6d2lsbENoYW5nZVJlbmRlcmVyRm9yU3R5bGVhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2ZUFuaW1h
dGlvbnNGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6c2hvdWxkQ29uc2lkZXJBbmlt
YXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0Fu
aW1hdGlvbnNGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6a2V5ZnJhbWVFZmZlY3RG
b3JFbGVtZW50QW5kUHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5
bGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25X
YXNBZGRlZFRvRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25U
aW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVt
ZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpjYW5j
ZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NT
VHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudCk6
IERlbGV0ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmg6CisgICAg
ICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NB
bmltYXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NBbmltYXRpb246OkNTU0Fu
aW1hdGlvbik6CisgICAgICAgICogYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU1RyYW5z
aXRpb246OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpDU1NUcmFuc2l0aW9uOjpDU1NUcmFu
c2l0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oOgorICAgICAgICAq
IGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpE
ZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24pOgorICAgICAgICAoV2Vi
Q29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OmRpc2Fzc29jaWF0ZUZyb21Pd25pbmdF
bGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFs
aXplKToKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVlRE9N
RXZlbnQpOgorICAgICAgICAqIGFuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oOgorICAg
ICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OkRvY3VtZW50VGltZWxpbmU6OmFuaW1hdGlvbkNhbkJlUmVtb3ZlZCk6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRpbWVsaW5lOjp0cmFuc2l0aW9uRGlkQ29tcGxldGUpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6Y29tcHV0ZUV4dGVudE9mQW5pbWF0aW9uIGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmlzUnVubmluZ0FuaW1hdGlv
bk9uUmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6
aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmFuaW1hdGVkU3R5bGVGb3JSZW5kZXJlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpydW5uaW5nQW5pbWF0aW9uc0ZvclJl
bmRlcmVyQXJlQWxsQWNjZWxlcmF0ZWQgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1l
bnRUaW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVtZW50QXJlQWxsQWNjZWxlcmF0ZWQg
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmg6
CisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OmVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29y
ZTo6aW52YWxpZGF0ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6
OmFuaW1hdGlvblRpbWVsaW5lRGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0Ojp1cGRhdGVFZmZlY3RTdGFja01lbWJlcnNoaXApOgorICAgICAgICAoV2ViQ29yZTo6
S2V5ZnJhbWVFZmZlY3Q6OnRhcmdldFN0eWxlYWJsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6c2V0VGFyZ2V0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1l
RWZmZWN0OjpzZXRQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZm
ZWN0OjpkaWRDaGFuZ2VUYXJnZXRTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVFZmZlY3Q6OmludmFsaWRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6
OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpLZXlm
cmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCk6IERlbGV0
ZWQuCisgICAgICAgICogYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0Lmg6CisgICAgICAgICogYW5p
bWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwOgorICAgICAgICAoV2ViQ29yZTo6S2V5ZnJh
bWVFZmZlY3RTdGFjazo6YWRkRWZmZWN0KToKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0
aW9uLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0RWZmZWN0SW50ZXJu
YWwpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpzZXRUaW1lbGluZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmVmZmVjdFRhcmdldERpZENoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnBlcnNpc3QpOgorICAgICAgICAoV2ViQ29yZTo6
V2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMpOgorICAgICAgICAqIGFuaW1hdGlvbi9XZWJBbmlt
YXRpb24uaDoKKyAgICAgICAgKiBhbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OmNvbXBhcmVEZWNsYXJhdGl2ZUFuaW1hdGlvbk93bmluZ0VsZW1l
bnRQb3NpdGlvbnNJbkRvY3VtZW50VHJlZU9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OmNvbXBh
cmVDU1NUcmFuc2l0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlQ1NTQW5pbWF0aW9u
cyk6CisgICAgICAgICogZG9tL0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6cmVtb3ZlZEZyb21BbmNlc3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojphbmlt
YXRpb25SYXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVB
bmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjprZXlmcmFtZUVm
ZmVjdFN0YWNrIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2spOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzS2V5ZnJhbWVF
ZmZlY3RzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVF
ZmZlY3RzKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFuaW1hdGlvbnMgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9w
ZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNSdW5uaW5nVHJhbnNp
dGlvbnNGb3JQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXNS
dW5uaW5nVHJhbnNpdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5z
dXJlQW5pbWF0aW9ucyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldEFuaW1hdGlvbnND
cmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlQ29tcGxl
dGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVu
c3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpFbGVtZW50OjpzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmdldEFuaW1hdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50Lmg6Cisg
ICAgICAgICogZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHA6CisgICAgICAgICogZG9tL0VsZW1lbnRS
YXJlRGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjp1c2VUeXBlcyBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6OmFuaW1hdGlvblJhcmVE
YXRhIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjplbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEpOiBEZWxldGVkLgorICAgICAgICAqIGRvbS9Qc2V1ZG9FbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmNsZWFySG9zdEVsZW1l
bnQpOgorICAgICAgICAoV2ViQ29yZTo6UHNldWRvRWxlbWVudDo6aXNUYXJnZXRlZEJ5S2V5ZnJh
bWVFZmZlY3RSZXF1aXJpbmdQc2V1ZG9FbGVtZW50KToKKyAgICAgICAgKiByZW5kZXJpbmcvUmVu
ZGVyQm94TW9kZWxPYmplY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyQm94TW9kZWxP
YmplY3Q6Omhhc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAq
IHJlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckVs
ZW1lbnQ6OnN0eWxlYWJsZSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGlu
Z0ZvckFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBv
c2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Om9wZXJhdG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBk
YXRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25S
ZW5kZXJlcnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6Cisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1l
bnRVcGRhdGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmg6CisgICAgICAg
ICogc3R5bGUvU3R5bGVhYmxlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxl
OjpTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpvcGVyYXRvcj09IGNv
bnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6b3BlcmF0b3IhPSBjb25zdCk6CisK
IDIwMjAtMDktMjQgIENhcmxvcyBHYXJjaWEgQ2FtcG9zICA8Y2dhcmNpYUBpZ2FsaWEuY29tPgog
CiAgICAgICAgIFtHVEtdW1dQRV0gTW92ZSBwcm94eSBzZXR0aW5ncyBmcm9tIFdlYktpdENvbnRl
eHQgdG8gV2ViS2l0V2Vic2l0ZURhdGFNYW5hZ2VyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggN2Y1ZjExMTIzNGU1MDFlNTM4NWIx
NDNlMWVmZTUxNGE4NTliMTgyNC4uMjI5YTEwNTgwNzc2YjdjZTQ0ZWIyZDliMWY5ZDMwNDI2Njcz
MDc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVj
dC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3Qu
cGJ4cHJvagpAQCAtMjEyNyw2ICsyMTI3LDcgQEAKIAkJNzEzMTcxMzQxRkJFNzhEQjAwRjc1OERF
IC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzE3MTMyMUZCRTc4QzUwMEY3NThERSAvKiBDU1NQcm9w
ZXJ0eUJsZW5kaW5nQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0
ZSwgKTsgfTsgfTsKIAkJNzEzMjQ0NTEyMDEwOURBNTAwQUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0
aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
NzEzMjQ0NEYyMDEwOUQ5QjAwQUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxMzQ0OTZFMTQ2
OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVhZGVycyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZH
TGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7
IH07IH07CisJCTcxMzkyMkJFMjUxOEFCNzcwMDVEQjNDMiAvKiBTdHlsZWFibGUuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzkyMkJDMjUxOEFCNzAw
MDVEQjNDMiAvKiBTdHlsZWFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQk3MTNGMUQ1QTIzREYxRDhEMDAzRjVFRkEgLyogR2V0QW5pbWF0aW9u
c09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9
IDcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyBz
ZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCTcxM0YxRDVEMjNE
RjI1ODIwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNPcHRpb25zLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTNGMUQ1QjIzREYyNTYwMDAzRjVFRkEg
LyogSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyB9OwogCQk3MTQ5NUREQjIwMkIwNkYxMDBB
REZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxNDk1RERBMjAyQjA2REUwMEFERkQzNCAvKiBKU0VmZmVjdFRpbWlu
Zy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CkBAIC05
NzU0LDYgKzk3NTUsNyBAQAogCQk3MTMyNDQ0RjIwMTA5RDlCMDBBRTdGQjIgLyogV2ViQW5pbWF0
aW9uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5n
ID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYkFuaW1h
dGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTM0NDk2QjE0
Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8qIFNWR0xlbmd0aENvbnRl
eHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHTGVuZ3RoQ29udGV4dC5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTM5MjJCQzI1MThBQjcwMDA1REIzQzIg
LyogU3R5bGVhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlYWJsZS5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQk3MTNFNzBBRjE3MzNFOEIzMDBBMjJEMDAgLyogcGx1Z0lucy5qcyAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNv
ZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCTcxM0YxRDU3MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25zT3B0aW9ucy5p
ZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0QW5pbWF0aW9uc09wdGlvbnMuaWRsOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1OTIzREYxRDdEMDAzRjVFRkEgLyogR2V0
QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0
QW5pbWF0aW9uc09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDAw
LDYgKzI4NDAyLDcgQEAKIAkJCQlBNzlCQUQ5RTE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1
cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3RjNGMDBDMkU2NTIgLyogUnVsZVNldC5jcHAgKi8s
CiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQuaCAqLywKKwkJCQk3MTM5
MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8sCiAJCQkJRTQ1QkE2QjIyMzc2
MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovLAogCQkJCUU0NUJBNkI1MjM3NjIy
OUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJCQkJRTRBQkFDMDcyMzZCMDE4MTAw
RkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0zMjc4MSw3ICszMjc4NCw5IEBACiAJ
CQkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExheW91dEluaXRpYWxDb250YWluaW5nQmxv
Y2suaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1MjNGMjY4RUMwMEVFQzJGMiAvKiBMYXlv
dXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBG
RkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVhZGVycyAqLywKKwkJCQlF
NDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRpb25Db3ZlcmFnZS5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1IC8qIExheW91dEludGVn
cmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQwM0I3QTMyNTFCMTFDMTAw
MTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJhdG9yLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3RTRFQkMgLyogTGF5b3V0TGluZUJyZWFrQm94
LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0
TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMyODI2LDcgKzMyODMxLDYgQEAKIAkJCQlC
MjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRBdHRyaWJ1dGVzLmggaW4g
SGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIgLyogTGluZUNsYW1wVmFs
dWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAwMDUxNDUzNCAvKiBMaW5l
TGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0MDNCN0EyMjUxQjExOTMwMDE5RTgw
MCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDg0
QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxD
b21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkw
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGluIEhlYWRlcnMgKi8sCkBA
IC0zMzY5NSw3ICszMzY5OSw2IEBACiAJCQkJMjI4QzI4NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNj
cmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdD
RTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDOEFF
MzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGluIEhlYWRlcnMgKi8sCi0J
CQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlv
bi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgwRjY0RDRERDAwQjg0N0YwIC8qIFNjcm9s
bEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUz
IC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjE3NzQ4MDEzNzhCNzcy
MDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJzICovLApAQCAtMzM5MzUs
NiArMzM5MzgsNyBAQAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRo
RGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQg
LyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJCQk0MTRCODIwNTFENkRG
MEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVycyAqLywKKwkJCQk3MTM5
MjJCRTI1MThBQjc3MDA1REIzQzIgLyogU3R5bGVhYmxlLmggaW4gSGVhZGVycyAqLywKIAkJCQlF
NDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFja2dyb3VuZERhdGEuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2NSAvKiBTdHlsZUJveERh
dGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRp
b25UaW1lbGluZS5jcHAKaW5kZXggNzRjMDY1NGE1N2M3YjAyMTRmODk2Y2YyNDZlM2U3NDQxZDU2
ZTY0Yi4uMzdiYzliNWEzNWRhNjVjZjdhNmQ5YWFhN2M4YmE1MTc1ZjI1OWUzOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuY3BwCkBAIC00Miw2ICs0
Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlN0eWxlUHJvcGVydHlT
aG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisjaW5jbHVkZSAiU3R5bGVh
YmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgiCiAjaW5jbHVkZSA8d3Rm
L3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAt
ODAsOSArODEsOSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVBbmltYXRpb24oV2Vi
QW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJUKCFhbmltYXRpb24udGltZWxpbmUoKSB8
fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsKICAgICBtX2FuaW1hdGlvbnMucmVtb3Zl
KCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVj
dCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkg
ewotICAgICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KGFuaW1hdGlvbiwg
KnRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2so
KS5yZW1vdmVFZmZlY3QoKmRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihhbmltYXRpb24uZWZmZWN0
KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldFN0eWxlYWJsZSgpKSB7CisgICAgICAgICAg
ICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZShhbmltYXRpb24sICpzdHlsZWFibGUp
OworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3Rh
Y2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkucmVtb3ZlRWZmZWN0KCpkb3duY2FzdDxLZXlmcmFtZUVm
ZmVjdD4oYW5pbWF0aW9uLmVmZmVjdCgpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05NSw5
ICs5Niw5IEBAIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3Vy
cmVudFRpbWUoKQogICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqdGlt
ZSk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVt
ZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmlt
YXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZShXZWJBbmltYXRpb24m
IGFuaW1hdGlvbiwgY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgZWxlbWVudC5l
bnN1cmVBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24pOworICAgIHN0eWxlYWJsZS5lbGVtZW50
LmVuc3VyZUFuaW1hdGlvbnMoc3R5bGVhYmxlLnBzZXVkb0lkKS5hZGQoJmFuaW1hdGlvbik7CiB9
CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFu
c2l0aW9uJiB0cmFuc2l0aW9uLCBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgY3NzVHJhbnNpdGlv
bnNCeVByb3BlcnR5KQpAQCAtMTEwLDM3ICsxMTEsMzkgQEAgc3RhdGljIGlubGluZSBib29sIHJl
bW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1RyYW5zaXRpb24mIHRyYW5zaXRpb24sIFByb3Bl
cnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0
aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50
JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZy
b21TdHlsZWFibGUoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IFN0eWxlYWJsZSYgc3R5
bGVhYmxlKQogewotICAgIGVsZW1lbnQuZW5zdXJlQW5pbWF0aW9ucygpLnJlbW92ZSgmYW5pbWF0
aW9uKTsKKyAgICBzdHlsZWFibGUuZWxlbWVudC5lbnN1cmVBbmltYXRpb25zKHN0eWxlYWJsZS5w
c2V1ZG9JZCkucmVtb3ZlKCZhbmltYXRpb24pOwogCiAgICAgLy8gTm93LCBpZiB3ZSdyZSBkZWFs
aW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiwgd2UgcmVtb3ZlIGl0IGZyb20gdGhlIG1fZWxlbWVu
dFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3BlcnR5SUQgbWFwLgogICAgIC8vIFdlIGRv
bid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgQ1NTIEFuaW1hdGlvbnMgYmVjYXVzZSB0aGVpciB0aW1p
bmcgY2FuIGJlIHNldCB2aWEgQ1NTIHRvIGVuZCwgd2hpY2ggd291bGQgY2F1c2UgdGhpcwogICAg
IC8vIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0IHRoZXkgc2hvdWxkIHJlbWFpbiBhc3NvY2lh
dGVkIHdpdGggdGhlaXIgb3duaW5nIGVsZW1lbnQgdW50aWwgdGhpcyBpcyBjaGFuZ2VkIHZpYSBh
IGNhbGwKICAgICAvLyB0byB0aGUgSlMgQVBJIG9yIGNoYW5naW5nIHRoZSB0YXJnZXQgZWxlbWVu
dCdzIGFuaW1hdGlvbi1uYW1lIHByb3BlcnR5LgogICAgIGlmIChpczxDU1NUcmFuc2l0aW9uPihh
bmltYXRpb24pKQotICAgICAgICByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zv
ck93bmluZ0VsZW1lbnQoYW5pbWF0aW9uLCBlbGVtZW50KTsKKyAgICAgICAgcmVtb3ZlRGVjbGFy
YXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KGFuaW1hdGlvbiwgc3R5bGVh
YmxlKTsKIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBF
bGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRp
dmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0
aW9uLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKIHsKICAgICBBU1NFUlQoaXM8RGVjbGFy
YXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbikpOwogCiAgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+
KGFuaW1hdGlvbikpIHsKICAgICAgICAgYXV0byYgdHJhbnNpdGlvbiA9IGRvd25jYXN0PENTU1Ry
YW5zaXRpb24+KGFuaW1hdGlvbik7Ci0gICAgICAgIGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZy
b21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlv
biwgZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSk7CisgICAg
ICAgIGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgc3R5bGVhYmxl
LmVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShzdHlsZWFibGUucHNl
dWRvSWQpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRp
b24sIHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0
eShzdHlsZWFibGUucHNldWRvSWQpKTsKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChFbGVtZW50JiBlbGVtZW50LCBD
U1NBbmltYXRpb24mIGNzc0FuaW1hdGlvbikKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92
ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwg
Q1NTQW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCiB7Ci0gICAgZWxlbWVudC5hbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwKCkucmVtb3ZlKCZjc3NBbmltYXRpb24pOworICAgIGF1dG8mIGVsZW1lbnQg
PSBzdHlsZWFibGUuZWxlbWVudDsKKyAgICBhdXRvIHBzZXVkb0lkID0gc3R5bGVhYmxlLnBzZXVk
b0lkOworICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChwc2V1ZG9JZCkucmVt
b3ZlKCZjc3NBbmltYXRpb24pOwogCi0gICAgaWYgKCFlbGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0
cygpKQorICAgIGlmICghZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5l
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFj
ayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhwc2V1ZG9JZCk7CiAgICAgYXV0
byogY3NzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZmZWN0U3RhY2suY3NzQW5pbWF0aW9uTGlz
dCgpOwogICAgIGlmICghY3NzQW5pbWF0aW9uTGlzdCB8fCBjc3NBbmltYXRpb25MaXN0LT5pc0Vt
cHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1NiwzMyArMTU5LDMzIEBAIHZvaWQgQW5pbWF0
aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChFbGVtZW50JiBl
bGVtZW50LCBDU1NBCiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjplbGVtZW50
V2FzUmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6ZWxl
bWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgY2FuY2Vs
RGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBXZWJBbmltYXRpb246OlNp
bGVudGx5OjpZZXMpOworICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJs
ZShzdHlsZWFibGUsIFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Olllcyk7CiB9CiAKLXZvaWQgQW5p
bWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYgZWxl
bWVudCkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJlckZvclN0eWxl
YWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0
aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpKSB7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMg
PSBzdHlsZWFibGUuZWxlbWVudC5hbmltYXRpb25zKHN0eWxlYWJsZS5wc2V1ZG9JZCkpIHsKICAg
ICAgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24gOiAqYW5pbWF0aW9ucykKICAgICAgICAg
ICAgIGFuaW1hdGlvbi0+d2lsbENoYW5nZVJlbmRlcmVyKCk7CiAgICAgfQogfQogCi12b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVs
ZW1lbnQmIGVsZW1lbnQsIFdlYkFuaW1hdGlvbjo6U2lsZW50bHkgc2lsZW50bHkpCit2b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUo
Y29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIFdlYkFuaW1hdGlvbjo6U2lsZW50bHkgc2lsZW50
bHkpCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnMoKSkg
eworICAgIGlmIChhdXRvKiBhbmltYXRpb25zID0gc3R5bGVhYmxlLmVsZW1lbnQuYW5pbWF0aW9u
cyhzdHlsZWFibGUucHNldWRvSWQpKSB7CiAgICAgICAgIGZvciAoYXV0byYgYW5pbWF0aW9uIDog
KmFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4o
YW5pbWF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxDU1NBbmltYXRpb24+KGFuaW1h
dGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1h
cmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRpb24+KCphbmltYXRpb24pKTsKKyAgICAg
ICAgICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3VwKHN0eWxlYWJs
ZSwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0aW9uKSk7CiAgICAgICAgICAgICAgICAg
YW5pbWF0aW9uLT5jYW5jZWwoc2lsZW50bHkpOwogICAgICAgICAgICAgfQogICAgICAgICB9CiAg
ICAgfQogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDb25zaWRlckFuaW1hdGlvbihFbGVtZW50JiBl
bGVtZW50T3JQc2V1ZG9FbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbikKK3N0YXRp
YyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEFu
aW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmICghYW5pbWF0aW9uLmlzVmFsaWRBbmltYXRp
b24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzLDIxICsxOTYsMjEgQEAgc3RhdGlj
IGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxlbWVudCYgZWxlbWVudE9yUHNldWRvRWxl
bWVudCwgY29uc3QgQW5pbWEKICAgICBpZiAobmFtZSA9PSBhbmltYXRpb25OYW1lTm9uZSB8fCBu
YW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byYgZWxlbWVu
dCA9IGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0VsZW1lbnQpID8gKmRvd25jYXN0
PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0VsZW1lbnQpLmhvc3RFbGVtZW50KCkgOiBl
bGVtZW50T3JQc2V1ZG9FbGVtZW50OwotCiAgICAgaWYgKGF1dG8qIHN0eWxlU2NvcGUgPSBTdHls
ZTo6U2NvcGU6OmZvck9yZGluYWwoZWxlbWVudCwgYW5pbWF0aW9uLm5hbWVTdHlsZVNjb3BlT3Jk
aW5hbCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlU2NvcGUtPnJlc29sdmVyKCkuaXNBbmltYXRp
b25OYW1lVmFsaWQobmFtZSk7CiAKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgQW5pbWF0
aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1l
bnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JT
dHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNvbnN0IFJlbmRlclN0eWxlKiBj
dXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKIHsKLSAgICBhdXRvJiBr
ZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
CisgICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5lbGVtZW50OworICAgIGF1dG8gcHNldWRv
SWQgPSBzdHlsZWFibGUucHNldWRvSWQ7CisgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9
IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhwc2V1ZG9JZCk7CiAKICAgICAvLyBJ
biBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdl
IG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBv
bmVzLgogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5kaXNwbGF5KCkgIT0g
RGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpO
b25lKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRp
b25zQ3JlYXRlZEJ5TWFya3VwKCkpCisgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDog
ZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKHBzZXVkb0lkKSkKICAgICAgICAgICAg
IGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIGtleWZyYW1lRWZmZWN0
U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpAQCAt
MjE5LDcgKzIyMiw3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlv
bnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgIHJldHVybjsK
IAogICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKLSAgICBhdXRvJiBw
cmV2aW91c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsK
KyAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAocHNldWRvSWQpOwogCiAgICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1h
bmltYXRpb25zLTEvI2FuaW1hdGlvbnMKICAgICAvLyBUaGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUg
bmFtZSBtYXkgYmUgcmVwZWF0ZWQgd2l0aGluIGFuIGFuaW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRv
IHRoZSBhbmltYXRpb24tbmFtZSB1cGRhdGUgZXhpc3RpbmcKQEAgLTI1MSw3ICsyNTQsNyBAQCB2
b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAo
IWZvdW5kTWF0Y2hpbmdBbmltYXRpb24pCi0gICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5h
ZGQoQ1NTQW5pbWF0aW9uOjpjcmVhdGUoZWxlbWVudCwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVu
dFN0eWxlLCBuZXdTdHlsZSkpOworICAgICAgICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENT
U0FuaW1hdGlvbjo6Y3JlYXRlKHN0eWxlYWJsZSwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0
eWxlLCBuZXdTdHlsZSkpOwogICAgICAgICB9CiAgICAgfQogCkBAIC0yNjMsMTQgKzI2NiwxNCBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChF
bGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAgICB9CiAgICAgfQogCi0gICAgZWxlbWVu
dC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOwor
ICAgIGVsZW1lbnQuc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChwc2V1ZG9JZCwgV1RGTW92
ZShuZXdBbmltYXRpb25zKSk7CiAKICAgICBrZXlmcmFtZUVmZmVjdFN0YWNrLnNldENTU0FuaW1h
dGlvbkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOwogfQogCi1zdGF0aWMgS2V5ZnJhbWVFZmZl
Y3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQs
IENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMgS2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1l
RWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBD
U1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogewotICAgIGlmIChhdXRvKiBrZXlmcmFtZUVmZmVjdFN0
YWNrID0gZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpIHsKKyAgICBpZiAoYXV0byoga2V5
ZnJhbWVFZmZlY3RTdGFjayA9IHN0eWxlYWJsZS5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2so
c3R5bGVhYmxlLnBzZXVkb0lkKSkgewogICAgICAgICBhdXRvIGVmZmVjdHMgPSBrZXlmcmFtZUVm
ZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCk7CiAgICAgICAgIGZvciAoY29uc3QgYXV0byYgZWZm
ZWN0IDogbWFrZVJldmVyc2VkUmFuZ2UoZWZmZWN0cykpIHsKICAgICAgICAgICAgIGlmIChlZmZl
Y3QtPmFuaW1hdGVzUHJvcGVydHkocHJvcGVydHkpKQpAQCAtMzM5LDExICszNDIsMTkgQEAgc3Rh
dGljIHZvaWQgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0aWVzSW5TdHlsZShjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUsIEhhc2hTZXQKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
bnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSBnZW5l
cmF0aW9uVGltZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25z
Rm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENTU1By
b3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0
IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGlt
ZSkKIHsKLSAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVu
dEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5KTsKKyAgICBhdXRvJiBlbGVtZW50ID0gc3R5
bGVhYmxlLmVsZW1lbnQ7CisgICAgYXV0byBwc2V1ZG9JZCA9IHN0eWxlYWJsZS5wc2V1ZG9JZDsK
KyAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFBy
b3BlcnR5KHN0eWxlYWJsZSwgcHJvcGVydHkpOwogICAgIGF1dG8qIGFuaW1hdGlvbiA9IGtleWZy
YW1lRWZmZWN0ID8ga2V5ZnJhbWVFZmZlY3QtPmFuaW1hdGlvbigpIDogbnVsbHB0cjsKLSAgICBi
b29sIGlzRGVjbGFyYXRpdmUgPSBhbmltYXRpb24gJiYgaXM8RGVjbGFyYXRpdmVBbmltYXRpb24+
KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+KCphbmltYXRpb24p
Lm93bmluZ0VsZW1lbnQoKSA9PSAmZWxlbWVudDsKKworICAgIGJvb2wgaXNEZWNsYXJhdGl2ZSA9
IGZhbHNlOworICAgIGlmIChpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkgewor
ICAgICAgICBpZiAoYXV0byBvd25pbmdFbGVtZW50ID0gZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmlt
YXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSkKKyAgICAgICAgICAgIGlzRGVjbGFy
YXRpdmUgPSAqb3duaW5nRWxlbWVudCA9PSBzdHlsZWFibGU7CisgICAgfQorCiAgICAgaWYgKGFu
aW1hdGlvbiAmJiAhaXNEZWNsYXJhdGl2ZSkKICAgICAgICAgcmV0dXJuOwogCkBAIC0zNTgsOCAr
MzY5LDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JF
bGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKIAogICAgIC8vIEEgQ1NTIFRyYW5zaXRp
b24gbWlnaHQgaGF2ZSBjb21wbGV0ZWQgc2luY2UgdGhlIGxhc3QgdGltZSBhbmltYXRpb25zIHdl
cmUgdXBkYXRlZCBzbyB3ZSBtdXN0CiAgICAgLy8gdXBkYXRlIHRoZSBydW5uaW5nIGFuZCBjb21w
bGV0ZWQgdHJhbnNpdGlvbnMgbWVtYmVyc2hpcCBpbiB0aGF0IGNhc2UuCi0gICAgaWYgKGlzPENT
U1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVs
ZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmIGFuaW1h
dGlvbi0+cGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9uOjpQbGF5U3RhdGU6OkZpbmlzaGVkKSB7
Ci0gICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCku
c2V0KHByb3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHko
KS50YWtlKHByb3BlcnR5KSk7CisgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikg
JiYgbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRp
b25zRm9yUHJvcGVydHkocHNldWRvSWQsIHByb3BlcnR5KSAmJiBhbmltYXRpb24tPnBsYXlTdGF0
ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpGaW5pc2hlZCkgeworICAgICAgICBlbGVt
ZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkuc2V0KHBy
b3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRv
SWQpLnRha2UocHJvcGVydHkpKTsKICAgICAgICAgYW5pbWF0aW9uID0gbnVsbHB0cjsKICAgICB9
CiAKQEAgLTM3Nyw3ICszODgsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICB9
CiAKICAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB1c2UgdGhlIHJlY29yZGVkIFJlbmRlclN0eWxl
IGZvciB0aGlzIGVsZW1lbnQgZHVyaW5nIGEgcHJldmlvdXMgY2FsbCB0byBTdHlsZTo6VHJlZVJl
c29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoKS4KLSAgICAgICAgaWYgKGF1dG8q
IGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVtZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUoKSkKKyAgICAgICAgaWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBl
bGVtZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUocHNldWRvSWQpKQogICAgICAgICAgICAg
cmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk7CiAK
ICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjb21wdXRlZCBzdHlsZXMgZnJvbSBhbmltYXRpb25z
IGZvciB0aGlzIGVsZW1lbnQsIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlIGlzIHRoZSBwcmV2aW91
c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1lbnQuCkBAIC0zOTksMTAgKzQxMCwxMCBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRB
bmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6OmNs
b25lKG5ld1N0eWxlKTsKICAgICB9KCk7CiAKLSAgICBpZiAoIWVsZW1lbnQuaGFzUnVubmluZ1Ry
YW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCisgICAgaWYgKCFlbGVtZW50Lmhhc1J1bm5p
bmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkKICAgICAgICAgJiYg
IUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVzRXF1YWwocHJvcGVydHksICZiZWZvcmVD
aGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpCiAgICAgICAgICYmIENTU1Byb3BlcnR5QW5p
bWF0aW9uOjpjYW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVkKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdl
U3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQotICAgICAgICAmJiAhcHJvcGVydHlJblN0eWxlTWF0
Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBl
bGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKQorICAgICAgICAm
JiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKHByb3BlcnR5
LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQ
cm9wZXJ0eShwc2V1ZG9JZCkpCiAgICAgICAgICYmIG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiAm
JiB0cmFuc2l0aW9uQ29tYmluZWREdXJhdGlvbihtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pID4g
MCkgewogICAgICAgICAvLyAxLiBJZiBhbGwgb2YgdGhlIGZvbGxvd2luZyBhcmUgdHJ1ZToKICAg
ICAgICAgLy8gICAtIHRoZSBlbGVtZW50IGRvZXMgbm90IGhhdmUgYSBydW5uaW5nIHRyYW5zaXRp
b24gZm9yIHRoZSBwcm9wZXJ0eSwKQEAgLTQxMiw3ICs0MjMsNyBAQCB2b2lkIEFuaW1hdGlvblRp
bWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50
JiBlbGVtZQogICAgICAgICAvLyAgIC0gdGhlIGNvbWJpbmVkIGR1cmF0aW9uIGlzIGdyZWF0ZXIg
dGhhbiAwcywKIAogICAgICAgICAvLyB0aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IHJlbW92ZSB0
aGUgY29tcGxldGVkIHRyYW5zaXRpb24gKGlmIHByZXNlbnQpIGZyb20gdGhlIHNldCBvZiBjb21w
bGV0ZWQgdHJhbnNpdGlvbnMKLSAgICAgICAgZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkoKS5yZW1vdmUocHJvcGVydHkpOworICAgICAgICBlbGVtZW50LmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkucmVtb3ZlKHByb3BlcnR5
KTsKIAogICAgICAgICAvLyBhbmQgc3RhcnQgYSB0cmFuc2l0aW9uIHdob3NlOgogICAgICAgICAv
LyAgIC0gc3RhcnQgdGltZSBpcyB0aGUgdGltZSBvZiB0aGUgc3R5bGUgY2hhbmdlIGV2ZW50IHBs
dXMgdGhlIG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXksCkBAIC00MjUsMjUgKzQzNiwyNSBAQCB2
b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQ
cm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25kcyht
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICBhdXRvJiByZXZl
cnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUgPSBiZWZvcmVDaGFuZ2VTdHlsZTsKICAgICAgICAgYXV0
byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsKLSAgICAgICAgZWxlbWVudC5lbnN1cmVS
dW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9u
OjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNr
aW5nQW5pbWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5
LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVu
aW5nRmFjdG9yKSk7Ci0gICAgfSBlbHNlIGlmIChlbGVtZW50Lmhhc0NvbXBsZXRlZFRyYW5zaXRp
b25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVG
b3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5z
dXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKSB7CisgICAgICAgIGVsZW1lbnQu
ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5
LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRp
bWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZiZWZvcmVDaGFuZ2VTdHlsZSwgYWZ0ZXJD
aGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUs
IHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFz
Q29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwc2V1ZG9JZCwgcHJvcGVydHkpICYmICFw
cm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFm
dGVyQ2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KHBzZXVkb0lkKSkpIHsKICAgICAgICAgLy8gMi4gT3RoZXJ3aXNlLCBpZiB0aGUgZWxlbWVu
dCBoYXMgYSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3IgdGhlIHByb3BlcnR5IGFuZCB0aGUgZW5k
IHZhbHVlIG9mIHRoZSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBpcyBkaWZmZXJlbnQgZnJvbQogICAg
ICAgICAvLyAgICB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlIGZvciB0aGUgcHJvcGVydHksIHRoZW4g
aW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRoZSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmcm9t
IHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25zLgotICAgICAgICBlbGVtZW50LmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CisgICAg
ICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lk
KS5yZW1vdmUocHJvcGVydHkpOwogICAgIH0KIAotICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRp
b24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KTsK
LSAgICBpZiAoKGhhc1J1bm5pbmdUcmFuc2l0aW9uIHx8IGVsZW1lbnQuaGFzQ29tcGxldGVkVHJh
bnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSkpICYmICFtYXRjaGluZ0JhY2tpbmdBbmltYXRp
b24pIHsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5oYXNSdW5uaW5n
VHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwc2V1ZG9JZCwgcHJvcGVydHkpOworICAgIGlmICgoaGFz
UnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5oYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclBy
b3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkpICYmICFtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24p
IHsKICAgICAgICAgLy8gMy4gSWYgdGhlIGVsZW1lbnQgaGFzIGEgcnVubmluZyB0cmFuc2l0aW9u
IG9yIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUgcHJvcGVydHksIGFuZCB0aGVyZSBpcyBu
b3QgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXByb3BlcnR5CiAgICAgICAgIC8vICAgIHZhbHVlLCB0
aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0aGUgcnVubmluZyB0cmFuc2l0aW9uIG9y
IHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24gZnJvbSB0aGUgc2V0IG9mIGNvbXBsZXRl
ZCB0cmFuc2l0aW9ucy4KICAgICAgICAgaWYgKGhhc1J1bm5pbmdUcmFuc2l0aW9uKQotICAgICAg
ICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkudGFrZShw
cm9wZXJ0eSktPmNhbmNlbCgpOworICAgICAgICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS50YWtlKHByb3BlcnR5KS0+Y2FuY2VsKCk7CiAg
ICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlv
bnNCeVByb3BlcnR5KCkucmVtb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgICAgIGVsZW1lbnQuZW5z
dXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS5yZW1vdmUocHJvcGVy
dHkpOwogICAgIH0KIAotICAgIGlmIChtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gJiYgZWxlbWVu
dC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSkgJiYgIXByb3BlcnR5
SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFu
Z2VTdHlsZSwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKSB7
Ci0gICAgICAgIGF1dG8gcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uID0gZWxlbWVudC5lbnN1
cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkudGFrZShwcm9wZXJ0eSk7CisgICAgaWYg
KG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNo
ZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxl
bWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKSkpIHsKKyAg
ICAgICAgYXV0byBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24gPSBlbGVtZW50LmVuc3VyZVJ1
bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRvSWQpLnRha2UocHJvcGVydHkpOwogICAg
ICAgICBhdXRvJiBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUgPSBwcmV2
aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmN1cnJlbnRTdHlsZSgpOwogICAgICAgICAvLyA0LiBJ
ZiB0aGUgZWxlbWVudCBoYXMgYSBydW5uaW5nIHRyYW5zaXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwg
dGhlcmUgaXMgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXByb3BlcnR5IHZhbHVlLCBhbmQgdGhlIGVu
ZCB2YWx1ZSBvZiB0aGUgcnVubmluZwogICAgICAgICAvLyAgICB0cmFuc2l0aW9uIGlzIG5vdCBl
cXVhbCB0byB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5
bGUsIHRoZW46CkBAIC00ODEsNyArNDkyLDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAg
ICAgICAgICAgIGF1dG8gZGVsYXkgPSBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkg
PCAwID8gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpICogcmV2ZXJz
aW5nU2hvcnRlbmluZ0ZhY3RvciA6IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5k
ZWxheSgpKTsKICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yOwog
Ci0gICAgICAgICAgICBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHko
KS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNyZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwg
Z2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVu
bmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJv
cGVydHkocHNldWRvSWQpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKHN0eWxl
YWJsZSwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9u
LCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0eWxlLCBhZnRlckNoYW5nZVN0
eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJz
aW5nU2hvcnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgLy8g
NC4gT3RoZXJ3aXNlLCBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJh
bnNpdGlvbgogICAgICAgICAgICAgcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uLT5jYW5jZWxG
cm9tU3R5bGUoKTsKQEAgLTQ5NywxNyArNTA4LDE3IEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1l
CiAgICAgICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRT
dGFydFN0eWxlID0gY3VycmVudFN0eWxlOwogICAgICAgICAgICAgYXV0byByZXZlcnNpbmdTaG9y
dGVuaW5nRmFjdG9yID0gMTsKLSAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVs
ZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlv
biwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VT
dHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVy
c2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0
aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGlu
Z0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5
bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRT
dGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0KICAgICB9
CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxl
bWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0
eWxlKQogewogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVtZW50IGlzIG5ld2x5IGdldHRpbmcgYSAi
ZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwgYWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBh
bmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChjdXJyZW50U3R5bGUuaGFzVHJhbnNpdGlv
bnMoKSAmJiBjdXJyZW50U3R5bGUuZGlzcGxheSgpICE9IERpc3BsYXlUeXBlOjpOb25lICYmIG5l
d1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6Tm9uZSkgewotICAgICAgICBpZiAoZWxl
bWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnMoKSkgewotICAgICAgICAgICAgYXV0byBydW5uaW5n
VHJhbnNpdGlvbnMgPSBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHko
KTsKKyAgICAgICAgaWYgKHN0eWxlYWJsZS5lbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucyhz
dHlsZWFibGUucHNldWRvSWQpKSB7CisgICAgICAgICAgICBhdXRvIHJ1bm5pbmdUcmFuc2l0aW9u
cyA9IHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHko
c3R5bGVhYmxlLnBzZXVkb0lkKTsKICAgICAgICAgICAgIGZvciAoY29uc3QgYXV0byYgY3NzVHJh
bnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDogcnVubmluZ1RyYW5zaXRpb25zKQogICAg
ICAgICAgICAgICAgIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbS52YWx1ZS0+
Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIH0KQEAgLTUzMiwxMyArNTQzLDEzIEBAIHZvaWQg
QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICBhdXRvIHByb3BlcnR5ID0gQ1NTUHJvcGVy
dHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChwcm9wZXJ0eUluZGV4LCBpc1Nob3J0aGFu
ZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQgJiYgKmlzU2hvcnRoYW5kKQogICAgICAg
ICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JF
bGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5
bGUsIGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
U3R5bGVhYmxlQW5kUHJvcGVydHkoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgY3VycmVudFN0eWxlLCBu
ZXdTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKICAgICBmb3IgKGF1dG8gcHJvcGVydHkgOiB0cmFuc2l0aW9uUHJvcGVydGllcykKLSAg
ICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwg
cHJvcGVydHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKKyAgICAg
ICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eShzdHlsZWFibGUs
IHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0aW9uVGltZSk7CiB9CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmgKaW5kZXggOWQ0MmY3ODlmYjg2MjJkOWNhMDAzZDk1YjNhYTZlOTZmOGEx
MGViNi4uYmUyZjZjMTViNTA3OTc4MGY5NmVkYjhlYjM4MWQxMmYyMmUzYTM4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKQEAgLTI5LDYgKzI5LDcg
QEAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1ZGUgIkNvbXB1dGVkRWZmZWN0VGltaW5n
LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNp
bmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1
ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw3ICs0NSw2IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IGNsYXNzIENTU0FuaW1hdGlvbjsKIGNsYXNzIENTU1RyYW5zaXRpb247CiBjbGFzcyBEZWNsYXJh
dGl2ZUFuaW1hdGlvbjsKLWNsYXNzIEVsZW1lbnQ7CiAKIGNsYXNzIEFuaW1hdGlvblRpbWVsaW5l
IDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVGltZWxpbmU+LCBwdWJsaWMgQ2FuTWFrZVdl
YWtQdHI8QW5pbWF0aW9uVGltZWxpbmU+IHsKIHB1YmxpYzoKQEAgLTYxLDE4ICs2MSwxOCBAQCBw
dWJsaWM6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBiaW5kaW5nc0N1cnJlbnRUaW1lKCk7CiAgICAg
dmlydHVhbCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50VGltZSgpIHsgcmV0dXJuIG1fY3VycmVu
dFRpbWU7IH0KIAotICAgIHZvaWQgZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYpOworICAgIHZv
aWQgZWxlbWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVhYmxlJik7CiAKLSAgICB2b2lkIHdpbGxD
aGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYpOwotICAgIHZvaWQgY2FuY2VsRGVjbGFy
YXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiwgV2ViQW5pbWF0aW9uOjpTaWxlbnRs
eSk7CisgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXJGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVh
YmxlJik7CisgICAgdm9pZCBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUo
Y29uc3QgU3R5bGVhYmxlJiwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSk7CiAKLSAgICB2b2lkIGFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1hdGlvbiYsIEVsZW1lbnQmKTsKLSAgICB2
b2lkIGFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudChXZWJBbmltYXRpb24mLCBFbGVtZW50
Jik7CisgICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRvU3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYs
IGNvbnN0IFN0eWxlYWJsZSYpOworICAgIHZvaWQgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHls
ZWFibGUoV2ViQW5pbWF0aW9uJiwgY29uc3QgU3R5bGVhYmxlJik7CiAKLSAgICB2b2lkIHJlbW92
ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5nRWxlbWVudChXZWJBbmltYXRp
b24mLCBFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21M
aXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9uJiwgY29uc3QgU3R5bGVhYmxlJik7CiAK
LSAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmLCBjb25zdCBS
ZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VT
dHlsZSk7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYs
IGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSk7CisgICAgdm9pZCB1cGRhdGVDU1NBbmltYXRpb25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0
eWxlYWJsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKKyAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
U3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAKIHByb3RlY3RlZDoKICAgICBleHBs
aWNpdCBBbmltYXRpb25UaW1lbGluZSgpOwpAQCAtODIsOCArODIsOCBAQCBwcm90ZWN0ZWQ6CiAK
IHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQb3NpdGlvbihXZWJBbmltYXRpb24mKTsK
LSAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KEVsZW1l
bnQmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25z
dCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSk7Ci0g
ICAgdm9pZCByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxlbWVudCYsIENTU0Fu
aW1hdGlvbiYpOworICAgIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQ
cm9wZXJ0eShjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJTdHls
ZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29u
c3QgTW9ub3RvbmljVGltZSk7CisgICAgdm9pZCByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlN
YXJrdXAoY29uc3QgU3R5bGVhYmxlJiwgQ1NTQW5pbWF0aW9uJik7CiAKICAgICBNYXJrYWJsZTxT
ZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4gbV9jdXJyZW50VGltZTsKIH07CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCmluZGV4IDcxOWQ4ZDM5NjJkZmIw
MTM2MTkzMWZiNGYzNTE1YjRlNDU1MTM0MmYuLmM5MGRkMWI5OTYyNTBiNGVhYzhkOTJkNjI3MzNi
YWY1Y2E3OGFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmlt
YXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3Bw
CkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBbmltYXRpb24uaCIKICNpbmNsdWRlICJB
bmltYXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJSZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUg
PHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0zNyw3ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU0FuaW1hdGlvbik7CiAKLVJl
ZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1l
bnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCitSZWY8Q1NTQW5pbWF0aW9u
PiBDU1NBbmltYXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUmIG93bmluZ0VsZW1lbnQsIGNv
bnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0
eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgYXV0byByZXN1bHQgPSBh
ZG9wdFJlZigqbmV3IENTU0FuaW1hdGlvbihvd25pbmdFbGVtZW50LCBiYWNraW5nQW5pbWF0aW9u
KSk7CiAgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0eWxlLCBuZXdTdHlsZSk7CkBAIC00Nyw3
ICs0Niw3IEBAIFJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQm
IG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYKICAgICByZXR1cm4gcmVzdWx0OwogfQog
Ci1DU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50LCBjb25zdCBBbmlt
YXRpb24mIGJhY2tpbmdBbmltYXRpb24pCitDU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihjb25z
dCBTdHlsZWFibGUmIGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikK
ICAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1lbnQsIGJhY2tpbmdBbmltYXRpb24pCiAg
ICAgLCBtX2FuaW1hdGlvbk5hbWUoYmFja2luZ0FuaW1hdGlvbi5uYW1lKCkpCiB7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5kZXggZTNiYzlhNjk4ODg4ZmVmNmYzYTM2
ZmExZDBlZDBmNWU1YWQ2OTIzMy4uMmMwNWFiNTVhZGVkMWM2MWE3NjdmZDg5NDM4ODliMzk4Njcx
NzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uaApAQCAtMjYsMTkg
KzI2LDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9u
LmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL09wdGlvblNldC5oPgog
I2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBBbmlt
YXRpb247Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIGNsYXNzIENTU0Fu
aW1hdGlvbiBmaW5hbCA6IHB1YmxpYyBEZWNsYXJhdGl2ZUFuaW1hdGlvbiB7CiAgICAgV1RGX01B
S0VfSVNPX0FMTE9DQVRFRChDU1NBbmltYXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8
Q1NTQW5pbWF0aW9uPiBjcmVhdGUoRWxlbWVudCYsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKKyAgICBz
dGF0aWMgUmVmPENTU0FuaW1hdGlvbj4gY3JlYXRlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IEFu
aW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IG5ld1N0eWxlKTsKICAgICB+Q1NTQW5pbWF0aW9uKCkgPSBkZWZhdWx0OwogCiAgICAgYm9vbCBp
c0NTU0FuaW1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTQ4LDcg
KzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZWZmZWN0S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmlu
ZGluZ3MoKTsKIAogcHJpdmF0ZToKLSAgICBDU1NBbmltYXRpb24oRWxlbWVudCYsIGNvbnN0IEFu
aW1hdGlvbiYpOworICAgIENTU0FuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmLCBjb25zdCBBbmlt
YXRpb24mKTsKIAogICAgIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigp
IGZpbmFsOwogICAgIFJlZjxBbmltYXRpb25FdmVudEJhc2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0
b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBzZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBz
ZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGluZVRpbWUpIGZpbmFsOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwCmluZGV4IDJkMDI2ZjVmM2YyODVhNTc4
NjA0NWI2OGQwMDRiZjAwMWQyMDI5NDQuLjllNjA2MDkxYzE4ODllYjc4YWFlMTg5NmZkMGMxNTQ1
NDNmNjllZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0
aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAK
QEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgIkRv
Y3VtZW50VGltZWxpbmUuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVj
dG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3QuaCIKICNpbmNs
dWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKQEAgLTM4LDcgKzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lNUEwoQ1NTVHJhbnNpdGlvbik7CiAKLVJl
ZjxDU1NUcmFuc2l0aW9uPiBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoRWxlbWVudCYgb3duaW5nRWxl
bWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGlt
ZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSog
b2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vj
b25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRT
dHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCitSZWY8Q1NTVHJhbnNpdGlv
bj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGNvbnN0IFN0eWxlYWJsZSYgb3duaW5nRWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29u
c3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBk
dXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwg
ZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCiB7CiAgICAgQVNTRVJUKG9sZFN0eWxl
KTsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpuZXcgQ1NTVHJhbnNpdGlvbihvd25pbmdF
bGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsIGJhY2tpbmdBbmltYXRpb24sICpvbGRT
dHlsZSwgbmV3U3R5bGUsIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hv
cnRlbmluZ0ZhY3RvcikpOwpAQCAtNTAsMTEgKzQ5LDExIEBAIFJlZjxDU1NUcmFuc2l0aW9uPiBD
U1NUcmFuc2l0aW9uOjpjcmVhdGUoRWxlbWVudCYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJ
RCBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NTVHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlv
bihFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBNb25vdG9uaWNUaW1l
IGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNvbnN0
IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCBkb3VibGUgcmV2
ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKLSAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1l
bnQsIGJhY2tpbmdBbmltYXRpb24pCitDU1NUcmFuc2l0aW9uOjpDU1NUcmFuc2l0aW9uKGNvbnN0
IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5LCBNb25vdG9uaWNU
aW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNv
bnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCBkb3VibGUg
cmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKKyAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKHN0
eWxlYWJsZSwgYmFja2luZ0FuaW1hdGlvbikKICAgICAsIG1fcHJvcGVydHkocHJvcGVydHkpCiAg
ICAgLCBtX2dlbmVyYXRpb25UaW1lKGdlbmVyYXRpb25UaW1lKQotICAgICwgbV90aW1lbGluZVRp
bWVBdENyZWF0aW9uKGVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkp
CisgICAgLCBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb24oc3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1l
bnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkpCiAgICAgLCBtX3RhcmdldFN0eWxlKFJlbmRl
clN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSkpCiAgICAgLCBtX2N1cnJlbnRTdHlsZShSZW5k
ZXJTdHlsZTo6Y2xvbmVQdHIob2xkU3R5bGUpKQogICAgICwgbV9yZXZlcnNpbmdBZGp1c3RlZFN0
YXJ0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHls
ZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5o
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAppbmRleCBkMjc1YmJi
MDQxNWQ3Nzc4YzNkOWJhMDE2YjQwNDliNDdhYzAxMWU1Li41OGQ2ZmQ3NDFmMWNjNDVkOTBmZDVh
ZGIyMTNmODc1NTZmZGMyNjA3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTVHJhbnNpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0
aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIK
ICNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5o
IgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2luY2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1l
Lmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBAIC0zNiwxMyArMzcsMTIgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9uOwotY2xhc3MgRWxlbWVudDsKIGNsYXNz
IFJlbmRlclN0eWxlOwogCiBjbGFzcyBDU1NUcmFuc2l0aW9uIGZpbmFsIDogcHVibGljIERlY2xh
cmF0aXZlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9JU09fQUxMT0NBVEVEKENTU1RyYW5zaXRp
b24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTVHJhbnNpdGlvbj4gY3JlYXRlKEVsZW1l
bnQmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBB
bmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
JiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVy
U3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKKyAgICBzdGF0aWMg
UmVmPENTU1RyYW5zaXRpb24+IGNyZWF0ZShjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9wZXJ0eUlE
LCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBS
ZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgU2Vjb25k
cyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0Fk
anVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKICAgICB+Q1NTVHJhbnNpdGlvbigpID0gZGVmYXVs
dDsKIAogICAgIGJvb2wgaXNDU1NUcmFuc2l0aW9uKCkgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4g
dHJ1ZTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6CiAgICAgZG91YmxlIHJldmVyc2luZ1No
b3J0ZW5pbmdGYWN0b3IoKSBjb25zdCB7IHJldHVybiBtX3JldmVyc2luZ1Nob3J0ZW5pbmdGYWN0
b3I7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NUcmFuc2l0aW9uKEVsZW1lbnQmLCBDU1NQcm9wZXJ0
eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBjb25z
dCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsK
KyAgICBDU1NUcmFuc2l0aW9uKGNvbnN0IFN0eWxlYWJsZSYsIENTU1Byb3BlcnR5SUQsIE1vbm90
b25pY1RpbWUgZ2VuZXJhdGlvblRpbWUsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0
eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5k
ZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCBkb3VibGUpOwogICAgIHZvaWQg
c2V0VGltaW5nUHJvcGVydGllcyhTZWNvbmRzIGRlbGF5LCBTZWNvbmRzIGR1cmF0aW9uKTsKICAg
ICBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBl
dmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0
aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBmaW5hbDsKICAgICB2b2lkIHJlc29sdmUoUmVu
ZGVyU3R5bGUmLCBPcHRpb25hbDxTZWNvbmRzPikgZmluYWw7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwIGIvU291cmNlL1dlYkNv
cmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAppbmRleCBkNTViZDEwNTkxMzM5
MGU5OGYwOTMxYjA4YTQ1ZmFhNjM3ZWYxZDQzLi5lNGY3ODI5OGU1ZmYwOTEzNjMxYzIzZDJmNTFk
MDlmYjRkNTAxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFy
YXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJh
dGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQzLDkgKzQzLDEwIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
IAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERlY2xhcmF0aXZlQW5pbWF0aW9uKTsKIAot
RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmIG93bmlu
Z0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKLSAgICA6IFdlYkFu
aW1hdGlvbihvd25pbmdFbGVtZW50LmRvY3VtZW50KCkpCi0gICAgLCBtX293bmluZ0VsZW1lbnQo
bWFrZVdlYWtQdHIob3duaW5nRWxlbWVudCkpCitEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFy
YXRpdmVBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNvbnN0IEFuaW1hdGlv
biYgYmFja2luZ0FuaW1hdGlvbikKKyAgICA6IFdlYkFuaW1hdGlvbihzdHlsZWFibGUuZWxlbWVu
dC5kb2N1bWVudCgpKQorICAgICwgbV9vd25pbmdFbGVtZW50KG1ha2VXZWFrUHRyKHN0eWxlYWJs
ZS5lbGVtZW50KSkKKyAgICAsIG1fb3duaW5nUHNldWRvSWQoc3R5bGVhYmxlLnBzZXVkb0lkKQog
ICAgICwgbV9iYWNraW5nQW5pbWF0aW9uKGNvbnN0X2Nhc3Q8QW5pbWF0aW9uJj4oYmFja2luZ0Fu
aW1hdGlvbikpCiB7CiB9CkBAIC01NCw5ICs1NSwxMSBAQCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6
fkRlY2xhcmF0aXZlQW5pbWF0aW9uKCkKIHsKIH0KIAotRWxlbWVudCogRGVjbGFyYXRpdmVBbmlt
YXRpb246Om93bmluZ0VsZW1lbnQoKSBjb25zdAorY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVh
YmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3duaW5nRWxlbWVudCgpIGNvbnN0CiB7Ci0gICAg
cmV0dXJuIG1fb3duaW5nRWxlbWVudC5nZXQoKTsKKyAgICBpZiAobV9vd25pbmdFbGVtZW50KQor
ICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX293bmluZ0VsZW1lbnQuZ2V0KCksIG1fb3duaW5n
UHNldWRvSWQpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7CiB9CiAKIHZvaWQgRGVjbGFyYXRp
dmVBbmltYXRpb246OnRpY2soKQpAQCAtOTMsNyArOTYsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5p
bWF0aW9uOjpkaXNhc3NvY2lhdGVGcm9tT3duaW5nRWxlbWVudCgpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChhdXRvKiBhbmltYXRpb25UaW1lbGluZSA9IHRpbWVsaW5lKCkpCi0gICAgICAg
IGFuaW1hdGlvblRpbWVsaW5lLT5yZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zv
ck93bmluZ0VsZW1lbnQoKnRoaXMsICptX293bmluZ0VsZW1lbnQpOworICAgICAgICBhbmltYXRp
b25UaW1lbGluZS0+cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdF
bGVtZW50KCp0aGlzLCAqb3duaW5nRWxlbWVudCgpKTsKICAgICBtX293bmluZ0VsZW1lbnQgPSBu
dWxscHRyOwogfQogCkBAIC0xMTIsMTIgKzExNSw3IEBAIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRp
b246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJT
CiAKICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsKIAotICAgIGlmIChpczxQc2V1ZG9FbGVt
ZW50PihtX293bmluZ0VsZW1lbnQuZ2V0KCkpKSB7Ci0gICAgICAgIGF1dG8mIHBzZXVkb093bmlu
Z0VsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PigqbV9vd25pbmdFbGVtZW50KTsKLSAg
ICAgICAgQVNTRVJUKHBzZXVkb093bmluZ0VsZW1lbnQuaG9zdEVsZW1lbnQoKSk7Ci0gICAgICAg
IHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3JlYXRlKCpwc2V1ZG9Pd25pbmdFbGVtZW50Lmhv
c3RFbGVtZW50KCksIHBzZXVkb093bmluZ0VsZW1lbnQucHNldWRvSWQoKSkpOwotICAgIH0gZWxz
ZQotICAgICAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVt
ZW50LCBtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpKTsKKyAgICBzZXRFZmZlY3QoS2V5ZnJh
bWVFZmZlY3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50LCBtX293bmluZ1BzZXVkb0lkKSk7CiAg
ICAgc2V0VGltZWxpbmUoJm1fb3duaW5nRWxlbWVudC0+ZG9jdW1lbnQoKS50aW1lbGluZSgpKTsK
ICAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZmZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRp
dmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRTdHlsZSwgbmV3U3R5bGUpOwogICAgIHN5
bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24oKTsKQEAgLTM1Miw3ICszNTAsNyBAQCB2
b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVlRE9NRXZlbnQoY29uc3QgQXRvbVN0cmlu
ZyYgZXZlbnRUeXBlLCBTZWNvbmRzCiAgICAgICAgIHJldHVybjsKIAogICAgIGF1dG8gdGltZSA9
IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVsYXBzZWRUaW1lKSAvIDEwMDA7Ci0gICAg
Y29uc3QgYXV0byYgcHNldWRvSWQgPSBQc2V1ZG9FbGVtZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZv
ckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkpOworICAgIGNvbnN0IGF1dG8mIHBz
ZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNldWRvRWxlbWVudE5hbWVGb3JFdmVudHMobV9vd25p
bmdQc2V1ZG9JZCk7CiAgICAgYXV0byB0aW1lbGluZVRpbWUgPSB0aW1lbGluZSgpID8gdGltZWxp
bmUoKS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVsbG9wdDsKICAgICBhdXRvIGV2ZW50ID0gY3Jl
YXRlRXZlbnQoZXZlbnRUeXBlLCB0aW1lLCBwc2V1ZG9JZCwgdGltZWxpbmVUaW1lKTsKICAgICBl
dmVudC0+c2V0VGFyZ2V0KG1fb3duaW5nRWxlbWVudC5nZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCmluZGV4IGFkYjg2NjVjZDJjZWRm
NjE1ZDAzMmFhYTZmZWQ5MTQ3MjBmMzU5ZGUuLjMxYzRmNjUzMzk3YWI4OGQ3MzViNWMyZGFhYWFi
MWNjYjNlZDgzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJh
dGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2
ZUFuaW1hdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJBbmltYXRpb25FZmZl
Y3QuaCIKICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3RQaGFzZS5oIgorI2luY2x1ZGUgIlN0eWxl
YWJsZS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDUsNyArNDYsNyBAQCBwdWJsaWM6CiAKICAg
ICBib29sIGlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiB0cnVl
OyB9CiAKLSAgICBFbGVtZW50KiBvd25pbmdFbGVtZW50KCkgY29uc3Q7CisgICAgY29uc3QgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBvd25pbmdFbGVtZW50KCkgY29uc3Q7CiAgICAgY29uc3Qg
QW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9iYWNraW5nQW5p
bWF0aW9uOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nQW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYp
OwogICAgIHZvaWQgY2FuY2VsRnJvbVN0eWxlKCk7CkBAIC03Miw3ICs3Myw3IEBAIHB1YmxpYzoK
ICAgICB2b2lkIGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdlcygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6
Ci0gICAgRGVjbGFyYXRpdmVBbmltYXRpb24oRWxlbWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOwor
ICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlv
biYpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUqIG9s
ZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogICAgIHZpcnR1YWwgdm9pZCBz
eW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CkBAIC05MCw2ICs5MSw3IEBAIHBy
aXZhdGU6CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2UgbV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0
aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKIAogICAgIFdlYWtQdHI8RWxlbWVudD4gbV9vd25pbmdF
bGVtZW50OworICAgIFBzZXVkb0lkIG1fb3duaW5nUHNldWRvSWQ7CiAgICAgUmVmPEFuaW1hdGlv
bj4gbV9iYWNraW5nQW5pbWF0aW9uOwogICAgIGRvdWJsZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwog
fTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5l
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcAppbmRl
eCBiNDNjM2MxMGYyZTkzMTRjZmE5NmU5Nzk1MmQ3ZWMxMmQ4ZTdhZGQzLi42NjNiYTE4NWYwZDI1
MzhkNGY2ZGIyYWY1NGE3YTFhYzU1ZWRhMzQ0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0
aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0zNyw2ICszNyw3IEBACiAjaW5jbHVkZSAiS2V5
ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIk5vZGUuaCIKICNpbmNsdWRlICJQYWdlLmgi
CisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3QuaCIKICNpbmNsdWRlICJSZW5kZXJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIKICNpbmNsdWRlICJSZW5kZXJMYXllckJh
Y2tpbmcuaCIKQEAgLTIyNiwxNCArMjI3LDE0IEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6YW5p
bWF0aW9uQ2FuQmVSZW1vdmVkKFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKICAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1l
RWZmZWN0PihlZmZlY3QpOwotICAgIGF1dG8qIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50YXJn
ZXQoKTsKLSAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5pc0Rlc2NlbmRhbnRPZigqbV9kb2N1
bWVudCkpCisgICAgYXV0byB0YXJnZXQgPSBrZXlmcmFtZUVmZmVjdC0+dGFyZ2V0U3R5bGVhYmxl
KCk7CisgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+ZWxlbWVudC5pc0Rlc2NlbmRhbnRPZigq
bV9kb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIEhhc2hTZXQ8Q1NTUHJv
cGVydHlJRD4gcHJvcGVydGllc1RvTWF0Y2ggPSBrZXlmcmFtZUVmZmVjdC0+YW5pbWF0ZWRQcm9w
ZXJ0aWVzKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdlYkFuaW1hdGlvbj4+IGFuaW1hdGlvbnM7
Ci0gICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSB0YXJnZXQtPmtleWZyYW1lRWZm
ZWN0U3RhY2soKSkgeworICAgIGlmIChhdXRvKiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gdGFyZ2V0
LT5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2sodGFyZ2V0LT5wc2V1ZG9JZCkpIHsKICAgICAg
ICAgZm9yIChhdXRvJiBlZmZlY3QgOiBrZXlmcmFtZUVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3Rz
KCkpIHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkp
CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7
CkBAIC0yOTYsOCArMjk3LDggQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjp0cmFuc2l0aW9uRGlk
Q29tcGxldGUoUmVmUHRyPENTU1RyYW5zaXRpb24+IHRyYW5zaXRpb24pCiAgICAgQVNTRVJUKHRy
YW5zaXRpb24pOwogICAgIHJlbW92ZUFuaW1hdGlvbigqdHJhbnNpdGlvbik7CiAgICAgaWYgKGlz
PEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5lZmZlY3QoKSkpIHsKLSAgICAgICAgaWYgKGF1
dG8qIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5lZmZlY3Qo
KSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkKLSAgICAgICAgICAgIHRhcmdldC0+
ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHRyYW5zaXRpb24tPnBy
b3BlcnR5KCksIHRyYW5zaXRpb24pOworICAgICAgICBpZiAoYXV0byBzdHlsZWFibGUgPSBkb3du
Y2FzdDxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+ZWZmZWN0KCkpLT50YXJnZXRTdHlsZWFi
bGUoKSkKKyAgICAgICAgICAgIHN0eWxlYWJsZS0+ZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHkoc3R5bGVhYmxlLT5wc2V1ZG9JZCkuc2V0KHRyYW5zaXRpb24tPnBy
b3BlcnR5KCksIHRyYW5zaXRpb24pOwogICAgIH0KIH0KIApAQCAtMzMwLDEwICszMzEsMTEgQEAg
dm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZU5leHRUaWNrKCkKIAogYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZBbmltYXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIExheW91dFJlY3QmIGJvdW5kcykgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRlcmVyLmVsZW1l
bnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAgYXV0byBzdHlsZWFibGUgPSByZW5kZXJl
ci5zdHlsZWFibGUoKTsKKyAgICBpZiAoIXN0eWxlYWJsZSkKKyAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+YW5pbWF0aW9u
cygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmVsZW1lbnQuYW5pbWF0aW9u
cyhzdHlsZWFibGUtPnBzZXVkb0lkKTsKICAgICBpZiAoIWFuaW1hdGlvbnMpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIApAQCAtMzU1LDEwICszNTcsMTEgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5l
Ojpjb21wdXRlRXh0ZW50T2ZBbmltYXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91
dFIKIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAog
ewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgpKQorICAgIGF1dG8gc3R5bGVhYmxlID0gcmVu
ZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBm
YWxzZTsKIAotICAgIGF1dG8qIGFuaW1hdGlvbnMgPSByZW5kZXJlci5lbGVtZW50KCktPmFuaW1h
dGlvbnMoKTsKKyAgICBhdXRvKiBhbmltYXRpb25zID0gc3R5bGVhYmxlLT5lbGVtZW50LmFuaW1h
dGlvbnMoc3R5bGVhYmxlLT5wc2V1ZG9JZCk7CiAgICAgaWYgKCFhbmltYXRpb25zKQogICAgICAg
ICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3NiwxMCArMzc5LDExIEBAIGJvb2wgRG9jdW1lbnRUaW1l
bGluZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgQ1NTCiAKIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmlt
YXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHBy
b3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgpKQorICAgIGF1dG8g
c3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCiAg
ICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGFuaW1hdGlvbnMgPSByZW5kZXJlci5l
bGVtZW50KCktPmFuaW1hdGlvbnMoKTsKKyAgICBhdXRvKiBhbmltYXRpb25zID0gc3R5bGVhYmxl
LT5lbGVtZW50LmFuaW1hdGlvbnMoc3R5bGVhYmxlLT5wc2V1ZG9JZCk7CiAgICAgaWYgKCFhbmlt
YXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTQwMCwxMSArNDA0LDExIEBAIGJv
b2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRl
cmVyKFJlbmRlckVsZW1lbnQmIHJlCiAKIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9j
dW1lbnRUaW1lbGluZTo6YW5pbWF0ZWRTdHlsZUZvclJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyKQogewotICAgIGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50KCk7Ci0gICAg
aWYgKCFlbGVtZW50KQorICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7
CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQ
dHIocmVuZGVyZXIuc3R5bGUoKSk7CiAKLSAgICBhdXRvKiBhbmltYXRpb25zID0gcmVuZGVyZXIu
ZWxlbWVudCgpLT5hbmltYXRpb25zKCk7CisgICAgYXV0byogYW5pbWF0aW9ucyA9IHN0eWxlYWJs
ZS0+ZWxlbWVudC5hbmltYXRpb25zKHN0eWxlYWJsZS0+cHNldWRvSWQpOwogICAgIGlmICghYW5p
bWF0aW9ucykKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5z
dHlsZSgpKTsKIApAQCAtNDQ2LDkgKzQ1MCwxMyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OmFw
cGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpCiAgICAgfQogfQogCi1ib29sIERvY3Vt
ZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVk
KEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdB
bmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgYXV0byogYW5pbWF0aW9ucyA9IGVsZW1l
bnQuYW5pbWF0aW9ucygpOworICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxl
KCk7CisgICAgaWYgKCFzdHlsZWFibGUpCisgICAgICAgIHJldHVybiBmYWxzZTsKKworICAgIGF1
dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmVsZW1lbnQuYW5pbWF0aW9ucyhzdHlsZWFibGUt
PnBzZXVkb0lkKTsKICAgICBpZiAoIWFuaW1hdGlvbnMgfHwgYW5pbWF0aW9ucy0+aXNFbXB0eSgp
KQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9j
dW1lbnRUaW1lbGluZS5oCmluZGV4IGYyN2M3Yzc4OTJmOGVjNzIxZDk2YTMyOGUzMDlmNWJmNjE2
NzUwNTYuLjhlMzA0OTExNmQ1MDRjYTUzYmUwMDEzYWZhZjJkZjgyOThiZDllYjEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApAQCAtMzUsNiArMzUsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbkV2ZW50QmFzZTsKIGNsYXNz
IERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjsKK2NsYXNzIFJlbmRlckJveE1vZGVsT2JqZWN0
OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3MgRG9jdW1lbnRUaW1lbGluZSBmaW5hbCA6
IHB1YmxpYyBBbmltYXRpb25UaW1lbGluZQpAQCAtNjIsNyArNjMsNyBAQCBwdWJsaWM6CiAgICAg
Ym9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmLCBDU1NQcm9w
ZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25S
ZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAgICAgdm9pZCBh
bmltYXRpb25BY2NlbGVyYXRlZFJ1bm5pbmdTdGF0ZURpZENoYW5nZShXZWJBbmltYXRpb24mKTsK
LSAgICBib29sIHJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVs
ZW1lbnQmKSBjb25zdDsKKyAgICBib29sIHJ1bm5pbmdBbmltYXRpb25zRm9yUmVuZGVyZXJBcmVB
bGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYpIGNvbnN0OwogICAgIHZv
aWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICB2b2lkIGVucXVldWVBbmltYXRpb25FdmVu
dChBbmltYXRpb25FdmVudEJhc2UmKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuY3BwCmluZGV4IGY1ZmY4MWFlM2NkM2FlMjM3NDk1MTY4ODE2YTMwYmNkMmQ5NWRm
NzIuLjFkYjQyYmYwYThhMmUxYmQ3ODNmYmI5OTJjMzcwMDA3ZDJjOWYxOTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmNwcApAQCAtNjYsMTAgKzY2LDI3IEBA
CiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1lc3BhY2UgSlNDOwogCi1zdGF0aWMgaW5s
aW5lIHZvaWQgaW52YWxpZGF0ZUVsZW1lbnQoRWxlbWVudCogZWxlbWVudCkKK3N0YXRpYyBFbGVt
ZW50KiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNv
bnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3sKKyAgICBpZiAoIXN0eWxlYWJsZSkKKyAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2ggKHN0eWxlYWJsZS0+cHNldWRvSWQpIHsK
KyAgICBjYXNlIFBzZXVkb0lkOjpOb25lOgorICAgICAgICByZXR1cm4gJnN0eWxlYWJsZS0+ZWxl
bWVudDsKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CisgICAgICAgIHJldHVybiBzdHlsZWFi
bGUtPmVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOworICAgIGNhc2UgUHNldWRvSWQ6OkFm
dGVyOgorICAgICAgICByZXR1cm4gc3R5bGVhYmxlLT5lbGVtZW50LmFmdGVyUHNldWRvRWxlbWVu
dCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVybiBudWxscHRyOworICAgIH0KK30KKwor
c3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVFbGVtZW50KGNvbnN0IE9wdGlvbmFsPGNvbnN0
IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKIHsKLSAgICBpZiAoZWxlbWVudCkKLSAgICAgICAgZWxl
bWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKKyAgICBpZiAoYXV0byogZWxlbWVudE9y
UHNldWRvRWxlbWVudCA9IGVsZW1lbnRPclBzZXVkb0VsZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVh
YmxlKSkKKyAgICAgICAgZWxlbWVudE9yUHNldWRvRWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50
ZXJuYWwoKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJpbmcgQ1NTUHJvcGVydHlJRFRvSURMQXR0
cmlidXRlTmFtZShDU1NQcm9wZXJ0eUlEIGNzc1Byb3BlcnR5SWQpCkBAIC0xMDUxLDEzICsxMDY4
LDE0IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1dGVTdGFja2luZ0NvbnRleHRJbXBhY3Qo
KQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRpb25UaW1lbGluZURpZENoYW5nZShBbmlt
YXRpb25UaW1lbGluZSogdGltZWxpbmUpCiB7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50T3JQc2V1
ZG9FbGVtZW50KCkpCisgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFibGUoKTsKKyAgICBp
ZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKHRpbWVsaW5lKQotICAgICAg
ICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkt
PmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOworICAgICAgICBt
X2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZlY3QoKnRoaXMpOwogICAgIGVsc2Ugewot
ICAgICAgICB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOworICAgICAgICB0YXJnZXQtPmVsZW1lbnQu
ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5yZW1vdmVFZmZlY3Qo
KnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsKICAgICB9CiB9
CkBAIC0xMDY5LDE0ICsxMDg3LDE1IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvblRp
bWluZ0RpZENoYW5nZSgpCiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNr
TWVtYmVyc2hpcCgpCiB7Ci0gICAgaWYgKCF0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkp
CisgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFibGUoKTsKKyAgICBpZiAoIXRhcmdldCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1JlbGV2YW50ID0gYW5pbWF0aW9uKCkgJiYg
YW5pbWF0aW9uKCktPmlzUmVsZXZhbnQoKTsKICAgICBpZiAoaXNSZWxldmFudCAmJiAhbV9pblRh
cmdldEVmZmVjdFN0YWNrKQotICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRF
bGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRF
ZmZlY3QoKnRoaXMpOworICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVs
ZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZl
Y3QoKnRoaXMpOwogICAgIGVsc2UgaWYgKCFpc1JlbGV2YW50ICYmIG1faW5UYXJnZXRFZmZlY3RT
dGFjaykgewotICAgICAgICB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtl
eWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOworICAgICAgICB0YXJnZXQt
PmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5yZW1v
dmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsK
ICAgICB9CiB9CkBAIC0xMDk0LDYgKzExMTMsMTMgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0
QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9uKQogICAgIHVwZGF0ZUVmZmVjdFN0YWNr
TWVtYmVyc2hpcCgpOwogfQogCitjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IEtleWZy
YW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUoKSBjb25zdAoreworICAgIGlmIChtX3RhcmdldCkK
KyAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV90YXJnZXQsIG1fcHNldWRvSWQpOworICAgIHJl
dHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OnRhcmdldHNQc2V1
ZG9FbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4gbV90YXJnZXQuZ2V0KCkgJiYgbV9wc2V1
ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZTsKQEAgLTExMTksOSArMTE0NSw5IEBAIHZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OnNldFRhcmdldChSZWZQdHI8RWxlbWVudD4mJiBuZXdUYXJnZXQpCiAgICAgaWYg
KG1fdGFyZ2V0ID09IG5ld1RhcmdldCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byogcHJl
dmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRv
RWxlbWVudCgpOworICAgIGF1dG8mIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlID0gdGFyZ2V0U3R5
bGVhYmxlKCk7CiAgICAgbV90YXJnZXQgPSBXVEZNb3ZlKG5ld1RhcmdldCk7Ci0gICAgZGlkQ2hh
bmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChwcmV2aW91c1RhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQpOworICAgIGRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShwcmV2aW91c1Rhcmdl
dFN0eWxlYWJsZSk7CiB9CiAKIGNvbnN0IFN0cmluZyBLZXlmcmFtZUVmZmVjdDo6cHNldWRvRWxl
bWVudCgpIGNvbnN0CkBAIC0xMTYxLDI2ICsxMTg3LDI4IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtl
eWZyYW1lRWZmZWN0OjpzZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYgcHNldWRvRWxlbWVu
dCkKICAgICBpZiAocHNldWRvSWQgPT0gbV9wc2V1ZG9JZCkKICAgICAgICAgcmV0dXJuIHsgfTsK
IAotICAgIGF1dG8qIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCA9IHRhcmdl
dEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBhdXRvJiBwcmV2aW91c1RhcmdldFN0eWxl
YWJsZSA9IHRhcmdldFN0eWxlYWJsZSgpOwogICAgIG1fcHNldWRvSWQgPSBwc2V1ZG9JZDsKLSAg
ICBkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KHByZXZpb3VzVGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudCk7CisgICAgZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKHByZXZp
b3VzVGFyZ2V0U3R5bGVhYmxlKTsKIAogICAgIHJldHVybiB7IH07CiB9CiAKLXZvaWQgS2V5ZnJh
bWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoRWxlbWVudCog
cHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KQordm9pZCBLZXlmcmFtZUVmZmVj
dDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJs
ZT4mIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKQogewotICAgIGF1dG8qIG5ld1RhcmdldEVsZW1l
bnRPclBzZXVkb0VsZW1lbnQgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAg
YXV0byBuZXdUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRTdHlsZWFibGUoKTsKIAogICAgIC8vIFdl
IG11c3QgZW5zdXJlIGEgUHNldWRvRWxlbWVudCBleGlzdHMgZm9yIHRoaXMgbV90YXJnZXQgLyBt
X3BzZXVkb0lkIHBhaXIgaWYgYm90aCBhcmUgc3BlY2lmaWVkLgorICAgIC8vIEZJWE1FOiBJZGVh
bGx5IHRoaXMgd291bGRuJ3QgYmUgbmVjZXNzYXJ5LgorICAgIGF1dG8qIG5ld1RhcmdldEVsZW1l
bnRPclBzZXVkb0VsZW1lbnQgPSBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKG5l
d1RhcmdldFN0eWxlYWJsZSk7CiAgICAgaWYgKCFuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50ICYmIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmUpIHsK
LSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IHRhcmdldGluZyA6OmJlZm9yZSBhbmQgOjphZnRl
ciBwc2V1ZG8tZWxlbWVudHMgYXQgdGhlIG1vbWVudC4KKyAgICAgICAgLy8gRklYTUU6IFdlIG9u
bHkgc3VwcG9ydCB0YXJnZXRpbmcgOjpiZWZvcmUgYW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRz
IGF0IHRoZSBtb21lbnQuCiAgICAgICAgIGlmIChtX3BzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZv
cmUgfHwgbV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0ZXIpCiAgICAgICAgICAgICBuZXdUYXJn
ZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gJm1fdGFyZ2V0LT5lbnN1cmVQc2V1ZG9FbGVtZW50
KG1fcHNldWRvSWQpOwogICAgIH0KIAogICAgIGlmIChhdXRvKiBlZmZlY3RBbmltYXRpb24gPSBh
bmltYXRpb24oKSkKLSAgICAgICAgZWZmZWN0QW5pbWF0aW9uLT5lZmZlY3RUYXJnZXREaWRDaGFu
Z2UocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50LCBuZXdUYXJnZXRFbGVtZW50
T3JQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgZWZmZWN0QW5pbWF0aW9uLT5lZmZlY3RUYXJnZXRE
aWRDaGFuZ2UocHJldmlvdXNUYXJnZXRTdHlsZWFibGUsIG5ld1RhcmdldFN0eWxlYWJsZSk7CiAK
ICAgICBjbGVhckJsZW5kaW5nS2V5ZnJhbWVzKCk7CiAKQEAgLTExOTAsMTQgKzEyMTgsMTUgQEAg
dm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVu
dChFbGVtZW50KiBwcmV2aW91c1RhcmcKIAogICAgIC8vIExpa2V3aXNlLCB3ZSBuZWVkIHRvIGlu
dmFsaWRhdGUgc3R5bGVzIG9uIHRoZSBwcmV2aW91cyB0YXJnZXQgc28gdGhhdAogICAgIC8vIGFu
eSBhbmltYXRlZCBzdHlsZXMgYXJlIHJlbW92ZWQgaW1tZWRpYXRlbHkuCi0gICAgaW52YWxpZGF0
ZUVsZW1lbnQocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KTsKKyAgICBpbnZh
bGlkYXRlRWxlbWVudChwcmV2aW91c1RhcmdldFN0eWxlYWJsZSk7CiAKLSAgICBpZiAocHJldmlv
dXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KSB7Ci0gICAgICAgIHByZXZpb3VzVGFyZ2V0
RWxlbWVudE9yUHNldWRvRWxlbWVudC0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpLnJlbW92
ZUVmZmVjdCgqdGhpcyk7CisgICAgaWYgKHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKSB7CisgICAg
ICAgIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2socHJldmlvdXNUYXJnZXRTdHlsZWFibGUtPnBzZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRo
aXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsKICAgICB9Ci0gICAg
aWYgKG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQpCi0gICAgICAgIG1faW5UYXJnZXRF
ZmZlY3RTdGFjayA9IG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQtPmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOworCisgICAgaWYgKG5ld1RhcmdldFN0
eWxlYWJsZSkKKyAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFyZ2V0U3R5bGVh
YmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2sobmV3VGFyZ2V0U3R5bGVhYmxl
LT5wc2V1ZG9JZCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0KIAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6
YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBPcHRpb25hbDxTZWNvbmRzPiBzdGFydFRp
bWUpCkBAIC0xMjM4LDcgKzEyNjcsNyBAQCBib29sIEtleWZyYW1lRWZmZWN0Ojppc1J1bm5pbmdB
Y2NlbGVyYXRlZEFuaW1hdGlvbkZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcAogdm9pZCBL
ZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSgpCiB7CiAgICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1h
dGlvbnMsIHN0cmVhbSA8PCAiS2V5ZnJhbWVFZmZlY3Q6OmludmFsaWRhdGUgb24gZWxlbWVudCAi
IDw8IFZhbHVlT3JOdWxsKHRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkpOwotICAgIGlu
dmFsaWRhdGVFbGVtZW50KHRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSk7CisgICAgaW52
YWxpZGF0ZUVsZW1lbnQodGFyZ2V0U3R5bGVhYmxlKCkpOwogfQogCiB2b2lkIEtleWZyYW1lRWZm
ZWN0Ojpjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVzU3RhdGUoKQpAQCAtMTYyMyw3ICsxNjUy
LDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25z
KCkKIAogICAgICAgICBBU1NFUlQobV90YXJnZXQpOwogCi0gICAgICAgIGF1dG8qIGxhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgp
OworICAgICAgICBhdXRvKiBsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlID0gbV90YXJnZXQtPmxh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobV9wc2V1ZG9JZCk7CiAgICAgICAgIEFTU0VSVChsYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlKTsKIAogICAgICAgICBLZXlmcmFtZUxpc3QgZXhwbGljaXRL
ZXlmcmFtZXMobV9ibGVuZGluZ0tleWZyYW1lcy5hbmltYXRpb25OYW1lKCkpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0LmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAppbmRleCBjYWNkNjM0NzI3NTYyMzBlNjZk
MjQyMGRlNGYxMjNkOWZkNTNjMDc4Li42ZDJmZTAyMjZhMThlYWZlZWY3ODI2ZDI5ZmI2ODczYTU5
NTAxYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZl
Y3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApAQCAt
MzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIktleWZyYW1lTGlzdC5oIgogI2luY2x1ZGUgIlJlbmRl
clN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0aWVzLmgiCisjaW5jbHVkZSAiU3R5bGVh
YmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVm
Lmg+CiAKQEAgLTEwOSw2ICsxMTAsOCBAQCBwdWJsaWM6CiAgICAgY29uc3QgU3RyaW5nIHBzZXVk
b0VsZW1lbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRQc2V1ZG9FbGVtZW50
KGNvbnN0IFN0cmluZyYpOwogCisgICAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiB0
YXJnZXRTdHlsZWFibGUoKSBjb25zdDsKKwogICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpT
T2JqZWN0Pj4gZ2V0QmluZGluZ3NLZXlmcmFtZXMoSlNDOjpKU0dsb2JhbE9iamVjdCYpOwogICAg
IFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4gZ2V0S2V5ZnJhbWVzKEpTQzo6SlNH
bG9iYWxPYmplY3QmKTsKICAgICBFeGNlcHRpb25Pcjx2b2lkPiBzZXRCaW5kaW5nc0tleWZyYW1l
cyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJik7CkBA
IC0xNzgsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSBjb25z
dDsKICAgICB2b2lkIHVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpOwogICAgIHZvaWQgY29w
eVByb3BlcnRpZXNGcm9tU291cmNlKFJlZjxLZXlmcmFtZUVmZmVjdD4mJik7Ci0gICAgdm9pZCBk
aWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KEVsZW1lbnQqKTsKKyAgICB2b2lk
IGRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vzc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFs
T2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVjdD4mJik7CiAgICAgdm9pZCBhZGRQZW5k
aW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRBY3Rpb24pOwogICAgIGJvb2wgY2FuQmVB
Y2NlbGVyYXRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0tleWZyYW1lRWZmZWN0U3RhY2suY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0U3RhY2suY3BwCmluZGV4IDdjMGJlMGYxYzE2N2RhMDc4NzgyOThkMzMyNjU1ZDdm
MGNmYTljODUuLmQ1ZjQwZWQ4MWUyMzBlZGFlNmY2ZWM1NDVhNzEzMmRhMDkxZTQ0ZDYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHAKQEAg
LTQ2LDcgKzQ2LDcgQEAgYm9vbCBLZXlmcmFtZUVmZmVjdFN0YWNrOjphZGRFZmZlY3QoS2V5ZnJh
bWVFZmZlY3QmIGVmZmVjdCkKIHsKICAgICAvLyBUbyBxdWFsaWZ5IGZvciBtZW1iZXJzaGlwIGlu
IGFuIGVmZmVjdCBzdGFjaywgYW4gZWZmZWN0IG11c3QgaGF2ZSBhIHRhcmdldCwgYW4gYW5pbWF0
aW9uLCBhIHRpbWVsaW5lIGFuZCBiZSByZWxldmFudC4KICAgICAvLyBUaGlzIG1ldGhvZCB3aWxs
IGJlIGNhbGxlZCBpbiBXZWJBbmltYXRpb24gYW5kIEtleWZyYW1lRWZmZWN0IGFzIHRob3NlIHBy
b3BlcnRpZXMgY2hhbmdlLgotICAgIGlmICghZWZmZWN0LnRhcmdldEVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCktPnRp
bWVsaW5lKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+aXNSZWxldmFudCgpKQorICAgIGlmICgh
ZWZmZWN0LnRhcmdldFN0eWxlYWJsZSgpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCkgfHwgIWVmZmVj
dC5hbmltYXRpb24oKS0+dGltZWxpbmUoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpLT5pc1JlbGV2
YW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIG1fZWZmZWN0cy5hcHBlbmQobWFr
ZVdlYWtQdHIoJmVmZmVjdCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
LmNwcAppbmRleCBhYWQ0ZjFjY2NiN2MxZDg5NDU3NjEzYWQ0ZmZmNWI0ZjZlMzgxMTI5Li44NTEz
MzNkNDU5NmIxZTBiNmI2ZDVlMjFiMWE1MjcxY2VlNzM3ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2LDI2ICsyMDYsMjEgQEAgdm9pZCBXZWJB
bmltYXRpb246OnNldEVmZmVjdEludGVybmFsKFJlZlB0cjxBbmltYXRpb25FZmZlY3Q+JiYgbmV3
RWZmZWN0LCBib29sIGQKIAogICAgIGF1dG8gb2xkRWZmZWN0ID0gc3RkOjpleGNoYW5nZShtX2Vm
ZmVjdCwgV1RGTW92ZShuZXdFZmZlY3QpKTsKIAotICAgIEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0
ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkpCi0gICAg
ICAgIHByZXZpb3VzVGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5n
ZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKLQotICAgIEVsZW1lbnQqIG5l
d1RhcmdldCA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkp
Ci0gICAgICAgIG5ld1RhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdC5n
ZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBPcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVj
dCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5
bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBu
ZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJh
bWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxv
cHQ7CiAKICAgICAvLyBVcGRhdGUgdGhlIGVmZmVjdC10by1hbmltYXRpb24gcmVsYXRpb25zaGlw
cyBhbmQgdGhlIHRpbWVsaW5lJ3MgYW5pbWF0aW9uIG1hcC4KICAgICBpZiAob2xkRWZmZWN0KSB7
CiAgICAgICAgIG9sZEVmZmVjdC0+c2V0QW5pbWF0aW9uKG51bGxwdHIpOwogICAgICAgICBpZiAo
IWRvTm90UmVtb3ZlRnJvbVRpbWVsaW5lICYmIG1fdGltZWxpbmUgJiYgcHJldmlvdXNUYXJnZXQg
JiYgcHJldmlvdXNUYXJnZXQgIT0gbmV3VGFyZ2V0KQotICAgICAgICAgICAgbV90aW1lbGluZS0+
YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0aGlzLCAqcHJldmlvdXNUYXJnZXQpOwor
ICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUo
KnRoaXMsICpwcmV2aW91c1RhcmdldCk7CiAgICAgICAgIHVwZGF0ZVJlbGV2YW5jZSgpOwogICAg
IH0KIAogICAgIGlmIChtX2VmZmVjdCkgewogICAgICAgICBtX2VmZmVjdC0+c2V0QW5pbWF0aW9u
KHRoaXMpOwogICAgICAgICBpZiAobV90aW1lbGluZSAmJiBuZXdUYXJnZXQgJiYgcHJldmlvdXNU
YXJnZXQgIT0gbmV3VGFyZ2V0KQotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2Fz
QWRkZWRUb0VsZW1lbnQoKnRoaXMsICpuZXdUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGlu
ZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKm5ld1RhcmdldCk7CiAgICAg
fQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjpkaWRTZXRXZWJBbmltYXRpb25FZmZl
Y3QoKnRoaXMpOwpAQCAtMjQ1LDE2ICsyNDAsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRp
bWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJiB0aW1lbGluZSkKICAgICAgICAgbV9o
b2xkVGltZSA9IFdURjo6bnVsbG9wdDsKIAogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9l
ZmZlY3QpKSB7Ci0gICAgICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJh
bWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKTsKLSAgICAgICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJh
bWVFZmZlY3QtPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKLSAgICAgICAgaWYgKHRh
cmdldCkgeworICAgICAgICBpZiAoYXV0byB0YXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVj
dD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSkgewogICAgICAgICAgICAgLy8g
SW4gdGhlIGNhc2Ugb2YgYSBkZWNsYXJhdGl2ZSBhbmltYXRpb24sIHdlIGRvbid0IHdhbnQgdG8g
cmVtb3ZlIHRoZSBhbmltYXRpb24gZnJvbSB0aGUgcmVsZXZhbnQgbWFwcyBiZWNhdXNlCiAgICAg
ICAgICAgICAvLyB3aGlsZSB0aGUgdGltZWxpbmUgd2FzIHNldCB2aWEgdGhlIEFQSSwgdGhlIGVs
ZW1lbnQgc3RpbGwgaGFzIGEgdHJhbnNpdGlvbiBvciBhbmltYXRpb24gc2V0IHVwIGFuZCB3ZSBt
dXN0CiAgICAgICAgICAgICAvLyBub3QgYnJlYWsgdGhlIHJlbGF0aW9uc2hpcC4KICAgICAgICAg
ICAgIGlmIChtX3RpbWVsaW5lICYmICFpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkpCi0gICAgICAg
ICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0aGlz
LCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1v
dmVkRnJvbVN0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7CiAgICAgICAgICAgICBpZiAodGltZWxp
bmUpCi0gICAgICAgICAgICAgICAgdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50
KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICB0aW1lbGluZS0+YW5pbWF0aW9uV2Fz
QWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7CiAgICAgICAgIH0KICAgICB9CiAKQEAg
LTI4NSwxNCArMjc4LDE0IEBAIHZvaWQgV2ViQW5pbWF0aW9uOjpzZXRUaW1lbGluZUludGVybmFs
KFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJiB0aW1lbGluZSkKICAgICAgICAgbV9lZmZlY3Qt
PmFuaW1hdGlvblRpbWVsaW5lRGlkQ2hhbmdlKG1fdGltZWxpbmUuZ2V0KCkpOwogfQogCi12b2lk
IFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKEVsZW1lbnQqIHByZXZpb3VzVGFy
Z2V0LCBFbGVtZW50KiBuZXdUYXJnZXQpCit2b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0
RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0
LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpCiB7CiAgICAgaWYg
KG1fdGltZWxpbmUpIHsKICAgICAgICAgaWYgKHByZXZpb3VzVGFyZ2V0KQotICAgICAgICAgICAg
bV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0aGlzLCAqcHJldmlv
dXNUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZy
b21TdHlsZWFibGUoKnRoaXMsICpwcmV2aW91c1RhcmdldCk7CiAKICAgICAgICAgaWYgKG5ld1Rh
cmdldCkKLSAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50
KCp0aGlzLCAqbmV3VGFyZ2V0KTsKKyAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldh
c0FkZGVkVG9TdHlsZWFibGUoKnRoaXMsICpuZXdUYXJnZXQpOwogCiAgICAgICAgIC8vIFRoaXMg
Y291bGQgaGF2ZSBjaGFuZ2VkIHdoZXRoZXIgd2UgaGF2ZSByZXBsYWNlZCBhbmltYXRpb25zLCBz
byB3ZSBtYXkgbmVlZCB0byBzY2hlZHVsZSBhbiB1cGRhdGUuCiAgICAgICAgIG1fdGltZWxpbmUt
PmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgqdGhpcyk7CkBAIC0xMzgyLDkgKzEzNzUsOSBAQCB2
b2lkIFdlYkFuaW1hdGlvbjo6cGVyc2lzdCgpCiAgICAgaWYgKHByZXZpb3VzUmVwbGFjZVN0YXRl
ID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCAmJiBtX3RpbWVsaW5lKSB7CiAgICAgICAgIGlmIChp
czxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAgICAgICAgICAgICBhdXRvJiBrZXlmcmFt
ZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PigqbV9lZmZlY3QpOwotICAgICAgICAg
ICAgYXV0byYgdGFyZ2V0ID0gKmtleWZyYW1lRWZmZWN0LnRhcmdldEVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQoKTsKLSAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9FbGVt
ZW50KCp0aGlzLCB0YXJnZXQpOwotICAgICAgICAgICAgdGFyZ2V0LmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKS5hZGRFZmZlY3Qoa2V5ZnJhbWVFZmZlY3QpOworICAgICAgICAgICAgYXV0byBz
dHlsZWFibGUgPSBrZXlmcmFtZUVmZmVjdC50YXJnZXRTdHlsZWFibGUoKTsKKyAgICAgICAgICAg
IG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9TdHlsZWFibGUoKnRoaXMsICpzdHlsZWFi
bGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkuYWRkRWZmZWN0KGtleWZyYW1lRWZmZWN0KTsKICAg
ICAgICAgfQogICAgIH0KIH0KQEAgLTE0MjMsNyArMTQxNiw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+
IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAgICBhdXRvIGlubGluZVN0eWxlID0gc3R5
bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0ZUNTU1N0eWxlRGVjbGFyYXRpb24oKTsKICAgICBp
bmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHlsZWRFbGVtZW50LmdldEF0dHJpYnV0ZSgic3R5bGUi
KSk7CiAKLSAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0gc3R5bGVkRWxlbWVudC5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5ZnJhbWVTdGFjayA9IHN0eWxlZEVsZW1l
bnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZDo6Tm9uZSk7CiAKICAgICAvLyAy
LjUgRm9yIGVhY2ggcHJvcGVydHksIHByb3BlcnR5LCBpbiB0YXJnZXRlZCBwcm9wZXJ0aWVzOgog
ICAgIGZvciAoYXV0byBwcm9wZXJ0eSA6IGVmZmVjdC0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCkpIHsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaCBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAppbmRleCBiYjM5YTBhYTAzZGZl
MTI4MzIzMWRiMTZiODMyYWJjOTEzZjUwMDA5Li42NjY3YmZlZTY5YzBlN2JiMDE4NmQ3YmIwMmM1
MmE4YzVkODBkYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5p
bWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBA
IC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRUYXJnZXQuaCIKICNpbmNsdWRlICJFeGNl
cHRpb25Pci5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgi
CiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5o
PgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgpAQCAtNDQsNyArNDUsNiBAQCBjbGFzcyBBbmlt
YXRpb25FZmZlY3Q7CiBjbGFzcyBBbmltYXRpb25FdmVudEJhc2U7CiBjbGFzcyBBbmltYXRpb25U
aW1lbGluZTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0
eWxlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBlPiBjbGFzcyBET01Qcm9taXNlUHJveHlX
aXRoUmVzb2x2ZUNhbGxiYWNrOwpAQCAtMTIyLDcgKzEyMiw3IEBAIHB1YmxpYzoKICAgICB2aXJ0
dWFsIHZvaWQgdGljaygpOwogICAgIFdFQkNPUkVfRVhQT1JUIFNlY29uZHMgdGltZVRvTmV4dFRp
Y2soKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZShSZW5kZXJTdHlsZSYsIE9wdGlv
bmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KTsKLSAgICB2b2lkIGVmZmVjdFRhcmdldERpZENo
YW5nZShFbGVtZW50KiBwcmV2aW91c1RhcmdldCwgRWxlbWVudCogbmV3VGFyZ2V0KTsKKyAgICB2
b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFy
Z2V0KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkU3RhdGVEaWRDaGFuZ2UoKTsKICAgICB2b2lkIGFw
cGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpOwogICAgIHZvaWQgd2lsbENoYW5nZVJlbmRl
cmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9u
VXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGls
aXRpZXMuY3BwCmluZGV4IGUxNzJkODJkNTVjY2NmMTMwNWQ5OWRiYTE1YzQ2ZGQxNjEzYjQzYzcu
Ljg3NzU2MTZkNTI3Y2VjODNmYjI1ODU2NWE5YmJiYmZlMGFkZTUxOGEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwCkBAIC0zOCw0
MiArMzgsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1zdGF0aWMgYm9vbCBjb21wYXJl
RGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVP
cmRlcihFbGVtZW50JiBhLCBFbGVtZW50JiBiKQorc3RhdGljIGJvb2wgY29tcGFyZURlY2xhcmF0
aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0luRG9jdW1lbnRUcmVlT3JkZXIoY29u
c3QgU3R5bGVhYmxlJiBhLCBjb25zdCBTdHlsZWFibGUmIGIpCiB7CiAgICAgLy8gV2Ugc2hvdWxk
IG5vdCBldmVyIGJlIGNhbGxpbmcgdGhpcyBmdW5jdGlvbiB3aXRoIHR3byBFbGVtZW50cyB0aGF0
IGFyZSB0aGUgc2FtZS4gSWYgdGhhdCB3ZXJlIHRoZSBjYXNlLAogICAgIC8vIHRoZW4gY29tcGFy
aW5nIG9iamVjdHMgb2YgdGhpcyBraW5kIHdvdWxkIHlpZWxkIGluY29uc2lzdGVudCByZXN1bHRz
IHdoZW4gY29tcGFyaW5nIEEgPT0gQiBhbmQgQiA9PSBBLgogICAgIC8vIEFzIHN1Y2gsIHRoaXMg
ZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHN0ZDo6c3RhYmxlX3NvcnQoKS4KLSAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKCZhICE9ICZiKTsKKyAgICBS
RUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGEgIT0gYik7CiAKICAgICAv
LyBXaXRoIHJlZ2FyZCB0byBwc2V1ZG8tZWxlbWVudHMsIHRoZSBzb3J0IG9yZGVyIGlzIGFzIGZv
bGxvd3M6CisgICAgLy8KICAgICAvLyAgICAgLSBlbGVtZW50CisgICAgLy8gICAgIC0gOjptYXJr
ZXIKICAgICAvLyAgICAgLSA6OmJlZm9yZQorICAgIC8vICAgICAtIGFueSBvdGhlciBwc2V1ZG8t
ZWxlbWVudHMgbm90IG1lbnRpb25lZCBzcGVjaWZpY2FsbHkgaW4gdGhpcyBsaXN0LCBzb3J0ZWQg
aW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSBVbmljb2RlIGNvZGVwb2ludHMgdGhhdCBtYWtlIHVw
IGVhY2ggc2VsZWN0b3IKICAgICAvLyAgICAgLSA6OmFmdGVyCiAgICAgLy8gICAgIC0gZWxlbWVu
dCBjaGlsZHJlbgotCi0gICAgZW51bSBTb3J0aW5nSW5kZXggOiB1aW50OF90IHsgTm90UHNldWRv
LCBCZWZvcmUsIEFmdGVyIH07Ci0KLSAgICBpbnQgYVNvcnRpbmdJbmRleCA9IE5vdFBzZXVkbzsK
LSAgICBFbGVtZW50KiBhUmVmZXJlbmNlRWxlbWVudCA9ICZhOwotICAgIGlmIChpczxQc2V1ZG9F
bGVtZW50PihhKSkgewotICAgICAgICBhdXRvJiBhUHNldWRvID0gZG93bmNhc3Q8UHNldWRvRWxl
bWVudD4oYSk7Ci0gICAgICAgIGFTb3J0aW5nSW5kZXggPSBhUHNldWRvLmlzQmVmb3JlUHNldWRv
RWxlbWVudCgpID8gQmVmb3JlIDogQWZ0ZXI7Ci0gICAgICAgIGFSZWZlcmVuY2VFbGVtZW50ID0g
YVBzZXVkby5ob3N0RWxlbWVudCgpOwotICAgICAgICBBU1NFUlQoYVJlZmVyZW5jZUVsZW1lbnQp
OwotICAgIH0KLQotICAgIGludCBiU29ydGluZ0luZGV4ID0gTm90UHNldWRvOwotICAgIEVsZW1l
bnQqIGJSZWZlcmVuY2VFbGVtZW50ID0gJmI7Ci0gICAgaWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGIp
KSB7Ci0gICAgICAgIGF1dG8mIGJQc2V1ZG8gPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihiKTsK
LSAgICAgICAgYlNvcnRpbmdJbmRleCA9IGJQc2V1ZG8uaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkg
PyBCZWZvcmUgOiBBZnRlcjsKLSAgICAgICAgYlJlZmVyZW5jZUVsZW1lbnQgPSBiUHNldWRvLmhv
c3RFbGVtZW50KCk7Ci0gICAgICAgIEFTU0VSVChiUmVmZXJlbmNlRWxlbWVudCk7Ci0gICAgfQot
Ci0gICAgaWYgKGFSZWZlcmVuY2VFbGVtZW50ID09IGJSZWZlcmVuY2VFbGVtZW50KQorICAgIGVu
dW0gU29ydGluZ0luZGV4IDogdWludDhfdCB7IE5vdFBzZXVkbywgTWFya2VyLCBCZWZvcmUsIE90
aGVyLCBBZnRlciB9OworICAgIGF1dG8gc29ydGluZ0luZGV4ID0gW10oUHNldWRvSWQgcHNldWRv
SWQpIC0+IFNvcnRpbmdJbmRleCB7CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6
Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBOb3RQc2V1ZG87CisgICAgICAgIGlmIChwc2V1ZG9J
ZCA9PSBQc2V1ZG9JZDo6TWFya2VyKQorICAgICAgICAgICAgcmV0dXJuIE1hcmtlcjsKKyAgICAg
ICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUpCisgICAgICAgICAgICByZXR1cm4g
QmVmb3JlOworICAgICAgICBpZiAocHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQorICAgICAg
ICAgICAgcmV0dXJuIEFmdGVyOworICAgICAgICByZXR1cm4gT3RoZXI7CisgICAgfTsKKworICAg
IGF1dG8gcHNldWRvSWRBc1N0cmluZyA9IFtdKFBzZXVkb0lkIHBzZXVkb0lkKSAtPiBTdHJpbmcg
eworICAgICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAgICAgICAgc3RyZWFtIDw8IHBzZXVkb0lk
OworICAgICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2UoKTsKKyAgICB9OworCisgICAgYXV0byYg
YVJlZmVyZW5jZUVsZW1lbnQgPSBhLmVsZW1lbnQ7CisgICAgaW50IGFTb3J0aW5nSW5kZXggPSBz
b3J0aW5nSW5kZXgoYS5wc2V1ZG9JZCk7CisKKyAgICBhdXRvJiBiUmVmZXJlbmNlRWxlbWVudCA9
IGIuZWxlbWVudDsKKyAgICBpbnQgYlNvcnRpbmdJbmRleCA9IHNvcnRpbmdJbmRleChiLnBzZXVk
b0lkKTsKKworICAgIGlmICgmYVJlZmVyZW5jZUVsZW1lbnQgPT0gJmJSZWZlcmVuY2VFbGVtZW50
KSB7CisgICAgICAgIGlmIChhU29ydGluZ0luZGV4ID09IGJTb3J0aW5nSW5kZXgpCisgICAgICAg
ICAgICByZXR1cm4gcHNldWRvSWRBc1N0cmluZyhhLnBzZXVkb0lkKS51dGY4KCkgPCBwc2V1ZG9J
ZEFzU3RyaW5nKGIucHNldWRvSWQpLnV0ZjgoKTsKICAgICAgICAgcmV0dXJuIGFTb3J0aW5nSW5k
ZXggPCBiU29ydGluZ0luZGV4OwotICAgIHJldHVybiBhUmVmZXJlbmNlRWxlbWVudC0+Y29tcGFy
ZURvY3VtZW50UG9zaXRpb24oKmJSZWZlcmVuY2VFbGVtZW50KSAmIE5vZGU6OkRPQ1VNRU5UX1BP
U0lUSU9OX0ZPTExPV0lORzsKKyAgICB9CisgICAgcmV0dXJuIGFSZWZlcmVuY2VFbGVtZW50LmNv
bXBhcmVEb2N1bWVudFBvc2l0aW9uKGJSZWZlcmVuY2VFbGVtZW50KSAmIE5vZGU6OkRPQ1VNRU5U
X1BPU0lUSU9OX0ZPTExPV0lORzsKIH0KIAogc3RhdGljIGJvb2wgY29tcGFyZUNTU1RyYW5zaXRp
b25zKGNvbnN0IENTU1RyYW5zaXRpb24mIGEsIGNvbnN0IENTU1RyYW5zaXRpb24mIGIpCkBAIC04
NCw3ICs5NCw3IEBAIHN0YXRpYyBib29sIGNvbXBhcmVDU1NUcmFuc2l0aW9ucyhjb25zdCBDU1NU
cmFuc2l0aW9uJiBhLCBjb25zdCBDU1NUcmFuc2l0aW9uJiBiCiAgICAgYXV0byYgYk93bmluZ0Vs
ZW1lbnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CiAKICAgICAvLyBJZiB0aGUgb3duaW5nIGVsZW1l
bnQgb2YgQSBhbmQgQiBkaWZmZXJzLCBzb3J0IEEgYW5kIEIgYnkgdHJlZSBvcmRlciBvZiB0aGVp
ciBjb3JyZXNwb25kaW5nIG93bmluZyBlbGVtZW50cy4KLSAgICBpZiAoJmFPd25pbmdFbGVtZW50
ICE9ICZiT3duaW5nRWxlbWVudCkKKyAgICBpZiAoYU93bmluZ0VsZW1lbnQgIT0gYk93bmluZ0Vs
ZW1lbnQpCiAgICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdF
bGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmlu
Z0VsZW1lbnQpOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBpZiBBIGFuZCBCIGhhdmUgZGlmZmVyZW50
IHRyYW5zaXRpb24gZ2VuZXJhdGlvbiB2YWx1ZXMsIHNvcnQgYnkgdGhlaXIgY29ycmVzcG9uZGlu
ZyB0cmFuc2l0aW9uIGdlbmVyYXRpb24gaW4gYXNjZW5kaW5nIG9yZGVyLgpAQCAtMTA1LDExICsx
MTUsMTEgQEAgc3RhdGljIGJvb2wgY29tcGFyZUNTU0FuaW1hdGlvbnMoY29uc3QgQ1NTQW5pbWF0
aW9uJiBhLCBjb25zdCBDU1NBbmltYXRpb24mIGIpCiAgICAgYXV0byYgYk93bmluZ0VsZW1lbnQg
PSAqYi5vd25pbmdFbGVtZW50KCk7CiAKICAgICAvLyBJZiB0aGUgb3duaW5nIGVsZW1lbnQgb2Yg
QSBhbmQgQiBkaWZmZXJzLCBzb3J0IEEgYW5kIEIgYnkgdHJlZSBvcmRlciBvZiB0aGVpciBjb3Jy
ZXNwb25kaW5nIG93bmluZyBlbGVtZW50cy4KLSAgICBpZiAoJmFPd25pbmdFbGVtZW50ICE9ICZi
T3duaW5nRWxlbWVudCkKKyAgICBpZiAoYU93bmluZ0VsZW1lbnQgIT0gYk93bmluZ0VsZW1lbnQp
CiAgICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50
UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmluZ0VsZW1l
bnQpOwogCiAgICAgLy8gU29ydCBBIGFuZCBCIGJhc2VkIG9uIHRoZWlyIHBvc2l0aW9uIGluIHRo
ZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgYW5pbWF0aW9uLW5hbWUgcHJvcGVydHkgb2YgdGhlIChj
b21tb24pIG93bmluZyBlbGVtZW50LgotICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3du
aW5nRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuY3NzQW5pbWF0aW9uTGlzdCgp
OworICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVudC5lbGVtZW50LmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2soYU93bmluZ0VsZW1lbnQucHNldWRvSWQpLmNzc0FuaW1h
dGlvbkxpc3QoKTsKICAgICBBU1NFUlQoY3NzQW5pbWF0aW9uTGlzdCk7CiAgICAgQVNTRVJUKCFj
c3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXgg
YmYzODg0YjA0MzY3OTVhYTVmNjBhYjg0MzhkZmNhNzk3M2QwMWI4Yy4uMjc1YjVkNzU4OTdhNGFh
NGMxMTIwOGI3MDAyYzkwNTVmYjc1YmM0NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjI4
Myw3ICsyMjgzLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxU
eXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIKIAogICAgIFJlZlB0cjxGcmFt
ZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lID0g
ZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAgIHRpbWVsaW5lLT5lbGVtZW50
V2FzUmVtb3ZlZCgqdGhpcyk7CisgICAgICAgIHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCh7
ICp0aGlzLCBwc2V1ZG9JZCgpIH0pOwogCiAjaWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5H
KQogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpKSB7CkBAIC0zODAzLDQyICszODAzLDQy
IEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSogRWxlbWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2
ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYKIAotRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBF
bGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgpIGNvbnN0CitFbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAog
ewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJhcmVEYXRhKCktPmVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/
IGVsZW1lbnRSYXJlRGF0YSgpLT5hbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkgOiBudWxscHRy
OwogfQogCi1FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlv
blJhcmVEYXRhKCkKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUVs
ZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7CisgICAgcmV0dXJuIGVu
c3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKTsK
IH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVudDo6a2V5ZnJhbWVFZmZlY3RTdGFjaygp
IGNvbnN0CitLZXlmcmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0YWNr
KFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRh
ID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFu
aW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEt
PmtleWZyYW1lRWZmZWN0U3RhY2soKTsKICAgICByZXR1cm4gbnVsbHB0cjsKIH0KIAotS2V5ZnJh
bWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpCitLZXlm
cmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50OjplbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVk
b0lkIHBzZXVkb0lkKQogewotICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFy
ZURhdGEocHNldWRvSWQpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKIH0KIAotYm9vbCBF
bGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdAorYm9vbCBFbGVtZW50OjpoYXNLZXlm
cmFtZUVmZmVjdHMoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGFu
aW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgpKSB7CisgICAgaWYgKGF1dG8qIGFuaW1h
dGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpIHsKICAgICAgICAgaWYgKGF1
dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBhbmltYXRpb25EYXRhLT5rZXlmcmFtZUVmZmVjdFN0
YWNrKCkpCiAgICAgICAgICAgICByZXR1cm4ga2V5ZnJhbWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0
cygpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25J
bXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVF
ZmZlY3RzKFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiB7CiAg
ICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gaW1wYWN0OwogCi0gICAgZm9yIChjb25zdCBh
dXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuc29ydGVkRWZmZWN0cygp
KSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0
YWNrKHBzZXVkb0lkKS5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgQVNTRVJUKGVmZmVjdC0+
YW5pbWF0aW9uKCkpOwogICAgICAgICBlZmZlY3QtPmFuaW1hdGlvbigpLT5yZXNvbHZlKHRhcmdl
dFN0eWxlKTsKIApAQCAtMzg1Miw3MiArMzg1Miw3MiBAQCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1w
YWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5
bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKLWNvbnN0IEFuaW1hdGlvbkNvbGxlY3Rpb24qIEVs
ZW1lbnQ6OmFuaW1hdGlvbnMoKSBjb25zdAorY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogRWxl
bWVudDo6YW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0
byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFu
aW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVy
biAmYW5pbWF0aW9uRGF0YS0+YW5pbWF0aW9ucygpOwogICAgIHJldHVybiBudWxscHRyOwogfQog
Ci1ib29sIEVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5zaXRpb25zRm9yUHJvcGVydHkoQ1NTUHJv
cGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK2Jvb2wgRWxlbWVudDo6aGFzQ29tcGxldGVkVHJhbnNp
dGlvbnNGb3JQcm9wZXJ0eShQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVE
YXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRhLT5jb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGZhbHNlOwog
fQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1By
b3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0
aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkIHBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
KSBjb25zdAogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURh
dGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBz
ZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEtPnJ1bm5pbmdUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQog
Ci1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucygpIGNvbnN0Citib29sIEVsZW1l
bnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAg
ICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYg
KGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAg
ICAgIHJldHVybiAhYW5pbWF0aW9uRGF0YS0+cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgp
LmlzRW1wdHkoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFuaW1hdGlvbkNvbGxlY3Rpb24m
IEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMoKQorQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVu
dDo6ZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zKCk7CisgICAgcmV0dXJuIGVuc3VyZUFu
aW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zKCk7CiB9CiAKLUNTU0FuaW1hdGlv
bkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorQ1NTQW5p
bWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1
ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5h
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CiB9CiAKLXZvaWQg
RWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0
aW9uJiYgYW5pbWF0aW9ucykKK3ZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1h
cmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmIGFuaW1hdGlv
bnMpCiB7Ci0gICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5zZXRBbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOworICAgIGVuc3VyZUFuaW1hdGlvblJhcmVE
YXRhKHBzZXVkb0lkKS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0
aW9ucykpOwogfQogCi1Qcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgRWxlbWVudDo6ZW5zdXJlQ29t
cGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK1Byb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBF
bGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQgcHNl
dWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkuY29tcGxldGVk
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVE
YXRhKHBzZXVkb0lkKS5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKIH0KIAotUHJv
cGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5
UHJvcGVydHkoKQorUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJu
IGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgp
OworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkucnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQogCi1jb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6
bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpIGNvbnN0Citjb25zdCBSZW5kZXJTdHlsZSogRWxl
bWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QK
IHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkp
CiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRhLT5sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0TGFzdFN0eWxl
Q2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYgc3R5
bGUpCit2b2lkIEVsZW1lbnQ6OnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRvSWQg
cHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsK
LSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAg
aWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAg
ICAgICAgIGFuaW1hdGlvbkRhdGEtPnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92
ZShzdHlsZSkpOwogICAgIGVsc2UgaWYgKHN0eWxlKQotICAgICAgICBlbnN1cmVBbmltYXRpb25S
YXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwor
ICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkuc2V0TGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKICNpZiBFTkFCTEUoUkVTSVpFX09C
U0VSVkVSKQpAQCAtNDU0Miw4ICs0NTQyLDggQEAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+
PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb24KICAg
ICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8
V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKLSAgICBpZiAoa2V5ZnJhbWVFZmZlY3RTdGFjaygp
KSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWZmZWN0IDoga2V5ZnJhbWVFZmZlY3RTdGFjaygpLT5z
b3J0ZWRFZmZlY3RzKCkpIHsKKyAgICBpZiAoYXV0byogZWZmZWN0U3RhY2sgPSBrZXlmcmFtZUVm
ZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKSkgeworICAgICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6
IGVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgICAgIGlmIChlZmZlY3Qt
PmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5h
cHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmlu
ZGV4IGY2NTE5MzdhNjAxYjdiYjUyNmU2YjFiMGVhMjNmZGVjNGJhMzNhMTguLjYxMWUxMTA4ZDFj
ZWUwZjYzMWE3Nzg3MzQ2YWU5NWFiMjA4NGI2MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDg2
LDIzICs0ODYsMjQgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2Vz
KCkgeyBjbGVhck5vZGVGbGFnKE5vZGVGbGFnOjpIYXNQZW5kaW5nUmVzb3VyY2VzKTsgfQogICAg
IHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsgfTsKIAotICAgIEtleWZyYW1l
RWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25zdDsKLSAgICBLZXlmcmFtZUVm
ZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7Ci0gICAgYm9vbCBoYXNLZXlm
cmFtZUVmZmVjdHMoKSBjb25zdDsKLSAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBs
eUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYpOwotCi0gICAgY29uc3QgQW5pbWF0aW9uQ29s
bGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0OwotICAgIGJvb2wgaGFzQ29tcGxldGVkVHJhbnNp
dGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsKLSAgICBib29sIGhhc1J1bm5p
bmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQpIGNvbnN0OwotICAgIGJvb2wg
aGFzUnVubmluZ1RyYW5zaXRpb25zKCkgY29uc3Q7Ci0gICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYg
ZW5zdXJlQW5pbWF0aW9ucygpOwotICAgIFByb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVD
b21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKLSAgICBQcm9wZXJ0eVRvVHJhbnNpdGlv
bk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwotICAgIENTU0FuaW1h
dGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKLSAgICB2b2lkIHNl
dEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmKTsKLQot
ICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCkgY29uc3Q7
Ci0gICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBSZW5kZXJTdHlsZT4mJik7CisgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayoga2V5ZnJhbWVF
ZmZlY3RTdGFjayhQc2V1ZG9JZCkgY29uc3Q7CisgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayYgZW5z
dXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCk7CisgICAgYm9vbCBoYXNLZXlmcmFtZUVm
ZmVjdHMoUHNldWRvSWQpIGNvbnN0OworICAgIE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFw
cGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkLCBSZW5kZXJTdHlsZSYpOworCisgICAgY29uc3Qg
QW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgYm9v
bCBoYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBz
ZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5p
bWF0aW9ucyhQc2V1ZG9JZCk7CisKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJl
Q29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KFBzZXVkb0lkKTsKKyAgICBQcm9wZXJ0eVRv
VHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShQc2V1ZG9J
ZCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1
cChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFBzZXVk
b0lkLCBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOworCisgICAgY29uc3QgUmVuZGVyU3R5bGUq
IGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRvSWQpIGNvbnN0OworICAgIHZvaWQgc2V0
TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0
IFJlbmRlclN0eWxlPiYmKTsKIAogI2lmIEVOQUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29s
IGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxhZyhO
b2RlRmxhZzo6Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk7IH0KQEAgLTcxNiw4ICs3MTcsOCBA
QCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7
CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVtZW50UmFyZURhdGEoKTsKIAotICAgIEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURhdGEoKSBjb25zdDsKLSAgICBF
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7CisgICAg
RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBhbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCkgY29u
c3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0
YShQc2V1ZG9JZCk7CiAKICAgICB2aXJ0dWFsIGludCBkZWZhdWx0VGFiSW5kZXgoKSBjb25zdDsK
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAppbmRleCBlNzJmMzJjOTFmNzQ4
YmExNmNmNTIzNTNiMzg1Y2NlYTllNTdlZjEyLi42MjQ2NTUwNDVmYTlkZDU0MzgxZDY0NDcyZGYw
NjE4ODk2MmVmZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVE
YXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcApAQCAt
MzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1l
bnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXpp
bmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOwotICAgIHZvaWQqIHBv
aW50ZXJzWzExXTsKKyAgICBIYXNoTWFwPFBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhPiwgV1RGOjpJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdF
bnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+IGFuaW1hdGlvblJhcmVEYXRhOworICAgIHZvaWQqIHBv
aW50ZXJzWzEwXTsKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQogICAgIHZvaWQq
IGludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRS
YXJlRGF0YS5oCmluZGV4IDFhMzVlNWZjMjExNDRkYmViYmZkOTkxNGY4NGExMTgwNDZiYjEzYzku
LjVlNzVjYjczYjI2MTg1NWU3YWI3MGM5MTU1YmFkZjIzNDc5Nzc3NzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIEludFBv
aW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24o
SW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlv
bjsgfQogCi0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBlbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOyB9Ci0gICAgRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpOworICAgIEVsZW1l
bnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQpIGNvbnN0Owor
ICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNl
dWRvSWQpOwogCiAgICAgRE9NVG9rZW5MaXN0KiBwYXJ0TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1f
cGFydExpc3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhcnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxE
T01Ub2tlbkxpc3Q+IHBhcnRMaXN0KSB7IG1fcGFydExpc3QgPSBXVEZNb3ZlKHBhcnRMaXN0KTsg
fQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fcmVzaXplT2JzZXJ2
ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpSZXNpemVPYnNlcnZlcik7
CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgIGlmICgh
bV9hbmltYXRpb25SYXJlRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVz
ZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8
IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQ
c2V1ZG9FbGVtZW50cyk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVu
aXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRhPiBtX3Jlc2l6ZU9ic2VydmVyRGF0YTsKICNlbmRp
ZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4gbV9hbmlt
YXRpb25SYXJlRGF0YTsKKyAgICBIYXNoTWFwPFBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8RWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhPiwgV1RGOjpJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJv
bmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+IG1fYW5pbWF0aW9uUmFyZURhdGE7CiAKICAgICBS
ZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQ
c2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVudDsKQEAgLTIzNywxMSArMjM3LDE5IEBA
IGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6c2V0VW51c3VhbFRhYkluZGV4KGludCB0YWJJ
bmRleCkKICAgICBtX3VudXN1YWxUYWJJbmRleCA9IHRhYkluZGV4OwogfQogCi1pbmxpbmUgRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKCkKK2lubGluZSBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnRSYXJlRGF0
YTo6YW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYg
KCFtX2FuaW1hdGlvblJhcmVEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblJhcmVEYXRhID0gbWFr
ZVVuaXF1ZTxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+KCk7Ci0gICAgcmV0dXJuICptX2FuaW1h
dGlvblJhcmVEYXRhLmdldCgpOworICAgIGF1dG8gaXQgPSBtX2FuaW1hdGlvblJhcmVEYXRhLmZp
bmQocHNldWRvSWQpOworICAgIGlmIChpdCA9PSBtX2FuaW1hdGlvblJhcmVEYXRhLmVuZCgpKQor
ICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworfQor
CitpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lkIHBzZXVkb0lkKQoreworICAgIHJldHVybiAqbV9h
bmltYXRpb25SYXJlRGF0YS5lbnN1cmUocHNldWRvSWQsIFtdIHsKKyAgICAgICAgcmV0dXJuIG1h
a2VVbmlxdWU8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52
YWx1ZS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1Bz
ZXVkb0VsZW1lbnQuY3BwCmluZGV4IGRhZDE1NjZjYzA2YTNkMTRkNmJjYjdjNTA3NmVjYzE4YjZj
N2E3NjcuLjA2YzU3MDc4OTE4ZWMzMThkODc2MzZjNTgyZGFiMDdkNTI1Njg2Y2EgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQc2V1ZG9F
bGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246
OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQoKS5wYWdlKCksICp0aGlzKTsKIAogICAg
IGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdUaW1lbGluZSgpKQotICAg
ICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoKnRoaXMpOworICAgICAgICB0aW1lbGlu
ZS0+ZWxlbWVudFdhc1JlbW92ZWQoU3R5bGVhYmxlKCptX2hvc3RFbGVtZW50LCBwc2V1ZG9JZCgp
KSk7CiAgICAgCiAgICAgbV9ob3N0RWxlbWVudCA9IG51bGxwdHI7CiB9CkBAIC0xMDIsOCArMTAy
LDEwIEBAIGJvb2wgUHNldWRvRWxlbWVudDo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJT
dHlsZSYgc3R5bGUpCiAKIGJvb2wgUHNldWRvRWxlbWVudDo6aXNUYXJnZXRlZEJ5S2V5ZnJhbWVF
ZmZlY3RSZXF1aXJpbmdQc2V1ZG9FbGVtZW50KCkKIHsKLSAgICBpZiAoYXV0byogc3RhY2sgPSBr
ZXlmcmFtZUVmZmVjdFN0YWNrKCkpCi0gICAgICAgIHJldHVybiBzdGFjay0+cmVxdWlyZXNQc2V1
ZG9FbGVtZW50KCk7CisgICAgaWYgKG1faG9zdEVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHN0YWNrID0gbV9ob3N0RWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RTdGFjayhwc2V1ZG9JZCgpKSkK
KyAgICAgICAgICAgIHJldHVybiBzdGFjay0+cmVxdWlyZXNQc2V1ZG9FbGVtZW50KCk7CisgICAg
fQogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXggZjE2N2MzYjJjYzJlMDJjN2E2YTE1YjYw
OGM3YmFjZmE2ZmY2MDU4Yi4uMjI4MDhkYTlmMjlmOTUzMjMzMzdjYTM3OGFiM2I3YWY4YjMwMjEy
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmpl
Y3QuY3BwCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0Ojpo
YXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byog
bm9kZSA9IGVsZW1lbnQoKSkgewogICAgICAgICBpZiAoYXV0byogdGltZWxpbmUgPSBub2RlLT5k
b2N1bWVudCgpLmV4aXN0aW5nVGltZWxpbmUoKSkKLSAgICAgICAgICAgIHJldHVybiB0aW1lbGlu
ZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVtZW50QXJlQWxsQWNjZWxlcmF0ZWQoKm5vZGUpOwor
ICAgICAgICAgICAgcmV0dXJuIHRpbWVsaW5lLT5ydW5uaW5nQW5pbWF0aW9uc0ZvclJlbmRlcmVy
QXJlQWxsQWNjZWxlcmF0ZWQoKnRoaXMpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAKaW5kZXggZGZkMGJkOTkx
MDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0ODAyYi4uMDI4MjQ3MGJlMzk0MWIxN2EyZGI1MTVj
ZGZmNDhmODdhZDM0YWFiMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1Jl
bmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVt
ZW50LmNwcApAQCAtMjMwNSw0ICsyMzA1LDExIEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHls
ZT4gUmVuZGVyRWxlbWVudDo6YW5pbWF0ZWRTdHlsZSgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0K
IAorT3B0aW9uYWw8U3R5bGVhYmxlPiBSZW5kZXJFbGVtZW50OjpzdHlsZWFibGUoKSBjb25zdAor
eworICAgIGlmIChhdXRvKiBlbGVtZW50ID0gdGhpcy0+ZWxlbWVudCgpKQorICAgICAgICByZXR1
cm4gU3R5bGVhYmxlKCplbGVtZW50LCBlbGVtZW50LT5wc2V1ZG9JZCgpKTsKKyAgICByZXR1cm4g
V1RGOjpudWxsb3B0OworfQorCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1l
bnQuaAppbmRleCBiYTM0OGI3YTUzOTA4ZjkxMDlkNzVhNDRmZTBlYmFhMTc1ZDU1NDg2Li41MWQy
ODdlMjMzMWM1Mzk5MWMwYzZhM2Q5M2I3MjliMTQ3M2MyZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkxl
bmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0
eWxlYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKQEAgLTY2LDYgKzY3LDcgQEAgcHVi
bGljOgogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVt
ZW50PihSZW5kZXJPYmplY3Q6Om5vZGUoKSk7IH0KICAgICBFbGVtZW50KiBub25Qc2V1ZG9FbGVt
ZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxlbWVudD4oUmVuZGVyT2JqZWN0Ojpub25Q
c2V1ZG9Ob2RlKCkpOyB9CiAgICAgRWxlbWVudCogZ2VuZXJhdGluZ0VsZW1lbnQoKSBjb25zdDsK
KyAgICBPcHRpb25hbDxTdHlsZWFibGU+IHN0eWxlYWJsZSgpIGNvbnN0OwogCiAgICAgUmVuZGVy
T2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAg
UmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCBmMjM5YzRhNDQ4MGFlZTcyYTM5MmIzNmM1MjQ1YjdjZDQxZDYyZDM3Li43ZTg5NTRm
NDU3NzI3NTRhNDg3ZTcwYzcwM2I4YWZkODY5NjU4YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk1OSw4ICsyOTU5
LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JB
bmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJp
Z2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1hdGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewot
ICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RT
dGFjaygpKSB7CisgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCkp
IHsKKyAgICAgICAgaWYgKGF1dG8qIGVmZmVjdHNTdGFjayA9IHN0eWxlYWJsZS0+ZWxlbWVudC5r
ZXlmcmFtZUVmZmVjdFN0YWNrKHN0eWxlYWJsZS0+cHNldWRvSWQpKSB7CiAgICAgICAgICAgICBy
ZXR1cm4gKGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9w
ZXJ0eU9wYWNpdHkpCiAgICAgICAgICAgICAgICAgJiYgKHVzZXNDb21wb3NpdGluZygpIHx8ICht
X2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1hdGVkT3BhY2l0eVRyaWdn
ZXIpKSkKICAgICAgICAgICAgICAgICB8fCBlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0
aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpCkBAIC0zNDk0LDggKzM0OTQsOCBAQCBib29s
IFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uKFJlbmRl
ckxheWVyTW9kZWxPYmplY3QmCiAgICAgaWYgKCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hy
b21lQ2xpZW50OjpBbmltYXRpb25UcmlnZ2VyKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0g
ICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50KCkpIHsKLSAgICAgICAgaWYg
KGF1dG8qIGVmZmVjdHNTdGFjayA9IGVsZW1lbnQtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkKKyAg
ICBpZiAoYXV0byBzdHlsZWFibGUgPSByZW5kZXJlci5zdHlsZWFibGUoKSkgeworICAgICAgICBp
ZiAoYXV0byogZWZmZWN0c1N0YWNrID0gc3R5bGVhYmxlLT5lbGVtZW50LmtleWZyYW1lRWZmZWN0
U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkpCiAgICAgICAgICAgICByZXR1cm4gZWZmZWN0c1N0
YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5k
ZXJTdHlsZUNvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVu
ZGVyU3R5bGVDb25zdGFudHMuY3BwCmluZGV4IGU3NGM0MTI1NjMyMjg1ZGMzMDA5Y2U0MzQwOTAw
MjliMWE3ZGJmZDYuLjBjMTI1NzU4ODAyODc5YzBlMDUxOTAzMzBjNGQ2NjhmZGE5ZjNlOTUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0
YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxl
Q29uc3RhbnRzLmNwcApAQCAtOTQzLDYgKzk0Myw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwo
VGV4dFN0cmVhbSYgdHMsIFBzZXVkb0lkIHBzZXVkb0lkKQogICAgIGNhc2UgUHNldWRvSWQ6Ok5v
bmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6Rmlyc3RMaW5lOiB0
cyA8PCAiZmlyc3QtbGluZSI7IGJyZWFrOwogICAgIGNhc2UgUHNldWRvSWQ6OkZpcnN0TGV0dGVy
OiB0cyA8PCAiZmlyc3QtbGV0dGVyIjsgYnJlYWs7CisgICAgY2FzZSBQc2V1ZG9JZDo6SGlnaGxp
Z2h0OiB0cyA8PCAiaGlnaGxpZ2h0IjsgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6TWFya2Vy
OiB0cyA8PCAibWFya2VyIjsgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOiB0cyA8
PCAiYmVmb3JlIjsgYnJlYWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6QWZ0ZXI6IHRzIDw8ICJhZnRl
ciI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNTY0ZGQ1ZDViMDJjMGMxN2NmOWJkNzlmYmVk
YzEwNzI1M2JmNzk3MS4uNThlY2RmM2FhYTEwNDRjMGViZmY5MjZhMjE2MWMzMWNjYjY5MjE1NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCkBAIC01NTgsMTQgKzU1OCwxNCBAQCB2b2lkIFJlbmRlclRyZWVVcGRh
dGVyOjp0ZWFyRG93blJlbmRlcmVycyhFbGVtZW50JiByb290LCBUZWFyZG93blR5cGUgdGVhcmRv
d25UeQogICAgICAgICAgICAgY2FzZSBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2Vs
aW5nQW5pbWF0aW9uczoKICAgICAgICAgICAgICAgICBpZiAodGltZWxpbmUpIHsKICAgICAgICAg
ICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlbmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKQotICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9u
c0ZvckVsZW1lbnQoZWxlbWVudCwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKKyAgICAg
ICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5jYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNG
b3JTdHlsZWFibGUoeyBlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkgfSwgV2ViQW5pbWF0aW9u
OjpTaWxlbnRseTo6WWVzKTsKICAgICAgICAgICAgICAgICAgICAgZWxzZSBpZiAodGVhcmRvd25U
eXBlID09IFRlYXJkb3duVHlwZTo6UmVuZGVyZXJVcGRhdGVDYW5jZWxpbmdBbmltYXRpb25zKQot
ICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0
aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6Tm8pOworICAg
ICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9u
c0ZvclN0eWxlYWJsZSh7IGVsZW1lbnQsIGVsZW1lbnQucHNldWRvSWQoKSB9LCBXZWJBbmltYXRp
b246OlNpbGVudGx5OjpObyk7CiAgICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJy
ZWFrOwogICAgICAgICAgICAgY2FzZSBUZWFyZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlOgogICAg
ICAgICAgICAgICAgIGlmICh0aW1lbGluZSkKLSAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUt
PndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoZWxlbWVudCk7CisgICAgICAgICAgICAgICAg
ICAgIHRpbWVsaW5lLT53aWxsQ2hhbmdlUmVuZGVyZXJGb3JTdHlsZWFibGUoeyBlbGVtZW50LCBl
bGVtZW50LnBzZXVkb0lkKCkgfSk7CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCA1
OWRhNDFlZGFhYWQ5OGVmZDk3N2I5ZDQ3Njc2MWI3NjU2YjYyYmIxLi4yMTE2NDQzNzc0NTJjMWQ2
ODM4N2JiNDFjM2E0NWI3ODExOTE0OGQ5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuY3BwCkBAIC0yMTcsNyArMjE3LDcgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJl
c29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBlbGVtZW50KQogICAgICAgICBtX2RvY3Vt
ZW50LnNldEhhc05vZGVzV2l0aE5vbkZpbmFsU3R5bGUoKTsKICAgICB9CiAKLSAgICBhdXRvIHVw
ZGF0ZSA9IGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKG5ld1N0eWxlKSwgZWxl
bWVudCwgcGFyZW50KCkuY2hhbmdlKTsKKyAgICBhdXRvIHVwZGF0ZSA9IGNyZWF0ZUFuaW1hdGVk
RWxlbWVudFVwZGF0ZShXVEZNb3ZlKG5ld1N0eWxlKSwgeyBlbGVtZW50LCBQc2V1ZG9JZDo6Tm9u
ZSB9LCBwYXJlbnQoKS5jaGFuZ2UpOwogICAgIGF1dG8gZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBj
b21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUodXBkYXRlLmNoYW5nZSwgZWxlbWVudC5zdHlsZVZh
bGlkaXR5KCksIHBhcmVudCgpLmRlc2NlbmRhbnRzVG9SZXNvbHZlKTsKIAogICAgIGlmICgmZWxl
bWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVudCgpKSB7CkBAIC0yNzcsNyArMjc3LDcg
QEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50
JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXAKICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJl
cklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAhaGFzQW5pbWF0aW9ucykKICAgICAgICAg
cmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RG
TW92ZShwc2V1ZG9TdHlsZSksIGVsZW1lbnQuZW5zdXJlUHNldWRvRWxlbWVudChwc2V1ZG9JZCks
IGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKKyAgICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50
VXBkYXRlKFdURk1vdmUocHNldWRvU3R5bGUpLCB7IGVsZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1l
bnRVcGRhdGUuY2hhbmdlKTsKIH0KIAogY29uc3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6
cGFyZW50Qm94U3R5bGUoKSBjb25zdApAQCAtMzA2LDkgKzMwNiwyMyBAQCBjb25zdCBSZW5kZXJT
dHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZUZvclBzZXVkbyhjb25zdCBFbGVtZW50
VXBkYXRlJiBlbAogICAgIH0KIH0KIAotRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0
ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0
eWxlLCBFbGVtZW50JiBlbGVtZW50LCBDaGFuZ2UgcGFyZW50Q2hhbmdlKQorRWxlbWVudFVwZGF0
ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9w
dHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ2hh
bmdlIHBhcmVudENoYW5nZSkKIHsKLSAgICBhdXRvKiBvbGRTdHlsZSA9IGVsZW1lbnQucmVuZGVy
T3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOworICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUu
ZWxlbWVudDsKKworICAgIC8vIEZJWE1FOiBJZGVhbGx5IHdlIGNvdWxkIGp1c3QgY2FsbCBFbGVt
ZW50OjpyZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCkgd2l0aCBhIFBzZXVkb0lkCisgICAg
Ly8gYW5kIGdldCB0aGUgc3R5bGUgZm9yIGFueSBQc2V1ZG9JZCwgbm90IGp1c3QgUHNldWRvSWQ6
OkJlZm9yZSBvciBQc2V1ZG9JZDo6QWZ0ZXIuCisgICAgYXV0byogcHNldWRvRWxlbWVudCA9IFtz
dHlsZWFibGVdKCkgLT4gUHNldWRvRWxlbWVudCogeworICAgICAgICBzd2l0Y2ggKHN0eWxlYWJs
ZS5wc2V1ZG9JZCkgeworICAgICAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6CisgICAgICAgICAg
ICByZXR1cm4gc3R5bGVhYmxlLmVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpOworICAgICAg
ICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKKyAgICAgICAgICAgIHJldHVybiBzdHlsZWFibGUuZWxl
bWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAg
IHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAgfSgpOworICAgIGF1dG8qIG9sZFN0eWxl
ID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1lbnQtPnJlbmRlck9yRGlzcGxheUNvbnRlbnRz
U3R5bGUoKSA6IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwogCiAgICAg
T3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gYW5pbWF0aW9uSW1wYWN0OwogCkBAIC0zMTcsMTYg
KzMzMSwxNiBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVt
ZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdAogICAgIC8vIGluIGNhc2Ugbm8gV2Vi
IEFuaW1hdGlvbnMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhyb3VnaCB0aGUgSlMgQVBJLgogICAgIGlm
IChlbGVtZW50LmRvY3VtZW50KCkuYmFja0ZvcndhcmRDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6
Ok5vdEluQmFja0ZvcndhcmRDYWNoZSAmJiAhZWxlbWVudC5kb2N1bWVudCgpLnJlbmRlclZpZXco
KS0+cHJpbnRpbmcoKSkgewogICAgICAgICBpZiAob2xkU3R5bGUgJiYgKG9sZFN0eWxlLT5oYXNU
cmFuc2l0aW9ucygpIHx8IG5ld1N0eWxlLT5oYXNUcmFuc2l0aW9ucygpKSkKLSAgICAgICAgICAg
IG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoZWxl
bWVudCwgKm9sZFN0eWxlLCAqbmV3U3R5bGUpOworICAgICAgICAgICAgbV9kb2N1bWVudC50aW1l
bGluZSgpLnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgKm9sZFN0
eWxlLCAqbmV3U3R5bGUpOwogCiAgICAgICAgIC8vIFRoZSBvcmRlciBpbiB3aGljaCBDU1MgVHJh
bnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25zIGFyZSB1cGRhdGVkIG1hdHRlcnMgc2luY2UgQ1NT
IFRyYW5zaXRpb25zIGRlZmluZSB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxlCiAgICAgICAgIC8vIHRv
IHVzZSBDU1MgQW5pbWF0aW9ucyBhcyBkZWZpbmVkIGluIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFu
Z2UgZXZlbnQuIEFzIHN1Y2gsIHdlIHVwZGF0ZSBDU1MgQW5pbWF0aW9ucyBhZnRlciBDU1MgVHJh
bnNpdGlvbnMKICAgICAgICAgLy8gc3VjaCB0aGF0IHdoZW4gQ1NTIFRyYW5zaXRpb25zIGFyZSB1
cGRhdGVkIHRoZSBDU1MgQW5pbWF0aW9ucyBkYXRhIGlzIHRoZSBzYW1lIGFzIGR1cmluZyB0aGUg
cHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LgogICAgICAgICBpZiAoKG9sZFN0eWxlICYmIG9s
ZFN0eWxlLT5oYXNBbmltYXRpb25zKCkpIHx8IG5ld1N0eWxlLT5oYXNBbmltYXRpb25zKCkpIHsK
LSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhpcyBoYWNrIGFuZCBwYXNzIHRoZSBwYXJl
bnQgc3R5bGUgdmlhIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50LgorICAgICAgICAgICAg
Ly8gRklYTUU6IFJlbW92ZSB0aGlzIGhhY2sgYW5kIHBhc3MgdGhlIHBhcmVudCBzdHlsZSB2aWEg
dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0eWxlYWJsZS4KICAgICAgICAgICAgIHNjb3BlKCkucmVz
b2x2ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxlRm9yS2V5ZnJhbWVzKCZwYXJlbnQoKS5zdHlsZSk7
CiAKLSAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVDU1NBbmltYXRpb25z
Rm9yRWxlbWVudChlbGVtZW50LCBvbGRTdHlsZSwgKm5ld1N0eWxlKTsKKyAgICAgICAgICAgIG1f
ZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVDU1NBbmltYXRpb25zRm9yU3R5bGVhYmxlKHN0eWxl
YWJsZSwgb2xkU3R5bGUsICpuZXdTdHlsZSk7CiAKICAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2
ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxlRm9yS2V5ZnJhbWVzKG51bGxwdHIpOwogICAgICAgICB9
CkBAIC0zMzQsMTUgKzM0OCwxNSBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRl
QW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdAogCiAgICAgLy8g
Tm93IHdlIGNhbiB1cGRhdGUgYWxsIFdlYiBhbmltYXRpb25zLCB3aGljaCB3aWxsIGluY2x1ZGUg
Q1NTIEFuaW1hdGlvbnMgYXMgd2VsbAogICAgIC8vIGFzIGFuaW1hdGlvbnMgY3JlYXRlZCB2aWEg
dGhlIEpTIEFQSS4KLSAgICBpZiAoZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkgeworICAg
IGlmIChlbGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0cyhzdHlsZWFibGUucHNldWRvSWQpKSB7CiAg
ICAgICAgIC8vIFJlY29yZCB0aGUgc3R5bGUgcHJpb3IgdG8gYXBwbHlpbmcgYW5pbWF0aW9ucyBm
b3IgdGhpcyBzdHlsZSBjaGFuZ2UgZXZlbnQuCi0gICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxl
Q2hhbmdlRXZlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxlKSk7CisgICAg
ICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdHlsZWFibGUucHNldWRv
SWQsIFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpKTsKICAgICAgICAgLy8gQXBwbHkg
YWxsIGtleWZyYW1lIGVmZmVjdHMgdG8gdGhlIG5ldyBzdHlsZS4KICAgICAgICAgYXV0byBhbmlt
YXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdTdHlsZSk7Ci0gICAgICAgIGFu
aW1hdGlvbkltcGFjdCA9IGVsZW1lbnQuYXBwbHlLZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5
bGUpOworICAgICAgICBhbmltYXRpb25JbXBhY3QgPSBlbGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKHN0eWxlYWJsZS5wc2V1ZG9JZCwgKmFuaW1hdGVkU3R5bGUpOwogICAgICAgICBuZXdTdHls
ZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7CiAgICAgfSBlbHNlCi0gICAgICAgIGVsZW1lbnQu
c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShudWxscHRyKTsKKyAgICAgICAgZWxlbWVudC5z
ZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKHN0eWxlYWJsZS5wc2V1ZG9JZCwgbnVsbHB0cik7
CiAKICAgICBpZiAoYW5pbWF0aW9uSW1wYWN0KQogICAgICAgICBBZGp1c3Rlcjo6YWRqdXN0QW5p
bWF0ZWRTdHlsZSgqbmV3U3R5bGUsIHBhcmVudEJveFN0eWxlKCksIGFuaW1hdGlvbkltcGFjdCk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIv
U291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAppbmRleCAxYWZjOWE4YmJm
NTlhNzI3ZDM1NWM2Mzc1NDg1MzE3YmE0NWVhYTljLi5jMjk3MzQyZmVlODU0OTRhOWE2YWJkMWNl
OTgyOGQ5NzcyMjNjMTE4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRy
ZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVy
LmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJTdHlsZUNoYW5nZS5oIgogI2luY2x1ZGUg
IlN0eWxlU2hhcmluZ1Jlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVVcGRhdGUuaCIKKyNpbmNs
dWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlIDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3
dGYvUmVmLmg+CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHJpdmF0ZToKIAogICAgIEVsZW1lbnRVcGRh
dGVzIHJlc29sdmVFbGVtZW50KEVsZW1lbnQmKTsKIAotICAgIEVsZW1lbnRVcGRhdGUgY3JlYXRl
QW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEVsZW1l
bnQmLCBDaGFuZ2UpOworICAgIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBk
YXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5n
ZSk7CiAgICAgRWxlbWVudFVwZGF0ZSByZXNvbHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0
IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3Vu
dGVkPFNjb3BlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUu
aCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2OGIyMmJh
N2M4YmQ5M2NiZTZiOTA0YjQ0OTAwNWZmZmE1MDNhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29w
eXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBS
ZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9y
IHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRo
ZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9u
cyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2Ug
dGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9u
cyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlv
biBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4K
KyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycn
IEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJV
VCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRB
QklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NM
QUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMg
QkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwK
KyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VS
VklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5U
RVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklM
SVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAo
SU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VU
IE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUg
UE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNs
dWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2Ns
YXNzIEVsZW1lbnQ7CisKK3N0cnVjdCBTdHlsZWFibGUgeworICAgIEVsZW1lbnQmIGVsZW1lbnQ7
CisgICAgUHNldWRvSWQgcHNldWRvSWQ7CisKKyAgICBTdHlsZWFibGUoRWxlbWVudCYgZWxlbWVu
dCwgUHNldWRvSWQgcHNldWRvSWQpCisgICAgICAgIDogZWxlbWVudChlbGVtZW50KQorICAgICAg
ICAsIHBzZXVkb0lkKHBzZXVkb0lkKQorICAgIHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9y
PT0oY29uc3QgU3R5bGVhYmxlJiBvdGhlcikgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAo
JmVsZW1lbnQgPT0gJm90aGVyLmVsZW1lbnQgJiYgcHNldWRvSWQgPT0gb3RoZXIucHNldWRvSWQp
OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBTdHlsZWFibGUmIG90aGVyKSBj
b25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5n
ZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlMWNlYmQ5MzExNTM2ODM3MThiZjM1
YmYzZDNhYTVhYTQzYjliZWM3Li5lMjY3ODFkODY2Y2IxNTlmZDU4MjAxODY0NDAxY2Q0M2NhNTBl
NTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAtMDktMjQgIEFudG9pbmUgUXVpbnQgIDxn
cmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSByZWxpYW5jZSBvbiBQc2V1
ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9C
T0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGEgY291cGxlIG9mIHRlc3RzIHdoaWNoIHJl
bGllZCBvbiBhbiBpbnRlcm5hbHMgbWV0aG9kIHRvIGdldCBhIHBzZXVkbyBlbGVtZW50IGFuZCBp
bnN0ZWFkIHVzZQorICAgICAgICB0aGUgV2ViIEFuaW1hdGlvbnMgQVBJIHRvIGRldGVybWluZSB3
aGV0aGVyIGEgZ2l2ZW4gYW5pbWF0aW9uIHRhcmdldHMgYSBwc2V1ZG8tZWxlbWVudC4gVGhpcyBo
YXMgdGhlCisgICAgICAgIGFkZGVkIGJlbmVmaXQgb2YgaGF2aW5nIHRoZSBzYW1lIGNvZGUgcnVu
IGluIGEgdGVzdGluZyBlbnZpcm9ubWVudCBhcyBpbiBhIHJlZ3VsYXIgYnJvd3Nlci4KKworICAg
ICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbDoK
KyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5o
dG1sOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAg
ICAgICAgd2ViIGF1ZGlvIGFwaSBvdXRwdXRzIHNpbGVuY2UgZm9yIDMwMiByZWRpcmVjdGVkIHJl
c291cmNlIGluIHNhZmFyaQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0No
YW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOTYzNWNi
MTliNjViZDdkNjRlYTExMTQxNTI2MzU3NmE5NWEyYzVhMC4uNTBiZjk1ZDM5MzY2MzVkMGI3ZWM4
YjllYzM2Y2YxNDM3NDZlZmUxYyAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0x
LDMgKzEsMTQgQEAKKzIwMjAtMDktMjQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5v
cmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSByZWxpYW5jZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRo
ZSBhbmltYXRpb24gY29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MjE2OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgTWFyayBhIFdQVCB0ZXN0IHByb2dyZXNzaW9uLgorCisgICAgICAgICogd2ViLXBs
YXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAy
LWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wOS0yNCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxp
YS5jb20+CiAKICAgICAgICAgUmVzeW5jIFdQVCdzIG1hdGhtbCBhbmQgbWF0aC1zY3JpcHQtbGV2
ZWwtYW5kLW1hdGgtc3R5bGUgdGVzdHMKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zh
c3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbAppbmRleCBlMzA4
NjVhYTMzY2ZmYmEyOWZiNjAzMzljMjYwMzRmMGNjZGFmOGM3Li4yY2I0M2Q5YTUyMDljZTZlMDNm
YTVkZTQ1Nzc0NWIxZGU0MWM0OTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMv
ZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sCkBAIC03OCwx
NyArNzgsMTAgQEAgZnVuY3Rpb24gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpCiAvLyBGSVhNRTog
VGhpcyB0ZXN0IHNob3VsZCBiZSBtb2RpZmllZCBzbyBzdWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9m
ZiBieSBvbmUKIC8vIGJlbG93IGFuZCBpdCBubyBsb25nZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRv
LgogCi1mdW5jdGlvbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRp
b25OYW1lLCB0aW1lLCBlbGVtZW50LCBwc2V1ZG9JZCkKK2Z1bmN0aW9uIHBhdXNlQW5pbWF0aW9u
QXRUaW1lT25Qc2V1ZG9FbGVtZW50KGFuaW1hdGlvbk5hbWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVk
b0VsZW1lbnQpCiB7Ci0gICAgY29uc3QgcHNldWRvRWxlbWVudCA9IGludGVybmFscy5wc2V1ZG9F
bGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnQpIHsKLSAg
ICAgICAgY29uc29sZS5sb2coIkZhaWxlZCB0byBmaW5kIHBzZXVkbyBlbGVtZW50Iik7Ci0gICAg
ICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBhbmltYXRpb25zID0gcHNldWRvRWxlbWVu
dC5nZXRBbmltYXRpb25zKCk7Ci0gICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGFuaW1hdGlvbnMp
IHsKLSAgICAgICAgaWYgKGFuaW1hdGlvbiBpbnN0YW5jZW9mIENTU0FuaW1hdGlvbiAmJiBhbmlt
YXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmltYXRpb25OYW1lICYmIGFuaW1hdGlvbi5lZmZlY3Qu
Z2V0S2V5ZnJhbWVzKCkubGVuZ3RoKSB7CisgICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGVsZW1l
bnQuZ2V0QW5pbWF0aW9ucyh7IHN1YnRyZWU6IHRydWUgfSkpIHsKKyAgICAgICAgaWYgKGFuaW1h
dGlvbiBpbnN0YW5jZW9mIENTU0FuaW1hdGlvbiAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFtZSA9
PSBhbmltYXRpb25OYW1lICYmIGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYg
YW5pbWF0aW9uLmVmZmVjdC5wc2V1ZG9FbGVtZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAg
ICAgICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAg
YW5pbWF0aW9uLnBhdXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5LDM1ICs5
MiwyMCBAQCBmdW5jdGlvbiBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChhbmlt
YXRpb25OYW1lLCB0aW1lLCBlbGVtZW50LCBwc2V1ZAogCiBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9u
KGlkKQogeworICAgIGNvbnN0IHBzZXVkb0VsZW1lbnQgPSBgOjoke2lkfWA7CiAgICAgdmFyIGRp
diA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBkaXYuY2xhc3NOYW1lID0gJ2Fu
aW1hdGUnOwogICAgIHdpbmRvdy5kaXYgPSBkaXY7CiAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRX
aWR0aCcsICc1MicpOwotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgIHBhdXNl
QW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCdleGFtcGxlJywgMS4wLCBkaXYsIGlkKTsK
LSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAg
ICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICBzaG91
bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAgcGF1c2VBbmltYXRp
b25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ2V4YW1wbGUnLCAyLjAsIGRpdiwgaWQpOwotICAgICAg
ICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgY29t
cHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgIHNob3VsZEJlQ2xv
c2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRo
aXMgd2lsbCBiZSBmbGFreSwgYnV0IGl0J3MgYSByZWFzb25hYmxlIGFwcHJveGltYXRpb24gZm9y
IHRlc3RpbmcKLSAgICAgICAgLy8gaW4gYSBicm93c2VyIGluc3RlYWQgb2YgRFJULgotICAgICAg
ICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsK
LSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOwot
ICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAg
ICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAg
fSwgMTAwMCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3
aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0
V2lkdGgnLCAxMiwgMSk7Ci0gICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1
dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAy
MDAsIDEpOwotICAgICAgICB9LCAyMDAwKTsKLSAgICB9CisKKyAgICBwYXVzZUFuaW1hdGlvbkF0
VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScsIDEuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsK
KyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKKyAgICBjb21w
dXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8o
J2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKKyAgICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRv
RWxlbWVudCgnZXhhbXBsZScsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRC
ZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdl
dFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9w
JywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1s
IGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRp
b24uaHRtbAppbmRleCA5YTc0MmZlOGExNmZkZjMwMDQ5ZmY3MTEyMzYxNjQzZWJiOWQyYTg2Li5i
YzRhMTZiYzRlNDc3MjdlOTNiZTJkMjFiZWQ3NGM4ODRjNTBiZDdkIDEwMDY0NAotLS0gYS9MYXlv
dXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1s
CisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFu
c2l0aW9uLmh0bWwKQEAgLTU2LDYzICs1Niw0MSBAQCBmdW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRl
ZFRvcChpZCkKIGNvbnN0IHByZWZpeCA9ICItd2Via2l0LSI7CiBjb25zdCBwcm9wZXJ0aWVzUmVx
dWlyaW5nUHJlZml4ID0gWyItd2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIiwgIi13ZWJraXQtdGV4
dC1maWxsLWNvbG9yIl07CiAKLWZ1bmN0aW9uIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRv
RWxlbWVudCh0cmFuc2l0aW9uUHJvcGVydHksIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0lkKQorZnVu
Y3Rpb24gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KHRyYW5zaXRpb25Qcm9w
ZXJ0eSwgdGltZSwgZWxlbWVudCwgcHNldWRvRWxlbWVudCkKIHsKLSAgICBjb25zdCBwc2V1ZG9F
bGVtZW50ID0gaW50ZXJuYWxzLnBzZXVkb0VsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQpOwotICAg
IGlmICghcHNldWRvRWxlbWVudCkgewotICAgICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHRvIGZp
bmQgcHNldWRvIGVsZW1lbnQiKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICh0
cmFuc2l0aW9uUHJvcGVydHkuc3RhcnRzV2l0aChwcmVmaXgpICYmICFwcm9wZXJ0aWVzUmVxdWly
aW5nUHJlZml4LmluY2x1ZGVzKHRyYW5zaXRpb25Qcm9wZXJ0eSkpCiAgICAgICAgIHRyYW5zaXRp
b25Qcm9wZXJ0eSA9IHRyYW5zaXRpb25Qcm9wZXJ0eS5zdWJzdHIocHJlZml4Lmxlbmd0aCk7CiAK
LSAgICAvLyBPdGhlcndpc2UsIHVzZSB0aGUgV2ViIEFuaW1hdGlvbnMgQVBJLgotICAgIGNvbnN0
IGFuaW1hdGlvbnMgPSBwc2V1ZG9FbGVtZW50LmdldEFuaW1hdGlvbnMoKTsKLSAgICBmb3IgKGxl
dCBhbmltYXRpb24gb2YgYW5pbWF0aW9ucykgewotICAgICAgICBpZiAoYW5pbWF0aW9uIGluc3Rh
bmNlb2YgQ1NTVHJhbnNpdGlvbiAmJiBhbmltYXRpb24udHJhbnNpdGlvblByb3BlcnR5ID09IHRy
YW5zaXRpb25Qcm9wZXJ0eSkgeworICAgIGZvciAobGV0IGFuaW1hdGlvbiBvZiBlbGVtZW50Lmdl
dEFuaW1hdGlvbnMoeyBzdWJ0cmVlOiB0cnVlIH0pKSB7CisgICAgICAgIGlmIChhbmltYXRpb24g
aW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uICYmIGFuaW1hdGlvbi50cmFuc2l0aW9uUHJvcGVydHkg
PT0gdHJhbnNpdGlvblByb3BlcnR5ICYmIGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0ID09IGVsZW1l
bnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5wc2V1ZG9FbGVtZW50ID09IHBzZXVkb0VsZW1lbnQpIHsK
ICAgICAgICAgICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IHRpbWUgKiAxMDAwOwogICAgICAg
ICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAg
ICAgfQogICAgIH0KKwogICAgIGNvbnNvbGUubG9nKGBBIHRyYW5zaXRpb24gZm9yIHByb3BlcnR5
ICR7dHJhbnNpdGlvblByb3BlcnR5fSBjb3VsZCBub3QgYmUgZm91bmRgKTsKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKIGZ1bmN0aW9uIHRlc3RUcmFuc2l0aW9uKGlkKQogeworICAgIGNvbnN0IHBz
ZXVkb0VsZW1lbnQgPSBgOjoke2lkfWA7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1l
bnRCeUlkKGlkKTsKICAgICBkaXYuY2xhc3NOYW1lID0gJ3RyYW5zaXRpb24nOwogICAgIHdpbmRv
dy5kaXYgPSBkaXY7CiAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9u
UHNldWRvRWxlbWVudCgnd2lkdGgnLCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNs
b3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBjb21w
dXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9z
ZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7Ci0gICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGlt
ZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRC
ZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBj
b21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVD
bG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8g
VGhpcyB3aWxsIGJlIGZsYWt5LCBidXQgaXQncyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBm
b3IgdGVzdGluZwotICAgICAgICAvLyBpbiBhIGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCi0gICAg
ICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2
OwotICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7
Ci0gICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAg
ICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwotICAgICAg
ICB9LCAxMDAwKTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAg
IHdpbmRvdy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZz
ZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29t
cHV0ZWRUb3AoaWQpOwotICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcs
IDIwMCwgMSk7Ci0gICAgICAgIH0sIDIwMDApOwotICAgIH0KKworICAgIHBhdXNlVHJhbnNpdGlv
bkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7
CisgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7CisgICAgcGF1
c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAxLjAsIGRpdiwgcHNldWRv
RWxlbWVudCk7CisgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Cisg
ICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7CisgICAgcGF1c2VUcmFu
c2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd3aWR0aCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVt
ZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAg
ICBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDIuMCwgZGl2LCBw
c2V1ZG9FbGVtZW50KTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlk
KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAogb25s
b2FkID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mv
d2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1l
bnQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhw
ZWN0ZWQudHh0CmluZGV4IGQwOTZkZTRkNTVkOTA2M2RiMDFkNzg5NTZmODgyMWRhYTllYmE3ZGEu
LjNiODdhOGRjOGUwZDIyODllNzU1OTgwMGFjNThkNDhhZmVlYTE1NjEgMTAwNjQ0Ci0tLSBhL0xh
eW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0
aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRl
c3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9u
b24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1I
YXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBUcmFuc2l0
aW9ucyBvbiA6OmJlZm9yZS86OmFmdGVyIHBzZXVkby1lbGVtZW50cyBhcmUgY2FuY2VsZWQgd2hl
biB0aGUgY29udGVudCBwcm9wZXJ0eSBpcyBjbGVhcmVkIFRlc3QgdGltZWQgb3V0CitQQVNTIFRy
YW5zaXRpb25zIG9uIDo6YmVmb3JlLzo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGFyZSBjYW5jZWxl
ZCB3aGVuIHRoZSBjb250ZW50IHByb3BlcnR5IGlzIGNsZWFyZWQgCiAK
</data>
<flag name="commit-queue"
          id="425347"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409592</attachid>
            <date>2020-09-24 10:25:47 -0700</date>
            <delta_ts>2020-09-24 11:23:15 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216931-20200924192545.patch</filename>
            <type>text/plain</type>
            <size>118683</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0NTEzZGVmZjUxYjE0
YTFkMTQ5MGEyNGE5MDllYjdjMTY0ZjhkNy4uZjlmYWVmNDMwNTMwMDY1OTM4NTExZmQ3OGQ2NTA3
MTY0ODgxOGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NyBAQAorMjAyMC0wOS0yNCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJl
bGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIHNvIGZhciByZWxp
ZWQgb24gUHNldWRvRWxlbWVudCBhcyBhIGZvdW5kYXRpb24gZm9yIHN1cHBvcnRpbmcgYW5pbWF0
aW9ucyBvZiBwc2V1ZG8tZWxlbWVudHMuIFRoaXMgaXMgbm90IGEKKyAgICAgICAgZ3JlYXQgY2hv
aWNlIHNpbmNlIFBzZXVkb0VsZW1lbnQgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gOjpiZWZvcmUg
YW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIG9ubHkuIFRoaXMgcGF0Y2gKKyAgICAgICAgcmVm
YWN0b3JzIGFuaW1hdGlvbi1yZWxhdGVkIGNvZGUgdG8gcmVseSBvbiBQc2V1ZG9FbGVtZW50IGFz
IGxpdHRsZSBhcyBwb3NzaWJsZSB3aXRob3V0IG1ha2luZyBjaGFuZ2VzIG91dHNpZGUKKyAgICAg
ICAgb2YgdGhlIGFuaW1hdGlvbiBjb2RlLCBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkcyBzdXBwb3J0
aW5nIGFuaW1hdGlvbiBvZiBtb3JlIHBzZXVkby1lbGVtZW50cy4KKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgYSBuZXcgc3RydWN0IFN0eWxlYWJsZSB3aGljaCBjb21iaW5lcyBhbiBF
bGVtZW50JiBhbmQgUHNldWRvSWQuIFdlIHVzZSB0aGlzIHN0cnVjdCBpbnN0ZWFkCisgICAgICAg
IG9mIEVsZW1lbnQgb2JqZWN0cyB3aGVyZXZlciBuZWNlc3NhcnkgaW4gdGhlIGFuaW1hdGlvbiBj
b2RlLiBPbiB0b3Agb2YgdGhhdCwgd2UgYWRkIGEgUHNldWRvSWQgcGFyYW1ldGVyIHRvIGFsbCB0
aGUKKyAgICAgICAgRWxlbWVudCBtZXRob2RzIHdyYXBwaW5nIGFjY2VzcyB0byBFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEgYW5kIHVzZSBhIEhhc2hNYXA8UHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0
cjxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+PgorICAgICAgICB0byBiZSBhYmxlIHRvIHNlcGFy
YXRlIGFuaW1hdGlvbiBkYXRhIHBlciBwc2V1ZG8tZWxlbWVudC4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNBZGRlZFRvU3R5bGVhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJv
bVN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3Zl
RGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlN
YXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVsZW1lbnRXYXNS
ZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdl
UmVuZGVyZXJGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzaG91bGRDb25zaWRlckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjprZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHls
ZWFibGVBbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJv
bUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6
OndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRl
Q1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0FuaW1hdGlvbjo6Q1NTQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RyYW5zaXRpb246OkNTU1RyYW5zaXRpb24pOgorICAgICAgICAqIGFuaW1hdGlvbi9D
U1NUcmFuc2l0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpEZWNsYXJhdGl2
ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3du
aW5nRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlv
bjo6ZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
bGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFy
YXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudCk6CisgICAgICAgICogYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uQ2Fu
QmVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRp
b25EaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpjb21w
dXRlRXh0ZW50T2ZBbmltYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9u
UmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5p
bWF0ZWRTdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpydW5uaW5nQW5pbWF0aW9uc0Zv
ckVsZW1lbnRBcmVBbGxBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudE9yUHNldWRvRWxlbWVudEZvclN0
eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVy
c2hpcCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0U3R5bGVhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpzZXRUYXJnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldFBzZXVkb0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldFN0eWxlYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpkaWRDaGFuZ2VUYXJnZXRFbGVt
ZW50T3JQc2V1ZG9FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFN0YWNrOjphZGRFZmZlY3QpOgorICAg
ICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
QW5pbWF0aW9uOjpzZXRFZmZlY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmlt
YXRpb246OnNldFRpbWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZWZm
ZWN0VGFyZ2V0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cGVy
c2lzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcyk6Cisg
ICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9X
ZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZURlY2xh
cmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0luRG9jdW1lbnRUcmVlT3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNTU1RyYW5zaXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXBhcmVDU1NBbmltYXRpb25zKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmtleWZyYW1lRWZmZWN0U3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXND
b21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldExhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QW5pbWF0aW9ucyk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmNw
cDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjplbnN1cmVBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNl
dWRvRWxlbWVudDo6Y2xlYXJIb3N0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50Ojppc1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVpcmluZ1BzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzUnVubmluZ0FjY2VsZXJhdGVkQW5p
bWF0aW9ucyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cmVzb2x2ZVBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVz
b2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZSk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OlN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpvcGVyYXRvciE9IGNvbnN0KToKKwogMjAyMC0wOS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBNb3ZlIHByb3h5
IHNldHRpbmdzIGZyb20gV2ViS2l0Q29udGV4dCB0byBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IDQ2NTliZGUyMjhhMGJmMDYzYmM5MGNjYzA2MmU3MTQ0MGZi
ZjNjNmQuLjAxNGM1ZWYxZDFkMTE5ZGFhYjc3ODQwZjA3YmJjYTY4OTlhYWM0OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQpAQCAtMTQ5OSw2ICsxNDk5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHN0eWxlL1N0eWxlU2NvcGUuaAogICAgIHN0eWxlL1N0eWxlVXBk
YXRlLmgKICAgICBzdHlsZS9TdHlsZVZhbGlkaXR5LmgKKyAgICBzdHlsZS9TdHlsZWFibGUuaAog
CiAgICAgc3ZnL1NWR0xlbmd0aENvbnRleHQuaAogICAgIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2Y1ZjExMTIzNGU1MDFlNTM4NWIxNDNlMWVmZTUxNGE4NTliMTgyNC4uMjI5YTEwNTgwNzc2
YjdjZTQ0ZWIyZDliMWY5ZDMwNDI2NjczMDc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEyNyw2ICsyMTI3LDcgQEAKIAkJ
NzEzMTcxMzQxRkJFNzhEQjAwRjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzE3MTMyMUZC
RTc4QzUwMEY3NThERSAvKiBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEzMjQ0NTEyMDEwOURBNTAw
QUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzMjQ0NEYyMDEwOUQ5QjAwQUU3RkIyIC8qIFdlYkFu
aW1hdGlvblV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2
QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcxMzkyMkJFMjUxOEFCNzcwMDVEQjND
MiAvKiBTdHlsZWFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxMzkyMkJDMjUxOEFCNzAwMDVEQjNDMiAvKiBTdHlsZWFibGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTNGMUQ1QTIzREYxRDhE
MDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRB
bmltYXRpb25zT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxM0YxRDVEMjNERjI1ODIwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MTNGMUQ1QjIzREYyNTYwMDAzRjVFRkEgLyogSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyB9
OwogCQk3MTQ5NUREQjIwMkIwNkYxMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNDk1RERBMjAyQjA2REUw
MEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC05NzU0LDYgKzk3NTUsNyBAQAogCQk3MTMyNDQ0RjIwMTA5
RDlCMDBBRTdGQjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHTGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
eWxlYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNFNzBBRjE3MzNFOEIz
MDBBMjJEMDAgLyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxM0YxRDU3MjNERjFEN0QwMDNGNUVGQSAv
KiBHZXRBbmltYXRpb25zT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0QW5p
bWF0aW9uc09wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1
OTIzREYxRDdEMDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0QW5pbWF0aW9uc09wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDAwLDYgKzI4NDAyLDcgQEAKIAkJCQlBNzlCQUQ5RTE2MUU3
RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJFNjUyIC8q
IFJ1bGVTZXQuaCAqLywKKwkJCQk3MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxl
LmggKi8sCiAJCQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3Bw
ICovLAogCQkJCUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8s
CiAJCQkJRTRBQkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBA
IC0zMjc4MSw3ICszMjc4NCw5IEBACiAJCQkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExh
eW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1
MjNGMjY4RUMwMEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhG
RTAwRkE0MzQ1IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5h
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExh
eW91dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3RTRF
QkMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1
RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMy
ODI2LDcgKzMyODMxLDYgQEAKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhF
MDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJB
MTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUU0MDNCN0EyMjUxQjExOTMwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91
dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVu
UGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY5NSw3ICszMzY5OSw2IEBACiAJCQkJMjI4QzI4
NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxl
QXJlYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExh
eW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgw
RjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBp
biBIZWFkZXJzICovLApAQCAtMzM5MzUsNiArMzM5MzgsNyBAQAogCQkJCTlCNkM0MTUzMTM0NDk0
OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MTM5MjJCRTI1MThBQjc3MDA1REIzQzIgLyogU3R5bGVhYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVB
ZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8q
IFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQz
QkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNzRjMDY1NGE1N2M3
YjAyMTRmODk2Y2YyNDZlM2U3NDQxZDU2ZTY0Yi4uMzdiYzliNWEzNWRhNjVjZjdhNmQ5YWFhN2M4
YmE1MTc1ZjI1OWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZWxpbmUuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODAsOSArODEsOSBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjpyZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJU
KCFhbmltYXRpb24udGltZWxpbmUoKSB8fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsK
ICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFt
ZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldEVs
ZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3Zl
ZEZyb21FbGVtZW50KGFuaW1hdGlvbiwgKnRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKmRvd25jYXN0PEtleWZyYW1l
RWZmZWN0PihhbmltYXRpb24uZWZmZWN0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gc3R5bGVhYmxl
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldFN0
eWxlYWJsZSgpKSB7CisgICAgICAgICAgICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJs
ZShhbmltYXRpb24sICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVtZW50
LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkucmVtb3ZlRWZm
ZWN0KCpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVjdCgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC05NSw5ICs5Niw5IEBAIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0
aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQogICAgIHJldHVybiBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZSgqdGltZSk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVt
ZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRU
b1N0eWxlYWJsZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgU3R5bGVhYmxlJiBzdHls
ZWFibGUpCiB7Ci0gICAgZWxlbWVudC5lbnN1cmVBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24p
OworICAgIHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZUFuaW1hdGlvbnMoc3R5bGVhYmxlLnBzZXVk
b0lkKS5hZGQoJmFuaW1hdGlvbik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCByZW1vdmVDU1NU
cmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9uJiB0cmFuc2l0aW9uLCBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5KQpAQCAtMTEwLDM3ICsxMTEsMzkg
QEAgc3RhdGljIGlubGluZSBib29sIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1RyYW5z
aXRpb24mIHRyYW5zaXRpb24sIFByb3BlcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
bmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoV2ViQW5pbWF0aW9uJiBhbmltYXRp
b24sIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQogewotICAgIGVsZW1lbnQuZW5zdXJlQW5p
bWF0aW9ucygpLnJlbW92ZSgmYW5pbWF0aW9uKTsKKyAgICBzdHlsZWFibGUuZWxlbWVudC5lbnN1
cmVBbmltYXRpb25zKHN0eWxlYWJsZS5wc2V1ZG9JZCkucmVtb3ZlKCZhbmltYXRpb24pOwogCiAg
ICAgLy8gTm93LCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiwgd2UgcmVt
b3ZlIGl0IGZyb20gdGhlIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3Bl
cnR5SUQgbWFwLgogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgQ1NTIEFuaW1h
dGlvbnMgYmVjYXVzZSB0aGVpciB0aW1pbmcgY2FuIGJlIHNldCB2aWEgQ1NTIHRvIGVuZCwgd2hp
Y2ggd291bGQgY2F1c2UgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0IHRo
ZXkgc2hvdWxkIHJlbWFpbiBhc3NvY2lhdGVkIHdpdGggdGhlaXIgb3duaW5nIGVsZW1lbnQgdW50
aWwgdGhpcyBpcyBjaGFuZ2VkIHZpYSBhIGNhbGwKICAgICAvLyB0byB0aGUgSlMgQVBJIG9yIGNo
YW5naW5nIHRoZSB0YXJnZXQgZWxlbWVudCdzIGFuaW1hdGlvbi1uYW1lIHByb3BlcnR5LgogICAg
IGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pKQotICAgICAgICByZW1vdmVEZWNsYXJh
dGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoYW5pbWF0aW9uLCBlbGVtZW50
KTsKKyAgICAgICAgcmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdF
bGVtZW50KGFuaW1hdGlvbiwgc3R5bGVhYmxlKTsKIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdl
YkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25U
aW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVt
ZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkK
IHsKICAgICBBU1NFUlQoaXM8RGVjbGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbikpOwogCiAg
ICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikpIHsKICAgICAgICAgYXV0byYgdHJh
bnNpdGlvbiA9IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbik7Ci0gICAgICAgIGlm
ICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5lbnN1cmVS
dW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTVHJh
bnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkoKSk7CisgICAgICAgIGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21N
YXAodHJhbnNpdGlvbiwgc3R5bGVhYmxlLmVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eShzdHlsZWFibGUucHNldWRvSWQpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Ry
YW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZUNvbXBs
ZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShzdHlsZWFibGUucHNldWRvSWQpKTsKICAgICB9CiB9
CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1h
cmt1cChFbGVtZW50JiBlbGVtZW50LCBDU1NBbmltYXRpb24mIGNzc0FuaW1hdGlvbikKK3ZvaWQg
QW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChjb25z
dCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTQW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCiB7Ci0g
ICAgZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkucmVtb3ZlKCZjc3NBbmltYXRp
b24pOworICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUuZWxlbWVudDsKKyAgICBhdXRvIHBz
ZXVkb0lkID0gc3R5bGVhYmxlLnBzZXVkb0lkOworICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cChwc2V1ZG9JZCkucmVtb3ZlKCZjc3NBbmltYXRpb24pOwogCi0gICAgaWYgKCFl
bGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0cygpKQorICAgIGlmICghZWxlbWVudC5oYXNLZXlmcmFt
ZUVmZmVjdHMocHNldWRvSWQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBrZXlmcmFt
ZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAg
YXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjayhwc2V1ZG9JZCk7CiAgICAgYXV0byogY3NzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZm
ZWN0U3RhY2suY3NzQW5pbWF0aW9uTGlzdCgpOwogICAgIGlmICghY3NzQW5pbWF0aW9uTGlzdCB8
fCBjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1Niwz
MyArMTU5LDMzIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNy
ZWF0ZWRCeU1hcmt1cChFbGVtZW50JiBlbGVtZW50LCBDU1NBCiAgICAgfQogfQogCi12b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjplbGVtZW50V2FzUmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQordm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVhYmxlJiBz
dHlsZWFibGUpCiB7Ci0gICAgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChl
bGVtZW50LCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOworICAgIGNhbmNlbERlY2xhcmF0
aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShzdHlsZWFibGUsIFdlYkFuaW1hdGlvbjo6U2lsZW50
bHk6Olllcyk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJl
ckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6Ondp
bGxDaGFuZ2VSZW5kZXJlckZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkK
IHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpKSB7Cisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUuZWxlbWVudC5hbmltYXRpb25zKHN0
eWxlYWJsZS5wc2V1ZG9JZCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24g
OiAqYW5pbWF0aW9ucykKICAgICAgICAgICAgIGFuaW1hdGlvbi0+d2lsbENoYW5nZVJlbmRlcmVy
KCk7CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFdlYkFuaW1hdGlvbjo6U2ls
ZW50bHkgc2lsZW50bHkpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIFdlYkFu
aW1hdGlvbjo6U2lsZW50bHkgc2lsZW50bHkpCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMg
PSBlbGVtZW50LmFuaW1hdGlvbnMoKSkgeworICAgIGlmIChhdXRvKiBhbmltYXRpb25zID0gc3R5
bGVhYmxlLmVsZW1lbnQuYW5pbWF0aW9ucyhzdHlsZWFibGUucHNldWRvSWQpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogKmFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChp
czxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlm
IChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92
ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRp
b24+KCphbmltYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9u
Q3JlYXRlZEJ5TWFya3VwKHN0eWxlYWJsZSwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0
aW9uKSk7CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5jYW5jZWwoc2lsZW50bHkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDb25z
aWRlckFuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50LCBjb25zdCBBbmlt
YXRpb24mIGFuaW1hdGlvbikKK3N0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmICgh
YW5pbWF0aW9uLmlzVmFsaWRBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTkzLDIxICsxOTYsMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxl
bWVudCYgZWxlbWVudE9yUHNldWRvRWxlbWVudCwgY29uc3QgQW5pbWEKICAgICBpZiAobmFtZSA9
PSBhbmltYXRpb25OYW1lTm9uZSB8fCBuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byYgZWxlbWVudCA9IGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQpID8gKmRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQpLmhvc3RFbGVtZW50KCkgOiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50OwotCiAgICAgaWYg
KGF1dG8qIHN0eWxlU2NvcGUgPSBTdHlsZTo6U2NvcGU6OmZvck9yZGluYWwoZWxlbWVudCwgYW5p
bWF0aW9uLm5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlU2Nv
cGUtPnJlc29sdmVyKCkuaXNBbmltYXRpb25OYW1lVmFsaWQobmFtZSk7CiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFi
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkKIHsKLSAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1
cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5l
bGVtZW50OworICAgIGF1dG8gcHNldWRvSWQgPSBzdHlsZWFibGUucHNldWRvSWQ7CisgICAgYXV0
byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
ayhwc2V1ZG9JZCk7CiAKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0
aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0
aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3Vy
cmVudFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY3NzQW5p
bWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkpCisgICAgICAgIGZv
ciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3Vw
KHBzZXVkb0lkKSkKICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7
CiAgICAgICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChudWxscHRy
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIyMiw3IEBAIHZvaWQgQW5pbWF0aW9uVGlt
ZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gbmV3
QW5pbWF0aW9uczsKLSAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1h
dGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBl
bGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAocHNldWRvSWQpOwogCiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1hbmltYXRpb25zLTEvI2FuaW1hdGlvbnMKICAgICAvLyBU
aGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUgbmFtZSBtYXkgYmUgcmVwZWF0ZWQgd2l0aGluIGFuIGFu
aW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRvIHRoZSBhbmltYXRpb24tbmFtZSB1cGRhdGUgZXhpc3Rp
bmcKQEAgLTI1MSw3ICsyNTQsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NB
bmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2hpbmdBbmltYXRpb24pCi0gICAgICAg
ICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQoQ1NTQW5pbWF0aW9uOjpjcmVhdGUoZWxlbWVudCwg
Y3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOworICAgICAgICAgICAg
ICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1hdGlvbjo6Y3JlYXRlKHN0eWxlYWJsZSwgY3Vy
cmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yNjMsMTQgKzI2NiwxNCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdU
Rk1vdmUobmV3QW5pbWF0aW9ucykpOworICAgIGVsZW1lbnQuc2V0QW5pbWF0aW9uc0NyZWF0ZWRC
eU1hcmt1cChwc2V1ZG9JZCwgV1RGTW92ZShuZXdBbmltYXRpb25zKSk7CiAKICAgICBrZXlmcmFt
ZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlvbkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOwog
fQogCi1zdGF0aWMgS2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFBy
b3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMg
S2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGNvbnN0
IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogewotICAgIGlm
IChhdXRvKiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNr
KCkpIHsKKyAgICBpZiAoYXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IHN0eWxlYWJsZS5lbGVt
ZW50LmtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLnBzZXVkb0lkKSkgewogICAgICAgICBh
dXRvIGVmZmVjdHMgPSBrZXlmcmFtZUVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCk7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWZmZWN0IDogbWFrZVJldmVyc2VkUmFuZ2UoZWZmZWN0cykp
IHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGVzUHJvcGVydHkocHJvcGVydHkpKQpA
QCAtMzM5LDExICszNDIsMTkgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0
aWVzSW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hTZXQKICAgICB9CiB9CiAK
LXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
Y29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5
bGVhYmxlJiBzdHlsZWFibGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0
eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKIHsKLSAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9
IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5KTsK
KyAgICBhdXRvJiBlbGVtZW50ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CisgICAgYXV0byBwc2V1ZG9J
ZCA9IHN0eWxlYWJsZS5wc2V1ZG9JZDsKKyAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGtleWZy
YW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KHN0eWxlYWJsZSwgcHJvcGVydHkpOwogICAg
IGF1dG8qIGFuaW1hdGlvbiA9IGtleWZyYW1lRWZmZWN0ID8ga2V5ZnJhbWVFZmZlY3QtPmFuaW1h
dGlvbigpIDogbnVsbHB0cjsKLSAgICBib29sIGlzRGVjbGFyYXRpdmUgPSBhbmltYXRpb24gJiYg
aXM8RGVjbGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8RGVjbGFyYXRp
dmVBbmltYXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSA9PSAmZWxlbWVudDsKKwor
ICAgIGJvb2wgaXNEZWNsYXJhdGl2ZSA9IGZhbHNlOworICAgIGlmIChpczxEZWNsYXJhdGl2ZUFu
aW1hdGlvbj4oYW5pbWF0aW9uKSkgeworICAgICAgICBpZiAoYXV0byBvd25pbmdFbGVtZW50ID0g
ZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQo
KSkKKyAgICAgICAgICAgIGlzRGVjbGFyYXRpdmUgPSAqb3duaW5nRWxlbWVudCA9PSBzdHlsZWFi
bGU7CisgICAgfQorCiAgICAgaWYgKGFuaW1hdGlvbiAmJiAhaXNEZWNsYXJhdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNTgsOCArMzY5LDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUK
IAogICAgIC8vIEEgQ1NTIFRyYW5zaXRpb24gbWlnaHQgaGF2ZSBjb21wbGV0ZWQgc2luY2UgdGhl
IGxhc3QgdGltZSBhbmltYXRpb25zIHdlcmUgdXBkYXRlZCBzbyB3ZSBtdXN0CiAgICAgLy8gdXBk
YXRlIHRoZSBydW5uaW5nIGFuZCBjb21wbGV0ZWQgdHJhbnNpdGlvbnMgbWVtYmVyc2hpcCBpbiB0
aGF0IGNhc2UuCi0gICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgbWF0Y2hp
bmdCYWNraW5nQW5pbWF0aW9uICYmIGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJv
cGVydHkocHJvcGVydHkpICYmIGFuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9u
OjpQbGF5U3RhdGU6OkZpbmlzaGVkKSB7Ci0gICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVk
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS50YWtlKHByb3BlcnR5KSk7CisgICAgaWYgKGlzPENT
U1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVs
ZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHNldWRvSWQsIHByb3BlcnR5
KSAmJiBhbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpG
aW5pc2hlZCkgeworICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQ
cm9wZXJ0eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFu
c2l0aW9uc0J5UHJvcGVydHkocHNldWRvSWQpLnRha2UocHJvcGVydHkpKTsKICAgICAgICAgYW5p
bWF0aW9uID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTM3Nyw3ICszODgsNyBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShF
bGVtZW50JiBlbGVtZQogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB1c2Ug
dGhlIHJlY29yZGVkIFJlbmRlclN0eWxlIGZvciB0aGlzIGVsZW1lbnQgZHVyaW5nIGEgcHJldmlv
dXMgY2FsbCB0byBTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRh
dGUoKS4KLSAgICAgICAgaWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVt
ZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoKSkKKyAgICAgICAgaWYgKGF1dG8qIGxhc3RT
dHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVtZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUo
cHNldWRvSWQpKQogICAgICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbGFzdFN0
eWxlQ2hhbmdlRXZlbnRTdHlsZSk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjb21wdXRl
ZCBzdHlsZXMgZnJvbSBhbmltYXRpb25zIGZvciB0aGlzIGVsZW1lbnQsIHRoZSBiZWZvcmUtY2hh
bmdlIHN0eWxlIGlzIHRoZSBwcmV2aW91c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1l
bnQuCkBAIC0zOTksMTAgKzQxMCwxMCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAg
ICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKTsKICAgICB9KCk7CiAKLSAgICBp
ZiAoIWVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCisg
ICAgaWYgKCFlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lk
LCBwcm9wZXJ0eSkKICAgICAgICAgJiYgIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVz
RXF1YWwocHJvcGVydHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpCiAg
ICAgICAgICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpjYW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVk
KHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQotICAgICAg
ICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKHByb3Bl
cnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpKQorICAgICAgICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9y
VHJhbnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkpCiAgICAgICAgICYmIG1h
dGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiB0cmFuc2l0aW9uQ29tYmluZWREdXJhdGlvbihtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24pID4gMCkgewogICAgICAgICAvLyAxLiBJZiBhbGwgb2YgdGhl
IGZvbGxvd2luZyBhcmUgdHJ1ZToKICAgICAgICAgLy8gICAtIHRoZSBlbGVtZW50IGRvZXMgbm90
IGhhdmUgYSBydW5uaW5nIHRyYW5zaXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwKQEAgLTQxMiw3ICs0
MjMsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVs
ZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAvLyAgIC0gdGhlIGNvbWJp
bmVkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiAwcywKIAogICAgICAgICAvLyB0aGVuIGltcGxl
bWVudGF0aW9ucyBtdXN0IHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24gKGlmIHByZXNl
bnQpIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMKLSAgICAgICAgZWxlbWVu
dC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5yZW1vdmUocHJvcGVydHkp
OworICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShw
c2V1ZG9JZCkucmVtb3ZlKHByb3BlcnR5KTsKIAogICAgICAgICAvLyBhbmQgc3RhcnQgYSB0cmFu
c2l0aW9uIHdob3NlOgogICAgICAgICAvLyAgIC0gc3RhcnQgdGltZSBpcyB0aGUgdGltZSBvZiB0
aGUgc3R5bGUgY2hhbmdlIGV2ZW50IHBsdXMgdGhlIG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXks
CkBAIC00MjUsMjUgKzQzNiwyNSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICBh
dXRvIGR1cmF0aW9uID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9u
KCkpOwogICAgICAgICBhdXRvJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUgPSBiZWZvcmVD
aGFuZ2VTdHlsZTsKICAgICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsK
LSAgICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0
KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVy
YXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUs
IGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgfSBlbHNlIGlmIChlbGVt
ZW50Lmhhc0NvbXBsZXRlZFRyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmICFwcm9w
ZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVy
Q2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
KCkpKSB7CisgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoc3R5bGVhYmxl
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZi
ZWZvcmVDaGFuZ2VTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZl
cnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAg
ICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShw
c2V1ZG9JZCwgcHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFu
c2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29t
cGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKSkpIHsKICAgICAgICAgLy8gMi4g
T3RoZXJ3aXNlLCBpZiB0aGUgZWxlbWVudCBoYXMgYSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3Ig
dGhlIHByb3BlcnR5IGFuZCB0aGUgZW5kIHZhbHVlIG9mIHRoZSBjb21wbGV0ZWQgdHJhbnNpdGlv
biBpcyBkaWZmZXJlbnQgZnJvbQogICAgICAgICAvLyAgICB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxl
IGZvciB0aGUgcHJvcGVydHksIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRoZSBj
b21wbGV0ZWQgdHJhbnNpdGlvbiBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25z
LgotICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgp
LnJlbW92ZShwcm9wZXJ0eSk7CisgICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNp
dGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS5yZW1vdmUocHJvcGVydHkpOwogICAgIH0KIAotICAg
IGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KHByb3BlcnR5KTsKLSAgICBpZiAoKGhhc1J1bm5pbmdUcmFuc2l0aW9uIHx8
IGVsZW1lbnQuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSkpICYm
ICFtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIHsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9uID0gZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwc2V1ZG9JZCwg
cHJvcGVydHkpOworICAgIGlmICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5oYXND
b21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkpICYmICFt
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIHsKICAgICAgICAgLy8gMy4gSWYgdGhlIGVsZW1lbnQg
aGFzIGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHksIGFuZCB0aGVyZSBpcyBub3QgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXByb3BlcnR5
CiAgICAgICAgIC8vICAgIHZhbHVlLCB0aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0
aGUgcnVubmluZyB0cmFuc2l0aW9uIG9yIHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24g
ZnJvbSB0aGUgc2V0IG9mIGNvbXBsZXRlZCB0cmFuc2l0aW9ucy4KICAgICAgICAgaWYgKGhhc1J1
bm5pbmdUcmFuc2l0aW9uKQotICAgICAgICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNp
dGlvbnNCeVByb3BlcnR5KCkudGFrZShwcm9wZXJ0eSktPmNhbmNlbCgpOworICAgICAgICAgICAg
ZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS50YWtl
KHByb3BlcnR5KS0+Y2FuY2VsKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnQu
ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVtb3ZlKHByb3BlcnR5KTsK
KyAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
KHBzZXVkb0lkKS5yZW1vdmUocHJvcGVydHkpOwogICAgIH0KIAotICAgIGlmIChtYXRjaGluZ0Jh
Y2tpbmdBbmltYXRpb24gJiYgZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0
eShwcm9wZXJ0eSkgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25J
bk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KCkpKSB7Ci0gICAgICAgIGF1dG8gcHJldmlvdXNseVJ1bm5pbmdU
cmFuc2l0aW9uID0gZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCku
dGFrZShwcm9wZXJ0eSk7CisgICAgaWYgKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiBlbGVt
ZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkg
JiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0
eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KHBzZXVkb0lkKSkpIHsKKyAgICAgICAgYXV0byBwcmV2aW91c2x5UnVubmluZ1RyYW5z
aXRpb24gPSBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRv
SWQpLnRha2UocHJvcGVydHkpOwogICAgICAgICBhdXRvJiBwcmV2aW91c2x5UnVubmluZ1RyYW5z
aXRpb25DdXJyZW50U3R5bGUgPSBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmN1cnJlbnRT
dHlsZSgpOwogICAgICAgICAvLyA0LiBJZiB0aGUgZWxlbWVudCBoYXMgYSBydW5uaW5nIHRyYW5z
aXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwgdGhlcmUgaXMgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXBy
b3BlcnR5IHZhbHVlLCBhbmQgdGhlIGVuZCB2YWx1ZSBvZiB0aGUgcnVubmluZwogICAgICAgICAv
LyAgICB0cmFuc2l0aW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5
IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsIHRoZW46CkBAIC00ODEsNyArNDkyLDcgQEAgdm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJv
cGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZGVsYXkgPSBtYXRjaGluZ0Jh
Y2tpbmdBbmltYXRpb24tPmRlbGF5KCkgPCAwID8gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24tPmRlbGF5KCkpICogcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA6IFNlY29uZHMobWF0
Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxheSgpKTsKICAgICAgICAgICAgIGF1dG8gZHVyYXRp
b24gPSBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiByZXZl
cnNpbmdTaG9ydGVuaW5nRmFjdG9yOwogCi0gICAgICAgICAgICBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNy
ZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVy
Q2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxl
LCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LmVuc3Vy
ZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRvSWQpLnNldChwcm9wZXJ0eSwgQ1NT
VHJhbnNpdGlvbjo6Y3JlYXRlKHN0eWxlYWJsZSwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAq
bWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3Vy
cmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0Fk
anVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBpbXBsZW1lbnRhdGlvbnMgbXVz
dCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbgogICAgICAgICAgICAgcHJldmlvdXNseVJ1
bm5pbmdUcmFuc2l0aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKQEAgLTQ5NywxNyArNTA4LDE3IEBA
IHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vj
b25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICAgICAg
YXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gY3VycmVudFN0eWxlOwogICAgICAg
ICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsKLSAgICAgICAgICAgIGVs
ZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwg
Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwg
Km1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1
cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdB
ZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAg
ICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCku
c2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwg
Z2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVu
bmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5k
ZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZShjb25z
dCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVt
ZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwg
YWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChj
dXJyZW50U3R5bGUuaGFzVHJhbnNpdGlvbnMoKSAmJiBjdXJyZW50U3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpOb25lICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSkgewotICAgICAgICBpZiAoZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnMoKSkgewot
ICAgICAgICAgICAgYXV0byBydW5uaW5nVHJhbnNpdGlvbnMgPSBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKyAgICAgICAgaWYgKHN0eWxlYWJsZS5lbGVtZW50
Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucyhzdHlsZWFibGUucHNldWRvSWQpKSB7CisgICAgICAgICAg
ICBhdXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoc3R5bGVhYmxlLnBzZXVkb0lkKTsKICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDog
cnVubmluZ1RyYW5zaXRpb25zKQogICAgICAgICAgICAgICAgIGNzc1RyYW5zaXRpb25zQnlDU1NQ
cm9wZXJ0eUlETWFwSXRlbS52YWx1ZS0+Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIH0KQEAg
LTUzMiwxMyArNTQzLDEzIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5z
aXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICBh
dXRvIHByb3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChw
cm9wZXJ0eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQg
JiYgKmlzU2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVy
dHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgICAg
IHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoc3R5bGVhYmxlLCBw
cm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gcHJvcGVydHkgOiB0
cmFuc2l0aW9uUHJvcGVydGllcykKLSAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVt
ZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUs
IGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFi
bGVBbmRQcm9wZXJ0eShzdHlsZWFibGUsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxl
LCBnZW5lcmF0aW9uVGltZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKaW5kZXggOWQ0MmY3ODlmYjg2
MjJkOWNhMDAzZDk1YjNhYTZlOTZmOGExMGViNi4uYmUyZjZjMTViNTA3OTc4MGY5NmVkYjhlYjM4
MWQxMmYyMmUzYTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVsaW5lLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1
ZGUgIkNvbXB1dGVkRWZmZWN0VGltaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNp
bmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw3ICs0NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0FuaW1hdGlvbjsKIGNsYXNzIENTU1Ry
YW5zaXRpb247CiBjbGFzcyBEZWNsYXJhdGl2ZUFuaW1hdGlvbjsKLWNsYXNzIEVsZW1lbnQ7CiAK
IGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVGlt
ZWxpbmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QW5pbWF0aW9uVGltZWxpbmU+IHsKIHB1Ymxp
YzoKQEAgLTYxLDE4ICs2MSwxOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBiaW5k
aW5nc0N1cnJlbnRUaW1lKCk7CiAgICAgdmlydHVhbCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50
VGltZSgpIHsgcmV0dXJuIG1fY3VycmVudFRpbWU7IH0KIAotICAgIHZvaWQgZWxlbWVudFdhc1Jl
bW92ZWQoRWxlbWVudCYpOworICAgIHZvaWQgZWxlbWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVh
YmxlJik7CiAKLSAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYp
OwotICAgIHZvaWQgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSk7CisgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXJG
b3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJik7CisgICAgdm9pZCBjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiwgV2ViQW5pbWF0aW9uOjpT
aWxlbnRseSk7CiAKLSAgICB2b2lkIGFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1h
dGlvbiYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVu
dChXZWJBbmltYXRpb24mLCBFbGVtZW50Jik7CisgICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRv
U3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYsIGNvbnN0IFN0eWxlYWJsZSYpOworICAgIHZvaWQgYW5p
bWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoV2ViQW5pbWF0aW9uJiwgY29uc3QgU3R5bGVh
YmxlJik7CiAKLSAgICB2b2lkIHJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9y
T3duaW5nRWxlbWVudChXZWJBbmltYXRpb24mLCBFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVE
ZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9u
JiwgY29uc3QgU3R5bGVhYmxlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JF
bGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0
aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVDU1NBbmltYXRp
b25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKKyAgICB2b2lk
IHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0
IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25UaW1lbGluZSgpOwpAQCAtODIs
OCArODIsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQ
b3NpdGlvbihXZWJBbmltYXRpb24mKTsKLSAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
RWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJT
dHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwg
Y29uc3QgTW9ub3RvbmljVGltZSk7Ci0gICAgdm9pZCByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVk
QnlNYXJrdXAoRWxlbWVudCYsIENTU0FuaW1hdGlvbiYpOworICAgIHZvaWQgdXBkYXRlQ1NTVHJh
bnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSk7CisgICAgdm9pZCByZW1v
dmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoY29uc3QgU3R5bGVhYmxlJiwgQ1NTQW5pbWF0
aW9uJik7CiAKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4g
bV9jdXJyZW50VGltZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24u
Y3BwCmluZGV4IDcxOWQ4ZDM5NjJkZmIwMTM2MTkzMWZiNGYzNTE1YjRlNDU1MTM0MmYuLmM5MGRk
MWI5OTYyNTBiNGVhYzhkOTJkNjI3MzNiYWY1Y2E3OGFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJB
bmltYXRpb24uaCIKICNpbmNsdWRlICJBbmltYXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0zNyw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKENTU0FuaW1hdGlvbik7CiAKLVJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3Jl
YXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1h
dGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUpCitSZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShjb25zdCBTdHls
ZWFibGUmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUp
CiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0FuaW1hdGlvbihvd25pbmdF
bGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKSk7CiAgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0
eWxlLCBuZXdTdHlsZSk7CkBAIC00Nyw3ICs0Niw3IEBAIFJlZjxDU1NBbmltYXRpb24+IENTU0Fu
aW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCitDU1NBbmlt
YXRpb246OkNTU0FuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmIGVsZW1lbnQsIGNvbnN0IEFuaW1h
dGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1l
bnQsIGJhY2tpbmdBbmltYXRpb24pCiAgICAgLCBtX2FuaW1hdGlvbk5hbWUoYmFja2luZ0FuaW1h
dGlvbi5uYW1lKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5k
ZXggZTNiYzlhNjk4ODg4ZmVmNmYzYTM2ZmExZDBlZDBmNWU1YWQ2OTIzMy4uMmMwNWFiNTVhZGVk
MWM2MWE3NjdmZDg5NDM4ODliMzk4NjcxNzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb24uaApAQCAtMjYsMTkgKzI2LDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb247Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIGNsYXNzIENTU0FuaW1hdGlvbiBmaW5hbCA6IHB1YmxpYyBEZWNsYXJhdGl2
ZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NBbmltYXRpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoRWxlbWVudCYsIGNv
bnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlKTsKKyAgICBzdGF0aWMgUmVmPENTU0FuaW1hdGlvbj4gY3JlYXRlKGNv
bnN0IFN0eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAgICB+Q1NTQW5pbWF0aW9uKCkg
PSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc0NTU0FuaW1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZWZmZWN0
S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmluZGluZ3MoKTsKIAogcHJpdmF0ZToKLSAgICBDU1NBbmlt
YXRpb24oRWxlbWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIENTU0FuaW1hdGlvbihjb25z
dCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZvaWQgc3luY1Byb3BlcnRp
ZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwogICAgIFJlZjxBbmltYXRpb25FdmVudEJh
c2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGlu
ZVRpbWUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3Bw
CmluZGV4IDJkMDI2ZjVmM2YyODVhNTc4NjA0NWI2OGQwMDRiZjAwMWQyMDI5NDQuLjllNjA2MDkx
YzE4ODllYjc4YWFlMTg5NmZkMGMxNTQ1NDNmNjllZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFu
aW1hdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKLSNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
S2V5ZnJhbWVFZmZlY3QuaCIKICNpbmNsdWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKQEAgLTM4LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQ1NTVHJhbnNpdGlvbik7CiAKLVJlZjxDU1NUcmFuc2l0aW9uPiBDU1NUcmFuc2l0aW9uOjpj
cmVhdGUoRWxlbWVudCYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0
aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUm
IHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdG
YWN0b3IpCitSZWY8Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGNvbnN0IFN0
eWxlYWJsZSYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9ub3Rvbmlj
VGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
U2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVy
c2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3Ip
CiB7CiAgICAgQVNTRVJUKG9sZFN0eWxlKTsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpu
ZXcgQ1NTVHJhbnNpdGlvbihvd25pbmdFbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUs
IGJhY2tpbmdBbmltYXRpb24sICpvbGRTdHlsZSwgbmV3U3R5bGUsIHJldmVyc2luZ0FkanVzdGVk
U3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwpAQCAtNTAsMTEgKzQ5LDEx
IEBAIFJlZjxDU1NUcmFuc2l0aW9uPiBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoRWxlbWVudCYgb3du
aW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NT
VHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24m
IGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0
ZWRTdGFydFN0eWxlLCBkb3VibGUgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKLSAgICA6IERl
Y2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1lbnQsIGJhY2tpbmdBbmltYXRpb24pCitDU1NUcmFuc2l0
aW9uOjpDU1NUcmFuc2l0aW9uKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRp
b24mIGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRq
dXN0ZWRTdGFydFN0eWxlLCBkb3VibGUgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKKyAgICA6
IERlY2xhcmF0aXZlQW5pbWF0aW9uKHN0eWxlYWJsZSwgYmFja2luZ0FuaW1hdGlvbikKICAgICAs
IG1fcHJvcGVydHkocHJvcGVydHkpCiAgICAgLCBtX2dlbmVyYXRpb25UaW1lKGdlbmVyYXRpb25U
aW1lKQotICAgICwgbV90aW1lbGluZVRpbWVBdENyZWF0aW9uKGVsZW1lbnQuZG9jdW1lbnQoKS50
aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkpCisgICAgLCBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb24o
c3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkpCiAg
ICAgLCBtX3RhcmdldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSkpCiAg
ICAgLCBtX2N1cnJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIob2xkU3R5bGUpKQogICAg
ICwgbV9yZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJl
dmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uaAppbmRleCBkMjc1YmJiMDQxNWQ3Nzc4YzNkOWJhMDE2YjQwNDliNDdhYzAxMWU1
Li41OGQ2ZmQ3NDFmMWNjNDVkOTBmZDVhZGIyMTNmODc1NTZmZGMyNjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5o
IgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBA
IC0zNiwxMyArMzcsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9u
OwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBDU1NUcmFuc2l0
aW9uIGZpbmFsIDogcHVibGljIERlY2xhcmF0aXZlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKENTU1RyYW5zaXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NT
VHJhbnNpdGlvbj4gY3JlYXRlKEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1l
IGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25k
cyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHls
ZSwgZG91YmxlKTsKKyAgICBzdGF0aWMgUmVmPENTU1RyYW5zaXRpb24+IGNyZWF0ZShjb25zdCBT
dHlsZWFibGUmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBj
b25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKICAgICB+
Q1NTVHJhbnNpdGlvbigpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNDU1NUcmFuc2l0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NUcmFuc2l0
aW9uKEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1l
LCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVz
dGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKKyAgICBDU1NUcmFuc2l0aW9uKGNvbnN0IFN0eWxlYWJs
ZSYsIENTU1Byb3BlcnR5SUQsIE1vbm90b25pY1RpbWUgZ2VuZXJhdGlvblRpbWUsIGNvbnN0IEFu
aW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0
eWxlLCBkb3VibGUpOwogICAgIHZvaWQgc2V0VGltaW5nUHJvcGVydGllcyhTZWNvbmRzIGRlbGF5
LCBTZWNvbmRzIGR1cmF0aW9uKTsKICAgICBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVF
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29u
c3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBmaW5h
bDsKICAgICB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmLCBPcHRpb25hbDxTZWNvbmRzPikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcAppbmRleCBkNTViZDEwNTkxMzM5MGU5OGYwOTMxYjA4YTQ1ZmFhNjM3ZWYxZDQzLi5lNGY3
ODI5OGU1ZmYwOTEzNjMxYzIzZDJmNTFkMDlmYjRkNTAxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQzLDkgKzQzLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERl
Y2xhcmF0aXZlQW5pbWF0aW9uKTsKIAotRGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZl
QW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2lu
Z0FuaW1hdGlvbikKLSAgICA6IFdlYkFuaW1hdGlvbihvd25pbmdFbGVtZW50LmRvY3VtZW50KCkp
Ci0gICAgLCBtX293bmluZ0VsZW1lbnQobWFrZVdlYWtQdHIob3duaW5nRWxlbWVudCkpCitEZWNs
YXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiBz
dHlsZWFibGUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKKyAgICA6IFdlYkFu
aW1hdGlvbihzdHlsZWFibGUuZWxlbWVudC5kb2N1bWVudCgpKQorICAgICwgbV9vd25pbmdFbGVt
ZW50KG1ha2VXZWFrUHRyKHN0eWxlYWJsZS5lbGVtZW50KSkKKyAgICAsIG1fb3duaW5nUHNldWRv
SWQoc3R5bGVhYmxlLnBzZXVkb0lkKQogICAgICwgbV9iYWNraW5nQW5pbWF0aW9uKGNvbnN0X2Nh
c3Q8QW5pbWF0aW9uJj4oYmFja2luZ0FuaW1hdGlvbikpCiB7CiB9CkBAIC01NCw5ICs1NSwxMSBA
QCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6fkRlY2xhcmF0aXZlQW5pbWF0aW9uKCkKIHsKIH0KIAot
RWxlbWVudCogRGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQoKSBjb25zdAorY29u
c3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3duaW5n
RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3duaW5nRWxlbWVudC5nZXQoKTsKKyAg
ICBpZiAobV9vd25pbmdFbGVtZW50KQorICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX293bmlu
Z0VsZW1lbnQuZ2V0KCksIG1fb3duaW5nUHNldWRvSWQpOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnRpY2soKQpAQCAtOTMsNyArOTYs
NyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpkaXNhc3NvY2lhdGVGcm9tT3duaW5nRWxl
bWVudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBhbmltYXRpb25UaW1lbGlu
ZSA9IHRpbWVsaW5lKCkpCi0gICAgICAgIGFuaW1hdGlvblRpbWVsaW5lLT5yZW1vdmVEZWNsYXJh
dGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoKnRoaXMsICptX293bmluZ0Vs
ZW1lbnQpOworICAgICAgICBhbmltYXRpb25UaW1lbGluZS0+cmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KCp0aGlzLCAqb3duaW5nRWxlbWVudCgpKTsK
ICAgICBtX293bmluZ0VsZW1lbnQgPSBudWxscHRyOwogfQogCkBAIC0xMTIsMTIgKzExNSw3IEBA
IHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTCiAKICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsK
IAotICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihtX293bmluZ0VsZW1lbnQuZ2V0KCkpKSB7Ci0g
ICAgICAgIGF1dG8mIHBzZXVkb093bmluZ0VsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50
PigqbV9vd25pbmdFbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKHBzZXVkb093bmluZ0VsZW1lbnQu
aG9zdEVsZW1lbnQoKSk7Ci0gICAgICAgIHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3JlYXRl
KCpwc2V1ZG9Pd25pbmdFbGVtZW50Lmhvc3RFbGVtZW50KCksIHBzZXVkb093bmluZ0VsZW1lbnQu
cHNldWRvSWQoKSkpOwotICAgIH0gZWxzZQotICAgICAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZl
Y3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50LCBtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkp
KTsKKyAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50
LCBtX293bmluZ1BzZXVkb0lkKSk7CiAgICAgc2V0VGltZWxpbmUoJm1fb3duaW5nRWxlbWVudC0+
ZG9jdW1lbnQoKS50aW1lbGluZSgpKTsKICAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZm
ZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRT
dHlsZSwgbmV3U3R5bGUpOwogICAgIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24o
KTsKQEAgLTM1Miw3ICszNTAsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVl
RE9NRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBTZWNvbmRzCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gdGltZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVs
YXBzZWRUaW1lKSAvIDEwMDA7Ci0gICAgY29uc3QgYXV0byYgcHNldWRvSWQgPSBQc2V1ZG9FbGVt
ZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lk
KCkpOworICAgIGNvbnN0IGF1dG8mIHBzZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNldWRvRWxl
bWVudE5hbWVGb3JFdmVudHMobV9vd25pbmdQc2V1ZG9JZCk7CiAgICAgYXV0byB0aW1lbGluZVRp
bWUgPSB0aW1lbGluZSgpID8gdGltZWxpbmUoKS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVsbG9w
dDsKICAgICBhdXRvIGV2ZW50ID0gY3JlYXRlRXZlbnQoZXZlbnRUeXBlLCB0aW1lLCBwc2V1ZG9J
ZCwgdGltZWxpbmVUaW1lKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KG1fb3duaW5nRWxlbWVudC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oCmluZGV4IGFkYjg2NjVjZDJjZWRmNjE1ZDAzMmFhYTZmZWQ5MTQ3MjBmMzU5ZGUuLjMxYzRm
NjUzMzk3YWI4OGQ3MzViNWMyZGFhYWFiMWNjYjNlZDgzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3QuaCIKICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3RQ
aGFzZS5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDUs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFbGVtZW50KiBvd25pbmdFbGVtZW50
KCkgY29uc3Q7CisgICAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBvd25pbmdFbGVt
ZW50KCkgY29uc3Q7CiAgICAgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nQW5p
bWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsRnJvbVN0eWxlKCk7CkBA
IC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdl
cygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgRGVjbGFyYXRpdmVBbmltYXRpb24oRWxlbWVu
dCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0
eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9u
KCk7CkBAIC05MCw2ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2Ug
bV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKIAogICAgIFdl
YWtQdHI8RWxlbWVudD4gbV9vd25pbmdFbGVtZW50OworICAgIFBzZXVkb0lkIG1fb3duaW5nUHNl
dWRvSWQ7CiAgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0aW9uOwogICAgIGRvdWJs
ZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCBiNDNjM2MxMGYyZTkzMTRjZmE5NmU5Nzk1MmQ3ZWMx
MmQ4ZTdhZGQzLi42NjNiYTE4NWYwZDI1MzhkNGY2ZGIyYWY1NGE3YTFhYzU1ZWRhMzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKQEAgLTIyNiwxNCArMjI3LDE0IEBAIGJv
b2wgRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uQ2FuQmVSZW1vdmVkKFdlYkFuaW1hdGlvbiYg
YW5pbWF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBrZXlmcmFtZUVm
ZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QpOwotICAgIGF1dG8qIHRhcmdl
dCA9IGtleWZyYW1lRWZmZWN0LT50YXJnZXQoKTsKLSAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0
LT5pc0Rlc2NlbmRhbnRPZigqbV9kb2N1bWVudCkpCisgICAgYXV0byB0YXJnZXQgPSBrZXlmcmFt
ZUVmZmVjdC0+dGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+
ZWxlbWVudC5pc0Rlc2NlbmRhbnRPZigqbV9kb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllc1RvTWF0Y2ggPSBrZXlm
cmFtZUVmZmVjdC0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkFuaW1hdGlvbj4+IGFuaW1hdGlvbnM7Ci0gICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3Rh
Y2sgPSB0YXJnZXQtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkgeworICAgIGlmIChhdXRvKiBrZXlm
cmFtZUVmZmVjdFN0YWNrID0gdGFyZ2V0LT5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2sodGFy
Z2V0LT5wc2V1ZG9JZCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBrZXlmcmFtZUVm
ZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFu
aW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBl
bmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CkBAIC0yOTYsOCArMjk3LDggQEAgdm9pZCBEb2N1bWVu
dFRpbWVsaW5lOjp0cmFuc2l0aW9uRGlkQ29tcGxldGUoUmVmUHRyPENTU1RyYW5zaXRpb24+IHRy
YW5zaXRpb24pCiAgICAgQVNTRVJUKHRyYW5zaXRpb24pOwogICAgIHJlbW92ZUFuaW1hdGlvbigq
dHJhbnNpdGlvbik7CiAgICAgaWYgKGlzPEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5lZmZl
Y3QoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZm
ZWN0Pih0cmFuc2l0aW9uLT5lZmZlY3QoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQo
KSkKLSAgICAgICAgICAgIHRhcmdldC0+ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24pOworICAgICAgICBp
ZiAoYXV0byBzdHlsZWFibGUgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+
ZWZmZWN0KCkpLT50YXJnZXRTdHlsZWFibGUoKSkKKyAgICAgICAgICAgIHN0eWxlYWJsZS0+ZWxl
bWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoc3R5bGVhYmxlLT5wc2V1
ZG9JZCkuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24pOwogICAgIH0KIH0K
IApAQCAtMzMwLDEwICszMzEsMTEgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZU5l
eHRUaWNrKCkKIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZBbmltYXRp
b24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91dFJlY3QmIGJvdW5kcykgY29uc3QKIHsK
LSAgICBpZiAoIXJlbmRlcmVyLmVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
YXV0byBzdHlsZWFibGUgPSByZW5kZXJlci5zdHlsZWFibGUoKTsKKyAgICBpZiAoIXN0eWxlYWJs
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRl
cmVyLmVsZW1lbnQoKS0+YW5pbWF0aW9ucygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHls
ZWFibGUtPmVsZW1lbnQuYW5pbWF0aW9ucyhzdHlsZWFibGUtPnBzZXVkb0lkKTsKICAgICBpZiAo
IWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzU1LDEwICszNTcsMTEg
QEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZBbmltYXRpb24oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIExheW91dFIKIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1
bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgpKQor
ICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHls
ZWFibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBy
ZW5kZXJlci5lbGVtZW50KCktPmFuaW1hdGlvbnMoKTsKKyAgICBhdXRvKiBhbmltYXRpb25zID0g
c3R5bGVhYmxlLT5lbGVtZW50LmFuaW1hdGlvbnMoc3R5bGVhYmxlLT5wc2V1ZG9JZCk7CiAgICAg
aWYgKCFhbmltYXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3NiwxMCArMzc5
LDExIEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJl
cihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgQ1NTCiAKIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6
aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVy
ZXIuZWxlbWVudCgpKQorICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7
CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8q
IGFuaW1hdGlvbnMgPSByZW5kZXJlci5lbGVtZW50KCktPmFuaW1hdGlvbnMoKTsKKyAgICBhdXRv
KiBhbmltYXRpb25zID0gc3R5bGVhYmxlLT5lbGVtZW50LmFuaW1hdGlvbnMoc3R5bGVhYmxlLT5w
c2V1ZG9JZCk7CiAgICAgaWYgKCFhbmltYXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTQwMCwxMSArNDA0LDExIEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNj
ZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0ZWRTdHlsZUZvclJl
bmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIGF1dG8qIGVsZW1lbnQgPSBy
ZW5kZXJlci5lbGVtZW50KCk7Ci0gICAgaWYgKCFlbGVtZW50KQorICAgIGF1dG8gc3R5bGVhYmxl
ID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAKLSAgICBhdXRv
KiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25zKCk7CisgICAgYXV0
byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+ZWxlbWVudC5hbmltYXRpb25zKHN0eWxlYWJsZS0+
cHNldWRvSWQpOwogICAgIGlmICghYW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIFJlbmRlclN0
eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKIApAQCAtNDQ2LDkgKzQ1MCwxMyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmU6OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygp
CiAgICAgfQogfQogCi1ib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9y
RWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIERv
Y3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVy
YXRlZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAg
YXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpOworICAgIGF1dG8gc3R5bGVh
YmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmVsZW1l
bnQuYW5pbWF0aW9ucyhzdHlsZWFibGUtPnBzZXVkb0lkKTsKICAgICBpZiAoIWFuaW1hdGlvbnMg
fHwgYW5pbWF0aW9ucy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCmluZGV4IGYyN2M3Yzc4OTJm
OGVjNzIxZDk2YTMyOGUzMDlmNWJmNjE2NzUwNTYuLjhlMzA0OTExNmQ1MDRjYTUzYmUwMDEzYWZh
ZjJkZjgyOThiZDllYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFu
aW1hdGlvbkV2ZW50QmFzZTsKIGNsYXNzIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjsKK2Ns
YXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3Mg
RG9jdW1lbnRUaW1lbGluZSBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UaW1lbGluZQpAQCAtNjIs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzUnVubmlu
Z0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVy
dHlJRCkgY29uc3Q7CiAgICAgdm9pZCBhbmltYXRpb25BY2NlbGVyYXRlZFJ1bm5pbmdTdGF0ZURp
ZENoYW5nZShXZWJBbmltYXRpb24mKTsKLSAgICBib29sIHJ1bm5pbmdBbmltYXRpb25zRm9yRWxl
bWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIHJ1bm5pbmdB
bmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYpIGNvbnN0OwogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICB2
b2lkIGVucXVldWVBbmltYXRpb25FdmVudChBbmltYXRpb25FdmVudEJhc2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGY1ZmY4MWFlM2NkM2Fl
MjM3NDk1MTY4ODE2YTMwYmNkMmQ5NWRmNzIuLjFkYjQyYmYwYThhMmUxYmQ3ODNmYmI5OTJjMzcw
MDA3ZDJjOWYxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcApAQCAtNjYsMTAgKzY2LDI3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW52YWxpZGF0ZUVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKK3N0YXRpYyBFbGVtZW50KiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5
bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3sKKyAg
ICBpZiAoIXN0eWxlYWJsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2gg
KHN0eWxlYWJsZS0+cHNldWRvSWQpIHsKKyAgICBjYXNlIFBzZXVkb0lkOjpOb25lOgorICAgICAg
ICByZXR1cm4gJnN0eWxlYWJsZS0+ZWxlbWVudDsKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6
CisgICAgICAgIHJldHVybiBzdHlsZWFibGUtPmVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgp
OworICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAgICAgICByZXR1cm4gc3R5bGVhYmxlLT5l
bGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVFbGVt
ZW50KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKIHsKLSAgICBp
ZiAoZWxlbWVudCkKLSAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsK
KyAgICBpZiAoYXV0byogZWxlbWVudE9yUHNldWRvRWxlbWVudCA9IGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVhYmxlKSkKKyAgICAgICAgZWxlbWVudE9yUHNldWRvRWxl
bWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJp
bmcgQ1NTUHJvcGVydHlJRFRvSURMQXR0cmlidXRlTmFtZShDU1NQcm9wZXJ0eUlEIGNzc1Byb3Bl
cnR5SWQpCkBAIC0xMDUxLDEzICsxMDY4LDE0IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1
dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRp
b25UaW1lbGluZURpZENoYW5nZShBbmltYXRpb25UaW1lbGluZSogdGltZWxpbmUpCiB7Ci0gICAg
aWYgKCF0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkpCisgICAgYXV0byB0YXJnZXQgPSB0
YXJnZXRTdHlsZWFibGUoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKHRpbWVsaW5lKQotICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRF
bGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRF
ZmZlY3QoKnRoaXMpOworICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVs
ZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZl
Y3QoKnRoaXMpOwogICAgIGVsc2UgewotICAgICAgICB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwor
ICAgICAgICB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQt
PnBzZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0
U3RhY2sgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xMDY5LDE0ICsxMDg3LDE1IEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgpCiAKIHZvaWQgS2V5ZnJhbWVF
ZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpCiB7Ci0gICAgaWYgKCF0YXJnZXRF
bGVtZW50T3JQc2V1ZG9FbGVtZW50KCkpCisgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFi
bGUoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1Jl
bGV2YW50ID0gYW5pbWF0aW9uKCkgJiYgYW5pbWF0aW9uKCktPmlzUmVsZXZhbnQoKTsKICAgICBp
ZiAoaXNSZWxldmFudCAmJiAhbV9pblRhcmdldEVmZmVjdFN0YWNrKQotICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtl
eWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOworICAgICAgICBtX2luVGFyZ2V0
RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0
YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZlY3QoKnRoaXMpOwogICAgIGVsc2UgaWYgKCFpc1JlbGV2
YW50ICYmIG1faW5UYXJnZXRFZmZlY3RTdGFjaykgewotICAgICAgICB0YXJnZXRFbGVtZW50T3JQ
c2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3Qo
KnRoaXMpOworICAgICAgICB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
ayh0YXJnZXQtPnBzZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xMDk0LDYgKzExMTMsMTMgQEAg
dm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9u
KQogICAgIHVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpOwogfQogCitjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUoKSBjb25z
dAoreworICAgIGlmIChtX3RhcmdldCkKKyAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV90YXJn
ZXQsIG1fcHNldWRvSWQpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIGJvb2wgS2V5
ZnJhbWVFZmZlY3Q6OnRhcmdldHNQc2V1ZG9FbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV90YXJnZXQuZ2V0KCkgJiYgbV9wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZTsKQEAgLTExMTks
OSArMTE0NSw5IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldChSZWZQdHI8RWxlbWVu
dD4mJiBuZXdUYXJnZXQpCiAgICAgaWYgKG1fdGFyZ2V0ID09IG5ld1RhcmdldCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byogcHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50
ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOworICAgIGF1dG8mIHByZXZpb3VzVGFy
Z2V0U3R5bGVhYmxlID0gdGFyZ2V0U3R5bGVhYmxlKCk7CiAgICAgbV90YXJnZXQgPSBXVEZNb3Zl
KG5ld1RhcmdldCk7Ci0gICAgZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChw
cmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQpOworICAgIGRpZENoYW5nZVRhcmdl
dFN0eWxlYWJsZShwcmV2aW91c1RhcmdldFN0eWxlYWJsZSk7CiB9CiAKIGNvbnN0IFN0cmluZyBL
ZXlmcmFtZUVmZmVjdDo6cHNldWRvRWxlbWVudCgpIGNvbnN0CkBAIC0xMTYxLDI2ICsxMTg3LDI4
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0OjpzZXRQc2V1ZG9FbGVtZW50KGNv
bnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKICAgICBpZiAocHNldWRvSWQgPT0gbV9wc2V1ZG9J
ZCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8qIHByZXZpb3VzVGFyZ2V0RWxlbWVu
dE9yUHNldWRvRWxlbWVudCA9IHRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBh
dXRvJiBwcmV2aW91c1RhcmdldFN0eWxlYWJsZSA9IHRhcmdldFN0eWxlYWJsZSgpOwogICAgIG1f
cHNldWRvSWQgPSBwc2V1ZG9JZDsKLSAgICBkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50KHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCk7CisgICAgZGlkQ2hh
bmdlVGFyZ2V0U3R5bGVhYmxlKHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKTsKIAogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1lbnRP
clBzZXVkb0VsZW1lbnQoRWxlbWVudCogcHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KQordm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0
IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKQogewot
ICAgIGF1dG8qIG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQgPSB0YXJnZXRFbGVtZW50
T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byBuZXdUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRT
dHlsZWFibGUoKTsKIAogICAgIC8vIFdlIG11c3QgZW5zdXJlIGEgUHNldWRvRWxlbWVudCBleGlz
dHMgZm9yIHRoaXMgbV90YXJnZXQgLyBtX3BzZXVkb0lkIHBhaXIgaWYgYm90aCBhcmUgc3BlY2lm
aWVkLgorICAgIC8vIEZJWE1FOiBJZGVhbGx5IHRoaXMgd291bGRuJ3QgYmUgbmVjZXNzYXJ5Lgor
ICAgIGF1dG8qIG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQgPSBlbGVtZW50T3JQc2V1
ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKG5ld1RhcmdldFN0eWxlYWJsZSk7CiAgICAgaWYgKCFuZXdU
YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ICYmIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRv
SWQgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKLSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IHRhcmdl
dGluZyA6OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8tZWxlbWVudHMgYXQgdGhlIG1vbWVudC4K
KyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCB0YXJnZXRpbmcgOjpiZWZvcmUgYW5k
IDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIGlmIChtX3Bz
ZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgbV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0
ZXIpCiAgICAgICAgICAgICBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gJm1fdGFy
Z2V0LT5lbnN1cmVQc2V1ZG9FbGVtZW50KG1fcHNldWRvSWQpOwogICAgIH0KIAogICAgIGlmIChh
dXRvKiBlZmZlY3RBbmltYXRpb24gPSBhbmltYXRpb24oKSkKLSAgICAgICAgZWZmZWN0QW5pbWF0
aW9uLT5lZmZlY3RUYXJnZXREaWRDaGFuZ2UocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50LCBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgZWZmZWN0
QW5pbWF0aW9uLT5lZmZlY3RUYXJnZXREaWRDaGFuZ2UocHJldmlvdXNUYXJnZXRTdHlsZWFibGUs
IG5ld1RhcmdldFN0eWxlYWJsZSk7CiAKICAgICBjbGVhckJsZW5kaW5nS2V5ZnJhbWVzKCk7CiAK
QEAgLTExOTAsMTQgKzEyMTgsMTUgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFy
Z2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChFbGVtZW50KiBwcmV2aW91c1RhcmcKIAogICAgIC8v
IExpa2V3aXNlLCB3ZSBuZWVkIHRvIGludmFsaWRhdGUgc3R5bGVzIG9uIHRoZSBwcmV2aW91cyB0
YXJnZXQgc28gdGhhdAogICAgIC8vIGFueSBhbmltYXRlZCBzdHlsZXMgYXJlIHJlbW92ZWQgaW1t
ZWRpYXRlbHkuCi0gICAgaW52YWxpZGF0ZUVsZW1lbnQocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQ
c2V1ZG9FbGVtZW50KTsKKyAgICBpbnZhbGlkYXRlRWxlbWVudChwcmV2aW91c1RhcmdldFN0eWxl
YWJsZSk7CiAKLSAgICBpZiAocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KSB7
Ci0gICAgICAgIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudC0+ZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CisgICAgaWYgKHByZXZpb3Vz
VGFyZ2V0U3R5bGVhYmxlKSB7CisgICAgICAgIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlLT5lbGVt
ZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHJldmlvdXNUYXJnZXRTdHlsZWFibGUtPnBz
ZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3Rh
Y2sgPSBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQpCi0gICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG5ld1RhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMp
OworCisgICAgaWYgKG5ld1RhcmdldFN0eWxlYWJsZSkKKyAgICAgICAgbV9pblRhcmdldEVmZmVj
dFN0YWNrID0gbmV3VGFyZ2V0U3R5bGVhYmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2sobmV3VGFyZ2V0U3R5bGVhYmxlLT5wc2V1ZG9JZCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0K
IAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBP
cHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCkBAIC0xMjM4LDcgKzEyNjcsNyBAQCBib29sIEtl
eWZyYW1lRWZmZWN0Ojppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbkZvclByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSgpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiS2V5ZnJhbWVFZmZlY3Q6
OmludmFsaWRhdGUgb24gZWxlbWVudCAiIDw8IFZhbHVlT3JOdWxsKHRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSkpOwotICAgIGludmFsaWRhdGVFbGVtZW50KHRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSk7CisgICAgaW52YWxpZGF0ZUVsZW1lbnQodGFyZ2V0U3R5bGVhYmxlKCkp
OwogfQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVz
U3RhdGUoKQpAQCAtMTYyMyw3ICsxNjUyLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQ
ZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCkKIAogICAgICAgICBBU1NFUlQobV90YXJnZXQpOwog
Ci0gICAgICAgIGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFz
dFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpOworICAgICAgICBhdXRvKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlID0gbV90YXJnZXQtPmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobV9wc2V1ZG9J
ZCk7CiAgICAgICAgIEFTU0VSVChsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKTsKIAogICAgICAg
ICBLZXlmcmFtZUxpc3QgZXhwbGljaXRLZXlmcmFtZXMobV9ibGVuZGluZ0tleWZyYW1lcy5hbmlt
YXRpb25OYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApp
bmRleCBjYWNkNjM0NzI3NTYyMzBlNjZkMjQyMGRlNGYxMjNkOWZkNTNjMDc4Li42ZDJmZTAyMjZh
MThlYWZlZWY3ODI2ZDI5ZmI2ODczYTU5NTAxYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIktleWZyYW1l
TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0
aWVzLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTEwOSw2ICsxMTAsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nIHBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYpOwogCisgICAgY29uc3QgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiB0YXJnZXRTdHlsZWFibGUoKSBjb25zdDsKKwogICAgIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4gZ2V0QmluZGluZ3NLZXlmcmFtZXMoSlND
OjpKU0dsb2JhbE9iamVjdCYpOwogICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4gZ2V0S2V5ZnJhbWVzKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRCaW5kaW5nc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4mJik7CkBAIC0xNzgsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUVmZmVjdFN0YWNrTWVt
YmVyc2hpcCgpOwogICAgIHZvaWQgY29weVByb3BlcnRpZXNGcm9tU291cmNlKFJlZjxLZXlmcmFt
ZUVmZmVjdD4mJik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIGRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vz
c0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4mJik7CiAgICAgdm9pZCBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRB
Y3Rpb24pOwogICAgIGJvb2wgY2FuQmVBY2NlbGVyYXRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCmluZGV4IDdjMGJlMGYx
YzE2N2RhMDc4NzgyOThkMzMyNjU1ZDdmMGNmYTljODUuLmQ1ZjQwZWQ4MWUyMzBlZGFlNmY2ZWM1
NDVhNzEzMmRhMDkxZTQ0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3RTdGFjay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBLZXlmcmFtZUVmZmVj
dFN0YWNrOjphZGRFZmZlY3QoS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCkKIHsKICAgICAvLyBUbyBx
dWFsaWZ5IGZvciBtZW1iZXJzaGlwIGluIGFuIGVmZmVjdCBzdGFjaywgYW4gZWZmZWN0IG11c3Qg
aGF2ZSBhIHRhcmdldCwgYW4gYW5pbWF0aW9uLCBhIHRpbWVsaW5lIGFuZCBiZSByZWxldmFudC4K
ICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBpbiBXZWJBbmltYXRpb24gYW5kIEtl
eWZyYW1lRWZmZWN0IGFzIHRob3NlIHByb3BlcnRpZXMgY2hhbmdlLgotICAgIGlmICghZWZmZWN0
LnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpIHx8
ICFlZmZlY3QuYW5pbWF0aW9uKCktPnRpbWVsaW5lKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+
aXNSZWxldmFudCgpKQorICAgIGlmICghZWZmZWN0LnRhcmdldFN0eWxlYWJsZSgpIHx8ICFlZmZl
Y3QuYW5pbWF0aW9uKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+dGltZWxpbmUoKSB8fCAhZWZm
ZWN0LmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1fZWZmZWN0cy5hcHBlbmQobWFrZVdlYWtQdHIoJmVmZmVjdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBhYWQ0ZjFjY2NiN2MxZDg5NDU3NjEz
YWQ0ZmZmNWI0ZjZlMzgxMTI5Li44NTEzMzNkNDU5NmIxZTBiNmI2ZDVlMjFiMWE1MjcxY2VlNzM3
ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2
LDI2ICsyMDYsMjEgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEVmZmVjdEludGVybmFsKFJlZlB0
cjxBbmltYXRpb25FZmZlY3Q+JiYgbmV3RWZmZWN0LCBib29sIGQKIAogICAgIGF1dG8gb2xkRWZm
ZWN0ID0gc3RkOjpleGNoYW5nZShtX2VmZmVjdCwgV1RGTW92ZShuZXdFZmZlY3QpKTsKIAotICAg
IEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8S2V5ZnJhbWVF
ZmZlY3Q+KG9sZEVmZmVjdCkpCi0gICAgICAgIHByZXZpb3VzVGFyZ2V0ID0gZG93bmNhc3Q8S2V5
ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5nZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQoKTsKLQotICAgIEVsZW1lbnQqIG5ld1RhcmdldCA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdCkpCi0gICAgICAgIG5ld1RhcmdldCA9IGRvd25jYXN0PEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQoKTsKKyAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8
S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xk
RWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9l
ZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0
U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBVcGRhdGUgdGhlIGVmZmVjdC10
by1hbmltYXRpb24gcmVsYXRpb25zaGlwcyBhbmQgdGhlIHRpbWVsaW5lJ3MgYW5pbWF0aW9uIG1h
cC4KICAgICBpZiAob2xkRWZmZWN0KSB7CiAgICAgICAgIG9sZEVmZmVjdC0+c2V0QW5pbWF0aW9u
KG51bGxwdHIpOwogICAgICAgICBpZiAoIWRvTm90UmVtb3ZlRnJvbVRpbWVsaW5lICYmIG1fdGlt
ZWxpbmUgJiYgcHJldmlvdXNUYXJnZXQgJiYgcHJldmlvdXNUYXJnZXQgIT0gbmV3VGFyZ2V0KQot
ICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0
aGlzLCAqcHJldmlvdXNUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9u
V2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoKnRoaXMsICpwcmV2aW91c1RhcmdldCk7CiAgICAgICAg
IHVwZGF0ZVJlbGV2YW5jZSgpOwogICAgIH0KIAogICAgIGlmIChtX2VmZmVjdCkgewogICAgICAg
ICBtX2VmZmVjdC0+c2V0QW5pbWF0aW9uKHRoaXMpOwogICAgICAgICBpZiAobV90aW1lbGluZSAm
JiBuZXdUYXJnZXQgJiYgcHJldmlvdXNUYXJnZXQgIT0gbmV3VGFyZ2V0KQotICAgICAgICAgICAg
bV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRoaXMsICpuZXdUYXJnZXQp
OworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgq
dGhpcywgKm5ld1RhcmdldCk7CiAgICAgfQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTZXRXZWJBbmltYXRpb25FZmZlY3QoKnRoaXMpOwpAQCAtMjQ1LDE2ICsyNDAsMTQgQEAg
dm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4m
JiB0aW1lbGluZSkKICAgICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKIAogICAgIGlm
IChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7Ci0gICAgICAgIGF1dG8qIGtleWZyYW1l
RWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKTsKLSAgICAg
ICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJhbWVFZmZlY3QtPnRhcmdldEVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQoKTsKLSAgICAgICAgaWYgKHRhcmdldCkgeworICAgICAgICBpZiAoYXV0byB0YXJnZXQg
PSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFi
bGUoKSkgewogICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBkZWNsYXJhdGl2ZSBhbmlt
YXRpb24sIHdlIGRvbid0IHdhbnQgdG8gcmVtb3ZlIHRoZSBhbmltYXRpb24gZnJvbSB0aGUgcmVs
ZXZhbnQgbWFwcyBiZWNhdXNlCiAgICAgICAgICAgICAvLyB3aGlsZSB0aGUgdGltZWxpbmUgd2Fz
IHNldCB2aWEgdGhlIEFQSSwgdGhlIGVsZW1lbnQgc3RpbGwgaGFzIGEgdHJhbnNpdGlvbiBvciBh
bmltYXRpb24gc2V0IHVwIGFuZCB3ZSBtdXN0CiAgICAgICAgICAgICAvLyBub3QgYnJlYWsgdGhl
IHJlbGF0aW9uc2hpcC4KICAgICAgICAgICAgIGlmIChtX3RpbWVsaW5lICYmICFpc0RlY2xhcmF0
aXZlQW5pbWF0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2Fz
UmVtb3ZlZEZyb21FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBtX3Rp
bWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7
CiAgICAgICAgICAgICBpZiAodGltZWxpbmUpCi0gICAgICAgICAgICAgICAgdGltZWxpbmUtPmFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAg
ICB0aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4NSwxNCArMjc4LDE0IEBAIHZvaWQgV2ViQW5pbWF0
aW9uOjpzZXRUaW1lbGluZUludGVybmFsKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJiB0aW1l
bGluZSkKICAgICAgICAgbV9lZmZlY3QtPmFuaW1hdGlvblRpbWVsaW5lRGlkQ2hhbmdlKG1fdGlt
ZWxpbmUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hh
bmdlKEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0LCBFbGVtZW50KiBuZXdUYXJnZXQpCit2b2lkIFdl
YkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBuZXdUYXJnZXQpCiB7CiAgICAgaWYgKG1fdGltZWxpbmUpIHsKICAgICAgICAgaWYgKHByZXZp
b3VzVGFyZ2V0KQotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZy
b21FbGVtZW50KCp0aGlzLCAqcHJldmlvdXNUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGlu
ZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoKnRoaXMsICpwcmV2aW91c1Rhcmdl
dCk7CiAKICAgICAgICAgaWYgKG5ld1RhcmdldCkKLSAgICAgICAgICAgIG1fdGltZWxpbmUtPmFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAqbmV3VGFyZ2V0KTsKKyAgICAgICAgICAg
IG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9TdHlsZWFibGUoKnRoaXMsICpuZXdUYXJn
ZXQpOwogCiAgICAgICAgIC8vIFRoaXMgY291bGQgaGF2ZSBjaGFuZ2VkIHdoZXRoZXIgd2UgaGF2
ZSByZXBsYWNlZCBhbmltYXRpb25zLCBzbyB3ZSBtYXkgbmVlZCB0byBzY2hlZHVsZSBhbiB1cGRh
dGUuCiAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgqdGhpcyk7
CkBAIC0xMzgyLDkgKzEzNzUsOSBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cGVyc2lzdCgpCiAgICAg
aWYgKHByZXZpb3VzUmVwbGFjZVN0YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCAmJiBtX3Rp
bWVsaW5lKSB7CiAgICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0
PigqbV9lZmZlY3QpOwotICAgICAgICAgICAgYXV0byYgdGFyZ2V0ID0gKmtleWZyYW1lRWZmZWN0
LnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKLSAgICAgICAgICAgIG1fdGltZWxpbmUt
PmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCB0YXJnZXQpOwotICAgICAgICAgICAg
dGFyZ2V0LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3Qoa2V5ZnJhbWVFZmZl
Y3QpOworICAgICAgICAgICAgYXV0byBzdHlsZWFibGUgPSBrZXlmcmFtZUVmZmVjdC50YXJnZXRT
dHlsZWFibGUoKTsKKyAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9T
dHlsZWFibGUoKnRoaXMsICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVt
ZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkuYWRkRWZm
ZWN0KGtleWZyYW1lRWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE0MjMsNyArMTQx
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAg
ICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oKTsKICAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHlsZWRFbGVt
ZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CiAKLSAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0g
c3R5bGVkRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5
ZnJhbWVTdGFjayA9IHN0eWxlZEVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1
ZG9JZDo6Tm9uZSk7CiAKICAgICAvLyAyLjUgRm9yIGVhY2ggcHJvcGVydHksIHByb3BlcnR5LCBp
biB0YXJnZXRlZCBwcm9wZXJ0aWVzOgogICAgIGZvciAoYXV0byBwcm9wZXJ0eSA6IGVmZmVjdC0+
YW5pbWF0ZWRQcm9wZXJ0aWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uaAppbmRleCBiYjM5YTBhYTAzZGZlMTI4MzIzMWRiMTZiODMyYWJjOTEzZjUwMDA5Li42NjY3
YmZlZTY5YzBlN2JiMDE4NmQ3YmIwMmM1MmE4YzVkODBkYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgi
CisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgpAQCAt
NDQsNyArNDUsNiBAQCBjbGFzcyBBbmltYXRpb25FZmZlY3Q7CiBjbGFzcyBBbmltYXRpb25FdmVu
dEJhc2U7CiBjbGFzcyBBbmltYXRpb25UaW1lbGluZTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwpAQCAtMTIyLDcgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGljaygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlY29uZHMgdGltZVRvTmV4dFRpY2soKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
b2x2ZShSZW5kZXJTdHlsZSYsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KTsKLSAg
ICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShFbGVtZW50KiBwcmV2aW91c1RhcmdldCwgRWxl
bWVudCogbmV3VGFyZ2V0KTsKKyAgICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFyZ2V0KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkU3RhdGVE
aWRDaGFuZ2UoKTsKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpOwog
ICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwCmluZGV4IGUxNzJkODJkNTVjY2NmMTMw
NWQ5OWRiYTE1YzQ2ZGQxNjEzYjQzYzcuLjg3NzU2MTZkNTI3Y2VjODNmYjI1ODU2NWE5YmJiYmZl
MGFkZTUxOGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25VdGlsaXRpZXMuY3BwCkBAIC0zOCw0MiArMzgsNTIgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50
UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihFbGVtZW50JiBhLCBFbGVtZW50JiBiKQorc3Rh
dGljIGJvb2wgY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9u
c0luRG9jdW1lbnRUcmVlT3JkZXIoY29uc3QgU3R5bGVhYmxlJiBhLCBjb25zdCBTdHlsZWFibGUm
IGIpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBldmVyIGJlIGNhbGxpbmcgdGhpcyBmdW5jdGlv
biB3aXRoIHR3byBFbGVtZW50cyB0aGF0IGFyZSB0aGUgc2FtZS4gSWYgdGhhdCB3ZXJlIHRoZSBj
YXNlLAogICAgIC8vIHRoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgdGhpcyBraW5kIHdvdWxkIHlp
ZWxkIGluY29uc2lzdGVudCByZXN1bHRzIHdoZW4gY29tcGFyaW5nIEEgPT0gQiBhbmQgQiA9PSBB
LgogICAgIC8vIEFzIHN1Y2gsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHN0
ZDo6c3RhYmxlX3NvcnQoKS4KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCZhICE9ICZiKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGEgIT0gYik7CiAKICAgICAvLyBXaXRoIHJlZ2FyZCB0byBwc2V1ZG8tZWxlbWVudHMs
IHRoZSBzb3J0IG9yZGVyIGlzIGFzIGZvbGxvd3M6CisgICAgLy8KICAgICAvLyAgICAgLSBlbGVt
ZW50CisgICAgLy8gICAgIC0gOjptYXJrZXIKICAgICAvLyAgICAgLSA6OmJlZm9yZQorICAgIC8v
ICAgICAtIGFueSBvdGhlciBwc2V1ZG8tZWxlbWVudHMgbm90IG1lbnRpb25lZCBzcGVjaWZpY2Fs
bHkgaW4gdGhpcyBsaXN0LCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSBVbmljb2Rl
IGNvZGVwb2ludHMgdGhhdCBtYWtlIHVwIGVhY2ggc2VsZWN0b3IKICAgICAvLyAgICAgLSA6OmFm
dGVyCiAgICAgLy8gICAgIC0gZWxlbWVudCBjaGlsZHJlbgotCi0gICAgZW51bSBTb3J0aW5nSW5k
ZXggOiB1aW50OF90IHsgTm90UHNldWRvLCBCZWZvcmUsIEFmdGVyIH07Ci0KLSAgICBpbnQgYVNv
cnRpbmdJbmRleCA9IE5vdFBzZXVkbzsKLSAgICBFbGVtZW50KiBhUmVmZXJlbmNlRWxlbWVudCA9
ICZhOwotICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihhKSkgewotICAgICAgICBhdXRvJiBhUHNl
dWRvID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oYSk7Ci0gICAgICAgIGFTb3J0aW5nSW5kZXgg
PSBhUHNldWRvLmlzQmVmb3JlUHNldWRvRWxlbWVudCgpID8gQmVmb3JlIDogQWZ0ZXI7Ci0gICAg
ICAgIGFSZWZlcmVuY2VFbGVtZW50ID0gYVBzZXVkby5ob3N0RWxlbWVudCgpOwotICAgICAgICBB
U1NFUlQoYVJlZmVyZW5jZUVsZW1lbnQpOwotICAgIH0KLQotICAgIGludCBiU29ydGluZ0luZGV4
ID0gTm90UHNldWRvOwotICAgIEVsZW1lbnQqIGJSZWZlcmVuY2VFbGVtZW50ID0gJmI7Ci0gICAg
aWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGIpKSB7Ci0gICAgICAgIGF1dG8mIGJQc2V1ZG8gPSBkb3du
Y2FzdDxQc2V1ZG9FbGVtZW50PihiKTsKLSAgICAgICAgYlNvcnRpbmdJbmRleCA9IGJQc2V1ZG8u
aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBCZWZvcmUgOiBBZnRlcjsKLSAgICAgICAgYlJlZmVy
ZW5jZUVsZW1lbnQgPSBiUHNldWRvLmhvc3RFbGVtZW50KCk7Ci0gICAgICAgIEFTU0VSVChiUmVm
ZXJlbmNlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaWYgKGFSZWZlcmVuY2VFbGVtZW50ID09IGJS
ZWZlcmVuY2VFbGVtZW50KQorICAgIGVudW0gU29ydGluZ0luZGV4IDogdWludDhfdCB7IE5vdFBz
ZXVkbywgTWFya2VyLCBCZWZvcmUsIE90aGVyLCBBZnRlciB9OworICAgIGF1dG8gc29ydGluZ0lu
ZGV4ID0gW10oUHNldWRvSWQgcHNldWRvSWQpIC0+IFNvcnRpbmdJbmRleCB7CisgICAgICAgIGlm
IChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBOb3RQc2V1
ZG87CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyKQorICAgICAgICAg
ICAgcmV0dXJuIE1hcmtlcjsKKyAgICAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZv
cmUpCisgICAgICAgICAgICByZXR1cm4gQmVmb3JlOworICAgICAgICBpZiAocHNldWRvSWQgPT0g
UHNldWRvSWQ6OkFmdGVyKQorICAgICAgICAgICAgcmV0dXJuIEFmdGVyOworICAgICAgICByZXR1
cm4gT3RoZXI7CisgICAgfTsKKworICAgIGF1dG8gcHNldWRvSWRBc1N0cmluZyA9IFtdKFBzZXVk
b0lkIHBzZXVkb0lkKSAtPiBTdHJpbmcgeworICAgICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAg
ICAgICAgc3RyZWFtIDw8IHBzZXVkb0lkOworICAgICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2Uo
KTsKKyAgICB9OworCisgICAgYXV0byYgYVJlZmVyZW5jZUVsZW1lbnQgPSBhLmVsZW1lbnQ7Cisg
ICAgaW50IGFTb3J0aW5nSW5kZXggPSBzb3J0aW5nSW5kZXgoYS5wc2V1ZG9JZCk7CisKKyAgICBh
dXRvJiBiUmVmZXJlbmNlRWxlbWVudCA9IGIuZWxlbWVudDsKKyAgICBpbnQgYlNvcnRpbmdJbmRl
eCA9IHNvcnRpbmdJbmRleChiLnBzZXVkb0lkKTsKKworICAgIGlmICgmYVJlZmVyZW5jZUVsZW1l
bnQgPT0gJmJSZWZlcmVuY2VFbGVtZW50KSB7CisgICAgICAgIGlmIChhU29ydGluZ0luZGV4ID09
IGJTb3J0aW5nSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gcHNldWRvSWRBc1N0cmluZyhhLnBz
ZXVkb0lkKS51dGY4KCkgPCBwc2V1ZG9JZEFzU3RyaW5nKGIucHNldWRvSWQpLnV0ZjgoKTsKICAg
ICAgICAgcmV0dXJuIGFTb3J0aW5nSW5kZXggPCBiU29ydGluZ0luZGV4OwotICAgIHJldHVybiBh
UmVmZXJlbmNlRWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oKmJSZWZlcmVuY2VFbGVt
ZW50KSAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORzsKKyAgICB9CisgICAgcmV0
dXJuIGFSZWZlcmVuY2VFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGJSZWZlcmVuY2VF
bGVtZW50KSAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORzsKIH0KIAogc3RhdGlj
IGJvb2wgY29tcGFyZUNTU1RyYW5zaXRpb25zKGNvbnN0IENTU1RyYW5zaXRpb24mIGEsIGNvbnN0
IENTU1RyYW5zaXRpb24mIGIpCkBAIC04NCw3ICs5NCw3IEBAIHN0YXRpYyBib29sIGNvbXBhcmVD
U1NUcmFuc2l0aW9ucyhjb25zdCBDU1NUcmFuc2l0aW9uJiBhLCBjb25zdCBDU1NUcmFuc2l0aW9u
JiBiCiAgICAgYXV0byYgYk93bmluZ0VsZW1lbnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CiAKICAg
ICAvLyBJZiB0aGUgb3duaW5nIGVsZW1lbnQgb2YgQSBhbmQgQiBkaWZmZXJzLCBzb3J0IEEgYW5k
IEIgYnkgdHJlZSBvcmRlciBvZiB0aGVpciBjb3JyZXNwb25kaW5nIG93bmluZyBlbGVtZW50cy4K
LSAgICBpZiAoJmFPd25pbmdFbGVtZW50ICE9ICZiT3duaW5nRWxlbWVudCkKKyAgICBpZiAoYU93
bmluZ0VsZW1lbnQgIT0gYk93bmluZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBjb21wYXJlRGVj
bGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRl
cihhT3duaW5nRWxlbWVudCwgYk93bmluZ0VsZW1lbnQpOwogCiAgICAgLy8gT3RoZXJ3aXNlLCBp
ZiBBIGFuZCBCIGhhdmUgZGlmZmVyZW50IHRyYW5zaXRpb24gZ2VuZXJhdGlvbiB2YWx1ZXMsIHNv
cnQgYnkgdGhlaXIgY29ycmVzcG9uZGluZyB0cmFuc2l0aW9uIGdlbmVyYXRpb24gaW4gYXNjZW5k
aW5nIG9yZGVyLgpAQCAtMTA1LDExICsxMTUsMTEgQEAgc3RhdGljIGJvb2wgY29tcGFyZUNTU0Fu
aW1hdGlvbnMoY29uc3QgQ1NTQW5pbWF0aW9uJiBhLCBjb25zdCBDU1NBbmltYXRpb24mIGIpCiAg
ICAgYXV0byYgYk93bmluZ0VsZW1lbnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CiAKICAgICAvLyBJ
ZiB0aGUgb3duaW5nIGVsZW1lbnQgb2YgQSBhbmQgQiBkaWZmZXJzLCBzb3J0IEEgYW5kIEIgYnkg
dHJlZSBvcmRlciBvZiB0aGVpciBjb3JyZXNwb25kaW5nIG93bmluZyBlbGVtZW50cy4KLSAgICBp
ZiAoJmFPd25pbmdFbGVtZW50ICE9ICZiT3duaW5nRWxlbWVudCkKKyAgICBpZiAoYU93bmluZ0Vs
ZW1lbnQgIT0gYk93bmluZ0VsZW1lbnQpCiAgICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRp
dmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3du
aW5nRWxlbWVudCwgYk93bmluZ0VsZW1lbnQpOwogCiAgICAgLy8gU29ydCBBIGFuZCBCIGJhc2Vk
IG9uIHRoZWlyIHBvc2l0aW9uIGluIHRoZSBjb21wdXRlZCB2YWx1ZSBvZiB0aGUgYW5pbWF0aW9u
LW5hbWUgcHJvcGVydHkgb2YgdGhlIChjb21tb24pIG93bmluZyBlbGVtZW50LgotICAgIGF1dG8q
IGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0
YWNrKCkuY3NzQW5pbWF0aW9uTGlzdCgpOworICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBh
T3duaW5nRWxlbWVudC5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soYU93bmluZ0Vs
ZW1lbnQucHNldWRvSWQpLmNzc0FuaW1hdGlvbkxpc3QoKTsKICAgICBBU1NFUlQoY3NzQW5pbWF0
aW9uTGlzdCk7CiAgICAgQVNTRVJUKCFjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpOwogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYmYzODg0YjA0MzY3OTVhYTVmNjBhYjg0MzhkZmNhNzk3
M2QwMWI4Yy4uMjc1YjVkNzU4OTdhNGFhNGMxMTIwOGI3MDAyYzkwNTVmYjc1YmM0NyAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50LmNwcApAQCAtMjI4Myw3ICsyMjgzLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1v
dmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBv
bGRQYXIKIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAg
ICAgaWYgKGF1dG8qIHRpbWVsaW5lID0gZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0g
ICAgICAgIHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCgqdGhpcyk7CisgICAgICAgIHRpbWVs
aW5lLT5lbGVtZW50V2FzUmVtb3ZlZCh7ICp0aGlzLCBwc2V1ZG9JZCgpIH0pOwogCiAjaWYgRU5B
QkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgp
KSB7CkBAIC0zODAzLDQyICszODAzLDQyIEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSogRWxl
bWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYKIAotRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgpIGNvbnN0
CitFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhKFBz
ZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxl
bWVudFJhcmVEYXRhKCktPmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIDogbnVsbHB0cjsKKyAg
ICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5hbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkgOiBudWxscHRyOwogfQogCi1FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEm
IEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK0VsZW1lbnRBbmltYXRpb25SYXJl
RGF0YSYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQp
CiB7Ci0gICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKCk7CisgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKHBzZXVkb0lkKTsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVu
dDo6a2V5ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CitLZXlmcmFtZUVmZmVjdFN0YWNrKiBFbGVt
ZW50OjprZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAg
IGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAo
YXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAg
ICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKTsKICAgICByZXR1
cm4gbnVsbHB0cjsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpCitLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50OjplbnN1cmVL
ZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIHJldHVybiBlbnN1
cmVBbmltYXRpb25SYXJlRGF0YSgpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICBy
ZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKTsKIH0KIAotYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25z
dAorYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQgcHNldWRvSWQpIGNv
bnN0CiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgp
KSB7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1
ZG9JZCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBhbmltYXRp
b25EYXRhLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCiAgICAgICAgICAgICByZXR1cm4ga2V5ZnJh
bWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+
IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJT
dHlsZSYgdGFyZ2V0U3R5bGUpCiB7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gaW1w
YWN0OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVj
dFN0YWNrKCkuc29ydGVkRWZmZWN0cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3Qg
OiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5zb3J0ZWRFZmZlY3RzKCkpIHsK
ICAgICAgICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9uKCkpOwogICAgICAgICBlZmZlY3QtPmFu
aW1hdGlvbigpLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKIApAQCAtMzg1Miw3MiArMzg1Miw3MiBA
QCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0
cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKLWNvbnN0
IEFuaW1hdGlvbkNvbGxlY3Rpb24qIEVsZW1lbnQ6OmFuaW1hdGlvbnMoKSBjb25zdAorY29uc3Qg
QW5pbWF0aW9uQ29sbGVjdGlvbiogRWxlbWVudDo6YW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9J
ZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVE
YXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uRGF0YS0+YW5pbWF0aW9ucygpOwog
ICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5z
aXRpb25zRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK2Jvb2wgRWxl
bWVudDo6aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShQc2V1ZG9JZCBwc2V1ZG9J
ZCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0
aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRh
dGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRp
b25EYXRhLT5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0
eSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFu
c2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Citib29sIEVs
ZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkIHBzZXVkb0lk
LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmIChhdXRvKiBhbmltYXRp
b25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0
YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFuaW1hdGlv
bkRhdGEtPnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7
CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0
aW9ucygpIGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9J
ZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1h
dGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25S
YXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAhYW5pbWF0aW9uRGF0YS0+cnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLmlzRW1wdHkoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9
CiAKLUFuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMoKQorQW5p
bWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1
ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25z
KCk7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRp
b25zKCk7CiB9CiAKLUNTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1hdGlvbnND
cmVhdGVkQnlNYXJrdXAoKQorQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6YW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5z
dXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CisgICAg
cmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwKCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1h
cmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykKK3ZvaWQgRWxlbWVudDo6
c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NTQW5pbWF0
aW9uQ29sbGVjdGlvbiYmIGFuaW1hdGlvbnMpCiB7Ci0gICAgZW5zdXJlQW5pbWF0aW9uUmFyZURh
dGEoKS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOwor
ICAgIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5zZXRBbmltYXRpb25zQ3JlYXRl
ZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOwogfQogCi1Qcm9wZXJ0eVRvVHJhbnNpdGlv
bk1hcCYgRWxlbWVudDo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK1By
b3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9u
c0J5UHJvcGVydHkoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisgICAgcmV0
dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5jb21wbGV0ZWRUcmFuc2l0aW9u
c0J5UHJvcGVydHkoKTsKIH0KIAotUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmVu
c3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKQorUHJvcGVydHlUb1RyYW5zaXRpb25N
YXAmIEVsZW1lbnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQg
cHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQogCi1jb25z
dCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpIGNvbnN0
Citjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQ
c2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9
IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmlt
YXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRhLT5s
YXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZv
aWQgRWxlbWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8
Y29uc3QgUmVuZGVyU3R5bGU+JiYgc3R5bGUpCit2b2lkIEVsZW1lbnQ6OnNldExhc3RTdHlsZUNo
YW5nZUV2ZW50U3R5bGUoUHNldWRvSWQgcHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBS
ZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFu
aW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRp
b25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIGFuaW1hdGlvbkRhdGEtPnNldExhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgIGVsc2UgaWYgKHN0eWxlKQot
ICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUoV1RGTW92ZShzdHlsZSkpOworICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9
CiAKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQpAQCAtNDU0Miw4ICs0NTQyLDggQEAgVmVj
dG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFs
PEdldEFuaW1hdGlvbnNPcHRpb24KICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQo
KTsKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKLSAgICBp
ZiAoa2V5ZnJhbWVFZmZlY3RTdGFjaygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWZmZWN0IDog
a2V5ZnJhbWVFZmZlY3RTdGFjaygpLT5zb3J0ZWRFZmZlY3RzKCkpIHsKKyAgICBpZiAoYXV0byog
ZWZmZWN0U3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKSkgeworICAg
ICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsK
ICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAg
ICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CiAgICAg
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGY2NTE5MzdhNjAxYjdiYjUyNmU2YjFiMGVhMjNm
ZGVjNGJhMzNhMTguLjYxMWUxMTA4ZDFjZWUwZjYzMWE3Nzg3MzQ2YWU5NWFiMjA4NGI2MTMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnQuaApAQCAtNDg2LDIzICs0ODYsMjQgQEAgcHVibGljOgogICAgIHZvaWQg
Y2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzKCkgeyBjbGVhck5vZGVGbGFnKE5vZGVGbGFnOjpIYXNQ
ZW5kaW5nUmVzb3VyY2VzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJj
ZSgpIHsgfTsKIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2so
KSBjb25zdDsKLSAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0
YWNrKCk7Ci0gICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKLSAgICBPcHRpb25T
ZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYpOwot
Ci0gICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0OwotICAg
IGJvb2wgaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBj
b25zdDsKLSAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3Bl
cnR5SUQpIGNvbnN0OwotICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb25zKCkgY29uc3Q7Ci0g
ICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucygpOwotICAgIFByb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsK
LSAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQ
cm9wZXJ0eSgpOwotICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAoKTsKLSAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5p
bWF0aW9uQ29sbGVjdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0U3R5bGVD
aGFuZ2VFdmVudFN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVu
dFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJik7CisgICAgS2V5ZnJh
bWVFZmZlY3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCkgY29uc3Q7CisgICAg
S2V5ZnJhbWVFZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCk7
CisgICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQpIGNvbnN0OworICAgIE9wdGlv
blNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkLCBSZW5k
ZXJTdHlsZSYpOworCisgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucyhQ
c2V1ZG9JZCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3Bl
cnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1bm5pbmdU
cmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAg
ICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgQW5pbWF0
aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCk7CisKKyAgICBQcm9wZXJ0
eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KFBz
ZXVkb0lkKTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eShQc2V1ZG9JZCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYg
YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRBbmltYXRp
b25zQ3JlYXRlZEJ5TWFya3VwKFBzZXVkb0lkLCBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOwor
CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRv
SWQpIGNvbnN0OworICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9J
ZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogI2lmIEVOQUJMRShG
VUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVu
dCk7IH0KQEAgLTcxNiw4ICs3MTcsOCBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSog
ZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVt
ZW50UmFyZURhdGEoKTsKIAotICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9u
UmFyZURhdGEoKSBjb25zdDsKLSAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFu
aW1hdGlvblJhcmVEYXRhKCk7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBhbmltYXRp
b25SYXJlRGF0YShQc2V1ZG9JZCkgY29uc3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
JiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAKICAgICB2aXJ0dWFsIGludCBk
ZWZhdWx0VGFiSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnRSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRh
LmNwcAppbmRleCBlNzJmMzJjOTFmNzQ4YmExNmNmNTIzNTNiMzg1Y2NlYTllNTdlZjEyLi42MjQ2
NTUwNDVmYTlkZDU0MzgxZDY0NDcyZGYwNjE4ODk2MmVmZmY3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudFJhcmVEYXRhLmNwcApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7
CiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7CiAgICAg
TGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXllclNjcm9s
bFBvc2l0aW9uOwotICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKKyAgICBIYXNoTWFwPFBzZXVkb0lk
LCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPiwgV1RGOjpJbnRIYXNo
PFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+IGFuaW1hdGlv
blJhcmVEYXRhOworICAgIHZvaWQqIHBvaW50ZXJzWzEwXTsKICNpZiBFTkFCTEUoSU5URVJTRUNU
SU9OX09CU0VSVkVSKQogICAgIHZvaWQqIGludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKICNlbmRp
ZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291
cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDFhMzVlNWZjMjExNDRkYmVi
YmZkOTkxNGY4NGExMTgwNDZiYjEzYzkuLjVlNzVjYjczYjI2MTg1NWU3YWI3MGM5MTU1YmFkZjIz
NDc5Nzc3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTg5LDggKzg5
LDggQEAgcHVibGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNv
bnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRT
YXZlZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVy
U2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVE
YXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVE
YXRhLmdldCgpOyB9Ci0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRp
b25SYXJlRGF0YSgpOworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFy
ZURhdGEoUHNldWRvSWQpIGNvbnN0OworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgZW5z
dXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQpOwogCiAgICAgRE9NVG9rZW5MaXN0KiBwYXJ0
TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydExpc3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBh
cnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxET01Ub2tlbkxpc3Q+IHBhcnRMaXN0KSB7IG1fcGFydExp
c3QgPSBXVEZNb3ZlKHBhcnRMaXN0KTsgfQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAg
ICAgICAgaWYgKG1fcmVzaXplT2JzZXJ2ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0LmFkZChV
c2VUeXBlOjpSZXNpemVPYnNlcnZlcik7CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9u
UmFyZURhdGEpCisgICAgICAgIGlmICghbV9hbmltYXRpb25SYXJlRGF0YS5pc0VtcHR5KCkpCiAg
ICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAgICBpZiAo
bV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQogICAgICAgICAg
ICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQc2V1ZG9FbGVtZW50cyk7CkBAIC0xNzUsNyArMTc1LDcg
QEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRhPiBtX3Jl
c2l6ZU9ic2VydmVyRGF0YTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRB
bmltYXRpb25SYXJlRGF0YT4gbV9hbmltYXRpb25SYXJlRGF0YTsKKyAgICBIYXNoTWFwPFBzZXVk
b0lkLCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPiwgV1RGOjpJbnRI
YXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+IG1fYW5p
bWF0aW9uUmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZvcmVQc2V1
ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRvRWxlbWVu
dDsKQEAgLTIzNywxMSArMjM3LDE5IEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0YTo6c2V0
VW51c3VhbFRhYkluZGV4KGludCB0YWJJbmRleCkKICAgICBtX3VudXN1YWxUYWJJbmRleCA9IHRh
YkluZGV4OwogfQogCi1pbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVtZW50UmFy
ZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK2lubGluZSBFbGVtZW50QW5pbWF0aW9u
UmFyZURhdGEqIEVsZW1lbnRSYXJlRGF0YTo6YW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNl
dWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FuaW1hdGlvblJhcmVEYXRhKQotICAgICAgICBt
X2FuaW1hdGlvblJhcmVEYXRhID0gbWFrZVVuaXF1ZTxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+
KCk7Ci0gICAgcmV0dXJuICptX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOworICAgIGF1dG8gaXQg
PSBtX2FuaW1hdGlvblJhcmVEYXRhLmZpbmQocHNldWRvSWQpOworICAgIGlmIChpdCA9PSBtX2Fu
aW1hdGlvblJhcmVEYXRhLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICByZXR1
cm4gaXQtPnZhbHVlLmdldCgpOworfQorCitpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
JiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lkIHBzZXVk
b0lkKQoreworICAgIHJldHVybiAqbV9hbmltYXRpb25SYXJlRGF0YS5lbnN1cmUocHNldWRvSWQs
IFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRh
PigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2Ug
V2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGRhZDE1NjZjYzA2
YTNkMTRkNmJjYjdjNTA3NmVjYzE4YjZjN2E3NjcuLjA2YzU3MDc4OTE4ZWMzMThkODc2MzZjNTgy
ZGFiMDdkNTI1Njg2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTkw
LDcgKzkwLDcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQo
KS5wYWdlKCksICp0aGlzKTsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3VtZW50KCku
ZXhpc3RpbmdUaW1lbGluZSgpKQotICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQo
KnRoaXMpOworICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoU3R5bGVhYmxlKCpt
X2hvc3RFbGVtZW50LCBwc2V1ZG9JZCgpKSk7CiAgICAgCiAgICAgbV9ob3N0RWxlbWVudCA9IG51
bGxwdHI7CiB9CkBAIC0xMDIsOCArMTAyLDEwIEBAIGJvb2wgUHNldWRvRWxlbWVudDo6cmVuZGVy
ZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIGJvb2wgUHNldWRvRWxlbWVu
dDo6aXNUYXJnZXRlZEJ5S2V5ZnJhbWVFZmZlY3RSZXF1aXJpbmdQc2V1ZG9FbGVtZW50KCkKIHsK
LSAgICBpZiAoYXV0byogc3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKCkpCi0gICAgICAgIHJl
dHVybiBzdGFjay0+cmVxdWlyZXNQc2V1ZG9FbGVtZW50KCk7CisgICAgaWYgKG1faG9zdEVsZW1l
bnQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0YWNrID0gbV9ob3N0RWxlbWVudC0+a2V5ZnJhbWVF
ZmZlY3RTdGFjayhwc2V1ZG9JZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGFjay0+cmVxdWly
ZXNQc2V1ZG9FbGVtZW50KCk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAKaW5kZXgg
ZjE2N2MzYjJjYzJlMDJjN2E2YTE1YjYwOGM3YmFjZmE2ZmY2MDU4Yi4uMjI4MDhkYTlmMjlmOTUz
MjMzMzdjYTM3OGFiM2I3YWY4YjMwMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNzA4LDcgKzI3MDgsNyBAQCBib29s
IFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zKCkg
Y29uc3QKIHsKICAgICBpZiAoYXV0byogbm9kZSA9IGVsZW1lbnQoKSkgewogICAgICAgICBpZiAo
YXV0byogdGltZWxpbmUgPSBub2RlLT5kb2N1bWVudCgpLmV4aXN0aW5nVGltZWxpbmUoKSkKLSAg
ICAgICAgICAgIHJldHVybiB0aW1lbGluZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVtZW50QXJl
QWxsQWNjZWxlcmF0ZWQoKm5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRpbWVsaW5lLT5ydW5u
aW5nQW5pbWF0aW9uc0ZvclJlbmRlcmVyQXJlQWxsQWNjZWxlcmF0ZWQoKnRoaXMpOwogICAgIH0K
ICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5jcHAKaW5kZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0ODAyYi4u
MDI4MjQ3MGJlMzk0MWIxN2EyZGI1MTVjZGZmNDhmODdhZDM0YWFiMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjMwNSw0ICsyMzA1LDExIEBAIHN0
ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6YW5pbWF0ZWRTdHlsZSgp
CiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorT3B0aW9uYWw8U3R5bGVhYmxlPiBSZW5kZXJFbGVt
ZW50OjpzdHlsZWFibGUoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBlbGVtZW50ID0gdGhpcy0+
ZWxlbWVudCgpKQorICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCplbGVtZW50LCBlbGVtZW50LT5w
c2V1ZG9JZCgpKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiYTM0OGI3YTUzOTA4ZjkxMDlkNzVh
NDRmZTBlYmFhMTc1ZDU1NDg2Li41MWQyODdlMjMzMWM1Mzk5MWMwYzZhM2Q5M2I3MjliMTQ3M2My
Zjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAgLTI0LDYg
KzI0LDcgQEAKIAogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUgIlJlbmRl
ck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKQEAgLTY2LDYgKzY3LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGVsZW1lbnQoKSBjb25z
dCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50PihSZW5kZXJPYmplY3Q6Om5vZGUoKSk7IH0KICAg
ICBFbGVtZW50KiBub25Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNhc3Q8RWxl
bWVudD4oUmVuZGVyT2JqZWN0Ojpub25Qc2V1ZG9Ob2RlKCkpOyB9CiAgICAgRWxlbWVudCogZ2Vu
ZXJhdGluZ0VsZW1lbnQoKSBjb25zdDsKKyAgICBPcHRpb25hbDxTdHlsZWFibGU+IHN0eWxlYWJs
ZSgpIGNvbnN0OwogCiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3QgeyByZXR1
cm4gbV9maXJzdENoaWxkOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBjb25zdCB7
IHJldHVybiBtX2xhc3RDaGlsZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
UmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMjM5YzRhNDQ4MGFlZTcyYTM5MmIzNmM1
MjQ1YjdjZDQxZDYyZDM3Li43ZTg5NTRmNDU3NzI3NTRhNDg3ZTcwYzcwM2I4YWZkODY5NjU4YzUx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3Np
dG9yLmNwcApAQCAtMjk1OSw4ICsyOTU5LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6
OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAg
ICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1hdGlvblRy
aWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoYXV0byogZWxlbWVudCA9
IHJlbmRlcmVyLmVsZW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0g
ZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpKSB7CisgICAgaWYgKGF1dG8gc3R5bGVhYmxl
ID0gcmVuZGVyZXIuc3R5bGVhYmxlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGVmZmVjdHNTdGFj
ayA9IHN0eWxlYWJsZS0+ZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNrKHN0eWxlYWJsZS0+cHNl
dWRvSWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gKGVmZmVjdHNTdGFjay0+aXNDdXJyZW50bHlB
ZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpCiAgICAgICAgICAgICAgICAgJiYg
KHVzZXNDb21wb3NpdGluZygpIHx8IChtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGll
bnQ6OkFuaW1hdGVkT3BhY2l0eVRyaWdnZXIpKSkKICAgICAgICAgICAgICAgICB8fCBlZmZlY3Rz
U3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0ZXIpCkBA
IC0zNDk0LDggKzM0OTQsOCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5n
VHJhbnNmb3JtQW5pbWF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAgICAgaWYgKCEobV9j
b21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRpb25UcmlnZ2VyKSkKICAg
ICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5l
bGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGVmZmVjdHNTdGFjayA9IGVsZW1lbnQtPmtl
eWZyYW1lRWZmZWN0U3RhY2soKSkKKyAgICBpZiAoYXV0byBzdHlsZWFibGUgPSByZW5kZXJlci5z
dHlsZWFibGUoKSkgeworICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gc3R5bGVhYmxl
LT5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkpCiAgICAg
ICAgICAgICByZXR1cm4gZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5
KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCmluZGV4IGU3NGM0
MTI1NjMyMjg1ZGMzMDA5Y2U0MzQwOTAwMjliMWE3ZGJmZDYuLjBjMTI1NzU4ODAyODc5YzBlMDUx
OTAzMzBjNGQ2NjhmZGE5ZjNlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcApAQCAtOTQzLDYgKzk0Myw3IEBA
IFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFBzZXVkb0lkIHBzZXVkb0lk
KQogICAgIGNhc2UgUHNldWRvSWQ6Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CiAgICAgY2Fz
ZSBQc2V1ZG9JZDo6Rmlyc3RMaW5lOiB0cyA8PCAiZmlyc3QtbGluZSI7IGJyZWFrOwogICAgIGNh
c2UgUHNldWRvSWQ6OkZpcnN0TGV0dGVyOiB0cyA8PCAiZmlyc3QtbGV0dGVyIjsgYnJlYWs7Cisg
ICAgY2FzZSBQc2V1ZG9JZDo6SGlnaGxpZ2h0OiB0cyA8PCAiaGlnaGxpZ2h0IjsgYnJlYWs7CiAg
ICAgY2FzZSBQc2V1ZG9JZDo6TWFya2VyOiB0cyA8PCAibWFya2VyIjsgYnJlYWs7CiAgICAgY2Fz
ZSBQc2V1ZG9JZDo6QmVmb3JlOiB0cyA8PCAiYmVmb3JlIjsgYnJlYWs7CiAgICAgY2FzZSBQc2V1
ZG9JZDo6QWZ0ZXI6IHRzIDw8ICJhZnRlciI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNTY0
ZGQ1ZDViMDJjMGMxN2NmOWJkNzlmYmVkYzEwNzI1M2JmNzk3MS4uNThlY2RmM2FhYTEwNDRjMGVi
ZmY5MjZhMjE2MWMzMWNjYjY5MjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC01NTgsMTQgKzU1OCwx
NCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyhFbGVtZW50JiBy
b290LCBUZWFyZG93blR5cGUgdGVhcmRvd25UeQogICAgICAgICAgICAgY2FzZSBUZWFyZG93blR5
cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2VsaW5nQW5pbWF0aW9uczoKICAgICAgICAgICAgICAgICBp
ZiAodGltZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJlbmRlclRy
ZWVCZWluZ0Rlc3Ryb3llZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPmNh
bmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2ViQW5pbWF0aW9u
OjpTaWxlbnRseTo6WWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5jYW5j
ZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoeyBlbGVtZW50LCBlbGVtZW50LnBz
ZXVkb0lkKCkgfSwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKICAgICAgICAgICAgICAg
ICAgICAgZWxzZSBpZiAodGVhcmRvd25UeXBlID09IFRlYXJkb3duVHlwZTo6UmVuZGVyZXJVcGRh
dGVDYW5jZWxpbmdBbmltYXRpb25zKQotICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUt
PmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2ViQW5pbWF0
aW9uOjpTaWxlbnRseTo6Tm8pOworICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPmNh
bmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSh7IGVsZW1lbnQsIGVsZW1lbnQu
cHNldWRvSWQoKSB9LCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpObyk7CiAgICAgICAgICAgICAg
ICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUZWFyZG93blR5
cGU6OlJlbmRlcmVyVXBkYXRlOgogICAgICAgICAgICAgICAgIGlmICh0aW1lbGluZSkKLSAgICAg
ICAgICAgICAgICAgICAgdGltZWxpbmUtPndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoZWxl
bWVudCk7CisgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lLT53aWxsQ2hhbmdlUmVuZGVyZXJG
b3JTdHlsZWFibGUoeyBlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkgfSk7CiAgICAgICAgICAg
ICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxl
VHJlZVJlc29sdmVyLmNwcAppbmRleCA1OWRhNDFlZGFhYWQ5OGVmZDk3N2I5ZDQ3Njc2MWI3NjU2
YjYyYmIxLi4yMTE2NDQzNzc0NTJjMWQ2ODM4N2JiNDFjM2E0NWI3ODExOTE0OGQ5IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0yMTcsNyArMjE3LDcg
QEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVtZW50JiBl
bGVtZW50KQogICAgICAgICBtX2RvY3VtZW50LnNldEhhc05vZGVzV2l0aE5vbkZpbmFsU3R5bGUo
KTsKICAgICB9CiAKLSAgICBhdXRvIHVwZGF0ZSA9IGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0
ZShXVEZNb3ZlKG5ld1N0eWxlKSwgZWxlbWVudCwgcGFyZW50KCkuY2hhbmdlKTsKKyAgICBhdXRv
IHVwZGF0ZSA9IGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKG5ld1N0eWxlKSwg
eyBlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSB9LCBwYXJlbnQoKS5jaGFuZ2UpOwogICAgIGF1dG8g
ZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBjb21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUodXBkYXRl
LmNoYW5nZSwgZWxlbWVudC5zdHlsZVZhbGlkaXR5KCksIHBhcmVudCgpLmRlc2NlbmRhbnRzVG9S
ZXNvbHZlKTsKIAogICAgIGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50RWxlbWVu
dCgpKSB7CkBAIC0yNzcsNyArMjc3LDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OnJl
c29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXAKICAgICBp
ZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgpKSAmJiAh
aGFzQW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBjcmVhdGVB
bmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIGVsZW1lbnQuZW5zdXJl
UHNldWRvRWxlbWVudChwc2V1ZG9JZCksIGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKKyAgICByZXR1
cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRvU3R5bGUpLCB7IGVs
ZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKIH0KIAogY29uc3QgUmVu
ZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdApAQCAtMzA2LDkg
KzMwNiwyMyBAQCBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHls
ZUZvclBzZXVkbyhjb25zdCBFbGVtZW50VXBkYXRlJiBlbAogICAgIH0KIH0KIAotRWxlbWVudFVw
ZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1
ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBFbGVtZW50JiBlbGVtZW50LCBDaGFuZ2UgcGFy
ZW50Q2hhbmdlKQorRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxl
bWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBjb25zdCBT
dHlsZWFibGUmIHN0eWxlYWJsZSwgQ2hhbmdlIHBhcmVudENoYW5nZSkKIHsKLSAgICBhdXRvKiBv
bGRTdHlsZSA9IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOworICAgIGF1
dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUuZWxlbWVudDsKKworICAgIC8vIEZJWE1FOiBJZGVhbGx5
IHdlIGNvdWxkIGp1c3QgY2FsbCBFbGVtZW50OjpyZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxl
KCkgd2l0aCBhIFBzZXVkb0lkCisgICAgLy8gYW5kIGdldCB0aGUgc3R5bGUgZm9yIGFueSBQc2V1
ZG9JZCwgbm90IGp1c3QgUHNldWRvSWQ6OkJlZm9yZSBvciBQc2V1ZG9JZDo6QWZ0ZXIuCisgICAg
YXV0byogcHNldWRvRWxlbWVudCA9IFtzdHlsZWFibGVdKCkgLT4gUHNldWRvRWxlbWVudCogewor
ICAgICAgICBzd2l0Y2ggKHN0eWxlYWJsZS5wc2V1ZG9JZCkgeworICAgICAgICBjYXNlIFBzZXVk
b0lkOjpCZWZvcmU6CisgICAgICAgICAgICByZXR1cm4gc3R5bGVhYmxlLmVsZW1lbnQuYmVmb3Jl
UHNldWRvRWxlbWVudCgpOworICAgICAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKKyAgICAgICAg
ICAgIHJldHVybiBzdHlsZWFibGUuZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsKKyAgICAg
ICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9CisgICAg
fSgpOworICAgIGF1dG8qIG9sZFN0eWxlID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0VsZW1lbnQt
PnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSA6IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5
Q29udGVudHNTdHlsZSgpOwogCiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gYW5pbWF0
aW9uSW1wYWN0OwogCkBAIC0zMTcsMTYgKzMzMSwxNiBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNv
bHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dAogICAgIC8vIGluIGNhc2Ugbm8gV2ViIEFuaW1hdGlvbnMgaGF2ZSBiZWVuIGNyZWF0ZWQgdGhy
b3VnaCB0aGUgSlMgQVBJLgogICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuYmFja0ZvcndhcmRD
YWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSAmJiAhZWxlbWVu
dC5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cHJpbnRpbmcoKSkgewogICAgICAgICBpZiAob2xk
U3R5bGUgJiYgKG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygpIHx8IG5ld1N0eWxlLT5oYXNUcmFu
c2l0aW9ucygpKSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgKm9sZFN0eWxlLCAqbmV3U3R5bGUpOworICAg
ICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5
bGVhYmxlKHN0eWxlYWJsZSwgKm9sZFN0eWxlLCAqbmV3U3R5bGUpOwogCiAgICAgICAgIC8vIFRo
ZSBvcmRlciBpbiB3aGljaCBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25zIGFyZSB1
cGRhdGVkIG1hdHRlcnMgc2luY2UgQ1NTIFRyYW5zaXRpb25zIGRlZmluZSB0aGUgYWZ0ZXItY2hh
bmdlIHN0eWxlCiAgICAgICAgIC8vIHRvIHVzZSBDU1MgQW5pbWF0aW9ucyBhcyBkZWZpbmVkIGlu
IHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuIEFzIHN1Y2gsIHdlIHVwZGF0ZSBDU1Mg
QW5pbWF0aW9ucyBhZnRlciBDU1MgVHJhbnNpdGlvbnMKICAgICAgICAgLy8gc3VjaCB0aGF0IHdo
ZW4gQ1NTIFRyYW5zaXRpb25zIGFyZSB1cGRhdGVkIHRoZSBDU1MgQW5pbWF0aW9ucyBkYXRhIGlz
IHRoZSBzYW1lIGFzIGR1cmluZyB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50LgogICAg
ICAgICBpZiAoKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNBbmltYXRpb25zKCkpIHx8IG5ld1N0
eWxlLT5oYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1vdmUgdGhp
cyBoYWNrIGFuZCBwYXNzIHRoZSBwYXJlbnQgc3R5bGUgdmlhIHVwZGF0ZUNTU0FuaW1hdGlvbnNG
b3JFbGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGhhY2sgYW5kIHBh
c3MgdGhlIHBhcmVudCBzdHlsZSB2aWEgdXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0eWxlYWJsZS4K
ICAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxlRm9yS2V5
ZnJhbWVzKCZwYXJlbnQoKS5zdHlsZSk7CiAKLSAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxp
bmUoKS51cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBvbGRTdHlsZSwgKm5l
d1N0eWxlKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVDU1NBbmlt
YXRpb25zRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgb2xkU3R5bGUsICpuZXdTdHlsZSk7CiAKICAg
ICAgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxlRm9yS2V5ZnJh
bWVzKG51bGxwdHIpOwogICAgICAgICB9CkBAIC0zMzQsMTUgKzM0OCwxNSBAQCBFbGVtZW50VXBk
YXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdAogCiAgICAgLy8gTm93IHdlIGNhbiB1cGRhdGUgYWxsIFdlYiBhbmltYXRp
b25zLCB3aGljaCB3aWxsIGluY2x1ZGUgQ1NTIEFuaW1hdGlvbnMgYXMgd2VsbAogICAgIC8vIGFz
IGFuaW1hdGlvbnMgY3JlYXRlZCB2aWEgdGhlIEpTIEFQSS4KLSAgICBpZiAoZWxlbWVudC5oYXNL
ZXlmcmFtZUVmZmVjdHMoKSkgeworICAgIGlmIChlbGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0cyhz
dHlsZWFibGUucHNldWRvSWQpKSB7CiAgICAgICAgIC8vIFJlY29yZCB0aGUgc3R5bGUgcHJpb3Ig
dG8gYXBwbHlpbmcgYW5pbWF0aW9ucyBmb3IgdGhpcyBzdHlsZSBjaGFuZ2UgZXZlbnQuCi0gICAg
ICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xv
bmVQdHIoKm5ld1N0eWxlKSk7CisgICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZl
bnRTdHlsZShzdHlsZWFibGUucHNldWRvSWQsIFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5
bGUpKTsKICAgICAgICAgLy8gQXBwbHkgYWxsIGtleWZyYW1lIGVmZmVjdHMgdG8gdGhlIG5ldyBz
dHlsZS4KICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNsb25lUHRy
KCpuZXdTdHlsZSk7Ci0gICAgICAgIGFuaW1hdGlvbkltcGFjdCA9IGVsZW1lbnQuYXBwbHlLZXlm
cmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUpOworICAgICAgICBhbmltYXRpb25JbXBhY3QgPSBl
bGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZlY3RzKHN0eWxlYWJsZS5wc2V1ZG9JZCwgKmFuaW1hdGVk
U3R5bGUpOwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7CiAgICAg
fSBlbHNlCi0gICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShudWxs
cHRyKTsKKyAgICAgICAgZWxlbWVudC5zZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKHN0eWxl
YWJsZS5wc2V1ZG9JZCwgbnVsbHB0cik7CiAKICAgICBpZiAoYW5pbWF0aW9uSW1wYWN0KQogICAg
ICAgICBBZGp1c3Rlcjo6YWRqdXN0QW5pbWF0ZWRTdHlsZSgqbmV3U3R5bGUsIHBhcmVudEJveFN0
eWxlKCksIGFuaW1hdGlvbkltcGFjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdHls
ZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVz
b2x2ZXIuaAppbmRleCAxYWZjOWE4YmJmNTlhNzI3ZDM1NWM2Mzc1NDg1MzE3YmE0NWVhYTljLi5j
Mjk3MzQyZmVlODU0OTRhOWE2YWJkMWNlOTgyOGQ5NzcyMjNjMTE4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNsdWRlICJT
dHlsZUNoYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hhcmluZ1Jlc29sdmVyLmgiCiAjaW5jbHVk
ZSAiU3R5bGVVcGRhdGUuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlIDx3dGYv
RnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTYwLDcgKzYxLDcgQEAgcHJp
dmF0ZToKIAogICAgIEVsZW1lbnRVcGRhdGVzIHJlc29sdmVFbGVtZW50KEVsZW1lbnQmKTsKIAot
ICAgIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVl
X3B0cjxSZW5kZXJTdHlsZT4sIEVsZW1lbnQmLCBDaGFuZ2UpOworICAgIEVsZW1lbnRVcGRhdGUg
Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4s
IGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSk7CiAgICAgRWxlbWVudFVwZGF0ZSByZXNvbHZlUHNl
dWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7CiAKICAg
ICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVkPFNjb3BlPiB7CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlYWJs
ZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAuLjc2OGIyMmJhN2M4YmQ5M2NiZTZiOTA0YjQ0OTAwNWZmZmE1MDNhNWEK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApAQCAt
MCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4gQWxsIHJp
Z2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBh
bmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBl
cm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1l
dDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUg
YWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFu
ZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmlu
YXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNl
LCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGlu
IHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVk
IHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVE
IEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBX
QVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVE
IFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VM
QVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJ
TkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVD
VCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBE
QU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9G
IFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICog
UFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04g
QU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1Qg
TElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNF
KSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUs
IEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8K
KworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5oIgorCitu
YW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CisKK3N0cnVjdCBTdHlsZWFibGUg
eworICAgIEVsZW1lbnQmIGVsZW1lbnQ7CisgICAgUHNldWRvSWQgcHNldWRvSWQ7CisKKyAgICBT
dHlsZWFibGUoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCisgICAgICAgIDog
ZWxlbWVudChlbGVtZW50KQorICAgICAgICAsIHBzZXVkb0lkKHBzZXVkb0lkKQorICAgIHsKKyAg
ICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVhYmxlJiBvdGhlcikgY29uc3QK
KyAgICB7CisgICAgICAgIHJldHVybiAoJmVsZW1lbnQgPT0gJm90aGVyLmVsZW1lbnQgJiYgcHNl
dWRvSWQgPT0gb3RoZXIucHNldWRvSWQpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShj
b25zdCBTdHlsZWFibGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRo
aXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRl
eCBlMWNlYmQ5MzExNTM2ODM3MThiZjM1YmYzZDNhYTVhYTQzYjliZWM3Li5lMjY3ODFkODY2Y2Ix
NTlmZDU4MjAxODY0NDAxY2Q0M2NhNTBlNTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFu
Z2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAKKzIwMjAt
MDktMjQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVk
dWNlIHRoZSByZWxpYW5jZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24gY29kZQor
ICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTMxCisK
KyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBkYXRlIGEg
Y291cGxlIG9mIHRlc3RzIHdoaWNoIHJlbGllZCBvbiBhbiBpbnRlcm5hbHMgbWV0aG9kIHRvIGdl
dCBhIHBzZXVkbyBlbGVtZW50IGFuZCBpbnN0ZWFkIHVzZQorICAgICAgICB0aGUgV2ViIEFuaW1h
dGlvbnMgQVBJIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gYW5pbWF0aW9uIHRhcmdldHMg
YSBwc2V1ZG8tZWxlbWVudC4gVGhpcyBoYXMgdGhlCisgICAgICAgIGFkZGVkIGJlbmVmaXQgb2Yg
aGF2aW5nIHRoZSBzYW1lIGNvZGUgcnVuIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudCBhcyBpbiBh
IHJlZ3VsYXIgYnJvd3Nlci4KKworICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L3BzZXVkby1hbmltYXRpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29u
dGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBEdW1leiAg
PGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2ViIGF1ZGlvIGFwaSBvdXRwdXRzIHNpbGVu
Y2UgZm9yIDMwMiByZWRpcmVjdGVkIHJlc291cmNlIGluIHNhZmFyaQpkaWZmIC0tZ2l0IGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3cz
Yy9DaGFuZ2VMb2cKaW5kZXggOTYzNWNiMTliNjViZDdkNjRlYTExMTQxNTI2MzU3NmE5NWEyYzVh
MC4uNTBiZjk1ZDM5MzY2MzVkMGI3ZWM4YjllYzM2Y2YxNDM3NDZlZmUxYyAxMDA2NDQKLS0tIGEv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9pbXBv
cnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDktMjQgIEFudG9pbmUg
UXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSByZWxpYW5j
ZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24gY29kZQorICAgICAgICBodHRwczov
L2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTMxCisKKyAgICAgICAgUmV2aWV3
ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBhIFdQVCB0ZXN0IHByb2dyZXNz
aW9uLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNpdGlvbnMv
bm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAyLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wOS0yNCAgRnJl
ZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVzeW5jIFdQVCdzIG1h
dGhtbCBhbmQgbWF0aC1zY3JpcHQtbGV2ZWwtYW5kLW1hdGgtc3R5bGUgdGVzdHMKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRp
b24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1h
bmltYXRpb24uaHRtbAppbmRleCBlMzA4NjVhYTMzY2ZmYmEyOWZiNjAzMzljMjYwMzRmMGNjZGFm
OGM3Li4yY2I0M2Q5YTUyMDljZTZlMDNmYTVkZTQ1Nzc0NWIxZGU0MWM0OTBiIDEwMDY0NAotLS0g
YS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9u
Lmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRv
LWFuaW1hdGlvbi5odG1sCkBAIC03OCwxNyArNzgsMTAgQEAgZnVuY3Rpb24gZ2V0UHNldWRvQ29t
cHV0ZWRUb3AoaWQpCiAvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBtb2RpZmllZCBzbyBz
dWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9mZiBieSBvbmUKIC8vIGJlbG93IGFuZCBpdCBubyBsb25n
ZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRvLgogCi1mdW5jdGlvbiBwYXVzZUFuaW1hdGlvbkF0VGlt
ZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50LCBwc2V1ZG9JZCkK
K2Z1bmN0aW9uIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGFuaW1hdGlvbk5h
bWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0VsZW1lbnQpCiB7Ci0gICAgY29uc3QgcHNldWRvRWxl
bWVudCA9IGludGVybmFscy5wc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkKTsKLSAgICBp
ZiAoIXBzZXVkb0VsZW1lbnQpIHsKLSAgICAgICAgY29uc29sZS5sb2coIkZhaWxlZCB0byBmaW5k
IHBzZXVkbyBlbGVtZW50Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBjb25zdCBh
bmltYXRpb25zID0gcHNldWRvRWxlbWVudC5nZXRBbmltYXRpb25zKCk7Ci0gICAgZm9yIChsZXQg
YW5pbWF0aW9uIG9mIGFuaW1hdGlvbnMpIHsKLSAgICAgICAgaWYgKGFuaW1hdGlvbiBpbnN0YW5j
ZW9mIENTU0FuaW1hdGlvbiAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmltYXRpb25O
YW1lICYmIGFuaW1hdGlvbi5lZmZlY3QuZ2V0S2V5ZnJhbWVzKCkubGVuZ3RoKSB7CisgICAgZm9y
IChsZXQgYW5pbWF0aW9uIG9mIGVsZW1lbnQuZ2V0QW5pbWF0aW9ucyh7IHN1YnRyZWU6IHRydWUg
fSkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbiBpbnN0YW5jZW9mIENTU0FuaW1hdGlvbiAmJiBh
bmltYXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmltYXRpb25OYW1lICYmIGFuaW1hdGlvbi5lZmZl
Y3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5wc2V1ZG9FbGVtZW50ID09
IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbi5jdXJyZW50VGltZSA9IHRp
bWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7CiAgICAgICAgICAgICBy
ZXR1cm4gdHJ1ZTsKQEAgLTk5LDM1ICs5MiwyMCBAQCBmdW5jdGlvbiBwYXVzZUFuaW1hdGlvbkF0
VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50LCBwc2V1ZAog
CiBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9uKGlkKQogeworICAgIGNvbnN0IHBzZXVkb0VsZW1lbnQg
PSBgOjoke2lkfWA7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsK
ICAgICBkaXYuY2xhc3NOYW1lID0gJ2FuaW1hdGUnOwogICAgIHdpbmRvdy5kaXYgPSBkaXY7CiAg
ICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAgIGlmICh3aW5kb3cuaW50
ZXJuYWxzKSB7Ci0gICAgICAgIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCdl
eGFtcGxlJywgMS4wLCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zm
c2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0
ZWRUb3AoaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAx
KTsKLSAgICAgICAgcGF1c2VBbmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ2V4YW1wbGUn
LCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0
aCcsIDEyLCAxKTsKLSAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChp
ZCk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwotICAg
IH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBmbGFreSwgYnV0IGl0J3MgYSByZWFz
b25hYmxlIGFwcHJveGltYXRpb24gZm9yIHRlc3RpbmcKLSAgICAgICAgLy8gaW4gYSBicm93c2Vy
IGluc3RlYWQgb2YgRFJULgotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAg
ICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2
Lm9mZnNldFdpZHRoJywgMjAsIDEpOwotICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1
ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVk
VG9wJywgMTcwLCAxKTsKLSAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hv
dWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAxMiwgMSk7Ci0gICAgICAgICAgICBjb21w
dXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNob3VsZEJl
Q2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwotICAgICAgICB9LCAyMDAwKTsKLSAgICB9
CisKKyAgICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScsIDEu
MCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRX
aWR0aCcsIDIwLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlk
KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKKyAgICBwYXVz
ZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScsIDIuMCwgZGl2LCBwc2V1
ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAx
KTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91
bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0gZnVuY3Rp
b24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVu
dC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVk
LWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24uaHRtbAppbmRleCA5YTc0MmZlOGExNmZkZjMwMDQ5
ZmY3MTEyMzYxNjQzZWJiOWQyYTg2Li5iYzRhMTZiYzRlNDc3MjdlOTNiZTJkMjFiZWQ3NGM4ODRj
NTBiZDdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVu
dC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVy
YXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwKQEAgLTU2LDYzICs1Niw0MSBAQCBm
dW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCkKIGNvbnN0IHByZWZpeCA9ICItd2Via2l0
LSI7CiBjb25zdCBwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4ID0gWyItd2Via2l0LXRleHQtc3Ry
b2tlLWNvbG9yIiwgIi13ZWJraXQtdGV4dC1maWxsLWNvbG9yIl07CiAKLWZ1bmN0aW9uIHBhdXNl
VHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCh0cmFuc2l0aW9uUHJvcGVydHksIHRpbWUs
IGVsZW1lbnQsIHBzZXVkb0lkKQorZnVuY3Rpb24gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1
ZG9FbGVtZW50KHRyYW5zaXRpb25Qcm9wZXJ0eSwgdGltZSwgZWxlbWVudCwgcHNldWRvRWxlbWVu
dCkKIHsKLSAgICBjb25zdCBwc2V1ZG9FbGVtZW50ID0gaW50ZXJuYWxzLnBzZXVkb0VsZW1lbnQo
ZWxlbWVudCwgcHNldWRvSWQpOwotICAgIGlmICghcHNldWRvRWxlbWVudCkgewotICAgICAgICBj
b25zb2xlLmxvZygiRmFpbGVkIHRvIGZpbmQgcHNldWRvIGVsZW1lbnQiKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydHkuc3RhcnRzV2l0aChwcmVm
aXgpICYmICFwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4LmluY2x1ZGVzKHRyYW5zaXRpb25Qcm9w
ZXJ0eSkpCiAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IHRyYW5zaXRpb25Qcm9wZXJ0eS5z
dWJzdHIocHJlZml4Lmxlbmd0aCk7CiAKLSAgICAvLyBPdGhlcndpc2UsIHVzZSB0aGUgV2ViIEFu
aW1hdGlvbnMgQVBJLgotICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBwc2V1ZG9FbGVtZW50LmdldEFu
aW1hdGlvbnMoKTsKLSAgICBmb3IgKGxldCBhbmltYXRpb24gb2YgYW5pbWF0aW9ucykgewotICAg
ICAgICBpZiAoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTVHJhbnNpdGlvbiAmJiBhbmltYXRpb24u
dHJhbnNpdGlvblByb3BlcnR5ID09IHRyYW5zaXRpb25Qcm9wZXJ0eSkgeworICAgIGZvciAobGV0
IGFuaW1hdGlvbiBvZiBlbGVtZW50LmdldEFuaW1hdGlvbnMoeyBzdWJ0cmVlOiB0cnVlIH0pKSB7
CisgICAgICAgIGlmIChhbmltYXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uICYmIGFuaW1h
dGlvbi50cmFuc2l0aW9uUHJvcGVydHkgPT0gdHJhbnNpdGlvblByb3BlcnR5ICYmIGFuaW1hdGlv
bi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5wc2V1ZG9FbGVt
ZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbi5jdXJyZW50VGlt
ZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKwogICAgIGNvbnNvbGUubG9nKGBB
IHRyYW5zaXRpb24gZm9yIHByb3BlcnR5ICR7dHJhbnNpdGlvblByb3BlcnR5fSBjb3VsZCBub3Qg
YmUgZm91bmRgKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGZ1bmN0aW9uIHRlc3RUcmFuc2l0
aW9uKGlkKQogeworICAgIGNvbnN0IHBzZXVkb0VsZW1lbnQgPSBgOjoke2lkfWA7CiAgICAgdmFy
IGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBkaXYuY2xhc3NOYW1lID0g
J3RyYW5zaXRpb24nOwogICAgIHdpbmRvdy5kaXYgPSBkaXY7CiAgICAgc2hvdWxkQmUoJ2Rpdi5v
ZmZzZXRXaWR0aCcsICc1MicpOwotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAg
IHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAxLjAsIGRpdiwg
aWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsK
LSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAxLjAs
IGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlk
KTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7Ci0gICAg
ICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAyLjAsIGRp
diwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAx
KTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAy
LjAsIGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9w
KGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0g
ICAgfSBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGZsYWt5LCBidXQgaXQncyBhIHJl
YXNvbmFibGUgYXBwcm94aW1hdGlvbiBmb3IgdGVzdGluZwotICAgICAgICAvLyBpbiBhIGJyb3dz
ZXIgaW5zdGVhZCBvZiBEUlQuCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAg
ICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdk
aXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBz
ZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0
ZWRUb3AnLCAxNzAsIDEpOwotICAgICAgICB9LCAxMDAwKTsKLSAgICAgICAgc2V0VGltZW91dChm
dW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBz
aG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgICAgIGNv
bXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICAgICAgc2hvdWxk
QmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0gICAgICAgIH0sIDIwMDApOwotICAg
IH0KKworICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAx
LjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0
V2lkdGgnLCAyMCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50
KCd0b3AnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgY29tcHV0ZWRUb3AgPSBnZXRQ
c2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcs
IDE3MCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd3aWR0
aCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5v
ZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0Vs
ZW1lbnQoJ3RvcCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBjb21wdXRlZFRvcCA9
IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVk
VG9wJywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNp
dGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91dFRlc3Rz
L2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24t
cmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CmluZGV4IGQwOTZkZTRkNTVkOTA2M2Ri
MDFkNzg5NTZmODgyMWRhYTllYmE3ZGEuLjNiODdhOGRjOGUwZDIyODllNzU1OTgwMGFjNThkNDhh
ZmVlYTE1NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhw
ZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVz
dHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQu
dHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVzc2FnZSA9
IG51bGwKLQotVElNRU9VVCBUcmFuc2l0aW9ucyBvbiA6OmJlZm9yZS86OmFmdGVyIHBzZXVkby1l
bGVtZW50cyBhcmUgY2FuY2VsZWQgd2hlbiB0aGUgY29udGVudCBwcm9wZXJ0eSBpcyBjbGVhcmVk
IFRlc3QgdGltZWQgb3V0CitQQVNTIFRyYW5zaXRpb25zIG9uIDo6YmVmb3JlLzo6YWZ0ZXIgcHNl
dWRvLWVsZW1lbnRzIGFyZSBjYW5jZWxlZCB3aGVuIHRoZSBjb250ZW50IHByb3BlcnR5IGlzIGNs
ZWFyZWQgCiAK
</data>
<flag name="commit-queue"
          id="425369"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409605</attachid>
            <date>2020-09-24 11:19:23 -0700</date>
            <delta_ts>2020-09-25 06:02:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216931-20200924201921.patch</filename>
            <type>text/plain</type>
            <size>119373</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTM1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWI0NTEzZGVmZjUxYjE0
YTFkMTQ5MGEyNGE5MDllYjdjMTY0ZjhkNy4uZjlmYWVmNDMwNTMwMDY1OTM4NTExZmQ3OGQ2NTA3
MTY0ODgxOGE2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0NyBAQAorMjAyMC0wOS0yNCAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJl
bGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKworICAgICAgICBS
ZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXZSBoYXZlIHNvIGZhciByZWxp
ZWQgb24gUHNldWRvRWxlbWVudCBhcyBhIGZvdW5kYXRpb24gZm9yIHN1cHBvcnRpbmcgYW5pbWF0
aW9ucyBvZiBwc2V1ZG8tZWxlbWVudHMuIFRoaXMgaXMgbm90IGEKKyAgICAgICAgZ3JlYXQgY2hv
aWNlIHNpbmNlIFBzZXVkb0VsZW1lbnQgaXMgY3VycmVudGx5IGxpbWl0ZWQgdG8gOjpiZWZvcmUg
YW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIG9ubHkuIFRoaXMgcGF0Y2gKKyAgICAgICAgcmVm
YWN0b3JzIGFuaW1hdGlvbi1yZWxhdGVkIGNvZGUgdG8gcmVseSBvbiBQc2V1ZG9FbGVtZW50IGFz
IGxpdHRsZSBhcyBwb3NzaWJsZSB3aXRob3V0IG1ha2luZyBjaGFuZ2VzIG91dHNpZGUKKyAgICAg
ICAgb2YgdGhlIGFuaW1hdGlvbiBjb2RlLCBhcyBhIGZpcnN0IHN0ZXAgdG93YXJkcyBzdXBwb3J0
aW5nIGFuaW1hdGlvbiBvZiBtb3JlIHBzZXVkby1lbGVtZW50cy4KKworICAgICAgICBUaGlzIHBh
dGNoIGludHJvZHVjZXMgYSBuZXcgc3RydWN0IFN0eWxlYWJsZSB3aGljaCBjb21iaW5lcyBhbiBF
bGVtZW50JiBhbmQgUHNldWRvSWQuIFdlIHVzZSB0aGlzIHN0cnVjdCBpbnN0ZWFkCisgICAgICAg
IG9mIEVsZW1lbnQgb2JqZWN0cyB3aGVyZXZlciBuZWNlc3NhcnkgaW4gdGhlIGFuaW1hdGlvbiBj
b2RlLiBPbiB0b3Agb2YgdGhhdCwgd2UgYWRkIGEgUHNldWRvSWQgcGFyYW1ldGVyIHRvIGFsbCB0
aGUKKyAgICAgICAgRWxlbWVudCBtZXRob2RzIHdyYXBwaW5nIGFjY2VzcyB0byBFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEgYW5kIHVzZSBhIEhhc2hNYXA8UHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0
cjxFbGVtZW50QW5pbWF0aW9uUmFyZURhdGE+PgorICAgICAgICB0byBiZSBhYmxlIHRvIHNlcGFy
YXRlIGFuaW1hdGlvbiBkYXRhIHBlciBwc2V1ZG8tZWxlbWVudC4KKworICAgICAgICAqIEhlYWRl
cnMuY21ha2U6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgor
ICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3ZlQW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNBZGRlZFRvU3R5bGVhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJv
bVN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6cmVtb3Zl
RGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlN
YXJrdXApOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OmVsZW1lbnRXYXNS
ZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdl
UmVuZGVyZXJGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSk6CisgICAgICAgIChX
ZWJDb3JlOjpzaG91bGRDb25zaWRlckFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpBbmlt
YXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSk6CisgICAgICAg
IChXZWJDb3JlOjprZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHls
ZWFibGVBbmRQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5p
bWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KTogRGVsZXRlZC4KKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjphbmltYXRpb25XYXNSZW1vdmVkRnJv
bUVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6
OndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6QW5pbWF0aW9uVGltZWxpbmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkFu
aW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0
eSk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRl
Q1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24v
QW5pbWF0aW9uVGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0FuaW1hdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdl
YkNvcmU6OkNTU0FuaW1hdGlvbjo6Q1NTQW5pbWF0aW9uKToKKyAgICAgICAgKiBhbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU1RyYW5zaXRpb246OkNTU1RyYW5zaXRpb24pOgorICAgICAgICAqIGFuaW1hdGlvbi9D
U1NUcmFuc2l0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpEZWNsYXJhdGl2
ZUFuaW1hdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3du
aW5nRWxlbWVudCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlv
bjo6ZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6RGVj
bGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUpOgorICAgICAgICAoV2ViQ29yZTo6RGVjbGFy
YXRpdmVBbmltYXRpb246OmVucXVldWVET01FdmVudCk6CisgICAgICAgICogYW5pbWF0aW9uL0Rl
Y2xhcmF0aXZlQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL0RvY3VtZW50VGltZWxp
bmUuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uQ2Fu
QmVSZW1vdmVkKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OnRyYW5zaXRp
b25EaWRDb21wbGV0ZSk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpjb21w
dXRlRXh0ZW50T2ZBbmltYXRpb24gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRU
aW1lbGluZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6CisgICAgICAgIChX
ZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9u
UmVuZGVyZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6YW5p
bWF0ZWRTdHlsZUZvclJlbmRlcmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZCBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjpydW5uaW5nQW5pbWF0aW9uc0Zv
ckVsZW1lbnRBcmVBbGxBY2NlbGVyYXRlZCBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogYW5p
bWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaDoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6ZWxlbWVudE9yUHNldWRvRWxlbWVudEZvclN0
eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRWxlbWVudCk6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVy
c2hpcCk6CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0U3R5bGVhYmxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpzZXRUYXJnZXQpOgor
ICAgICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldFBzZXVkb0VsZW1lbnQpOgorICAg
ICAgICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldFN0eWxlYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSk6CisgICAgICAg
IChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdDo6YXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25z
KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZyYW1lRWZmZWN0OjpkaWRDaGFuZ2VUYXJnZXRFbGVt
ZW50T3JQc2V1ZG9FbGVtZW50KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJh
bWVFZmZlY3QuaDoKKyAgICAgICAgKiBhbmltYXRpb24vS2V5ZnJhbWVFZmZlY3RTdGFjay5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpLZXlmcmFtZUVmZmVjdFN0YWNrOjphZGRFZmZlY3QpOgorICAg
ICAgICAqIGFuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6V2Vi
QW5pbWF0aW9uOjpzZXRFZmZlY3RJbnRlcm5hbCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmlt
YXRpb246OnNldFRpbWVsaW5lKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6ZWZm
ZWN0VGFyZ2V0RGlkQ2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6cGVy
c2lzdCk6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OmNvbW1pdFN0eWxlcyk6Cisg
ICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5oOgorICAgICAgICAqIGFuaW1hdGlvbi9X
ZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZURlY2xh
cmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0luRG9jdW1lbnRUcmVlT3JkZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNTU1RyYW5zaXRpb25zKToKKyAgICAgICAgKFdl
YkNvcmU6OmNvbXBhcmVDU1NBbmltYXRpb25zKToKKyAgICAgICAgKiBkb20vRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpyZW1vdmVkRnJvbUFuY2VzdG9yKToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OkVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6OmtleWZyYW1lRWZmZWN0U3RhY2sgY29uc3QpOgorICAgICAgICAoV2Vi
Q29yZTo6RWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6YXBwbHlLZXlmcmFtZUVmZmVjdHMpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YW5pbWF0aW9ucyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpoYXND
b21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjplbnN1cmVBbmltYXRpb25zKToKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXApOgorICAgICAgICAoV2ViQ29y
ZTo6RWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkpOgorICAg
ICAgICAoV2ViQ29yZTo6RWxlbWVudDo6ZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OnNldExhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6Z2V0QW5pbWF0aW9ucyk6Cisg
ICAgICAgICogZG9tL0VsZW1lbnQuaDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmNw
cDoKKyAgICAgICAgKiBkb20vRWxlbWVudFJhcmVEYXRhLmg6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50UmFyZURhdGE6OnVzZVR5cGVzIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1l
bnRSYXJlRGF0YTo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6
RWxlbWVudFJhcmVEYXRhOjplbnN1cmVBbmltYXRpb25SYXJlRGF0YSk6CisgICAgICAgIChXZWJD
b3JlOjpFbGVtZW50UmFyZURhdGE6OmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSk6IERlbGV0ZWQu
CisgICAgICAgICogZG9tL1BzZXVkb0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UHNl
dWRvRWxlbWVudDo6Y2xlYXJIb3N0RWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9F
bGVtZW50Ojppc1RhcmdldGVkQnlLZXlmcmFtZUVmZmVjdFJlcXVpcmluZ1BzZXVkb0VsZW1lbnQp
OgorICAgICAgICAqIHJlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJCb3hNb2RlbE9iamVjdDo6aGFzUnVubmluZ0FjY2VsZXJhdGVkQW5p
bWF0aW9ucyBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6UmVuZGVyRWxlbWVudDo6c3R5bGVhYmxlIGNvbnN0KToKKyAgICAg
ICAgKiByZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oOgorICAgICAgICAqIHJlbmRlcmluZy9SZW5k
ZXJMYXllckNvbXBvc2l0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyTGF5ZXJDb21w
b3NpdG9yOjpyZXF1aXJlc0NvbXBvc2l0aW5nRm9yQW5pbWF0aW9uIGNvbnN0KToKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNSdW5uaW5nVHJhbnNmb3JtQW5pbWF0
aW9uIGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFu
dHMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6b3BlcmF0b3I8PCk6CisgICAgICAgICogcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cmVzb2x2ZUVsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGU6OlRyZWVSZXNvbHZl
cjo6cmVzb2x2ZVBzZXVkb1N0eWxlKToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlOjpUcmVlUmVz
b2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZSk6CisgICAgICAgICogc3R5bGUvU3R5
bGVUcmVlUmVzb2x2ZXIuaDoKKyAgICAgICAgKiBzdHlsZS9TdHlsZWFibGUuaDogQWRkZWQuCisg
ICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OlN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpvcGVyYXRvciE9IGNvbnN0KToKKwogMjAyMC0wOS0yNCAgQ2FybG9zIEdhcmNpYSBDYW1w
b3MgIDxjZ2FyY2lhQGlnYWxpYS5jb20+CiAKICAgICAgICAgW0dUS11bV1BFXSBNb3ZlIHByb3h5
IHNldHRpbmdzIGZyb20gV2ViS2l0Q29udGV4dCB0byBXZWJLaXRXZWJzaXRlRGF0YU1hbmFnZXIK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29y
ZS9IZWFkZXJzLmNtYWtlCmluZGV4IDQ2NTliZGUyMjhhMGJmMDYzYmM5MGNjYzA2MmU3MTQ0MGZi
ZjNjNmQuLjAxNGM1ZWYxZDFkMTE5ZGFhYjc3ODQwZjA3YmJjYTY4OTlhYWM0OTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVh
ZGVycy5jbWFrZQpAQCAtMTQ5OSw2ICsxNDk5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFN
RVdPUktfSEVBREVSUwogICAgIHN0eWxlL1N0eWxlU2NvcGUuaAogICAgIHN0eWxlL1N0eWxlVXBk
YXRlLmgKICAgICBzdHlsZS9TdHlsZVZhbGlkaXR5LmgKKyAgICBzdHlsZS9TdHlsZWFibGUuaAog
CiAgICAgc3ZnL1NWR0xlbmd0aENvbnRleHQuaAogICAgIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5k
ZXggN2Y1ZjExMTIzNGU1MDFlNTM4NWIxNDNlMWVmZTUxNGE4NTliMTgyNC4uMjI5YTEwNTgwNzc2
YjdjZTQ0ZWIyZDliMWY5ZDMwNDI2NjczMDc5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
V2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEyNyw2ICsyMTI3LDcgQEAKIAkJ
NzEzMTcxMzQxRkJFNzhEQjAwRjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzE3MTMyMUZC
RTc4QzUwMEY3NThERSAvKiBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50LmggKi87IHNldHRpbmdz
ID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEzMjQ0NTEyMDEwOURBNTAw
QUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gNzEzMjQ0NEYyMDEwOUQ5QjAwQUU3RkIyIC8qIFdlYkFu
aW1hdGlvblV0aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0
LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2
QzE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCTcxMzkyMkJFMjUxOEFCNzcwMDVEQjND
MiAvKiBTdHlsZWFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IDcxMzkyMkJDMjUxOEFCNzAwMDVEQjNDMiAvKiBTdHlsZWFibGUuaCAqLzsgc2V0dGlu
Z3MgPSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTNGMUQ1QTIzREYxRDhE
MDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRB
bmltYXRpb25zT3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCTcxM0YxRDVEMjNERjI1ODIwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNP
cHRpb25zLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3
MTNGMUQ1QjIzREYyNTYwMDAzRjVFRkEgLyogSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyB9
OwogCQk3MTQ5NUREQjIwMkIwNkYxMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNDk1RERBMjAyQjA2REUw
MEFERkQzNCAvKiBKU0VmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0g
KFByaXZhdGUsICk7IH07IH07CkBAIC05NzU0LDYgKzk3NTUsNyBAQAogCQk3MTMyNDQ0RjIwMTA5
RDlCMDBBRTdGQjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmMuaDsgcGF0aCA9IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250
ZXh0LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAw
NzIwMzEyIC8qIFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gU1ZHTGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3
MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0
eWxlYWJsZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNFNzBBRjE3MzNFOEIz
MDBBMjJEMDAgLyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxM0YxRDU3MjNERjFEN0QwMDNGNUVGQSAv
KiBHZXRBbmltYXRpb25zT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0QW5p
bWF0aW9uc09wdGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1
OTIzREYxRDdEMDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gR2V0QW5pbWF0aW9uc09wdGlvbnMuaDsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKQEAgLTI4NDAwLDYgKzI4NDAyLDcgQEAKIAkJCQlBNzlCQUQ5RTE2MUU3
RjNGMDBDMkU2NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3RjNGMDBD
MkU2NTIgLyogUnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJFNjUyIC8q
IFJ1bGVTZXQuaCAqLywKKwkJCQk3MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxl
LmggKi8sCiAJCQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3Bw
ICovLAogCQkJCUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8s
CiAJCQkJRTRBQkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBA
IC0zMjc4MSw3ICszMjc4NCw5IEBACiAJCQkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExh
eW91dEluaXRpYWxDb250YWluaW5nQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1
MjNGMjY4RUMwMEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywK
IAkJCQlFNDE4MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVl
LmggaW4gSGVhZGVycyAqLywKKwkJCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0
SW50ZWdyYXRpb25Db3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhG
RTAwRkE0MzQ1IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8s
CisJCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5h
dGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExh
eW91dEl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3RTRF
QkMgLyogTGF5b3V0TGluZUJyZWFrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1
RkU2OTUzMDBDNEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMy
ODI2LDcgKzMyODMxLDYgQEAKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFy
R3JhZGllbnRBdHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhF
MDAwQzdCOTIgLyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJB
MTgzODBEQTAwMDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJ
CUU0MDNCN0EyMjUxQjExOTMwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmgg
aW4gSGVhZGVycyAqLywKIAkJCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91
dFRyYXZlcnNhbC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2
IC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
RTQ1MUM2MjgyMzkyOTNFQzAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVu
UGF0aC5oIGluIEhlYWRlcnMgKi8sCkBAIC0zMzY5NSw3ICszMzY5OSw2IEBACiAJCQkJMjI4QzI4
NDUxMEQ4MjUwMDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMTQwMEQ3QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBp
biBIZWFkZXJzICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxl
QXJlYS5oIGluIEhlYWRlcnMgKi8sCi0JCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExh
eW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgw
RjY0RDRERDAwQjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
Q0EzQkY2N0UxMEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBp
biBIZWFkZXJzICovLApAQCAtMzM5MzUsNiArMzM5MzgsNyBAQAogCQkJCTlCNkM0MTUzMTM0NDk0
OTAwMDA4NUI2MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NDlGNzc3NjBFRkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVy
cyAqLywKIAkJCQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmgg
aW4gSGVhZGVycyAqLywKKwkJCQk3MTM5MjJCRTI1MThBQjc3MDA1REIzQzIgLyogU3R5bGVhYmxl
LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVB
ZGp1c3Rlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8q
IFN0eWxlQmFja2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQz
QkUwMEIyNTk2NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNzRjMDY1NGE1N2M3
YjAyMTRmODk2Y2YyNDZlM2U3NDQxZDU2ZTY0Yi4uMzdiYzliNWEzNWRhNjVjZjdhNmQ5YWFhN2M4
YmE1MTc1ZjI1OWUzOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9u
VGltZWxpbmUuY3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgog
I2luY2x1ZGUgIlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29s
dmVyLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRp
bGl0aWVzLmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0
Zi90ZXh0L1dURlN0cmluZy5oPgpAQCAtODAsOSArODEsOSBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjpyZW1vdmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJU
KCFhbmltYXRpb24udGltZWxpbmUoKSB8fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsK
ICAgICBtX2FuaW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFt
ZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldEVs
ZW1lbnRPclBzZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3Zl
ZEZyb21FbGVtZW50KGFuaW1hdGlvbiwgKnRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKmRvd25jYXN0PEtleWZyYW1l
RWZmZWN0PihhbmltYXRpb24uZWZmZWN0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gc3R5bGVhYmxl
ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldFN0
eWxlYWJsZSgpKSB7CisgICAgICAgICAgICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJs
ZShhbmltYXRpb24sICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVtZW50
LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkucmVtb3ZlRWZm
ZWN0KCpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0aW9uLmVmZmVjdCgpKSk7CiAgICAg
ICAgIH0KICAgICB9CiB9CkBAIC05NSw5ICs5Niw5IEBAIE9wdGlvbmFsPGRvdWJsZT4gQW5pbWF0
aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQogICAgIHJldHVybiBzZWNvbmRzVG9X
ZWJBbmltYXRpb25zQVBJVGltZSgqdGltZSk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVt
ZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzQWRkZWRU
b1N0eWxlYWJsZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3QgU3R5bGVhYmxlJiBzdHls
ZWFibGUpCiB7Ci0gICAgZWxlbWVudC5lbnN1cmVBbmltYXRpb25zKCkuYWRkKCZhbmltYXRpb24p
OworICAgIHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZUFuaW1hdGlvbnMoc3R5bGVhYmxlLnBzZXVk
b0lkKS5hZGQoJmFuaW1hdGlvbik7CiB9CiAKIHN0YXRpYyBpbmxpbmUgYm9vbCByZW1vdmVDU1NU
cmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9uJiB0cmFuc2l0aW9uLCBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgY3NzVHJhbnNpdGlvbnNCeVByb3BlcnR5KQpAQCAtMTEwLDM3ICsxMTEsMzkg
QEAgc3RhdGljIGlubGluZSBib29sIHJlbW92ZUNTU1RyYW5zaXRpb25Gcm9tTWFwKENTU1RyYW5z
aXRpb24mIHRyYW5zaXRpb24sIFByb3BlcnQKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBB
bmltYXRpb25UaW1lbGluZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KFdlYkFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoV2ViQW5pbWF0aW9uJiBhbmltYXRp
b24sIGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQogewotICAgIGVsZW1lbnQuZW5zdXJlQW5p
bWF0aW9ucygpLnJlbW92ZSgmYW5pbWF0aW9uKTsKKyAgICBzdHlsZWFibGUuZWxlbWVudC5lbnN1
cmVBbmltYXRpb25zKHN0eWxlYWJsZS5wc2V1ZG9JZCkucmVtb3ZlKCZhbmltYXRpb24pOwogCiAg
ICAgLy8gTm93LCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggYSBDU1MgVHJhbnNpdGlvbiwgd2UgcmVt
b3ZlIGl0IGZyb20gdGhlIG1fZWxlbWVudFRvUnVubmluZ0NTU1RyYW5zaXRpb25CeUNTU1Byb3Bl
cnR5SUQgbWFwLgogICAgIC8vIFdlIGRvbid0IG5lZWQgdG8gZG8gdGhpcyBmb3IgQ1NTIEFuaW1h
dGlvbnMgYmVjYXVzZSB0aGVpciB0aW1pbmcgY2FuIGJlIHNldCB2aWEgQ1NTIHRvIGVuZCwgd2hp
Y2ggd291bGQgY2F1c2UgdGhpcwogICAgIC8vIGZ1bmN0aW9uIHRvIGJlIGNhbGxlZCwgYnV0IHRo
ZXkgc2hvdWxkIHJlbWFpbiBhc3NvY2lhdGVkIHdpdGggdGhlaXIgb3duaW5nIGVsZW1lbnQgdW50
aWwgdGhpcyBpcyBjaGFuZ2VkIHZpYSBhIGNhbGwKICAgICAvLyB0byB0aGUgSlMgQVBJIG9yIGNo
YW5naW5nIHRoZSB0YXJnZXQgZWxlbWVudCdzIGFuaW1hdGlvbi1uYW1lIHByb3BlcnR5LgogICAg
IGlmIChpczxDU1NUcmFuc2l0aW9uPihhbmltYXRpb24pKQotICAgICAgICByZW1vdmVEZWNsYXJh
dGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoYW5pbWF0aW9uLCBlbGVtZW50
KTsKKyAgICAgICAgcmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdF
bGVtZW50KGFuaW1hdGlvbiwgc3R5bGVhYmxlKTsKIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdl
YkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25U
aW1lbGluZTo6cmVtb3ZlRGVjbGFyYXRpdmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVt
ZW50KFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkK
IHsKICAgICBBU1NFUlQoaXM8RGVjbGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbikpOwogCiAg
ICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikpIHsKICAgICAgICAgYXV0byYgdHJh
bnNpdGlvbiA9IGRvd25jYXN0PENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbik7Ci0gICAgICAgIGlm
ICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5lbnN1cmVS
dW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkpKQotICAgICAgICAgICAgcmVtb3ZlQ1NTVHJh
bnNpdGlvbkZyb21NYXAodHJhbnNpdGlvbiwgZWxlbWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0
aW9uc0J5UHJvcGVydHkoKSk7CisgICAgICAgIGlmICghcmVtb3ZlQ1NTVHJhbnNpdGlvbkZyb21N
YXAodHJhbnNpdGlvbiwgc3R5bGVhYmxlLmVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eShzdHlsZWFibGUucHNldWRvSWQpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Ry
YW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZUNvbXBs
ZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShzdHlsZWFibGUucHNldWRvSWQpKTsKICAgICB9CiB9
CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1h
cmt1cChFbGVtZW50JiBlbGVtZW50LCBDU1NBbmltYXRpb24mIGNzc0FuaW1hdGlvbikKK3ZvaWQg
QW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChjb25z
dCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTQW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCiB7Ci0g
ICAgZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkucmVtb3ZlKCZjc3NBbmltYXRp
b24pOworICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUuZWxlbWVudDsKKyAgICBhdXRvIHBz
ZXVkb0lkID0gc3R5bGVhYmxlLnBzZXVkb0lkOworICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cChwc2V1ZG9JZCkucmVtb3ZlKCZjc3NBbmltYXRpb24pOwogCi0gICAgaWYgKCFl
bGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0cygpKQorICAgIGlmICghZWxlbWVudC5oYXNLZXlmcmFt
ZUVmZmVjdHMocHNldWRvSWQpKQogICAgICAgICByZXR1cm47CiAKLSAgICBhdXRvJiBrZXlmcmFt
ZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAg
YXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjayhwc2V1ZG9JZCk7CiAgICAgYXV0byogY3NzQW5pbWF0aW9uTGlzdCA9IGtleWZyYW1lRWZm
ZWN0U3RhY2suY3NzQW5pbWF0aW9uTGlzdCgpOwogICAgIGlmICghY3NzQW5pbWF0aW9uTGlzdCB8
fCBjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpCiAgICAgICAgIHJldHVybjsKQEAgLTE1Niwz
MyArMTU5LDMzIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNy
ZWF0ZWRCeU1hcmt1cChFbGVtZW50JiBlbGVtZW50LCBDU1NBCiAgICAgfQogfQogCi12b2lkIEFu
aW1hdGlvblRpbWVsaW5lOjplbGVtZW50V2FzUmVtb3ZlZChFbGVtZW50JiBlbGVtZW50KQordm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVhYmxlJiBz
dHlsZWFibGUpCiB7Ci0gICAgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChl
bGVtZW50LCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOworICAgIGNhbmNlbERlY2xhcmF0
aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShzdHlsZWFibGUsIFdlYkFuaW1hdGlvbjo6U2lsZW50
bHk6Olllcyk7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJl
ckZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6Ondp
bGxDaGFuZ2VSZW5kZXJlckZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkK
IHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpKSB7Cisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUuZWxlbWVudC5hbmltYXRpb25zKHN0
eWxlYWJsZS5wc2V1ZG9JZCkpIHsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBhbmltYXRpb24g
OiAqYW5pbWF0aW9ucykKICAgICAgICAgICAgIGFuaW1hdGlvbi0+d2lsbENoYW5nZVJlbmRlcmVy
KCk7CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIFdlYkFuaW1hdGlvbjo6U2ls
ZW50bHkgc2lsZW50bHkpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIFdlYkFu
aW1hdGlvbjo6U2lsZW50bHkgc2lsZW50bHkpCiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbnMg
PSBlbGVtZW50LmFuaW1hdGlvbnMoKSkgeworICAgIGlmIChhdXRvKiBhbmltYXRpb25zID0gc3R5
bGVhYmxlLmVsZW1lbnQuYW5pbWF0aW9ucyhzdHlsZWFibGUucHNldWRvSWQpKSB7CiAgICAgICAg
IGZvciAoYXV0byYgYW5pbWF0aW9uIDogKmFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChp
czxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlm
IChpczxDU1NBbmltYXRpb24+KGFuaW1hdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92
ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRp
b24+KCphbmltYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9u
Q3JlYXRlZEJ5TWFya3VwKHN0eWxlYWJsZSwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0
aW9uKSk7CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5jYW5jZWwoc2lsZW50bHkpOwogICAg
ICAgICAgICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDb25z
aWRlckFuaW1hdGlvbihFbGVtZW50JiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50LCBjb25zdCBBbmlt
YXRpb24mIGFuaW1hdGlvbikKK3N0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVs
ZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmICgh
YW5pbWF0aW9uLmlzVmFsaWRBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAt
MTkzLDIxICsxOTYsMjEgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxl
bWVudCYgZWxlbWVudE9yUHNldWRvRWxlbWVudCwgY29uc3QgQW5pbWEKICAgICBpZiAobmFtZSA9
PSBhbmltYXRpb25OYW1lTm9uZSB8fCBuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogCi0gICAgYXV0byYgZWxlbWVudCA9IGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQpID8gKmRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQpLmhvc3RFbGVtZW50KCkgOiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50OwotCiAgICAgaWYg
KGF1dG8qIHN0eWxlU2NvcGUgPSBTdHlsZTo6U2NvcGU6OmZvck9yZGluYWwoZWxlbWVudCwgYW5p
bWF0aW9uLm5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlU2Nv
cGUtPnJlc29sdmVyKCkuaXNBbmltYXRpb25OYW1lVmFsaWQobmFtZSk7CiAKICAgICByZXR1cm4g
ZmFsc2U7CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNG
b3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5
bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6
OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFi
bGUsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSkKIHsKLSAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1
cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5l
bGVtZW50OworICAgIGF1dG8gcHNldWRvSWQgPSBzdHlsZWFibGUucHNldWRvSWQ7CisgICAgYXV0
byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
ayhwc2V1ZG9JZCk7CiAKICAgICAvLyBJbiBjYXNlIHRoaXMgZWxlbWVudCBpcyBuZXdseSBnZXR0
aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2FuY2VsIGFsbCBvZiBpdHMgYW5pbWF0
aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChjdXJyZW50U3R5bGUgJiYgY3Vy
cmVudFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6Ok5vbmUgJiYgbmV3U3R5bGUuZGlz
cGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAgICAgIGZvciAoYXV0byYgY3NzQW5p
bWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkpCisgICAgICAgIGZv
ciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3Vw
KHBzZXVkb0lkKSkKICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2FuY2VsRnJvbVN0eWxlKCk7
CiAgICAgICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0aW9uTGlzdChudWxscHRy
KTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIyMiw3IEBAIHZvaWQgQW5pbWF0aW9uVGlt
ZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNv
bnN0IFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24gbmV3
QW5pbWF0aW9uczsKLSAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1h
dGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMgPSBl
bGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAocHNldWRvSWQpOwogCiAgICAgLy8gaHR0
cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1hbmltYXRpb25zLTEvI2FuaW1hdGlvbnMKICAgICAvLyBU
aGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUgbmFtZSBtYXkgYmUgcmVwZWF0ZWQgd2l0aGluIGFuIGFu
aW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRvIHRoZSBhbmltYXRpb24tbmFtZSB1cGRhdGUgZXhpc3Rp
bmcKQEAgLTI1MSw3ICsyNTQsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NB
bmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAgICAg
ICAgfQogCiAgICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2hpbmdBbmltYXRpb24pCi0gICAgICAg
ICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQoQ1NTQW5pbWF0aW9uOjpjcmVhdGUoZWxlbWVudCwg
Y3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOworICAgICAgICAgICAg
ICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1hdGlvbjo6Y3JlYXRlKHN0eWxlYWJsZSwgY3Vy
cmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOwogICAgICAgICB9CiAgICAg
fQogCkBAIC0yNjMsMTQgKzI2NiwxNCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAgICAg
ICB9CiAgICAgfQogCi0gICAgZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdU
Rk1vdmUobmV3QW5pbWF0aW9ucykpOworICAgIGVsZW1lbnQuc2V0QW5pbWF0aW9uc0NyZWF0ZWRC
eU1hcmt1cChwc2V1ZG9JZCwgV1RGTW92ZShuZXdBbmltYXRpb25zKSk7CiAKICAgICBrZXlmcmFt
ZUVmZmVjdFN0YWNrLnNldENTU0FuaW1hdGlvbkxpc3QoY3VycmVudEFuaW1hdGlvbkxpc3QpOwog
fQogCi1zdGF0aWMgS2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFBy
b3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHkpCitzdGF0aWMg
S2V5ZnJhbWVFZmZlY3QqIGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGNvbnN0
IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQogewotICAgIGlm
IChhdXRvKiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNr
KCkpIHsKKyAgICBpZiAoYXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IHN0eWxlYWJsZS5lbGVt
ZW50LmtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLnBzZXVkb0lkKSkgewogICAgICAgICBh
dXRvIGVmZmVjdHMgPSBrZXlmcmFtZUVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCk7CiAgICAg
ICAgIGZvciAoY29uc3QgYXV0byYgZWZmZWN0IDogbWFrZVJldmVyc2VkUmFuZ2UoZWZmZWN0cykp
IHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGVzUHJvcGVydHkocHJvcGVydHkpKQpA
QCAtMzM5LDExICszNDIsMTkgQEAgc3RhdGljIHZvaWQgY29tcGlsZVRyYW5zaXRpb25Qcm9wZXJ0
aWVzSW5TdHlsZShjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUsIEhhc2hTZXQKICAgICB9CiB9CiAK
LXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0
IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
Y29uc3QgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5
bGVhYmxlJiBzdHlsZWFibGUsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIGNvbnN0IFJlbmRlclN0
eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgY29uc3QgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSkKIHsKLSAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9
IGtleWZyYW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5KTsK
KyAgICBhdXRvJiBlbGVtZW50ID0gc3R5bGVhYmxlLmVsZW1lbnQ7CisgICAgYXV0byBwc2V1ZG9J
ZCA9IHN0eWxlYWJsZS5wc2V1ZG9JZDsKKyAgICBhdXRvKiBrZXlmcmFtZUVmZmVjdCA9IGtleWZy
YW1lRWZmZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KHN0eWxlYWJsZSwgcHJvcGVydHkpOwogICAg
IGF1dG8qIGFuaW1hdGlvbiA9IGtleWZyYW1lRWZmZWN0ID8ga2V5ZnJhbWVFZmZlY3QtPmFuaW1h
dGlvbigpIDogbnVsbHB0cjsKLSAgICBib29sIGlzRGVjbGFyYXRpdmUgPSBhbmltYXRpb24gJiYg
aXM8RGVjbGFyYXRpdmVBbmltYXRpb24+KGFuaW1hdGlvbikgJiYgZG93bmNhc3Q8RGVjbGFyYXRp
dmVBbmltYXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQoKSA9PSAmZWxlbWVudDsKKwor
ICAgIGJvb2wgaXNEZWNsYXJhdGl2ZSA9IGZhbHNlOworICAgIGlmIChpczxEZWNsYXJhdGl2ZUFu
aW1hdGlvbj4oYW5pbWF0aW9uKSkgeworICAgICAgICBpZiAoYXV0byBvd25pbmdFbGVtZW50ID0g
ZG93bmNhc3Q8RGVjbGFyYXRpdmVBbmltYXRpb24+KCphbmltYXRpb24pLm93bmluZ0VsZW1lbnQo
KSkKKyAgICAgICAgICAgIGlzRGVjbGFyYXRpdmUgPSAqb3duaW5nRWxlbWVudCA9PSBzdHlsZWFi
bGU7CisgICAgfQorCiAgICAgaWYgKGFuaW1hdGlvbiAmJiAhaXNEZWNsYXJhdGl2ZSkKICAgICAg
ICAgcmV0dXJuOwogCkBAIC0zNTgsOCArMzY5LDggQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUK
IAogICAgIC8vIEEgQ1NTIFRyYW5zaXRpb24gbWlnaHQgaGF2ZSBjb21wbGV0ZWQgc2luY2UgdGhl
IGxhc3QgdGltZSBhbmltYXRpb25zIHdlcmUgdXBkYXRlZCBzbyB3ZSBtdXN0CiAgICAgLy8gdXBk
YXRlIHRoZSBydW5uaW5nIGFuZCBjb21wbGV0ZWQgdHJhbnNpdGlvbnMgbWVtYmVyc2hpcCBpbiB0
aGF0IGNhc2UuCi0gICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgbWF0Y2hp
bmdCYWNraW5nQW5pbWF0aW9uICYmIGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJv
cGVydHkocHJvcGVydHkpICYmIGFuaW1hdGlvbi0+cGxheVN0YXRlKCkgPT0gV2ViQW5pbWF0aW9u
OjpQbGF5U3RhdGU6OkZpbmlzaGVkKSB7Ci0gICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVk
VHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS50YWtlKHByb3BlcnR5KSk7CisgICAgaWYgKGlzPENT
U1RyYW5zaXRpb24+KGFuaW1hdGlvbikgJiYgbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVs
ZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHNldWRvSWQsIHByb3BlcnR5
KSAmJiBhbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpG
aW5pc2hlZCkgeworICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQ
cm9wZXJ0eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5LCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFu
c2l0aW9uc0J5UHJvcGVydHkocHNldWRvSWQpLnRha2UocHJvcGVydHkpKTsKICAgICAgICAgYW5p
bWF0aW9uID0gbnVsbHB0cjsKICAgICB9CiAKQEAgLTM3Nyw3ICszODgsNyBAQCB2b2lkIEFuaW1h
dGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShF
bGVtZW50JiBlbGVtZQogICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB1c2Ug
dGhlIHJlY29yZGVkIFJlbmRlclN0eWxlIGZvciB0aGlzIGVsZW1lbnQgZHVyaW5nIGEgcHJldmlv
dXMgY2FsbCB0byBTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRh
dGUoKS4KLSAgICAgICAgaWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVt
ZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoKSkKKyAgICAgICAgaWYgKGF1dG8qIGxhc3RT
dHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVtZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUo
cHNldWRvSWQpKQogICAgICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbGFzdFN0
eWxlQ2hhbmdlRXZlbnRTdHlsZSk7CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjb21wdXRl
ZCBzdHlsZXMgZnJvbSBhbmltYXRpb25zIGZvciB0aGlzIGVsZW1lbnQsIHRoZSBiZWZvcmUtY2hh
bmdlIHN0eWxlIGlzIHRoZSBwcmV2aW91c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1l
bnQuCkBAIC0zOTksMTAgKzQxMCwxMCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAg
ICByZXR1cm4gUmVuZGVyU3R5bGU6OmNsb25lKG5ld1N0eWxlKTsKICAgICB9KCk7CiAKLSAgICBp
ZiAoIWVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCisg
ICAgaWYgKCFlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lk
LCBwcm9wZXJ0eSkKICAgICAgICAgJiYgIUNTU1Byb3BlcnR5QW5pbWF0aW9uOjpwcm9wZXJ0aWVz
RXF1YWwocHJvcGVydHksICZiZWZvcmVDaGFuZ2VTdHlsZSwgJmFmdGVyQ2hhbmdlU3R5bGUpCiAg
ICAgICAgICYmIENTU1Byb3BlcnR5QW5pbWF0aW9uOjpjYW5Qcm9wZXJ0eUJlSW50ZXJwb2xhdGVk
KHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdlU3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQotICAgICAg
ICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFwKHByb3Bl
cnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpKQorICAgICAgICAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9y
VHJhbnNpdGlvbkluTWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCkpCiAgICAgICAgICYmIG1h
dGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiB0cmFuc2l0aW9uQ29tYmluZWREdXJhdGlvbihtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24pID4gMCkgewogICAgICAgICAvLyAxLiBJZiBhbGwgb2YgdGhl
IGZvbGxvd2luZyBhcmUgdHJ1ZToKICAgICAgICAgLy8gICAtIHRoZSBlbGVtZW50IGRvZXMgbm90
IGhhdmUgYSBydW5uaW5nIHRyYW5zaXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwKQEAgLTQxMiw3ICs0
MjMsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVs
ZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAvLyAgIC0gdGhlIGNvbWJp
bmVkIGR1cmF0aW9uIGlzIGdyZWF0ZXIgdGhhbiAwcywKIAogICAgICAgICAvLyB0aGVuIGltcGxl
bWVudGF0aW9ucyBtdXN0IHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24gKGlmIHByZXNl
bnQpIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMKLSAgICAgICAgZWxlbWVu
dC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5yZW1vdmUocHJvcGVydHkp
OworICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eShw
c2V1ZG9JZCkucmVtb3ZlKHByb3BlcnR5KTsKIAogICAgICAgICAvLyBhbmQgc3RhcnQgYSB0cmFu
c2l0aW9uIHdob3NlOgogICAgICAgICAvLyAgIC0gc3RhcnQgdGltZSBpcyB0aGUgdGltZSBvZiB0
aGUgc3R5bGUgY2hhbmdlIGV2ZW50IHBsdXMgdGhlIG1hdGNoaW5nIHRyYW5zaXRpb24gZGVsYXks
CkBAIC00MjUsMjUgKzQzNiwyNSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NU
cmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICBh
dXRvIGR1cmF0aW9uID0gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9u
KCkpOwogICAgICAgICBhdXRvJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUgPSBiZWZvcmVD
aGFuZ2VTdHlsZTsKICAgICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsK
LSAgICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0
KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVy
YXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUs
IGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7Ci0gICAgfSBlbHNlIGlmIChlbGVt
ZW50Lmhhc0NvbXBsZXRlZFRyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmICFwcm9w
ZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVy
Q2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
KCkpKSB7CisgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eShwc2V1ZG9JZCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoc3R5bGVhYmxl
LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZi
ZWZvcmVDaGFuZ2VTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZl
cnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAg
ICB9IGVsc2UgaWYgKGVsZW1lbnQuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShw
c2V1ZG9JZCwgcHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVzVmFsdWVGb3JUcmFu
c2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIGVsZW1lbnQuZW5zdXJlQ29t
cGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKSkpIHsKICAgICAgICAgLy8gMi4g
T3RoZXJ3aXNlLCBpZiB0aGUgZWxlbWVudCBoYXMgYSBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3Ig
dGhlIHByb3BlcnR5IGFuZCB0aGUgZW5kIHZhbHVlIG9mIHRoZSBjb21wbGV0ZWQgdHJhbnNpdGlv
biBpcyBkaWZmZXJlbnQgZnJvbQogICAgICAgICAvLyAgICB0aGUgYWZ0ZXItY2hhbmdlIHN0eWxl
IGZvciB0aGUgcHJvcGVydHksIHRoZW4gaW1wbGVtZW50YXRpb25zIG11c3QgcmVtb3ZlIHRoZSBj
b21wbGV0ZWQgdHJhbnNpdGlvbiBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5zaXRpb25z
LgotICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgp
LnJlbW92ZShwcm9wZXJ0eSk7CisgICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNp
dGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS5yZW1vdmUocHJvcGVydHkpOwogICAgIH0KIAotICAg
IGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb24gPSBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KHByb3BlcnR5KTsKLSAgICBpZiAoKGhhc1J1bm5pbmdUcmFuc2l0aW9uIHx8
IGVsZW1lbnQuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwcm9wZXJ0eSkpICYm
ICFtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIHsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9uID0gZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwc2V1ZG9JZCwg
cHJvcGVydHkpOworICAgIGlmICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5oYXND
b21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkpICYmICFt
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24pIHsKICAgICAgICAgLy8gMy4gSWYgdGhlIGVsZW1lbnQg
aGFzIGEgcnVubmluZyB0cmFuc2l0aW9uIG9yIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHksIGFuZCB0aGVyZSBpcyBub3QgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXByb3BlcnR5
CiAgICAgICAgIC8vICAgIHZhbHVlLCB0aGVuIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNlbCB0
aGUgcnVubmluZyB0cmFuc2l0aW9uIG9yIHJlbW92ZSB0aGUgY29tcGxldGVkIHRyYW5zaXRpb24g
ZnJvbSB0aGUgc2V0IG9mIGNvbXBsZXRlZCB0cmFuc2l0aW9ucy4KICAgICAgICAgaWYgKGhhc1J1
bm5pbmdUcmFuc2l0aW9uKQotICAgICAgICAgICAgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNp
dGlvbnNCeVByb3BlcnR5KCkudGFrZShwcm9wZXJ0eSktPmNhbmNlbCgpOworICAgICAgICAgICAg
ZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKS50YWtl
KHByb3BlcnR5KS0+Y2FuY2VsKCk7CiAgICAgICAgIGVsc2UKLSAgICAgICAgICAgIGVsZW1lbnQu
ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVtb3ZlKHByb3BlcnR5KTsK
KyAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
KHBzZXVkb0lkKS5yZW1vdmUocHJvcGVydHkpOwogICAgIH0KIAotICAgIGlmIChtYXRjaGluZ0Jh
Y2tpbmdBbmltYXRpb24gJiYgZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0
eShwcm9wZXJ0eSkgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25J
bk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KCkpKSB7Ci0gICAgICAgIGF1dG8gcHJldmlvdXNseVJ1bm5pbmdU
cmFuc2l0aW9uID0gZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCku
dGFrZShwcm9wZXJ0eSk7CisgICAgaWYgKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiAmJiBlbGVt
ZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSkg
JiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0
eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KHBzZXVkb0lkKSkpIHsKKyAgICAgICAgYXV0byBwcmV2aW91c2x5UnVubmluZ1RyYW5z
aXRpb24gPSBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRv
SWQpLnRha2UocHJvcGVydHkpOwogICAgICAgICBhdXRvJiBwcmV2aW91c2x5UnVubmluZ1RyYW5z
aXRpb25DdXJyZW50U3R5bGUgPSBwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb24tPmN1cnJlbnRT
dHlsZSgpOwogICAgICAgICAvLyA0LiBJZiB0aGUgZWxlbWVudCBoYXMgYSBydW5uaW5nIHRyYW5z
aXRpb24gZm9yIHRoZSBwcm9wZXJ0eSwgdGhlcmUgaXMgYSBtYXRjaGluZyB0cmFuc2l0aW9uLXBy
b3BlcnR5IHZhbHVlLCBhbmQgdGhlIGVuZCB2YWx1ZSBvZiB0aGUgcnVubmluZwogICAgICAgICAv
LyAgICB0cmFuc2l0aW9uIGlzIG5vdCBlcXVhbCB0byB0aGUgdmFsdWUgb2YgdGhlIHByb3BlcnR5
IGluIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUsIHRoZW46CkBAIC00ODEsNyArNDkyLDcgQEAgdm9p
ZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJv
cGVydHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZGVsYXkgPSBtYXRjaGluZ0Jh
Y2tpbmdBbmltYXRpb24tPmRlbGF5KCkgPCAwID8gU2Vjb25kcyhtYXRjaGluZ0JhY2tpbmdBbmlt
YXRpb24tPmRlbGF5KCkpICogcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvciA6IFNlY29uZHMobWF0
Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kZWxheSgpKTsKICAgICAgICAgICAgIGF1dG8gZHVyYXRp
b24gPSBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSkgKiByZXZl
cnNpbmdTaG9ydGVuaW5nRmFjdG9yOwogCi0gICAgICAgICAgICBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIENTU1RyYW5zaXRpb246OmNy
ZWF0ZShlbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdB
bmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVy
Q2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxl
LCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CisgICAgICAgICAgICBlbGVtZW50LmVuc3Vy
ZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkocHNldWRvSWQpLnNldChwcm9wZXJ0eSwgQ1NT
VHJhbnNpdGlvbjo6Y3JlYXRlKHN0eWxlYWJsZSwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAq
bWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3Vy
cmVudFN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0Fk
anVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgLy8gNC4gT3RoZXJ3aXNlLCBpbXBsZW1lbnRhdGlvbnMgbXVz
dCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbgogICAgICAgICAgICAgcHJldmlvdXNseVJ1
bm5pbmdUcmFuc2l0aW9uLT5jYW5jZWxGcm9tU3R5bGUoKTsKQEAgLTQ5NywxNyArNTA4LDE3IEBA
IHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFu
ZFByb3BlcnR5KEVsZW1lbnQmIGVsZW1lCiAgICAgICAgICAgICBhdXRvIGR1cmF0aW9uID0gU2Vj
b25kcyhtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24tPmR1cmF0aW9uKCkpOwogICAgICAgICAgICAg
YXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlID0gY3VycmVudFN0eWxlOwogICAgICAg
ICAgICAgYXV0byByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yID0gMTsKLSAgICAgICAgICAgIGVs
ZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwg
Q1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwg
Km1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1
cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdB
ZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAg
ICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCku
c2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwg
Z2VuZXJhdGlvblRpbWUsICptYXRjaGluZ0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVu
bmluZ1RyYW5zaXRpb25DdXJyZW50U3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7CiAgICAgICAgIH0KICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVw
ZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZW5k
ZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpCit2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZShjb25z
dCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAgIC8vIEluIGNhc2UgdGhpcyBlbGVt
ZW50IGlzIG5ld2x5IGdldHRpbmcgYSAiZGlzcGxheTogbm9uZSIgd2UgbmVlZCB0byBjYW5jZWwg
YWxsIG9mIGl0cyB0cmFuc2l0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlmIChj
dXJyZW50U3R5bGUuaGFzVHJhbnNpdGlvbnMoKSAmJiBjdXJyZW50U3R5bGUuZGlzcGxheSgpICE9
IERpc3BsYXlUeXBlOjpOb25lICYmIG5ld1N0eWxlLmRpc3BsYXkoKSA9PSBEaXNwbGF5VHlwZTo6
Tm9uZSkgewotICAgICAgICBpZiAoZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnMoKSkgewot
ICAgICAgICAgICAgYXV0byBydW5uaW5nVHJhbnNpdGlvbnMgPSBlbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKKyAgICAgICAgaWYgKHN0eWxlYWJsZS5lbGVtZW50
Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucyhzdHlsZWFibGUucHNldWRvSWQpKSB7CisgICAgICAgICAg
ICBhdXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IHN0eWxlYWJsZS5lbGVtZW50LmVuc3VyZVJ1bm5p
bmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoc3R5bGVhYmxlLnBzZXVkb0lkKTsKICAgICAgICAgICAg
IGZvciAoY29uc3QgYXV0byYgY3NzVHJhbnNpdGlvbnNCeUNTU1Byb3BlcnR5SURNYXBJdGVtIDog
cnVubmluZ1RyYW5zaXRpb25zKQogICAgICAgICAgICAgICAgIGNzc1RyYW5zaXRpb25zQnlDU1NQ
cm9wZXJ0eUlETWFwSXRlbS52YWx1ZS0+Y2FuY2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIH0KQEAg
LTUzMiwxMyArNTQzLDEzIEBAIHZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU1RyYW5z
aXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSCiAgICAgICAgICAgICBh
dXRvIHByb3BlcnR5ID0gQ1NTUHJvcGVydHlBbmltYXRpb246OmdldFByb3BlcnR5QXRJbmRleChw
cm9wZXJ0eUluZGV4LCBpc1Nob3J0aGFuZCk7CiAgICAgICAgICAgICBpZiAoaXNTaG9ydGhhbmQg
JiYgKmlzU2hvcnRoYW5kKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlOwotICAgICAgICAgICAg
dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVy
dHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgICAg
IHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoc3R5bGVhYmxlLCBw
cm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwgZ2VuZXJhdGlvblRpbWUpOwogICAgICAg
ICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBmb3IgKGF1dG8gcHJvcGVydHkgOiB0
cmFuc2l0aW9uUHJvcGVydGllcykKLSAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVt
ZW50QW5kUHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHksIGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUs
IGdlbmVyYXRpb25UaW1lKTsKKyAgICAgICAgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JTdHlsZWFi
bGVBbmRQcm9wZXJ0eShzdHlsZWFibGUsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxl
LCBnZW5lcmF0aW9uVGltZSk7CiB9CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmgKaW5kZXggOWQ0MmY3ODlmYjg2
MjJkOWNhMDAzZDk1YjNhYTZlOTZmOGExMGViNi4uYmUyZjZjMTViNTA3OTc4MGY5NmVkYjhlYjM4
MWQxMmYyMmUzYTM4ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1h
dGlvblRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRp
bWVsaW5lLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJDU1NWYWx1ZS5oIgogI2luY2x1
ZGUgIkNvbXB1dGVkRWZmZWN0VGltaW5nLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5bGUuaCIKKyNp
bmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNsdWRl
IDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CkBAIC00NCw3ICs0NSw2
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIENTU0FuaW1hdGlvbjsKIGNsYXNzIENTU1Ry
YW5zaXRpb247CiBjbGFzcyBEZWNsYXJhdGl2ZUFuaW1hdGlvbjsKLWNsYXNzIEVsZW1lbnQ7CiAK
IGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lIDogcHVibGljIFJlZkNvdW50ZWQ8QW5pbWF0aW9uVGlt
ZWxpbmU+LCBwdWJsaWMgQ2FuTWFrZVdlYWtQdHI8QW5pbWF0aW9uVGltZWxpbmU+IHsKIHB1Ymxp
YzoKQEAgLTYxLDE4ICs2MSwxOCBAQCBwdWJsaWM6CiAgICAgT3B0aW9uYWw8ZG91YmxlPiBiaW5k
aW5nc0N1cnJlbnRUaW1lKCk7CiAgICAgdmlydHVhbCBPcHRpb25hbDxTZWNvbmRzPiBjdXJyZW50
VGltZSgpIHsgcmV0dXJuIG1fY3VycmVudFRpbWU7IH0KIAotICAgIHZvaWQgZWxlbWVudFdhc1Jl
bW92ZWQoRWxlbWVudCYpOworICAgIHZvaWQgZWxlbWVudFdhc1JlbW92ZWQoY29uc3QgU3R5bGVh
YmxlJik7CiAKLSAgICB2b2lkIHdpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1lbnQoRWxlbWVudCYp
OwotICAgIHZvaWQgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50
JiwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSk7CisgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXJG
b3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJik7CisgICAgdm9pZCBjYW5jZWxEZWNsYXJhdGl2
ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiwgV2ViQW5pbWF0aW9uOjpT
aWxlbnRseSk7CiAKLSAgICB2b2lkIGFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1h
dGlvbiYsIEVsZW1lbnQmKTsKLSAgICB2b2lkIGFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVu
dChXZWJBbmltYXRpb24mLCBFbGVtZW50Jik7CisgICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRv
U3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYsIGNvbnN0IFN0eWxlYWJsZSYpOworICAgIHZvaWQgYW5p
bWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoV2ViQW5pbWF0aW9uJiwgY29uc3QgU3R5bGVh
YmxlJik7CiAKLSAgICB2b2lkIHJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9y
T3duaW5nRWxlbWVudChXZWJBbmltYXRpb24mLCBFbGVtZW50Jik7CisgICAgdm9pZCByZW1vdmVE
ZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9u
JiwgY29uc3QgU3R5bGVhYmxlJik7CiAKLSAgICB2b2lkIHVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JF
bGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0
aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUs
IGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVDU1NBbmltYXRp
b25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBhZnRlckNoYW5nZVN0eWxlKTsKKyAgICB2b2lk
IHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIGNvbnN0
IFJlbmRlclN0eWxlJiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7
CiAKIHByb3RlY3RlZDoKICAgICBleHBsaWNpdCBBbmltYXRpb25UaW1lbGluZSgpOwpAQCAtODIs
OCArODIsOCBAQCBwcm90ZWN0ZWQ6CiAKIHByaXZhdGU6CiAgICAgdm9pZCB1cGRhdGVHbG9iYWxQ
b3NpdGlvbihXZWJBbmltYXRpb24mKTsKLSAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9y
RWxlbWVudEFuZFByb3BlcnR5KEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBjb25zdCBSZW5kZXJT
dHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwg
Y29uc3QgTW9ub3RvbmljVGltZSk7Ci0gICAgdm9pZCByZW1vdmVDU1NBbmltYXRpb25DcmVhdGVk
QnlNYXJrdXAoRWxlbWVudCYsIENTU0FuaW1hdGlvbiYpOworICAgIHZvaWQgdXBkYXRlQ1NTVHJh
bnNpdGlvbnNGb3JTdHlsZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmLCBDU1NQcm9w
ZXJ0eUlELCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgYWZ0ZXJDaGFuZ2VTdHlsZSwgY29uc3QgTW9ub3RvbmljVGltZSk7CisgICAgdm9pZCByZW1v
dmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoY29uc3QgU3R5bGVhYmxlJiwgQ1NTQW5pbWF0
aW9uJik7CiAKICAgICBNYXJrYWJsZTxTZWNvbmRzLCBTZWNvbmRzOjpNYXJrYWJsZVRyYWl0cz4g
bV9jdXJyZW50VGltZTsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24u
Y3BwCmluZGV4IDcxOWQ4ZDM5NjJkZmIwMTM2MTkzMWZiNGYzNTE1YjRlNDU1MTM0MmYuLmM5MGRk
MWI5OTYyNTBiNGVhYzhkOTJkNjI3MzNiYWY1Y2E3OGFhODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9DU1NBbmltYXRpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJB
bmltYXRpb24uaCIKICNpbmNsdWRlICJBbmltYXRpb25FdmVudC5oIgotI2luY2x1ZGUgIkVsZW1l
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJS
ZW5kZXJTdHlsZS5oIgogI2luY2x1ZGUgPHd0Zi9Jc29NYWxsb2NJbmxpbmVzLmg+CkBAIC0zNyw3
ICszNiw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9J
TVBMKENTU0FuaW1hdGlvbik7CiAKLVJlZjxDU1NBbmltYXRpb24+IENTU0FuaW1hdGlvbjo6Y3Jl
YXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1h
dGlvbiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3
U3R5bGUpCitSZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShjb25zdCBTdHls
ZWFibGUmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwg
Y29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUp
CiB7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU0FuaW1hdGlvbihvd25pbmdF
bGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKSk7CiAgICAgcmVzdWx0LT5pbml0aWFsaXplKG9sZFN0
eWxlLCBuZXdTdHlsZSk7CkBAIC00Nyw3ICs0Niw3IEBAIFJlZjxDU1NBbmltYXRpb24+IENTU0Fu
aW1hdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYK
ICAgICByZXR1cm4gcmVzdWx0OwogfQogCi1DU1NBbmltYXRpb246OkNTU0FuaW1hdGlvbihFbGVt
ZW50JiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCitDU1NBbmlt
YXRpb246OkNTU0FuaW1hdGlvbihjb25zdCBTdHlsZWFibGUmIGVsZW1lbnQsIGNvbnN0IEFuaW1h
dGlvbiYgYmFja2luZ0FuaW1hdGlvbikKICAgICA6IERlY2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1l
bnQsIGJhY2tpbmdBbmltYXRpb24pCiAgICAgLCBtX2FuaW1hdGlvbk5hbWUoYmFja2luZ0FuaW1h
dGlvbi5uYW1lKCkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NT
QW5pbWF0aW9uLmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmgKaW5k
ZXggZTNiYzlhNjk4ODg4ZmVmNmYzYTM2ZmExZDBlZDBmNWU1YWQ2OTIzMy4uMmMwNWFiNTVhZGVk
MWM2MWE3NjdmZDg5NDM4ODliMzk4NjcxNzZkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9D
U1NBbmltYXRpb24uaApAQCAtMjYsMTkgKzI2LDE5IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1
ZGUgIkRlY2xhcmF0aXZlQW5pbWF0aW9uLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5j
bHVkZSA8d3RmL09wdGlvblNldC5oPgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KIAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBBbmltYXRpb247Ci1jbGFzcyBFbGVtZW50OwogY2xhc3MgUmVu
ZGVyU3R5bGU7CiAKIGNsYXNzIENTU0FuaW1hdGlvbiBmaW5hbCA6IHB1YmxpYyBEZWNsYXJhdGl2
ZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9DQVRFRChDU1NBbmltYXRpb24pOwog
cHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NTQW5pbWF0aW9uPiBjcmVhdGUoRWxlbWVudCYsIGNv
bnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVy
U3R5bGUmIG5ld1N0eWxlKTsKKyAgICBzdGF0aWMgUmVmPENTU0FuaW1hdGlvbj4gY3JlYXRlKGNv
bnN0IFN0eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlKiBvbGRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAgICB+Q1NTQW5pbWF0aW9uKCkg
PSBkZWZhdWx0OwogCiAgICAgYm9vbCBpc0NTU0FuaW1hdGlvbigpIGNvbnN0IG92ZXJyaWRlIHsg
cmV0dXJuIHRydWU7IH0KQEAgLTQ4LDcgKzQ4LDcgQEAgcHVibGljOgogICAgIHZvaWQgZWZmZWN0
S2V5ZnJhbWVzV2VyZVNldFVzaW5nQmluZGluZ3MoKTsKIAogcHJpdmF0ZToKLSAgICBDU1NBbmlt
YXRpb24oRWxlbWVudCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIENTU0FuaW1hdGlvbihjb25z
dCBTdHlsZWFibGUmLCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZvaWQgc3luY1Byb3BlcnRp
ZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpIGZpbmFsOwogICAgIFJlZjxBbmltYXRpb25FdmVudEJh
c2U+IGNyZWF0ZUV2ZW50KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgZG91YmxlIGVsYXBz
ZWRUaW1lLCBjb25zdCBTdHJpbmcmIHBzZXVkb0lkLCBPcHRpb25hbDxTZWNvbmRzPiB0aW1lbGlu
ZVRpbWUpIGZpbmFsOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uY3Bw
CmluZGV4IDJkMDI2ZjVmM2YyODVhNTc4NjA0NWI2OGQwMDRiZjAwMWQyMDI5NDQuLjllNjA2MDkx
YzE4ODllYjc4YWFlMTg5NmZkMGMxNTQ1NDNmNjllZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKQEAgLTI4LDcgKzI4LDYgQEAKIAogI2luY2x1ZGUgIkFu
aW1hdGlvbi5oIgogI2luY2x1ZGUgIkRvY3VtZW50VGltZWxpbmUuaCIKLSNpbmNsdWRlICJFbGVt
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAi
S2V5ZnJhbWVFZmZlY3QuaCIKICNpbmNsdWRlICJUcmFuc2l0aW9uRXZlbnQuaCIKQEAgLTM4LDcg
KzM3LDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBXVEZfTUFLRV9JU09fQUxMT0NBVEVEX0lN
UEwoQ1NTVHJhbnNpdGlvbik7CiAKLVJlZjxDU1NUcmFuc2l0aW9uPiBDU1NUcmFuc2l0aW9uOjpj
cmVhdGUoRWxlbWVudCYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9u
b3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0
aW9uLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdT
dHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUm
IHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdG
YWN0b3IpCitSZWY8Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGNvbnN0IFN0
eWxlYWJsZSYgb3duaW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgTW9ub3Rvbmlj
VGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uLCBj
b25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwg
U2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVy
c2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3Ip
CiB7CiAgICAgQVNTRVJUKG9sZFN0eWxlKTsKICAgICBhdXRvIHJlc3VsdCA9IGFkb3B0UmVmKCpu
ZXcgQ1NTVHJhbnNpdGlvbihvd25pbmdFbGVtZW50LCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUs
IGJhY2tpbmdBbmltYXRpb24sICpvbGRTdHlsZSwgbmV3U3R5bGUsIHJldmVyc2luZ0FkanVzdGVk
U3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwpAQCAtNTAsMTEgKzQ5LDEx
IEBAIFJlZjxDU1NUcmFuc2l0aW9uPiBDU1NUcmFuc2l0aW9uOjpjcmVhdGUoRWxlbWVudCYgb3du
aW5nRWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAotQ1NT
VHJhbnNpdGlvbjo6Q1NTVHJhbnNpdGlvbihFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlE
IHByb3BlcnR5LCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24m
IGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0
ZWRTdGFydFN0eWxlLCBkb3VibGUgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKLSAgICA6IERl
Y2xhcmF0aXZlQW5pbWF0aW9uKGVsZW1lbnQsIGJhY2tpbmdBbmltYXRpb24pCitDU1NUcmFuc2l0
aW9uOjpDU1NUcmFuc2l0aW9uKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDU1NQcm9wZXJ0
eUlEIHByb3BlcnR5LCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRp
b24mIGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3Qg
UmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRq
dXN0ZWRTdGFydFN0eWxlLCBkb3VibGUgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikKKyAgICA6
IERlY2xhcmF0aXZlQW5pbWF0aW9uKHN0eWxlYWJsZSwgYmFja2luZ0FuaW1hdGlvbikKICAgICAs
IG1fcHJvcGVydHkocHJvcGVydHkpCiAgICAgLCBtX2dlbmVyYXRpb25UaW1lKGdlbmVyYXRpb25U
aW1lKQotICAgICwgbV90aW1lbGluZVRpbWVBdENyZWF0aW9uKGVsZW1lbnQuZG9jdW1lbnQoKS50
aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkpCisgICAgLCBtX3RpbWVsaW5lVGltZUF0Q3JlYXRpb24o
c3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKS50aW1lbGluZSgpLmN1cnJlbnRUaW1lKCkpCiAg
ICAgLCBtX3RhcmdldFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cih0YXJnZXRTdHlsZSkpCiAg
ICAgLCBtX2N1cnJlbnRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIob2xkU3R5bGUpKQogICAg
ICwgbV9yZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKHJl
dmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSkpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU1Ry
YW5zaXRpb24uaAppbmRleCBkMjc1YmJiMDQxNWQ3Nzc4YzNkOWJhMDE2YjQwNDliNDdhYzAxMWU1
Li41OGQ2ZmQ3NDFmMWNjNDVkOTBmZDVhZGIyMTNmODc1NTZmZGMyNjA3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmgKQEAgLTI3LDYgKzI3LDcgQEAKIAogI2luY2x1
ZGUgIkNTU1Byb3BlcnR5TmFtZXMuaCIKICNpbmNsdWRlICJEZWNsYXJhdGl2ZUFuaW1hdGlvbi5o
IgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgogI2lu
Y2x1ZGUgPHd0Zi9Nb25vdG9uaWNUaW1lLmg+CiAjaW5jbHVkZSA8d3RmL09wdGlvbmFsLmg+CkBA
IC0zNiwxMyArMzcsMTIgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogY2xhc3MgQW5pbWF0aW9u
OwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiBjbGFzcyBDU1NUcmFuc2l0
aW9uIGZpbmFsIDogcHVibGljIERlY2xhcmF0aXZlQW5pbWF0aW9uIHsKICAgICBXVEZfTUFLRV9J
U09fQUxMT0NBVEVEKENTU1RyYW5zaXRpb24pOwogcHVibGljOgotICAgIHN0YXRpYyBSZWY8Q1NT
VHJhbnNpdGlvbj4gY3JlYXRlKEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1l
IGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xk
U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25k
cyBkdXJhdGlvbiwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHls
ZSwgZG91YmxlKTsKKyAgICBzdGF0aWMgUmVmPENTU1RyYW5zaXRpb24+IGNyZWF0ZShjb25zdCBT
dHlsZWFibGUmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBj
b25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRl
clN0eWxlJiBuZXdTdHlsZSwgU2Vjb25kcyBkZWxheSwgU2Vjb25kcyBkdXJhdGlvbiwgY29uc3Qg
UmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKICAgICB+
Q1NTVHJhbnNpdGlvbigpID0gZGVmYXVsdDsKIAogICAgIGJvb2wgaXNDU1NUcmFuc2l0aW9uKCkg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gdHJ1ZTsgfQpAQCAtNTYsNyArNTYsNyBAQCBwdWJsaWM6
CiAgICAgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IoKSBjb25zdCB7IHJldHVybiBt
X3JldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3I7IH0KIAogcHJpdmF0ZToKLSAgICBDU1NUcmFuc2l0
aW9uKEVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1l
LCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVz
dGVkU3RhcnRTdHlsZSwgZG91YmxlKTsKKyAgICBDU1NUcmFuc2l0aW9uKGNvbnN0IFN0eWxlYWJs
ZSYsIENTU1Byb3BlcnR5SUQsIE1vbm90b25pY1RpbWUgZ2VuZXJhdGlvblRpbWUsIGNvbnN0IEFu
aW1hdGlvbiYsIGNvbnN0IFJlbmRlclN0eWxlJiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUm
IHRhcmdldFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0
eWxlLCBkb3VibGUpOwogICAgIHZvaWQgc2V0VGltaW5nUHJvcGVydGllcyhTZWNvbmRzIGRlbGF5
LCBTZWNvbmRzIGR1cmF0aW9uKTsKICAgICBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVhdGVF
dmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwgY29u
c3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBmaW5h
bDsKICAgICB2b2lkIHJlc29sdmUoUmVuZGVyU3R5bGUmLCBPcHRpb25hbDxTZWNvbmRzPikgZmlu
YWw7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmlt
YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmNwcAppbmRleCBkNTViZDEwNTkxMzM5MGU5OGYwOTMxYjA4YTQ1ZmFhNjM3ZWYxZDQzLi5lNGY3
ODI5OGU1ZmYwOTEzNjMxYzIzZDJmNTFkMDlmYjRkNTAxZTNiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKQEAgLTQzLDkgKzQzLDEw
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKERl
Y2xhcmF0aXZlQW5pbWF0aW9uKTsKIAotRGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZl
QW5pbWF0aW9uKEVsZW1lbnQmIG93bmluZ0VsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2lu
Z0FuaW1hdGlvbikKLSAgICA6IFdlYkFuaW1hdGlvbihvd25pbmdFbGVtZW50LmRvY3VtZW50KCkp
Ci0gICAgLCBtX293bmluZ0VsZW1lbnQobWFrZVdlYWtQdHIob3duaW5nRWxlbWVudCkpCitEZWNs
YXJhdGl2ZUFuaW1hdGlvbjo6RGVjbGFyYXRpdmVBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiBz
dHlsZWFibGUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbikKKyAgICA6IFdlYkFu
aW1hdGlvbihzdHlsZWFibGUuZWxlbWVudC5kb2N1bWVudCgpKQorICAgICwgbV9vd25pbmdFbGVt
ZW50KG1ha2VXZWFrUHRyKHN0eWxlYWJsZS5lbGVtZW50KSkKKyAgICAsIG1fb3duaW5nUHNldWRv
SWQoc3R5bGVhYmxlLnBzZXVkb0lkKQogICAgICwgbV9iYWNraW5nQW5pbWF0aW9uKGNvbnN0X2Nh
c3Q8QW5pbWF0aW9uJj4oYmFja2luZ0FuaW1hdGlvbikpCiB7CiB9CkBAIC01NCw5ICs1NSwxMSBA
QCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6fkRlY2xhcmF0aXZlQW5pbWF0aW9uKCkKIHsKIH0KIAot
RWxlbWVudCogRGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQoKSBjb25zdAorY29u
c3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6b3duaW5n
RWxlbWVudCgpIGNvbnN0CiB7Ci0gICAgcmV0dXJuIG1fb3duaW5nRWxlbWVudC5nZXQoKTsKKyAg
ICBpZiAobV9vd25pbmdFbGVtZW50KQorICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCptX293bmlu
Z0VsZW1lbnQuZ2V0KCksIG1fb3duaW5nUHNldWRvSWQpOworICAgIHJldHVybiBXVEY6Om51bGxv
cHQ7CiB9CiAKIHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OnRpY2soKQpAQCAtOTMsNyArOTYs
NyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjpkaXNhc3NvY2lhdGVGcm9tT3duaW5nRWxl
bWVudCgpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmIChhdXRvKiBhbmltYXRpb25UaW1lbGlu
ZSA9IHRpbWVsaW5lKCkpCi0gICAgICAgIGFuaW1hdGlvblRpbWVsaW5lLT5yZW1vdmVEZWNsYXJh
dGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoKnRoaXMsICptX293bmluZ0Vs
ZW1lbnQpOworICAgICAgICBhbmltYXRpb25UaW1lbGluZS0+cmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KCp0aGlzLCAqb3duaW5nRWxlbWVudCgpKTsK
ICAgICBtX293bmluZ0VsZW1lbnQgPSBudWxscHRyOwogfQogCkBAIC0xMTIsMTIgKzExNSw3IEBA
IHZvaWQgRGVjbGFyYXRpdmVBbmltYXRpb246OmluaXRpYWxpemUoY29uc3QgUmVuZGVyU3R5bGUq
IG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTCiAKICAgICBBU1NFUlQobV9vd25pbmdFbGVtZW50KTsK
IAotICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihtX293bmluZ0VsZW1lbnQuZ2V0KCkpKSB7Ci0g
ICAgICAgIGF1dG8mIHBzZXVkb093bmluZ0VsZW1lbnQgPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50
PigqbV9vd25pbmdFbGVtZW50KTsKLSAgICAgICAgQVNTRVJUKHBzZXVkb093bmluZ0VsZW1lbnQu
aG9zdEVsZW1lbnQoKSk7Ci0gICAgICAgIHNldEVmZmVjdChLZXlmcmFtZUVmZmVjdDo6Y3JlYXRl
KCpwc2V1ZG9Pd25pbmdFbGVtZW50Lmhvc3RFbGVtZW50KCksIHBzZXVkb093bmluZ0VsZW1lbnQu
cHNldWRvSWQoKSkpOwotICAgIH0gZWxzZQotICAgICAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZl
Y3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50LCBtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lkKCkp
KTsKKyAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqbV9vd25pbmdFbGVtZW50
LCBtX293bmluZ1BzZXVkb0lkKSk7CiAgICAgc2V0VGltZWxpbmUoJm1fb3duaW5nRWxlbWVudC0+
ZG9jdW1lbnQoKS50aW1lbGluZSgpKTsKICAgICBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oZWZm
ZWN0KCkpLT5jb21wdXRlRGVjbGFyYXRpdmVBbmltYXRpb25CbGVuZGluZ0tleWZyYW1lcyhvbGRT
dHlsZSwgbmV3U3R5bGUpOwogICAgIHN5bmNQcm9wZXJ0aWVzV2l0aEJhY2tpbmdBbmltYXRpb24o
KTsKQEAgLTM1Miw3ICszNTAsNyBAQCB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjplbnF1ZXVl
RE9NRXZlbnQoY29uc3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBTZWNvbmRzCiAgICAgICAgIHJl
dHVybjsKIAogICAgIGF1dG8gdGltZSA9IHNlY29uZHNUb1dlYkFuaW1hdGlvbnNBUElUaW1lKGVs
YXBzZWRUaW1lKSAvIDEwMDA7Ci0gICAgY29uc3QgYXV0byYgcHNldWRvSWQgPSBQc2V1ZG9FbGVt
ZW50Ojpwc2V1ZG9FbGVtZW50TmFtZUZvckV2ZW50cyhtX293bmluZ0VsZW1lbnQtPnBzZXVkb0lk
KCkpOworICAgIGNvbnN0IGF1dG8mIHBzZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNldWRvRWxl
bWVudE5hbWVGb3JFdmVudHMobV9vd25pbmdQc2V1ZG9JZCk7CiAgICAgYXV0byB0aW1lbGluZVRp
bWUgPSB0aW1lbGluZSgpID8gdGltZWxpbmUoKS0+Y3VycmVudFRpbWUoKSA6IFdURjo6bnVsbG9w
dDsKICAgICBhdXRvIGV2ZW50ID0gY3JlYXRlRXZlbnQoZXZlbnRUeXBlLCB0aW1lLCBwc2V1ZG9J
ZCwgdGltZWxpbmVUaW1lKTsKICAgICBldmVudC0+c2V0VGFyZ2V0KG1fb3duaW5nRWxlbWVudC5n
ZXQoKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVB
bmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlv
bi5oCmluZGV4IGFkYjg2NjVjZDJjZWRmNjE1ZDAzMmFhYTZmZWQ5MTQ3MjBmMzU5ZGUuLjMxYzRm
NjUzMzk3YWI4OGQ3MzViNWMyZGFhYWFiMWNjYjNlZDgzNmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAK
ICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3QuaCIKICNpbmNsdWRlICJBbmltYXRpb25FZmZlY3RQ
aGFzZS5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgIldlYkFuaW1hdGlvbi5o
IgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvV2Vha1B0ci5oPgpAQCAtNDUs
NyArNDYsNyBAQCBwdWJsaWM6CiAKICAgICBib29sIGlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSBj
b25zdCBmaW5hbCB7IHJldHVybiB0cnVlOyB9CiAKLSAgICBFbGVtZW50KiBvd25pbmdFbGVtZW50
KCkgY29uc3Q7CisgICAgY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBvd25pbmdFbGVt
ZW50KCkgY29uc3Q7CiAgICAgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKCkgY29u
c3QgeyByZXR1cm4gbV9iYWNraW5nQW5pbWF0aW9uOyB9CiAgICAgdm9pZCBzZXRCYWNraW5nQW5p
bWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYpOwogICAgIHZvaWQgY2FuY2VsRnJvbVN0eWxlKCk7CkBA
IC03Miw3ICs3Myw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGZsdXNoUGVuZGluZ1N0eWxlQ2hhbmdl
cygpIGNvbnN0OwogCiBwcm90ZWN0ZWQ6Ci0gICAgRGVjbGFyYXRpdmVBbmltYXRpb24oRWxlbWVu
dCYsIGNvbnN0IEFuaW1hdGlvbiYpOworICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0
eWxlYWJsZSYsIGNvbnN0IEFuaW1hdGlvbiYpOwogCiAgICAgdmlydHVhbCB2b2lkIGluaXRpYWxp
emUoY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5
bGUpOwogICAgIHZpcnR1YWwgdm9pZCBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9u
KCk7CkBAIC05MCw2ICs5MSw3IEBAIHByaXZhdGU6CiAgICAgQW5pbWF0aW9uRWZmZWN0UGhhc2Ug
bV9wcmV2aW91c1BoYXNlIHsgQW5pbWF0aW9uRWZmZWN0UGhhc2U6OklkbGUgfTsKIAogICAgIFdl
YWtQdHI8RWxlbWVudD4gbV9vd25pbmdFbGVtZW50OworICAgIFBzZXVkb0lkIG1fb3duaW5nUHNl
dWRvSWQ7CiAgICAgUmVmPEFuaW1hdGlvbj4gbV9iYWNraW5nQW5pbWF0aW9uOwogICAgIGRvdWJs
ZSBtX3ByZXZpb3VzSXRlcmF0aW9uOwogfTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9E
b2N1bWVudFRpbWVsaW5lLmNwcAppbmRleCBiNDNjM2MxMGYyZTkzMTRjZmE5NmU5Nzk1MmQ3ZWMx
MmQ4ZTdhZGQzLi42NjNiYTE4NWYwZDI1MzhkNGY2ZGIyYWY1NGE3YTFhYzU1ZWRhMzQ0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVFZmZlY3RTdGFjay5oIgogI2luY2x1ZGUgIk5v
ZGUuaCIKICNpbmNsdWRlICJQYWdlLmgiCisjaW5jbHVkZSAiUmVuZGVyQm94TW9kZWxPYmplY3Qu
aCIKICNpbmNsdWRlICJSZW5kZXJFbGVtZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyTGF5ZXIuaCIK
ICNpbmNsdWRlICJSZW5kZXJMYXllckJhY2tpbmcuaCIKQEAgLTIyNiwxNCArMjI3LDE0IEBAIGJv
b2wgRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0aW9uQ2FuQmVSZW1vdmVkKFdlYkFuaW1hdGlvbiYg
YW5pbWF0aW9uKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICBhdXRvKiBrZXlmcmFtZUVm
ZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihlZmZlY3QpOwotICAgIGF1dG8qIHRhcmdl
dCA9IGtleWZyYW1lRWZmZWN0LT50YXJnZXQoKTsKLSAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0
LT5pc0Rlc2NlbmRhbnRPZigqbV9kb2N1bWVudCkpCisgICAgYXV0byB0YXJnZXQgPSBrZXlmcmFt
ZUVmZmVjdC0+dGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYgKCF0YXJnZXQgfHwgIXRhcmdldC0+
ZWxlbWVudC5pc0Rlc2NlbmRhbnRPZigqbV9kb2N1bWVudCkpCiAgICAgICAgIHJldHVybiBmYWxz
ZTsKIAogICAgIEhhc2hTZXQ8Q1NTUHJvcGVydHlJRD4gcHJvcGVydGllc1RvTWF0Y2ggPSBrZXlm
cmFtZUVmZmVjdC0+YW5pbWF0ZWRQcm9wZXJ0aWVzKCk7CiAKICAgICBWZWN0b3I8UmVmUHRyPFdl
YkFuaW1hdGlvbj4+IGFuaW1hdGlvbnM7Ci0gICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3Rh
Y2sgPSB0YXJnZXQtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkgeworICAgIGlmIChhdXRvKiBrZXlm
cmFtZUVmZmVjdFN0YWNrID0gdGFyZ2V0LT5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2sodGFy
Z2V0LT5wc2V1ZG9JZCkpIHsKICAgICAgICAgZm9yIChhdXRvJiBlZmZlY3QgOiBrZXlmcmFtZUVm
ZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFu
aW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBl
bmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CkBAIC0yOTYsOCArMjk3LDggQEAgdm9pZCBEb2N1bWVu
dFRpbWVsaW5lOjp0cmFuc2l0aW9uRGlkQ29tcGxldGUoUmVmUHRyPENTU1RyYW5zaXRpb24+IHRy
YW5zaXRpb24pCiAgICAgQVNTRVJUKHRyYW5zaXRpb24pOwogICAgIHJlbW92ZUFuaW1hdGlvbigq
dHJhbnNpdGlvbik7CiAgICAgaWYgKGlzPEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5lZmZl
Y3QoKSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZm
ZWN0Pih0cmFuc2l0aW9uLT5lZmZlY3QoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQo
KSkKLSAgICAgICAgICAgIHRhcmdldC0+ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24pOworICAgICAgICBp
ZiAoYXV0byBzdHlsZWFibGUgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4odHJhbnNpdGlvbi0+
ZWZmZWN0KCkpLT50YXJnZXRTdHlsZWFibGUoKSkKKyAgICAgICAgICAgIHN0eWxlYWJsZS0+ZWxl
bWVudC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoc3R5bGVhYmxlLT5wc2V1
ZG9JZCkuc2V0KHRyYW5zaXRpb24tPnByb3BlcnR5KCksIHRyYW5zaXRpb24pOwogICAgIH0KIH0K
IApAQCAtMzMwLDEwICszMzEsMTEgQEAgdm9pZCBEb2N1bWVudFRpbWVsaW5lOjpzY2hlZHVsZU5l
eHRUaWNrKCkKIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZBbmltYXRp
b24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91dFJlY3QmIGJvdW5kcykgY29uc3QKIHsK
LSAgICBpZiAoIXJlbmRlcmVyLmVsZW1lbnQoKSkKLSAgICAgICAgcmV0dXJuIHRydWU7CisgICAg
YXV0byBzdHlsZWFibGUgPSByZW5kZXJlci5zdHlsZWFibGUoKTsKKyAgICBpZiAoIXN0eWxlYWJs
ZSkKKyAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRl
cmVyLmVsZW1lbnQoKS0+YW5pbWF0aW9ucygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHls
ZWFibGUtPmVsZW1lbnQuYW5pbWF0aW9ucyhzdHlsZWFibGUtPnBzZXVkb0lkKTsKICAgICBpZiAo
IWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtMzU1LDEwICszNTcsMTEg
QEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZBbmltYXRpb24oUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIsIExheW91dFIKIAogYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1
bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBDU1NQcm9w
ZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgpKQor
ICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHls
ZWFibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBy
ZW5kZXJlci5lbGVtZW50KCktPmFuaW1hdGlvbnMoKTsKKyAgICBhdXRvKiBhbmltYXRpb25zID0g
c3R5bGVhYmxlLT5lbGVtZW50LmFuaW1hdGlvbnMoc3R5bGVhYmxlLT5wc2V1ZG9JZCk7CiAgICAg
aWYgKCFhbmltYXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKQEAgLTM3NiwxMCArMzc5
LDExIEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQW5pbWF0aW9uT25SZW5kZXJl
cihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgQ1NTCiAKIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6
aXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVy
ZXIuZWxlbWVudCgpKQorICAgIGF1dG8gc3R5bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7
CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGF1dG8q
IGFuaW1hdGlvbnMgPSByZW5kZXJlci5lbGVtZW50KCktPmFuaW1hdGlvbnMoKTsKKyAgICBhdXRv
KiBhbmltYXRpb25zID0gc3R5bGVhYmxlLT5lbGVtZW50LmFuaW1hdGlvbnMoc3R5bGVhYmxlLT5w
c2V1ZG9JZCk7CiAgICAgaWYgKCFhbmltYXRpb25zKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAK
QEAgLTQwMCwxMSArNDA0LDExIEBAIGJvb2wgRG9jdW1lbnRUaW1lbGluZTo6aXNSdW5uaW5nQWNj
ZWxlcmF0ZWRBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlCiAKIHN0ZDo6dW5p
cXVlX3B0cjxSZW5kZXJTdHlsZT4gRG9jdW1lbnRUaW1lbGluZTo6YW5pbWF0ZWRTdHlsZUZvclJl
bmRlcmVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQogewotICAgIGF1dG8qIGVsZW1lbnQgPSBy
ZW5kZXJlci5lbGVtZW50KCk7Ci0gICAgaWYgKCFlbGVtZW50KQorICAgIGF1dG8gc3R5bGVhYmxl
ID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAKLSAgICBhdXRv
KiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25zKCk7CisgICAgYXV0
byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+ZWxlbWVudC5hbmltYXRpb25zKHN0eWxlYWJsZS0+
cHNldWRvSWQpOwogICAgIGlmICghYW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIFJlbmRlclN0
eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHlsZSgpKTsKIApAQCAtNDQ2LDkgKzQ1MCwxMyBAQCB2
b2lkIERvY3VtZW50VGltZWxpbmU6OmFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygp
CiAgICAgfQogfQogCi1ib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9y
RWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIERv
Y3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVy
YXRlZChjb25zdCBSZW5kZXJCb3hNb2RlbE9iamVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAg
YXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpOworICAgIGF1dG8gc3R5bGVh
YmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCk7CisgICAgaWYgKCFzdHlsZWFibGUpCisgICAgICAg
IHJldHVybiBmYWxzZTsKKworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmVsZW1l
bnQuYW5pbWF0aW9ucyhzdHlsZWFibGUtPnBzZXVkb0lkKTsKICAgICBpZiAoIWFuaW1hdGlvbnMg
fHwgYW5pbWF0aW9ucy0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCmluZGV4IGYyN2M3Yzc4OTJm
OGVjNzIxZDk2YTMyOGUzMDlmNWJmNjE2NzUwNTYuLjhlMzA0OTExNmQ1MDRjYTUzYmUwMDEzYWZh
ZjJkZjgyOThiZDllYjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1
bWVudFRpbWVsaW5lLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGlt
ZWxpbmUuaApAQCAtMzUsNiArMzUsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFu
aW1hdGlvbkV2ZW50QmFzZTsKIGNsYXNzIERvY3VtZW50VGltZWxpbmVzQ29udHJvbGxlcjsKK2Ns
YXNzIFJlbmRlckJveE1vZGVsT2JqZWN0OwogY2xhc3MgUmVuZGVyRWxlbWVudDsKIAogY2xhc3Mg
RG9jdW1lbnRUaW1lbGluZSBmaW5hbCA6IHB1YmxpYyBBbmltYXRpb25UaW1lbGluZQpAQCAtNjIs
NyArNjMsNyBAQCBwdWJsaWM6CiAgICAgYm9vbCBpc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVy
KFJlbmRlckVsZW1lbnQmLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKICAgICBib29sIGlzUnVubmlu
Z0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVy
dHlJRCkgY29uc3Q7CiAgICAgdm9pZCBhbmltYXRpb25BY2NlbGVyYXRlZFJ1bm5pbmdTdGF0ZURp
ZENoYW5nZShXZWJBbmltYXRpb24mKTsKLSAgICBib29sIHJ1bm5pbmdBbmltYXRpb25zRm9yRWxl
bWVudEFyZUFsbEFjY2VsZXJhdGVkKEVsZW1lbnQmKSBjb25zdDsKKyAgICBib29sIHJ1bm5pbmdB
bmltYXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2Rl
bE9iamVjdCYpIGNvbnN0OwogICAgIHZvaWQgZGV0YWNoRnJvbURvY3VtZW50KCk7CiAKICAgICB2
b2lkIGVucXVldWVBbmltYXRpb25FdmVudChBbmltYXRpb25FdmVudEJhc2UmKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCmluZGV4IGY1ZmY4MWFlM2NkM2Fl
MjM3NDk1MTY4ODE2YTMwYmNkMmQ5NWRmNzIuLjFkYjQyYmYwYThhMmUxYmQ3ODNmYmI5OTJjMzcw
MDA3ZDJjOWYxOTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFt
ZUVmZmVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0
LmNwcApAQCAtNjYsMTAgKzY2LDI3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiB1c2luZyBuYW1l
c3BhY2UgSlNDOwogCi1zdGF0aWMgaW5saW5lIHZvaWQgaW52YWxpZGF0ZUVsZW1lbnQoRWxlbWVu
dCogZWxlbWVudCkKK3N0YXRpYyBFbGVtZW50KiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5
bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKK3sKKyAg
ICBpZiAoIXN0eWxlYWJsZSkKKyAgICAgICAgcmV0dXJuIG51bGxwdHI7CisKKyAgICBzd2l0Y2gg
KHN0eWxlYWJsZS0+cHNldWRvSWQpIHsKKyAgICBjYXNlIFBzZXVkb0lkOjpOb25lOgorICAgICAg
ICByZXR1cm4gJnN0eWxlYWJsZS0+ZWxlbWVudDsKKyAgICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6
CisgICAgICAgIHJldHVybiBzdHlsZWFibGUtPmVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgp
OworICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAgICAgICByZXR1cm4gc3R5bGVhYmxlLT5l
bGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOworICAgIGRlZmF1bHQ6CisgICAgICAgIHJldHVy
biBudWxscHRyOworICAgIH0KK30KKworc3RhdGljIGlubGluZSB2b2lkIGludmFsaWRhdGVFbGVt
ZW50KGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHN0eWxlYWJsZSkKIHsKLSAgICBp
ZiAoZWxlbWVudCkKLSAgICAgICAgZWxlbWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsK
KyAgICBpZiAoYXV0byogZWxlbWVudE9yUHNldWRvRWxlbWVudCA9IGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnRGb3JTdHlsZWFibGUoc3R5bGVhYmxlKSkKKyAgICAgICAgZWxlbWVudE9yUHNldWRvRWxl
bWVudC0+aW52YWxpZGF0ZVN0eWxlSW50ZXJuYWwoKTsKIH0KIAogc3RhdGljIGlubGluZSBTdHJp
bmcgQ1NTUHJvcGVydHlJRFRvSURMQXR0cmlidXRlTmFtZShDU1NQcm9wZXJ0eUlEIGNzc1Byb3Bl
cnR5SWQpCkBAIC0xMDUxLDEzICsxMDY4LDE0IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmNvbXB1
dGVTdGFja2luZ0NvbnRleHRJbXBhY3QoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphbmltYXRp
b25UaW1lbGluZURpZENoYW5nZShBbmltYXRpb25UaW1lbGluZSogdGltZWxpbmUpCiB7Ci0gICAg
aWYgKCF0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCkpCisgICAgYXV0byB0YXJnZXQgPSB0
YXJnZXRTdHlsZWFibGUoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCiAg
ICAgaWYgKHRpbWVsaW5lKQotICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRF
bGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRF
ZmZlY3QoKnRoaXMpOworICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVs
ZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZl
Y3QoKnRoaXMpOwogICAgIGVsc2UgewotICAgICAgICB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwor
ICAgICAgICB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0YXJnZXQt
PnBzZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0
U3RhY2sgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xMDY5LDE0ICsxMDg3LDE1IEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgpCiAKIHZvaWQgS2V5ZnJhbWVF
ZmZlY3Q6OnVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpCiB7Ci0gICAgaWYgKCF0YXJnZXRF
bGVtZW50T3JQc2V1ZG9FbGVtZW50KCkpCisgICAgYXV0byB0YXJnZXQgPSB0YXJnZXRTdHlsZWFi
bGUoKTsKKyAgICBpZiAoIXRhcmdldCkKICAgICAgICAgcmV0dXJuOwogCiAgICAgYm9vbCBpc1Jl
bGV2YW50ID0gYW5pbWF0aW9uKCkgJiYgYW5pbWF0aW9uKCktPmlzUmVsZXZhbnQoKTsKICAgICBp
ZiAoaXNSZWxldmFudCAmJiAhbV9pblRhcmdldEVmZmVjdFN0YWNrKQotICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCktPmVuc3VyZUtl
eWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOworICAgICAgICBtX2luVGFyZ2V0
RWZmZWN0U3RhY2sgPSB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayh0
YXJnZXQtPnBzZXVkb0lkKS5hZGRFZmZlY3QoKnRoaXMpOwogICAgIGVsc2UgaWYgKCFpc1JlbGV2
YW50ICYmIG1faW5UYXJnZXRFZmZlY3RTdGFjaykgewotICAgICAgICB0YXJnZXRFbGVtZW50T3JQ
c2V1ZG9FbGVtZW50KCktPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3Qo
KnRoaXMpOworICAgICAgICB0YXJnZXQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
ayh0YXJnZXQtPnBzZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSBmYWxzZTsKICAgICB9CiB9CkBAIC0xMDk0LDYgKzExMTMsMTMgQEAg
dm9pZCBLZXlmcmFtZUVmZmVjdDo6c2V0QW5pbWF0aW9uKFdlYkFuaW1hdGlvbiogYW5pbWF0aW9u
KQogICAgIHVwZGF0ZUVmZmVjdFN0YWNrTWVtYmVyc2hpcCgpOwogfQogCitjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+IEtleWZyYW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUoKSBjb25z
dAoreworICAgIGlmIChtX3RhcmdldCkKKyAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV90YXJn
ZXQsIG1fcHNldWRvSWQpOworICAgIHJldHVybiBXVEY6Om51bGxvcHQ7Cit9CisKIGJvb2wgS2V5
ZnJhbWVFZmZlY3Q6OnRhcmdldHNQc2V1ZG9FbGVtZW50KCkgY29uc3QKIHsKICAgICByZXR1cm4g
bV90YXJnZXQuZ2V0KCkgJiYgbV9wc2V1ZG9JZCAhPSBQc2V1ZG9JZDo6Tm9uZTsKQEAgLTExMTks
OSArMTE0NSw5IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldChSZWZQdHI8RWxlbWVu
dD4mJiBuZXdUYXJnZXQpCiAgICAgaWYgKG1fdGFyZ2V0ID09IG5ld1RhcmdldCkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgYXV0byogcHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50
ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOworICAgIGF1dG8mIHByZXZpb3VzVGFy
Z2V0U3R5bGVhYmxlID0gdGFyZ2V0U3R5bGVhYmxlKCk7CiAgICAgbV90YXJnZXQgPSBXVEZNb3Zl
KG5ld1RhcmdldCk7Ci0gICAgZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChw
cmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQpOworICAgIGRpZENoYW5nZVRhcmdl
dFN0eWxlYWJsZShwcmV2aW91c1RhcmdldFN0eWxlYWJsZSk7CiB9CiAKIGNvbnN0IFN0cmluZyBL
ZXlmcmFtZUVmZmVjdDo6cHNldWRvRWxlbWVudCgpIGNvbnN0CkBAIC0xMTYxLDI2ICsxMTg3LDI4
IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IEtleWZyYW1lRWZmZWN0OjpzZXRQc2V1ZG9FbGVtZW50KGNv
bnN0IFN0cmluZyYgcHNldWRvRWxlbWVudCkKICAgICBpZiAocHNldWRvSWQgPT0gbV9wc2V1ZG9J
ZCkKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIGF1dG8qIHByZXZpb3VzVGFyZ2V0RWxlbWVu
dE9yUHNldWRvRWxlbWVudCA9IHRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBh
dXRvJiBwcmV2aW91c1RhcmdldFN0eWxlYWJsZSA9IHRhcmdldFN0eWxlYWJsZSgpOwogICAgIG1f
cHNldWRvSWQgPSBwc2V1ZG9JZDsKLSAgICBkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50KHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCk7CisgICAgZGlkQ2hh
bmdlVGFyZ2V0U3R5bGVhYmxlKHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKTsKIAogICAgIHJldHVy
biB7IH07CiB9CiAKLXZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1lbnRP
clBzZXVkb0VsZW1lbnQoRWxlbWVudCogcHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KQordm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0
IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlKQogewot
ICAgIGF1dG8qIG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQgPSB0YXJnZXRFbGVtZW50
T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byBuZXdUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRT
dHlsZWFibGUoKTsKIAogICAgIC8vIFdlIG11c3QgZW5zdXJlIGEgUHNldWRvRWxlbWVudCBleGlz
dHMgZm9yIHRoaXMgbV90YXJnZXQgLyBtX3BzZXVkb0lkIHBhaXIgaWYgYm90aCBhcmUgc3BlY2lm
aWVkLgorICAgIC8vIEZJWE1FOiBJZGVhbGx5IHRoaXMgd291bGRuJ3QgYmUgbmVjZXNzYXJ5Lgor
ICAgIGF1dG8qIG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQgPSBlbGVtZW50T3JQc2V1
ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKG5ld1RhcmdldFN0eWxlYWJsZSk7CiAgICAgaWYgKCFuZXdU
YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ICYmIG1fdGFyZ2V0LmdldCgpICYmIG1fcHNldWRv
SWQgIT0gUHNldWRvSWQ6Ok5vbmUpIHsKLSAgICAgICAgLy8gV2Ugb25seSBzdXBwb3J0IHRhcmdl
dGluZyA6OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8tZWxlbWVudHMgYXQgdGhlIG1vbWVudC4K
KyAgICAgICAgLy8gRklYTUU6IFdlIG9ubHkgc3VwcG9ydCB0YXJnZXRpbmcgOjpiZWZvcmUgYW5k
IDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGF0IHRoZSBtb21lbnQuCiAgICAgICAgIGlmIChtX3Bz
ZXVkb0lkID09IFBzZXVkb0lkOjpCZWZvcmUgfHwgbV9wc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QWZ0
ZXIpCiAgICAgICAgICAgICBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gJm1fdGFy
Z2V0LT5lbnN1cmVQc2V1ZG9FbGVtZW50KG1fcHNldWRvSWQpOwogICAgIH0KIAogICAgIGlmIChh
dXRvKiBlZmZlY3RBbmltYXRpb24gPSBhbmltYXRpb24oKSkKLSAgICAgICAgZWZmZWN0QW5pbWF0
aW9uLT5lZmZlY3RUYXJnZXREaWRDaGFuZ2UocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50LCBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KTsKKyAgICAgICAgZWZmZWN0
QW5pbWF0aW9uLT5lZmZlY3RUYXJnZXREaWRDaGFuZ2UocHJldmlvdXNUYXJnZXRTdHlsZWFibGUs
IG5ld1RhcmdldFN0eWxlYWJsZSk7CiAKICAgICBjbGVhckJsZW5kaW5nS2V5ZnJhbWVzKCk7CiAK
QEAgLTExOTAsMTQgKzEyMTgsMTUgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFy
Z2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChFbGVtZW50KiBwcmV2aW91c1RhcmcKIAogICAgIC8v
IExpa2V3aXNlLCB3ZSBuZWVkIHRvIGludmFsaWRhdGUgc3R5bGVzIG9uIHRoZSBwcmV2aW91cyB0
YXJnZXQgc28gdGhhdAogICAgIC8vIGFueSBhbmltYXRlZCBzdHlsZXMgYXJlIHJlbW92ZWQgaW1t
ZWRpYXRlbHkuCi0gICAgaW52YWxpZGF0ZUVsZW1lbnQocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQ
c2V1ZG9FbGVtZW50KTsKKyAgICBpbnZhbGlkYXRlRWxlbWVudChwcmV2aW91c1RhcmdldFN0eWxl
YWJsZSk7CiAKLSAgICBpZiAocHJldmlvdXNUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KSB7
Ci0gICAgICAgIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudC0+ZW5zdXJlS2V5
ZnJhbWVFZmZlY3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CisgICAgaWYgKHByZXZpb3Vz
VGFyZ2V0U3R5bGVhYmxlKSB7CisgICAgICAgIHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlLT5lbGVt
ZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHJldmlvdXNUYXJnZXRTdHlsZWFibGUtPnBz
ZXVkb0lkKS5yZW1vdmVFZmZlY3QoKnRoaXMpOwogICAgICAgICBtX2luVGFyZ2V0RWZmZWN0U3Rh
Y2sgPSBmYWxzZTsKICAgICB9Ci0gICAgaWYgKG5ld1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQpCi0gICAgICAgIG1faW5UYXJnZXRFZmZlY3RTdGFjayA9IG5ld1RhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMp
OworCisgICAgaWYgKG5ld1RhcmdldFN0eWxlYWJsZSkKKyAgICAgICAgbV9pblRhcmdldEVmZmVj
dFN0YWNrID0gbmV3VGFyZ2V0U3R5bGVhYmxlLT5lbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2sobmV3VGFyZ2V0U3R5bGVhYmxlLT5wc2V1ZG9JZCkuYWRkRWZmZWN0KCp0aGlzKTsKIH0K
IAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHkoUmVuZGVyU3R5bGUmIHRhcmdldFN0eWxlLCBP
cHRpb25hbDxTZWNvbmRzPiBzdGFydFRpbWUpCkBAIC0xMjM4LDcgKzEyNjcsNyBAQCBib29sIEtl
eWZyYW1lRWZmZWN0Ojppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbkZvclByb3BlcnR5KENT
U1Byb3BlcnR5SUQgcHJvcAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSgpCiB7CiAg
ICAgTE9HX1dJVEhfU1RSRUFNKEFuaW1hdGlvbnMsIHN0cmVhbSA8PCAiS2V5ZnJhbWVFZmZlY3Q6
OmludmFsaWRhdGUgb24gZWxlbWVudCAiIDw8IFZhbHVlT3JOdWxsKHRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSkpOwotICAgIGludmFsaWRhdGVFbGVtZW50KHRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSk7CisgICAgaW52YWxpZGF0ZUVsZW1lbnQodGFyZ2V0U3R5bGVhYmxlKCkp
OwogfQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlQWNjZWxlcmF0ZWRQcm9wZXJ0aWVz
U3RhdGUoKQpAQCAtMTYyMyw3ICsxNjUyLDcgQEAgdm9pZCBLZXlmcmFtZUVmZmVjdDo6YXBwbHlQ
ZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCkKIAogICAgICAgICBBU1NFUlQobV90YXJnZXQpOwog
Ci0gICAgICAgIGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFz
dFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpOworICAgICAgICBhdXRvKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlID0gbV90YXJnZXQtPmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUobV9wc2V1ZG9J
ZCk7CiAgICAgICAgIEFTU0VSVChsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKTsKIAogICAgICAg
ICBLZXlmcmFtZUxpc3QgZXhwbGljaXRLZXlmcmFtZXMobV9ibGVuZGluZ0tleWZyYW1lcy5hbmlt
YXRpb25OYW1lKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZy
YW1lRWZmZWN0LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaApp
bmRleCBjYWNkNjM0NzI3NTYyMzBlNjZkMjQyMGRlNGYxMjNkOWZkNTNjMDc4Li42ZDJmZTAyMjZh
MThlYWZlZWY3ODI2ZDI5ZmI2ODczYTU5NTAxYmU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuaApAQCAtMzcsNiArMzcsNyBAQAogI2luY2x1ZGUgIktleWZyYW1l
TGlzdC5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCiAjaW5jbHVkZSAiU3R5bGVQcm9wZXJ0
aWVzLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlw
ZXMuaCIKICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTEwOSw2ICsxMTAsOCBAQCBwdWJsaWM6
CiAgICAgY29uc3QgU3RyaW5nIHBzZXVkb0VsZW1lbnQoKSBjb25zdDsKICAgICBFeGNlcHRpb25P
cjx2b2lkPiBzZXRQc2V1ZG9FbGVtZW50KGNvbnN0IFN0cmluZyYpOwogCisgICAgY29uc3QgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiB0YXJnZXRTdHlsZWFibGUoKSBjb25zdDsKKwogICAgIFZl
Y3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0Pj4gZ2V0QmluZGluZ3NLZXlmcmFtZXMoSlND
OjpKU0dsb2JhbE9iamVjdCYpOwogICAgIFZlY3RvcjxKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0
Pj4gZ2V0S2V5ZnJhbWVzKEpTQzo6SlNHbG9iYWxPYmplY3QmKTsKICAgICBFeGNlcHRpb25Pcjx2
b2lkPiBzZXRCaW5kaW5nc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJv
bmc8SlNDOjpKU09iamVjdD4mJik7CkBAIC0xNzgsNyArMTgxLDcgQEAgcHJpdmF0ZToKICAgICBE
b2N1bWVudCogZG9jdW1lbnQoKSBjb25zdDsKICAgICB2b2lkIHVwZGF0ZUVmZmVjdFN0YWNrTWVt
YmVyc2hpcCgpOwogICAgIHZvaWQgY29weVByb3BlcnRpZXNGcm9tU291cmNlKFJlZjxLZXlmcmFt
ZUVmZmVjdD4mJik7Ci0gICAgdm9pZCBkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVt
ZW50KEVsZW1lbnQqKTsKKyAgICB2b2lkIGRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+Jik7CiAgICAgRXhjZXB0aW9uT3I8dm9pZD4gcHJvY2Vz
c0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0JiwgSlNDOjpTdHJvbmc8SlNDOjpKU09iamVj
dD4mJik7CiAgICAgdm9pZCBhZGRQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb24oQWNjZWxlcmF0ZWRB
Y3Rpb24pOwogICAgIGJvb2wgY2FuQmVBY2NlbGVyYXRlZCgpIGNvbnN0OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwIGIvU291cmNl
L1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCmluZGV4IDdjMGJlMGYx
YzE2N2RhMDc4NzgyOThkMzMyNjU1ZDdmMGNmYTljODUuLmQ1ZjQwZWQ4MWUyMzBlZGFlNmY2ZWM1
NDVhNzEzMmRhMDkxZTQ0ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9L
ZXlmcmFtZUVmZmVjdFN0YWNrLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3RTdGFjay5jcHAKQEAgLTQ2LDcgKzQ2LDcgQEAgYm9vbCBLZXlmcmFtZUVmZmVj
dFN0YWNrOjphZGRFZmZlY3QoS2V5ZnJhbWVFZmZlY3QmIGVmZmVjdCkKIHsKICAgICAvLyBUbyBx
dWFsaWZ5IGZvciBtZW1iZXJzaGlwIGluIGFuIGVmZmVjdCBzdGFjaywgYW4gZWZmZWN0IG11c3Qg
aGF2ZSBhIHRhcmdldCwgYW4gYW5pbWF0aW9uLCBhIHRpbWVsaW5lIGFuZCBiZSByZWxldmFudC4K
ICAgICAvLyBUaGlzIG1ldGhvZCB3aWxsIGJlIGNhbGxlZCBpbiBXZWJBbmltYXRpb24gYW5kIEtl
eWZyYW1lRWZmZWN0IGFzIHRob3NlIHByb3BlcnRpZXMgY2hhbmdlLgotICAgIGlmICghZWZmZWN0
LnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpIHx8
ICFlZmZlY3QuYW5pbWF0aW9uKCktPnRpbWVsaW5lKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+
aXNSZWxldmFudCgpKQorICAgIGlmICghZWZmZWN0LnRhcmdldFN0eWxlYWJsZSgpIHx8ICFlZmZl
Y3QuYW5pbWF0aW9uKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+dGltZWxpbmUoKSB8fCAhZWZm
ZWN0LmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAog
ICAgIG1fZWZmZWN0cy5hcHBlbmQobWFrZVdlYWtQdHIoJmVmZmVjdCkpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1hdGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcAppbmRleCBhYWQ0ZjFjY2NiN2MxZDg5NDU3NjEz
YWQ0ZmZmNWI0ZjZlMzgxMTI5Li44NTEzMzNkNDU5NmIxZTBiNmI2ZDVlMjFiMWE1MjcxY2VlNzM3
ZmY0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmNwcApAQCAtMjA2
LDI2ICsyMDYsMjEgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldEVmZmVjdEludGVybmFsKFJlZlB0
cjxBbmltYXRpb25FZmZlY3Q+JiYgbmV3RWZmZWN0LCBib29sIGQKIAogICAgIGF1dG8gb2xkRWZm
ZWN0ID0gc3RkOjpleGNoYW5nZShtX2VmZmVjdCwgV1RGTW92ZShuZXdFZmZlY3QpKTsKIAotICAg
IEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8S2V5ZnJhbWVF
ZmZlY3Q+KG9sZEVmZmVjdCkpCi0gICAgICAgIHByZXZpb3VzVGFyZ2V0ID0gZG93bmNhc3Q8S2V5
ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdC5nZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQoKTsKLQotICAgIEVsZW1lbnQqIG5ld1RhcmdldCA9IG51bGxwdHI7Ci0gICAgaWYgKGlzPEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdCkpCi0gICAgICAgIG5ld1RhcmdldCA9IGRvd25jYXN0PEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdC5nZXQoKSktPnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQoKTsKKyAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHByZXZpb3VzVGFyZ2V0ID0gaXM8
S2V5ZnJhbWVFZmZlY3Q+KG9sZEVmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xk
RWZmZWN0LmdldCgpKS0+dGFyZ2V0U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CisgICAgT3B0
aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiBuZXdUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4obV9l
ZmZlY3QpID8gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKS0+dGFyZ2V0
U3R5bGVhYmxlKCkgOiBXVEY6Om51bGxvcHQ7CiAKICAgICAvLyBVcGRhdGUgdGhlIGVmZmVjdC10
by1hbmltYXRpb24gcmVsYXRpb25zaGlwcyBhbmQgdGhlIHRpbWVsaW5lJ3MgYW5pbWF0aW9uIG1h
cC4KICAgICBpZiAob2xkRWZmZWN0KSB7CiAgICAgICAgIG9sZEVmZmVjdC0+c2V0QW5pbWF0aW9u
KG51bGxwdHIpOwogICAgICAgICBpZiAoIWRvTm90UmVtb3ZlRnJvbVRpbWVsaW5lICYmIG1fdGlt
ZWxpbmUgJiYgcHJldmlvdXNUYXJnZXQgJiYgcHJldmlvdXNUYXJnZXQgIT0gbmV3VGFyZ2V0KQot
ICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVtZW50KCp0
aGlzLCAqcHJldmlvdXNUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9u
V2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoKnRoaXMsICpwcmV2aW91c1RhcmdldCk7CiAgICAgICAg
IHVwZGF0ZVJlbGV2YW5jZSgpOwogICAgIH0KIAogICAgIGlmIChtX2VmZmVjdCkgewogICAgICAg
ICBtX2VmZmVjdC0+c2V0QW5pbWF0aW9uKHRoaXMpOwogICAgICAgICBpZiAobV90aW1lbGluZSAm
JiBuZXdUYXJnZXQgJiYgcHJldmlvdXNUYXJnZXQgIT0gbmV3VGFyZ2V0KQotICAgICAgICAgICAg
bV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRoaXMsICpuZXdUYXJnZXQp
OworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgq
dGhpcywgKm5ld1RhcmdldCk7CiAgICAgfQogCiAgICAgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9u
OjpkaWRTZXRXZWJBbmltYXRpb25FZmZlY3QoKnRoaXMpOwpAQCAtMjQ1LDE2ICsyNDAsMTQgQEAg
dm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4m
JiB0aW1lbGluZSkKICAgICAgICAgbV9ob2xkVGltZSA9IFdURjo6bnVsbG9wdDsKIAogICAgIGlm
IChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7Ci0gICAgICAgIGF1dG8qIGtleWZyYW1l
RWZmZWN0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgpKTsKLSAgICAg
ICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJhbWVFZmZlY3QtPnRhcmdldEVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQoKTsKLSAgICAgICAgaWYgKHRhcmdldCkgeworICAgICAgICBpZiAoYXV0byB0YXJnZXQg
PSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFi
bGUoKSkgewogICAgICAgICAgICAgLy8gSW4gdGhlIGNhc2Ugb2YgYSBkZWNsYXJhdGl2ZSBhbmlt
YXRpb24sIHdlIGRvbid0IHdhbnQgdG8gcmVtb3ZlIHRoZSBhbmltYXRpb24gZnJvbSB0aGUgcmVs
ZXZhbnQgbWFwcyBiZWNhdXNlCiAgICAgICAgICAgICAvLyB3aGlsZSB0aGUgdGltZWxpbmUgd2Fz
IHNldCB2aWEgdGhlIEFQSSwgdGhlIGVsZW1lbnQgc3RpbGwgaGFzIGEgdHJhbnNpdGlvbiBvciBh
bmltYXRpb24gc2V0IHVwIGFuZCB3ZSBtdXN0CiAgICAgICAgICAgICAvLyBub3QgYnJlYWsgdGhl
IHJlbGF0aW9uc2hpcC4KICAgICAgICAgICAgIGlmIChtX3RpbWVsaW5lICYmICFpc0RlY2xhcmF0
aXZlQW5pbWF0aW9uKCkpCi0gICAgICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2Fz
UmVtb3ZlZEZyb21FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAgICBtX3Rp
bWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7
CiAgICAgICAgICAgICBpZiAodGltZWxpbmUpCi0gICAgICAgICAgICAgICAgdGltZWxpbmUtPmFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAqdGFyZ2V0KTsKKyAgICAgICAgICAgICAg
ICB0aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKnRhcmdldCk7
CiAgICAgICAgIH0KICAgICB9CiAKQEAgLTI4NSwxNCArMjc4LDE0IEBAIHZvaWQgV2ViQW5pbWF0
aW9uOjpzZXRUaW1lbGluZUludGVybmFsKFJlZlB0cjxBbmltYXRpb25UaW1lbGluZT4mJiB0aW1l
bGluZSkKICAgICAgICAgbV9lZmZlY3QtPmFuaW1hdGlvblRpbWVsaW5lRGlkQ2hhbmdlKG1fdGlt
ZWxpbmUuZ2V0KCkpOwogfQogCi12b2lkIFdlYkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hh
bmdlKEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0LCBFbGVtZW50KiBuZXdUYXJnZXQpCit2b2lkIFdl
YkFuaW1hdGlvbjo6ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+
JiBuZXdUYXJnZXQpCiB7CiAgICAgaWYgKG1fdGltZWxpbmUpIHsKICAgICAgICAgaWYgKHByZXZp
b3VzVGFyZ2V0KQotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZy
b21FbGVtZW50KCp0aGlzLCAqcHJldmlvdXNUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGlu
ZS0+YW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21TdHlsZWFibGUoKnRoaXMsICpwcmV2aW91c1Rhcmdl
dCk7CiAKICAgICAgICAgaWYgKG5ld1RhcmdldCkKLSAgICAgICAgICAgIG1fdGltZWxpbmUtPmFu
aW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCAqbmV3VGFyZ2V0KTsKKyAgICAgICAgICAg
IG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9TdHlsZWFibGUoKnRoaXMsICpuZXdUYXJn
ZXQpOwogCiAgICAgICAgIC8vIFRoaXMgY291bGQgaGF2ZSBjaGFuZ2VkIHdoZXRoZXIgd2UgaGF2
ZSByZXBsYWNlZCBhbmltYXRpb25zLCBzbyB3ZSBtYXkgbmVlZCB0byBzY2hlZHVsZSBhbiB1cGRh
dGUuCiAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvblRpbWluZ0RpZENoYW5nZSgqdGhpcyk7
CkBAIC0xMzgyLDkgKzEzNzUsOSBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6cGVyc2lzdCgpCiAgICAg
aWYgKHByZXZpb3VzUmVwbGFjZVN0YXRlID09IFJlcGxhY2VTdGF0ZTo6UmVtb3ZlZCAmJiBtX3Rp
bWVsaW5lKSB7CiAgICAgICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4obV9lZmZlY3QpKSB7CiAg
ICAgICAgICAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0
PigqbV9lZmZlY3QpOwotICAgICAgICAgICAgYXV0byYgdGFyZ2V0ID0gKmtleWZyYW1lRWZmZWN0
LnRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKLSAgICAgICAgICAgIG1fdGltZWxpbmUt
PmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KCp0aGlzLCB0YXJnZXQpOwotICAgICAgICAgICAg
dGFyZ2V0LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRFZmZlY3Qoa2V5ZnJhbWVFZmZl
Y3QpOworICAgICAgICAgICAgYXV0byBzdHlsZWFibGUgPSBrZXlmcmFtZUVmZmVjdC50YXJnZXRT
dHlsZWFibGUoKTsKKyAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc0FkZGVkVG9T
dHlsZWFibGUoKnRoaXMsICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbGVt
ZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkuYWRkRWZm
ZWN0KGtleWZyYW1lRWZmZWN0KTsKICAgICAgICAgfQogICAgIH0KIH0KQEAgLTE0MjMsNyArMTQx
Niw3IEBAIEV4Y2VwdGlvbk9yPHZvaWQ+IFdlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKCkKICAg
ICBhdXRvIGlubGluZVN0eWxlID0gc3R5bGVkRWxlbWVudC5kb2N1bWVudCgpLmNyZWF0ZUNTU1N0
eWxlRGVjbGFyYXRpb24oKTsKICAgICBpbmxpbmVTdHlsZS0+c2V0Q3NzVGV4dChzdHlsZWRFbGVt
ZW50LmdldEF0dHJpYnV0ZSgic3R5bGUiKSk7CiAKLSAgICBhdXRvJiBrZXlmcmFtZVN0YWNrID0g
c3R5bGVkRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5
ZnJhbWVTdGFjayA9IHN0eWxlZEVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1
ZG9JZDo6Tm9uZSk7CiAKICAgICAvLyAyLjUgRm9yIGVhY2ggcHJvcGVydHksIHByb3BlcnR5LCBp
biB0YXJnZXRlZCBwcm9wZXJ0aWVzOgogICAgIGZvciAoYXV0byBwcm9wZXJ0eSA6IGVmZmVjdC0+
YW5pbWF0ZWRQcm9wZXJ0aWVzKCkpIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b24uaAppbmRleCBiYjM5YTBhYTAzZGZlMTI4MzIzMWRiMTZiODMyYWJjOTEzZjUwMDA5Li42NjY3
YmZlZTY5YzBlN2JiMDE4NmQ3YmIwMmM1MmE4YzVkODBkYWY2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uLmgKKysrIGIvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oCkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiRXZlbnRU
YXJnZXQuaCIKICNpbmNsdWRlICJFeGNlcHRpb25Pci5oIgogI2luY2x1ZGUgIklETFR5cGVzLmgi
CisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIK
ICNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9NYXJrYWJsZS5oPgpAQCAt
NDQsNyArNDUsNiBAQCBjbGFzcyBBbmltYXRpb25FZmZlY3Q7CiBjbGFzcyBBbmltYXRpb25FdmVu
dEJhc2U7CiBjbGFzcyBBbmltYXRpb25UaW1lbGluZTsKIGNsYXNzIERvY3VtZW50OwotY2xhc3Mg
RWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxlOwogCiB0ZW1wbGF0ZTx0eXBlbmFtZSBJRExUeXBl
PiBjbGFzcyBET01Qcm9taXNlUHJveHlXaXRoUmVzb2x2ZUNhbGxiYWNrOwpAQCAtMTIyLDcgKzEy
Miw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgdGljaygpOwogICAgIFdFQkNPUkVfRVhQ
T1JUIFNlY29uZHMgdGltZVRvTmV4dFRpY2soKSBjb25zdDsKICAgICB2aXJ0dWFsIHZvaWQgcmVz
b2x2ZShSZW5kZXJTdHlsZSYsIE9wdGlvbmFsPFNlY29uZHM+ID0gV1RGOjpudWxsb3B0KTsKLSAg
ICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShFbGVtZW50KiBwcmV2aW91c1RhcmdldCwgRWxl
bWVudCogbmV3VGFyZ2V0KTsKKyAgICB2b2lkIGVmZmVjdFRhcmdldERpZENoYW5nZShjb25zdCBP
cHRpb25hbDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldCwgY29uc3QgT3B0aW9uYWw8
Y29uc3QgU3R5bGVhYmxlPiYgbmV3VGFyZ2V0KTsKICAgICB2b2lkIGFjY2VsZXJhdGVkU3RhdGVE
aWRDaGFuZ2UoKTsKICAgICB2b2lkIGFwcGx5UGVuZGluZ0FjY2VsZXJhdGVkQWN0aW9ucygpOwog
ICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwCmluZGV4IGUxNzJkODJkNTVjY2NmMTMw
NWQ5OWRiYTE1YzQ2ZGQxNjEzYjQzYzcuLjcwYTI1MTVjOGEyOWEwNTczMzlmNTNhNGE2YTM1Y2Vk
Yzc2ZGI4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25VdGlsaXRpZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRp
b25VdGlsaXRpZXMuY3BwCkBAIC0zOCw1NCArMzgsNjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUg
ewogCi1zdGF0aWMgYm9vbCBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50
UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihFbGVtZW50JiBhLCBFbGVtZW50JiBiKQorc3Rh
dGljIGJvb2wgY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9u
c0luRG9jdW1lbnRUcmVlT3JkZXIoY29uc3QgU3R5bGVhYmxlJiBhLCBjb25zdCBTdHlsZWFibGUm
IGIpCiB7CiAgICAgLy8gV2Ugc2hvdWxkIG5vdCBldmVyIGJlIGNhbGxpbmcgdGhpcyBmdW5jdGlv
biB3aXRoIHR3byBFbGVtZW50cyB0aGF0IGFyZSB0aGUgc2FtZS4gSWYgdGhhdCB3ZXJlIHRoZSBj
YXNlLAogICAgIC8vIHRoZW4gY29tcGFyaW5nIG9iamVjdHMgb2YgdGhpcyBraW5kIHdvdWxkIHlp
ZWxkIGluY29uc2lzdGVudCByZXN1bHRzIHdoZW4gY29tcGFyaW5nIEEgPT0gQiBhbmQgQiA9PSBB
LgogICAgIC8vIEFzIHN1Y2gsIHRoaXMgZnVuY3Rpb24gc2hvdWxkIGJlIGNhbGxlZCB3aXRoIHN0
ZDo6c3RhYmxlX3NvcnQoKS4KLSAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKCZhICE9ICZiKTsKKyAgICBSRUxFQVNFX0FTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJ
Q0FUSU9OKGEgIT0gYik7CiAKICAgICAvLyBXaXRoIHJlZ2FyZCB0byBwc2V1ZG8tZWxlbWVudHMs
IHRoZSBzb3J0IG9yZGVyIGlzIGFzIGZvbGxvd3M6CisgICAgLy8KICAgICAvLyAgICAgLSBlbGVt
ZW50CisgICAgLy8gICAgIC0gOjptYXJrZXIKICAgICAvLyAgICAgLSA6OmJlZm9yZQorICAgIC8v
ICAgICAtIGFueSBvdGhlciBwc2V1ZG8tZWxlbWVudHMgbm90IG1lbnRpb25lZCBzcGVjaWZpY2Fs
bHkgaW4gdGhpcyBsaXN0LCBzb3J0ZWQgaW4gYXNjZW5kaW5nIG9yZGVyIGJ5IHRoZSBVbmljb2Rl
IGNvZGVwb2ludHMgdGhhdCBtYWtlIHVwIGVhY2ggc2VsZWN0b3IKICAgICAvLyAgICAgLSA6OmFm
dGVyCiAgICAgLy8gICAgIC0gZWxlbWVudCBjaGlsZHJlbgotCi0gICAgZW51bSBTb3J0aW5nSW5k
ZXggOiB1aW50OF90IHsgTm90UHNldWRvLCBCZWZvcmUsIEFmdGVyIH07Ci0KLSAgICBpbnQgYVNv
cnRpbmdJbmRleCA9IE5vdFBzZXVkbzsKLSAgICBFbGVtZW50KiBhUmVmZXJlbmNlRWxlbWVudCA9
ICZhOwotICAgIGlmIChpczxQc2V1ZG9FbGVtZW50PihhKSkgewotICAgICAgICBhdXRvJiBhUHNl
dWRvID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oYSk7Ci0gICAgICAgIGFTb3J0aW5nSW5kZXgg
PSBhUHNldWRvLmlzQmVmb3JlUHNldWRvRWxlbWVudCgpID8gQmVmb3JlIDogQWZ0ZXI7Ci0gICAg
ICAgIGFSZWZlcmVuY2VFbGVtZW50ID0gYVBzZXVkby5ob3N0RWxlbWVudCgpOwotICAgICAgICBB
U1NFUlQoYVJlZmVyZW5jZUVsZW1lbnQpOwotICAgIH0KLQotICAgIGludCBiU29ydGluZ0luZGV4
ID0gTm90UHNldWRvOwotICAgIEVsZW1lbnQqIGJSZWZlcmVuY2VFbGVtZW50ID0gJmI7Ci0gICAg
aWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGIpKSB7Ci0gICAgICAgIGF1dG8mIGJQc2V1ZG8gPSBkb3du
Y2FzdDxQc2V1ZG9FbGVtZW50PihiKTsKLSAgICAgICAgYlNvcnRpbmdJbmRleCA9IGJQc2V1ZG8u
aXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBCZWZvcmUgOiBBZnRlcjsKLSAgICAgICAgYlJlZmVy
ZW5jZUVsZW1lbnQgPSBiUHNldWRvLmhvc3RFbGVtZW50KCk7Ci0gICAgICAgIEFTU0VSVChiUmVm
ZXJlbmNlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaWYgKGFSZWZlcmVuY2VFbGVtZW50ID09IGJS
ZWZlcmVuY2VFbGVtZW50KQorICAgIGVudW0gU29ydGluZ0luZGV4IDogdWludDhfdCB7IE5vdFBz
ZXVkbywgTWFya2VyLCBCZWZvcmUsIE90aGVyLCBBZnRlciB9OworICAgIGF1dG8gc29ydGluZ0lu
ZGV4ID0gW10oUHNldWRvSWQgcHNldWRvSWQpIC0+IFNvcnRpbmdJbmRleCB7CisgICAgICAgIGlm
IChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6Tm9uZSkKKyAgICAgICAgICAgIHJldHVybiBOb3RQc2V1
ZG87CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6TWFya2VyKQorICAgICAgICAg
ICAgcmV0dXJuIE1hcmtlcjsKKyAgICAgICAgaWYgKHBzZXVkb0lkID09IFBzZXVkb0lkOjpCZWZv
cmUpCisgICAgICAgICAgICByZXR1cm4gQmVmb3JlOworICAgICAgICBpZiAocHNldWRvSWQgPT0g
UHNldWRvSWQ6OkFmdGVyKQorICAgICAgICAgICAgcmV0dXJuIEFmdGVyOworICAgICAgICByZXR1
cm4gT3RoZXI7CisgICAgfTsKKworICAgIGF1dG8gcHNldWRvSWRBc1N0cmluZyA9IFtdKFBzZXVk
b0lkIHBzZXVkb0lkKSAtPiBTdHJpbmcgeworICAgICAgICBUZXh0U3RyZWFtIHN0cmVhbTsKKyAg
ICAgICAgc3RyZWFtIDw8IHBzZXVkb0lkOworICAgICAgICByZXR1cm4gc3RyZWFtLnJlbGVhc2Uo
KTsKKyAgICB9OworCisgICAgYXV0byYgYVJlZmVyZW5jZUVsZW1lbnQgPSBhLmVsZW1lbnQ7Cisg
ICAgaW50IGFTb3J0aW5nSW5kZXggPSBzb3J0aW5nSW5kZXgoYS5wc2V1ZG9JZCk7CisKKyAgICBh
dXRvJiBiUmVmZXJlbmNlRWxlbWVudCA9IGIuZWxlbWVudDsKKyAgICBpbnQgYlNvcnRpbmdJbmRl
eCA9IHNvcnRpbmdJbmRleChiLnBzZXVkb0lkKTsKKworICAgIGlmICgmYVJlZmVyZW5jZUVsZW1l
bnQgPT0gJmJSZWZlcmVuY2VFbGVtZW50KSB7CisgICAgICAgIGlmIChhU29ydGluZ0luZGV4ID09
IGJTb3J0aW5nSW5kZXgpCisgICAgICAgICAgICByZXR1cm4gcHNldWRvSWRBc1N0cmluZyhhLnBz
ZXVkb0lkKS51dGY4KCkgPCBwc2V1ZG9JZEFzU3RyaW5nKGIucHNldWRvSWQpLnV0ZjgoKTsKICAg
ICAgICAgcmV0dXJuIGFTb3J0aW5nSW5kZXggPCBiU29ydGluZ0luZGV4OwotICAgIHJldHVybiBh
UmVmZXJlbmNlRWxlbWVudC0+Y29tcGFyZURvY3VtZW50UG9zaXRpb24oKmJSZWZlcmVuY2VFbGVt
ZW50KSAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORzsKKyAgICB9CisgICAgcmV0
dXJuIGFSZWZlcmVuY2VFbGVtZW50LmNvbXBhcmVEb2N1bWVudFBvc2l0aW9uKGJSZWZlcmVuY2VF
bGVtZW50KSAmIE5vZGU6OkRPQ1VNRU5UX1BPU0lUSU9OX0ZPTExPV0lORzsKIH0KIAogc3RhdGlj
IGJvb2wgY29tcGFyZUNTU1RyYW5zaXRpb25zKGNvbnN0IENTU1RyYW5zaXRpb24mIGEsIGNvbnN0
IENTU1RyYW5zaXRpb24mIGIpCiB7CiAgICAgQVNTRVJUKGEub3duaW5nRWxlbWVudCgpKTsKICAg
ICBBU1NFUlQoYi5vd25pbmdFbGVtZW50KCkpOwotICAgIGF1dG8mIGFPd25pbmdFbGVtZW50ID0g
KmEub3duaW5nRWxlbWVudCgpOwotICAgIGF1dG8mIGJPd25pbmdFbGVtZW50ID0gKmIub3duaW5n
RWxlbWVudCgpOworICAgIGF1dG8mIGFPd25pbmdFbGVtZW50ID0gYS5vd25pbmdFbGVtZW50KCk7
CisgICAgYXV0byYgYk93bmluZ0VsZW1lbnQgPSBiLm93bmluZ0VsZW1lbnQoKTsKIAogICAgIC8v
IElmIHRoZSBvd25pbmcgZWxlbWVudCBvZiBBIGFuZCBCIGRpZmZlcnMsIHNvcnQgQSBhbmQgQiBi
eSB0cmVlIG9yZGVyIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcgb3duaW5nIGVsZW1lbnRzLgotICAg
IGlmICgmYU93bmluZ0VsZW1lbnQgIT0gJmJPd25pbmdFbGVtZW50KQotICAgICAgICByZXR1cm4g
Y29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0luRG9jdW1l
bnRUcmVlT3JkZXIoYU93bmluZ0VsZW1lbnQsIGJPd25pbmdFbGVtZW50KTsKKyAgICBpZiAoKmFP
d25pbmdFbGVtZW50ICE9ICpiT3duaW5nRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVE
ZWNsYXJhdGl2ZUFuaW1hdGlvbk93bmluZ0VsZW1lbnRQb3NpdGlvbnNJbkRvY3VtZW50VHJlZU9y
ZGVyKCphT3duaW5nRWxlbWVudCwgKmJPd25pbmdFbGVtZW50KTsKIAogICAgIC8vIE90aGVyd2lz
ZSwgaWYgQSBhbmQgQiBoYXZlIGRpZmZlcmVudCB0cmFuc2l0aW9uIGdlbmVyYXRpb24gdmFsdWVz
LCBzb3J0IGJ5IHRoZWlyIGNvcnJlc3BvbmRpbmcgdHJhbnNpdGlvbiBnZW5lcmF0aW9uIGluIGFz
Y2VuZGluZyBvcmRlci4KICAgICBpZiAoYS5nZW5lcmF0aW9uVGltZSgpICE9IGIuZ2VuZXJhdGlv
blRpbWUoKSkKQEAgLTEwMSwxNSArMTExLDE1IEBAIHN0YXRpYyBib29sIGNvbXBhcmVDU1NBbmlt
YXRpb25zKGNvbnN0IENTU0FuaW1hdGlvbiYgYSwgY29uc3QgQ1NTQW5pbWF0aW9uJiBiKQogICAg
IC8vIGh0dHBzOi8vZHJhZnRzLmNzc3dnLm9yZy9jc3MtYW5pbWF0aW9ucy0yLyNhbmltYXRpb24t
Y29tcG9zaXRlLW9yZGVyCiAgICAgQVNTRVJUKGEub3duaW5nRWxlbWVudCgpKTsKICAgICBBU1NF
UlQoYi5vd25pbmdFbGVtZW50KCkpOwotICAgIGF1dG8mIGFPd25pbmdFbGVtZW50ID0gKmEub3du
aW5nRWxlbWVudCgpOwotICAgIGF1dG8mIGJPd25pbmdFbGVtZW50ID0gKmIub3duaW5nRWxlbWVu
dCgpOworICAgIGF1dG8mIGFPd25pbmdFbGVtZW50ID0gYS5vd25pbmdFbGVtZW50KCk7CisgICAg
YXV0byYgYk93bmluZ0VsZW1lbnQgPSBiLm93bmluZ0VsZW1lbnQoKTsKIAogICAgIC8vIElmIHRo
ZSBvd25pbmcgZWxlbWVudCBvZiBBIGFuZCBCIGRpZmZlcnMsIHNvcnQgQSBhbmQgQiBieSB0cmVl
IG9yZGVyIG9mIHRoZWlyIGNvcnJlc3BvbmRpbmcgb3duaW5nIGVsZW1lbnRzLgotICAgIGlmICgm
YU93bmluZ0VsZW1lbnQgIT0gJmJPd25pbmdFbGVtZW50KQotICAgICAgICByZXR1cm4gY29tcGFy
ZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0luRG9jdW1lbnRUcmVl
T3JkZXIoYU93bmluZ0VsZW1lbnQsIGJPd25pbmdFbGVtZW50KTsKKyAgICBpZiAoKmFPd25pbmdF
bGVtZW50ICE9ICpiT3duaW5nRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIGNvbXBhcmVEZWNsYXJh
dGl2ZUFuaW1hdGlvbk93bmluZ0VsZW1lbnRQb3NpdGlvbnNJbkRvY3VtZW50VHJlZU9yZGVyKCph
T3duaW5nRWxlbWVudCwgKmJPd25pbmdFbGVtZW50KTsKIAogICAgIC8vIFNvcnQgQSBhbmQgQiBi
YXNlZCBvbiB0aGVpciBwb3NpdGlvbiBpbiB0aGUgY29tcHV0ZWQgdmFsdWUgb2YgdGhlIGFuaW1h
dGlvbi1uYW1lIHByb3BlcnR5IG9mIHRoZSAoY29tbW9uKSBvd25pbmcgZWxlbWVudC4KLSAgICBh
dXRvKiBjc3NBbmltYXRpb25MaXN0ID0gYU93bmluZ0VsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjaygpLmNzc0FuaW1hdGlvbkxpc3QoKTsKKyAgICBhdXRvKiBjc3NBbmltYXRpb25MaXN0
ID0gYU93bmluZ0VsZW1lbnQtPmVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhhT3du
aW5nRWxlbWVudC0+cHNldWRvSWQpLmNzc0FuaW1hdGlvbkxpc3QoKTsKICAgICBBU1NFUlQoY3Nz
QW5pbWF0aW9uTGlzdCk7CiAgICAgQVNTRVJUKCFjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkp
OwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9kb20vRWxlbWVudC5jcHAKaW5kZXggYmYzODg0YjA0MzY3OTVhYTVmNjBhYjg0Mzhk
ZmNhNzk3M2QwMWI4Yy4uMjc1YjVkNzU4OTdhNGFhNGMxMTIwOGI3MDAyYzkwNTVmYjc1YmM0NyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2RvbS9FbGVtZW50LmNwcApAQCAtMjI4Myw3ICsyMjgzLDcgQEAgdm9pZCBFbGVtZW50
OjpyZW1vdmVkRnJvbUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJO
b2RlJiBvbGRQYXIKIAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1l
KCk7CiAgICAgaWYgKGF1dG8qIHRpbWVsaW5lID0gZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5l
KCkpCi0gICAgICAgIHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCgqdGhpcyk7CisgICAgICAg
IHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCh7ICp0aGlzLCBwc2V1ZG9JZCgpIH0pOwogCiAj
aWYgRU5BQkxFKFdIRUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+
cGFnZSgpKSB7CkBAIC0zODAzLDQyICszODAzLDQyIEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0
YSogRWxlbWVudDo6aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYK
IAotRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgp
IGNvbnN0CitFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVE
YXRhKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgp
ID8gZWxlbWVudFJhcmVEYXRhKCktPmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIDogbnVsbHB0
cjsKKyAgICByZXR1cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5hbmltYXRp
b25SYXJlRGF0YShwc2V1ZG9JZCkgOiBudWxscHRyOwogfQogCi1FbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEmIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK0VsZW1lbnRBbmltYXRp
b25SYXJlRGF0YSYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNl
dWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1h
dGlvblJhcmVEYXRhKCk7CisgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKTsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayog
RWxlbWVudDo6a2V5ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CitLZXlmcmFtZUVmZmVjdFN0YWNr
KiBFbGVtZW50OjprZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAog
ewotICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAg
ICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkK
ICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKTsKICAg
ICByZXR1cm4gbnVsbHB0cjsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5z
dXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpCitLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50Ojpl
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIHJldHVy
biBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsK
KyAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKTsKIH0KIAotYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMo
KSBjb25zdAorYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQgcHNldWRv
SWQpIGNvbnN0CiB7Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJl
RGF0YSgpKSB7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0
YShwc2V1ZG9JZCkpIHsKICAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBh
bmltYXRpb25EYXRhLT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCiAgICAgICAgICAgICByZXR1cm4g
a2V5ZnJhbWVFZmZlY3RTdGFjay0+aGFzRWZmZWN0cygpOwogICAgIH0KICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLU9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJh
bWVFZmZlY3RzKFJlbmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25J
bXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkIHBzZXVkb0lkLCBS
ZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUpCiB7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFj
dD4gaW1wYWN0OwogCi0gICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFt
ZUVmZmVjdFN0YWNrKCkuc29ydGVkRWZmZWN0cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBl
ZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5zb3J0ZWRFZmZlY3Rz
KCkpIHsKICAgICAgICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9uKCkpOwogICAgICAgICBlZmZl
Y3QtPmFuaW1hdGlvbigpLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKIApAQCAtMzg1Miw3MiArMzg1
Miw3MiBAQCBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1l
RWZmZWN0cyhSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAK
LWNvbnN0IEFuaW1hdGlvbkNvbGxlY3Rpb24qIEVsZW1lbnQ6OmFuaW1hdGlvbnMoKSBjb25zdAor
Y29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogRWxlbWVudDo6YW5pbWF0aW9ucyhQc2V1ZG9JZCBw
c2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlv
blJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uRGF0YS0+YW5pbWF0aW9u
cygpOwogICAgIHJldHVybiBudWxscHRyOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc0NvbXBsZXRl
ZFRyYW5zaXRpb25zRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK2Jv
b2wgRWxlbWVudDo6aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShQc2V1ZG9JZCBw
c2V1ZG9JZCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoYXV0byog
YW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1h
dGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBh
bmltYXRpb25EYXRhLT5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhw
cm9wZXJ0eSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5p
bmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Citi
b29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkIHBz
ZXVkb0lkLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmIChhdXRvKiBh
bmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0
aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFu
aW1hdGlvbkRhdGEtPnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9w
ZXJ0eSk7CiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdU
cmFuc2l0aW9ucygpIGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQ
c2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9
IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmlt
YXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAhYW5pbWF0aW9uRGF0YS0+
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLmlzRW1wdHkoKTsKICAgICByZXR1cm4gZmFs
c2U7CiB9CiAKLUFuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMo
KQorQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9J
ZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmlt
YXRpb25zKCk7CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5h
bmltYXRpb25zKCk7CiB9CiAKLUNTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1h
dGlvbnNDcmVhdGVkQnlNYXJrdXAoKQorQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6
YW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1
cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7
CisgICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykKK3ZvaWQgRWxl
bWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NT
QW5pbWF0aW9uQ29sbGVjdGlvbiYmIGFuaW1hdGlvbnMpCiB7Ci0gICAgZW5zdXJlQW5pbWF0aW9u
UmFyZURhdGEoKS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9u
cykpOworICAgIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5zZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOwogfQogCi1Qcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgRWxlbWVudDo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5
KCkKK1Byb3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3Vy
ZUFuaW1hdGlvblJhcmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7Cisg
ICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5jb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHkoKTsKIH0KIAotUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1l
bnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKQorUHJvcGVydHlUb1RyYW5z
aXRpb25NYXAmIEVsZW1lbnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNl
dWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCku
cnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRp
b25SYXJlRGF0YShwc2V1ZG9JZCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQog
Ci1jb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgp
IGNvbnN0Citjb25zdCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRT
dHlsZShQc2V1ZG9JZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9u
RGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEg
PSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25E
YXRhLT5sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9
CiAKLXZvaWQgRWxlbWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1
ZV9wdHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYgc3R5bGUpCit2b2lkIEVsZW1lbnQ6OnNldExhc3RT
dHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRvSWQgcHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0cjxj
b25zdCBSZW5kZXJTdHlsZT4mJiBzdHlsZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0
YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBh
bmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIGFuaW1hdGlvbkRhdGEtPnNldExh
c3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgIGVsc2UgaWYgKHN0
eWxlKQotICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5n
ZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOworICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShXVEZNb3ZlKHN0eWxl
KSk7CiB9CiAKICNpZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQpAQCAtNDU0Miw4ICs0NTQyLDgg
QEAgVmVjdG9yPFJlZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9w
dGlvbmFsPEdldEFuaW1hdGlvbnNPcHRpb24KICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZO
ZWVkZWQoKTsKIAogICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsK
LSAgICBpZiAoa2V5ZnJhbWVFZmZlY3RTdGFjaygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWZm
ZWN0IDoga2V5ZnJhbWVFZmZlY3RTdGFjaygpLT5zb3J0ZWRFZmZlY3RzKCkpIHsKKyAgICBpZiAo
YXV0byogZWZmZWN0U3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKSkg
eworICAgICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IGVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3Rz
KCkpIHsKICAgICAgICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkp
CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7
CiAgICAgICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5oCmluZGV4IGY2NTE5MzdhNjAxYjdiYjUyNmU2YjFi
MGVhMjNmZGVjNGJhMzNhMTguLjYxMWUxMTA4ZDFjZWUwZjYzMWE3Nzg3MzQ2YWU5NWFiMjA4NGI2
MTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnQuaApAQCAtNDg2LDIzICs0ODYsMjQgQEAgcHVibGljOgogICAg
IHZvaWQgY2xlYXJIYXNQZW5kaW5nUmVzb3VyY2VzKCkgeyBjbGVhck5vZGVGbGFnKE5vZGVGbGFn
OjpIYXNQZW5kaW5nUmVzb3VyY2VzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdS
ZXNvdXJjZSgpIHsgfTsKIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0
U3RhY2soKSBjb25zdDsKLSAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCk7Ci0gICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKLSAgICBP
cHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHls
ZSYpOwotCi0gICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0
OwotICAgIGJvb2wgaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0
eUlEKSBjb25zdDsKLSAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENT
U1Byb3BlcnR5SUQpIGNvbnN0OwotICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb25zKCkgY29u
c3Q7Ci0gICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucygpOwotICAgIFBy
b3BlcnR5VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoKTsKLSAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRp
b25zQnlQcm9wZXJ0eSgpOwotICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnND
cmVhdGVkQnlNYXJrdXAoKTsKLSAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAo
Q1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0
U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFu
Z2VFdmVudFN0eWxlKHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJik7CisgICAg
S2V5ZnJhbWVFZmZlY3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCkgY29uc3Q7
CisgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1
ZG9JZCk7CisgICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQpIGNvbnN0OworICAg
IE9wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lk
LCBSZW5kZXJTdHlsZSYpOworCisgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0
aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0Zv
clByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1
bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25z
dDsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAg
QW5pbWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCk7CisKKyAgICBQ
cm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KFBzZXVkb0lkKTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eShQc2V1ZG9JZCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVj
dGlvbiYgYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFBzZXVkb0lkLCBDU1NBbmltYXRpb25Db2xsZWN0aW9u
JiYpOworCisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUo
UHNldWRvSWQpIGNvbnN0OworICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQ
c2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogI2lmIEVO
QUJMRShGVUxMU0NSRUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6Q29udGFpbnNGdWxsU2NyZWVu
RWxlbWVudCk7IH0KQEAgLTcxNiw4ICs3MTcsOCBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJl
RGF0YSogZWxlbWVudFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1
cmVFbGVtZW50UmFyZURhdGEoKTsKIAotICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5p
bWF0aW9uUmFyZURhdGEoKSBjb25zdDsKLSAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKCk7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBh
bmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCkgY29uc3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAKICAgICB2aXJ0dWFs
IGludCBkZWZhdWx0VGFiSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJh
cmVEYXRhLmNwcAppbmRleCBlNzJmMzJjOTFmNzQ4YmExNmNmNTIzNTNiMzg1Y2NlYTllNTdlZjEy
Li42MjQ2NTUwNDVmYTlkZDU0MzgxZDY0NDcyZGYwNjE4ODk2MmVmZmY3IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiBzdHJ1Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7
CiAgICAgTGF5b3V0U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXll
clNjcm9sbFBvc2l0aW9uOwotICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKKyAgICBIYXNoTWFwPFBz
ZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPiwgV1RGOjpJ
bnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+IGFu
aW1hdGlvblJhcmVEYXRhOworICAgIHZvaWQqIHBvaW50ZXJzWzEwXTsKICNpZiBFTkFCTEUoSU5U
RVJTRUNUSU9OX09CU0VSVkVSKQogICAgIHZvaWQqIGludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsK
ICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5o
IGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oCmluZGV4IDFhMzVlNWZjMjEx
NDRkYmViYmZkOTkxNGY4NGExMTgwNDZiYjEzYzkuLjVlNzVjYjczYjI2MTg1NWU3YWI3MGM5MTU1
YmFkZjIzNDc5Nzc3NzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFy
ZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTg5
LDggKzg5LDggQEAgcHVibGljOgogICAgIEludFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlv
bigpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRMYXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9p
ZCBzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRpb24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZl
ZExheWVyU2Nyb2xsUG9zaXRpb24gPSBwb3NpdGlvbjsgfQogCi0gICAgRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhKiBlbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlv
blJhcmVEYXRhLmdldCgpOyB9Ci0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVB
bmltYXRpb25SYXJlRGF0YSgpOworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0
aW9uUmFyZURhdGEoUHNldWRvSWQpIGNvbnN0OworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0
YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQpOwogCiAgICAgRE9NVG9rZW5MaXN0
KiBwYXJ0TGlzdCgpIGNvbnN0IHsgcmV0dXJuIG1fcGFydExpc3QuZ2V0KCk7IH0KICAgICB2b2lk
IHNldFBhcnRMaXN0KHN0ZDo6dW5pcXVlX3B0cjxET01Ub2tlbkxpc3Q+IHBhcnRMaXN0KSB7IG1f
cGFydExpc3QgPSBXVEZNb3ZlKHBhcnRMaXN0KTsgfQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1Ymxp
YzoKICAgICAgICAgaWYgKG1fcmVzaXplT2JzZXJ2ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0
LmFkZChVc2VUeXBlOjpSZXNpemVPYnNlcnZlcik7CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYW5p
bWF0aW9uUmFyZURhdGEpCisgICAgICAgIGlmICghbV9hbmltYXRpb25SYXJlRGF0YS5pc0VtcHR5
KCkpCiAgICAgICAgICAgICByZXN1bHQuYWRkKFVzZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAg
ICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQogICAg
ICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpQc2V1ZG9FbGVtZW50cyk7CkBAIC0xNzUsNyAr
MTc1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6OnVuaXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRh
PiBtX3Jlc2l6ZU9ic2VydmVyRGF0YTsKICNlbmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YT4gbV9hbmltYXRpb25SYXJlRGF0YTsKKyAgICBIYXNoTWFw
PFBzZXVkb0lkLCBzdGQ6OnVuaXF1ZV9wdHI8RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhPiwgV1RG
OjpJbnRIYXNoPFBzZXVkb0lkPiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxQc2V1ZG9JZD4+
IG1fYW5pbWF0aW9uUmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRvRWxlbWVudD4gbV9iZWZv
cmVQc2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50PiBtX2FmdGVyUHNldWRv
RWxlbWVudDsKQEAgLTIzNywxMSArMjM3LDE5IEBAIGlubGluZSB2b2lkIEVsZW1lbnRSYXJlRGF0
YTo6c2V0VW51c3VhbFRhYkluZGV4KGludCB0YWJJbmRleCkKICAgICBtX3VudXN1YWxUYWJJbmRl
eCA9IHRhYkluZGV4OwogfQogCi1pbmxpbmUgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBFbGVt
ZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK2lubGluZSBFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEqIEVsZW1lbnRSYXJlRGF0YTo6YW5pbWF0aW9uUmFyZURhdGEoUHNldWRv
SWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FuaW1hdGlvblJhcmVEYXRhKQotICAg
ICAgICBtX2FuaW1hdGlvblJhcmVEYXRhID0gbWFrZVVuaXF1ZTxFbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGE+KCk7Ci0gICAgcmV0dXJuICptX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOworICAgIGF1
dG8gaXQgPSBtX2FuaW1hdGlvblJhcmVEYXRhLmZpbmQocHNldWRvSWQpOworICAgIGlmIChpdCA9
PSBtX2FuaW1hdGlvblJhcmVEYXRhLmVuZCgpKQorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAg
ICByZXR1cm4gaXQtPnZhbHVlLmdldCgpOworfQorCitpbmxpbmUgRWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lk
IHBzZXVkb0lkKQoreworICAgIHJldHVybiAqbV9hbmltYXRpb25SYXJlRGF0YS5lbnN1cmUocHNl
dWRvSWQsIFtdIHsKKyAgICAgICAgcmV0dXJuIG1ha2VVbmlxdWU8RWxlbWVudEFuaW1hdGlvblJh
cmVEYXRhPigpOworICAgIH0pLml0ZXJhdG9yLT52YWx1ZS5nZXQoKTsKIH0KIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGRhZDE1
NjZjYzA2YTNkMTRkNmJjYjdjNTA3NmVjYzE4YjZjN2E3NjcuLjA2YzU3MDc4OTE4ZWMzMThkODc2
MzZjNTgyZGFiMDdkNTI1Njg2Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1
ZG9FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAK
QEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBQc2V1ZG9FbGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9j
dW1lbnQoKS5wYWdlKCksICp0aGlzKTsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3Vt
ZW50KCkuZXhpc3RpbmdUaW1lbGluZSgpKQotICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1Jl
bW92ZWQoKnRoaXMpOworICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoU3R5bGVh
YmxlKCptX2hvc3RFbGVtZW50LCBwc2V1ZG9JZCgpKSk7CiAgICAgCiAgICAgbV9ob3N0RWxlbWVu
dCA9IG51bGxwdHI7CiB9CkBAIC0xMDIsOCArMTAyLDEwIEBAIGJvb2wgUHNldWRvRWxlbWVudDo6
cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgc3R5bGUpCiAKIGJvb2wgUHNldWRv
RWxlbWVudDo6aXNUYXJnZXRlZEJ5S2V5ZnJhbWVFZmZlY3RSZXF1aXJpbmdQc2V1ZG9FbGVtZW50
KCkKIHsKLSAgICBpZiAoYXV0byogc3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKCkpCi0gICAg
ICAgIHJldHVybiBzdGFjay0+cmVxdWlyZXNQc2V1ZG9FbGVtZW50KCk7CisgICAgaWYgKG1faG9z
dEVsZW1lbnQpIHsKKyAgICAgICAgaWYgKGF1dG8qIHN0YWNrID0gbV9ob3N0RWxlbWVudC0+a2V5
ZnJhbWVFZmZlY3RTdGFjayhwc2V1ZG9JZCgpKSkKKyAgICAgICAgICAgIHJldHVybiBzdGFjay0+
cmVxdWlyZXNQc2V1ZG9FbGVtZW50KCk7CisgICAgfQogICAgIHJldHVybiBmYWxzZTsKIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAK
aW5kZXggZjE2N2MzYjJjYzJlMDJjN2E2YTE1YjYwOGM3YmFjZmE2ZmY2MDU4Yi4uMjI4MDhkYTlm
MjlmOTUzMjMzMzdjYTM3OGFiM2I3YWY4YjMwMjEyZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCkBAIC0yNzA4LDcgKzI3MDgsNyBA
QCBib29sIFJlbmRlckJveE1vZGVsT2JqZWN0OjpoYXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRp
b25zKCkgY29uc3QKIHsKICAgICBpZiAoYXV0byogbm9kZSA9IGVsZW1lbnQoKSkgewogICAgICAg
ICBpZiAoYXV0byogdGltZWxpbmUgPSBub2RlLT5kb2N1bWVudCgpLmV4aXN0aW5nVGltZWxpbmUo
KSkKLSAgICAgICAgICAgIHJldHVybiB0aW1lbGluZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JFbGVt
ZW50QXJlQWxsQWNjZWxlcmF0ZWQoKm5vZGUpOworICAgICAgICAgICAgcmV0dXJuIHRpbWVsaW5l
LT5ydW5uaW5nQW5pbWF0aW9uc0ZvclJlbmRlcmVyQXJlQWxsQWNjZWxlcmF0ZWQoKnRoaXMpOwog
ICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVu
ZGVyRWxlbWVudC5jcHAKaW5kZXggZGZkMGJkOTkxMDNkMGM5ZDNhZDdmNzE2ZDc4YjFjZjBjN2Q0
ODAyYi4uMDI4MjQ3MGJlMzk0MWIxN2EyZGI1MTVjZGZmNDhmODdhZDM0YWFiMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmNwcApAQCAtMjMwNSw0ICsyMzA1LDEx
IEBAIHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gUmVuZGVyRWxlbWVudDo6YW5pbWF0ZWRT
dHlsZSgpCiAgICAgcmV0dXJuIHJlc3VsdDsKIH0KIAorT3B0aW9uYWw8U3R5bGVhYmxlPiBSZW5k
ZXJFbGVtZW50OjpzdHlsZWFibGUoKSBjb25zdAoreworICAgIGlmIChhdXRvKiBlbGVtZW50ID0g
dGhpcy0+ZWxlbWVudCgpKQorICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCplbGVtZW50LCBlbGVt
ZW50LT5wc2V1ZG9JZCgpKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxlbWVudC5oIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckVsZW1lbnQuaAppbmRleCBiYTM0OGI3YTUzOTA4Zjkx
MDlkNzVhNDRmZTBlYmFhMTc1ZDU1NDg2Li41MWQyODdlMjMzMWM1Mzk5MWMwYzZhM2Q5M2I3Mjli
MTQ3M2MyZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyRWxl
bWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJFbGVtZW50LmgKQEAg
LTI0LDYgKzI0LDcgQEAKIAogI2luY2x1ZGUgIkxlbmd0aEZ1bmN0aW9ucy5oIgogI2luY2x1ZGUg
IlJlbmRlck9iamVjdC5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKQEAgLTY2LDYgKzY3LDcgQEAgcHVibGljOgogICAgIEVsZW1lbnQqIGVsZW1lbnQo
KSBjb25zdCB7IHJldHVybiBkb3duY2FzdDxFbGVtZW50PihSZW5kZXJPYmplY3Q6Om5vZGUoKSk7
IH0KICAgICBFbGVtZW50KiBub25Qc2V1ZG9FbGVtZW50KCkgY29uc3QgeyByZXR1cm4gZG93bmNh
c3Q8RWxlbWVudD4oUmVuZGVyT2JqZWN0Ojpub25Qc2V1ZG9Ob2RlKCkpOyB9CiAgICAgRWxlbWVu
dCogZ2VuZXJhdGluZ0VsZW1lbnQoKSBjb25zdDsKKyAgICBPcHRpb25hbDxTdHlsZWFibGU+IHN0
eWxlYWJsZSgpIGNvbnN0OwogCiAgICAgUmVuZGVyT2JqZWN0KiBmaXJzdENoaWxkKCkgY29uc3Qg
eyByZXR1cm4gbV9maXJzdENoaWxkOyB9CiAgICAgUmVuZGVyT2JqZWN0KiBsYXN0Q2hpbGQoKSBj
b25zdCB7IHJldHVybiBtX2xhc3RDaGlsZDsgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAppbmRleCBmMjM5YzRhNDQ4MGFlZTcyYTM5
MmIzNmM1MjQ1YjdjZDQxZDYyZDM3Li43ZTg5NTRmNDU3NzI3NTRhNDg3ZTcwYzcwM2I4YWZkODY5
NjU4YzUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJD
b21wb3NpdG9yLmNwcApAQCAtMjk1OSw4ICsyOTU5LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBv
c2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JBbmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9i
amUKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1h
dGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKLSAgICBpZiAoYXV0byogZWxl
bWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewotICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0
YWNrID0gZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RTdGFjaygpKSB7CisgICAgaWYgKGF1dG8gc3R5
bGVhYmxlID0gcmVuZGVyZXIuc3R5bGVhYmxlKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIGVmZmVj
dHNTdGFjayA9IHN0eWxlYWJsZS0+ZWxlbWVudC5rZXlmcmFtZUVmZmVjdFN0YWNrKHN0eWxlYWJs
ZS0+cHNldWRvSWQpKSB7CiAgICAgICAgICAgICByZXR1cm4gKGVmZmVjdHNTdGFjay0+aXNDdXJy
ZW50bHlBZmZlY3RpbmdQcm9wZXJ0eShDU1NQcm9wZXJ0eU9wYWNpdHkpCiAgICAgICAgICAgICAg
ICAgJiYgKHVzZXNDb21wb3NpdGluZygpIHx8IChtX2NvbXBvc2l0aW5nVHJpZ2dlcnMgJiBDaHJv
bWVDbGllbnQ6OkFuaW1hdGVkT3BhY2l0eVRyaWdnZXIpKSkKICAgICAgICAgICAgICAgICB8fCBl
ZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlGaWx0
ZXIpCkBAIC0zNDk0LDggKzM0OTQsOCBAQCBib29sIFJlbmRlckxheWVyQ29tcG9zaXRvcjo6aXNS
dW5uaW5nVHJhbnNmb3JtQW5pbWF0aW9uKFJlbmRlckxheWVyTW9kZWxPYmplY3QmCiAgICAgaWYg
KCEobV9jb21wb3NpdGluZ1RyaWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRpb25UcmlnZ2Vy
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCi0gICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5k
ZXJlci5lbGVtZW50KCkpIHsKLSAgICAgICAgaWYgKGF1dG8qIGVmZmVjdHNTdGFjayA9IGVsZW1l
bnQtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkKKyAgICBpZiAoYXV0byBzdHlsZWFibGUgPSByZW5k
ZXJlci5zdHlsZWFibGUoKSkgeworICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gc3R5
bGVhYmxlLT5lbGVtZW50LmtleWZyYW1lRWZmZWN0U3RhY2soc3R5bGVhYmxlLT5wc2V1ZG9JZCkp
CiAgICAgICAgICAgICByZXR1cm4gZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1By
b3BlcnR5KENTU1Byb3BlcnR5VHJhbnNmb3JtKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCmluZGV4
IGU3NGM0MTI1NjMyMjg1ZGMzMDA5Y2U0MzQwOTAwMjliMWE3ZGJmZDYuLjBjMTI1NzU4ODAyODc5
YzBlMDUxOTAzMzBjNGQ2NjhmZGE5ZjNlOTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcApAQCAtOTQzLDYgKzk0
Myw3IEBAIFRleHRTdHJlYW0mIG9wZXJhdG9yPDwoVGV4dFN0cmVhbSYgdHMsIFBzZXVkb0lkIHBz
ZXVkb0lkKQogICAgIGNhc2UgUHNldWRvSWQ6Ok5vbmU6IHRzIDw8ICJub25lIjsgYnJlYWs7CiAg
ICAgY2FzZSBQc2V1ZG9JZDo6Rmlyc3RMaW5lOiB0cyA8PCAiZmlyc3QtbGluZSI7IGJyZWFrOwog
ICAgIGNhc2UgUHNldWRvSWQ6OkZpcnN0TGV0dGVyOiB0cyA8PCAiZmlyc3QtbGV0dGVyIjsgYnJl
YWs7CisgICAgY2FzZSBQc2V1ZG9JZDo6SGlnaGxpZ2h0OiB0cyA8PCAiaGlnaGxpZ2h0IjsgYnJl
YWs7CiAgICAgY2FzZSBQc2V1ZG9JZDo6TWFya2VyOiB0cyA8PCAibWFya2VyIjsgYnJlYWs7CiAg
ICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOiB0cyA8PCAiYmVmb3JlIjsgYnJlYWs7CiAgICAgY2Fz
ZSBQc2V1ZG9JZDo6QWZ0ZXI6IHRzIDw8ICJhZnRlciI7IGJyZWFrOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5k
ZXggNTY0ZGQ1ZDViMDJjMGMxN2NmOWJkNzlmYmVkYzEwNzI1M2JmNzk3MS4uNThlY2RmM2FhYTEw
NDRjMGViZmY5MjZhMjE2MWMzMWNjYjY5MjE1NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC01NTgsMTQg
KzU1OCwxNCBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp0ZWFyRG93blJlbmRlcmVycyhFbGVt
ZW50JiByb290LCBUZWFyZG93blR5cGUgdGVhcmRvd25UeQogICAgICAgICAgICAgY2FzZSBUZWFy
ZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlQ2FuY2VsaW5nQW5pbWF0aW9uczoKICAgICAgICAgICAg
ICAgICBpZiAodGltZWxpbmUpIHsKICAgICAgICAgICAgICAgICAgICAgaWYgKGRvY3VtZW50LnJl
bmRlclRyZWVCZWluZ0Rlc3Ryb3llZCgpKQotICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxp
bmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2ViQW5p
bWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5l
LT5jYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlvbnNGb3JTdHlsZWFibGUoeyBlbGVtZW50LCBlbGVt
ZW50LnBzZXVkb0lkKCkgfSwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKICAgICAgICAg
ICAgICAgICAgICAgZWxzZSBpZiAodGVhcmRvd25UeXBlID09IFRlYXJkb3duVHlwZTo6UmVuZGVy
ZXJVcGRhdGVDYW5jZWxpbmdBbmltYXRpb25zKQotICAgICAgICAgICAgICAgICAgICAgICAgdGlt
ZWxpbmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2Vi
QW5pbWF0aW9uOjpTaWxlbnRseTo6Tm8pOworICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxp
bmUtPmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZSh7IGVsZW1lbnQsIGVs
ZW1lbnQucHNldWRvSWQoKSB9LCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpObyk7CiAgICAgICAg
ICAgICAgICAgfQogICAgICAgICAgICAgICAgIGJyZWFrOwogICAgICAgICAgICAgY2FzZSBUZWFy
ZG93blR5cGU6OlJlbmRlcmVyVXBkYXRlOgogICAgICAgICAgICAgICAgIGlmICh0aW1lbGluZSkK
LSAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPndpbGxDaGFuZ2VSZW5kZXJlckZvckVsZW1l
bnQoZWxlbWVudCk7CisgICAgICAgICAgICAgICAgICAgIHRpbWVsaW5lLT53aWxsQ2hhbmdlUmVu
ZGVyZXJGb3JTdHlsZWFibGUoeyBlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkgfSk7CiAgICAg
ICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxl
L1N0eWxlVHJlZVJlc29sdmVyLmNwcAppbmRleCA1OWRhNDFlZGFhYWQ5OGVmZDk3N2I5ZDQ3Njc2
MWI3NjU2YjYyYmIxLi4yMTE2NDQzNzc0NTJjMWQ2ODM4N2JiNDFjM2E0NWI3ODExOTE0OGQ5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwCkBAIC0yMTcsNyAr
MjE3LDcgQEAgRWxlbWVudFVwZGF0ZXMgVHJlZVJlc29sdmVyOjpyZXNvbHZlRWxlbWVudChFbGVt
ZW50JiBlbGVtZW50KQogICAgICAgICBtX2RvY3VtZW50LnNldEhhc05vZGVzV2l0aE5vbkZpbmFs
U3R5bGUoKTsKICAgICB9CiAKLSAgICBhdXRvIHVwZGF0ZSA9IGNyZWF0ZUFuaW1hdGVkRWxlbWVu
dFVwZGF0ZShXVEZNb3ZlKG5ld1N0eWxlKSwgZWxlbWVudCwgcGFyZW50KCkuY2hhbmdlKTsKKyAg
ICBhdXRvIHVwZGF0ZSA9IGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKG5ld1N0
eWxlKSwgeyBlbGVtZW50LCBQc2V1ZG9JZDo6Tm9uZSB9LCBwYXJlbnQoKS5jaGFuZ2UpOwogICAg
IGF1dG8gZGVzY2VuZGFudHNUb1Jlc29sdmUgPSBjb21wdXRlRGVzY2VuZGFudHNUb1Jlc29sdmUo
dXBkYXRlLmNoYW5nZSwgZWxlbWVudC5zdHlsZVZhbGlkaXR5KCksIHBhcmVudCgpLmRlc2NlbmRh
bnRzVG9SZXNvbHZlKTsKIAogICAgIGlmICgmZWxlbWVudCA9PSBtX2RvY3VtZW50LmRvY3VtZW50
RWxlbWVudCgpKSB7CkBAIC0yNzcsNyArMjc3LDcgQEAgRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2
ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZShFbGVtZW50JiBlbGVtZW50LCBjb25zdCBFbGVtZW50VXAK
ICAgICBpZiAoIXBzZXVkb0VsZW1lbnRSZW5kZXJlcklzTmVlZGVkKHBzZXVkb1N0eWxlLmdldCgp
KSAmJiAhaGFzQW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIHsgfTsKIAotICAgIHJldHVybiBj
cmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSksIGVsZW1lbnQu
ZW5zdXJlUHNldWRvRWxlbWVudChwc2V1ZG9JZCksIGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKKyAg
ICByZXR1cm4gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUocHNldWRvU3R5bGUp
LCB7IGVsZW1lbnQsIHBzZXVkb0lkIH0sIGVsZW1lbnRVcGRhdGUuY2hhbmdlKTsKIH0KIAogY29u
c3QgUmVuZGVyU3R5bGUqIFRyZWVSZXNvbHZlcjo6cGFyZW50Qm94U3R5bGUoKSBjb25zdApAQCAt
MzA2LDkgKzMwNiwyMyBAQCBjb25zdCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRC
b3hTdHlsZUZvclBzZXVkbyhjb25zdCBFbGVtZW50VXBkYXRlJiBlbAogICAgIH0KIH0KIAotRWxl
bWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6
OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBFbGVtZW50JiBlbGVtZW50LCBDaGFu
Z2UgcGFyZW50Q2hhbmdlKQorRWxlbWVudFVwZGF0ZSBUcmVlUmVzb2x2ZXI6OmNyZWF0ZUFuaW1h
dGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+IG5ld1N0eWxlLCBj
b25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ2hhbmdlIHBhcmVudENoYW5nZSkKIHsKLSAgICBh
dXRvKiBvbGRTdHlsZSA9IGVsZW1lbnQucmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpOwor
ICAgIGF1dG8mIGVsZW1lbnQgPSBzdHlsZWFibGUuZWxlbWVudDsKKworICAgIC8vIEZJWE1FOiBJ
ZGVhbGx5IHdlIGNvdWxkIGp1c3QgY2FsbCBFbGVtZW50OjpyZW5kZXJPckRpc3BsYXlDb250ZW50
c1N0eWxlKCkgd2l0aCBhIFBzZXVkb0lkCisgICAgLy8gYW5kIGdldCB0aGUgc3R5bGUgZm9yIGFu
eSBQc2V1ZG9JZCwgbm90IGp1c3QgUHNldWRvSWQ6OkJlZm9yZSBvciBQc2V1ZG9JZDo6QWZ0ZXIu
CisgICAgYXV0byogcHNldWRvRWxlbWVudCA9IFtzdHlsZWFibGVdKCkgLT4gUHNldWRvRWxlbWVu
dCogeworICAgICAgICBzd2l0Y2ggKHN0eWxlYWJsZS5wc2V1ZG9JZCkgeworICAgICAgICBjYXNl
IFBzZXVkb0lkOjpCZWZvcmU6CisgICAgICAgICAgICByZXR1cm4gc3R5bGVhYmxlLmVsZW1lbnQu
YmVmb3JlUHNldWRvRWxlbWVudCgpOworICAgICAgICBjYXNlIFBzZXVkb0lkOjpBZnRlcjoKKyAg
ICAgICAgICAgIHJldHVybiBzdHlsZWFibGUuZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQoKTsK
KyAgICAgICAgZGVmYXVsdDoKKyAgICAgICAgICAgIHJldHVybiBudWxscHRyOworICAgICAgICB9
CisgICAgfSgpOworICAgIGF1dG8qIG9sZFN0eWxlID0gcHNldWRvRWxlbWVudCA/IHBzZXVkb0Vs
ZW1lbnQtPnJlbmRlck9yRGlzcGxheUNvbnRlbnRzU3R5bGUoKSA6IGVsZW1lbnQucmVuZGVyT3JE
aXNwbGF5Q29udGVudHNTdHlsZSgpOwogCiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4g
YW5pbWF0aW9uSW1wYWN0OwogCkBAIC0zMTcsMTYgKzMzMSwxNiBAQCBFbGVtZW50VXBkYXRlIFRy
ZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxS
ZW5kZXJTdAogICAgIC8vIGluIGNhc2Ugbm8gV2ViIEFuaW1hdGlvbnMgaGF2ZSBiZWVuIGNyZWF0
ZWQgdGhyb3VnaCB0aGUgSlMgQVBJLgogICAgIGlmIChlbGVtZW50LmRvY3VtZW50KCkuYmFja0Zv
cndhcmRDYWNoZVN0YXRlKCkgPT0gRG9jdW1lbnQ6Ok5vdEluQmFja0ZvcndhcmRDYWNoZSAmJiAh
ZWxlbWVudC5kb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cHJpbnRpbmcoKSkgewogICAgICAgICBp
ZiAob2xkU3R5bGUgJiYgKG9sZFN0eWxlLT5oYXNUcmFuc2l0aW9ucygpIHx8IG5ld1N0eWxlLT5o
YXNUcmFuc2l0aW9ucygpKSkKLSAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRh
dGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgKm9sZFN0eWxlLCAqbmV3U3R5bGUp
OworICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNTU1RyYW5zaXRpb25z
Rm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgKm9sZFN0eWxlLCAqbmV3U3R5bGUpOwogCiAgICAgICAg
IC8vIFRoZSBvcmRlciBpbiB3aGljaCBDU1MgVHJhbnNpdGlvbnMgYW5kIENTUyBBbmltYXRpb25z
IGFyZSB1cGRhdGVkIG1hdHRlcnMgc2luY2UgQ1NTIFRyYW5zaXRpb25zIGRlZmluZSB0aGUgYWZ0
ZXItY2hhbmdlIHN0eWxlCiAgICAgICAgIC8vIHRvIHVzZSBDU1MgQW5pbWF0aW9ucyBhcyBkZWZp
bmVkIGluIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQuIEFzIHN1Y2gsIHdlIHVwZGF0
ZSBDU1MgQW5pbWF0aW9ucyBhZnRlciBDU1MgVHJhbnNpdGlvbnMKICAgICAgICAgLy8gc3VjaCB0
aGF0IHdoZW4gQ1NTIFRyYW5zaXRpb25zIGFyZSB1cGRhdGVkIHRoZSBDU1MgQW5pbWF0aW9ucyBk
YXRhIGlzIHRoZSBzYW1lIGFzIGR1cmluZyB0aGUgcHJldmlvdXMgc3R5bGUgY2hhbmdlIGV2ZW50
LgogICAgICAgICBpZiAoKG9sZFN0eWxlICYmIG9sZFN0eWxlLT5oYXNBbmltYXRpb25zKCkpIHx8
IG5ld1N0eWxlLT5oYXNBbmltYXRpb25zKCkpIHsKLSAgICAgICAgICAgIC8vIEZJWE1FOiBSZW1v
dmUgdGhpcyBoYWNrIGFuZCBwYXNzIHRoZSBwYXJlbnQgc3R5bGUgdmlhIHVwZGF0ZUNTU0FuaW1h
dGlvbnNGb3JFbGVtZW50LgorICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92ZSB0aGlzIGhhY2sg
YW5kIHBhc3MgdGhlIHBhcmVudCBzdHlsZSB2aWEgdXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0eWxl
YWJsZS4KICAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxl
Rm9yS2V5ZnJhbWVzKCZwYXJlbnQoKS5zdHlsZSk7CiAKLSAgICAgICAgICAgIG1fZG9jdW1lbnQu
dGltZWxpbmUoKS51cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBvbGRTdHls
ZSwgKm5ld1N0eWxlKTsKKyAgICAgICAgICAgIG1fZG9jdW1lbnQudGltZWxpbmUoKS51cGRhdGVD
U1NBbmltYXRpb25zRm9yU3R5bGVhYmxlKHN0eWxlYWJsZSwgb2xkU3R5bGUsICpuZXdTdHlsZSk7
CiAKICAgICAgICAgICAgIHNjb3BlKCkucmVzb2x2ZXIuc2V0UGFyZW50RWxlbWVudFN0eWxlRm9y
S2V5ZnJhbWVzKG51bGxwdHIpOwogICAgICAgICB9CkBAIC0zMzQsMTUgKzM0OCwxNSBAQCBFbGVt
ZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdAogCiAgICAgLy8gTm93IHdlIGNhbiB1cGRhdGUgYWxsIFdlYiBh
bmltYXRpb25zLCB3aGljaCB3aWxsIGluY2x1ZGUgQ1NTIEFuaW1hdGlvbnMgYXMgd2VsbAogICAg
IC8vIGFzIGFuaW1hdGlvbnMgY3JlYXRlZCB2aWEgdGhlIEpTIEFQSS4KLSAgICBpZiAoZWxlbWVu
dC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkgeworICAgIGlmIChlbGVtZW50Lmhhc0tleWZyYW1lRWZm
ZWN0cyhzdHlsZWFibGUucHNldWRvSWQpKSB7CiAgICAgICAgIC8vIFJlY29yZCB0aGUgc3R5bGUg
cHJpb3IgdG8gYXBwbHlpbmcgYW5pbWF0aW9ucyBmb3IgdGhpcyBzdHlsZSBjaGFuZ2UgZXZlbnQu
Ci0gICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShSZW5kZXJTdHls
ZTo6Y2xvbmVQdHIoKm5ld1N0eWxlKSk7CisgICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZShzdHlsZWFibGUucHNldWRvSWQsIFJlbmRlclN0eWxlOjpjbG9uZVB0cigq
bmV3U3R5bGUpKTsKICAgICAgICAgLy8gQXBwbHkgYWxsIGtleWZyYW1lIGVmZmVjdHMgdG8gdGhl
IG5ldyBzdHlsZS4KICAgICAgICAgYXV0byBhbmltYXRlZFN0eWxlID0gUmVuZGVyU3R5bGU6OmNs
b25lUHRyKCpuZXdTdHlsZSk7Ci0gICAgICAgIGFuaW1hdGlvbkltcGFjdCA9IGVsZW1lbnQuYXBw
bHlLZXlmcmFtZUVmZmVjdHMoKmFuaW1hdGVkU3R5bGUpOworICAgICAgICBhbmltYXRpb25JbXBh
Y3QgPSBlbGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZlY3RzKHN0eWxlYWJsZS5wc2V1ZG9JZCwgKmFu
aW1hdGVkU3R5bGUpOwogICAgICAgICBuZXdTdHlsZSA9IFdURk1vdmUoYW5pbWF0ZWRTdHlsZSk7
CiAgICAgfSBlbHNlCi0gICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHls
ZShudWxscHRyKTsKKyAgICAgICAgZWxlbWVudC5zZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KHN0eWxlYWJsZS5wc2V1ZG9JZCwgbnVsbHB0cik7CiAKICAgICBpZiAoYW5pbWF0aW9uSW1wYWN0
KQogICAgICAgICBBZGp1c3Rlcjo6YWRqdXN0QW5pbWF0ZWRTdHlsZSgqbmV3U3R5bGUsIHBhcmVu
dEJveFN0eWxlKCksIGFuaW1hdGlvbkltcGFjdCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaAppbmRleCAxYWZjOWE4YmJmNTlhNzI3ZDM1NWM2Mzc1NDg1MzE3YmE0NWVh
YTljLi5jMjk3MzQyZmVlODU0OTRhOWE2YWJkMWNlOTgyOGQ5NzcyMjNjMTE4IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgKQEAgLTMwLDYgKzMwLDcgQEAKICNpbmNs
dWRlICJTdHlsZUNoYW5nZS5oIgogI2luY2x1ZGUgIlN0eWxlU2hhcmluZ1Jlc29sdmVyLmgiCiAj
aW5jbHVkZSAiU3R5bGVVcGRhdGUuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRl
IDx3dGYvRnVuY3Rpb24uaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKQEAgLTYwLDcgKzYxLDcg
QEAgcHJpdmF0ZToKIAogICAgIEVsZW1lbnRVcGRhdGVzIHJlc29sdmVFbGVtZW50KEVsZW1lbnQm
KTsKIAotICAgIEVsZW1lbnRVcGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4sIEVsZW1lbnQmLCBDaGFuZ2UpOworICAgIEVsZW1lbnRV
cGRhdGUgY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJT
dHlsZT4sIGNvbnN0IFN0eWxlYWJsZSYsIENoYW5nZSk7CiAgICAgRWxlbWVudFVwZGF0ZSByZXNv
bHZlUHNldWRvU3R5bGUoRWxlbWVudCYsIGNvbnN0IEVsZW1lbnRVcGRhdGUmLCBQc2V1ZG9JZCk7
CiAKICAgICBzdHJ1Y3QgU2NvcGUgOiBSZWZDb3VudGVkPFNjb3BlPiB7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0
eWxlYWJsZS5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAuLjc2OGIyMmJhN2M4YmQ5M2NiZTZiOTA0YjQ0OTAwNWZmZmE1
MDNhNWEKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUu
aApAQCAtMCwwICsxLDU1IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIwIEFwcGxlIEluYy4g
QWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNv
dXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwg
YXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICog
YXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFp
biB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMg
aW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAg
bm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFp
bWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHBy
b3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBS
T1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1Q
TElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJ
TVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBB
UlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBB
UFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJ
TkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVO
VElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVN
RU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBP
UgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBB
TkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBT
VFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RI
RVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09G
VFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0Uu
CisgKi8KKworI3ByYWdtYSBvbmNlCisKKyNpbmNsdWRlICJSZW5kZXJTdHlsZUNvbnN0YW50cy5o
IgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEVsZW1lbnQ7CisKK3N0cnVjdCBTdHls
ZWFibGUgeworICAgIEVsZW1lbnQmIGVsZW1lbnQ7CisgICAgUHNldWRvSWQgcHNldWRvSWQ7CisK
KyAgICBTdHlsZWFibGUoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQgcHNldWRvSWQpCisgICAg
ICAgIDogZWxlbWVudChlbGVtZW50KQorICAgICAgICAsIHBzZXVkb0lkKHBzZXVkb0lkKQorICAg
IHsKKyAgICB9CisKKyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVhYmxlJiBvdGhlcikg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiAoJmVsZW1lbnQgPT0gJm90aGVyLmVsZW1lbnQg
JiYgcHNldWRvSWQgPT0gb3RoZXIucHNldWRvSWQpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0
b3IhPShjb25zdCBTdHlsZWFibGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJu
ICEoKnRoaXMgPT0gb3RoZXIpOworICAgIH0KK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxv
ZwppbmRleCBlMWNlYmQ5MzExNTM2ODM3MThiZjM1YmYzZDNhYTVhYTQzYjliZWM3Li5lMjY3ODFk
ODY2Y2IxNTlmZDU4MjAxODY0NDAxY2Q0M2NhNTBlNTkwIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0
cy9DaGFuZ2VMb2cKKysrIGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTcgQEAK
KzIwMjAtMDktMjQgIEFudG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAg
ICAgUmVkdWNlIHRoZSByZWxpYW5jZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24g
Y29kZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2
OTMxCisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgVXBk
YXRlIGEgY291cGxlIG9mIHRlc3RzIHdoaWNoIHJlbGllZCBvbiBhbiBpbnRlcm5hbHMgbWV0aG9k
IHRvIGdldCBhIHBzZXVkbyBlbGVtZW50IGFuZCBpbnN0ZWFkIHVzZQorICAgICAgICB0aGUgV2Vi
IEFuaW1hdGlvbnMgQVBJIHRvIGRldGVybWluZSB3aGV0aGVyIGEgZ2l2ZW4gYW5pbWF0aW9uIHRh
cmdldHMgYSBwc2V1ZG8tZWxlbWVudC4gVGhpcyBoYXMgdGhlCisgICAgICAgIGFkZGVkIGJlbmVm
aXQgb2YgaGF2aW5nIHRoZSBzYW1lIGNvZGUgcnVuIGluIGEgdGVzdGluZyBlbnZpcm9ubWVudCBh
cyBpbiBhIHJlZ3VsYXIgYnJvd3Nlci4KKworICAgICAgICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbDoKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0
ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sOgorCiAyMDIwLTA5LTI0ICBDaHJpcyBE
dW1leiAgPGNkdW1lekBhcHBsZS5jb20+CiAKICAgICAgICAgd2ViIGF1ZGlvIGFwaSBvdXRwdXRz
IHNpbGVuY2UgZm9yIDMwMiByZWRpcmVjdGVkIHJlc291cmNlIGluIHNhZmFyaQpkaWZmIC0tZ2l0
IGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKaW5kZXggOTYzNWNiMTliNjViZDdkNjRlYTExMTQxNTI2MzU3NmE5
NWEyYzVhMC4uNTBiZjk1ZDM5MzY2MzVkMGI3ZWM4YjllYzM2Y2YxNDM3NDZlZmUxYyAxMDA2NDQK
LS0tIGEvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0
cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTQgQEAKKzIwMjAtMDktMjQgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBy
ZWxpYW5jZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24gY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTMxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTWFyayBhIFdQVCB0ZXN0IHBy
b2dyZXNzaW9uLgorCisgICAgICAgICogd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtdHJhbnNp
dGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAyLWV4cGVjdGVkLnR4dDoKKwogMjAyMC0wOS0y
NCAgRnJlZGVyaWMgV2FuZyAgPGZ3YW5nQGlnYWxpYS5jb20+CiAKICAgICAgICAgUmVzeW5jIFdQ
VCdzIG1hdGhtbCBhbmQgbWF0aC1zY3JpcHQtbGV2ZWwtYW5kLW1hdGgtc3R5bGUgdGVzdHMKZGlm
ZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby1h
bmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3Bz
ZXVkby1hbmltYXRpb24uaHRtbAppbmRleCBlMzA4NjVhYTMzY2ZmYmEyOWZiNjAzMzljMjYwMzRm
MGNjZGFmOGM3Li4yY2I0M2Q5YTUyMDljZTZlMDNmYTVkZTQ1Nzc0NWIxZGU0MWM0OTBiIDEwMDY0
NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5p
bWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQv
cHNldWRvLWFuaW1hdGlvbi5odG1sCkBAIC03OCwxNyArNzgsMTAgQEAgZnVuY3Rpb24gZ2V0UHNl
dWRvQ29tcHV0ZWRUb3AoaWQpCiAvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBiZSBtb2RpZmll
ZCBzbyBzdWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9mZiBieSBvbmUKIC8vIGJlbG93IGFuZCBpdCBu
byBsb25nZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRvLgogCi1mdW5jdGlvbiBwYXVzZUFuaW1hdGlv
bkF0VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50LCBwc2V1
ZG9JZCkKK2Z1bmN0aW9uIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGFuaW1h
dGlvbk5hbWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0VsZW1lbnQpCiB7Ci0gICAgY29uc3QgcHNl
dWRvRWxlbWVudCA9IGludGVybmFscy5wc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHBzZXVkb0lkKTsK
LSAgICBpZiAoIXBzZXVkb0VsZW1lbnQpIHsKLSAgICAgICAgY29uc29sZS5sb2coIkZhaWxlZCB0
byBmaW5kIHBzZXVkbyBlbGVtZW50Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBj
b25zdCBhbmltYXRpb25zID0gcHNldWRvRWxlbWVudC5nZXRBbmltYXRpb25zKCk7Ci0gICAgZm9y
IChsZXQgYW5pbWF0aW9uIG9mIGFuaW1hdGlvbnMpIHsKLSAgICAgICAgaWYgKGFuaW1hdGlvbiBp
bnN0YW5jZW9mIENTU0FuaW1hdGlvbiAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmlt
YXRpb25OYW1lICYmIGFuaW1hdGlvbi5lZmZlY3QuZ2V0S2V5ZnJhbWVzKCkubGVuZ3RoKSB7Cisg
ICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGVsZW1lbnQuZ2V0QW5pbWF0aW9ucyh7IHN1YnRyZWU6
IHRydWUgfSkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbiBpbnN0YW5jZW9mIENTU0FuaW1hdGlv
biAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmltYXRpb25OYW1lICYmIGFuaW1hdGlv
bi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5wc2V1ZG9FbGVt
ZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbi5jdXJyZW50VGlt
ZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7CiAgICAgICAg
ICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5LDM1ICs5MiwyMCBAQCBmdW5jdGlvbiBwYXVzZUFuaW1h
dGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVtZW50LCBw
c2V1ZAogCiBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9uKGlkKQogeworICAgIGNvbnN0IHBzZXVkb0Vs
ZW1lbnQgPSBgOjoke2lkfWA7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlk
KGlkKTsKICAgICBkaXYuY2xhc3NOYW1lID0gJ2FuaW1hdGUnOwogICAgIHdpbmRvdy5kaXYgPSBk
aXY7CiAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAgIGlmICh3aW5k
b3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVt
ZW50KCdleGFtcGxlJywgMS4wLCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdk
aXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRv
Q29tcHV0ZWRUb3AoaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywg
MTcwLCAxKTsKLSAgICAgICAgcGF1c2VBbmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ2V4
YW1wbGUnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZz
ZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRl
ZFRvcChpZCk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEp
OwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBmbGFreSwgYnV0IGl0J3Mg
YSByZWFzb25hYmxlIGFwcHJveGltYXRpb24gZm9yIHRlc3RpbmcKLSAgICAgICAgLy8gaW4gYSBi
cm93c2VyIGluc3RlYWQgb2YgRFJULgotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewot
ICAgICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VU
bygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOwotICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBn
ZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Nv
bXB1dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAgIHNldFRpbWVv
dXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAg
ICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAxMiwgMSk7Ci0gICAgICAgICAg
ICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNo
b3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwotICAgICAgICB9LCAyMDAwKTsK
LSAgICB9CisKKyAgICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBs
ZScsIDEuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5v
ZmZzZXRXaWR0aCcsIDIwLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVk
VG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKKyAg
ICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScsIDIuMCwgZGl2
LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcs
IDEyLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAg
ICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0g
ZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2Vu
ZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24uaHRtbAppbmRleCA5YTc0MmZlOGExNmZk
ZjMwMDQ5ZmY3MTEyMzYxNjQzZWJiOWQyYTg2Li5iYzRhMTZiYzRlNDc3MjdlOTNiZTJkMjFiZWQ3
NGM4ODRjNTBiZDdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQt
Y29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3RzL2Zhc3QvY3Nz
LWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwKQEAgLTU2LDYzICs1Niw0
MSBAQCBmdW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCkKIGNvbnN0IHByZWZpeCA9ICIt
d2Via2l0LSI7CiBjb25zdCBwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4ID0gWyItd2Via2l0LXRl
eHQtc3Ryb2tlLWNvbG9yIiwgIi13ZWJraXQtdGV4dC1maWxsLWNvbG9yIl07CiAKLWZ1bmN0aW9u
IHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCh0cmFuc2l0aW9uUHJvcGVydHks
IHRpbWUsIGVsZW1lbnQsIHBzZXVkb0lkKQorZnVuY3Rpb24gcGF1c2VUcmFuc2l0aW9uQXRUaW1l
T25Qc2V1ZG9FbGVtZW50KHRyYW5zaXRpb25Qcm9wZXJ0eSwgdGltZSwgZWxlbWVudCwgcHNldWRv
RWxlbWVudCkKIHsKLSAgICBjb25zdCBwc2V1ZG9FbGVtZW50ID0gaW50ZXJuYWxzLnBzZXVkb0Vs
ZW1lbnQoZWxlbWVudCwgcHNldWRvSWQpOwotICAgIGlmICghcHNldWRvRWxlbWVudCkgewotICAg
ICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHRvIGZpbmQgcHNldWRvIGVsZW1lbnQiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydHkuc3RhcnRzV2l0
aChwcmVmaXgpICYmICFwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4LmluY2x1ZGVzKHRyYW5zaXRp
b25Qcm9wZXJ0eSkpCiAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IHRyYW5zaXRpb25Qcm9w
ZXJ0eS5zdWJzdHIocHJlZml4Lmxlbmd0aCk7CiAKLSAgICAvLyBPdGhlcndpc2UsIHVzZSB0aGUg
V2ViIEFuaW1hdGlvbnMgQVBJLgotICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBwc2V1ZG9FbGVtZW50
LmdldEFuaW1hdGlvbnMoKTsKLSAgICBmb3IgKGxldCBhbmltYXRpb24gb2YgYW5pbWF0aW9ucykg
ewotICAgICAgICBpZiAoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTVHJhbnNpdGlvbiAmJiBhbmlt
YXRpb24udHJhbnNpdGlvblByb3BlcnR5ID09IHRyYW5zaXRpb25Qcm9wZXJ0eSkgeworICAgIGZv
ciAobGV0IGFuaW1hdGlvbiBvZiBlbGVtZW50LmdldEFuaW1hdGlvbnMoeyBzdWJ0cmVlOiB0cnVl
IH0pKSB7CisgICAgICAgIGlmIChhbmltYXRpb24gaW5zdGFuY2VvZiBDU1NUcmFuc2l0aW9uICYm
IGFuaW1hdGlvbi50cmFuc2l0aW9uUHJvcGVydHkgPT0gdHJhbnNpdGlvblByb3BlcnR5ICYmIGFu
aW1hdGlvbi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5wc2V1
ZG9FbGVtZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbi5jdXJy
ZW50VGltZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7CiAg
ICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKwogICAgIGNvbnNvbGUu
bG9nKGBBIHRyYW5zaXRpb24gZm9yIHByb3BlcnR5ICR7dHJhbnNpdGlvblByb3BlcnR5fSBjb3Vs
ZCBub3QgYmUgZm91bmRgKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGZ1bmN0aW9uIHRlc3RU
cmFuc2l0aW9uKGlkKQogeworICAgIGNvbnN0IHBzZXVkb0VsZW1lbnQgPSBgOjoke2lkfWA7CiAg
ICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBkaXYuY2xhc3NO
YW1lID0gJ3RyYW5zaXRpb24nOwogICAgIHdpbmRvdy5kaXYgPSBkaXY7CiAgICAgc2hvdWxkQmUo
J2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAgIGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0g
ICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAxLjAs
IGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIw
LCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0b3An
LCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVk
VG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7
Ci0gICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lkdGgnLCAy
LjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcs
IDEyLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd0
b3AnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1
dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwg
MSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGZsYWt5LCBidXQgaXQn
cyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBmb3IgdGVzdGluZwotICAgICAgICAvLyBpbiBh
IGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCi0gICAgICAgIHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7
Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hvdWxkQmVDbG9z
ZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgICAgICBjb21wdXRlZFRvcCA9
IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygn
Y29tcHV0ZWRUb3AnLCAxNzAsIDEpOwotICAgICAgICB9LCAxMDAwKTsKLSAgICAgICAgc2V0VGlt
ZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7Ci0gICAgICAg
ICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAg
ICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICAgICAg
c2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0gICAgICAgIH0sIDIwMDAp
OwotICAgIH0KKworICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lk
dGgnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYu
b2Zmc2V0V2lkdGgnLCAyMCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9F
bGVtZW50KCd0b3AnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgY29tcHV0ZWRUb3Ag
PSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRl
ZFRvcCcsIDE3MCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50
KCd3aWR0aCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8o
J2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBz
ZXVkb0VsZW1lbnQoJ3RvcCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBjb21wdXRl
ZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Nv
bXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1n
aXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3Mt
dHJhbnNpdGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAyLWV4cGVjdGVkLnR4dCBiL0xheW91
dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9u
cy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CmluZGV4IGQwOTZkZTRkNTVk
OTA2M2RiMDFkNzg5NTZmODgyMWRhYTllYmE3ZGEuLjNiODdhOGRjOGUwZDIyODllNzU1OTgwMGFj
NThkNDhhZmVlYTE1NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWIt
cGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0w
MDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZv
cm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhw
ZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1FT1VUKSwgbWVz
c2FnZSA9IG51bGwKLQotVElNRU9VVCBUcmFuc2l0aW9ucyBvbiA6OmJlZm9yZS86OmFmdGVyIHBz
ZXVkby1lbGVtZW50cyBhcmUgY2FuY2VsZWQgd2hlbiB0aGUgY29udGVudCBwcm9wZXJ0eSBpcyBj
bGVhcmVkIFRlc3QgdGltZWQgb3V0CitQQVNTIFRyYW5zaXRpb25zIG9uIDo6YmVmb3JlLzo6YWZ0
ZXIgcHNldWRvLWVsZW1lbnRzIGFyZSBjYW5jZWxlZCB3aGVuIHRoZSBjb250ZW50IHByb3BlcnR5
IGlzIGNsZWFyZWQgCiAK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409683</attachid>
            <date>2020-09-25 06:02:18 -0700</date>
            <delta_ts>2020-09-25 06:42:35 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216931-20200925150216.patch</filename>
            <type>text/plain</type>
            <size>123047</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4ZDI1NDdhOTIwMDhl
Njg4MjEwODI3YjE5NTU0MmM5ZjkxZDI2YS4uZTczNmRjMjkwNTRlNTlhM2UyOGYwNjJlN2VlNTc2
ZTRjNzM3ZjA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAyMC0wOS0yNSAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJl
bGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5NTExNjgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgorCisgICAgICAgIFdlIGhhdmUgc28gZmFyIHJlbGllZCBvbiBQc2V1ZG9FbGVtZW50IGFz
IGEgZm91bmRhdGlvbiBmb3Igc3VwcG9ydGluZyBhbmltYXRpb25zIG9mIHBzZXVkby1lbGVtZW50
cy4gVGhpcyBpcyBub3QgYQorICAgICAgICBncmVhdCBjaG9pY2Ugc2luY2UgUHNldWRvRWxlbWVu
dCBpcyBjdXJyZW50bHkgbGltaXRlZCB0byA6OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8tZWxl
bWVudHMgb25seS4gVGhpcyBwYXRjaAorICAgICAgICByZWZhY3RvcnMgYW5pbWF0aW9uLXJlbGF0
ZWQgY29kZSB0byByZWx5IG9uIFBzZXVkb0VsZW1lbnQgYXMgbGl0dGxlIGFzIHBvc3NpYmxlIHdp
dGhvdXQgbWFraW5nIGNoYW5nZXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgYW5pbWF0aW9uIGNv
ZGUsIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgYW5pbWF0aW9uIG9mIG1vcmUg
cHNldWRvLWVsZW1lbnRzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBz
dHJ1Y3QgU3R5bGVhYmxlIHdoaWNoIGNvbWJpbmVzIGFuIEVsZW1lbnQmIGFuZCBQc2V1ZG9JZC4g
V2UgdXNlIHRoaXMgc3RydWN0IGluc3RlYWQKKyAgICAgICAgb2YgRWxlbWVudCBvYmplY3RzIHdo
ZXJldmVyIG5lY2Vzc2FyeSBpbiB0aGUgYW5pbWF0aW9uIGNvZGUuIE9uIHRvcCBvZiB0aGF0LCB3
ZSBhZGQgYSBQc2V1ZG9JZCBwYXJhbWV0ZXIgdG8gYWxsIHRoZQorICAgICAgICBFbGVtZW50IG1l
dGhvZHMgd3JhcHBpbmcgYWNjZXNzIHRvIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSBhbmQgdXNl
IGEgSGFzaE1hcDxQc2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YT4+CisgICAgICAgIHRvIGJlIGFibGUgdG8gc2VwYXJhdGUgYW5pbWF0aW9uIGRhdGEgcGVy
IHBzZXVkby1lbGVtZW50LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6
OmFuaW1hdGlvbldhc0FkZGVkVG9TdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tU3R5bGVhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZy
b21MaXN0c0Zvck93bmluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGlt
ZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdhc1JlbW92ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJlckZvclN0eWxlYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6Y2FuY2VsRGVjbGFyYXRpdmVB
bmltYXRpb25zRm9yU3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENvbnNpZGVy
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yU3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmtleWZyYW1lRWZm
ZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZUFuZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
clN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0
aW9uV2FzQWRkZWRUb0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6d2lsbENoYW5nZVJlbmRlcmVyRm9y
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgor
ICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpD
U1NBbmltYXRpb24pOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
cmFuc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Q1NT
VHJhbnNpdGlvbik6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpkaXNhc3NvY2lhdGVGcm9tT3du
aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1
ZURPTUV2ZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaDoK
KyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBbmlt
YXRpb25PblJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNG
b3JSZW5kZXJlckFyZUFsbEFjY2VsZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJh
dGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5oOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEpOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6cHNldWRv
SWQgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmludmFsaWRhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphbmltYXRpb25UaW1lbGluZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6dXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAg
ICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0U3RhY2s6OmFkZEVmZmVjdCk6CisgICAgICAgICogYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldEVm
ZmVjdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0VGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpwZXJzaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25P
d25pbmdFbGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpjb21wYXJlQ1NTVHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNT
U0FuaW1hdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
a2V5ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpl
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhh
c0tleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphcHBs
eUtleWZyYW1lRWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5zaXRp
b25zRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUnVu
bmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aGFzUnVubmluZ1RyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVu
c3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6Omxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBbmltYXRpb25zKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuY3BwOgorICAgICAgICAqIGRv
bS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6
dXNlVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjphbmlt
YXRpb25SYXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6ZWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
UHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjbGVh
ckhvc3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmlzVGFyZ2V0
ZWRCeUtleWZyYW1lRWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpoYXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckFu
aW1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25SZW5kZXJl
cnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRh
dGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmg6CisgICAgICAgICogc3R5
bGUvU3R5bGVhYmxlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpTdHls
ZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpmcm9tRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6a2V5
ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpoYXNLZXlmcmFtZUVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjphcHBseUtleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWFibGU6OmFuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpo
YXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlYWJsZTo6aGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpoYXNSdW5uaW5nVHJhbnNpdGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjplbnN1cmVBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNC
eVByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6ZW5zdXJlUnVu
bmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWFibGU6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVhYmxlOjpzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5
bGUgY29uc3QpOgorCiAyMDIwLTA5LTI0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgaGVscGVyIGZ1bmN0aW9ucyB0byBjcmVhdGUgTGlu
ZUJveDo6SW5saW5lQm94IG9iamVjdHMgZm9yIGlubGluZSBsZXZlbCBib3hlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDQ2NTliZGUyMjhhMGJmMDYzYmM5MGNjYzA2MmU3MTQ0MGZiZjNjNmQuLjAx
NGM1ZWYxZDFkMTE5ZGFhYjc3ODQwZjA3YmJjYTY4OTlhYWM0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTQ5OSw2ICsxNDk5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHN0eWxlL1N0eWxlU2NvcGUuaAogICAgIHN0eWxlL1N0eWxlVXBkYXRlLmgKICAg
ICBzdHlsZS9TdHlsZVZhbGlkaXR5LmgKKyAgICBzdHlsZS9TdHlsZWFibGUuaAogCiAgICAgc3Zn
L1NWR0xlbmd0aENvbnRleHQuaAogICAgIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGUyNjM5
NmNkODYwMWYwYTNkOGFmYTc1NWQ3ZTAzZmJlNTJkOTY0NC4uZjhjNzFmYTViYTM0OGQ1Mjk3YTMw
YzMzZjJlYTRhOTM2NzhkM2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEyNyw2ICsyMTI3LDcgQEAKIAkJNzEzMTcxMzQx
RkJFNzhEQjAwRjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzE3MTMyMUZCRTc4QzUwMEY3
NThERSAvKiBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEzMjQ0NTEyMDEwOURBNTAwQUU3RkIyIC8q
IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzEzMjQ0NEYyMDEwOUQ5QjAwQUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0
aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QzE0Njk0MUIz
MDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcxMzkyMkJFMjUxOEFCNzcwMDVEQjNDMiAvKiBTdHls
ZWFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
MzkyMkJDMjUxOEFCNzAwMDVEQjNDMiAvKiBTdHlsZWFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTNGMUQ1QTIzREYxRDhEMDAzRjVFRkEg
LyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25z
T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxM0YxRDVEMjNERjI1ODIwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTNGMUQ1QjIz
REYyNTYwMDAzRjVFRkEgLyogSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyB9OwogCQk3MTQ5
NUREQjIwMkIwNkYxMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNDk1RERBMjAyQjA2REUwMEFERkQzNCAv
KiBKU0VmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05NzU1LDYgKzk3NTYsNyBAQAogCQk3MTMyNDQ0RjIwMTA5RDlCMDBBRTdG
QjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8q
IFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTM5MjJCQzI1
MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlYWJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNFNzBBRjE3MzNFOEIzMDBBMjJEMDAg
LyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxM0YxRDU3MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmlt
YXRpb25zT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0QW5pbWF0aW9uc09w
dGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1OTIzREYxRDdE
MDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2V0QW5pbWF0aW9uc09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI4NDAyLDYgKzI4NDA0LDcgQEAKIAkJCQlBNzlCQUQ5RTE2MUU3RjNGMDBDMkU2
NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3RjNGMDBDMkU2NTIgLyog
UnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQu
aCAqLywKKwkJCQk3MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8sCiAJ
CQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovLAogCQkJ
CUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJCQkJRTRB
QkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0zMjc4Myw3
ICszMjc4Niw5IEBACiAJCQkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExheW91dEluaXRp
YWxDb250YWluaW5nQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1MjNGMjY4RUMw
MEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDE4
MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1
IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQw
M0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3RTRFQkMgLyogTGF5
b3V0TGluZUJyZWFrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBD
NEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMyODI4LDcgKzMy
ODMzLDYgQEAKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIg
LyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAw
MDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0MDNCN0Ey
MjUxQjExOTMwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNh
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVM
YXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MUM2Mjgy
MzkyOTNFQzAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMzY5Nyw3ICszMzcwMSw2IEBACiAJCQkJMjI4QzI4NDUxMEQ4MjUw
MDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMEQ3
QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVn
cmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgwRjY0RDRERDAw
Qjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0Ux
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzM5MzcsNiArMzM5NDAsNyBAQAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2
MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDlGNzc3NjBF
RkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MTM5MjJCRTI1MThBQjc3MDA1REIzQzIgLyogU3R5bGVhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFj
a2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2
NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNzRjMDY1NGE1N2M3YjAyMTRmODk2
Y2YyNDZlM2U3NDQxZDU2ZTY0Yi4uNzBkNWY3YTE4MzFhMzcwODYyNWUwNWFiNWNmN2VhZWM2M2Jm
MWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisj
aW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtODAsOSArODEsOSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1v
dmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJUKCFhbmltYXRp
b24udGltZWxpbmUoKSB8fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsKICAgICBtX2Fu
aW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4o
YW5pbWF0aW9uLmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNh
c3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVt
ZW50KGFuaW1hdGlvbiwgKnRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKmRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pihh
bmltYXRpb24uZWZmZWN0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gZG93bmNh
c3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldFN0eWxlYWJsZSgp
KSB7CisgICAgICAgICAgICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZShhbmltYXRp
b24sICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0
aW9uLmVmZmVjdCgpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05NSw5ICs5Niw5IEBAIE9w
dGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQog
ICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqdGltZSk7CiB9CiAKLXZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwg
Y29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgZWxlbWVudC5lbnN1cmVBbmltYXRp
b25zKCkuYWRkKCZhbmltYXRpb24pOworICAgIHN0eWxlYWJsZS5lbnN1cmVBbmltYXRpb25zKCku
YWRkKCZhbmltYXRpb24pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVtb3ZlQ1NTVHJhbnNp
dGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiwgUHJvcGVydHlUb1RyYW5zaXRp
b25NYXAmIGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eSkKQEAgLTExMCwzNyArMTExLDM3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9u
JiB0cmFuc2l0aW9uLCBQcm9wZXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudChXZWJBbmltYXRpb24m
IGFuaW1hdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmFu
aW1hdGlvbldhc1JlbW92ZWRGcm9tU3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBj
b25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKIHsKLSAgICBlbGVtZW50LmVuc3VyZUFuaW1hdGlv
bnMoKS5yZW1vdmUoJmFuaW1hdGlvbik7CisgICAgc3R5bGVhYmxlLmVuc3VyZUFuaW1hdGlvbnMo
KS5yZW1vdmUoJmFuaW1hdGlvbik7CiAKICAgICAvLyBOb3csIGlmIHdlJ3JlIGRlYWxpbmcgd2l0
aCBhIENTUyBUcmFuc2l0aW9uLCB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgbV9lbGVtZW50VG9SdW5u
aW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCBtYXAuCiAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBkbyB0aGlzIGZvciBDU1MgQW5pbWF0aW9ucyBiZWNhdXNlIHRoZWlyIHRpbWluZyBjYW4g
YmUgc2V0IHZpYSBDU1MgdG8gZW5kLCB3aGljaCB3b3VsZCBjYXVzZSB0aGlzCiAgICAgLy8gZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkLCBidXQgdGhleSBzaG91bGQgcmVtYWluIGFzc29jaWF0ZWQgd2l0
aCB0aGVpciBvd25pbmcgZWxlbWVudCB1bnRpbCB0aGlzIGlzIGNoYW5nZWQgdmlhIGEgY2FsbAog
ICAgIC8vIHRvIHRoZSBKUyBBUEkgb3IgY2hhbmdpbmcgdGhlIHRhcmdldCBlbGVtZW50J3MgYW5p
bWF0aW9uLW5hbWUgcHJvcGVydHkuCiAgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlv
bikpCi0gICAgICAgIHJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5n
RWxlbWVudChhbmltYXRpb24sIGVsZW1lbnQpOworICAgICAgICByZW1vdmVEZWNsYXJhdGl2ZUFu
aW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoYW5pbWF0aW9uLCBzdHlsZWFibGUpOwog
fQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZy
b21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQm
IGVsZW1lbnQpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1h
dGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIGNv
bnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQogewogICAgIEFTU0VSVChpczxEZWNsYXJhdGl2ZUFu
aW1hdGlvbj4oYW5pbWF0aW9uKSk7CiAKICAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0
aW9uKSkgewogICAgICAgICBhdXRvJiB0cmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlv
bj4oYW5pbWF0aW9uKTsKLSAgICAgICAgaWYgKCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0
cmFuc2l0aW9uLCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkp
Ci0gICAgICAgICAgICByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVt
ZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKTsKKyAgICAgICAgaWYg
KCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBzdHlsZWFibGUuZW5zdXJl
UnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Ry
YW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIHN0eWxlYWJsZS5lbnN1cmVDb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHkoKSk7CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxlbWVudCYgZWxlbWVudCwgQ1NT
QW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVD
U1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENT
U0FuaW1hdGlvbiYgY3NzQW5pbWF0aW9uKQogewotICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cCgpLnJlbW92ZSgmY3NzQW5pbWF0aW9uKTsKKyAgICBzdHlsZWFibGUuYW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cCgpLnJlbW92ZSgmY3NzQW5pbWF0aW9uKTsKIAotICAgIGlmICgh
ZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkKKyAgICBpZiAoIXN0eWxlYWJsZS5oYXNLZXlm
cmFtZUVmZmVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYga2V5ZnJhbWVFZmZl
Y3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOworICAgIGF1dG8m
IGtleWZyYW1lRWZmZWN0U3RhY2sgPSBzdHlsZWFibGUuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
aygpOwogICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBrZXlmcmFtZUVmZmVjdFN0YWNrLmNz
c0FuaW1hdGlvbkxpc3QoKTsKICAgICBpZiAoIWNzc0FuaW1hdGlvbkxpc3QgfHwgY3NzQW5pbWF0
aW9uTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTYsMzMgKzE1NywzMyBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJr
dXAoRWxlbWVudCYgZWxlbWVudCwgQ1NTQQogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9u
VGltZWxpbmU6OmVsZW1lbnRXYXNSZW1vdmVkKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQog
ewotICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2Vi
QW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKKyAgICBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlv
bnNGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwog
fQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVu
ZGVyZXJGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgaWYg
KGF1dG8qIGFuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnMoKSkgeworICAgIGlmIChhdXRv
KiBhbmltYXRpb25zID0gc3R5bGVhYmxlLmFuaW1hdGlvbnMoKSkgewogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGFuaW1hdGlvbiA6ICphbmltYXRpb25zKQogICAgICAgICAgICAgYW5pbWF0aW9u
LT53aWxsQ2hhbmdlUmVuZGVyZXIoKTsKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSBzaWxlbnRseSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFi
bGUmIHN0eWxlYWJsZSwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSBzaWxlbnRseSkKIHsKLSAgICBp
ZiAoYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpKSB7CisgICAgaWYgKGF1
dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUuYW5pbWF0aW9ucygpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgYW5pbWF0aW9uIDogKmFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChpczxEZWNs
YXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxD
U1NBbmltYXRpb24+KGFuaW1hdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNTU0Fu
aW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRpb24+KCph
bmltYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRl
ZEJ5TWFya3VwKHN0eWxlYWJsZSwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0aW9uKSk7
CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5jYW5jZWwoc2lsZW50bHkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDb25zaWRlckFu
aW1hdGlvbihFbGVtZW50JiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50LCBjb25zdCBBbmltYXRpb24m
IGFuaW1hdGlvbikKK3N0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmICghYW5pbWF0
aW9uLmlzVmFsaWRBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzLDIx
ICsxOTQsMTkgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxlbWVudCYg
ZWxlbWVudE9yUHNldWRvRWxlbWVudCwgY29uc3QgQW5pbWEKICAgICBpZiAobmFtZSA9PSBhbmlt
YXRpb25OYW1lTm9uZSB8fCBuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byYgZWxlbWVudCA9IGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQpID8gKmRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0VsZW1lbnQp
Lmhvc3RFbGVtZW50KCkgOiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50OwotCiAgICAgaWYgKGF1dG8q
IHN0eWxlU2NvcGUgPSBTdHlsZTo6U2NvcGU6OmZvck9yZGluYWwoZWxlbWVudCwgYW5pbWF0aW9u
Lm5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlU2NvcGUtPnJl
c29sdmVyKCkuaXNBbmltYXRpb25OYW1lVmFsaWQobmFtZSk7CiAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSkKIHsKLSAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IHN0eWxl
YWJsZS5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CiAKICAgICAvLyBJbiBjYXNlIHRoaXMg
ZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2Fu
Y2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlm
IChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5
TWFya3VwKCkpCisgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogc3R5bGVhYmxlLmFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKSkKICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2Fu
Y2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0
aW9uTGlzdChudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOCw3IEBAIHZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1hdGlv
bkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKLSAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMg
PSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICBhdXRvJiBwcmV2aW91
c0FuaW1hdGlvbnMgPSBzdHlsZWFibGUuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOwogCiAg
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1hbmltYXRpb25zLTEvI2FuaW1hdGlvbnMK
ICAgICAvLyBUaGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUgbmFtZSBtYXkgYmUgcmVwZWF0ZWQgd2l0
aGluIGFuIGFuaW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRvIHRoZSBhbmltYXRpb24tbmFtZSB1cGRh
dGUgZXhpc3RpbmcKQEAgLTIzMyw3ICsyMzIsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQog
ICAgIGlmIChjdXJyZW50QW5pbWF0aW9uTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
Y3VycmVudEFuaW1hdGlvbkxpc3QtPnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICAgICAg
YXV0byYgY3VycmVudEFuaW1hdGlvbiA9IGN1cnJlbnRBbmltYXRpb25MaXN0LT5hbmltYXRpb24o
aSAtIDEpOwotICAgICAgICAgICAgaWYgKCFzaG91bGRDb25zaWRlckFuaW1hdGlvbihlbGVtZW50
LCBjdXJyZW50QW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJBbmlt
YXRpb24oc3R5bGVhYmxlLmVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24pKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBib29sIGZvdW5kTWF0Y2hpbmdBbmltYXRpb24g
PSBmYWxzZTsKQEAgLTI1MSw3ICsyNTAsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2hpbmdBbmltYXRpb24pCi0g
ICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQoQ1NTQW5pbWF0aW9uOjpjcmVhdGUoZWxl
bWVudCwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOworICAgICAg
ICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1hdGlvbjo6Y3JlYXRlKHN0eWxlYWJs
ZSwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0yNjMsMTQgKzI2MiwxNCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOworICAgIHN0eWxlYWJsZS5zZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOwogCiAgICAga2V5ZnJhbWVF
ZmZlY3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KGN1cnJlbnRBbmltYXRpb25MaXN0KTsKIH0K
IAotc3RhdGljIEtleWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorc3RhdGljIEtl
eWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShjb25zdCBT
dHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKIHsKLSAgICBpZiAo
YXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQua2V5ZnJhbWVFZmZlY3RTdGFjaygp
KSB7CisgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBzdHlsZWFibGUua2V5ZnJh
bWVFZmZlY3RTdGFjaygpKSB7CiAgICAgICAgIGF1dG8gZWZmZWN0cyA9IGtleWZyYW1lRWZmZWN0
U3RhY2stPnNvcnRlZEVmZmVjdHMoKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3Qg
OiBtYWtlUmV2ZXJzZWRSYW5nZShlZmZlY3RzKSkgewogICAgICAgICAgICAgaWYgKGVmZmVjdC0+
YW5pbWF0ZXNQcm9wZXJ0eShwcm9wZXJ0eSkpCkBAIC0zMzksMTEgKzMzOCwxNyBAQCBzdGF0aWMg
dm9pZCBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgSGFzaFNldAogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRp
b25UaW1lKQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JT
dHlsZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKQog
ewotICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0ga2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5k
UHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHkpOworICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0g
a2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5kUHJvcGVydHkoc3R5bGVhYmxlLCBwcm9wZXJ0eSk7
CiAgICAgYXV0byogYW5pbWF0aW9uID0ga2V5ZnJhbWVFZmZlY3QgPyBrZXlmcmFtZUVmZmVjdC0+
YW5pbWF0aW9uKCkgOiBudWxscHRyOwotICAgIGJvb2wgaXNEZWNsYXJhdGl2ZSA9IGFuaW1hdGlv
biAmJiBpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2FzdDxEZWNs
YXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpID09ICZlbGVtZW50
OworCisgICAgYm9vbCBpc0RlY2xhcmF0aXZlID0gZmFsc2U7CisgICAgaWYgKGlzPERlY2xhcmF0
aXZlQW5pbWF0aW9uPihhbmltYXRpb24pKSB7CisgICAgICAgIGlmIChhdXRvIG93bmluZ0VsZW1l
bnQgPSBkb3duY2FzdDxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbikub3duaW5nRWxl
bWVudCgpKQorICAgICAgICAgICAgaXNEZWNsYXJhdGl2ZSA9ICpvd25pbmdFbGVtZW50ID09IHN0
eWxlYWJsZTsKKyAgICB9CisKICAgICBpZiAoYW5pbWF0aW9uICYmICFpc0RlY2xhcmF0aXZlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTM1OCw4ICszNjMsOCBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBl
bGVtZQogCiAgICAgLy8gQSBDU1MgVHJhbnNpdGlvbiBtaWdodCBoYXZlIGNvbXBsZXRlZCBzaW5j
ZSB0aGUgbGFzdCB0aW1lIGFuaW1hdGlvbnMgd2VyZSB1cGRhdGVkIHNvIHdlIG11c3QKICAgICAv
LyB1cGRhdGUgdGhlIHJ1bm5pbmcgYW5kIGNvbXBsZXRlZCB0cmFuc2l0aW9ucyBtZW1iZXJzaGlw
IGluIHRoYXQgY2FzZS4KLSAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBt
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24gJiYgZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNG
b3JQcm9wZXJ0eShwcm9wZXJ0eSkgJiYgYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBXZWJBbmlt
YXRpb246OlBsYXlTdGF0ZTo6RmluaXNoZWQpIHsKLSAgICAgICAgZWxlbWVudC5lbnN1cmVDb21w
bGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIGVsZW1lbnQuZW5zdXJl
UnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpKTsKKyAgICBpZiAo
aXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24g
JiYgc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KSAm
JiBhbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpGaW5p
c2hlZCkgeworICAgICAgICBzdHlsZWFibGUuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KCkuc2V0KHByb3BlcnR5LCBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpKTsKICAgICAgICAgYW5pbWF0aW9uID0gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTM3Nyw3ICszODIsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB1c2UgdGhlIHJlY29yZGVkIFJl
bmRlclN0eWxlIGZvciB0aGlzIGVsZW1lbnQgZHVyaW5nIGEgcHJldmlvdXMgY2FsbCB0byBTdHls
ZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoKS4KLSAgICAgICAg
aWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVtZW50Lmxhc3RTdHlsZUNo
YW5nZUV2ZW50U3R5bGUoKSkKKyAgICAgICAgaWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUgPSBzdHlsZWFibGUubGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk7
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjb21wdXRlZCBzdHlsZXMgZnJvbSBhbmltYXRp
b25zIGZvciB0aGlzIGVsZW1lbnQsIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlIGlzIHRoZSBwcmV2
aW91c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1lbnQuCkBAIC0zOTksMTAgKzQwNCwx
MCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6
OmNsb25lKG5ld1N0eWxlKTsKICAgICB9KCk7CiAKLSAgICBpZiAoIWVsZW1lbnQuaGFzUnVubmlu
Z1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCisgICAgaWYgKCFzdHlsZWFibGUuaGFz
UnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCiAgICAgICAgICYmICFDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdl
U3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQogICAgICAgICAmJiBDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6Y2FuUHJvcGVydHlCZUludGVycG9sYXRlZChwcm9wZXJ0eSwgJmJlZm9yZUNoYW5nZVN0eWxl
LCAmYWZ0ZXJDaGFuZ2VTdHlsZSkKLSAgICAgICAgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNW
YWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVu
dC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkKKyAgICAgICAgJiYgIXBy
b3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0
ZXJDaGFuZ2VTdHlsZSwgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9w
ZXJ0eSgpKQogICAgICAgICAmJiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gJiYgdHJhbnNpdGlv
bkNvbWJpbmVkRHVyYXRpb24obWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSA+IDApIHsKICAgICAg
ICAgLy8gMS4gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CiAgICAgICAgIC8vICAg
LSB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcnVubmluZyB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHksCkBAIC00MTIsNyArNDE3LDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAg
ICAgICAgLy8gICAtIHRoZSBjb21iaW5lZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gMHMsCiAK
ICAgICAgICAgLy8gdGhlbiBpbXBsZW1lbnRhdGlvbnMgbXVzdCByZW1vdmUgdGhlIGNvbXBsZXRl
ZCB0cmFuc2l0aW9uIChpZiBwcmVzZW50KSBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5z
aXRpb25zCi0gICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkucmVtb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRl
ZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CiAKICAgICAgICAgLy8g
YW5kIHN0YXJ0IGEgdHJhbnNpdGlvbiB3aG9zZToKICAgICAgICAgLy8gICAtIHN0YXJ0IHRpbWUg
aXMgdGhlIHRpbWUgb2YgdGhlIHN0eWxlIGNoYW5nZSBldmVudCBwbHVzIHRoZSBtYXRjaGluZyB0
cmFuc2l0aW9uIGRlbGF5LApAQCAtNDI1LDI1ICs0MzAsMjUgQEAgdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYg
ZWxlbWUKICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlID0gYmVmb3JlQ2hhbmdlU3R5bGU7CiAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRl
bmluZ0ZhY3RvciA9IDE7Ci0gICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQs
IHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJmJl
Zm9yZUNoYW5nZVN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVy
c2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwotICAg
IH0gZWxzZSBpZiAoZWxlbWVudC5oYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBy
b3BlcnR5KSAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFw
KHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpKSkgeworICAgICAgICBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRl
KHN0eWxlYWJsZSwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7CisgICAgfSBlbHNlIGlmIChzdHlsZWFibGUuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNG
b3JQcm9wZXJ0eShwcm9wZXJ0eSkgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRy
YW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgc3R5bGVhYmxlLmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgewogICAgICAgICAvLyAyLiBPdGhl
cndpc2UsIGlmIHRoZSBlbGVtZW50IGhhcyBhIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHkgYW5kIHRoZSBlbmQgdmFsdWUgb2YgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGlz
IGRpZmZlcmVudCBmcm9tCiAgICAgICAgIC8vICAgIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUgZm9y
IHRoZSBwcm9wZXJ0eSwgdGhlbiBpbXBsZW1lbnRhdGlvbnMgbXVzdCByZW1vdmUgdGhlIGNvbXBs
ZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMuCi0g
ICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVt
b3ZlKHByb3BlcnR5KTsKKyAgICAgICAgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRp
b25zQnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNS
dW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVy
dHkocHJvcGVydHkpOwotICAgIGlmICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5o
YXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KSkgJiYgIW1hdGNoaW5n
QmFja2luZ0FuaW1hdGlvbikgeworICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb24gPSBzdHls
ZWFibGUuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgIGlm
ICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgc3R5bGVhYmxlLmhhc0NvbXBsZXRlZFRyYW5zaXRp
b25zRm9yUHJvcGVydHkocHJvcGVydHkpKSAmJiAhbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSB7
CiAgICAgICAgIC8vIDMuIElmIHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBv
ciBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3IgdGhlIHByb3BlcnR5LCBhbmQgdGhlcmUgaXMgbm90
IGEgbWF0Y2hpbmcgdHJhbnNpdGlvbi1wcm9wZXJ0eQogICAgICAgICAvLyAgICB2YWx1ZSwgdGhl
biBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBy
ZW1vdmUgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQg
dHJhbnNpdGlvbnMuCiAgICAgICAgIGlmIChoYXNSdW5uaW5nVHJhbnNpdGlvbikKLSAgICAgICAg
ICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJv
cGVydHkpLT5jYW5jZWwoKTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS5lbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KCkudGFrZShwcm9wZXJ0eSktPmNhbmNlbCgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9w
ZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICBzdHlsZWFibGUuZW5zdXJlQ29t
cGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVtb3ZlKHByb3BlcnR5KTsKICAgICB9CiAK
LSAgICBpZiAobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVsZW1lbnQuaGFzUnVubmluZ1Ry
YW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVz
VmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIGVsZW1l
bnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgewotICAgICAgICBhdXRv
IHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpOworICAgIGlmIChtYXRjaGluZ0JhY2tp
bmdBbmltYXRpb24gJiYgc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5
KHByb3BlcnR5KSAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbklu
TWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgeworICAgICAgICBhdXRvIHByZXZpb3VzbHlSdW5uaW5n
VHJhbnNpdGlvbiA9IHN0eWxlYWJsZS5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5
KCkudGFrZShwcm9wZXJ0eSk7CiAgICAgICAgIGF1dG8mIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNp
dGlvbkN1cnJlbnRTdHlsZSA9IHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbi0+Y3VycmVudFN0
eWxlKCk7CiAgICAgICAgIC8vIDQuIElmIHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNp
dGlvbiBmb3IgdGhlIHByb3BlcnR5LCB0aGVyZSBpcyBhIG1hdGNoaW5nIHRyYW5zaXRpb24tcHJv
cGVydHkgdmFsdWUsIGFuZCB0aGUgZW5kIHZhbHVlIG9mIHRoZSBydW5uaW5nCiAgICAgICAgIC8v
ICAgIHRyYW5zaXRpb24gaXMgbm90IGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkg
aW4gdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSwgdGhlbjoKQEAgLTQ4MSw3ICs0ODYsNyBAQCB2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSA8IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1h
dGlvbi0+ZGVsYXkoKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25kcyhtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpOwogICAgICAgICAgICAgYXV0byBkdXJhdGlv
biA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVy
c2luZ1Nob3J0ZW5pbmdGYWN0b3I7CiAKLSAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3Jl
YXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0Fu
aW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJD
aGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUs
IHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS5lbnN1
cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0
aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGlu
Z0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5
bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRT
dGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyA0LiBPdGhlcndpc2UsIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNl
bCB0aGUgcnVubmluZyB0cmFuc2l0aW9uCiAgICAgICAgICAgICBwcmV2aW91c2x5UnVubmluZ1Ry
YW5zaXRpb24tPmNhbmNlbEZyb21TdHlsZSgpOwpAQCAtNDk3LDE3ICs1MDIsMTcgQEAgdm9pZCBB
bmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVy
dHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1h
dGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgICAgICBhdXRvJiBy
ZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUgPSBjdXJyZW50U3R5bGU7CiAgICAgICAgICAgICBh
dXRvIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgPSAxOwotICAgICAgICAgICAgZWxlbWVudC5l
bnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFu
c2l0aW9uOjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hp
bmdCYWNraW5nQW5pbWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0
eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVk
U3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgc3R5
bGVhYmxlLmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHks
IENTU1RyYW5zaXRpb246OmNyZWF0ZShzdHlsZWFibGUsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGlt
ZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlv
bkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNp
bmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNp
dGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGlt
ZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYg
c3R5bGVhYmxlLCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkg
Z2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIHRy
YW5zaXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCiAgICAgaWYgKGN1cnJlbnRTdHlsZS5o
YXNUcmFuc2l0aW9ucygpICYmIGN1cnJlbnRTdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIGlmIChlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucygpKSB7Ci0gICAgICAgICAgICBh
dXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpOworICAgICAgICBpZiAoc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9u
cygpKSB7CisgICAgICAgICAgICBhdXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IHN0eWxlYWJsZS5l
bnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbSA6IHJ1bm5pbmdU
cmFuc2l0aW9ucykKICAgICAgICAgICAgICAgICBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJ
RE1hcEl0ZW0udmFsdWUtPmNhbmNlbEZyb21TdHlsZSgpOwogICAgICAgICB9CkBAIC01MzIsMTMg
KzUzNywxMyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUgogICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eSA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQcm9wZXJ0eUF0SW5kZXgocHJvcGVydHlJ
bmRleCwgaXNTaG9ydGhhbmQpOwogICAgICAgICAgICAgaWYgKGlzU2hvcnRoYW5kICYmICppc1No
b3J0aGFuZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJy
ZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0aW9uVGltZSk7CisgICAgICAgICAgICB1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZUFuZFByb3BlcnR5KHN0eWxlYWJsZSwgcHJvcGVydHks
IGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvIHByb3BlcnR5IDogdHJhbnNpdGlv
blByb3BlcnRpZXMpCi0gICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFBy
b3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0
aW9uVGltZSk7CisgICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJv
cGVydHkoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwgZ2VuZXJh
dGlvblRpbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmluZGV4IDlkNDJmNzg5ZmI4NjIyZDljYTAw
M2Q5NWIzYWE2ZTk2ZjhhMTBlYjYuLmJlMmY2YzE1YjUwNzk3ODBmOTZlZGI4ZWIzODFkMTJmMjJl
M2EzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDb21w
dXRlZEVmZmVjdFRpbWluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
U3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDQsNyArNDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NBbmltYXRpb247CiBjbGFzcyBDU1NUcmFuc2l0aW9u
OwogY2xhc3MgRGVjbGFyYXRpdmVBbmltYXRpb247Ci1jbGFzcyBFbGVtZW50OwogCiBjbGFzcyBB
bmltYXRpb25UaW1lbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRpbWVsaW5lPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEFuaW1hdGlvblRpbWVsaW5lPiB7CiBwdWJsaWM6CkBAIC02
MSwxOCArNjEsMTggQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJy
ZW50VGltZSgpOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKSB7
IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9CiAKLSAgICB2b2lkIGVsZW1lbnRXYXNSZW1vdmVkKEVs
ZW1lbnQmKTsKKyAgICB2b2lkIGVsZW1lbnRXYXNSZW1vdmVkKGNvbnN0IFN0eWxlYWJsZSYpOwog
Ci0gICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmKTsKLSAgICB2
b2lkIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIFdlYkFu
aW1hdGlvbjo6U2lsZW50bHkpOworICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyRm9yU3R5bGVh
YmxlKGNvbnN0IFN0eWxlYWJsZSYpOworICAgIHZvaWQgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRp
b25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIFdlYkFuaW1hdGlvbjo6U2lsZW50bHkp
OwogCi0gICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRvRWxlbWVudChXZWJBbmltYXRpb24mLCBF
bGVtZW50Jik7Ci0gICAgdm9pZCBhbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoV2ViQW5p
bWF0aW9uJiwgRWxlbWVudCYpOworICAgIHZvaWQgYW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJs
ZShXZWJBbmltYXRpb24mLCBjb25zdCBTdHlsZWFibGUmKTsKKyAgICB2b2lkIGFuaW1hdGlvbldh
c1JlbW92ZWRGcm9tU3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYsIGNvbnN0IFN0eWxlYWJsZSYpOwog
Ci0gICAgdm9pZCByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0Vs
ZW1lbnQoV2ViQW5pbWF0aW9uJiwgRWxlbWVudCYpOworICAgIHZvaWQgcmVtb3ZlRGVjbGFyYXRp
dmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdlYkFuaW1hdGlvbiYsIGNvbnN0
IFN0eWxlYWJsZSYpOwogCi0gICAgdm9pZCB1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChF
bGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUmIGFmdGVyQ2hhbmdlU3R5bGUpOwotICAgIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JF
bGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUpOworICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0
eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJT
dHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKQEAgLTgyLDggKzgyLDgg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlR2xvYmFsUG9zaXRpb24o
V2ViQW5pbWF0aW9uJik7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRB
bmRQcm9wZXJ0eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIGNvbnN0IE1v
bm90b25pY1RpbWUpOwotICAgIHZvaWQgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3Vw
KEVsZW1lbnQmLCBDU1NBbmltYXRpb24mKTsKKyAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25z
Rm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiwgQ1NTUHJvcGVydHlJRCwg
Y29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVy
Q2hhbmdlU3R5bGUsIGNvbnN0IE1vbm90b25pY1RpbWUpOworICAgIHZvaWQgcmVtb3ZlQ1NTQW5p
bWF0aW9uQ3JlYXRlZEJ5TWFya3VwKGNvbnN0IFN0eWxlYWJsZSYsIENTU0FuaW1hdGlvbiYpOwog
CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fY3VycmVu
dFRpbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRl
eCA3MTlkOGQzOTYyZGZiMDEzNjE5MzFmYjRmMzUxNWI0ZTQ1NTEzNDJmLi5jOTBkZDFiOTk2MjUw
YjRlYWM4ZDkyZDYyNzMzYmFmNWNhNzhhYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzcsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NB
bmltYXRpb24pOwogCi1SZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShFbGVt
ZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQor
UmVmPENTU0FuaW1hdGlvbj4gQ1NTQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiBv
d25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24ob3duaW5nRWxlbWVudCwg
YmFja2luZ0FuaW1hdGlvbikpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRTdHlsZSwgbmV3
U3R5bGUpOwpAQCAtNDcsNyArNDYsNyBAQCBSZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246
OmNyZWF0ZShFbGVtZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotQ1NTQW5pbWF0aW9uOjpDU1NBbmltYXRpb24oRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQorQ1NTQW5pbWF0aW9uOjpD
U1NBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJh
Y2tpbmdBbmltYXRpb24pCiAgICAgOiBEZWNsYXJhdGl2ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNr
aW5nQW5pbWF0aW9uKQogICAgICwgbV9hbmltYXRpb25OYW1lKGJhY2tpbmdBbmltYXRpb24ubmFt
ZSgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IGUzYmM5
YTY5ODg4OGZlZjZmM2EzNmZhMWQwZWQwZjVlNWFkNjkyMzMuLjJjMDVhYjU1YWRlZDFjNjFhNzY3
ZmQ4OTQzODg5YjM5ODY3MTc2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uLmgKQEAgLTI2LDE5ICsyNiwxOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEZWNs
YXJhdGl2ZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQW5pbWF0aW9uOwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBDU1NBbmltYXRpb24gZmluYWwgOiBwdWJsaWMgRGVjbGFyYXRpdmVBbmltYXRp
b24gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTQW5pbWF0aW9uKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENTU0FuaW1hdGlvbj4gY3JlYXRlKEVsZW1lbnQmLCBjb25zdCBBbmlt
YXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSk7CisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShjb25zdCBTdHls
ZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAgICAgfkNTU0FuaW1hdGlvbigpID0gZGVmYXVs
dDsKIAogICAgIGJvb2wgaXNDU1NBbmltYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVmZmVjdEtleWZyYW1l
c1dlcmVTZXRVc2luZ0JpbmRpbmdzKCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9uKEVs
ZW1lbnQmLCBjb25zdCBBbmltYXRpb24mKTsKKyAgICBDU1NBbmltYXRpb24oY29uc3QgU3R5bGVh
YmxlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJh
Y2tpbmdBbmltYXRpb24oKSBmaW5hbDsKICAgICBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVh
dGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwg
Y29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAppbmRleCAy
ZDAyNmY1ZjNmMjg1YTU3ODYwNDViNjhkMDA0YmYwMDFkMjAyOTQ0Li45ZTYwNjA5MWMxODg5ZWI3
OGFhZTE4OTZmZDBjMTU0NTQzZjY5ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U1RyYW5zaXRpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWZyYW1l
RWZmZWN0LmgiCiAjaW5jbHVkZSAiVHJhbnNpdGlvbkV2ZW50LmgiCkBAIC0zOCw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU1Ry
YW5zaXRpb24pOwogCi1SZWY8Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKEVs
ZW1lbnQmIG93bmluZ0VsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIE1vbm90b25pY1Rp
bWUgZ2VuZXJhdGlvblRpbWUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNl
Y29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNp
bmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKQor
UmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUm
IG93bmluZ0VsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIE1vbm90b25pY1RpbWUgZ2Vu
ZXJhdGlvblRpbWUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNlY29uZHMg
ZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1
c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKQogewogICAg
IEFTU0VSVChvbGRTdHlsZSk7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU1Ry
YW5zaXRpb24ob3duaW5nRWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCBiYWNraW5n
QW5pbWF0aW9uLCAqb2xkU3R5bGUsIG5ld1N0eWxlLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5
bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKQEAgLTUwLDExICs0OSwxMSBAQCBSZWY8
Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1l
bnQsIENTU1Byb3BlcnR5SUQgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNTU1RyYW5zaXRp
b246OkNTU1RyYW5zaXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5n
QW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRT
dHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCi0gICAgOiBEZWNsYXJhdGl2
ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKQorQ1NTVHJhbnNpdGlvbjo6Q1NT
VHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNr
aW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3Rh
cnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCisgICAgOiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbihzdHlsZWFibGUsIGJhY2tpbmdBbmltYXRpb24pCiAgICAgLCBtX3Byb3Bl
cnR5KHByb3BlcnR5KQogICAgICwgbV9nZW5lcmF0aW9uVGltZShnZW5lcmF0aW9uVGltZSkKLSAg
ICAsIG1fdGltZWxpbmVUaW1lQXRDcmVhdGlvbihlbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUo
KS5jdXJyZW50VGltZSgpKQorICAgICwgbV90aW1lbGluZVRpbWVBdENyZWF0aW9uKHN0eWxlYWJs
ZS5lbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUoKS5jdXJyZW50VGltZSgpKQogICAgICwgbV90
YXJnZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIodGFyZ2V0U3R5bGUpKQogICAgICwgbV9j
dXJyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKG9sZFN0eWxlKSkKICAgICAsIG1fcmV2
ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZXZlcnNpbmdB
ZGp1c3RlZFN0YXJ0U3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9u
LmgKaW5kZXggZDI3NWJiYjA0MTVkNzc3OGMzZDliYTAxNmI0MDQ5YjQ3YWMwMTFlNS4uNThkNmZk
NzQxZjFjYzQ1ZDkwZmQ1YWRiMjEzZjg3NTU2ZmRjMjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmltYXRpb24uaCIKKyNpbmNs
dWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMzYsMTMg
KzM3LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbjsKLWNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgQ1NTVHJhbnNpdGlvbiBmaW5h
bCA6IHB1YmxpYyBEZWNsYXJhdGl2ZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChDU1NUcmFuc2l0aW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1RyYW5zaXRp
b24+IGNyZWF0ZShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0
aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRp
b24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJs
ZSk7CisgICAgc3RhdGljIFJlZjxDU1NUcmFuc2l0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxl
JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5p
bWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYg
bmV3U3R5bGUsIFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0
eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSk7CiAgICAgfkNTU1RyYW5z
aXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQ1NTVHJhbnNpdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGRv
dWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXZlcnNp
bmdTaG9ydGVuaW5nRmFjdG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTVHJhbnNpdGlvbihFbGVt
ZW50JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3Qg
QW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIGRvdWJsZSk7CisgICAgQ1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmLCBDU1NQ
cm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24m
LCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91
YmxlKTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25k
cyBkdXJhdGlvbik7CiAgICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7CiAgICAg
dm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiwgT3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5k
ZXggZDU1YmQxMDU5MTMzOTBlOThmMDkzMWIwOGE0NWZhYTYzN2VmMWQ0My4uZTRmNzgyOThlNWZm
MDkxMzYzMWMyM2QyZjUxZDA5ZmI0ZDUwMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC00Myw5ICs0MywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEZWNsYXJhdGl2
ZUFuaW1hdGlvbik7CiAKLURlY2xhcmF0aXZlQW5pbWF0aW9uOjpEZWNsYXJhdGl2ZUFuaW1hdGlv
bihFbGVtZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRp
b24pCi0gICAgOiBXZWJBbmltYXRpb24ob3duaW5nRWxlbWVudC5kb2N1bWVudCgpKQotICAgICwg
bV9vd25pbmdFbGVtZW50KG1ha2VXZWFrUHRyKG93bmluZ0VsZW1lbnQpKQorRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxl
LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCisgICAgOiBXZWJBbmltYXRpb24o
c3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKSkKKyAgICAsIG1fb3duaW5nRWxlbWVudChtYWtl
V2Vha1B0cihzdHlsZWFibGUuZWxlbWVudCkpCisgICAgLCBtX293bmluZ1BzZXVkb0lkKHN0eWxl
YWJsZS5wc2V1ZG9JZCkKICAgICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1h
dGlvbiY+KGJhY2tpbmdBbmltYXRpb24pKQogewogfQpAQCAtNTQsOSArNTUsMTEgQEAgRGVjbGFy
YXRpdmVBbmltYXRpb246On5EZWNsYXJhdGl2ZUFuaW1hdGlvbigpCiB7CiB9CiAKLUVsZW1lbnQq
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50KCkgY29uc3QKK2NvbnN0IE9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQo
KSBjb25zdAogewotICAgIHJldHVybiBtX293bmluZ0VsZW1lbnQuZ2V0KCk7CisgICAgaWYgKG1f
b3duaW5nRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9vd25pbmdFbGVtZW50
LmdldCgpLCBtX293bmluZ1BzZXVkb0lkKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
CiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKCkKQEAgLTkzLDcgKzk2LDcgQEAgdm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogYW5pbWF0aW9uVGltZWxpbmUgPSB0aW1l
bGluZSgpKQotICAgICAgICBhbmltYXRpb25UaW1lbGluZS0+cmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KCp0aGlzLCAqbV9vd25pbmdFbGVtZW50KTsK
KyAgICAgICAgYW5pbWF0aW9uVGltZWxpbmUtPnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJv
bUxpc3RzRm9yT3duaW5nRWxlbWVudCgqdGhpcywgKm93bmluZ0VsZW1lbnQoKSk7CiAgICAgbV9v
d25pbmdFbGVtZW50ID0gbnVsbHB0cjsKIH0KIApAQCAtMTEyLDEyICsxMTUsNyBAQCB2b2lkIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyUwogCiAgICAgQVNTRVJUKG1fb3duaW5nRWxlbWVudCk7CiAKLSAgICBp
ZiAoaXM8UHNldWRvRWxlbWVudD4obV9vd25pbmdFbGVtZW50LmdldCgpKSkgewotICAgICAgICBh
dXRvJiBwc2V1ZG9Pd25pbmdFbGVtZW50ID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm1fb3du
aW5nRWxlbWVudCk7Ci0gICAgICAgIEFTU0VSVChwc2V1ZG9Pd25pbmdFbGVtZW50Lmhvc3RFbGVt
ZW50KCkpOwotICAgICAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqcHNldWRv
T3duaW5nRWxlbWVudC5ob3N0RWxlbWVudCgpLCBwc2V1ZG9Pd25pbmdFbGVtZW50LnBzZXVkb0lk
KCkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2V0RWZmZWN0KEtleWZyYW1lRWZmZWN0OjpjcmVh
dGUoKm1fb3duaW5nRWxlbWVudCwgbV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKSk7CisgICAg
c2V0RWZmZWN0KEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoKm1fb3duaW5nRWxlbWVudCwgbV9vd25p
bmdQc2V1ZG9JZCkpOwogICAgIHNldFRpbWVsaW5lKCZtX293bmluZ0VsZW1lbnQtPmRvY3VtZW50
KCkudGltZWxpbmUoKSk7CiAgICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCgpKS0+
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5l
d1N0eWxlKTsKICAgICBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CkBAIC0z
NTIsNyArMzUwLDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgU2Vjb25kcwogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGlt
ZSkgLyAxMDAwOwotICAgIGNvbnN0IGF1dG8mIHBzZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMobV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKTsKKyAg
ICBjb25zdCBhdXRvJiBwc2V1ZG9JZCA9IFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1l
Rm9yRXZlbnRzKG1fb3duaW5nUHNldWRvSWQpOwogICAgIGF1dG8gdGltZWxpbmVUaW1lID0gdGlt
ZWxpbmUoKSA/IHRpbWVsaW5lKCktPmN1cnJlbnRUaW1lKCkgOiBXVEY6Om51bGxvcHQ7CiAgICAg
YXV0byBldmVudCA9IGNyZWF0ZUV2ZW50KGV2ZW50VHlwZSwgdGltZSwgcHNldWRvSWQsIHRpbWVs
aW5lVGltZSk7CiAgICAgZXZlbnQtPnNldFRhcmdldChtX293bmluZ0VsZW1lbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRl
eCBhZGI4NjY1Y2QyY2VkZjYxNWQwMzJhYWE2ZmVkOTE0NzIwZjM1OWRlLi4zMWM0ZjY1MzM5N2Fi
ODhkNzM1YjVjMmRhYWFhYjFjY2IzZWQ4MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIK
KyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ1LDcgKzQ2LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRWxlbWVudCogb3duaW5nRWxlbWVudCgpIGNvbnN0
OworICAgIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gb3duaW5nRWxlbWVudCgpIGNv
bnN0OwogICAgIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2luZ0FuaW1hdGlvbjsgfQogICAgIHZvaWQgc2V0QmFja2luZ0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbEZyb21TdHlsZSgpOwpAQCAtNzIsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKSBjb25z
dDsKIAogcHJvdGVjdGVkOgotICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmLCBjb25z
dCBBbmltYXRpb24mKTsKKyAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbihjb25zdCBTdHlsZWFibGUm
LCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwpAQCAt
OTAsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIG1fcHJldmlv
dXNQaGFzZSB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CiAKICAgICBXZWFrUHRyPEVs
ZW1lbnQ+IG1fb3duaW5nRWxlbWVudDsKKyAgICBQc2V1ZG9JZCBtX293bmluZ1BzZXVkb0lkOwog
ICAgIFJlZjxBbmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKICAgICBkb3VibGUgbV9wcmV2
aW91c0l0ZXJhdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKaW5kZXggYjQzYzNjMTBmMmU5MzE0Y2ZhOTZlOTc5NTJkN2VjMTJkOGU3YWRk
My4uN2E4NTIxNDQ5OWRkZWJlMzIzNDQ4ZDZhOTVjOWExNWIxMGMxNDQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC0yMjYsOCArMjI3LDggQEAgYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0gZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCk7Ci0gICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJh
bWVFZmZlY3QtPnRhcmdldCgpOwotICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzRGVzY2Vu
ZGFudE9mKCptX2RvY3VtZW50KSkKKyAgICBhdXRvIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50
YXJnZXRTdHlsZWFibGUoKTsKKyAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5lbGVtZW50Lmlz
RGVzY2VuZGFudE9mKCptX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
SGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzVG9NYXRjaCA9IGtleWZyYW1lRWZmZWN0
LT5hbmltYXRlZFByb3BlcnRpZXMoKTsKQEAgLTI5Niw4ICsyOTcsOCBAQCB2b2lkIERvY3VtZW50
VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8Q1NTVHJhbnNpdGlvbj4gdHJh
bnNpdGlvbikKICAgICBBU1NFUlQodHJhbnNpdGlvbik7CiAgICAgcmVtb3ZlQW5pbWF0aW9uKCp0
cmFuc2l0aW9uKTsKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVj
dCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgp
KQotICAgICAgICAgICAgdGFyZ2V0LT5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoKS5zZXQodHJhbnNpdGlvbi0+cHJvcGVydHkoKSwgdHJhbnNpdGlvbik7CisgICAgICAgIGlm
IChhdXRvIHN0eWxlYWJsZSA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5l
ZmZlY3QoKSktPnRhcmdldFN0eWxlYWJsZSgpKQorICAgICAgICAgICAgc3R5bGVhYmxlLT5lbnN1
cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQodHJhbnNpdGlvbi0+cHJvcGVy
dHkoKSwgdHJhbnNpdGlvbik7CiAgICAgfQogfQogCkBAIC0zMzAsMTAgKzMzMSwxMSBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlTmV4dFRpY2soKQogCiBib29sIERvY3VtZW50VGlt
ZWxpbmU6OmNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
TGF5b3V0UmVjdCYgYm91bmRzKSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6
ZnJvbVJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoIXN0eWxlYWJsZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+
YW5pbWF0aW9ucygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmFuaW1hdGlv
bnMoKTsKICAgICBpZiAoIWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MzU1LDEwICszNTcsMTEgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZB
bmltYXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91dFIKIAogYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVy
ZXIuZWxlbWVudCgpKQorICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpOworICAgIGlmICghc3R5bGVhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvKiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25z
KCk7CisgICAgYXV0byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+YW5pbWF0aW9ucygpOwogICAg
IGlmICghYW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzYsMTAgKzM3
OSwxMSBAQCBib29sIERvY3VtZW50VGltZWxpbmU6OmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVy
ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIENTUwogCiBib29sIERvY3VtZW50VGltZWxpbmU6
OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRl
cmVyLmVsZW1lbnQoKSkKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJvbVJlbmRl
cmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoIXN0eWxlYWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+YW5pbWF0aW9u
cygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmFuaW1hdGlvbnMoKTsKICAg
ICBpZiAoIWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDAwLDExICs0
MDQsMTEgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1h
dGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmUKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBEb2N1bWVudFRpbWVsaW5lOjphbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0gICAgYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1l
bnQoKTsKLSAgICBpZiAoIWVsZW1lbnQpCisgICAgYXV0byBzdHlsZWFibGUgPSBTdHlsZWFibGU6
OmZyb21SZW5kZXJlcihyZW5kZXJlcik7CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAKLSAgICBhdXRv
KiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25zKCk7CisgICAgYXV0
byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+YW5pbWF0aW9ucygpOwogICAgIGlmICghYW5pbWF0
aW9ucykKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHls
ZSgpKTsKIApAQCAtNDQ2LDkgKzQ1MCwxMyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OmFwcGx5
UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpCiAgICAgfQogfQogCi1ib29sIERvY3VtZW50
VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmlt
YXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQu
YW5pbWF0aW9ucygpOworICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpOworICAgIGlmICghc3R5bGVhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvKiBhbmltYXRpb25zID0gc3R5bGVhYmxlLT5hbmltYXRpb25zKCk7CiAgICAg
aWYgKCFhbmltYXRpb25zIHx8IGFuaW1hdGlvbnMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApp
bmRleCBmMjdjN2M3ODkyZjhlYzcyMWQ5NmEzMjhlMzA5ZjViZjYxNjc1MDU2Li44ZTMwNDkxMTZk
NTA0Y2E1M2JlMDAxM2FmYWYyZGY4Mjk4YmQ5ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbmltYXRpb25FdmVudEJhc2U7CiBjbGFzcyBEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlckVs
ZW1lbnQ7CiAKIGNsYXNzIERvY3VtZW50VGltZWxpbmUgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9u
VGltZWxpbmUKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSdW5uaW5nQW5p
bWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxl
bWVudCYsIENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIHZvaWQgYW5pbWF0aW9uQWNjZWxlcmF0
ZWRSdW5uaW5nU3RhdGVEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJik7Ci0gICAgYm9vbCBydW5uaW5n
QW5pbWF0aW9uc0ZvckVsZW1lbnRBcmVBbGxBY2NlbGVyYXRlZChFbGVtZW50JikgY29uc3Q7Cisg
ICAgYm9vbCBydW5uaW5nQW5pbWF0aW9uc0ZvclJlbmRlcmVyQXJlQWxsQWNjZWxlcmF0ZWQoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKSBjb25zdDsKICAgICB2b2lkIGRldGFjaEZyb21Eb2N1
bWVudCgpOwogCiAgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRC
YXNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEuY3BwCmluZGV4IGM4MDJhNTljNDc3NTMxNzUyODdjOGM0OTEyNzc5MWE1YjBh
OTk1MGUuLjM3ZTRiYjZjNjQyOTFjNzU2Yzk2YzMxNDkzOTBmM2U2ZjU1ZWNiODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEu
Y3BwCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKQorRWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQp
CisgICAgOiBtX3BzZXVkb0lkKHBzZXVkb0lkKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKaW5kZXggMjhhMDRhMjU1
ZTExZWZhODIzNjNhNThiOTMwOWUzZjlmMzE0MjBiZC4uZDY5ZWU2OTg4ZmJlN2Q5YjQ3NmRhNTAx
NWM2OWI3MzQ4NDJhZGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Vs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9F
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaApAQCAtMzksOSArMzksMTEgQEAgY2xhc3MgRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpOworICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAgICAgfkVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YSgpOwogCisgICAgUHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVybiBtX3Bz
ZXVkb0lkOyB9CisKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrKiBrZXlmcmFtZUVmZmVjdFN0YWNr
KCkgeyByZXR1cm4gbV9rZXlmcmFtZUVmZmVjdFN0YWNrLmdldCgpOyB9CiAgICAgS2V5ZnJhbWVF
ZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogCkBAIC02MSw2ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBtX2FuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXA7CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9jb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHk7CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5OworICAgIFBzZXVkb0lkIG1fcHNldWRvSWQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcAppbmRleCBmNWZmODFhZTNjZDNhZTIzNzQ5NTE2ODgxNmEzMGJjZDJkOTVkZjcy
Li5mZDJiMDA0NjI0ODAyZDJjZDVmZTMyMjgxMjEyMzVjYWZlOGU0NGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTY2LDEwICs2NiwyNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlubGlu
ZSB2b2lkIGludmFsaWRhdGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgRWxlbWVu
dCogZWxlbWVudE9yUHNldWRvRWxlbWVudEZvclN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+JiBzdHlsZWFibGUpCit7CisgICAgaWYgKCFzdHlsZWFibGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChzdHlsZWFibGUtPnBzZXVkb0lkKSB7Cisg
ICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZToKKyAgICAgICAgcmV0dXJuICZzdHlsZWFibGUtPmVsZW1l
bnQ7CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgorICAgICAgICByZXR1cm4gc3R5bGVhYmxl
LT5lbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKyAgICBjYXNlIFBzZXVkb0lkOjpBZnRl
cjoKKyAgICAgICAgcmV0dXJuIHN0eWxlYWJsZS0+ZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQo
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlRWxlbWVudChjb25zdCBPcHRpb25hbDxjb25zdCBT
dHlsZWFibGU+JiBzdHlsZWFibGUpCiB7Ci0gICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIGVsZW1l
bnQtPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgaWYgKGF1dG8qIGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQgPSBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKHN0eWxlYWJs
ZSkpCisgICAgICAgIGVsZW1lbnRPclBzZXVkb0VsZW1lbnQtPmludmFsaWRhdGVTdHlsZUludGVy
bmFsKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIENTU1Byb3BlcnR5SURUb0lETEF0dHJp
YnV0ZU5hbWUoQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlkKQpAQCAtMTA1MSwxMyArMTA2OCwx
NCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCkK
IAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UoQW5pbWF0
aW9uVGltZWxpbmUqIHRpbWVsaW5lKQogewotICAgIGlmICghdGFyZ2V0RWxlbWVudE9yUHNldWRv
RWxlbWVudCgpKQorICAgIGF1dG8gdGFyZ2V0ID0gdGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0aW1lbGluZSkKLSAgICAgICAg
bV9pblRhcmdldEVmZmVjdFN0YWNrID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5l
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgbV9p
blRhcmdldEVmZmVjdFN0YWNrID0gdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCku
YWRkRWZmZWN0KCp0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGFyZ2V0RWxlbWVudE9yUHNl
dWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCp0
aGlzKTsKKyAgICAgICAgdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3Zl
RWZmZWN0KCp0aGlzKTsKICAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gZmFsc2U7CiAg
ICAgfQogfQpAQCAtMTA2OSwxNCArMTA4NywxNSBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojphbmlt
YXRpb25UaW1pbmdEaWRDaGFuZ2UoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVFZmZl
Y3RTdGFja01lbWJlcnNoaXAoKQogewotICAgIGlmICghdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxl
bWVudCgpKQorICAgIGF1dG8gdGFyZ2V0ID0gdGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYgKCF0
YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNSZWxldmFudCA9IGFuaW1hdGlv
bigpICYmIGFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCk7CiAgICAgaWYgKGlzUmVsZXZhbnQgJiYg
IW1faW5UYXJnZXRFZmZlY3RTdGFjaykKLSAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0g
dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gdGFy
Z2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKICAgICBl
bHNlIGlmICghaXNSZWxldmFudCAmJiBtX2luVGFyZ2V0RWZmZWN0U3RhY2spIHsKLSAgICAgICAg
dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkucmVtb3ZlRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCp0aGlzKTsKICAgICAgICAgbV9pblRhcmdldEVmZmVj
dFN0YWNrID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTA5NCw2ICsxMTEzLDEzIEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGlvbihXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICB1
cGRhdGVFZmZlY3RTdGFja01lbWJlcnNoaXAoKTsKIH0KIAorY29uc3QgT3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0U3R5bGVhYmxlKCkgY29uc3QKK3sKKyAg
ICBpZiAobV90YXJnZXQpCisgICAgICAgIHJldHVybiBTdHlsZWFibGUoKm1fdGFyZ2V0LCBtX3Bz
ZXVkb0lkKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiBib29sIEtleWZyYW1lRWZm
ZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGFyZ2V0
LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmU7CkBAIC0xMTE5LDkgKzExNDUs
OSBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3
VGFyZ2V0KQogICAgIGlmIChtX3RhcmdldCA9PSBuZXdUYXJnZXQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8qIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCA9IHRhcmdl
dEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBhdXRvJiBwcmV2aW91c1RhcmdldFN0eWxl
YWJsZSA9IHRhcmdldFN0eWxlYWJsZSgpOwogICAgIG1fdGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJn
ZXQpOwotICAgIGRpZENoYW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQocHJldmlvdXNU
YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KTsKKyAgICBkaWRDaGFuZ2VUYXJnZXRTdHlsZWFi
bGUocHJldmlvdXNUYXJnZXRTdHlsZWFibGUpOwogfQogCiBjb25zdCBTdHJpbmcgS2V5ZnJhbWVF
ZmZlY3Q6OnBzZXVkb0VsZW1lbnQoKSBjb25zdApAQCAtMTE2MSwyNiArMTE4NywyOCBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudChjb25zdCBTdHJp
bmcmIHBzZXVkb0VsZW1lbnQpCiAgICAgaWYgKHBzZXVkb0lkID09IG1fcHNldWRvSWQpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvKiBwcmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVk
b0VsZW1lbnQgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byYgcHJl
dmlvdXNUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRTdHlsZWFibGUoKTsKICAgICBtX3BzZXVkb0lk
ID0gcHNldWRvSWQ7Ci0gICAgZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChw
cmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQpOworICAgIGRpZENoYW5nZVRhcmdl
dFN0eWxlYWJsZShwcmV2aW91c1RhcmdldFN0eWxlYWJsZSk7CiAKICAgICByZXR1cm4geyB9Owog
fQogCi12b2lkIEtleWZyYW1lRWZmZWN0OjpkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50KEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCkKK3Zv
aWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldFN0eWxlYWJsZSkKIHsKLSAgICBhdXRv
KiBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRv
RWxlbWVudCgpOworICAgIGF1dG8gbmV3VGFyZ2V0U3R5bGVhYmxlID0gdGFyZ2V0U3R5bGVhYmxl
KCk7CiAKICAgICAvLyBXZSBtdXN0IGVuc3VyZSBhIFBzZXVkb0VsZW1lbnQgZXhpc3RzIGZvciB0
aGlzIG1fdGFyZ2V0IC8gbV9wc2V1ZG9JZCBwYWlyIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KKyAg
ICAvLyBGSVhNRTogSWRlYWxseSB0aGlzIHdvdWxkbid0IGJlIG5lY2Vzc2FyeS4KKyAgICBhdXRv
KiBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gZWxlbWVudE9yUHNldWRvRWxlbWVu
dEZvclN0eWxlYWJsZShuZXdUYXJnZXRTdHlsZWFibGUpOwogICAgIGlmICghbmV3VGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudCAmJiBtX3RhcmdldC5nZXQoKSAmJiBtX3BzZXVkb0lkICE9IFBz
ZXVkb0lkOjpOb25lKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCB0YXJnZXRpbmcgOjpi
ZWZvcmUgYW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGF0IHRoZSBtb21lbnQuCisgICAgICAg
IC8vIEZJWE1FOiBXZSBvbmx5IHN1cHBvcnQgdGFyZ2V0aW5nIDo6YmVmb3JlIGFuZCA6OmFmdGVy
IHBzZXVkby1lbGVtZW50cyBhdCB0aGUgbW9tZW50LgogICAgICAgICBpZiAobV9wc2V1ZG9JZCA9
PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IG1fcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQogICAg
ICAgICAgICAgbmV3VGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCA9ICZtX3RhcmdldC0+ZW5z
dXJlUHNldWRvRWxlbWVudChtX3BzZXVkb0lkKTsKICAgICB9CiAKICAgICBpZiAoYXV0byogZWZm
ZWN0QW5pbWF0aW9uID0gYW5pbWF0aW9uKCkpCi0gICAgICAgIGVmZmVjdEFuaW1hdGlvbi0+ZWZm
ZWN0VGFyZ2V0RGlkQ2hhbmdlKHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCwg
bmV3VGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCk7CisgICAgICAgIGVmZmVjdEFuaW1hdGlv
bi0+ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlLCBuZXdUYXJn
ZXRTdHlsZWFibGUpOwogCiAgICAgY2xlYXJCbGVuZGluZ0tleWZyYW1lcygpOwogCkBAIC0xMTkw
LDE0ICsxMjE4LDE1IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1l
bnRPclBzZXVkb0VsZW1lbnQoRWxlbWVudCogcHJldmlvdXNUYXJnCiAKICAgICAvLyBMaWtld2lz
ZSwgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHN0eWxlcyBvbiB0aGUgcHJldmlvdXMgdGFyZ2V0IHNv
IHRoYXQKICAgICAvLyBhbnkgYW5pbWF0ZWQgc3R5bGVzIGFyZSByZW1vdmVkIGltbWVkaWF0ZWx5
LgotICAgIGludmFsaWRhdGVFbGVtZW50KHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxl
bWVudCk7CisgICAgaW52YWxpZGF0ZUVsZW1lbnQocHJldmlvdXNUYXJnZXRTdHlsZWFibGUpOwog
Ci0gICAgaWYgKHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCkgewotICAgICAg
ICBwcmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQtPmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOworICAgIGlmIChwcmV2aW91c1RhcmdldFN0
eWxlYWJsZSkgeworICAgICAgICBwcmV2aW91c1RhcmdldFN0eWxlYWJsZS0+ZW5zdXJlS2V5ZnJh
bWVFZmZlY3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CiAgICAgICAgIG1faW5UYXJnZXRF
ZmZlY3RTdGFjayA9IGZhbHNlOwogICAgIH0KLSAgICBpZiAobmV3VGFyZ2V0RWxlbWVudE9yUHNl
dWRvRWxlbWVudCkKLSAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudC0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVj
dCgqdGhpcyk7CisKKyAgICBpZiAobmV3VGFyZ2V0U3R5bGVhYmxlKQorICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSBuZXdUYXJnZXRTdHlsZWFibGUtPmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOwogfQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBs
eShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkK
QEAgLTEyMzgsNyArMTI2Nyw3IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmlzUnVubmluZ0FjY2Vs
ZXJhdGVkQW5pbWF0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wCiB2b2lkIEtleWZy
YW1lRWZmZWN0OjppbnZhbGlkYXRlKCkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQW5pbWF0aW9u
cywgc3RyZWFtIDw8ICJLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSBvbiBlbGVtZW50ICIgPDwg
VmFsdWVPck51bGwodGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKSk7Ci0gICAgaW52YWxp
ZGF0ZUVsZW1lbnQodGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKTsKKyAgICBpbnZhbGlk
YXRlRWxlbWVudCh0YXJnZXRTdHlsZWFibGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6
OmNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSgpCkBAIC0xNjIzLDcgKzE2NTIsNyBA
QCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQog
CiAgICAgICAgIEFTU0VSVChtX3RhcmdldCk7CiAKLSAgICAgICAgYXV0byogbGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZSA9IG1fdGFyZ2V0LT5sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCk7Cisg
ICAgICAgIGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFzdFN0
eWxlQ2hhbmdlRXZlbnRTdHlsZShtX3BzZXVkb0lkKTsKICAgICAgICAgQVNTRVJUKGxhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUpOwogCiAgICAgICAgIEtleWZyYW1lTGlzdCBleHBsaWNpdEtleWZy
YW1lcyhtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IGNhY2Q2MzQ3Mjc1NjIzMGU2NmQyNDIw
ZGU0ZjEyM2Q5ZmQ1M2MwNzguLjZkMmZlMDIyNmExOGVhZmVlZjc4MjZkMjlmYjY4NzNhNTk1MDFi
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUu
aCIKICNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IApAQCAtMTA5LDYgKzExMCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcgcHNldWRvRWxl
bWVudCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBzZXVkb0VsZW1lbnQoY29u
c3QgU3RyaW5nJik7CiAKKyAgICBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHRhcmdl
dFN0eWxlYWJsZSgpIGNvbnN0OworCiAgICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+PiBnZXRCaW5kaW5nc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiBnZXRLZXlmcmFtZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmRpbmdzS2V5ZnJhbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKQEAgLTE3
OCw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBjb3B5UHJv
cGVydGllc0Zyb21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmKTsKLSAgICB2b2lkIGRpZENo
YW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgZGlk
Q2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzS2V5ZnJhbWVzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKICAgICB2b2lkIGFkZFBlbmRpbmdB
Y2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbik7CiAgICAgYm9vbCBjYW5CZUFjY2Vs
ZXJhdGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3RTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3RTdGFjay5jcHAKaW5kZXggN2MwYmUwZjFjMTY3ZGEwNzg3ODI5OGQzMzI2NTVkN2YwY2Zh
OWM4NS4uZDVmNDBlZDgxZTIzMGVkYWU2ZjZlYzU0NWE3MTMyZGEwOTFlNDRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBib29sIEtleWZyYW1lRWZmZWN0U3RhY2s6OmFkZEVmZmVjdChLZXlmcmFtZUVm
ZmVjdCYgZWZmZWN0KQogewogICAgIC8vIFRvIHF1YWxpZnkgZm9yIG1lbWJlcnNoaXAgaW4gYW4g
ZWZmZWN0IHN0YWNrLCBhbiBlZmZlY3QgbXVzdCBoYXZlIGEgdGFyZ2V0LCBhbiBhbmltYXRpb24s
IGEgdGltZWxpbmUgYW5kIGJlIHJlbGV2YW50LgogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUg
Y2FsbGVkIGluIFdlYkFuaW1hdGlvbiBhbmQgS2V5ZnJhbWVFZmZlY3QgYXMgdGhvc2UgcHJvcGVy
dGllcyBjaGFuZ2UuCi0gICAgaWYgKCFlZmZlY3QudGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVu
dCgpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+dGltZWxp
bmUoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCisgICAgaWYgKCFlZmZl
Y3QudGFyZ2V0U3R5bGVhYmxlKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKSB8fCAhZWZmZWN0LmFu
aW1hdGlvbigpLT50aW1lbGluZSgpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCktPmlzUmVsZXZhbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9lZmZlY3RzLmFwcGVuZChtYWtlV2Vh
a1B0cigmZWZmZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CmluZGV4IGFhZDRmMWNjY2I3YzFkODk0NTc2MTNhZDRmZmY1YjRmNmUzODExMjkuLmFkMzEzMTA4
YWYxNGJhYjA4YTk0Yjc1MDBlOTczYjZmNTkzYTZhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0yMDYsMjYgKzIwNiwyMSBAQCB2b2lkIFdlYkFuaW1h
dGlvbjo6c2V0RWZmZWN0SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdD4mJiBuZXdFZmZl
Y3QsIGJvb2wgZAogCiAgICAgYXV0byBvbGRFZmZlY3QgPSBzdGQ6OmV4Y2hhbmdlKG1fZWZmZWN0
LCBXVEZNb3ZlKG5ld0VmZmVjdCkpOwogCi0gICAgRWxlbWVudCogcHJldmlvdXNUYXJnZXQgPSBu
dWxscHRyOwotICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0KSkKLSAgICAgICAg
cHJldmlvdXNUYXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgp
KS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOwotCi0gICAgRWxlbWVudCogbmV3VGFy
Z2V0ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSkKLSAg
ICAgICAgbmV3VGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgp
KS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOworICAgIE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4gcHJldmlvdXNUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0KSA/
IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihvbGRFZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFi
bGUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG5ld1Rh
cmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVm
ZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IFdURjo6bnVsbG9wdDsK
IAogICAgIC8vIFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlvbiByZWxhdGlvbnNoaXBzIGFu
ZCB0aGUgdGltZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlmIChvbGRFZmZlY3QpIHsKICAg
ICAgICAgb2xkRWZmZWN0LT5zZXRBbmltYXRpb24obnVsbHB0cik7CiAgICAgICAgIGlmICghZG9O
b3RSZW1vdmVGcm9tVGltZWxpbmUgJiYgbV90aW1lbGluZSAmJiBwcmV2aW91c1RhcmdldCAmJiBw
cmV2aW91c1RhcmdldCAhPSBuZXdUYXJnZXQpCi0gICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmlt
YXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICpwcmV2aW91c1RhcmdldCk7CisgICAg
ICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZSgqdGhp
cywgKnByZXZpb3VzVGFyZ2V0KTsKICAgICAgICAgdXBkYXRlUmVsZXZhbmNlKCk7CiAgICAgfQog
CiAgICAgaWYgKG1fZWZmZWN0KSB7CiAgICAgICAgIG1fZWZmZWN0LT5zZXRBbmltYXRpb24odGhp
cyk7CiAgICAgICAgIGlmIChtX3RpbWVsaW5lICYmIG5ld1RhcmdldCAmJiBwcmV2aW91c1Rhcmdl
dCAhPSBuZXdUYXJnZXQpCi0gICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRl
ZFRvRWxlbWVudCgqdGhpcywgKm5ld1RhcmdldCk7CisgICAgICAgICAgICBtX3RpbWVsaW5lLT5h
bmltYXRpb25XYXNBZGRlZFRvU3R5bGVhYmxlKCp0aGlzLCAqbmV3VGFyZ2V0KTsKICAgICB9CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNldFdlYkFuaW1hdGlvbkVmZmVjdCgq
dGhpcyk7CkBAIC0yNDUsMTYgKzI0MCwxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxp
bmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgICAgICBtX2hvbGRU
aW1lID0gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVj
dCkpIHsKLSAgICAgICAgYXV0byoga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFtZUVm
ZmVjdD4obV9lZmZlY3QuZ2V0KCkpOwotICAgICAgICBhdXRvKiB0YXJnZXQgPSBrZXlmcmFtZUVm
ZmVjdC0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOwotICAgICAgICBpZiAodGFyZ2V0
KSB7CisgICAgICAgIGlmIChhdXRvIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Piht
X2VmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBJbiB0
aGUgY2FzZSBvZiBhIGRlY2xhcmF0aXZlIGFuaW1hdGlvbiwgd2UgZG9uJ3Qgd2FudCB0byByZW1v
dmUgdGhlIGFuaW1hdGlvbiBmcm9tIHRoZSByZWxldmFudCBtYXBzIGJlY2F1c2UKICAgICAgICAg
ICAgIC8vIHdoaWxlIHRoZSB0aW1lbGluZSB3YXMgc2V0IHZpYSB0aGUgQVBJLCB0aGUgZWxlbWVu
dCBzdGlsbCBoYXMgYSB0cmFuc2l0aW9uIG9yIGFuaW1hdGlvbiBzZXQgdXAgYW5kIHdlIG11c3QK
ICAgICAgICAgICAgIC8vIG5vdCBicmVhayB0aGUgcmVsYXRpb25zaGlwLgogICAgICAgICAgICAg
aWYgKG1fdGltZWxpbmUgJiYgIWlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSkKLSAgICAgICAgICAg
ICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICp0
YXJnZXQpOworICAgICAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc1JlbW92ZWRG
cm9tU3R5bGVhYmxlKCp0aGlzLCAqdGFyZ2V0KTsKICAgICAgICAgICAgIGlmICh0aW1lbGluZSkK
LSAgICAgICAgICAgICAgICB0aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRo
aXMsICp0YXJnZXQpOworICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRl
ZFRvU3R5bGVhYmxlKCp0aGlzLCAqdGFyZ2V0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjg1
LDE0ICsyNzgsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lSW50ZXJuYWwoUmVm
UHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgICAgICBtX2VmZmVjdC0+YW5p
bWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UobV90aW1lbGluZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2Vi
QW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFuZ2UoRWxlbWVudCogcHJldmlvdXNUYXJnZXQs
IEVsZW1lbnQqIG5ld1RhcmdldCkKK3ZvaWQgV2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRD
aGFuZ2UoY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXQsIGNv
bnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90
aW1lbGluZSkgewogICAgICAgICBpZiAocHJldmlvdXNUYXJnZXQpCi0gICAgICAgICAgICBtX3Rp
bWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICpwcmV2aW91c1Rh
cmdldCk7CisgICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0
eWxlYWJsZSgqdGhpcywgKnByZXZpb3VzVGFyZ2V0KTsKIAogICAgICAgICBpZiAobmV3VGFyZ2V0
KQotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRo
aXMsICpuZXdUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRk
ZWRUb1N0eWxlYWJsZSgqdGhpcywgKm5ld1RhcmdldCk7CiAKICAgICAgICAgLy8gVGhpcyBjb3Vs
ZCBoYXZlIGNoYW5nZWQgd2hldGhlciB3ZSBoYXZlIHJlcGxhY2VkIGFuaW1hdGlvbnMsIHNvIHdl
IG1heSBuZWVkIHRvIHNjaGVkdWxlIGFuIHVwZGF0ZS4KICAgICAgICAgbV90aW1lbGluZS0+YW5p
bWF0aW9uVGltaW5nRGlkQ2hhbmdlKCp0aGlzKTsKQEAgLTEzODIsOSArMTM3NSw5IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjpwZXJzaXN0KCkKICAgICBpZiAocHJldmlvdXNSZXBsYWNlU3RhdGUgPT0g
UmVwbGFjZVN0YXRlOjpSZW1vdmVkICYmIG1fdGltZWxpbmUpIHsKICAgICAgICAgaWYgKGlzPEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdCkpIHsKICAgICAgICAgICAgIGF1dG8mIGtleWZyYW1lRWZm
ZWN0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCk7Ci0gICAgICAgICAgICBh
dXRvJiB0YXJnZXQgPSAqa2V5ZnJhbWVFZmZlY3QudGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVu
dCgpOwotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQo
KnRoaXMsIHRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjaygpLmFkZEVmZmVjdChrZXlmcmFtZUVmZmVjdCk7CisgICAgICAgICAgICBhdXRvIHN0eWxl
YWJsZSA9IGtleWZyYW1lRWZmZWN0LnRhcmdldFN0eWxlYWJsZSgpOworICAgICAgICAgICAgbV90
aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKnN0eWxlYWJsZSk7
CisgICAgICAgICAgICBzdHlsZWFibGUtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRF
ZmZlY3Qoa2V5ZnJhbWVFZmZlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQyMyw3ICsx
NDE2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMoKQog
ICAgIGF1dG8gaW5saW5lU3R5bGUgPSBzdHlsZWRFbGVtZW50LmRvY3VtZW50KCkuY3JlYXRlQ1NT
U3R5bGVEZWNsYXJhdGlvbigpOwogICAgIGlubGluZVN0eWxlLT5zZXRDc3NUZXh0KHN0eWxlZEVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKTsKIAotICAgIGF1dG8mIGtleWZyYW1lU3RhY2sg
PSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICBhdXRvJiBr
ZXlmcmFtZVN0YWNrID0gc3R5bGVkRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBz
ZXVkb0lkOjpOb25lKTsKIAogICAgIC8vIDIuNSBGb3IgZWFjaCBwcm9wZXJ0eSwgcHJvcGVydHks
IGluIHRhcmdldGVkIHByb3BlcnRpZXM6CiAgICAgZm9yIChhdXRvIHByb3BlcnR5IDogZWZmZWN0
LT5hbmltYXRlZFByb3BlcnRpZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5oCmluZGV4IGJiMzlhMGFhMDNkZmUxMjgzMjMxZGIxNmI4MzJhYmM5MTNmNTAwMDkuLjY2
NjdiZmVlNjljMGU3YmIwMTg2ZDdiYjAyYzUyYThjNWQ4MGRhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMu
aCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CkBA
IC00NCw3ICs0NSw2IEBAIGNsYXNzIEFuaW1hdGlvbkVmZmVjdDsKIGNsYXNzIEFuaW1hdGlvbkV2
ZW50QmFzZTsKIGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lOwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBFbGVtZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CkBAIC0xMjIsNyAr
MTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWNrKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0VGljaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNvbHZlKFJlbmRlclN0eWxlJiwgT3B0aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpOwot
ICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0LCBF
bGVtZW50KiBuZXdUYXJnZXQpOworICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0
IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRTdGF0
ZURpZENoYW5nZSgpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCk7
CiAgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5jcHAKaW5kZXggZTE3MmQ4MmQ1NWNjY2Yx
MzA1ZDk5ZGJhMTVjNDZkZDE2MTNiNDNjNy4uZDBiZDdmYzU2MWJkZDU0YjA5ZGMyNmUyMzJkMDQ0
ZmViMmJlZWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvblV0aWxpdGllcy5jcHAKQEAgLTM4LDU0ICszOCw3MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBib29sIGNvbXBhcmVEZWNsYXJhdGl2ZUFuaW1hdGlvbk93bmluZ0VsZW1l
bnRQb3NpdGlvbnNJbkRvY3VtZW50VHJlZU9yZGVyKEVsZW1lbnQmIGEsIEVsZW1lbnQmIGIpCitz
dGF0aWMgYm9vbCBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9zaXRp
b25zSW5Eb2N1bWVudFRyZWVPcmRlcihjb25zdCBTdHlsZWFibGUmIGEsIGNvbnN0IFN0eWxlYWJs
ZSYgYikKIHsKICAgICAvLyBXZSBzaG91bGQgbm90IGV2ZXIgYmUgY2FsbGluZyB0aGlzIGZ1bmN0
aW9uIHdpdGggdHdvIEVsZW1lbnRzIHRoYXQgYXJlIHRoZSBzYW1lLiBJZiB0aGF0IHdlcmUgdGhl
IGNhc2UsCiAgICAgLy8gdGhlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiB0aGlzIGtpbmQgd291bGQg
eWllbGQgaW5jb25zaXN0ZW50IHJlc3VsdHMgd2hlbiBjb21wYXJpbmcgQSA9PSBCIGFuZCBCID09
IEEuCiAgICAgLy8gQXMgc3VjaCwgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGgg
c3RkOjpzdGFibGVfc29ydCgpLgotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oJmEgIT0gJmIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oYSAhPSBiKTsKIAogICAgIC8vIFdpdGggcmVnYXJkIHRvIHBzZXVkby1lbGVtZW50
cywgdGhlIHNvcnQgb3JkZXIgaXMgYXMgZm9sbG93czoKKyAgICAvLwogICAgIC8vICAgICAtIGVs
ZW1lbnQKKyAgICAvLyAgICAgLSA6Om1hcmtlcgogICAgIC8vICAgICAtIDo6YmVmb3JlCisgICAg
Ly8gICAgIC0gYW55IG90aGVyIHBzZXVkby1lbGVtZW50cyBub3QgbWVudGlvbmVkIHNwZWNpZmlj
YWxseSBpbiB0aGlzIGxpc3QsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIFVuaWNv
ZGUgY29kZXBvaW50cyB0aGF0IG1ha2UgdXAgZWFjaCBzZWxlY3RvcgogICAgIC8vICAgICAtIDo6
YWZ0ZXIKICAgICAvLyAgICAgLSBlbGVtZW50IGNoaWxkcmVuCi0KLSAgICBlbnVtIFNvcnRpbmdJ
bmRleCA6IHVpbnQ4X3QgeyBOb3RQc2V1ZG8sIEJlZm9yZSwgQWZ0ZXIgfTsKLQotICAgIGludCBh
U29ydGluZ0luZGV4ID0gTm90UHNldWRvOwotICAgIEVsZW1lbnQqIGFSZWZlcmVuY2VFbGVtZW50
ID0gJmE7Ci0gICAgaWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGEpKSB7Ci0gICAgICAgIGF1dG8mIGFQ
c2V1ZG8gPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihhKTsKLSAgICAgICAgYVNvcnRpbmdJbmRl
eCA9IGFQc2V1ZG8uaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBCZWZvcmUgOiBBZnRlcjsKLSAg
ICAgICAgYVJlZmVyZW5jZUVsZW1lbnQgPSBhUHNldWRvLmhvc3RFbGVtZW50KCk7Ci0gICAgICAg
IEFTU0VSVChhUmVmZXJlbmNlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaW50IGJTb3J0aW5nSW5k
ZXggPSBOb3RQc2V1ZG87Ci0gICAgRWxlbWVudCogYlJlZmVyZW5jZUVsZW1lbnQgPSAmYjsKLSAg
ICBpZiAoaXM8UHNldWRvRWxlbWVudD4oYikpIHsKLSAgICAgICAgYXV0byYgYlBzZXVkbyA9IGRv
d25jYXN0PFBzZXVkb0VsZW1lbnQ+KGIpOwotICAgICAgICBiU29ydGluZ0luZGV4ID0gYlBzZXVk
by5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSA/IEJlZm9yZSA6IEFmdGVyOwotICAgICAgICBiUmVm
ZXJlbmNlRWxlbWVudCA9IGJQc2V1ZG8uaG9zdEVsZW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKGJS
ZWZlcmVuY2VFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoYVJlZmVyZW5jZUVsZW1lbnQgPT0g
YlJlZmVyZW5jZUVsZW1lbnQpCisgICAgZW51bSBTb3J0aW5nSW5kZXggOiB1aW50OF90IHsgTm90
UHNldWRvLCBNYXJrZXIsIEJlZm9yZSwgRmlyc3RMZXR0ZXIsIEZpcnN0TGluZSwgSGlnaGxpZ2h0
LCBTY3JvbGxiYXIsIFNlbGVjdGlvbiwgQWZ0ZXIsIE90aGVyIH07CisgICAgYXV0byBzb3J0aW5n
SW5kZXggPSBbXShQc2V1ZG9JZCBwc2V1ZG9JZCkgLT4gU29ydGluZ0luZGV4IHsKKyAgICAgICAg
c3dpdGNoIChwc2V1ZG9JZCkgeworICAgICAgICBjYXNlIFBzZXVkb0lkOjpOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIE5vdFBzZXVkbzsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6TWFya2VyOgor
ICAgICAgICAgICAgcmV0dXJuIE1hcmtlcjsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3Jl
OgorICAgICAgICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6Rmly
c3RMZXR0ZXI6CisgICAgICAgICAgICByZXR1cm4gRmlyc3RMZXR0ZXI7CisgICAgICAgIGNhc2Ug
UHNldWRvSWQ6OkZpcnN0TGluZToKKyAgICAgICAgICAgIHJldHVybiBGaXJzdExpbmU7CisgICAg
ICAgIGNhc2UgUHNldWRvSWQ6OkhpZ2hsaWdodDoKKyAgICAgICAgICAgIHJldHVybiBIaWdobGln
aHQ7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OlNjcm9sbGJhcjoKKyAgICAgICAgICAgIHJldHVy
biBTY3JvbGxiYXI7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OlNlbGVjdGlvbjoKKyAgICAgICAg
ICAgIHJldHVybiBTZWxlY3Rpb247CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAg
ICAgICAgICAgcmV0dXJuIEFmdGVyOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gT3RoZXI7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgYXV0byYgYVJlZmVyZW5jZUVsZW1lbnQgPSBhLmVsZW1lbnQ7CisgICAg
aW50IGFTb3J0aW5nSW5kZXggPSBzb3J0aW5nSW5kZXgoYS5wc2V1ZG9JZCk7CisKKyAgICBhdXRv
JiBiUmVmZXJlbmNlRWxlbWVudCA9IGIuZWxlbWVudDsKKyAgICBpbnQgYlNvcnRpbmdJbmRleCA9
IHNvcnRpbmdJbmRleChiLnBzZXVkb0lkKTsKKworICAgIGlmICgmYVJlZmVyZW5jZUVsZW1lbnQg
PT0gJmJSZWZlcmVuY2VFbGVtZW50KSB7CisgICAgICAgIEFTU0VSVChhU29ydGluZ0luZGV4ICE9
IGJTb3J0aW5nSW5kZXgpOwogICAgICAgICByZXR1cm4gYVNvcnRpbmdJbmRleCA8IGJTb3J0aW5n
SW5kZXg7Ci0gICAgcmV0dXJuIGFSZWZlcmVuY2VFbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbigqYlJlZmVyZW5jZUVsZW1lbnQpICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9X
SU5HOworICAgIH0KKyAgICByZXR1cm4gYVJlZmVyZW5jZUVsZW1lbnQuY29tcGFyZURvY3VtZW50
UG9zaXRpb24oYlJlZmVyZW5jZUVsZW1lbnQpICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9M
TE9XSU5HOwogfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlQ1NTVHJhbnNpdGlvbnMoY29uc3QgQ1NT
VHJhbnNpdGlvbiYgYSwgY29uc3QgQ1NTVHJhbnNpdGlvbiYgYikKIHsKICAgICBBU1NFUlQoYS5v
d25pbmdFbGVtZW50KCkpOwogICAgIEFTU0VSVChiLm93bmluZ0VsZW1lbnQoKSk7Ci0gICAgYXV0
byYgYU93bmluZ0VsZW1lbnQgPSAqYS5vd25pbmdFbGVtZW50KCk7Ci0gICAgYXV0byYgYk93bmlu
Z0VsZW1lbnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CisgICAgYXV0byYgYU93bmluZ0VsZW1lbnQg
PSBhLm93bmluZ0VsZW1lbnQoKTsKKyAgICBhdXRvJiBiT3duaW5nRWxlbWVudCA9IGIub3duaW5n
RWxlbWVudCgpOwogCiAgICAgLy8gSWYgdGhlIG93bmluZyBlbGVtZW50IG9mIEEgYW5kIEIgZGlm
ZmVycywgc29ydCBBIGFuZCBCIGJ5IHRyZWUgb3JkZXIgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBv
d25pbmcgZWxlbWVudHMuCi0gICAgaWYgKCZhT3duaW5nRWxlbWVudCAhPSAmYk93bmluZ0VsZW1l
bnQpCi0gICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVt
ZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmluZ0Vs
ZW1lbnQpOworICAgIGlmICgqYU93bmluZ0VsZW1lbnQgIT0gKmJPd25pbmdFbGVtZW50KQorICAg
ICAgICByZXR1cm4gY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0
aW9uc0luRG9jdW1lbnRUcmVlT3JkZXIoKmFPd25pbmdFbGVtZW50LCAqYk93bmluZ0VsZW1lbnQp
OwogCiAgICAgLy8gT3RoZXJ3aXNlLCBpZiBBIGFuZCBCIGhhdmUgZGlmZmVyZW50IHRyYW5zaXRp
b24gZ2VuZXJhdGlvbiB2YWx1ZXMsIHNvcnQgYnkgdGhlaXIgY29ycmVzcG9uZGluZyB0cmFuc2l0
aW9uIGdlbmVyYXRpb24gaW4gYXNjZW5kaW5nIG9yZGVyLgogICAgIGlmIChhLmdlbmVyYXRpb25U
aW1lKCkgIT0gYi5nZW5lcmF0aW9uVGltZSgpKQpAQCAtMTAxLDE1ICsxMTgsMTUgQEAgc3RhdGlj
IGJvb2wgY29tcGFyZUNTU0FuaW1hdGlvbnMoY29uc3QgQ1NTQW5pbWF0aW9uJiBhLCBjb25zdCBD
U1NBbmltYXRpb24mIGIpCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbmlt
YXRpb25zLTIvI2FuaW1hdGlvbi1jb21wb3NpdGUtb3JkZXIKICAgICBBU1NFUlQoYS5vd25pbmdF
bGVtZW50KCkpOwogICAgIEFTU0VSVChiLm93bmluZ0VsZW1lbnQoKSk7Ci0gICAgYXV0byYgYU93
bmluZ0VsZW1lbnQgPSAqYS5vd25pbmdFbGVtZW50KCk7Ci0gICAgYXV0byYgYk93bmluZ0VsZW1l
bnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CisgICAgYXV0byYgYU93bmluZ0VsZW1lbnQgPSBhLm93
bmluZ0VsZW1lbnQoKTsKKyAgICBhdXRvJiBiT3duaW5nRWxlbWVudCA9IGIub3duaW5nRWxlbWVu
dCgpOwogCiAgICAgLy8gSWYgdGhlIG93bmluZyBlbGVtZW50IG9mIEEgYW5kIEIgZGlmZmVycywg
c29ydCBBIGFuZCBCIGJ5IHRyZWUgb3JkZXIgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBvd25pbmcg
ZWxlbWVudHMuCi0gICAgaWYgKCZhT3duaW5nRWxlbWVudCAhPSAmYk93bmluZ0VsZW1lbnQpCi0g
ICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9z
aXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmluZ0VsZW1lbnQp
OworICAgIGlmICgqYU93bmluZ0VsZW1lbnQgIT0gKmJPd25pbmdFbGVtZW50KQorICAgICAgICBy
ZXR1cm4gY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0lu
RG9jdW1lbnRUcmVlT3JkZXIoKmFPd25pbmdFbGVtZW50LCAqYk93bmluZ0VsZW1lbnQpOwogCiAg
ICAgLy8gU29ydCBBIGFuZCBCIGJhc2VkIG9uIHRoZWlyIHBvc2l0aW9uIGluIHRoZSBjb21wdXRl
ZCB2YWx1ZSBvZiB0aGUgYW5pbWF0aW9uLW5hbWUgcHJvcGVydHkgb2YgdGhlIChjb21tb24pIG93
bmluZyBlbGVtZW50LgotICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVu
dC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuY3NzQW5pbWF0aW9uTGlzdCgpOworICAgIGF1
dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVudC0+ZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjaygpLmNzc0FuaW1hdGlvbkxpc3QoKTsKICAgICBBU1NFUlQoY3NzQW5pbWF0aW9uTGlz
dCk7CiAgICAgQVNTRVJUKCFjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggYmYzODg0YjA0MzY3OTVhYTVmNjBhYjg0MzhkZmNhNzk3M2QwMWI4
Yy4uMjc1YjVkNzU4OTdhNGFhNGMxMTIwOGI3MDAyYzkwNTVmYjc1YmM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMjI4Myw3ICsyMjgzLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIK
IAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KGF1dG8qIHRpbWVsaW5lID0gZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAg
IHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCgqdGhpcyk7CisgICAgICAgIHRpbWVsaW5lLT5l
bGVtZW50V2FzUmVtb3ZlZCh7ICp0aGlzLCBwc2V1ZG9JZCgpIH0pOwogCiAjaWYgRU5BQkxFKFdI
RUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpKSB7CkBA
IC0zODAzLDQyICszODAzLDQyIEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSogRWxlbWVudDo6
aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYKIAotRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgpIGNvbnN0CitFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lk
IHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJh
cmVEYXRhKCktPmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5hbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkgOiBudWxscHRyOwogfQogCi1FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYg
RWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJhcmVEYXRh
KCk7CisgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKHBzZXVkb0lkKTsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVudDo6a2V5
ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CitLZXlmcmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50Ojpr
ZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIGlmIChh
dXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byog
YW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0
dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVF
ZmZlY3RTdGFjaygpCitLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50OjplbnN1cmVLZXlmcmFt
ZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIHJldHVybiBlbnN1cmVBbmlt
YXRpb25SYXJlRGF0YSgpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1cm4g
ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3Rh
Y2soKTsKIH0KIAotYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdAorYm9v
bCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7
Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgpKSB7Cisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBhbmltYXRpb25EYXRh
LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCiAgICAgICAgICAgICByZXR1cm4ga2V5ZnJhbWVFZmZl
Y3RTdGFjay0+aGFzRWZmZWN0cygpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9w
dGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1l
bnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTdHlsZSYg
dGFyZ2V0U3R5bGUpCiB7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gaW1wYWN0Owog
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkuc29ydGVkRWZmZWN0cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1
cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAg
ICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9uKCkpOwogICAgICAgICBlZmZlY3QtPmFuaW1hdGlv
bigpLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKIApAQCAtMzg1Miw3MiArMzg1Miw3MiBAQCBPcHRp
b25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyhSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKLWNvbnN0IEFuaW1h
dGlvbkNvbGxlY3Rpb24qIEVsZW1lbnQ6OmFuaW1hdGlvbnMoKSBjb25zdAorY29uc3QgQW5pbWF0
aW9uQ29sbGVjdGlvbiogRWxlbWVudDo6YW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkgY29u
c3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkp
CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9J
ZCkpCiAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uRGF0YS0+YW5pbWF0aW9ucygpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5zaXRpb25z
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK2Jvb2wgRWxlbWVudDo6
aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0
YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBh
bmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRh
LT5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Citib29sIEVsZW1lbnQ6
Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkIHBzZXVkb0lkLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRh
ID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFu
aW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEt
PnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucygp
IGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCBwc2V1
ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJh
cmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0
YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAhYW5pbWF0aW9uRGF0YS0+cnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpLmlzRW1wdHkoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFu
aW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMoKQorQW5pbWF0aW9u
Q29sbGVjdGlvbiYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zKCk7Cisg
ICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zKCk7
CiB9CiAKLUNTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAoKQorQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6YW5pbWF0aW9uc0Ny
ZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CisgICAgcmV0dXJu
IGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChD
U1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykKK3ZvaWQgRWxlbWVudDo6c2V0QW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NTQW5pbWF0aW9uQ29s
bGVjdGlvbiYmIGFuaW1hdGlvbnMpCiB7Ci0gICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5z
ZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOworICAgIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOwogfQogCi1Qcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYg
RWxlbWVudDo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK1Byb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJv
cGVydHkoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisgICAgcmV0dXJuIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJv
cGVydHkoKTsKIH0KIAotUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmVuc3VyZVJ1
bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKQorUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVs
ZW1lbnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQgcHNldWRv
SWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQogCi1jb25zdCBSZW5k
ZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpIGNvbnN0Citjb25z
dCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9J
ZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1h
dGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25S
YXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRhLT5sYXN0U3R5
bGVDaGFuZ2VFdmVudFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgRWxl
bWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCit2b2lkIEVsZW1lbnQ6OnNldExhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUoUHNldWRvSWQgcHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlv
blJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIGFuaW1hdGlvbkRhdGEtPnNldExhc3RTdHlsZUNoYW5n
ZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgIGVsc2UgaWYgKHN0eWxlKQotICAgICAg
ICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUo
V1RGTW92ZShzdHlsZSkpOworICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShwc2V1ZG9J
ZCkuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQpAQCAtNDU0Miw4ICs0NTQyLDggQEAgVmVjdG9yPFJl
ZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFu
aW1hdGlvbnNPcHRpb24KICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKLSAgICBpZiAoa2V5
ZnJhbWVFZmZlY3RTdGFjaygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWZmZWN0IDoga2V5ZnJh
bWVFZmZlY3RTdGFjaygpLT5zb3J0ZWRFZmZlY3RzKCkpIHsKKyAgICBpZiAoYXV0byogZWZmZWN0
U3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGVmZmVjdCA6IGVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAg
ICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgICAg
ICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IGY2NTE5MzdhNjAxYjdiYjUyNmU2YjFiMGVhMjNmZGVjNGJh
MzNhMTguLjYxMWUxMTA4ZDFjZWUwZjYzMWE3Nzg3MzQ2YWU5NWFiMjA4NGI2MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNDg2LDIzICs0ODYsMjQgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJI
YXNQZW5kaW5nUmVzb3VyY2VzKCkgeyBjbGVhck5vZGVGbGFnKE5vZGVGbGFnOjpIYXNQZW5kaW5n
UmVzb3VyY2VzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsg
fTsKIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25z
dDsKLSAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
Ci0gICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKLSAgICBPcHRpb25TZXQ8QW5p
bWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYpOwotCi0gICAg
Y29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0OwotICAgIGJvb2wg
aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsK
LSAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQp
IGNvbnN0OwotICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb25zKCkgY29uc3Q7Ci0gICAgQW5p
bWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucygpOwotICAgIFByb3BlcnR5VG9UcmFu
c2l0aW9uTWFwJiBlbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKLSAgICBQ
cm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSgpOwotICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJr
dXAoKTsKLSAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9u
Q29sbGVjdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJik7CisgICAgS2V5ZnJhbWVFZmZl
Y3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCkgY29uc3Q7CisgICAgS2V5ZnJh
bWVFZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCk7CisgICAg
Ym9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQpIGNvbnN0OworICAgIE9wdGlvblNldDxB
bmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkLCBSZW5kZXJTdHls
ZSYpOworCisgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucyhQc2V1ZG9J
ZCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBz
ZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29s
IGhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgQW5pbWF0aW9uQ29s
bGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCk7CisKKyAgICBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KFBzZXVkb0lk
KTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eShQc2V1ZG9JZCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwKFBzZXVkb0lkLCBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOworCisgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRvSWQpIGNv
bnN0OworICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk7IH0K
QEAgLTcxNiw4ICs3MTcsOCBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVu
dFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKIAotICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURh
dGEoKSBjb25zdDsKLSAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFuaW1hdGlv
blJhcmVEYXRhKCk7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBhbmltYXRpb25SYXJl
RGF0YShQc2V1ZG9JZCkgY29uc3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1
cmVBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAKICAgICB2aXJ0dWFsIGludCBkZWZhdWx0
VGFiSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcApp
bmRleCBlNzJmMzJjOTFmNzQ4YmExNmNmNTIzNTNiMzg1Y2NlYTllNTdlZjEyLi5lYzg1YTQ5OTlk
NWU4OWVkNDMzMjkxY2M1NWEzZmExZjQ3MWVjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmNwcApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7CiAgICAgTGF5b3V0
U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0
aW9uOwotICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4+IGFuaW1hdGlvblJhcmVEYXRhOworICAgIHZvaWQq
IHBvaW50ZXJzWzEwXTsKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQogICAgIHZv
aWQqIGludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCmluZGV4IDFhMzVlNWZjMjExNDRkYmViYmZkOTkxNGY4NGExMTgwNDZiYjEz
YzkuLjJjZDdlOWY3ODc1NzY3ZDNmNjcxYjllYmYzMTdiNGVmNTExZDY5ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIElu
dFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRM
YXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRp
b24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb24gPSBwb3Np
dGlvbjsgfQogCi0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBlbGVtZW50QW5pbWF0aW9u
UmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOyB9Ci0gICAgRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpOworICAgIEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQpIGNvbnN0
OworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEo
UHNldWRvSWQpOwogCiAgICAgRE9NVG9rZW5MaXN0KiBwYXJ0TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFydExpc3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhcnRMaXN0KHN0ZDo6dW5pcXVlX3B0
cjxET01Ub2tlbkxpc3Q+IHBhcnRMaXN0KSB7IG1fcGFydExpc3QgPSBXVEZNb3ZlKHBhcnRMaXN0
KTsgfQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fcmVzaXplT2Jz
ZXJ2ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpSZXNpemVPYnNlcnZl
cik7CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgIGlm
ICghbV9hbmltYXRpb25SYXJlRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHQuYWRk
KFVzZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50
IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBl
OjpQc2V1ZG9FbGVtZW50cyk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRhPiBtX3Jlc2l6ZU9ic2VydmVyRGF0YTsKICNl
bmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4gbV9h
bmltYXRpb25SYXJlRGF0YTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YT4+IG1fYW5pbWF0aW9uUmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRv
RWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50
PiBtX2FmdGVyUHNldWRvRWxlbWVudDsKQEAgLTIzNywxMSArMjM3LDIyIEBAIGlubGluZSB2b2lk
IEVsZW1lbnRSYXJlRGF0YTo6c2V0VW51c3VhbFRhYkluZGV4KGludCB0YWJJbmRleCkKICAgICBt
X3VudXN1YWxUYWJJbmRleCA9IHRhYkluZGV4OwogfQogCi1pbmxpbmUgRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK2lu
bGluZSBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnRSYXJlRGF0YTo6YW5pbWF0aW9u
UmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FuaW1hdGlv
blJhcmVEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblJhcmVEYXRhID0gbWFrZVVuaXF1ZTxFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE+KCk7Ci0gICAgcmV0dXJuICptX2FuaW1hdGlvblJhcmVEYXRh
LmdldCgpOworICAgIGZvciAoYXV0byYgYW5pbWF0aW9uUmFyZURhdGEgOiBtX2FuaW1hdGlvblJh
cmVEYXRhKSB7CisgICAgICAgIGlmIChhbmltYXRpb25SYXJlRGF0YS0+cHNldWRvSWQoKSA9PSBw
c2V1ZG9JZCkKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25SYXJlRGF0YS5nZXQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBFbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEmIEVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQg
cHNldWRvSWQpCit7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvblJhcmVEYXRhID0gdGhpcy0+YW5p
bWF0aW9uUmFyZURhdGEocHNldWRvSWQpKQorICAgICAgICByZXR1cm4gKmFuaW1hdGlvblJhcmVE
YXRhOworCisgICAgbV9hbmltYXRpb25SYXJlRGF0YS5hcHBlbmQobWFrZVVuaXF1ZTxFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE+KHBzZXVkb0lkKSk7CisgICAgcmV0dXJuICptX2FuaW1hdGlvblJh
cmVEYXRhLmxhc3QoKS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGRhZDE1NjZjYzA2YTNkMTRkNmJjYjdjNTA3
NmVjYzE4YjZjN2E3NjcuLjU4ZDI4NTM5MWY4YmNiODI1YTZjMmZmMWI5ZWExOWEyZmNhNmFjMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBQc2V1ZG9FbGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQoKS5wYWdlKCksICp0aGlz
KTsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdUaW1lbGlu
ZSgpKQotICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoKnRoaXMpOworICAgICAg
ICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoU3R5bGVhYmxlOjpmcm9tRWxlbWVudCgqdGhp
cykpOwogICAgIAogICAgIG1faG9zdEVsZW1lbnQgPSBudWxscHRyOwogfQpAQCAtMTAyLDggKzEw
MiwxMCBAQCBib29sIFBzZXVkb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogCiBib29sIFBzZXVkb0VsZW1lbnQ6OmlzVGFyZ2V0ZWRCeUtleWZyYW1l
RWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVudCgpCiB7Ci0gICAgaWYgKGF1dG8qIHN0YWNrID0g
a2V5ZnJhbWVFZmZlY3RTdGFjaygpKQotICAgICAgICByZXR1cm4gc3RhY2stPnJlcXVpcmVzUHNl
dWRvRWxlbWVudCgpOworICAgIGlmIChtX2hvc3RFbGVtZW50KSB7CisgICAgICAgIGlmIChhdXRv
KiBzdGFjayA9IG1faG9zdEVsZW1lbnQtPmtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQoKSkp
CisgICAgICAgICAgICByZXR1cm4gc3RhY2stPnJlcXVpcmVzUHNldWRvRWxlbWVudCgpOworICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGYxNjdjM2IyY2MyZTAyYzdhNmExNWI2
MDhjN2JhY2ZhNmZmNjA1OGIuLjIyODA4ZGE5ZjI5Zjk1MzIzMzM3Y2EzNzhhYjNiN2FmOGIzMDIx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtMjcwOCw3ICsyNzA4LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
aGFzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8q
IG5vZGUgPSBlbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lID0gbm9kZS0+
ZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAgICAgICByZXR1cm4gdGltZWxp
bmUtPnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKCpub2RlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aW1lbGluZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JSZW5kZXJl
ckFyZUFsbEFjY2VsZXJhdGVkKCp0aGlzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCBmMjM5YzRhNDQ4MGFlZTcyYTM5MmIzNmM1MjQ1YjdjZDQxZDYyZDM3Li40ZmM4YWQ2
OGM1OWQ4YzYyNTYzMzE4MzM2NWIwZTQzNTM2ZjE2NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk1OSw4ICsyOTU5
LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JB
bmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJp
Z2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1hdGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewot
ICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RT
dGFjaygpKSB7CisgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpKSB7CisgICAgICAgIGlmIChhdXRvKiBlZmZlY3RzU3RhY2sgPSBzdHlsZWFi
bGUtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkgewogICAgICAgICAgICAgcmV0dXJuIChlZmZlY3Rz
U3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KQog
ICAgICAgICAgICAgICAgICYmICh1c2VzQ29tcG9zaXRpbmcoKSB8fCAobV9jb21wb3NpdGluZ1Ry
aWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRlZE9wYWNpdHlUcmlnZ2VyKSkpCiAgICAgICAg
ICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENT
U1Byb3BlcnR5RmlsdGVyKQpAQCAtMzQ5NCw4ICszNDk0LDggQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JgogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVudDo6QW5p
bWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChhdXRvKiBl
bGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBlZmZlY3Rz
U3RhY2sgPSBlbGVtZW50LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgaWYgKGF1dG8gc3R5
bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyZXIpKSB7CisgICAgICAgIGlm
IChhdXRvKiBlZmZlY3RzU3RhY2sgPSBzdHlsZWFibGUtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkK
ICAgICAgICAgICAgIHJldHVybiBlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJv
cGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXgg
ZTc0YzQxMjU2MzIyODVkYzMwMDljZTQzNDA5MDAyOWIxYTdkYmZkNi4uMGMxMjU3NTg4MDI4Nzlj
MGUwNTE5MDMzMGM0ZDY2OGZkYTlmM2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBAIC05NDMsNiArOTQz
LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUHNldWRvSWQgcHNl
dWRvSWQpCiAgICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZTogdHMgPDwgIm5vbmUiOyBicmVhazsKICAg
ICBjYXNlIFBzZXVkb0lkOjpGaXJzdExpbmU6IHRzIDw8ICJmaXJzdC1saW5lIjsgYnJlYWs7CiAg
ICAgY2FzZSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXI6IHRzIDw8ICJmaXJzdC1sZXR0ZXIiOyBicmVh
azsKKyAgICBjYXNlIFBzZXVkb0lkOjpIaWdobGlnaHQ6IHRzIDw8ICJoaWdobGlnaHQiOyBicmVh
azsKICAgICBjYXNlIFBzZXVkb0lkOjpNYXJrZXI6IHRzIDw8ICJtYXJrZXIiOyBicmVhazsKICAg
ICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6IHRzIDw8ICJiZWZvcmUiOyBicmVhazsKICAgICBjYXNl
IFBzZXVkb0lkOjpBZnRlcjogdHMgPDwgImFmdGVyIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRl
eCA1NjRkZDVkNWIwMmMwYzE3Y2Y5YmQ3OWZiZWRjMTA3MjUzYmY3OTcxLi4wMjhkNjBhYWE1NWZi
YjYxZDE0YWUxZDU0ZjgyZWM2MzdiYzljZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTU1OCwxNCAr
NTU4LDE0IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnRlYXJEb3duUmVuZGVyZXJzKEVsZW1l
bnQmIHJvb3QsIFRlYXJkb3duVHlwZSB0ZWFyZG93blR5CiAgICAgICAgICAgICBjYXNlIFRlYXJk
b3duVHlwZTo6UmVuZGVyZXJVcGRhdGVDYW5jZWxpbmdBbmltYXRpb25zOgogICAgICAgICAgICAg
ICAgIGlmICh0aW1lbGluZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVu
ZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGlu
ZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBXZWJBbmlt
YXRpb246OlNpbGVudGx5OjpZZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUt
PmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShTdHlsZWFibGU6OmZyb21F
bGVtZW50KGVsZW1lbnQpLCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICh0ZWFyZG93blR5cGUgPT0gVGVhcmRvd25UeXBlOjpSZW5kZXJl
clVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1l
bGluZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBXZWJB
bmltYXRpb246OlNpbGVudGx5OjpObyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGlu
ZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yU3R5bGVhYmxlKFN0eWxlYWJsZTo6ZnJv
bUVsZW1lbnQoZWxlbWVudCksIFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Ok5vKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFRlYXJk
b3duVHlwZTo6UmVuZGVyZXJVcGRhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHRpbWVsaW5lKQot
ICAgICAgICAgICAgICAgICAgICB0aW1lbGluZS0+d2lsbENoYW5nZVJlbmRlcmVyRm9yRWxlbWVu
dChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPndpbGxDaGFuZ2VSZW5k
ZXJlckZvclN0eWxlYWJsZShTdHlsZWFibGU6OmZyb21FbGVtZW50KGVsZW1lbnQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDU5ZGE0MWVkYWFhZDk4ZWZkOTc3YjlkNDc2NzYx
Yjc2NTZiNjJiYjEuLmU0YWFhMzQ4YTJkMzUzZjQyNDNmZmYxZWY1MjlhMDNmNGE1NzAxNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxT
dHlsZSgpOwogICAgIH0KIAotICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50
VXBkYXRlKFdURk1vdmUobmV3U3R5bGUpLCBlbGVtZW50LCBwYXJlbnQoKS5jaGFuZ2UpOworICAg
IGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUobmV3U3R5
bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpOb25lIH0sIHBhcmVudCgpLmNoYW5nZSk7CiAgICAg
YXV0byBkZXNjZW5kYW50c1RvUmVzb2x2ZSA9IGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSh1
cGRhdGUuY2hhbmdlLCBlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSwgcGFyZW50KCkuZGVzY2VuZGFu
dHNUb1Jlc29sdmUpOwogCiAgICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KCkpIHsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEVsZW1lbnRVcAog
ICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkp
ICYmICFoYXNBbmltYXRpb25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGNy
ZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgZWxlbWVudC5l
bnN1cmVQc2V1ZG9FbGVtZW50KHBzZXVkb0lkKSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UpOworICAg
IHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSks
IHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UpOwogfQogCiBjb25z
dCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0CkBAIC0z
MDYsOSArMzA2LDIzIEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJv
eFN0eWxlRm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsCiAgICAgfQogfQogCi1FbGVt
ZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIEVsZW1lbnQmIGVsZW1lbnQsIENoYW5n
ZSBwYXJlbnRDaGFuZ2UpCitFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0
ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIGNv
bnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFuZ2UgcGFyZW50Q2hhbmdlKQogewotICAgIGF1
dG8qIG9sZFN0eWxlID0gZWxlbWVudC5yZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Cisg
ICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5lbGVtZW50OworCisgICAgLy8gRklYTUU6IElk
ZWFsbHkgd2UgY291bGQganVzdCBjYWxsIEVsZW1lbnQ6OnJlbmRlck9yRGlzcGxheUNvbnRlbnRz
U3R5bGUoKSB3aXRoIGEgUHNldWRvSWQKKyAgICAvLyBhbmQgZ2V0IHRoZSBzdHlsZSBmb3IgYW55
IFBzZXVkb0lkLCBub3QganVzdCBQc2V1ZG9JZDo6QmVmb3JlIG9yIFBzZXVkb0lkOjpBZnRlci4K
KyAgICBhdXRvKiBwc2V1ZG9FbGVtZW50ID0gW3N0eWxlYWJsZV0oKSAtPiBQc2V1ZG9FbGVtZW50
KiB7CisgICAgICAgIHN3aXRjaCAoc3R5bGVhYmxlLnBzZXVkb0lkKSB7CisgICAgICAgIGNhc2Ug
UHNldWRvSWQ6OkJlZm9yZToKKyAgICAgICAgICAgIHJldHVybiBzdHlsZWFibGUuZWxlbWVudC5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAg
ICAgICAgICAgcmV0dXJuIHN0eWxlYWJsZS5lbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9KCk7CisgICAgYXV0byogb2xkU3R5bGUgPSBwc2V1ZG9FbGVtZW50ID8gcHNldWRvRWxl
bWVudC0+cmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpIDogZWxlbWVudC5yZW5kZXJPckRp
c3BsYXlDb250ZW50c1N0eWxlKCk7CiAKICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
bmltYXRpb25JbXBhY3Q7CiAKQEAgLTMxNywxNiArMzMxLDE2IEBAIEVsZW1lbnRVcGRhdGUgVHJl
ZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0CiAgICAgLy8gaW4gY2FzZSBubyBXZWIgQW5pbWF0aW9ucyBoYXZlIGJlZW4gY3JlYXRl
ZCB0aHJvdWdoIHRoZSBKUyBBUEkuCiAgICAgaWYgKGVsZW1lbnQuZG9jdW1lbnQoKS5iYWNrRm9y
d2FyZENhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlICYmICFl
bGVtZW50LmRvY3VtZW50KCkucmVuZGVyVmlldygpLT5wcmludGluZygpKSB7CiAgICAgICAgIGlm
IChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPmhhc1RyYW5zaXRpb25zKCkgfHwgbmV3U3R5bGUtPmhh
c1RyYW5zaXRpb25zKCkpKQotICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChlbGVtZW50LCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7
CisgICAgICAgICAgICBtX2RvY3VtZW50LnRpbWVsaW5lKCkudXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JTdHlsZWFibGUoc3R5bGVhYmxlLCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7CiAKICAgICAgICAg
Ly8gVGhlIG9yZGVyIGluIHdoaWNoIENTUyBUcmFuc2l0aW9ucyBhbmQgQ1NTIEFuaW1hdGlvbnMg
YXJlIHVwZGF0ZWQgbWF0dGVycyBzaW5jZSBDU1MgVHJhbnNpdGlvbnMgZGVmaW5lIHRoZSBhZnRl
ci1jaGFuZ2Ugc3R5bGUKICAgICAgICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmlu
ZWQgaW4gdGhlIHByZXZpb3VzIHN0eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRl
IENTUyBBbmltYXRpb25zIGFmdGVyIENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRo
YXQgd2hlbiBDU1MgVHJhbnNpdGlvbnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRh
dGEgaXMgdGhlIHNhbWUgYXMgZHVyaW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQu
CiAgICAgICAgIGlmICgob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwg
bmV3U3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGhhY2sgYW5kIHBhc3MgdGhlIHBhcmVudCBzdHlsZSB2aWEgdXBkYXRlQ1NTQW5pbWF0
aW9uc0ZvckVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgaGFjayBh
bmQgcGFzcyB0aGUgcGFyZW50IHN0eWxlIHZpYSB1cGRhdGVDU1NBbmltYXRpb25zRm9yU3R5bGVh
YmxlLgogICAgICAgICAgICAgc2NvcGUoKS5yZXNvbHZlci5zZXRQYXJlbnRFbGVtZW50U3R5bGVG
b3JLZXlmcmFtZXMoJnBhcmVudCgpLnN0eWxlKTsKIAotICAgICAgICAgICAgbV9kb2N1bWVudC50
aW1lbGluZSgpLnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KGVsZW1lbnQsIG9sZFN0eWxl
LCAqbmV3U3R5bGUpOworICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNT
U0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBvbGRTdHlsZSwgKm5ld1N0eWxlKTsK
IAogICAgICAgICAgICAgc2NvcGUoKS5yZXNvbHZlci5zZXRQYXJlbnRFbGVtZW50U3R5bGVGb3JL
ZXlmcmFtZXMobnVsbHB0cik7CiAgICAgICAgIH0KQEAgLTMzNCwxNSArMzQ4LDE1IEBAIEVsZW1l
bnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0CiAKICAgICAvLyBOb3cgd2UgY2FuIHVwZGF0ZSBhbGwgV2ViIGFu
aW1hdGlvbnMsIHdoaWNoIHdpbGwgaW5jbHVkZSBDU1MgQW5pbWF0aW9ucyBhcyB3ZWxsCiAgICAg
Ly8gYXMgYW5pbWF0aW9ucyBjcmVhdGVkIHZpYSB0aGUgSlMgQVBJLgotICAgIGlmIChlbGVtZW50
Lmhhc0tleWZyYW1lRWZmZWN0cygpKSB7CisgICAgaWYgKHN0eWxlYWJsZS5oYXNLZXlmcmFtZUVm
ZmVjdHMoKSkgewogICAgICAgICAvLyBSZWNvcmQgdGhlIHN0eWxlIHByaW9yIHRvIGFwcGx5aW5n
IGFuaW1hdGlvbnMgZm9yIHRoaXMgc3R5bGUgY2hhbmdlIGV2ZW50LgotICAgICAgICBlbGVtZW50
LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdT
dHlsZSkpOworICAgICAgICBzdHlsZWFibGUuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxlKSk7CiAgICAgICAgIC8vIEFwcGx5IGFsbCBr
ZXlmcmFtZSBlZmZlY3RzIHRvIHRoZSBuZXcgc3R5bGUuCiAgICAgICAgIGF1dG8gYW5pbWF0ZWRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpOwotICAgICAgICBhbmltYXRp
b25JbXBhY3QgPSBlbGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZlY3RzKCphbmltYXRlZFN0eWxlKTsK
KyAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KCphbmltYXRlZFN0eWxlKTsKICAgICAgICAgbmV3U3R5bGUgPSBXVEZNb3ZlKGFuaW1hdGVkU3R5
bGUpOwogICAgIH0gZWxzZQotICAgICAgICBlbGVtZW50LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUobnVsbHB0cik7CisgICAgICAgIHN0eWxlYWJsZS5zZXRMYXN0U3R5bGVDaGFuZ2VFdmVu
dFN0eWxlKG51bGxwdHIpOwogCiAgICAgaWYgKGFuaW1hdGlvbkltcGFjdCkKICAgICAgICAgQWRq
dXN0ZXI6OmFkanVzdEFuaW1hdGVkU3R5bGUoKm5ld1N0eWxlLCBwYXJlbnRCb3hTdHlsZSgpLCBh
bmltYXRpb25JbXBhY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgK
aW5kZXggMWFmYzlhOGJiZjU5YTcyN2QzNTVjNjM3NTQ4NTMxN2JhNDVlYWE5Yy4uYzI5NzM0MmZl
ZTg1NDk0YTlhNmFiZDFjZTk4MjhkOTc3MjIzYzExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFu
Z2UuaCIKICNpbmNsdWRlICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxl
VXBkYXRlLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCkBAIC02MCw3ICs2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7CiAKLSAgICBFbGVt
ZW50VXBkYXRlIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBFbGVtZW50JiwgQ2hhbmdlKTsKKyAgICBFbGVtZW50VXBkYXRlIGNyZWF0ZUFu
aW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBT
dHlsZWFibGUmLCBDaGFuZ2UpOwogICAgIEVsZW1lbnRVcGRhdGUgcmVzb2x2ZVBzZXVkb1N0eWxl
KEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwogCiAgICAgc3RydWN0
IFNjb3BlIDogUmVmQ291bnRlZDxTY29wZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5hNjI0MjEwODI4Mzg0ODQzYTE0ZTlmZWVhZTFhMGFjZWMzYjNlMzYzCi0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTAsMCArMSwx
NTUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29u
c3RhbnRzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBLZXlmcmFtZUVmZmVjdFN0YWNrOworY2xhc3MgUmVuZGVyU3R5bGU7
CisKK3N0cnVjdCBTdHlsZWFibGUgeworICAgIEVsZW1lbnQmIGVsZW1lbnQ7CisgICAgUHNldWRv
SWQgcHNldWRvSWQ7CisKKyAgICBTdHlsZWFibGUoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQg
cHNldWRvSWQpCisgICAgICAgIDogZWxlbWVudChlbGVtZW50KQorICAgICAgICAsIHBzZXVkb0lk
KHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpczxQc2V1ZG9FbGVtZW50PihlbGVt
ZW50KSk7CisgICAgICAgIGlmIChwc2V1ZG9JZCA9PSBQc2V1ZG9JZDo6QmVmb3JlKQorICAgICAg
ICAgICAgQVNTRVJUKGVsZW1lbnQuYmVmb3JlUHNldWRvRWxlbWVudCgpKTsKKyAgICAgICAgaWYg
KHBzZXVkb0lkID09IFBzZXVkb0lkOjpBZnRlcikKKyAgICAgICAgICAgIEFTU0VSVChlbGVtZW50
LmFmdGVyUHNldWRvRWxlbWVudCgpKTsKKyAgICB9CisKKyAgICBzdGF0aWMgY29uc3QgU3R5bGVh
YmxlIGZyb21FbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQpCisgICAgeworICAgICAgICBpZiAoaXM8
UHNldWRvRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICByZXR1cm4gU3R5bGVhYmxlKCpk
b3duY2FzdDxQc2V1ZG9FbGVtZW50PihlbGVtZW50KS5ob3N0RWxlbWVudCgpLCBlbGVtZW50LnBz
ZXVkb0lkKCkpOworICAgICAgICByZXR1cm4gU3R5bGVhYmxlKGVsZW1lbnQsIGVsZW1lbnQucHNl
dWRvSWQoKSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxl
YWJsZT4gZnJvbVJlbmRlcmVyKGNvbnN0IFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQorICAgIHsK
KyAgICAgICAgaWYgKGF1dG8qIGVsZW1lbnQgPSByZW5kZXJlci5lbGVtZW50KCkpCisgICAgICAg
ICAgICByZXR1cm4gZnJvbUVsZW1lbnQoKmVsZW1lbnQpOworICAgICAgICByZXR1cm4gV1RGOjpu
dWxsb3B0OworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHlsZWFibGUmIG90
aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICgmZWxlbWVudCA9PSAmb3RoZXIuZWxl
bWVudCAmJiBwc2V1ZG9JZCA9PSBvdGhlci5wc2V1ZG9JZCk7CisgICAgfQorCisgICAgYm9vbCBv
cGVyYXRvciE9KGNvbnN0IFN0eWxlYWJsZSYgb3RoZXIpIGNvbnN0CisgICAgeworICAgICAgICBy
ZXR1cm4gISgqdGhpcyA9PSBvdGhlcik7CisgICAgfQorCisgICAgS2V5ZnJhbWVFZmZlY3RTdGFj
ayoga2V5ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxl
bWVudC5rZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBLZXlmcmFt
ZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQp
OworICAgIH0KKworICAgIGJvb2wgaGFzS2V5ZnJhbWVFZmZlY3RzKCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0tleWZyYW1lRWZmZWN0cyhwc2V1ZG9JZCk7CisgICAg
fQorCisgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gYXBwbHlLZXlmcmFtZUVmZmVjdHMo
UmVuZGVyU3R5bGUmIHN0eWxlKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQu
YXBwbHlLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQsIHN0eWxlKTsKKyAgICB9CisKKyAgICBjb25z
dCBBbmltYXRpb25Db2xsZWN0aW9uKiBhbmltYXRpb25zKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBlbGVtZW50LmFuaW1hdGlvbnMocHNldWRvSWQpOworICAgIH0KKworICAgIGJvb2wg
aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEIHByb3BlcnR5
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuaGFzQ29tcGxldGVkVHJhbnNp
dGlvbnNGb3JQcm9wZXJ0eShwc2V1ZG9JZCwgcHJvcGVydHkpOworICAgIH0KKworICAgIGJvb2wg
aGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkg
Y29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KHBzZXVkb0lkLCBwcm9wZXJ0eSk7CisgICAgfQorCisgICAgYm9vbCBoYXNS
dW5uaW5nVHJhbnNpdGlvbnMoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQu
aGFzUnVubmluZ1RyYW5zaXRpb25zKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBBbmltYXRpb25D
b2xsZWN0aW9uJiBlbnN1cmVBbmltYXRpb25zKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVy
biBlbGVtZW50LmVuc3VyZUFuaW1hdGlvbnMocHNldWRvSWQpOworICAgIH0KKworICAgIFByb3Bl
cnR5VG9UcmFuc2l0aW9uTWFwJiBlbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHko
KSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJh
bnNpdGlvbnNCeVByb3BlcnR5KHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpIGNvbnN0Cisg
ICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiBh
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBl
bGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAocHNldWRvSWQpOworICAgIH0KKworICAg
IHZvaWQgc2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChDU1NBbmltYXRpb25Db2xsZWN0aW9u
JiYgY29sbGVjdGlvbikgY29uc3QKKyAgICB7CisgICAgICAgIGVsZW1lbnQuc2V0QW5pbWF0aW9u
c0NyZWF0ZWRCeU1hcmt1cChwc2V1ZG9JZCwgV1RGTW92ZShjb2xsZWN0aW9uKSk7CisgICAgfQor
CisgICAgY29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoKSBjb25z
dAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQubGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHls
ZShwc2V1ZG9JZCk7CisgICAgfQorCisgICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0
eWxlKHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJiBzdHlsZSkgY29uc3QKKyAg
ICB7CisgICAgICAgIGVsZW1lbnQuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShwc2V1ZG9J
ZCwgV1RGTW92ZShzdHlsZSkpOworICAgIH0KKworfTsKKworfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hhbmdl
TG9nCmluZGV4IGU3ZWE5NTZiZTMzYmIyNmM5ODgzMzQ5YzhmZjA5MDM5MDBlZWU3ZTAuLjJhZDlk
ZjllNjNhYTcyYzMyYjA4ODg1MDg1YmI0NDY1YWM3Y2NiYzkgMTAwNjQ0Ci0tLSBhL0xheW91dFRl
c3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxOCBA
QAorMjAyMC0wOS0yNSAgQW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAg
ICAgICBSZWR1Y2UgdGhlIHJlbGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlv
biBjb2RlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0y
MTY5MzEKKyAgICAgICAgPHJkYXI6Ly9wcm9ibGVtLzY5NTExNjgyPgorCisgICAgICAgIFJldmll
d2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIFVwZGF0ZSBhIGNvdXBsZSBvZiB0ZXN0
cyB3aGljaCByZWxpZWQgb24gYW4gaW50ZXJuYWxzIG1ldGhvZCB0byBnZXQgYSBwc2V1ZG8gZWxl
bWVudCBhbmQgaW5zdGVhZCB1c2UKKyAgICAgICAgdGhlIFdlYiBBbmltYXRpb25zIEFQSSB0byBk
ZXRlcm1pbmUgd2hldGhlciBhIGdpdmVuIGFuaW1hdGlvbiB0YXJnZXRzIGEgcHNldWRvLWVsZW1l
bnQuIFRoaXMgaGFzIHRoZQorICAgICAgICBhZGRlZCBiZW5lZml0IG9mIGhhdmluZyB0aGUgc2Ft
ZSBjb2RlIHJ1biBpbiBhIHRlc3RpbmcgZW52aXJvbm1lbnQgYXMgaW4gYSByZWd1bGFyIGJyb3dz
ZXIuCisKKyAgICAgICAgKiBmYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0
aW9uLmh0bWw6CisgICAgICAgICogZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRy
YW5zaXRpb24uaHRtbDoKKwogMjAyMC0wOS0yNCAgRGllZ28gUGlubyBHYXJjaWEgIDxkcGlub0Bp
Z2FsaWEuY29tPgogCiAgICAgICAgIFtHTElCXSBVbnJldmlld2VkIHRlc3QgZ2FyZGVuaW5nLiBT
ZXZlcmFsIFdQVCdzIE1hdGhNTCB0ZXN0cyBhcmUgY3Jhc2hpbmcgaW4gR1RLL1dQRSBEZWJ1Zy4K
ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cgYi9MYXlvdXRU
ZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCmluZGV4IDVmYzFlZDFjNDRhMzlkYmE5ZDg5YzQ2
MWQ2YTFlNmRjNmQ4MmU1ZDkuLmZhZjRmOWEzYzFjNzIzNzY4Y2M4MDc2MmZkNDFjYzg0ZWU1MTZl
NTIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0IEBACisyMDIw
LTA5LTI1ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgorCisgICAgICAgIFJl
ZHVjZSB0aGUgcmVsaWFuY2Ugb24gUHNldWRvRWxlbWVudCBpbiB0aGUgYW5pbWF0aW9uIGNvZGUK
KyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxNjkzMQor
CisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZpc3RvLgorCisgICAgICAgIE1hcmsgYSBX
UFQgdGVzdCBwcm9ncmVzc2lvbi4KKworICAgICAgICAqIHdlYi1wbGF0Zm9ybS10ZXN0cy9jc3Mv
Y3NzLXRyYW5zaXRpb25zL25vbi1yZW5kZXJlZC1lbGVtZW50LTAwMi1leHBlY3RlZC50eHQ6CisK
IDIwMjAtMDktMjQgIEtlaXRoIE1pbGxlciAgPGtlaXRoX21pbGxlckBhcHBsZS5jb20+CiAKICAg
ICAgICAgQ1NTIGFuZ2xlIHVuaXQgY29udmVyc2lvbnMgc2hvdWxkIGNvbnNpc3RlbnRseSB1c2Ug
dGhlIHNhbWUgYXNzb2NpYXRpdml0eQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvZmFzdC9jc3Mt
Z2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sCmluZGV4IGUzMDg2
NWFhMzNjZmZiYTI5ZmI2MDMzOWMyNjAzNGYwY2NkYWY4YzcuLjJjYjQzZDlhNTIwOWNlNmUwM2Zh
NWRlNDU3NzQ1YjFkZTQxYzQ5MGIgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdl
bmVyYXRlZC1jb250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbAorKysgYi9MYXlvdXRUZXN0cy9m
YXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tYW5pbWF0aW9uLmh0bWwKQEAgLTc4LDE3
ICs3OCwxMCBAQCBmdW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCkKIC8vIEZJWE1FOiBU
aGlzIHRlc3Qgc2hvdWxkIGJlIG1vZGlmaWVkIHNvIHN1YnBpeGVsIGRvZXNuJ3QgY2F1c2Ugb2Zm
IGJ5IG9uZQogLy8gYmVsb3cgYW5kIGl0IG5vIGxvbmdlciBuZWVkcyBzaG91bGRCZUNsb3NlVG8u
CiAKLWZ1bmN0aW9uIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGFuaW1hdGlv
bk5hbWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0lkKQorZnVuY3Rpb24gcGF1c2VBbmltYXRpb25B
dFRpbWVPblBzZXVkb0VsZW1lbnQoYW5pbWF0aW9uTmFtZSwgdGltZSwgZWxlbWVudCwgcHNldWRv
RWxlbWVudCkKIHsKLSAgICBjb25zdCBwc2V1ZG9FbGVtZW50ID0gaW50ZXJuYWxzLnBzZXVkb0Vs
ZW1lbnQoZWxlbWVudCwgcHNldWRvSWQpOwotICAgIGlmICghcHNldWRvRWxlbWVudCkgewotICAg
ICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHRvIGZpbmQgcHNldWRvIGVsZW1lbnQiKTsKLSAgICAg
ICAgcmV0dXJuOwotICAgIH0KLQotICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBwc2V1ZG9FbGVtZW50
LmdldEFuaW1hdGlvbnMoKTsKLSAgICBmb3IgKGxldCBhbmltYXRpb24gb2YgYW5pbWF0aW9ucykg
ewotICAgICAgICBpZiAoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTQW5pbWF0aW9uICYmIGFuaW1h
dGlvbi5hbmltYXRpb25OYW1lID09IGFuaW1hdGlvbk5hbWUgJiYgYW5pbWF0aW9uLmVmZmVjdC5n
ZXRLZXlmcmFtZXMoKS5sZW5ndGgpIHsKKyAgICBmb3IgKGxldCBhbmltYXRpb24gb2YgZWxlbWVu
dC5nZXRBbmltYXRpb25zKHsgc3VidHJlZTogdHJ1ZSB9KSkgeworICAgICAgICBpZiAoYW5pbWF0
aW9uIGluc3RhbmNlb2YgQ1NTQW5pbWF0aW9uICYmIGFuaW1hdGlvbi5hbmltYXRpb25OYW1lID09
IGFuaW1hdGlvbk5hbWUgJiYgYW5pbWF0aW9uLmVmZmVjdC50YXJnZXQgPT0gZWxlbWVudCAmJiBh
bmltYXRpb24uZWZmZWN0LnBzZXVkb0VsZW1lbnQgPT0gcHNldWRvRWxlbWVudCkgewogICAgICAg
ICAgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gdGltZSAqIDEwMDA7CiAgICAgICAgICAgICBh
bmltYXRpb24ucGF1c2UoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwpAQCAtOTksMzUgKzky
LDIwIEBAIGZ1bmN0aW9uIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KGFuaW1h
dGlvbk5hbWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVkCiAKIGZ1bmN0aW9uIHRlc3RBbmltYXRpb24o
aWQpCiB7CisgICAgY29uc3QgcHNldWRvRWxlbWVudCA9IGA6OiR7aWR9YDsKICAgICB2YXIgZGl2
ID0gZG9jdW1lbnQuZ2V0RWxlbWVudEJ5SWQoaWQpOwogICAgIGRpdi5jbGFzc05hbWUgPSAnYW5p
bWF0ZSc7CiAgICAgd2luZG93LmRpdiA9IGRpdjsKICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdp
ZHRoJywgJzUyJyk7Ci0gICAgaWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgcGF1c2VB
bmltYXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ2V4YW1wbGUnLCAxLjAsIGRpdiwgaWQpOwot
ICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKLSAgICAg
ICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgIHNob3Vs
ZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwotICAgICAgICBwYXVzZUFuaW1hdGlv
bkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScsIDIuMCwgZGl2LCBpZCk7Ci0gICAgICAg
IHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMTIsIDEpOwotICAgICAgICBjb21w
dXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9z
ZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gVGhp
cyB3aWxsIGJlIGZsYWt5LCBidXQgaXQncyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBmb3Ig
dGVzdGluZwotICAgICAgICAvLyBpbiBhIGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCi0gICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2Owot
ICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0g
ICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwotICAgICAgICB9
LCAxMDAwKTsKLSAgICAgICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdp
bmRvdy5kaXYgPSBkaXY7Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRX
aWR0aCcsIDEyLCAxKTsKLSAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0
ZWRUb3AoaWQpOwotICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIw
MCwgMSk7Ci0gICAgICAgIH0sIDIwMDApOwotICAgIH0KKworICAgIHBhdXNlQW5pbWF0aW9uQXRU
aW1lT25Qc2V1ZG9FbGVtZW50KCdleGFtcGxlJywgMS4wLCBkaXYsIHBzZXVkb0VsZW1lbnQpOwor
ICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOworICAgIGNvbXB1
dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOworICAgIHNob3VsZEJlQ2xvc2VUbygn
Y29tcHV0ZWRUb3AnLCAxNzAsIDEpOworICAgIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9F
bGVtZW50KCdleGFtcGxlJywgMi4wLCBkaXYsIHBzZXVkb0VsZW1lbnQpOworICAgIHNob3VsZEJl
Q2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMTIsIDEpOworICAgIGNvbXB1dGVkVG9wID0gZ2V0
UHNldWRvQ29tcHV0ZWRUb3AoaWQpOworICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3An
LCAyMDAsIDEpOwogfQogCiBvbmxvYWQgPSBmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwg
Yi9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlv
bi5odG1sCmluZGV4IDlhNzQyZmU4YTE2ZmRmMzAwNDlmZjcxMTIzNjE2NDNlYmI5ZDJhODYuLmJj
NGExNmJjNGU0NzcyN2U5M2JlMmQyMWJlZDc0Yzg4NGM1MGJkN2QgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwK
KysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5z
aXRpb24uaHRtbApAQCAtNTYsNjMgKzU2LDQxIEBAIGZ1bmN0aW9uIGdldFBzZXVkb0NvbXB1dGVk
VG9wKGlkKQogY29uc3QgcHJlZml4ID0gIi13ZWJraXQtIjsKIGNvbnN0IHByb3BlcnRpZXNSZXF1
aXJpbmdQcmVmaXggPSBbIi13ZWJraXQtdGV4dC1zdHJva2UtY29sb3IiLCAiLXdlYmtpdC10ZXh0
LWZpbGwtY29sb3IiXTsKIAotZnVuY3Rpb24gcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9F
bGVtZW50KHRyYW5zaXRpb25Qcm9wZXJ0eSwgdGltZSwgZWxlbWVudCwgcHNldWRvSWQpCitmdW5j
dGlvbiBwYXVzZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQodHJhbnNpdGlvblByb3Bl
cnR5LCB0aW1lLCBlbGVtZW50LCBwc2V1ZG9FbGVtZW50KQogewotICAgIGNvbnN0IHBzZXVkb0Vs
ZW1lbnQgPSBpbnRlcm5hbHMucHNldWRvRWxlbWVudChlbGVtZW50LCBwc2V1ZG9JZCk7Ci0gICAg
aWYgKCFwc2V1ZG9FbGVtZW50KSB7Ci0gICAgICAgIGNvbnNvbGUubG9nKCJGYWlsZWQgdG8gZmlu
ZCBwc2V1ZG8gZWxlbWVudCIpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKHRy
YW5zaXRpb25Qcm9wZXJ0eS5zdGFydHNXaXRoKHByZWZpeCkgJiYgIXByb3BlcnRpZXNSZXF1aXJp
bmdQcmVmaXguaW5jbHVkZXModHJhbnNpdGlvblByb3BlcnR5KSkKICAgICAgICAgdHJhbnNpdGlv
blByb3BlcnR5ID0gdHJhbnNpdGlvblByb3BlcnR5LnN1YnN0cihwcmVmaXgubGVuZ3RoKTsKIAot
ICAgIC8vIE90aGVyd2lzZSwgdXNlIHRoZSBXZWIgQW5pbWF0aW9ucyBBUEkuCi0gICAgY29uc3Qg
YW5pbWF0aW9ucyA9IHBzZXVkb0VsZW1lbnQuZ2V0QW5pbWF0aW9ucygpOwotICAgIGZvciAobGV0
IGFuaW1hdGlvbiBvZiBhbmltYXRpb25zKSB7Ci0gICAgICAgIGlmIChhbmltYXRpb24gaW5zdGFu
Y2VvZiBDU1NUcmFuc2l0aW9uICYmIGFuaW1hdGlvbi50cmFuc2l0aW9uUHJvcGVydHkgPT0gdHJh
bnNpdGlvblByb3BlcnR5KSB7CisgICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGVsZW1lbnQuZ2V0
QW5pbWF0aW9ucyh7IHN1YnRyZWU6IHRydWUgfSkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbiBp
bnN0YW5jZW9mIENTU1RyYW5zaXRpb24gJiYgYW5pbWF0aW9uLnRyYW5zaXRpb25Qcm9wZXJ0eSA9
PSB0cmFuc2l0aW9uUHJvcGVydHkgJiYgYW5pbWF0aW9uLmVmZmVjdC50YXJnZXQgPT0gZWxlbWVu
dCAmJiBhbmltYXRpb24uZWZmZWN0LnBzZXVkb0VsZW1lbnQgPT0gcHNldWRvRWxlbWVudCkgewog
ICAgICAgICAgICAgYW5pbWF0aW9uLmN1cnJlbnRUaW1lID0gdGltZSAqIDEwMDA7CiAgICAgICAg
ICAgICBhbmltYXRpb24ucGF1c2UoKTsKICAgICAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICB9CiAgICAgfQorCiAgICAgY29uc29sZS5sb2coYEEgdHJhbnNpdGlvbiBmb3IgcHJvcGVydHkg
JHt0cmFuc2l0aW9uUHJvcGVydHl9IGNvdWxkIG5vdCBiZSBmb3VuZGApOwogICAgIHJldHVybiBm
YWxzZTsKIH0KIAogZnVuY3Rpb24gdGVzdFRyYW5zaXRpb24oaWQpCiB7CisgICAgY29uc3QgcHNl
dWRvRWxlbWVudCA9IGA6OiR7aWR9YDsKICAgICB2YXIgZGl2ID0gZG9jdW1lbnQuZ2V0RWxlbWVu
dEJ5SWQoaWQpOwogICAgIGRpdi5jbGFzc05hbWUgPSAndHJhbnNpdGlvbic7CiAgICAgd2luZG93
LmRpdiA9IGRpdjsKICAgICBzaG91bGRCZSgnZGl2Lm9mZnNldFdpZHRoJywgJzUyJyk7Ci0gICAg
aWYgKHdpbmRvdy5pbnRlcm5hbHMpIHsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Q
c2V1ZG9FbGVtZW50KCd3aWR0aCcsIDEuMCwgZGl2LCBpZCk7Ci0gICAgICAgIHNob3VsZEJlQ2xv
c2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOwotICAgICAgICBwYXVzZVRyYW5zaXRpb25B
dFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDEuMCwgZGl2LCBpZCk7Ci0gICAgICAgIGNvbXB1
dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICBzaG91bGRCZUNsb3Nl
VG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1l
T25Qc2V1ZG9FbGVtZW50KCd3aWR0aCcsIDIuMCwgZGl2LCBpZCk7Ci0gICAgICAgIHNob3VsZEJl
Q2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMTIsIDEpOwotICAgICAgICBwYXVzZVRyYW5zaXRp
b25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDIuMCwgZGl2LCBpZCk7Ci0gICAgICAgIGNv
bXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICBzaG91bGRCZUNs
b3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKLSAgICB9IGVsc2UgewotICAgICAgICAvLyBU
aGlzIHdpbGwgYmUgZmxha3ksIGJ1dCBpdCdzIGEgcmVhc29uYWJsZSBhcHByb3hpbWF0aW9uIGZv
ciB0ZXN0aW5nCi0gICAgICAgIC8vIGluIGEgYnJvd3NlciBpbnN0ZWFkIG9mIERSVC4KLSAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7
Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsK
LSAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAg
ICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7Ci0gICAgICAg
IH0sIDEwMDApOwotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0aW9uKCkgewotICAgICAgICAgICAg
d2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNl
dFdpZHRoJywgMTIsIDEpOwotICAgICAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21w
dXRlZFRvcChpZCk7Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywg
MjAwLCAxKTsKLSAgICAgICAgfSwgMjAwMCk7Ci0gICAgfQorCisgICAgcGF1c2VUcmFuc2l0aW9u
QXRUaW1lT25Qc2V1ZG9FbGVtZW50KCd3aWR0aCcsIDEuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsK
KyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKKyAgICBwYXVz
ZVRyYW5zaXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDEuMCwgZGl2LCBwc2V1ZG9F
bGVtZW50KTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAg
ICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKKyAgICBwYXVzZVRyYW5z
aXRpb25BdFRpbWVPblBzZXVkb0VsZW1lbnQoJ3dpZHRoJywgMi4wLCBkaXYsIHBzZXVkb0VsZW1l
bnQpOworICAgIHNob3VsZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMTIsIDEpOworICAg
IHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgndG9wJywgMi4wLCBkaXYsIHBz
ZXVkb0VsZW1lbnQpOworICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQp
OworICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwogfQogCiBvbmxv
YWQgPSBmdW5jdGlvbigpIHsKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVu
dC0wMDItZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9y
bS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL25vbi1yZW5kZXJlZC1lbGVtZW50LTAwMi1leHBl
Y3RlZC50eHQKaW5kZXggZDA5NmRlNGQ1NWQ5MDYzZGIwMWQ3ODk1NmY4ODIxZGFhOWViYTdkYS4u
M2I4N2E4ZGM4ZTBkMjI4OWU3NTU5ODAwYWM1OGQ0OGFmZWVhMTU2MSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRp
b25zL25vbi1yZW5kZXJlZC1lbGVtZW50LTAwMi1leHBlY3RlZC50eHQKKysrIGIvTGF5b3V0VGVz
dHMvaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLXRyYW5zaXRpb25zL25v
bi1yZW5kZXJlZC1lbGVtZW50LTAwMi1leHBlY3RlZC50eHQKQEAgLTEsNSArMSwzIEBACiAKLUhh
cm5lc3MgRXJyb3IgKFRJTUVPVVQpLCBtZXNzYWdlID0gbnVsbAotCi1USU1FT1VUIFRyYW5zaXRp
b25zIG9uIDo6YmVmb3JlLzo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGFyZSBjYW5jZWxlZCB3aGVu
IHRoZSBjb250ZW50IHByb3BlcnR5IGlzIGNsZWFyZWQgVGVzdCB0aW1lZCBvdXQKK1BBU1MgVHJh
bnNpdGlvbnMgb24gOjpiZWZvcmUvOjphZnRlciBwc2V1ZG8tZWxlbWVudHMgYXJlIGNhbmNlbGVk
IHdoZW4gdGhlIGNvbnRlbnQgcHJvcGVydHkgaXMgY2xlYXJlZCAKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>409687</attachid>
            <date>2020-09-25 06:42:39 -0700</date>
            <delta_ts>2020-09-25 08:22:14 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-216931-20200925154237.patch</filename>
            <type>text/plain</type>
            <size>122859</size>
            <attacher name="Antoine Quint">graouts</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjY3NTU5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjQ4ZDI1NDdhOTIwMDhl
Njg4MjEwODI3YjE5NTU0MmM5ZjkxZDI2YS4uZTczNmRjMjkwNTRlNTlhM2UyOGYwNjJlN2VlNTc2
ZTRjNzM3ZjA2ZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE2NiBAQAorMjAyMC0wOS0yNSAgQW50
b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJl
bGlhbmNlIG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0
dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKyAgICAgICAgPHJk
YXI6Ly9wcm9ibGVtLzY5NTExNjgyPgorCisgICAgICAgIFJldmlld2VkIGJ5IEFudHRpIEtvaXZp
c3RvLgorCisgICAgICAgIFdlIGhhdmUgc28gZmFyIHJlbGllZCBvbiBQc2V1ZG9FbGVtZW50IGFz
IGEgZm91bmRhdGlvbiBmb3Igc3VwcG9ydGluZyBhbmltYXRpb25zIG9mIHBzZXVkby1lbGVtZW50
cy4gVGhpcyBpcyBub3QgYQorICAgICAgICBncmVhdCBjaG9pY2Ugc2luY2UgUHNldWRvRWxlbWVu
dCBpcyBjdXJyZW50bHkgbGltaXRlZCB0byA6OmJlZm9yZSBhbmQgOjphZnRlciBwc2V1ZG8tZWxl
bWVudHMgb25seS4gVGhpcyBwYXRjaAorICAgICAgICByZWZhY3RvcnMgYW5pbWF0aW9uLXJlbGF0
ZWQgY29kZSB0byByZWx5IG9uIFBzZXVkb0VsZW1lbnQgYXMgbGl0dGxlIGFzIHBvc3NpYmxlIHdp
dGhvdXQgbWFraW5nIGNoYW5nZXMgb3V0c2lkZQorICAgICAgICBvZiB0aGUgYW5pbWF0aW9uIGNv
ZGUsIGFzIGEgZmlyc3Qgc3RlcCB0b3dhcmRzIHN1cHBvcnRpbmcgYW5pbWF0aW9uIG9mIG1vcmUg
cHNldWRvLWVsZW1lbnRzLgorCisgICAgICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBz
dHJ1Y3QgU3R5bGVhYmxlIHdoaWNoIGNvbWJpbmVzIGFuIEVsZW1lbnQmIGFuZCBQc2V1ZG9JZC4g
V2UgdXNlIHRoaXMgc3RydWN0IGluc3RlYWQKKyAgICAgICAgb2YgRWxlbWVudCBvYmplY3RzIHdo
ZXJldmVyIG5lY2Vzc2FyeSBpbiB0aGUgYW5pbWF0aW9uIGNvZGUuIE9uIHRvcCBvZiB0aGF0LCB3
ZSBhZGQgYSBQc2V1ZG9JZCBwYXJhbWV0ZXIgdG8gYWxsIHRoZQorICAgICAgICBFbGVtZW50IG1l
dGhvZHMgd3JhcHBpbmcgYWNjZXNzIHRvIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSBhbmQgdXNl
IGEgSGFzaE1hcDxQc2V1ZG9JZCwgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJl
RGF0YT4+CisgICAgICAgIHRvIGJlIGFibGUgdG8gc2VwYXJhdGUgYW5pbWF0aW9uIGRhdGEgcGVy
IHBzZXVkby1lbGVtZW50LgorCisgICAgICAgICogSGVhZGVycy5jbWFrZToKKyAgICAgICAgKiBX
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgICogYW5pbWF0aW9uL0Fu
aW1hdGlvblRpbWVsaW5lLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVBbmltYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6
OmFuaW1hdGlvbldhc0FkZGVkVG9TdHlsZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tU3R5bGVhYmxlKToKKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZy
b21MaXN0c0Zvck93bmluZ0VsZW1lbnQpOgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGlt
ZWxpbmU6OnJlbW92ZUNTU0FuaW1hdGlvbkNyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJD
b3JlOjpBbmltYXRpb25UaW1lbGluZTo6ZWxlbWVudFdhc1JlbW92ZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OndpbGxDaGFuZ2VSZW5kZXJlckZvclN0eWxlYWJsZSk6
CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6Y2FuY2VsRGVjbGFyYXRpdmVB
bmltYXRpb25zRm9yU3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OnNob3VsZENvbnNpZGVy
QW5pbWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVD
U1NBbmltYXRpb25zRm9yU3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNvcmU6OmtleWZyYW1lRWZm
ZWN0Rm9yRWxlbWVudEFuZFByb3BlcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRp
bWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZUFuZFByb3BlcnR5KToKKyAg
ICAgICAgKFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
clN0eWxlYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6YW5pbWF0
aW9uV2FzQWRkZWRUb0VsZW1lbnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6d2lsbENoYW5nZVJlbmRlcmVyRm9y
RWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6
Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudCk6IERlbGV0ZWQuCisgICAgICAg
IChXZWJDb3JlOjpBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTQW5pbWF0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6QW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KTogRGVsZXRlZC4KKyAgICAgICAg
KFdlYkNvcmU6OkFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oOgor
ICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTQW5pbWF0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTQW5pbWF0aW9uOjpD
U1NBbmltYXRpb24pOgorICAgICAgICAqIGFuaW1hdGlvbi9DU1NBbmltYXRpb24uaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vQ1NTVHJhbnNpdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpDU1NU
cmFuc2l0aW9uOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTVHJhbnNpdGlvbjo6Q1NT
VHJhbnNpdGlvbik6CisgICAgICAgICogYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaDoKKyAgICAg
ICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RGVjbGFyYXRpdmVBbmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkRlY2xhcmF0aXZlQW5pbWF0aW9uOjpkaXNhc3NvY2lhdGVGcm9tT3du
aW5nRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6aW5p
dGlhbGl6ZSk6CisgICAgICAgIChXZWJDb3JlOjpEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1
ZURPTUV2ZW50KToKKyAgICAgICAgKiBhbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaDoK
KyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6dHJhbnNpdGlvbkRpZENvbXBsZXRlKToKKyAgICAg
ICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxpbmU6OmNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbiBj
b25zdCk6CisgICAgICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBbmlt
YXRpb25PblJlbmRlcmVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRvY3VtZW50VGltZWxp
bmU6OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlciBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpEb2N1bWVudFRpbWVsaW5lOjphbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIp
OgorICAgICAgICAoV2ViQ29yZTo6RG9jdW1lbnRUaW1lbGluZTo6cnVubmluZ0FuaW1hdGlvbnNG
b3JSZW5kZXJlckFyZUFsbEFjY2VsZXJhdGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkRv
Y3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJh
dGVkIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBhbmltYXRpb24vRG9jdW1lbnRUaW1lbGlu
ZS5oOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6RWxlbWVudEFuaW1hdGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEpOgorICAgICAgICAqIGFuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURh
dGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRBbmltYXRpb25SYXJlRGF0YTo6cHNldWRv
SWQgY29uc3QpOgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjplbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKToKKyAgICAg
ICAgKFdlYkNvcmU6OmludmFsaWRhdGVFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphbmltYXRpb25UaW1lbGluZURpZENoYW5nZSk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6dXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKToKKyAgICAgICAg
KFdlYkNvcmU6OktleWZyYW1lRWZmZWN0Ojp0YXJnZXRTdHlsZWFibGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6S2V5ZnJhbWVFZmZlY3Q6OnNldFRhcmdldCk6CisgICAgICAgIChXZWJDb3Jl
OjpLZXlmcmFtZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudCk6CisgICAgICAgIChXZWJDb3JlOjpL
ZXlmcmFtZUVmZmVjdDo6ZGlkQ2hhbmdlVGFyZ2V0U3R5bGVhYmxlKToKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0OjppbnZhbGlkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OktleWZy
YW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMpOgorICAgICAgICAoV2Vi
Q29yZTo6S2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1l
bnQpOiBEZWxldGVkLgorICAgICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oOgorICAg
ICAgICAqIGFuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OktleWZyYW1lRWZmZWN0U3RhY2s6OmFkZEVmZmVjdCk6CisgICAgICAgICogYW5pbWF0aW9u
L1dlYkFuaW1hdGlvbi5jcHA6CisgICAgICAgIChXZWJDb3JlOjpXZWJBbmltYXRpb246OnNldEVm
ZmVjdEludGVybmFsKToKKyAgICAgICAgKFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6c2V0VGltZWxp
bmUpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFu
Z2UpOgorICAgICAgICAoV2ViQ29yZTo6V2ViQW5pbWF0aW9uOjpwZXJzaXN0KToKKyAgICAgICAg
KFdlYkNvcmU6OldlYkFuaW1hdGlvbjo6Y29tbWl0U3R5bGVzKToKKyAgICAgICAgKiBhbmltYXRp
b24vV2ViQW5pbWF0aW9uLmg6CisgICAgICAgICogYW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxp
dGllcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25P
d25pbmdFbGVtZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcik6CisgICAgICAgIChXZWJD
b3JlOjpjb21wYXJlQ1NTVHJhbnNpdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6Y29tcGFyZUNT
U0FuaW1hdGlvbnMpOgorICAgICAgICAqIGRvbS9FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkVsZW1lbnQ6OnJlbW92ZWRGcm9tQW5jZXN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6YW5pbWF0aW9uUmFyZURhdGEgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6
a2V5ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50Ojpl
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhh
c0tleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphcHBs
eUtleWZyYW1lRWZmZWN0cyk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjphbmltYXRpb25z
IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5zaXRp
b25zRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6aGFzUnVu
bmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudDo6aGFzUnVubmluZ1RyYW5zaXRpb25zIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkVs
ZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudDo6YW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50OjpzZXRB
bmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnQ6OmVu
c3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpF
bGVtZW50OjplbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkVsZW1lbnQ6Omxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgY29uc3QpOgorICAgICAg
ICAoV2ViQ29yZTo6RWxlbWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk6CisgICAg
ICAgIChXZWJDb3JlOjpFbGVtZW50OjpnZXRBbmltYXRpb25zKToKKyAgICAgICAgKiBkb20vRWxl
bWVudC5oOgorICAgICAgICAqIGRvbS9FbGVtZW50UmFyZURhdGEuY3BwOgorICAgICAgICAqIGRv
bS9FbGVtZW50UmFyZURhdGEuaDoKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJlRGF0YTo6
dXNlVHlwZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudFJhcmVEYXRhOjphbmlt
YXRpb25SYXJlRGF0YSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpFbGVtZW50UmFyZURhdGE6
OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKToKKyAgICAgICAgKFdlYkNvcmU6OkVsZW1lbnRSYXJl
RGF0YTo6ZWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKTogRGVsZXRlZC4KKyAgICAgICAgKiBkb20v
UHNldWRvRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQc2V1ZG9FbGVtZW50OjpjbGVh
ckhvc3RFbGVtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlBzZXVkb0VsZW1lbnQ6OmlzVGFyZ2V0
ZWRCeUtleWZyYW1lRWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVudCk6CisgICAgICAgICogcmVu
ZGVyaW5nL1JlbmRlckJveE1vZGVsT2JqZWN0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
ckJveE1vZGVsT2JqZWN0OjpoYXNSdW5uaW5nQWNjZWxlcmF0ZWRBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlJlbmRlckxheWVyQ29tcG9zaXRvcjo6cmVxdWlyZXNDb21wb3NpdGluZ0ZvckFu
aW1hdGlvbiBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJMYXllckNvbXBvc2l0b3I6
OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbiBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Om9wZXJh
dG9yPDwpOgorICAgICAgICAqIHJlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJUcmVlVXBkYXRlcjo6dGVhckRvd25SZW5kZXJl
cnMpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KToKKyAgICAgICAgKFdl
YkNvcmU6OlN0eWxlOjpUcmVlUmVzb2x2ZXI6OnJlc29sdmVQc2V1ZG9TdHlsZSk6CisgICAgICAg
IChXZWJDb3JlOjpTdHlsZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRh
dGUpOgorICAgICAgICAqIHN0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmg6CisgICAgICAgICogc3R5
bGUvU3R5bGVhYmxlLmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpTdHls
ZWFibGUpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpmcm9tRWxlbWVudCk6CisgICAg
ICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmZyb21SZW5kZXJlcik6CisgICAgICAgIChXZWJDb3Jl
OjpTdHlsZWFibGU6Om9wZXJhdG9yPT0gY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpvcGVyYXRvciE9IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6a2V5
ZnJhbWVFZmZlY3RTdGFjayBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OmVu
c3VyZUtleWZyYW1lRWZmZWN0U3RhY2sgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjpoYXNLZXlmcmFtZUVmZmVjdHMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVh
YmxlOjphcHBseUtleWZyYW1lRWZmZWN0cyBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWFibGU6OmFuaW1hdGlvbnMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpo
YXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNv
cmU6OlN0eWxlYWJsZTo6aGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkgY29uc3QpOgor
ICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjpoYXNSdW5uaW5nVHJhbnNpdGlvbnMgY29uc3Qp
OgorICAgICAgICAoV2ViQ29yZTo6U3R5bGVhYmxlOjplbnN1cmVBbmltYXRpb25zIGNvbnN0KToK
KyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNC
eVByb3BlcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6ZW5zdXJlUnVu
bmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpTdHls
ZWFibGU6OmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6U3R5bGVhYmxlOjpzZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OlN0eWxlYWJsZTo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpTdHlsZWFibGU6OnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5
bGUgY29uc3QpOgorCiAyMDIwLTA5LTI0ICBaYWxhbiBCdWp0YXMgIDx6YWxhbkBhcHBsZS5jb20+
CiAKICAgICAgICAgW0xGQ11bSUZDXSBBZGQgaGVscGVyIGZ1bmN0aW9ucyB0byBjcmVhdGUgTGlu
ZUJveDo6SW5saW5lQm94IG9iamVjdHMgZm9yIGlubGluZSBsZXZlbCBib3hlcy4KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UgYi9Tb3VyY2UvV2ViQ29yZS9IZWFkZXJz
LmNtYWtlCmluZGV4IDQ2NTliZGUyMjhhMGJmMDYzYmM5MGNjYzA2MmU3MTQ0MGZiZjNjNmQuLjAx
NGM1ZWYxZDFkMTE5ZGFhYjc3ODQwZjA3YmJjYTY4OTlhYWM0OTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL0hlYWRlcnMuY21ha2UKKysrIGIvU291cmNlL1dlYkNvcmUvSGVhZGVycy5jbWFr
ZQpAQCAtMTQ5OSw2ICsxNDk5LDcgQEAgc2V0KFdlYkNvcmVfUFJJVkFURV9GUkFNRVdPUktfSEVB
REVSUwogICAgIHN0eWxlL1N0eWxlU2NvcGUuaAogICAgIHN0eWxlL1N0eWxlVXBkYXRlLmgKICAg
ICBzdHlsZS9TdHlsZVZhbGlkaXR5LmgKKyAgICBzdHlsZS9TdHlsZWFibGUuaAogCiAgICAgc3Zn
L1NWR0xlbmd0aENvbnRleHQuaAogICAgIHN2Zy9TVkdMZW5ndGhWYWx1ZS5oCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2ogYi9Tb3Vy
Y2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggMGUyNjM5
NmNkODYwMWYwYTNkOGFmYTc1NWQ3ZTAzZmJlNTJkOTY0NC4uZjhjNzFmYTViYTM0OGQ1Mjk3YTMw
YzMzZjJlYTRhOTM2NzhkM2MwYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54
Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCisrKyBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNv
ZGVwcm9qL3Byb2plY3QucGJ4cHJvagpAQCAtMjEyNyw2ICsyMTI3LDcgQEAKIAkJNzEzMTcxMzQx
RkJFNzhEQjAwRjc1OERFIC8qIENTU1Byb3BlcnR5QmxlbmRpbmdDbGllbnQuaCBpbiBIZWFkZXJz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxMzE3MTMyMUZCRTc4QzUwMEY3
NThERSAvKiBDU1NQcm9wZXJ0eUJsZW5kaW5nQ2xpZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJ
QlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJNzEzMjQ0NTEyMDEwOURBNTAwQUU3RkIyIC8q
IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gNzEzMjQ0NEYyMDEwOUQ5QjAwQUU3RkIyIC8qIFdlYkFuaW1hdGlvblV0
aWxpdGllcy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxMzQ0OTZFMTQ2OTQxQjMwMDcyMDMxMiAvKiBTVkdMZW5ndGhDb250ZXh0LmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTM0NDk2QzE0Njk0MUIz
MDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVT
ID0gKFByaXZhdGUsICk7IH07IH07CisJCTcxMzkyMkJFMjUxOEFCNzcwMDVEQjNDMiAvKiBTdHls
ZWFibGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcx
MzkyMkJDMjUxOEFCNzAwMDVEQjNDMiAvKiBTdHlsZWFibGUuaCAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQk3MTNGMUQ1QTIzREYxRDhEMDAzRjVFRkEg
LyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IDcxM0YxRDU5MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmltYXRpb25z
T3B0aW9ucy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07
CiAJCTcxM0YxRDVEMjNERjI1ODIwMDNGNUVGQSAvKiBKU0dldEFuaW1hdGlvbnNPcHRpb25zLmgg
aW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSA3MTNGMUQ1QjIz
REYyNTYwMDAzRjVFRkEgLyogSlNHZXRBbmltYXRpb25zT3B0aW9ucy5oICovOyB9OwogCQk3MTQ5
NUREQjIwMkIwNkYxMDBBREZEMzQgLyogSlNFZmZlY3RUaW1pbmcuaCBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IDcxNDk1RERBMjAyQjA2REUwMEFERkQzNCAv
KiBKU0VmZmVjdFRpbWluZy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CkBAIC05NzU1LDYgKzk3NTYsNyBAQAogCQk3MTMyNDQ0RjIwMTA5RDlCMDBBRTdG
QjIgLyogV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsg
cGF0aCA9IFdlYkFuaW1hdGlvblV0aWxpdGllcy5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MTM0NDk2QjE0Njk0MUIzMDA3MjAzMTIgLyogU1ZHTGVuZ3RoQ29udGV4dC5jcHAgKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdMZW5ndGhDb250ZXh0LmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzEzNDQ5NkMxNDY5NDFCMzAwNzIwMzEyIC8q
IFNWR0xlbmd0aENvbnRleHQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
TGVuZ3RoQ29udGV4dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQk3MTM5MjJCQzI1
MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFN0eWxlYWJsZS5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNFNzBBRjE3MzNFOEIzMDBBMjJEMDAg
LyogcGx1Z0lucy5qcyAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuamF2YXNjcmlwdDsgcGF0aCA9IHBsdWdJbnMuanM7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcxM0YxRDU3MjNERjFEN0QwMDNGNUVGQSAvKiBHZXRBbmlt
YXRpb25zT3B0aW9ucy5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29k
aW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gR2V0QW5pbWF0aW9uc09w
dGlvbnMuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQk3MTNGMUQ1OTIzREYxRDdE
MDAzRjVFRkEgLyogR2V0QW5pbWF0aW9uc09wdGlvbnMuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Yy5oOyBwYXRoID0gR2V0QW5pbWF0aW9uc09wdGlvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTI4NDAyLDYgKzI4NDA0LDcgQEAKIAkJCQlBNzlCQUQ5RTE2MUU3RjNGMDBDMkU2
NTIgLyogUnVsZUZlYXR1cmUuaCAqLywKIAkJCQlBNzlCQUQ5RjE2MUU3RjNGMDBDMkU2NTIgLyog
UnVsZVNldC5jcHAgKi8sCiAJCQkJQTc5QkFEQTAxNjFFN0YzRjAwQzJFNjUyIC8qIFJ1bGVTZXQu
aCAqLywKKwkJCQk3MTM5MjJCQzI1MThBQjcwMDA1REIzQzIgLyogU3R5bGVhYmxlLmggKi8sCiAJ
CQkJRTQ1QkE2QjIyMzc2MjI3RTAwNERGQzA3IC8qIFN0eWxlQWRqdXN0ZXIuY3BwICovLAogCQkJ
CUU0NUJBNkI1MjM3NjIyOUYwMDRERkMwNyAvKiBTdHlsZUFkanVzdGVyLmggKi8sCiAJCQkJRTRB
QkFDMDcyMzZCMDE4MTAwRkE0MzQ1IC8qIFN0eWxlQnVpbGRlci5jcHAgKi8sCkBAIC0zMjc4Myw3
ICszMjc4Niw5IEBACiAJCQkJNkY2MzgzRjYyNDI3QUY0QTAwREFCQTUzIC8qIExheW91dEluaXRp
YWxDb250YWluaW5nQmxvY2suaCBpbiBIZWFkZXJzICovLAogCQkJCTZGMEI5OEI1MjNGMjY4RUMw
MEVFQzJGMiAvKiBMYXlvdXRJbmxpbmVUZXh0Qm94LmggaW4gSGVhZGVycyAqLywKIAkJCQlFNDE4
MDI1NTIzRDQ1NDlCMDBGRkIwNzEgLyogTGF5b3V0SW50ZWdyYXRpb25Cb3hUcmVlLmggaW4gSGVh
ZGVycyAqLywKKwkJCQlFNDAzQjdBMjI1MUIxMTkzMDAxOUU4MDAgLyogTGF5b3V0SW50ZWdyYXRp
b25Db3ZlcmFnZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTRBQkFCREQyMzYwODhGRTAwRkE0MzQ1
IC8qIExheW91dEludGVncmF0aW9uTGluZUxheW91dC5oIGluIEhlYWRlcnMgKi8sCisJCQkJRTQw
M0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVncmF0aW9uUGFnaW5hdGlvbi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJMTEzMTBDRjQyMEJBNEEzRDAwNjVBOEQwIC8qIExheW91dEl0ZXJh
dG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQk2RkZBNEMwMTIzRjJGRUQ5MDA3RTRFQkMgLyogTGF5
b3V0TGluZUJyZWFrQm94LmggaW4gSGVhZGVycyAqLywKIAkJCQk5MzFENzJGNjE1RkU2OTUzMDBD
NEMwN0UgLyogTGF5b3V0TWlsZXN0b25lLmggaW4gSGVhZGVycyAqLywKQEAgLTMyODI4LDcgKzMy
ODMzLDYgQEAKIAkJCQlCMjIyNzk2NTBEMDBCRjIyMDA3MUI3ODIgLyogTGluZWFyR3JhZGllbnRB
dHRyaWJ1dGVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlBQjMxQzkxRTEwQUUxQjhFMDAwQzdCOTIg
LyogTGluZUNsYW1wVmFsdWUuaCBpbiBIZWFkZXJzICovLAogCQkJCUZGRUZBQjJBMTgzODBEQTAw
MDUxNDUzNCAvKiBMaW5lTGF5b3V0U3RhdGUuaCBpbiBIZWFkZXJzICovLAotCQkJCUU0MDNCN0Ey
MjUxQjExOTMwMDE5RTgwMCAvKiBMYXlvdXRJbnRlZ3JhdGlvbkNvdmVyYWdlLmggaW4gSGVhZGVy
cyAqLywKIAkJCQlFNDg0QTMzRTIzMDU1MzI1MDA5QURFNkEgLyogTGluZUxheW91dFRyYXZlcnNh
bC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQzNDNEMjUyMzkyNzc5MDAwRUJCQjY2IC8qIExpbmVM
YXlvdXRUcmF2ZXJzYWxDb21wbGV4UGF0aC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRTQ1MUM2Mjgy
MzkyOTNFQzAwOTkzMTkwIC8qIExpbmVMYXlvdXRUcmF2ZXJzYWxEaXNwbGF5UnVuUGF0aC5oIGlu
IEhlYWRlcnMgKi8sCkBAIC0zMzY5Nyw3ICszMzcwMSw2IEBACiAJCQkJMjI4QzI4NDUxMEQ4MjUw
MDAwOUQwRDBFIC8qIFNjcmlwdFdyYXBwYWJsZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTQwMEQ3
QTgxNzEzNkVBNzAwNzdDRTA1IC8qIFNjcmlwdFdyYXBwYWJsZUlubGluZXMuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUJDOEFFMzRGMTJFQTA5NkEwMEVCM0FFNiAvKiBTY3JvbGxhYmxlQXJlYS5oIGlu
IEhlYWRlcnMgKi8sCi0JCQkJRTQwM0I3QTMyNTFCMTFDMTAwMTlFODAwIC8qIExheW91dEludGVn
cmF0aW9uUGFnaW5hdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNUQ5MjVCNjgwRjY0RDRERDAw
Qjg0N0YwIC8qIFNjcm9sbEFsaWdubWVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQ0EzQkY2N0Ux
MEQ5OUJBRTAwRTZDRTUzIC8qIFNjcm9sbEFuaW1hdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQkw
RjE3NzQ4MDEzNzhCNzcyMDA5REE3NkEgLyogU2Nyb2xsQW5pbWF0b3JJT1MuaCBpbiBIZWFkZXJz
ICovLApAQCAtMzM5MzcsNiArMzM5NDAsNyBAQAogCQkJCTlCNkM0MTUzMTM0NDk0OTAwMDA4NUI2
MiAvKiBTdHJpbmdXaXRoRGlyZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NDlGNzc3NjBF
RkVDNjIwMDA5MDg0OUQgLyogU3Ryb2tlU3R5bGVBcHBsaWVyLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk0MTRCODIwNTFENkRGMEU1MDA3N0VCRTMgLyogU3RydWN0dXJlZENsb25lLmggaW4gSGVhZGVy
cyAqLywKKwkJCQk3MTM5MjJCRTI1MThBQjc3MDA1REIzQzIgLyogU3R5bGVhYmxlLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlFNDVCQTZCNjIzNzYyMkEzMDA0REZDMDcgLyogU3R5bGVBZGp1c3Rlci5o
IGluIEhlYWRlcnMgKi8sCiAJCQkJQkM1RUI2QTMwRTgxREM0RjAwQjI1OTY1IC8qIFN0eWxlQmFj
a2dyb3VuZERhdGEuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNUVCNjdCMEU4MUQzQkUwMEIyNTk2
NSAvKiBTdHlsZUJveERhdGEuaCBpbiBIZWFkZXJzICovLApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVsaW5lLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Fu
aW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5jcHAKaW5kZXggNzRjMDY1NGE1N2M3YjAyMTRmODk2
Y2YyNDZlM2U3NDQxZDU2ZTY0Yi4uNzBkNWY3YTE4MzFhMzcwODYyNWUwNWFiNWNmN2VhZWM2M2Jm
MWM3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0FuaW1hdGlvblRpbWVs
aW5lLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUu
Y3BwCkBAIC00Miw2ICs0Miw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUg
IlN0eWxlUHJvcGVydHlTaG9ydGhhbmQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCisj
aW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVXRpbGl0aWVzLmgi
CiAjaW5jbHVkZSA8d3RmL3RleHQvVGV4dFN0cmVhbS5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1dU
RlN0cmluZy5oPgpAQCAtODAsOSArODEsOSBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1v
dmVBbmltYXRpb24oV2ViQW5pbWF0aW9uJiBhbmltYXRpb24pCiAgICAgQVNTRVJUKCFhbmltYXRp
b24udGltZWxpbmUoKSB8fCBhbmltYXRpb24udGltZWxpbmUoKSA9PSB0aGlzKTsKICAgICBtX2Fu
aW1hdGlvbnMucmVtb3ZlKCZhbmltYXRpb24pOwogICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4o
YW5pbWF0aW9uLmVmZmVjdCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNh
c3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldEVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQoKSkgewotICAgICAgICAgICAgYW5pbWF0aW9uV2FzUmVtb3ZlZEZyb21FbGVt
ZW50KGFuaW1hdGlvbiwgKnRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQtPmVuc3VyZUtleWZy
YW1lRWZmZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKmRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pihh
bmltYXRpb24uZWZmZWN0KCkpKTsKKyAgICAgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gZG93bmNh
c3Q8S2V5ZnJhbWVFZmZlY3Q+KGFuaW1hdGlvbi5lZmZlY3QoKSktPnRhcmdldFN0eWxlYWJsZSgp
KSB7CisgICAgICAgICAgICBhbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZShhbmltYXRp
b24sICpzdHlsZWFibGUpOworICAgICAgICAgICAgc3R5bGVhYmxlLT5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCpkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4oYW5pbWF0
aW9uLmVmZmVjdCgpKSk7CiAgICAgICAgIH0KICAgICB9CiB9CkBAIC05NSw5ICs5Niw5IEBAIE9w
dGlvbmFsPGRvdWJsZT4gQW5pbWF0aW9uVGltZWxpbmU6OmJpbmRpbmdzQ3VycmVudFRpbWUoKQog
ICAgIHJldHVybiBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZSgqdGltZSk7CiB9CiAKLXZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc0FkZGVkVG9FbGVtZW50KFdlYkFuaW1h
dGlvbiYgYW5pbWF0aW9uLCBFbGVtZW50JiBlbGVtZW50KQordm9pZCBBbmltYXRpb25UaW1lbGlu
ZTo6YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZShXZWJBbmltYXRpb24mIGFuaW1hdGlvbiwg
Y29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgZWxlbWVudC5lbnN1cmVBbmltYXRp
b25zKCkuYWRkKCZhbmltYXRpb24pOworICAgIHN0eWxlYWJsZS5lbnN1cmVBbmltYXRpb25zKCku
YWRkKCZhbmltYXRpb24pOwogfQogCiBzdGF0aWMgaW5saW5lIGJvb2wgcmVtb3ZlQ1NTVHJhbnNp
dGlvbkZyb21NYXAoQ1NTVHJhbnNpdGlvbiYgdHJhbnNpdGlvbiwgUHJvcGVydHlUb1RyYW5zaXRp
b25NYXAmIGNzc1RyYW5zaXRpb25zQnlQcm9wZXJ0eSkKQEAgLTExMCwzNyArMTExLDM3IEBAIHN0
YXRpYyBpbmxpbmUgYm9vbCByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcChDU1NUcmFuc2l0aW9u
JiB0cmFuc2l0aW9uLCBQcm9wZXJ0CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgQW5pbWF0
aW9uVGltZWxpbmU6OmFuaW1hdGlvbldhc1JlbW92ZWRGcm9tRWxlbWVudChXZWJBbmltYXRpb24m
IGFuaW1hdGlvbiwgRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OmFu
aW1hdGlvbldhc1JlbW92ZWRGcm9tU3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYgYW5pbWF0aW9uLCBj
b25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSkKIHsKLSAgICBlbGVtZW50LmVuc3VyZUFuaW1hdGlv
bnMoKS5yZW1vdmUoJmFuaW1hdGlvbik7CisgICAgc3R5bGVhYmxlLmVuc3VyZUFuaW1hdGlvbnMo
KS5yZW1vdmUoJmFuaW1hdGlvbik7CiAKICAgICAvLyBOb3csIGlmIHdlJ3JlIGRlYWxpbmcgd2l0
aCBhIENTUyBUcmFuc2l0aW9uLCB3ZSByZW1vdmUgaXQgZnJvbSB0aGUgbV9lbGVtZW50VG9SdW5u
aW5nQ1NTVHJhbnNpdGlvbkJ5Q1NTUHJvcGVydHlJRCBtYXAuCiAgICAgLy8gV2UgZG9uJ3QgbmVl
ZCB0byBkbyB0aGlzIGZvciBDU1MgQW5pbWF0aW9ucyBiZWNhdXNlIHRoZWlyIHRpbWluZyBjYW4g
YmUgc2V0IHZpYSBDU1MgdG8gZW5kLCB3aGljaCB3b3VsZCBjYXVzZSB0aGlzCiAgICAgLy8gZnVu
Y3Rpb24gdG8gYmUgY2FsbGVkLCBidXQgdGhleSBzaG91bGQgcmVtYWluIGFzc29jaWF0ZWQgd2l0
aCB0aGVpciBvd25pbmcgZWxlbWVudCB1bnRpbCB0aGlzIGlzIGNoYW5nZWQgdmlhIGEgY2FsbAog
ICAgIC8vIHRvIHRoZSBKUyBBUEkgb3IgY2hhbmdpbmcgdGhlIHRhcmdldCBlbGVtZW50J3MgYW5p
bWF0aW9uLW5hbWUgcHJvcGVydHkuCiAgICAgaWYgKGlzPENTU1RyYW5zaXRpb24+KGFuaW1hdGlv
bikpCi0gICAgICAgIHJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJvbUxpc3RzRm9yT3duaW5n
RWxlbWVudChhbmltYXRpb24sIGVsZW1lbnQpOworICAgICAgICByZW1vdmVEZWNsYXJhdGl2ZUFu
aW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoYW5pbWF0aW9uLCBzdHlsZWFibGUpOwog
fQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZy
b21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIEVsZW1lbnQm
IGVsZW1lbnQpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVEZWNsYXJhdGl2ZUFuaW1h
dGlvbkZyb21MaXN0c0Zvck93bmluZ0VsZW1lbnQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24sIGNv
bnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQogewogICAgIEFTU0VSVChpczxEZWNsYXJhdGl2ZUFu
aW1hdGlvbj4oYW5pbWF0aW9uKSk7CiAKICAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0
aW9uKSkgewogICAgICAgICBhdXRvJiB0cmFuc2l0aW9uID0gZG93bmNhc3Q8Q1NTVHJhbnNpdGlv
bj4oYW5pbWF0aW9uKTsKLSAgICAgICAgaWYgKCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0
cmFuc2l0aW9uLCBlbGVtZW50LmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkp
Ci0gICAgICAgICAgICByZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBlbGVt
ZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKTsKKyAgICAgICAgaWYg
KCFyZW1vdmVDU1NUcmFuc2l0aW9uRnJvbU1hcCh0cmFuc2l0aW9uLCBzdHlsZWFibGUuZW5zdXJl
UnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkKKyAgICAgICAgICAgIHJlbW92ZUNTU1Ry
YW5zaXRpb25Gcm9tTWFwKHRyYW5zaXRpb24sIHN0eWxlYWJsZS5lbnN1cmVDb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHkoKSk7CiAgICAgfQogfQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5l
OjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoRWxlbWVudCYgZWxlbWVudCwgQ1NT
QW5pbWF0aW9uJiBjc3NBbmltYXRpb24pCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVD
U1NBbmltYXRpb25DcmVhdGVkQnlNYXJrdXAoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIENT
U0FuaW1hdGlvbiYgY3NzQW5pbWF0aW9uKQogewotICAgIGVsZW1lbnQuYW5pbWF0aW9uc0NyZWF0
ZWRCeU1hcmt1cCgpLnJlbW92ZSgmY3NzQW5pbWF0aW9uKTsKKyAgICBzdHlsZWFibGUuYW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cCgpLnJlbW92ZSgmY3NzQW5pbWF0aW9uKTsKIAotICAgIGlmICgh
ZWxlbWVudC5oYXNLZXlmcmFtZUVmZmVjdHMoKSkKKyAgICBpZiAoIXN0eWxlYWJsZS5oYXNLZXlm
cmFtZUVmZmVjdHMoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byYga2V5ZnJhbWVFZmZl
Y3RTdGFjayA9IGVsZW1lbnQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOworICAgIGF1dG8m
IGtleWZyYW1lRWZmZWN0U3RhY2sgPSBzdHlsZWFibGUuZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFj
aygpOwogICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBrZXlmcmFtZUVmZmVjdFN0YWNrLmNz
c0FuaW1hdGlvbkxpc3QoKTsKICAgICBpZiAoIWNzc0FuaW1hdGlvbkxpc3QgfHwgY3NzQW5pbWF0
aW9uTGlzdC0+aXNFbXB0eSgpKQogICAgICAgICByZXR1cm47CkBAIC0xNTYsMzMgKzE1NywzMyBA
QCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjpyZW1vdmVDU1NBbmltYXRpb25DcmVhdGVkQnlNYXJr
dXAoRWxlbWVudCYgZWxlbWVudCwgQ1NTQQogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6ZWxlbWVudFdhc1JlbW92ZWQoRWxlbWVudCYgZWxlbWVudCkKK3ZvaWQgQW5pbWF0aW9u
VGltZWxpbmU6OmVsZW1lbnRXYXNSZW1vdmVkKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlKQog
ewotICAgIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoZWxlbWVudCwgV2Vi
QW5pbWF0aW9uOjpTaWxlbnRseTo6WWVzKTsKKyAgICBjYW5jZWxEZWNsYXJhdGl2ZUFuaW1hdGlv
bnNGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwog
fQogCi12b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50
KEVsZW1lbnQmIGVsZW1lbnQpCit2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp3aWxsQ2hhbmdlUmVu
ZGVyZXJGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUpCiB7Ci0gICAgaWYg
KGF1dG8qIGFuaW1hdGlvbnMgPSBlbGVtZW50LmFuaW1hdGlvbnMoKSkgeworICAgIGlmIChhdXRv
KiBhbmltYXRpb25zID0gc3R5bGVhYmxlLmFuaW1hdGlvbnMoKSkgewogICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGFuaW1hdGlvbiA6ICphbmltYXRpb25zKQogICAgICAgICAgICAgYW5pbWF0aW9u
LT53aWxsQ2hhbmdlUmVuZGVyZXIoKTsKICAgICB9CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYgZWxlbWVu
dCwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSBzaWxlbnRseSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxp
bmU6OmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFi
bGUmIHN0eWxlYWJsZSwgV2ViQW5pbWF0aW9uOjpTaWxlbnRseSBzaWxlbnRseSkKIHsKLSAgICBp
ZiAoYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQuYW5pbWF0aW9ucygpKSB7CisgICAgaWYgKGF1
dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUuYW5pbWF0aW9ucygpKSB7CiAgICAgICAgIGZvciAo
YXV0byYgYW5pbWF0aW9uIDogKmFuaW1hdGlvbnMpIHsKICAgICAgICAgICAgIGlmIChpczxEZWNs
YXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSkgewogICAgICAgICAgICAgICAgIGlmIChpczxD
U1NBbmltYXRpb24+KGFuaW1hdGlvbikpCi0gICAgICAgICAgICAgICAgICAgIHJlbW92ZUNTU0Fu
aW1hdGlvbkNyZWF0ZWRCeU1hcmt1cChlbGVtZW50LCBkb3duY2FzdDxDU1NBbmltYXRpb24+KCph
bmltYXRpb24pKTsKKyAgICAgICAgICAgICAgICAgICAgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRl
ZEJ5TWFya3VwKHN0eWxlYWJsZSwgZG93bmNhc3Q8Q1NTQW5pbWF0aW9uPigqYW5pbWF0aW9uKSk7
CiAgICAgICAgICAgICAgICAgYW5pbWF0aW9uLT5jYW5jZWwoc2lsZW50bHkpOwogICAgICAgICAg
ICAgfQogICAgICAgICB9CiAgICAgfQogfQogCi1zdGF0aWMgYm9vbCBzaG91bGRDb25zaWRlckFu
aW1hdGlvbihFbGVtZW50JiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50LCBjb25zdCBBbmltYXRpb24m
IGFuaW1hdGlvbikKK3N0YXRpYyBib29sIHNob3VsZENvbnNpZGVyQW5pbWF0aW9uKEVsZW1lbnQm
IGVsZW1lbnQsIGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uKQogewogICAgIGlmICghYW5pbWF0
aW9uLmlzVmFsaWRBbmltYXRpb24oKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTkzLDIx
ICsxOTQsMTkgQEAgc3RhdGljIGJvb2wgc2hvdWxkQ29uc2lkZXJBbmltYXRpb24oRWxlbWVudCYg
ZWxlbWVudE9yUHNldWRvRWxlbWVudCwgY29uc3QgQW5pbWEKICAgICBpZiAobmFtZSA9PSBhbmlt
YXRpb25OYW1lTm9uZSB8fCBuYW1lLmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwog
Ci0gICAgYXV0byYgZWxlbWVudCA9IGlzPFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0Vs
ZW1lbnQpID8gKmRvd25jYXN0PFBzZXVkb0VsZW1lbnQ+KGVsZW1lbnRPclBzZXVkb0VsZW1lbnQp
Lmhvc3RFbGVtZW50KCkgOiBlbGVtZW50T3JQc2V1ZG9FbGVtZW50OwotCiAgICAgaWYgKGF1dG8q
IHN0eWxlU2NvcGUgPSBTdHlsZTo6U2NvcGU6OmZvck9yZGluYWwoZWxlbWVudCwgYW5pbWF0aW9u
Lm5hbWVTdHlsZVNjb3BlT3JkaW5hbCgpKSkKICAgICAgICAgcmV0dXJuIHN0eWxlU2NvcGUtPnJl
c29sdmVyKCkuaXNBbmltYXRpb25OYW1lVmFsaWQobmFtZSk7CiAKICAgICByZXR1cm4gZmFsc2U7
CiB9CiAKLXZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVt
ZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0
ZUNTU0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoY29uc3QgU3R5bGVhYmxlJiBzdHlsZWFibGUsIGNv
bnN0IFJlbmRlclN0eWxlKiBjdXJyZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHls
ZSkKIHsKLSAgICBhdXRvJiBrZXlmcmFtZUVmZmVjdFN0YWNrID0gZWxlbWVudC5lbnN1cmVLZXlm
cmFtZUVmZmVjdFN0YWNrKCk7CisgICAgYXV0byYga2V5ZnJhbWVFZmZlY3RTdGFjayA9IHN0eWxl
YWJsZS5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7CiAKICAgICAvLyBJbiBjYXNlIHRoaXMg
ZWxlbWVudCBpcyBuZXdseSBnZXR0aW5nIGEgImRpc3BsYXk6IG5vbmUiIHdlIG5lZWQgdG8gY2Fu
Y2VsIGFsbCBvZiBpdHMgYW5pbWF0aW9ucyBhbmQgZGlzcmVnYXJkIG5ldyBvbmVzLgogICAgIGlm
IChjdXJyZW50U3R5bGUgJiYgY3VycmVudFN0eWxlLT5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogZWxlbWVudC5hbmltYXRpb25zQ3JlYXRlZEJ5
TWFya3VwKCkpCisgICAgICAgIGZvciAoYXV0byYgY3NzQW5pbWF0aW9uIDogc3R5bGVhYmxlLmFu
aW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKSkKICAgICAgICAgICAgIGNzc0FuaW1hdGlvbi0+Y2Fu
Y2VsRnJvbVN0eWxlKCk7CiAgICAgICAgIGtleWZyYW1lRWZmZWN0U3RhY2suc2V0Q1NTQW5pbWF0
aW9uTGlzdChudWxscHRyKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjE5LDcgKzIxOCw3IEBAIHZv
aWQgQW5pbWF0aW9uVGltZWxpbmU6OnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQsIGNvbnN0IFJlCiAgICAgICAgIHJldHVybjsKIAogICAgIENTU0FuaW1hdGlv
bkNvbGxlY3Rpb24gbmV3QW5pbWF0aW9uczsKLSAgICBhdXRvJiBwcmV2aW91c0FuaW1hdGlvbnMg
PSBlbGVtZW50LmFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoKTsKKyAgICBhdXRvJiBwcmV2aW91
c0FuaW1hdGlvbnMgPSBzdHlsZWFibGUuYW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cCgpOwogCiAg
ICAgLy8gaHR0cHM6Ly93d3cudzMub3JnL1RSL2Nzcy1hbmltYXRpb25zLTEvI2FuaW1hdGlvbnMK
ICAgICAvLyBUaGUgc2FtZSBAa2V5ZnJhbWVzIHJ1bGUgbmFtZSBtYXkgYmUgcmVwZWF0ZWQgd2l0
aGluIGFuIGFuaW1hdGlvbi1uYW1lLiBDaGFuZ2VzIHRvIHRoZSBhbmltYXRpb24tbmFtZSB1cGRh
dGUgZXhpc3RpbmcKQEAgLTIzMyw3ICsyMzIsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQog
ICAgIGlmIChjdXJyZW50QW5pbWF0aW9uTGlzdCkgewogICAgICAgICBmb3IgKHNpemVfdCBpID0g
Y3VycmVudEFuaW1hdGlvbkxpc3QtPnNpemUoKTsgaSA+IDA7IC0taSkgewogICAgICAgICAgICAg
YXV0byYgY3VycmVudEFuaW1hdGlvbiA9IGN1cnJlbnRBbmltYXRpb25MaXN0LT5hbmltYXRpb24o
aSAtIDEpOwotICAgICAgICAgICAgaWYgKCFzaG91bGRDb25zaWRlckFuaW1hdGlvbihlbGVtZW50
LCBjdXJyZW50QW5pbWF0aW9uKSkKKyAgICAgICAgICAgIGlmICghc2hvdWxkQ29uc2lkZXJBbmlt
YXRpb24oc3R5bGVhYmxlLmVsZW1lbnQsIGN1cnJlbnRBbmltYXRpb24pKQogICAgICAgICAgICAg
ICAgIGNvbnRpbnVlOwogCiAgICAgICAgICAgICBib29sIGZvdW5kTWF0Y2hpbmdBbmltYXRpb24g
PSBmYWxzZTsKQEAgLTI1MSw3ICsyNTAsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRh
dGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQogICAg
ICAgICAgICAgfQogCiAgICAgICAgICAgICBpZiAoIWZvdW5kTWF0Y2hpbmdBbmltYXRpb24pCi0g
ICAgICAgICAgICAgICAgbmV3QW5pbWF0aW9ucy5hZGQoQ1NTQW5pbWF0aW9uOjpjcmVhdGUoZWxl
bWVudCwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOworICAgICAg
ICAgICAgICAgIG5ld0FuaW1hdGlvbnMuYWRkKENTU0FuaW1hdGlvbjo6Y3JlYXRlKHN0eWxlYWJs
ZSwgY3VycmVudEFuaW1hdGlvbiwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSkpOwogICAgICAgICB9
CiAgICAgfQogCkBAIC0yNjMsMTQgKzI2MiwxNCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChFbGVtZW50JiBlbGVtZW50LCBjb25zdCBSZQog
ICAgICAgICB9CiAgICAgfQogCi0gICAgZWxlbWVudC5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOworICAgIHN0eWxlYWJsZS5zZXRBbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKFdURk1vdmUobmV3QW5pbWF0aW9ucykpOwogCiAgICAga2V5ZnJhbWVF
ZmZlY3RTdGFjay5zZXRDU1NBbmltYXRpb25MaXN0KGN1cnJlbnRBbmltYXRpb25MaXN0KTsKIH0K
IAotc3RhdGljIEtleWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KQorc3RhdGljIEtl
eWZyYW1lRWZmZWN0KiBrZXlmcmFtZUVmZmVjdEZvckVsZW1lbnRBbmRQcm9wZXJ0eShjb25zdCBT
dHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkKIHsKLSAgICBpZiAo
YXV0byoga2V5ZnJhbWVFZmZlY3RTdGFjayA9IGVsZW1lbnQua2V5ZnJhbWVFZmZlY3RTdGFjaygp
KSB7CisgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBzdHlsZWFibGUua2V5ZnJh
bWVFZmZlY3RTdGFjaygpKSB7CiAgICAgICAgIGF1dG8gZWZmZWN0cyA9IGtleWZyYW1lRWZmZWN0
U3RhY2stPnNvcnRlZEVmZmVjdHMoKTsKICAgICAgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3Qg
OiBtYWtlUmV2ZXJzZWRSYW5nZShlZmZlY3RzKSkgewogICAgICAgICAgICAgaWYgKGVmZmVjdC0+
YW5pbWF0ZXNQcm9wZXJ0eShwcm9wZXJ0eSkpCkBAIC0zMzksMTEgKzMzOCwxNyBAQCBzdGF0aWMg
dm9pZCBjb21waWxlVHJhbnNpdGlvblByb3BlcnRpZXNJblN0eWxlKGNvbnN0IFJlbmRlclN0eWxl
JiBzdHlsZSwgSGFzaFNldAogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWVudCwg
Q1NTUHJvcGVydHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwg
Y29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRp
b25UaW1lKQordm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JT
dHlsZWFibGVBbmRQcm9wZXJ0eShjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVy
dHlJRCBwcm9wZXJ0eSwgY29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVu
ZGVyU3R5bGUmIG5ld1N0eWxlLCBjb25zdCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lKQog
ewotICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0ga2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5k
UHJvcGVydHkoZWxlbWVudCwgcHJvcGVydHkpOworICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0g
a2V5ZnJhbWVFZmZlY3RGb3JFbGVtZW50QW5kUHJvcGVydHkoc3R5bGVhYmxlLCBwcm9wZXJ0eSk7
CiAgICAgYXV0byogYW5pbWF0aW9uID0ga2V5ZnJhbWVFZmZlY3QgPyBrZXlmcmFtZUVmZmVjdC0+
YW5pbWF0aW9uKCkgOiBudWxscHRyOwotICAgIGJvb2wgaXNEZWNsYXJhdGl2ZSA9IGFuaW1hdGlv
biAmJiBpczxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oYW5pbWF0aW9uKSAmJiBkb3duY2FzdDxEZWNs
YXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbikub3duaW5nRWxlbWVudCgpID09ICZlbGVtZW50
OworCisgICAgYm9vbCBpc0RlY2xhcmF0aXZlID0gZmFsc2U7CisgICAgaWYgKGlzPERlY2xhcmF0
aXZlQW5pbWF0aW9uPihhbmltYXRpb24pKSB7CisgICAgICAgIGlmIChhdXRvIG93bmluZ0VsZW1l
bnQgPSBkb3duY2FzdDxEZWNsYXJhdGl2ZUFuaW1hdGlvbj4oKmFuaW1hdGlvbikub3duaW5nRWxl
bWVudCgpKQorICAgICAgICAgICAgaXNEZWNsYXJhdGl2ZSA9ICpvd25pbmdFbGVtZW50ID09IHN0
eWxlYWJsZTsKKyAgICB9CisKICAgICBpZiAoYW5pbWF0aW9uICYmICFpc0RlY2xhcmF0aXZlKQog
ICAgICAgICByZXR1cm47CiAKQEAgLTM1OCw4ICszNjMsOCBAQCB2b2lkIEFuaW1hdGlvblRpbWVs
aW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBl
bGVtZQogCiAgICAgLy8gQSBDU1MgVHJhbnNpdGlvbiBtaWdodCBoYXZlIGNvbXBsZXRlZCBzaW5j
ZSB0aGUgbGFzdCB0aW1lIGFuaW1hdGlvbnMgd2VyZSB1cGRhdGVkIHNvIHdlIG11c3QKICAgICAv
LyB1cGRhdGUgdGhlIHJ1bm5pbmcgYW5kIGNvbXBsZXRlZCB0cmFuc2l0aW9ucyBtZW1iZXJzaGlw
IGluIHRoYXQgY2FzZS4KLSAgICBpZiAoaXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBt
YXRjaGluZ0JhY2tpbmdBbmltYXRpb24gJiYgZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNG
b3JQcm9wZXJ0eShwcm9wZXJ0eSkgJiYgYW5pbWF0aW9uLT5wbGF5U3RhdGUoKSA9PSBXZWJBbmlt
YXRpb246OlBsYXlTdGF0ZTo6RmluaXNoZWQpIHsKLSAgICAgICAgZWxlbWVudC5lbnN1cmVDb21w
bGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHksIGVsZW1lbnQuZW5zdXJl
UnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpKTsKKyAgICBpZiAo
aXM8Q1NTVHJhbnNpdGlvbj4oYW5pbWF0aW9uKSAmJiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24g
JiYgc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KSAm
JiBhbmltYXRpb24tPnBsYXlTdGF0ZSgpID09IFdlYkFuaW1hdGlvbjo6UGxheVN0YXRlOjpGaW5p
c2hlZCkgeworICAgICAgICBzdHlsZWFibGUuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVBy
b3BlcnR5KCkuc2V0KHByb3BlcnR5LCBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpKTsKICAgICAgICAgYW5pbWF0aW9uID0gbnVsbHB0
cjsKICAgICB9CiAKQEAgLTM3Nyw3ICszODIsNyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1
cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQog
ICAgICAgICB9CiAKICAgICAgICAgLy8gSWYgaXQgZXhpc3RzLCB1c2UgdGhlIHJlY29yZGVkIFJl
bmRlclN0eWxlIGZvciB0aGlzIGVsZW1lbnQgZHVyaW5nIGEgcHJldmlvdXMgY2FsbCB0byBTdHls
ZTo6VHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoKS4KLSAgICAgICAg
aWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBlbGVtZW50Lmxhc3RTdHlsZUNo
YW5nZUV2ZW50U3R5bGUoKSkKKyAgICAgICAgaWYgKGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUgPSBzdHlsZWFibGUubGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpKQogICAgICAgICAg
ICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZSgqbGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSk7
CiAKICAgICAgICAgLy8gSWYgd2UgaGF2ZW4ndCBjb21wdXRlZCBzdHlsZXMgZnJvbSBhbmltYXRp
b25zIGZvciB0aGlzIGVsZW1lbnQsIHRoZSBiZWZvcmUtY2hhbmdlIHN0eWxlIGlzIHRoZSBwcmV2
aW91c2x5IHJlc29sdmVkIHN0eWxlIGZvciB0aGlzIGVsZW1lbnQuCkBAIC0zOTksMTAgKzQwNCwx
MCBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1l
bnRBbmRQcm9wZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICByZXR1cm4gUmVuZGVyU3R5bGU6
OmNsb25lKG5ld1N0eWxlKTsKICAgICB9KCk7CiAKLSAgICBpZiAoIWVsZW1lbnQuaGFzUnVubmlu
Z1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCisgICAgaWYgKCFzdHlsZWFibGUuaGFz
UnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpCiAgICAgICAgICYmICFDU1NQ
cm9wZXJ0eUFuaW1hdGlvbjo6cHJvcGVydGllc0VxdWFsKHByb3BlcnR5LCAmYmVmb3JlQ2hhbmdl
U3R5bGUsICZhZnRlckNoYW5nZVN0eWxlKQogICAgICAgICAmJiBDU1NQcm9wZXJ0eUFuaW1hdGlv
bjo6Y2FuUHJvcGVydHlCZUludGVycG9sYXRlZChwcm9wZXJ0eSwgJmJlZm9yZUNoYW5nZVN0eWxl
LCAmYWZ0ZXJDaGFuZ2VTdHlsZSkKLSAgICAgICAgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNW
YWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZWxlbWVu
dC5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSkKKyAgICAgICAgJiYgIXBy
b3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRyYW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0
ZXJDaGFuZ2VTdHlsZSwgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9w
ZXJ0eSgpKQogICAgICAgICAmJiBtYXRjaGluZ0JhY2tpbmdBbmltYXRpb24gJiYgdHJhbnNpdGlv
bkNvbWJpbmVkRHVyYXRpb24obWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSA+IDApIHsKICAgICAg
ICAgLy8gMS4gSWYgYWxsIG9mIHRoZSBmb2xsb3dpbmcgYXJlIHRydWU6CiAgICAgICAgIC8vICAg
LSB0aGUgZWxlbWVudCBkb2VzIG5vdCBoYXZlIGEgcnVubmluZyB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHksCkBAIC00MTIsNyArNDE3LDcgQEAgdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBk
YXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYgZWxlbWUKICAg
ICAgICAgLy8gICAtIHRoZSBjb21iaW5lZCBkdXJhdGlvbiBpcyBncmVhdGVyIHRoYW4gMHMsCiAK
ICAgICAgICAgLy8gdGhlbiBpbXBsZW1lbnRhdGlvbnMgbXVzdCByZW1vdmUgdGhlIGNvbXBsZXRl
ZCB0cmFuc2l0aW9uIChpZiBwcmVzZW50KSBmcm9tIHRoZSBzZXQgb2YgY29tcGxldGVkIHRyYW5z
aXRpb25zCi0gICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3Bl
cnR5KCkucmVtb3ZlKHByb3BlcnR5KTsKKyAgICAgICAgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRl
ZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CiAKICAgICAgICAgLy8g
YW5kIHN0YXJ0IGEgdHJhbnNpdGlvbiB3aG9zZToKICAgICAgICAgLy8gICAtIHN0YXJ0IHRpbWUg
aXMgdGhlIHRpbWUgb2YgdGhlIHN0eWxlIGNoYW5nZSBldmVudCBwbHVzIHRoZSBtYXRjaGluZyB0
cmFuc2l0aW9uIGRlbGF5LApAQCAtNDI1LDI1ICs0MzAsMjUgQEAgdm9pZCBBbmltYXRpb25UaW1l
bGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVydHkoRWxlbWVudCYg
ZWxlbWUKICAgICAgICAgYXV0byBkdXJhdGlvbiA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLT5kdXJhdGlvbigpKTsKICAgICAgICAgYXV0byYgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFy
dFN0eWxlID0gYmVmb3JlQ2hhbmdlU3R5bGU7CiAgICAgICAgIGF1dG8gcmV2ZXJzaW5nU2hvcnRl
bmluZ0ZhY3RvciA9IDE7Ci0gICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKGVsZW1lbnQs
IHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJmJl
Zm9yZUNoYW5nZVN0eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVy
c2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOwotICAg
IH0gZWxzZSBpZiAoZWxlbWVudC5oYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHBy
b3BlcnR5KSAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbkluTWFw
KHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpKSkgeworICAgICAgICBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3JlYXRl
KHN0eWxlYWJsZSwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hpbmdCYWNraW5nQW5p
bWF0aW9uLCAmYmVmb3JlQ2hhbmdlU3R5bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJh
dGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFj
dG9yKSk7CisgICAgfSBlbHNlIGlmIChzdHlsZWFibGUuaGFzQ29tcGxldGVkVHJhbnNpdGlvbnNG
b3JQcm9wZXJ0eShwcm9wZXJ0eSkgJiYgIXByb3BlcnR5SW5TdHlsZU1hdGNoZXNWYWx1ZUZvclRy
YW5zaXRpb25Jbk1hcChwcm9wZXJ0eSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgc3R5bGVhYmxlLmVuc3Vy
ZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgewogICAgICAgICAvLyAyLiBPdGhl
cndpc2UsIGlmIHRoZSBlbGVtZW50IGhhcyBhIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZvciB0aGUg
cHJvcGVydHkgYW5kIHRoZSBlbmQgdmFsdWUgb2YgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGlz
IGRpZmZlcmVudCBmcm9tCiAgICAgICAgIC8vICAgIHRoZSBhZnRlci1jaGFuZ2Ugc3R5bGUgZm9y
IHRoZSBwcm9wZXJ0eSwgdGhlbiBpbXBsZW1lbnRhdGlvbnMgbXVzdCByZW1vdmUgdGhlIGNvbXBs
ZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQgdHJhbnNpdGlvbnMuCi0g
ICAgICAgIGVsZW1lbnQuZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVt
b3ZlKHByb3BlcnR5KTsKKyAgICAgICAgc3R5bGVhYmxlLmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRp
b25zQnlQcm9wZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CiAgICAgfQogCi0gICAgYm9vbCBoYXNS
dW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVy
dHkocHJvcGVydHkpOwotICAgIGlmICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgZWxlbWVudC5o
YXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KHByb3BlcnR5KSkgJiYgIW1hdGNoaW5n
QmFja2luZ0FuaW1hdGlvbikgeworICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb24gPSBzdHls
ZWFibGUuaGFzUnVubmluZ1RyYW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpOworICAgIGlm
ICgoaGFzUnVubmluZ1RyYW5zaXRpb24gfHwgc3R5bGVhYmxlLmhhc0NvbXBsZXRlZFRyYW5zaXRp
b25zRm9yUHJvcGVydHkocHJvcGVydHkpKSAmJiAhbWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uKSB7
CiAgICAgICAgIC8vIDMuIElmIHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNpdGlvbiBv
ciBjb21wbGV0ZWQgdHJhbnNpdGlvbiBmb3IgdGhlIHByb3BlcnR5LCBhbmQgdGhlcmUgaXMgbm90
IGEgbWF0Y2hpbmcgdHJhbnNpdGlvbi1wcm9wZXJ0eQogICAgICAgICAvLyAgICB2YWx1ZSwgdGhl
biBpbXBsZW1lbnRhdGlvbnMgbXVzdCBjYW5jZWwgdGhlIHJ1bm5pbmcgdHJhbnNpdGlvbiBvciBy
ZW1vdmUgdGhlIGNvbXBsZXRlZCB0cmFuc2l0aW9uIGZyb20gdGhlIHNldCBvZiBjb21wbGV0ZWQg
dHJhbnNpdGlvbnMuCiAgICAgICAgIGlmIChoYXNSdW5uaW5nVHJhbnNpdGlvbikKLSAgICAgICAg
ICAgIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJv
cGVydHkpLT5jYW5jZWwoKTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS5lbnN1cmVSdW5uaW5nVHJh
bnNpdGlvbnNCeVByb3BlcnR5KCkudGFrZShwcm9wZXJ0eSktPmNhbmNlbCgpOwogICAgICAgICBl
bHNlCi0gICAgICAgICAgICBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9w
ZXJ0eSgpLnJlbW92ZShwcm9wZXJ0eSk7CisgICAgICAgICAgICBzdHlsZWFibGUuZW5zdXJlQ29t
cGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkucmVtb3ZlKHByb3BlcnR5KTsKICAgICB9CiAK
LSAgICBpZiAobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uICYmIGVsZW1lbnQuaGFzUnVubmluZ1Ry
YW5zaXRpb25zRm9yUHJvcGVydHkocHJvcGVydHkpICYmICFwcm9wZXJ0eUluU3R5bGVNYXRjaGVz
VmFsdWVGb3JUcmFuc2l0aW9uSW5NYXAocHJvcGVydHksIGFmdGVyQ2hhbmdlU3R5bGUsIGVsZW1l
bnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgewotICAgICAgICBhdXRv
IHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbiA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpLnRha2UocHJvcGVydHkpOworICAgIGlmIChtYXRjaGluZ0JhY2tp
bmdBbmltYXRpb24gJiYgc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5
KHByb3BlcnR5KSAmJiAhcHJvcGVydHlJblN0eWxlTWF0Y2hlc1ZhbHVlRm9yVHJhbnNpdGlvbklu
TWFwKHByb3BlcnR5LCBhZnRlckNoYW5nZVN0eWxlLCBzdHlsZWFibGUuZW5zdXJlUnVubmluZ1Ry
YW5zaXRpb25zQnlQcm9wZXJ0eSgpKSkgeworICAgICAgICBhdXRvIHByZXZpb3VzbHlSdW5uaW5n
VHJhbnNpdGlvbiA9IHN0eWxlYWJsZS5lbnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5
KCkudGFrZShwcm9wZXJ0eSk7CiAgICAgICAgIGF1dG8mIHByZXZpb3VzbHlSdW5uaW5nVHJhbnNp
dGlvbkN1cnJlbnRTdHlsZSA9IHByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbi0+Y3VycmVudFN0
eWxlKCk7CiAgICAgICAgIC8vIDQuIElmIHRoZSBlbGVtZW50IGhhcyBhIHJ1bm5pbmcgdHJhbnNp
dGlvbiBmb3IgdGhlIHByb3BlcnR5LCB0aGVyZSBpcyBhIG1hdGNoaW5nIHRyYW5zaXRpb24tcHJv
cGVydHkgdmFsdWUsIGFuZCB0aGUgZW5kIHZhbHVlIG9mIHRoZSBydW5uaW5nCiAgICAgICAgIC8v
ICAgIHRyYW5zaXRpb24gaXMgbm90IGVxdWFsIHRvIHRoZSB2YWx1ZSBvZiB0aGUgcHJvcGVydHkg
aW4gdGhlIGFmdGVyLWNoYW5nZSBzdHlsZSwgdGhlbjoKQEAgLTQ4MSw3ICs0ODYsNyBAQCB2b2lk
IEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRBbmRQcm9w
ZXJ0eShFbGVtZW50JiBlbGVtZQogICAgICAgICAgICAgYXV0byBkZWxheSA9IG1hdGNoaW5nQmFj
a2luZ0FuaW1hdGlvbi0+ZGVsYXkoKSA8IDAgPyBTZWNvbmRzKG1hdGNoaW5nQmFja2luZ0FuaW1h
dGlvbi0+ZGVsYXkoKSkgKiByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yIDogU2Vjb25kcyhtYXRj
aGluZ0JhY2tpbmdBbmltYXRpb24tPmRlbGF5KCkpOwogICAgICAgICAgICAgYXV0byBkdXJhdGlv
biA9IFNlY29uZHMobWF0Y2hpbmdCYWNraW5nQW5pbWF0aW9uLT5kdXJhdGlvbigpKSAqIHJldmVy
c2luZ1Nob3J0ZW5pbmdGYWN0b3I7CiAKLSAgICAgICAgICAgIGVsZW1lbnQuZW5zdXJlUnVubmlu
Z1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpLnNldChwcm9wZXJ0eSwgQ1NTVHJhbnNpdGlvbjo6Y3Jl
YXRlKGVsZW1lbnQsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGltZSwgKm1hdGNoaW5nQmFja2luZ0Fu
aW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlvbkN1cnJlbnRTdHlsZSwgYWZ0ZXJD
aGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUs
IHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKKyAgICAgICAgICAgIHN0eWxlYWJsZS5lbnN1
cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFuc2l0
aW9uOjpjcmVhdGUoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgZ2VuZXJhdGlvblRpbWUsICptYXRjaGlu
Z0JhY2tpbmdBbmltYXRpb24sICZwcmV2aW91c2x5UnVubmluZ1RyYW5zaXRpb25DdXJyZW50U3R5
bGUsIGFmdGVyQ2hhbmdlU3R5bGUsIGRlbGF5LCBkdXJhdGlvbiwgcmV2ZXJzaW5nQWRqdXN0ZWRT
dGFydFN0eWxlLCByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKSk7CiAgICAgICAgIH0gZWxzZSB7
CiAgICAgICAgICAgICAvLyA0LiBPdGhlcndpc2UsIGltcGxlbWVudGF0aW9ucyBtdXN0IGNhbmNl
bCB0aGUgcnVubmluZyB0cmFuc2l0aW9uCiAgICAgICAgICAgICBwcmV2aW91c2x5UnVubmluZ1Ry
YW5zaXRpb24tPmNhbmNlbEZyb21TdHlsZSgpOwpAQCAtNDk3LDE3ICs1MDIsMTcgQEAgdm9pZCBB
bmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JFbGVtZW50QW5kUHJvcGVy
dHkoRWxlbWVudCYgZWxlbWUKICAgICAgICAgICAgIGF1dG8gZHVyYXRpb24gPSBTZWNvbmRzKG1h
dGNoaW5nQmFja2luZ0FuaW1hdGlvbi0+ZHVyYXRpb24oKSk7CiAgICAgICAgICAgICBhdXRvJiBy
ZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUgPSBjdXJyZW50U3R5bGU7CiAgICAgICAgICAgICBh
dXRvIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IgPSAxOwotICAgICAgICAgICAgZWxlbWVudC5l
bnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkuc2V0KHByb3BlcnR5LCBDU1NUcmFu
c2l0aW9uOjpjcmVhdGUoZWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCAqbWF0Y2hp
bmdCYWNraW5nQW5pbWF0aW9uLCAmcHJldmlvdXNseVJ1bm5pbmdUcmFuc2l0aW9uQ3VycmVudFN0
eWxlLCBhZnRlckNoYW5nZVN0eWxlLCBkZWxheSwgZHVyYXRpb24sIHJldmVyc2luZ0FkanVzdGVk
U3RhcnRTdHlsZSwgcmV2ZXJzaW5nU2hvcnRlbmluZ0ZhY3RvcikpOworICAgICAgICAgICAgc3R5
bGVhYmxlLmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQocHJvcGVydHks
IENTU1RyYW5zaXRpb246OmNyZWF0ZShzdHlsZWFibGUsIHByb3BlcnR5LCBnZW5lcmF0aW9uVGlt
ZSwgKm1hdGNoaW5nQmFja2luZ0FuaW1hdGlvbiwgJnByZXZpb3VzbHlSdW5uaW5nVHJhbnNpdGlv
bkN1cnJlbnRTdHlsZSwgYWZ0ZXJDaGFuZ2VTdHlsZSwgZGVsYXksIGR1cmF0aW9uLCByZXZlcnNp
bmdBZGp1c3RlZFN0YXJ0U3R5bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKICAgICAg
ICAgfQogICAgIH0KIH0KIAotdm9pZCBBbmltYXRpb25UaW1lbGluZTo6dXBkYXRlQ1NTVHJhbnNp
dGlvbnNGb3JFbGVtZW50KEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IFJlbmRlclN0eWxlJiBjdXJy
ZW50U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSkKK3ZvaWQgQW5pbWF0aW9uVGlt
ZWxpbmU6OnVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYg
c3R5bGVhYmxlLCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJT
dHlsZSYgbmV3U3R5bGUpCiB7CiAgICAgLy8gSW4gY2FzZSB0aGlzIGVsZW1lbnQgaXMgbmV3bHkg
Z2V0dGluZyBhICJkaXNwbGF5OiBub25lIiB3ZSBuZWVkIHRvIGNhbmNlbCBhbGwgb2YgaXRzIHRy
YW5zaXRpb25zIGFuZCBkaXNyZWdhcmQgbmV3IG9uZXMuCiAgICAgaWYgKGN1cnJlbnRTdHlsZS5o
YXNUcmFuc2l0aW9ucygpICYmIGN1cnJlbnRTdHlsZS5kaXNwbGF5KCkgIT0gRGlzcGxheVR5cGU6
Ok5vbmUgJiYgbmV3U3R5bGUuZGlzcGxheSgpID09IERpc3BsYXlUeXBlOjpOb25lKSB7Ci0gICAg
ICAgIGlmIChlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0aW9ucygpKSB7Ci0gICAgICAgICAgICBh
dXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eSgpOworICAgICAgICBpZiAoc3R5bGVhYmxlLmhhc1J1bm5pbmdUcmFuc2l0aW9u
cygpKSB7CisgICAgICAgICAgICBhdXRvIHJ1bm5pbmdUcmFuc2l0aW9ucyA9IHN0eWxlYWJsZS5l
bnN1cmVSdW5uaW5nVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CiAgICAgICAgICAgICBmb3IgKGNv
bnN0IGF1dG8mIGNzc1RyYW5zaXRpb25zQnlDU1NQcm9wZXJ0eUlETWFwSXRlbSA6IHJ1bm5pbmdU
cmFuc2l0aW9ucykKICAgICAgICAgICAgICAgICBjc3NUcmFuc2l0aW9uc0J5Q1NTUHJvcGVydHlJ
RE1hcEl0ZW0udmFsdWUtPmNhbmNlbEZyb21TdHlsZSgpOwogICAgICAgICB9CkBAIC01MzIsMTMg
KzUzNywxMyBAQCB2b2lkIEFuaW1hdGlvblRpbWVsaW5lOjp1cGRhdGVDU1NUcmFuc2l0aW9uc0Zv
ckVsZW1lbnQoRWxlbWVudCYgZWxlbWVudCwgY29uc3QgUgogICAgICAgICAgICAgYXV0byBwcm9w
ZXJ0eSA9IENTU1Byb3BlcnR5QW5pbWF0aW9uOjpnZXRQcm9wZXJ0eUF0SW5kZXgocHJvcGVydHlJ
bmRleCwgaXNTaG9ydGhhbmQpOwogICAgICAgICAgICAgaWYgKGlzU2hvcnRoYW5kICYmICppc1No
b3J0aGFuZCkKICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSAgICAgICAgICAgIHVwZGF0ZUNT
U1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFByb3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJy
ZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0aW9uVGltZSk7CisgICAgICAgICAgICB1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZUFuZFByb3BlcnR5KHN0eWxlYWJsZSwgcHJvcGVydHks
IGN1cnJlbnRTdHlsZSwgbmV3U3R5bGUsIGdlbmVyYXRpb25UaW1lKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQogCiAgICAgZm9yIChhdXRvIHByb3BlcnR5IDogdHJhbnNpdGlv
blByb3BlcnRpZXMpCi0gICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudEFuZFBy
b3BlcnR5KGVsZW1lbnQsIHByb3BlcnR5LCBjdXJyZW50U3R5bGUsIG5ld1N0eWxlLCBnZW5lcmF0
aW9uVGltZSk7CisgICAgICAgIHVwZGF0ZUNTU1RyYW5zaXRpb25zRm9yU3R5bGVhYmxlQW5kUHJv
cGVydHkoc3R5bGVhYmxlLCBwcm9wZXJ0eSwgY3VycmVudFN0eWxlLCBuZXdTdHlsZSwgZ2VuZXJh
dGlvblRpbWUpOwogfQogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9hbmltYXRpb24vQW5pbWF0aW9uVGltZWxpbmUuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5oCmluZGV4IDlkNDJmNzg5ZmI4NjIyZDljYTAw
M2Q5NWIzYWE2ZTk2ZjhhMTBlYjYuLmJlMmY2YzE1YjUwNzk3ODBmOTZlZGI4ZWIzODFkMTJmMjJl
M2EzOGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1l
bGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9BbmltYXRpb25UaW1lbGluZS5o
CkBAIC0yOSw2ICsyOSw3IEBACiAjaW5jbHVkZSAiQ1NTVmFsdWUuaCIKICNpbmNsdWRlICJDb21w
dXRlZEVmZmVjdFRpbWluZy5oIgogI2luY2x1ZGUgIlJlbmRlclN0eWxlLmgiCisjaW5jbHVkZSAi
U3R5bGVhYmxlLmgiCiAjaW5jbHVkZSAiV2ViQW5pbWF0aW9uLmgiCiAjaW5jbHVkZSA8d3RmL0Zv
cndhcmQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgpAQCAtNDQsNyArNDUsNiBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiBjbGFzcyBDU1NBbmltYXRpb247CiBjbGFzcyBDU1NUcmFuc2l0aW9u
OwogY2xhc3MgRGVjbGFyYXRpdmVBbmltYXRpb247Ci1jbGFzcyBFbGVtZW50OwogCiBjbGFzcyBB
bmltYXRpb25UaW1lbGluZSA6IHB1YmxpYyBSZWZDb3VudGVkPEFuaW1hdGlvblRpbWVsaW5lPiwg
cHVibGljIENhbk1ha2VXZWFrUHRyPEFuaW1hdGlvblRpbWVsaW5lPiB7CiBwdWJsaWM6CkBAIC02
MSwxOCArNjEsMTggQEAgcHVibGljOgogICAgIE9wdGlvbmFsPGRvdWJsZT4gYmluZGluZ3NDdXJy
ZW50VGltZSgpOwogICAgIHZpcnR1YWwgT3B0aW9uYWw8U2Vjb25kcz4gY3VycmVudFRpbWUoKSB7
IHJldHVybiBtX2N1cnJlbnRUaW1lOyB9CiAKLSAgICB2b2lkIGVsZW1lbnRXYXNSZW1vdmVkKEVs
ZW1lbnQmKTsKKyAgICB2b2lkIGVsZW1lbnRXYXNSZW1vdmVkKGNvbnN0IFN0eWxlYWJsZSYpOwog
Ci0gICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXJGb3JFbGVtZW50KEVsZW1lbnQmKTsKLSAgICB2
b2lkIGNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvckVsZW1lbnQoRWxlbWVudCYsIFdlYkFu
aW1hdGlvbjo6U2lsZW50bHkpOworICAgIHZvaWQgd2lsbENoYW5nZVJlbmRlcmVyRm9yU3R5bGVh
YmxlKGNvbnN0IFN0eWxlYWJsZSYpOworICAgIHZvaWQgY2FuY2VsRGVjbGFyYXRpdmVBbmltYXRp
b25zRm9yU3R5bGVhYmxlKGNvbnN0IFN0eWxlYWJsZSYsIFdlYkFuaW1hdGlvbjo6U2lsZW50bHkp
OwogCi0gICAgdm9pZCBhbmltYXRpb25XYXNBZGRlZFRvRWxlbWVudChXZWJBbmltYXRpb24mLCBF
bGVtZW50Jik7Ci0gICAgdm9pZCBhbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoV2ViQW5p
bWF0aW9uJiwgRWxlbWVudCYpOworICAgIHZvaWQgYW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJs
ZShXZWJBbmltYXRpb24mLCBjb25zdCBTdHlsZWFibGUmKTsKKyAgICB2b2lkIGFuaW1hdGlvbldh
c1JlbW92ZWRGcm9tU3R5bGVhYmxlKFdlYkFuaW1hdGlvbiYsIGNvbnN0IFN0eWxlYWJsZSYpOwog
Ci0gICAgdm9pZCByZW1vdmVEZWNsYXJhdGl2ZUFuaW1hdGlvbkZyb21MaXN0c0Zvck93bmluZ0Vs
ZW1lbnQoV2ViQW5pbWF0aW9uJiwgRWxlbWVudCYpOworICAgIHZvaWQgcmVtb3ZlRGVjbGFyYXRp
dmVBbmltYXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KFdlYkFuaW1hdGlvbiYsIGNvbnN0
IFN0eWxlYWJsZSYpOwogCi0gICAgdm9pZCB1cGRhdGVDU1NBbmltYXRpb25zRm9yRWxlbWVudChF
bGVtZW50JiwgY29uc3QgUmVuZGVyU3R5bGUqIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5
bGUmIGFmdGVyQ2hhbmdlU3R5bGUpOwotICAgIHZvaWQgdXBkYXRlQ1NTVHJhbnNpdGlvbnNGb3JF
bGVtZW50KEVsZW1lbnQmLCBjb25zdCBSZW5kZXJTdHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUpOworICAgIHZvaWQgdXBkYXRlQ1NTQW5pbWF0aW9uc0ZvclN0
eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJTdHlsZSogY3VycmVudFN0eWxl
LCBjb25zdCBSZW5kZXJTdHlsZSYgYWZ0ZXJDaGFuZ2VTdHlsZSk7CisgICAgdm9pZCB1cGRhdGVD
U1NUcmFuc2l0aW9uc0ZvclN0eWxlYWJsZShjb25zdCBTdHlsZWFibGUmLCBjb25zdCBSZW5kZXJT
dHlsZSYgY3VycmVudFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUpOwogCiBwcm90
ZWN0ZWQ6CiAgICAgZXhwbGljaXQgQW5pbWF0aW9uVGltZWxpbmUoKTsKQEAgLTgyLDggKzgyLDgg
QEAgcHJvdGVjdGVkOgogCiBwcml2YXRlOgogICAgIHZvaWQgdXBkYXRlR2xvYmFsUG9zaXRpb24o
V2ViQW5pbWF0aW9uJik7Ci0gICAgdm9pZCB1cGRhdGVDU1NUcmFuc2l0aW9uc0ZvckVsZW1lbnRB
bmRQcm9wZXJ0eShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgY29uc3QgUmVuZGVyU3R5bGUmIGN1
cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVyQ2hhbmdlU3R5bGUsIGNvbnN0IE1v
bm90b25pY1RpbWUpOwotICAgIHZvaWQgcmVtb3ZlQ1NTQW5pbWF0aW9uQ3JlYXRlZEJ5TWFya3Vw
KEVsZW1lbnQmLCBDU1NBbmltYXRpb24mKTsKKyAgICB2b2lkIHVwZGF0ZUNTU1RyYW5zaXRpb25z
Rm9yU3R5bGVhYmxlQW5kUHJvcGVydHkoY29uc3QgU3R5bGVhYmxlJiwgQ1NTUHJvcGVydHlJRCwg
Y29uc3QgUmVuZGVyU3R5bGUmIGN1cnJlbnRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIGFmdGVy
Q2hhbmdlU3R5bGUsIGNvbnN0IE1vbm90b25pY1RpbWUpOworICAgIHZvaWQgcmVtb3ZlQ1NTQW5p
bWF0aW9uQ3JlYXRlZEJ5TWFya3VwKGNvbnN0IFN0eWxlYWJsZSYsIENTU0FuaW1hdGlvbiYpOwog
CiAgICAgTWFya2FibGU8U2Vjb25kcywgU2Vjb25kczo6TWFya2FibGVUcmFpdHM+IG1fY3VycmVu
dFRpbWU7CiB9OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1h
dGlvbi5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAppbmRl
eCA3MTlkOGQzOTYyZGZiMDEzNjE5MzFmYjRmMzUxNWI0ZTQ1NTEzNDJmLi5jOTBkZDFiOTk2MjUw
YjRlYWM4ZDkyZDYyNzMzYmFmNWNhNzhhYTg1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vQ1NTQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
Q1NTQW5pbWF0aW9uLmNwcApAQCAtMjgsNyArMjgsNiBAQAogCiAjaW5jbHVkZSAiQW5pbWF0aW9u
LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRXZlbnQuaCIKLSNpbmNsdWRlICJFbGVtZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uLmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlIDx3dGYvSXNvTWFsbG9jSW5saW5lcy5oPgpAQCAtMzcsNyArMzYsNyBA
QCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChDU1NB
bmltYXRpb24pOwogCi1SZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246OmNyZWF0ZShFbGVt
ZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNv
bnN0IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQor
UmVmPENTU0FuaW1hdGlvbj4gQ1NTQW5pbWF0aW9uOjpjcmVhdGUoY29uc3QgU3R5bGVhYmxlJiBv
d25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24sIGNvbnN0IFJl
bmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogewogICAg
IGF1dG8gcmVzdWx0ID0gYWRvcHRSZWYoKm5ldyBDU1NBbmltYXRpb24ob3duaW5nRWxlbWVudCwg
YmFja2luZ0FuaW1hdGlvbikpOwogICAgIHJlc3VsdC0+aW5pdGlhbGl6ZShvbGRTdHlsZSwgbmV3
U3R5bGUpOwpAQCAtNDcsNyArNDYsNyBAQCBSZWY8Q1NTQW5pbWF0aW9uPiBDU1NBbmltYXRpb246
OmNyZWF0ZShFbGVtZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mCiAgICAgcmV0
dXJuIHJlc3VsdDsKIH0KIAotQ1NTQW5pbWF0aW9uOjpDU1NBbmltYXRpb24oRWxlbWVudCYgZWxl
bWVudCwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5nQW5pbWF0aW9uKQorQ1NTQW5pbWF0aW9uOjpD
U1NBbmltYXRpb24oY29uc3QgU3R5bGVhYmxlJiBlbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJh
Y2tpbmdBbmltYXRpb24pCiAgICAgOiBEZWNsYXJhdGl2ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNr
aW5nQW5pbWF0aW9uKQogICAgICwgbV9hbmltYXRpb25OYW1lKGJhY2tpbmdBbmltYXRpb24ubmFt
ZSgpKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlv
bi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NTU0FuaW1hdGlvbi5oCmluZGV4IGUzYmM5
YTY5ODg4OGZlZjZmM2EzNmZhMWQwZWQwZjVlNWFkNjkyMzMuLjJjMDVhYjU1YWRlZDFjNjFhNzY3
ZmQ4OTQzODg5YjM5ODY3MTc2ZGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlv
bi9DU1NBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vQ1NTQW5pbWF0
aW9uLmgKQEAgLTI2LDE5ICsyNiwxOSBAQAogI3ByYWdtYSBvbmNlCiAKICNpbmNsdWRlICJEZWNs
YXJhdGl2ZUFuaW1hdGlvbi5oIgorI2luY2x1ZGUgIlN0eWxlYWJsZS5oIgogI2luY2x1ZGUgPHd0
Zi9PcHRpb25TZXQuaD4KICNpbmNsdWRlIDx3dGYvUmVmLmg+CiAKIG5hbWVzcGFjZSBXZWJDb3Jl
IHsKIAogY2xhc3MgQW5pbWF0aW9uOwotY2xhc3MgRWxlbWVudDsKIGNsYXNzIFJlbmRlclN0eWxl
OwogCiBjbGFzcyBDU1NBbmltYXRpb24gZmluYWwgOiBwdWJsaWMgRGVjbGFyYXRpdmVBbmltYXRp
b24gewogICAgIFdURl9NQUtFX0lTT19BTExPQ0FURUQoQ1NTQW5pbWF0aW9uKTsKIHB1YmxpYzoK
LSAgICBzdGF0aWMgUmVmPENTU0FuaW1hdGlvbj4gY3JlYXRlKEVsZW1lbnQmLCBjb25zdCBBbmlt
YXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiBu
ZXdTdHlsZSk7CisgICAgc3RhdGljIFJlZjxDU1NBbmltYXRpb24+IGNyZWF0ZShjb25zdCBTdHls
ZWFibGUmLCBjb25zdCBBbmltYXRpb24mLCBjb25zdCBSZW5kZXJTdHlsZSogb2xkU3R5bGUsIGNv
bnN0IFJlbmRlclN0eWxlJiBuZXdTdHlsZSk7CiAgICAgfkNTU0FuaW1hdGlvbigpID0gZGVmYXVs
dDsKIAogICAgIGJvb2wgaXNDU1NBbmltYXRpb24oKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB0
cnVlOyB9CkBAIC00OCw3ICs0OCw3IEBAIHB1YmxpYzoKICAgICB2b2lkIGVmZmVjdEtleWZyYW1l
c1dlcmVTZXRVc2luZ0JpbmRpbmdzKCk7CiAKIHByaXZhdGU6Ci0gICAgQ1NTQW5pbWF0aW9uKEVs
ZW1lbnQmLCBjb25zdCBBbmltYXRpb24mKTsKKyAgICBDU1NBbmltYXRpb24oY29uc3QgU3R5bGVh
YmxlJiwgY29uc3QgQW5pbWF0aW9uJik7CiAKICAgICB2b2lkIHN5bmNQcm9wZXJ0aWVzV2l0aEJh
Y2tpbmdBbmltYXRpb24oKSBmaW5hbDsKICAgICBSZWY8QW5pbWF0aW9uRXZlbnRCYXNlPiBjcmVh
dGVFdmVudChjb25zdCBBdG9tU3RyaW5nJiBldmVudFR5cGUsIGRvdWJsZSBlbGFwc2VkVGltZSwg
Y29uc3QgU3RyaW5nJiBwc2V1ZG9JZCwgT3B0aW9uYWw8U2Vjb25kcz4gdGltZWxpbmVUaW1lKSBm
aW5hbDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9u
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9uLmNwcAppbmRleCAy
ZDAyNmY1ZjNmMjg1YTU3ODYwNDViNjhkMDA0YmYwMDFkMjAyOTQ0Li45ZTYwNjA5MWMxODg5ZWI3
OGFhZTE4OTZmZDBjMTU0NTQzZjY5ZWRlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0NT
U1RyYW5zaXRpb24uY3BwCkBAIC0yOCw3ICsyOCw2IEBACiAKICNpbmNsdWRlICJBbmltYXRpb24u
aCIKICNpbmNsdWRlICJEb2N1bWVudFRpbWVsaW5lLmgiCi0jaW5jbHVkZSAiRWxlbWVudC5oIgog
I2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogI2luY2x1ZGUgIktleWZyYW1l
RWZmZWN0LmgiCiAjaW5jbHVkZSAiVHJhbnNpdGlvbkV2ZW50LmgiCkBAIC0zOCw3ICszNyw3IEBA
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogV1RGX01BS0VfSVNPX0FMTE9DQVRFRF9JTVBMKENTU1Ry
YW5zaXRpb24pOwogCi1SZWY8Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKEVs
ZW1lbnQmIG93bmluZ0VsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIE1vbm90b25pY1Rp
bWUgZ2VuZXJhdGlvblRpbWUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29u
c3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNl
Y29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNp
bmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKQor
UmVmPENTU1RyYW5zaXRpb24+IENTU1RyYW5zaXRpb246OmNyZWF0ZShjb25zdCBTdHlsZWFibGUm
IG93bmluZ0VsZW1lbnQsIENTU1Byb3BlcnR5SUQgcHJvcGVydHksIE1vbm90b25pY1RpbWUgZ2Vu
ZXJhdGlvblRpbWUsIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbiwgY29uc3QgUmVu
ZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNlY29uZHMg
ZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1
c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKQogewogICAg
IEFTU0VSVChvbGRTdHlsZSk7CiAgICAgYXV0byByZXN1bHQgPSBhZG9wdFJlZigqbmV3IENTU1Ry
YW5zaXRpb24ob3duaW5nRWxlbWVudCwgcHJvcGVydHksIGdlbmVyYXRpb25UaW1lLCBiYWNraW5n
QW5pbWF0aW9uLCAqb2xkU3R5bGUsIG5ld1N0eWxlLCByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5
bGUsIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpKTsKQEAgLTUwLDExICs0OSwxMSBAQCBSZWY8
Q1NTVHJhbnNpdGlvbj4gQ1NTVHJhbnNpdGlvbjo6Y3JlYXRlKEVsZW1lbnQmIG93bmluZ0VsZW1l
bnQsIENTU1Byb3BlcnR5SUQgcAogICAgIHJldHVybiByZXN1bHQ7CiB9CiAKLUNTU1RyYW5zaXRp
b246OkNTU1RyYW5zaXRpb24oRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0
eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNraW5n
QW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxl
JiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRT
dHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCi0gICAgOiBEZWNsYXJhdGl2
ZUFuaW1hdGlvbihlbGVtZW50LCBiYWNraW5nQW5pbWF0aW9uKQorQ1NTVHJhbnNpdGlvbjo6Q1NT
VHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmIHN0eWxlYWJsZSwgQ1NTUHJvcGVydHlJRCBwcm9w
ZXJ0eSwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiBiYWNr
aW5nQW5pbWF0aW9uLCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0
eWxlJiB0YXJnZXRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3Rh
cnRTdHlsZSwgZG91YmxlIHJldmVyc2luZ1Nob3J0ZW5pbmdGYWN0b3IpCisgICAgOiBEZWNsYXJh
dGl2ZUFuaW1hdGlvbihzdHlsZWFibGUsIGJhY2tpbmdBbmltYXRpb24pCiAgICAgLCBtX3Byb3Bl
cnR5KHByb3BlcnR5KQogICAgICwgbV9nZW5lcmF0aW9uVGltZShnZW5lcmF0aW9uVGltZSkKLSAg
ICAsIG1fdGltZWxpbmVUaW1lQXRDcmVhdGlvbihlbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUo
KS5jdXJyZW50VGltZSgpKQorICAgICwgbV90aW1lbGluZVRpbWVBdENyZWF0aW9uKHN0eWxlYWJs
ZS5lbGVtZW50LmRvY3VtZW50KCkudGltZWxpbmUoKS5jdXJyZW50VGltZSgpKQogICAgICwgbV90
YXJnZXRTdHlsZShSZW5kZXJTdHlsZTo6Y2xvbmVQdHIodGFyZ2V0U3R5bGUpKQogICAgICwgbV9j
dXJyZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKG9sZFN0eWxlKSkKICAgICAsIG1fcmV2
ZXJzaW5nQWRqdXN0ZWRTdGFydFN0eWxlKFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZXZlcnNpbmdB
ZGp1c3RlZFN0YXJ0U3R5bGUpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9u
L0NTU1RyYW5zaXRpb24uaCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9DU1NUcmFuc2l0aW9u
LmgKaW5kZXggZDI3NWJiYjA0MTVkNzc3OGMzZDliYTAxNmI0MDQ5YjQ3YWMwMTFlNS4uNThkNmZk
NzQxZjFjYzQ1ZDkwZmQ1YWRiMjEzZjg3NTU2ZmRjMjYwNyAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvYW5pbWF0aW9uL0NTU1RyYW5zaXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vQ1NTVHJhbnNpdGlvbi5oCkBAIC0yNyw2ICsyNyw3IEBACiAKICNpbmNsdWRlICJDU1NQ
cm9wZXJ0eU5hbWVzLmgiCiAjaW5jbHVkZSAiRGVjbGFyYXRpdmVBbmltYXRpb24uaCIKKyNpbmNs
dWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlIDx3dGYvTWFya2FibGUuaD4KICNpbmNsdWRlIDx3
dGYvTW9ub3RvbmljVGltZS5oPgogI2luY2x1ZGUgPHd0Zi9PcHRpb25hbC5oPgpAQCAtMzYsMTMg
KzM3LDEyIEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEFuaW1hdGlvbjsKLWNsYXNz
IEVsZW1lbnQ7CiBjbGFzcyBSZW5kZXJTdHlsZTsKIAogY2xhc3MgQ1NTVHJhbnNpdGlvbiBmaW5h
bCA6IHB1YmxpYyBEZWNsYXJhdGl2ZUFuaW1hdGlvbiB7CiAgICAgV1RGX01BS0VfSVNPX0FMTE9D
QVRFRChDU1NUcmFuc2l0aW9uKTsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPENTU1RyYW5zaXRp
b24+IGNyZWF0ZShFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0
aW9uVGltZSwgY29uc3QgQW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBj
b25zdCBSZW5kZXJTdHlsZSYgbmV3U3R5bGUsIFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRp
b24sIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJs
ZSk7CisgICAgc3RhdGljIFJlZjxDU1NUcmFuc2l0aW9uPiBjcmVhdGUoY29uc3QgU3R5bGVhYmxl
JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3QgQW5p
bWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUqIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHlsZSYg
bmV3U3R5bGUsIFNlY29uZHMgZGVsYXksIFNlY29uZHMgZHVyYXRpb24sIGNvbnN0IFJlbmRlclN0
eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0U3R5bGUsIGRvdWJsZSk7CiAgICAgfkNTU1RyYW5z
aXRpb24oKSA9IGRlZmF1bHQ7CiAKICAgICBib29sIGlzQ1NTVHJhbnNpdGlvbigpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHRydWU7IH0KQEAgLTU2LDcgKzU2LDcgQEAgcHVibGljOgogICAgIGRv
dWJsZSByZXZlcnNpbmdTaG9ydGVuaW5nRmFjdG9yKCkgY29uc3QgeyByZXR1cm4gbV9yZXZlcnNp
bmdTaG9ydGVuaW5nRmFjdG9yOyB9CiAKIHByaXZhdGU6Ci0gICAgQ1NTVHJhbnNpdGlvbihFbGVt
ZW50JiwgQ1NTUHJvcGVydHlJRCwgTW9ub3RvbmljVGltZSBnZW5lcmF0aW9uVGltZSwgY29uc3Qg
QW5pbWF0aW9uJiwgY29uc3QgUmVuZGVyU3R5bGUmIG9sZFN0eWxlLCBjb25zdCBSZW5kZXJTdHls
ZSYgdGFyZ2V0U3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiByZXZlcnNpbmdBZGp1c3RlZFN0YXJ0
U3R5bGUsIGRvdWJsZSk7CisgICAgQ1NTVHJhbnNpdGlvbihjb25zdCBTdHlsZWFibGUmLCBDU1NQ
cm9wZXJ0eUlELCBNb25vdG9uaWNUaW1lIGdlbmVyYXRpb25UaW1lLCBjb25zdCBBbmltYXRpb24m
LCBjb25zdCBSZW5kZXJTdHlsZSYgb2xkU3R5bGUsIGNvbnN0IFJlbmRlclN0eWxlJiB0YXJnZXRT
dHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIHJldmVyc2luZ0FkanVzdGVkU3RhcnRTdHlsZSwgZG91
YmxlKTsKICAgICB2b2lkIHNldFRpbWluZ1Byb3BlcnRpZXMoU2Vjb25kcyBkZWxheSwgU2Vjb25k
cyBkdXJhdGlvbik7CiAgICAgUmVmPEFuaW1hdGlvbkV2ZW50QmFzZT4gY3JlYXRlRXZlbnQoY29u
c3QgQXRvbVN0cmluZyYgZXZlbnRUeXBlLCBkb3VibGUgZWxhcHNlZFRpbWUsIGNvbnN0IFN0cmlu
ZyYgcHNldWRvSWQsIE9wdGlvbmFsPFNlY29uZHM+IHRpbWVsaW5lVGltZSkgZmluYWw7CiAgICAg
dm9pZCByZXNvbHZlKFJlbmRlclN0eWxlJiwgT3B0aW9uYWw8U2Vjb25kcz4pIGZpbmFsOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9EZWNsYXJhdGl2ZUFuaW1hdGlvbi5jcHAKaW5k
ZXggZDU1YmQxMDU5MTMzOTBlOThmMDkzMWIwOGE0NWZhYTYzN2VmMWQ0My4uZTRmNzgyOThlNWZm
MDkxMzYzMWMyM2QyZjUxZDA5ZmI0ZDUwMWUzYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9uLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uY3BwCkBAIC00Myw5ICs0MywxMCBAQCBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKIFdURl9NQUtFX0lTT19BTExPQ0FURURfSU1QTChEZWNsYXJhdGl2
ZUFuaW1hdGlvbik7CiAKLURlY2xhcmF0aXZlQW5pbWF0aW9uOjpEZWNsYXJhdGl2ZUFuaW1hdGlv
bihFbGVtZW50JiBvd25pbmdFbGVtZW50LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRp
b24pCi0gICAgOiBXZWJBbmltYXRpb24ob3duaW5nRWxlbWVudC5kb2N1bWVudCgpKQotICAgICwg
bV9vd25pbmdFbGVtZW50KG1ha2VXZWFrUHRyKG93bmluZ0VsZW1lbnQpKQorRGVjbGFyYXRpdmVB
bmltYXRpb246OkRlY2xhcmF0aXZlQW5pbWF0aW9uKGNvbnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxl
LCBjb25zdCBBbmltYXRpb24mIGJhY2tpbmdBbmltYXRpb24pCisgICAgOiBXZWJBbmltYXRpb24o
c3R5bGVhYmxlLmVsZW1lbnQuZG9jdW1lbnQoKSkKKyAgICAsIG1fb3duaW5nRWxlbWVudChtYWtl
V2Vha1B0cihzdHlsZWFibGUuZWxlbWVudCkpCisgICAgLCBtX293bmluZ1BzZXVkb0lkKHN0eWxl
YWJsZS5wc2V1ZG9JZCkKICAgICAsIG1fYmFja2luZ0FuaW1hdGlvbihjb25zdF9jYXN0PEFuaW1h
dGlvbiY+KGJhY2tpbmdBbmltYXRpb24pKQogewogfQpAQCAtNTQsOSArNTUsMTEgQEAgRGVjbGFy
YXRpdmVBbmltYXRpb246On5EZWNsYXJhdGl2ZUFuaW1hdGlvbigpCiB7CiB9CiAKLUVsZW1lbnQq
IERlY2xhcmF0aXZlQW5pbWF0aW9uOjpvd25pbmdFbGVtZW50KCkgY29uc3QKK2NvbnN0IE9wdGlv
bmFsPGNvbnN0IFN0eWxlYWJsZT4gRGVjbGFyYXRpdmVBbmltYXRpb246Om93bmluZ0VsZW1lbnQo
KSBjb25zdAogewotICAgIHJldHVybiBtX293bmluZ0VsZW1lbnQuZ2V0KCk7CisgICAgaWYgKG1f
b3duaW5nRWxlbWVudCkKKyAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqbV9vd25pbmdFbGVtZW50
LmdldCgpLCBtX293bmluZ1BzZXVkb0lkKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OwogfQog
CiB2b2lkIERlY2xhcmF0aXZlQW5pbWF0aW9uOjp0aWNrKCkKQEAgLTkzLDcgKzk2LDcgQEAgdm9p
ZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZGlzYXNzb2NpYXRlRnJvbU93bmluZ0VsZW1lbnQoKQog
ICAgICAgICByZXR1cm47CiAKICAgICBpZiAoYXV0byogYW5pbWF0aW9uVGltZWxpbmUgPSB0aW1l
bGluZSgpKQotICAgICAgICBhbmltYXRpb25UaW1lbGluZS0+cmVtb3ZlRGVjbGFyYXRpdmVBbmlt
YXRpb25Gcm9tTGlzdHNGb3JPd25pbmdFbGVtZW50KCp0aGlzLCAqbV9vd25pbmdFbGVtZW50KTsK
KyAgICAgICAgYW5pbWF0aW9uVGltZWxpbmUtPnJlbW92ZURlY2xhcmF0aXZlQW5pbWF0aW9uRnJv
bUxpc3RzRm9yT3duaW5nRWxlbWVudCgqdGhpcywgKm93bmluZ0VsZW1lbnQoKSk7CiAgICAgbV9v
d25pbmdFbGVtZW50ID0gbnVsbHB0cjsKIH0KIApAQCAtMTEyLDEyICsxMTUsNyBAQCB2b2lkIERl
Y2xhcmF0aXZlQW5pbWF0aW9uOjppbml0aWFsaXplKGNvbnN0IFJlbmRlclN0eWxlKiBvbGRTdHls
ZSwgY29uc3QgUmVuZGVyUwogCiAgICAgQVNTRVJUKG1fb3duaW5nRWxlbWVudCk7CiAKLSAgICBp
ZiAoaXM8UHNldWRvRWxlbWVudD4obV9vd25pbmdFbGVtZW50LmdldCgpKSkgewotICAgICAgICBh
dXRvJiBwc2V1ZG9Pd25pbmdFbGVtZW50ID0gZG93bmNhc3Q8UHNldWRvRWxlbWVudD4oKm1fb3du
aW5nRWxlbWVudCk7Ci0gICAgICAgIEFTU0VSVChwc2V1ZG9Pd25pbmdFbGVtZW50Lmhvc3RFbGVt
ZW50KCkpOwotICAgICAgICBzZXRFZmZlY3QoS2V5ZnJhbWVFZmZlY3Q6OmNyZWF0ZSgqcHNldWRv
T3duaW5nRWxlbWVudC5ob3N0RWxlbWVudCgpLCBwc2V1ZG9Pd25pbmdFbGVtZW50LnBzZXVkb0lk
KCkpKTsKLSAgICB9IGVsc2UKLSAgICAgICAgc2V0RWZmZWN0KEtleWZyYW1lRWZmZWN0OjpjcmVh
dGUoKm1fb3duaW5nRWxlbWVudCwgbV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKSk7CisgICAg
c2V0RWZmZWN0KEtleWZyYW1lRWZmZWN0OjpjcmVhdGUoKm1fb3duaW5nRWxlbWVudCwgbV9vd25p
bmdQc2V1ZG9JZCkpOwogICAgIHNldFRpbWVsaW5lKCZtX293bmluZ0VsZW1lbnQtPmRvY3VtZW50
KCkudGltZWxpbmUoKSk7CiAgICAgZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCgpKS0+
Y29tcHV0ZURlY2xhcmF0aXZlQW5pbWF0aW9uQmxlbmRpbmdLZXlmcmFtZXMob2xkU3R5bGUsIG5l
d1N0eWxlKTsKICAgICBzeW5jUHJvcGVydGllc1dpdGhCYWNraW5nQW5pbWF0aW9uKCk7CkBAIC0z
NTIsNyArMzUwLDcgQEAgdm9pZCBEZWNsYXJhdGl2ZUFuaW1hdGlvbjo6ZW5xdWV1ZURPTUV2ZW50
KGNvbnN0IEF0b21TdHJpbmcmIGV2ZW50VHlwZSwgU2Vjb25kcwogICAgICAgICByZXR1cm47CiAK
ICAgICBhdXRvIHRpbWUgPSBzZWNvbmRzVG9XZWJBbmltYXRpb25zQVBJVGltZShlbGFwc2VkVGlt
ZSkgLyAxMDAwOwotICAgIGNvbnN0IGF1dG8mIHBzZXVkb0lkID0gUHNldWRvRWxlbWVudDo6cHNl
dWRvRWxlbWVudE5hbWVGb3JFdmVudHMobV9vd25pbmdFbGVtZW50LT5wc2V1ZG9JZCgpKTsKKyAg
ICBjb25zdCBhdXRvJiBwc2V1ZG9JZCA9IFBzZXVkb0VsZW1lbnQ6OnBzZXVkb0VsZW1lbnROYW1l
Rm9yRXZlbnRzKG1fb3duaW5nUHNldWRvSWQpOwogICAgIGF1dG8gdGltZWxpbmVUaW1lID0gdGlt
ZWxpbmUoKSA/IHRpbWVsaW5lKCktPmN1cnJlbnRUaW1lKCkgOiBXVEY6Om51bGxvcHQ7CiAgICAg
YXV0byBldmVudCA9IGNyZWF0ZUV2ZW50KGV2ZW50VHlwZSwgdGltZSwgcHNldWRvSWQsIHRpbWVs
aW5lVGltZSk7CiAgICAgZXZlbnQtPnNldFRhcmdldChtX293bmluZ0VsZW1lbnQuZ2V0KCkpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RlY2xhcmF0aXZlQW5pbWF0aW9u
LmggYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAppbmRl
eCBhZGI4NjY1Y2QyY2VkZjYxNWQwMzJhYWE2ZmVkOTE0NzIwZjM1OWRlLi4zMWM0ZjY1MzM5N2Fi
ODhkNzM1YjVjMmRhYWFhYjFjY2IzZWQ4MzZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9hbmlt
YXRpb24vRGVjbGFyYXRpdmVBbmltYXRpb24uaApAQCAtMjcsNiArMjcsNyBAQAogCiAjaW5jbHVk
ZSAiQW5pbWF0aW9uRWZmZWN0LmgiCiAjaW5jbHVkZSAiQW5pbWF0aW9uRWZmZWN0UGhhc2UuaCIK
KyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb24uaCIKICNpbmNs
dWRlIDx3dGYvUmVmLmg+CiAjaW5jbHVkZSA8d3RmL1dlYWtQdHIuaD4KQEAgLTQ1LDcgKzQ2LDcg
QEAgcHVibGljOgogCiAgICAgYm9vbCBpc0RlY2xhcmF0aXZlQW5pbWF0aW9uKCkgY29uc3QgZmlu
YWwgeyByZXR1cm4gdHJ1ZTsgfQogCi0gICAgRWxlbWVudCogb3duaW5nRWxlbWVudCgpIGNvbnN0
OworICAgIGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4gb3duaW5nRWxlbWVudCgpIGNv
bnN0OwogICAgIGNvbnN0IEFuaW1hdGlvbiYgYmFja2luZ0FuaW1hdGlvbigpIGNvbnN0IHsgcmV0
dXJuIG1fYmFja2luZ0FuaW1hdGlvbjsgfQogICAgIHZvaWQgc2V0QmFja2luZ0FuaW1hdGlvbihj
b25zdCBBbmltYXRpb24mKTsKICAgICB2b2lkIGNhbmNlbEZyb21TdHlsZSgpOwpAQCAtNzIsNyAr
NzMsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBmbHVzaFBlbmRpbmdTdHlsZUNoYW5nZXMoKSBjb25z
dDsKIAogcHJvdGVjdGVkOgotICAgIERlY2xhcmF0aXZlQW5pbWF0aW9uKEVsZW1lbnQmLCBjb25z
dCBBbmltYXRpb24mKTsKKyAgICBEZWNsYXJhdGl2ZUFuaW1hdGlvbihjb25zdCBTdHlsZWFibGUm
LCBjb25zdCBBbmltYXRpb24mKTsKIAogICAgIHZpcnR1YWwgdm9pZCBpbml0aWFsaXplKGNvbnN0
IFJlbmRlclN0eWxlKiBvbGRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3luY1Byb3BlcnRpZXNXaXRoQmFja2luZ0FuaW1hdGlvbigpOwpAQCAt
OTAsNiArOTEsNyBAQCBwcml2YXRlOgogICAgIEFuaW1hdGlvbkVmZmVjdFBoYXNlIG1fcHJldmlv
dXNQaGFzZSB7IEFuaW1hdGlvbkVmZmVjdFBoYXNlOjpJZGxlIH07CiAKICAgICBXZWFrUHRyPEVs
ZW1lbnQ+IG1fb3duaW5nRWxlbWVudDsKKyAgICBQc2V1ZG9JZCBtX293bmluZ1BzZXVkb0lkOwog
ICAgIFJlZjxBbmltYXRpb24+IG1fYmFja2luZ0FuaW1hdGlvbjsKICAgICBkb3VibGUgbV9wcmV2
aW91c0l0ZXJhdGlvbjsKIH07CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24v
RG9jdW1lbnRUaW1lbGluZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5jcHAKaW5kZXggYjQzYzNjMTBmMmU5MzE0Y2ZhOTZlOTc5NTJkN2VjMTJkOGU3YWRk
My4uN2E4NTIxNDQ5OWRkZWJlMzIzNDQ4ZDZhOTVjOWExNWIxMGMxNDQ5ZCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9Eb2N1bWVudFRpbWVsaW5lLmNwcApAQCAtMzcsNiArMzcsNyBA
QAogI2luY2x1ZGUgIktleWZyYW1lRWZmZWN0U3RhY2suaCIKICNpbmNsdWRlICJOb2RlLmgiCiAj
aW5jbHVkZSAiUGFnZS5oIgorI2luY2x1ZGUgIlJlbmRlckJveE1vZGVsT2JqZWN0LmgiCiAjaW5j
bHVkZSAiUmVuZGVyRWxlbWVudC5oIgogI2luY2x1ZGUgIlJlbmRlckxheWVyLmgiCiAjaW5jbHVk
ZSAiUmVuZGVyTGF5ZXJCYWNraW5nLmgiCkBAIC0yMjYsOCArMjI3LDggQEAgYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjphbmltYXRpb25DYW5CZVJlbW92ZWQoV2ViQW5pbWF0aW9uJiBhbmltYXRpb24p
CiAgICAgICAgIHJldHVybiBmYWxzZTsKIAogICAgIGF1dG8qIGtleWZyYW1lRWZmZWN0ID0gZG93
bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KGVmZmVjdCk7Ci0gICAgYXV0byogdGFyZ2V0ID0ga2V5ZnJh
bWVFZmZlY3QtPnRhcmdldCgpOwotICAgIGlmICghdGFyZ2V0IHx8ICF0YXJnZXQtPmlzRGVzY2Vu
ZGFudE9mKCptX2RvY3VtZW50KSkKKyAgICBhdXRvIHRhcmdldCA9IGtleWZyYW1lRWZmZWN0LT50
YXJnZXRTdHlsZWFibGUoKTsKKyAgICBpZiAoIXRhcmdldCB8fCAhdGFyZ2V0LT5lbGVtZW50Lmlz
RGVzY2VuZGFudE9mKCptX2RvY3VtZW50KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAg
SGFzaFNldDxDU1NQcm9wZXJ0eUlEPiBwcm9wZXJ0aWVzVG9NYXRjaCA9IGtleWZyYW1lRWZmZWN0
LT5hbmltYXRlZFByb3BlcnRpZXMoKTsKQEAgLTI5Niw4ICsyOTcsOCBAQCB2b2lkIERvY3VtZW50
VGltZWxpbmU6OnRyYW5zaXRpb25EaWRDb21wbGV0ZShSZWZQdHI8Q1NTVHJhbnNpdGlvbj4gdHJh
bnNpdGlvbikKICAgICBBU1NFUlQodHJhbnNpdGlvbik7CiAgICAgcmVtb3ZlQW5pbWF0aW9uKCp0
cmFuc2l0aW9uKTsKICAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KHRyYW5zaXRpb24tPmVmZmVj
dCgpKSkgewotICAgICAgICBpZiAoYXV0byogdGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZl
Y3Q+KHRyYW5zaXRpb24tPmVmZmVjdCgpKS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgp
KQotICAgICAgICAgICAgdGFyZ2V0LT5lbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVy
dHkoKS5zZXQodHJhbnNpdGlvbi0+cHJvcGVydHkoKSwgdHJhbnNpdGlvbik7CisgICAgICAgIGlm
IChhdXRvIHN0eWxlYWJsZSA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Pih0cmFuc2l0aW9uLT5l
ZmZlY3QoKSktPnRhcmdldFN0eWxlYWJsZSgpKQorICAgICAgICAgICAgc3R5bGVhYmxlLT5lbnN1
cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5zZXQodHJhbnNpdGlvbi0+cHJvcGVy
dHkoKSwgdHJhbnNpdGlvbik7CiAgICAgfQogfQogCkBAIC0zMzAsMTAgKzMzMSwxMSBAQCB2b2lk
IERvY3VtZW50VGltZWxpbmU6OnNjaGVkdWxlTmV4dFRpY2soKQogCiBib29sIERvY3VtZW50VGlt
ZWxpbmU6OmNvbXB1dGVFeHRlbnRPZkFuaW1hdGlvbihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
TGF5b3V0UmVjdCYgYm91bmRzKSBjb25zdAogewotICAgIGlmICghcmVuZGVyZXIuZWxlbWVudCgp
KQotICAgICAgICByZXR1cm4gdHJ1ZTsKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6
ZnJvbVJlbmRlcmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoIXN0eWxlYWJsZSkKKyAgICAgICAgcmV0
dXJuIGZhbHNlOwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+
YW5pbWF0aW9ucygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmFuaW1hdGlv
bnMoKTsKICAgICBpZiAoIWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAt
MzU1LDEwICszNTcsMTEgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjpjb21wdXRlRXh0ZW50T2ZB
bmltYXRpb24oUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIExheW91dFIKIAogYm9vbCBEb2N1bWVu
dFRpbWVsaW5lOjppc1J1bm5pbmdBbmltYXRpb25PblJlbmRlcmVyKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBDU1NQcm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmICghcmVuZGVy
ZXIuZWxlbWVudCgpKQorICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpOworICAgIGlmICghc3R5bGVhYmxlKQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKLSAgICBhdXRvKiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25z
KCk7CisgICAgYXV0byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+YW5pbWF0aW9ucygpOwogICAg
IGlmICghYW5pbWF0aW9ucykKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCkBAIC0zNzYsMTAgKzM3
OSwxMSBAQCBib29sIERvY3VtZW50VGltZWxpbmU6OmlzUnVubmluZ0FuaW1hdGlvbk9uUmVuZGVy
ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIENTUwogCiBib29sIERvY3VtZW50VGltZWxpbmU6
OmlzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoIXJlbmRl
cmVyLmVsZW1lbnQoKSkKKyAgICBhdXRvIHN0eWxlYWJsZSA9IFN0eWxlYWJsZTo6ZnJvbVJlbmRl
cmVyKHJlbmRlcmVyKTsKKyAgICBpZiAoIXN0eWxlYWJsZSkKICAgICAgICAgcmV0dXJuIGZhbHNl
OwogCi0gICAgYXV0byogYW5pbWF0aW9ucyA9IHJlbmRlcmVyLmVsZW1lbnQoKS0+YW5pbWF0aW9u
cygpOworICAgIGF1dG8qIGFuaW1hdGlvbnMgPSBzdHlsZWFibGUtPmFuaW1hdGlvbnMoKTsKICAg
ICBpZiAoIWFuaW1hdGlvbnMpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIApAQCAtNDAwLDExICs0
MDQsMTEgQEAgYm9vbCBEb2N1bWVudFRpbWVsaW5lOjppc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1h
dGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxlbWVudCYgcmUKIAogc3RkOjp1bmlxdWVfcHRyPFJlbmRl
clN0eWxlPiBEb2N1bWVudFRpbWVsaW5lOjphbmltYXRlZFN0eWxlRm9yUmVuZGVyZXIoUmVuZGVy
RWxlbWVudCYgcmVuZGVyZXIpCiB7Ci0gICAgYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1l
bnQoKTsKLSAgICBpZiAoIWVsZW1lbnQpCisgICAgYXV0byBzdHlsZWFibGUgPSBTdHlsZWFibGU6
OmZyb21SZW5kZXJlcihyZW5kZXJlcik7CisgICAgaWYgKCFzdHlsZWFibGUpCiAgICAgICAgIHJl
dHVybiBSZW5kZXJTdHlsZTo6Y2xvbmVQdHIocmVuZGVyZXIuc3R5bGUoKSk7CiAKLSAgICBhdXRv
KiBhbmltYXRpb25zID0gcmVuZGVyZXIuZWxlbWVudCgpLT5hbmltYXRpb25zKCk7CisgICAgYXV0
byogYW5pbWF0aW9ucyA9IHN0eWxlYWJsZS0+YW5pbWF0aW9ucygpOwogICAgIGlmICghYW5pbWF0
aW9ucykKICAgICAgICAgcmV0dXJuIFJlbmRlclN0eWxlOjpjbG9uZVB0cihyZW5kZXJlci5zdHls
ZSgpKTsKIApAQCAtNDQ2LDkgKzQ1MCwxMyBAQCB2b2lkIERvY3VtZW50VGltZWxpbmU6OmFwcGx5
UGVuZGluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpCiAgICAgfQogfQogCi1ib29sIERvY3VtZW50
VGltZWxpbmU6OnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKEVs
ZW1lbnQmIGVsZW1lbnQpIGNvbnN0Citib29sIERvY3VtZW50VGltZWxpbmU6OnJ1bm5pbmdBbmlt
YXRpb25zRm9yUmVuZGVyZXJBcmVBbGxBY2NlbGVyYXRlZChjb25zdCBSZW5kZXJCb3hNb2RlbE9i
amVjdCYgcmVuZGVyZXIpIGNvbnN0CiB7Ci0gICAgYXV0byogYW5pbWF0aW9ucyA9IGVsZW1lbnQu
YW5pbWF0aW9ucygpOworICAgIGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpOworICAgIGlmICghc3R5bGVhYmxlKQorICAgICAgICByZXR1cm4gZmFsc2U7
CisKKyAgICBhdXRvKiBhbmltYXRpb25zID0gc3R5bGVhYmxlLT5hbmltYXRpb25zKCk7CiAgICAg
aWYgKCFhbmltYXRpb25zIHx8IGFuaW1hdGlvbnMtPmlzRW1wdHkoKSkKICAgICAgICAgcmV0dXJu
IGZhbHNlOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRG9jdW1lbnRU
aW1lbGluZS5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0RvY3VtZW50VGltZWxpbmUuaApp
bmRleCBmMjdjN2M3ODkyZjhlYzcyMWQ5NmEzMjhlMzA5ZjViZjYxNjc1MDU2Li44ZTMwNDkxMTZk
NTA0Y2E1M2JlMDAxM2FmYWYyZGY4Mjk4YmQ5ZWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9hbmltYXRpb24vRG9jdW1lbnRUaW1lbGluZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9Eb2N1bWVudFRpbWVsaW5lLmgKQEAgLTM1LDYgKzM1LDcgQEAgbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBjbGFzcyBBbmltYXRpb25FdmVudEJhc2U7CiBjbGFzcyBEb2N1bWVudFRpbWVsaW5l
c0NvbnRyb2xsZXI7CitjbGFzcyBSZW5kZXJCb3hNb2RlbE9iamVjdDsKIGNsYXNzIFJlbmRlckVs
ZW1lbnQ7CiAKIGNsYXNzIERvY3VtZW50VGltZWxpbmUgZmluYWwgOiBwdWJsaWMgQW5pbWF0aW9u
VGltZWxpbmUKQEAgLTYyLDcgKzYzLDcgQEAgcHVibGljOgogICAgIGJvb2wgaXNSdW5uaW5nQW5p
bWF0aW9uT25SZW5kZXJlcihSZW5kZXJFbGVtZW50JiwgQ1NTUHJvcGVydHlJRCkgY29uc3Q7CiAg
ICAgYm9vbCBpc1J1bm5pbmdBY2NlbGVyYXRlZEFuaW1hdGlvbk9uUmVuZGVyZXIoUmVuZGVyRWxl
bWVudCYsIENTU1Byb3BlcnR5SUQpIGNvbnN0OwogICAgIHZvaWQgYW5pbWF0aW9uQWNjZWxlcmF0
ZWRSdW5uaW5nU3RhdGVEaWRDaGFuZ2UoV2ViQW5pbWF0aW9uJik7Ci0gICAgYm9vbCBydW5uaW5n
QW5pbWF0aW9uc0ZvckVsZW1lbnRBcmVBbGxBY2NlbGVyYXRlZChFbGVtZW50JikgY29uc3Q7Cisg
ICAgYm9vbCBydW5uaW5nQW5pbWF0aW9uc0ZvclJlbmRlcmVyQXJlQWxsQWNjZWxlcmF0ZWQoY29u
c3QgUmVuZGVyQm94TW9kZWxPYmplY3QmKSBjb25zdDsKICAgICB2b2lkIGRldGFjaEZyb21Eb2N1
bWVudCgpOwogCiAgICAgdm9pZCBlbnF1ZXVlQW5pbWF0aW9uRXZlbnQoQW5pbWF0aW9uRXZlbnRC
YXNlJik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0
aW9uUmFyZURhdGEuY3BwCmluZGV4IGM4MDJhNTljNDc3NTMxNzUyODdjOGM0OTEyNzc5MWE1YjBh
OTk1MGUuLjM3ZTRiYjZjNjQyOTFjNzU2Yzk2YzMxNDkzOTBmM2U2ZjU1ZWNiODMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEu
Y3BwCkBAIC0zMyw3ICszMyw4IEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoKQorRWxlbWVudEFuaW1h
dGlvblJhcmVEYXRhOjpFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQp
CisgICAgOiBtX3BzZXVkb0lkKHBzZXVkb0lkKQogewogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmggYi9Tb3VyY2UvV2Vi
Q29yZS9hbmltYXRpb24vRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhLmgKaW5kZXggMjhhMDRhMjU1
ZTExZWZhODIzNjNhNThiOTMwOWUzZjlmMzE0MjBiZC4uZDY5ZWU2OTg4ZmJlN2Q5YjQ3NmRhNTAx
NWM2OWI3MzQ4NDJhZGU5NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0Vs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9F
bGVtZW50QW5pbWF0aW9uUmFyZURhdGEuaApAQCAtMzksOSArMzksMTEgQEAgY2xhc3MgRWxlbWVu
dEFuaW1hdGlvblJhcmVEYXRhIHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShFbGVtZW50QW5p
bWF0aW9uUmFyZURhdGEpOwogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogcHVibGljOgot
ICAgIGV4cGxpY2l0IEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpOworICAgIGV4cGxpY2l0IEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAgICAgfkVsZW1lbnRBbmltYXRpb25S
YXJlRGF0YSgpOwogCisgICAgUHNldWRvSWQgcHNldWRvSWQoKSBjb25zdCB7IHJldHVybiBtX3Bz
ZXVkb0lkOyB9CisKICAgICBLZXlmcmFtZUVmZmVjdFN0YWNrKiBrZXlmcmFtZUVmZmVjdFN0YWNr
KCkgeyByZXR1cm4gbV9rZXlmcmFtZUVmZmVjdFN0YWNrLmdldCgpOyB9CiAgICAgS2V5ZnJhbWVF
ZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpOwogCkBAIC02MSw2ICs2Myw3
IEBAIHByaXZhdGU6CiAgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiBtX2FuaW1hdGlvbnNDcmVh
dGVkQnlNYXJrdXA7CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9jb21wbGV0ZWRUcmFu
c2l0aW9uc0J5UHJvcGVydHk7CiAgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAgbV9ydW5uaW5n
VHJhbnNpdGlvbnNCeVByb3BlcnR5OworICAgIFBzZXVkb0lkIG1fcHNldWRvSWQ7CiB9OwogCiB9
IC8vIG5hbWVzcGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRp
b24vS2V5ZnJhbWVFZmZlY3QuY3BwIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1l
RWZmZWN0LmNwcAppbmRleCBmNWZmODFhZTNjZDNhZTIzNzQ5NTE2ODgxNmEzMGJjZDJkOTVkZjcy
Li5mZDJiMDA0NjI0ODAyZDJjZDVmZTMyMjgxMjEyMzVjYWZlOGU0NGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5jcHAKQEAgLTY2LDEwICs2NiwyNyBAQAog
bmFtZXNwYWNlIFdlYkNvcmUgewogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAotc3RhdGljIGlubGlu
ZSB2b2lkIGludmFsaWRhdGVFbGVtZW50KEVsZW1lbnQqIGVsZW1lbnQpCitzdGF0aWMgRWxlbWVu
dCogZWxlbWVudE9yUHNldWRvRWxlbWVudEZvclN0eWxlYWJsZShjb25zdCBPcHRpb25hbDxjb25z
dCBTdHlsZWFibGU+JiBzdHlsZWFibGUpCit7CisgICAgaWYgKCFzdHlsZWFibGUpCisgICAgICAg
IHJldHVybiBudWxscHRyOworCisgICAgc3dpdGNoIChzdHlsZWFibGUtPnBzZXVkb0lkKSB7Cisg
ICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZToKKyAgICAgICAgcmV0dXJuICZzdHlsZWFibGUtPmVsZW1l
bnQ7CisgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3JlOgorICAgICAgICByZXR1cm4gc3R5bGVhYmxl
LT5lbGVtZW50LmJlZm9yZVBzZXVkb0VsZW1lbnQoKTsKKyAgICBjYXNlIFBzZXVkb0lkOjpBZnRl
cjoKKyAgICAgICAgcmV0dXJuIHN0eWxlYWJsZS0+ZWxlbWVudC5hZnRlclBzZXVkb0VsZW1lbnQo
KTsKKyAgICBkZWZhdWx0OgorICAgICAgICByZXR1cm4gbnVsbHB0cjsKKyAgICB9Cit9CisKK3N0
YXRpYyBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlRWxlbWVudChjb25zdCBPcHRpb25hbDxjb25zdCBT
dHlsZWFibGU+JiBzdHlsZWFibGUpCiB7Ci0gICAgaWYgKGVsZW1lbnQpCi0gICAgICAgIGVsZW1l
bnQtPmludmFsaWRhdGVTdHlsZUludGVybmFsKCk7CisgICAgaWYgKGF1dG8qIGVsZW1lbnRPclBz
ZXVkb0VsZW1lbnQgPSBlbGVtZW50T3JQc2V1ZG9FbGVtZW50Rm9yU3R5bGVhYmxlKHN0eWxlYWJs
ZSkpCisgICAgICAgIGVsZW1lbnRPclBzZXVkb0VsZW1lbnQtPmludmFsaWRhdGVTdHlsZUludGVy
bmFsKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgU3RyaW5nIENTU1Byb3BlcnR5SURUb0lETEF0dHJp
YnV0ZU5hbWUoQ1NTUHJvcGVydHlJRCBjc3NQcm9wZXJ0eUlkKQpAQCAtMTA1MSwxMyArMTA2OCwx
NCBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojpjb21wdXRlU3RhY2tpbmdDb250ZXh0SW1wYWN0KCkK
IAogdm9pZCBLZXlmcmFtZUVmZmVjdDo6YW5pbWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UoQW5pbWF0
aW9uVGltZWxpbmUqIHRpbWVsaW5lKQogewotICAgIGlmICghdGFyZ2V0RWxlbWVudE9yUHNldWRv
RWxlbWVudCgpKQorICAgIGF1dG8gdGFyZ2V0ID0gdGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYg
KCF0YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGlmICh0aW1lbGluZSkKLSAgICAgICAg
bV9pblRhcmdldEVmZmVjdFN0YWNrID0gdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5l
bnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgbV9p
blRhcmdldEVmZmVjdFN0YWNrID0gdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCku
YWRkRWZmZWN0KCp0aGlzKTsKICAgICBlbHNlIHsKLSAgICAgICAgdGFyZ2V0RWxlbWVudE9yUHNl
dWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCp0
aGlzKTsKKyAgICAgICAgdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkucmVtb3Zl
RWZmZWN0KCp0aGlzKTsKICAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gZmFsc2U7CiAg
ICAgfQogfQpAQCAtMTA2OSwxNCArMTA4NywxNSBAQCB2b2lkIEtleWZyYW1lRWZmZWN0Ojphbmlt
YXRpb25UaW1pbmdEaWRDaGFuZ2UoKQogCiB2b2lkIEtleWZyYW1lRWZmZWN0Ojp1cGRhdGVFZmZl
Y3RTdGFja01lbWJlcnNoaXAoKQogewotICAgIGlmICghdGFyZ2V0RWxlbWVudE9yUHNldWRvRWxl
bWVudCgpKQorICAgIGF1dG8gdGFyZ2V0ID0gdGFyZ2V0U3R5bGVhYmxlKCk7CisgICAgaWYgKCF0
YXJnZXQpCiAgICAgICAgIHJldHVybjsKIAogICAgIGJvb2wgaXNSZWxldmFudCA9IGFuaW1hdGlv
bigpICYmIGFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCk7CiAgICAgaWYgKGlzUmVsZXZhbnQgJiYg
IW1faW5UYXJnZXRFZmZlY3RTdGFjaykKLSAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0g
dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkuYWRkRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gdGFy
Z2V0LT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuYWRkRWZmZWN0KCp0aGlzKTsKICAgICBl
bHNlIGlmICghaXNSZWxldmFudCAmJiBtX2luVGFyZ2V0RWZmZWN0U3RhY2spIHsKLSAgICAgICAg
dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpLT5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkucmVtb3ZlRWZmZWN0KCp0aGlzKTsKKyAgICAgICAgdGFyZ2V0LT5lbnN1cmVLZXlmcmFtZUVm
ZmVjdFN0YWNrKCkucmVtb3ZlRWZmZWN0KCp0aGlzKTsKICAgICAgICAgbV9pblRhcmdldEVmZmVj
dFN0YWNrID0gZmFsc2U7CiAgICAgfQogfQpAQCAtMTA5NCw2ICsxMTEzLDEzIEBAIHZvaWQgS2V5
ZnJhbWVFZmZlY3Q6OnNldEFuaW1hdGlvbihXZWJBbmltYXRpb24qIGFuaW1hdGlvbikKICAgICB1
cGRhdGVFZmZlY3RTdGFja01lbWJlcnNoaXAoKTsKIH0KIAorY29uc3QgT3B0aW9uYWw8Y29uc3Qg
U3R5bGVhYmxlPiBLZXlmcmFtZUVmZmVjdDo6dGFyZ2V0U3R5bGVhYmxlKCkgY29uc3QKK3sKKyAg
ICBpZiAobV90YXJnZXQpCisgICAgICAgIHJldHVybiBTdHlsZWFibGUoKm1fdGFyZ2V0LCBtX3Bz
ZXVkb0lkKTsKKyAgICByZXR1cm4gV1RGOjpudWxsb3B0OworfQorCiBib29sIEtleWZyYW1lRWZm
ZWN0Ojp0YXJnZXRzUHNldWRvRWxlbWVudCgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fdGFyZ2V0
LmdldCgpICYmIG1fcHNldWRvSWQgIT0gUHNldWRvSWQ6Ok5vbmU7CkBAIC0xMTE5LDkgKzExNDUs
OSBAQCB2b2lkIEtleWZyYW1lRWZmZWN0OjpzZXRUYXJnZXQoUmVmUHRyPEVsZW1lbnQ+JiYgbmV3
VGFyZ2V0KQogICAgIGlmIChtX3RhcmdldCA9PSBuZXdUYXJnZXQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGF1dG8qIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCA9IHRhcmdl
dEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoKTsKKyAgICBhdXRvJiBwcmV2aW91c1RhcmdldFN0eWxl
YWJsZSA9IHRhcmdldFN0eWxlYWJsZSgpOwogICAgIG1fdGFyZ2V0ID0gV1RGTW92ZShuZXdUYXJn
ZXQpOwotICAgIGRpZENoYW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQocHJldmlvdXNU
YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KTsKKyAgICBkaWRDaGFuZ2VUYXJnZXRTdHlsZWFi
bGUocHJldmlvdXNUYXJnZXRTdHlsZWFibGUpOwogfQogCiBjb25zdCBTdHJpbmcgS2V5ZnJhbWVF
ZmZlY3Q6OnBzZXVkb0VsZW1lbnQoKSBjb25zdApAQCAtMTE2MSwyNiArMTE4NywyOCBAQCBFeGNl
cHRpb25Pcjx2b2lkPiBLZXlmcmFtZUVmZmVjdDo6c2V0UHNldWRvRWxlbWVudChjb25zdCBTdHJp
bmcmIHBzZXVkb0VsZW1lbnQpCiAgICAgaWYgKHBzZXVkb0lkID09IG1fcHNldWRvSWQpCiAgICAg
ICAgIHJldHVybiB7IH07CiAKLSAgICBhdXRvKiBwcmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVk
b0VsZW1lbnQgPSB0YXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50KCk7CisgICAgYXV0byYgcHJl
dmlvdXNUYXJnZXRTdHlsZWFibGUgPSB0YXJnZXRTdHlsZWFibGUoKTsKICAgICBtX3BzZXVkb0lk
ID0gcHNldWRvSWQ7Ci0gICAgZGlkQ2hhbmdlVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudChw
cmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQpOworICAgIGRpZENoYW5nZVRhcmdl
dFN0eWxlYWJsZShwcmV2aW91c1RhcmdldFN0eWxlYWJsZSk7CiAKICAgICByZXR1cm4geyB9Owog
fQogCi12b2lkIEtleWZyYW1lRWZmZWN0OjpkaWRDaGFuZ2VUYXJnZXRFbGVtZW50T3JQc2V1ZG9F
bGVtZW50KEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCkKK3Zv
aWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldFN0eWxlYWJsZShjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+JiBwcmV2aW91c1RhcmdldFN0eWxlYWJsZSkKIHsKLSAgICBhdXRv
KiBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gdGFyZ2V0RWxlbWVudE9yUHNldWRv
RWxlbWVudCgpOworICAgIGF1dG8gbmV3VGFyZ2V0U3R5bGVhYmxlID0gdGFyZ2V0U3R5bGVhYmxl
KCk7CiAKICAgICAvLyBXZSBtdXN0IGVuc3VyZSBhIFBzZXVkb0VsZW1lbnQgZXhpc3RzIGZvciB0
aGlzIG1fdGFyZ2V0IC8gbV9wc2V1ZG9JZCBwYWlyIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KKyAg
ICAvLyBGSVhNRTogSWRlYWxseSB0aGlzIHdvdWxkbid0IGJlIG5lY2Vzc2FyeS4KKyAgICBhdXRv
KiBuZXdUYXJnZXRFbGVtZW50T3JQc2V1ZG9FbGVtZW50ID0gZWxlbWVudE9yUHNldWRvRWxlbWVu
dEZvclN0eWxlYWJsZShuZXdUYXJnZXRTdHlsZWFibGUpOwogICAgIGlmICghbmV3VGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudCAmJiBtX3RhcmdldC5nZXQoKSAmJiBtX3BzZXVkb0lkICE9IFBz
ZXVkb0lkOjpOb25lKSB7Ci0gICAgICAgIC8vIFdlIG9ubHkgc3VwcG9ydCB0YXJnZXRpbmcgOjpi
ZWZvcmUgYW5kIDo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGF0IHRoZSBtb21lbnQuCisgICAgICAg
IC8vIEZJWE1FOiBXZSBvbmx5IHN1cHBvcnQgdGFyZ2V0aW5nIDo6YmVmb3JlIGFuZCA6OmFmdGVy
IHBzZXVkby1lbGVtZW50cyBhdCB0aGUgbW9tZW50LgogICAgICAgICBpZiAobV9wc2V1ZG9JZCA9
PSBQc2V1ZG9JZDo6QmVmb3JlIHx8IG1fcHNldWRvSWQgPT0gUHNldWRvSWQ6OkFmdGVyKQogICAg
ICAgICAgICAgbmV3VGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCA9ICZtX3RhcmdldC0+ZW5z
dXJlUHNldWRvRWxlbWVudChtX3BzZXVkb0lkKTsKICAgICB9CiAKICAgICBpZiAoYXV0byogZWZm
ZWN0QW5pbWF0aW9uID0gYW5pbWF0aW9uKCkpCi0gICAgICAgIGVmZmVjdEFuaW1hdGlvbi0+ZWZm
ZWN0VGFyZ2V0RGlkQ2hhbmdlKHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCwg
bmV3VGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCk7CisgICAgICAgIGVmZmVjdEFuaW1hdGlv
bi0+ZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKHByZXZpb3VzVGFyZ2V0U3R5bGVhYmxlLCBuZXdUYXJn
ZXRTdHlsZWFibGUpOwogCiAgICAgY2xlYXJCbGVuZGluZ0tleWZyYW1lcygpOwogCkBAIC0xMTkw
LDE0ICsxMjE4LDE1IEBAIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6OmRpZENoYW5nZVRhcmdldEVsZW1l
bnRPclBzZXVkb0VsZW1lbnQoRWxlbWVudCogcHJldmlvdXNUYXJnCiAKICAgICAvLyBMaWtld2lz
ZSwgd2UgbmVlZCB0byBpbnZhbGlkYXRlIHN0eWxlcyBvbiB0aGUgcHJldmlvdXMgdGFyZ2V0IHNv
IHRoYXQKICAgICAvLyBhbnkgYW5pbWF0ZWQgc3R5bGVzIGFyZSByZW1vdmVkIGltbWVkaWF0ZWx5
LgotICAgIGludmFsaWRhdGVFbGVtZW50KHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxl
bWVudCk7CisgICAgaW52YWxpZGF0ZUVsZW1lbnQocHJldmlvdXNUYXJnZXRTdHlsZWFibGUpOwog
Ci0gICAgaWYgKHByZXZpb3VzVGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCkgewotICAgICAg
ICBwcmV2aW91c1RhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQtPmVuc3VyZUtleWZyYW1lRWZm
ZWN0U3RhY2soKS5yZW1vdmVFZmZlY3QoKnRoaXMpOworICAgIGlmIChwcmV2aW91c1RhcmdldFN0
eWxlYWJsZSkgeworICAgICAgICBwcmV2aW91c1RhcmdldFN0eWxlYWJsZS0+ZW5zdXJlS2V5ZnJh
bWVFZmZlY3RTdGFjaygpLnJlbW92ZUVmZmVjdCgqdGhpcyk7CiAgICAgICAgIG1faW5UYXJnZXRF
ZmZlY3RTdGFjayA9IGZhbHNlOwogICAgIH0KLSAgICBpZiAobmV3VGFyZ2V0RWxlbWVudE9yUHNl
dWRvRWxlbWVudCkKLSAgICAgICAgbV9pblRhcmdldEVmZmVjdFN0YWNrID0gbmV3VGFyZ2V0RWxl
bWVudE9yUHNldWRvRWxlbWVudC0+ZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpLmFkZEVmZmVj
dCgqdGhpcyk7CisKKyAgICBpZiAobmV3VGFyZ2V0U3R5bGVhYmxlKQorICAgICAgICBtX2luVGFy
Z2V0RWZmZWN0U3RhY2sgPSBuZXdUYXJnZXRTdHlsZWFibGUtPmVuc3VyZUtleWZyYW1lRWZmZWN0
U3RhY2soKS5hZGRFZmZlY3QoKnRoaXMpOwogfQogCiB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBs
eShSZW5kZXJTdHlsZSYgdGFyZ2V0U3R5bGUsIE9wdGlvbmFsPFNlY29uZHM+IHN0YXJ0VGltZSkK
QEAgLTEyMzgsNyArMTI2Nyw3IEBAIGJvb2wgS2V5ZnJhbWVFZmZlY3Q6OmlzUnVubmluZ0FjY2Vs
ZXJhdGVkQW5pbWF0aW9uRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wCiB2b2lkIEtleWZy
YW1lRWZmZWN0OjppbnZhbGlkYXRlKCkKIHsKICAgICBMT0dfV0lUSF9TVFJFQU0oQW5pbWF0aW9u
cywgc3RyZWFtIDw8ICJLZXlmcmFtZUVmZmVjdDo6aW52YWxpZGF0ZSBvbiBlbGVtZW50ICIgPDwg
VmFsdWVPck51bGwodGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKSk7Ci0gICAgaW52YWxp
ZGF0ZUVsZW1lbnQodGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpKTsKKyAgICBpbnZhbGlk
YXRlRWxlbWVudCh0YXJnZXRTdHlsZWFibGUoKSk7CiB9CiAKIHZvaWQgS2V5ZnJhbWVFZmZlY3Q6
OmNvbXB1dGVBY2NlbGVyYXRlZFByb3BlcnRpZXNTdGF0ZSgpCkBAIC0xNjIzLDcgKzE2NTIsNyBA
QCB2b2lkIEtleWZyYW1lRWZmZWN0OjphcHBseVBlbmRpbmdBY2NlbGVyYXRlZEFjdGlvbnMoKQog
CiAgICAgICAgIEFTU0VSVChtX3RhcmdldCk7CiAKLSAgICAgICAgYXV0byogbGFzdFN0eWxlQ2hh
bmdlRXZlbnRTdHlsZSA9IG1fdGFyZ2V0LT5sYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCk7Cisg
ICAgICAgIGF1dG8qIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUgPSBtX3RhcmdldC0+bGFzdFN0
eWxlQ2hhbmdlRXZlbnRTdHlsZShtX3BzZXVkb0lkKTsKICAgICAgICAgQVNTRVJUKGxhc3RTdHls
ZUNoYW5nZUV2ZW50U3R5bGUpOwogCiAgICAgICAgIEtleWZyYW1lTGlzdCBleHBsaWNpdEtleWZy
YW1lcyhtX2JsZW5kaW5nS2V5ZnJhbWVzLmFuaW1hdGlvbk5hbWUoKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3Jl
L2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCmluZGV4IGNhY2Q2MzQ3Mjc1NjIzMGU2NmQyNDIw
ZGU0ZjEyM2Q5ZmQ1M2MwNzguLjZkMmZlMDIyNmExOGVhZmVlZjc4MjZkMjlmYjY4NzNhNTk1MDFi
ZTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdC5oCkBAIC0zNyw2
ICszNyw3IEBACiAjaW5jbHVkZSAiS2V5ZnJhbWVMaXN0LmgiCiAjaW5jbHVkZSAiUmVuZGVyU3R5
bGUuaCIKICNpbmNsdWRlICJTdHlsZVByb3BlcnRpZXMuaCIKKyNpbmNsdWRlICJTdHlsZWFibGUu
aCIKICNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
IApAQCAtMTA5LDYgKzExMCw4IEBAIHB1YmxpYzoKICAgICBjb25zdCBTdHJpbmcgcHNldWRvRWxl
bWVudCgpIGNvbnN0OwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldFBzZXVkb0VsZW1lbnQoY29u
c3QgU3RyaW5nJik7CiAKKyAgICBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IHRhcmdl
dFN0eWxlYWJsZSgpIGNvbnN0OworCiAgICAgVmVjdG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmpl
Y3Q+PiBnZXRCaW5kaW5nc0tleWZyYW1lcyhKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CiAgICAgVmVj
dG9yPEpTQzo6U3Ryb25nPEpTQzo6SlNPYmplY3Q+PiBnZXRLZXlmcmFtZXMoSlNDOjpKU0dsb2Jh
bE9iamVjdCYpOwogICAgIEV4Y2VwdGlvbk9yPHZvaWQ+IHNldEJpbmRpbmdzS2V5ZnJhbWVzKEpT
Qzo6SlNHbG9iYWxPYmplY3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKQEAgLTE3
OCw3ICsxODEsNyBAQCBwcml2YXRlOgogICAgIERvY3VtZW50KiBkb2N1bWVudCgpIGNvbnN0Owog
ICAgIHZvaWQgdXBkYXRlRWZmZWN0U3RhY2tNZW1iZXJzaGlwKCk7CiAgICAgdm9pZCBjb3B5UHJv
cGVydGllc0Zyb21Tb3VyY2UoUmVmPEtleWZyYW1lRWZmZWN0PiYmKTsKLSAgICB2b2lkIGRpZENo
YW5nZVRhcmdldEVsZW1lbnRPclBzZXVkb0VsZW1lbnQoRWxlbWVudCopOworICAgIHZvaWQgZGlk
Q2hhbmdlVGFyZ2V0U3R5bGVhYmxlKGNvbnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mKTsK
ICAgICBFeGNlcHRpb25Pcjx2b2lkPiBwcm9jZXNzS2V5ZnJhbWVzKEpTQzo6SlNHbG9iYWxPYmpl
Y3QmLCBKU0M6OlN0cm9uZzxKU0M6OkpTT2JqZWN0PiYmKTsKICAgICB2b2lkIGFkZFBlbmRpbmdB
Y2NlbGVyYXRlZEFjdGlvbihBY2NlbGVyYXRlZEFjdGlvbik7CiAgICAgYm9vbCBjYW5CZUFjY2Vs
ZXJhdGVkKCkgY29uc3Q7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5
ZnJhbWVFZmZlY3RTdGFjay5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vS2V5ZnJhbWVF
ZmZlY3RTdGFjay5jcHAKaW5kZXggN2MwYmUwZjFjMTY3ZGEwNzg3ODI5OGQzMzI2NTVkN2YwY2Zh
OWM4NS4uZDVmNDBlZDgxZTIzMGVkYWU2ZjZlYzU0NWE3MTMyZGEwOTFlNDRkNiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL0tleWZyYW1lRWZmZWN0U3RhY2suY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9LZXlmcmFtZUVmZmVjdFN0YWNrLmNwcApAQCAtNDYs
NyArNDYsNyBAQCBib29sIEtleWZyYW1lRWZmZWN0U3RhY2s6OmFkZEVmZmVjdChLZXlmcmFtZUVm
ZmVjdCYgZWZmZWN0KQogewogICAgIC8vIFRvIHF1YWxpZnkgZm9yIG1lbWJlcnNoaXAgaW4gYW4g
ZWZmZWN0IHN0YWNrLCBhbiBlZmZlY3QgbXVzdCBoYXZlIGEgdGFyZ2V0LCBhbiBhbmltYXRpb24s
IGEgdGltZWxpbmUgYW5kIGJlIHJlbGV2YW50LgogICAgIC8vIFRoaXMgbWV0aG9kIHdpbGwgYmUg
Y2FsbGVkIGluIFdlYkFuaW1hdGlvbiBhbmQgS2V5ZnJhbWVFZmZlY3QgYXMgdGhvc2UgcHJvcGVy
dGllcyBjaGFuZ2UuCi0gICAgaWYgKCFlZmZlY3QudGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVu
dCgpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKS0+dGltZWxp
bmUoKSB8fCAhZWZmZWN0LmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCisgICAgaWYgKCFlZmZl
Y3QudGFyZ2V0U3R5bGVhYmxlKCkgfHwgIWVmZmVjdC5hbmltYXRpb24oKSB8fCAhZWZmZWN0LmFu
aW1hdGlvbigpLT50aW1lbGluZSgpIHx8ICFlZmZlY3QuYW5pbWF0aW9uKCktPmlzUmVsZXZhbnQo
KSkKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgbV9lZmZlY3RzLmFwcGVuZChtYWtlV2Vh
a1B0cigmZWZmZWN0KSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9hbmltYXRpb24vV2Vi
QW5pbWF0aW9uLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3Bw
CmluZGV4IGFhZDRmMWNjY2I3YzFkODk0NTc2MTNhZDRmZmY1YjRmNmUzODExMjkuLmFkMzEzMTA4
YWYxNGJhYjA4YTk0Yjc1MDBlOTczYjZmNTkzYTZhMGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2FuaW1h
dGlvbi9XZWJBbmltYXRpb24uY3BwCkBAIC0yMDYsMjYgKzIwNiwyMSBAQCB2b2lkIFdlYkFuaW1h
dGlvbjo6c2V0RWZmZWN0SW50ZXJuYWwoUmVmUHRyPEFuaW1hdGlvbkVmZmVjdD4mJiBuZXdFZmZl
Y3QsIGJvb2wgZAogCiAgICAgYXV0byBvbGRFZmZlY3QgPSBzdGQ6OmV4Y2hhbmdlKG1fZWZmZWN0
LCBXVEZNb3ZlKG5ld0VmZmVjdCkpOwogCi0gICAgRWxlbWVudCogcHJldmlvdXNUYXJnZXQgPSBu
dWxscHRyOwotICAgIGlmIChpczxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0KSkKLSAgICAgICAg
cHJldmlvdXNUYXJnZXQgPSBkb3duY2FzdDxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0LmdldCgp
KS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOwotCi0gICAgRWxlbWVudCogbmV3VGFy
Z2V0ID0gbnVsbHB0cjsKLSAgICBpZiAoaXM8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0KSkKLSAg
ICAgICAgbmV3VGFyZ2V0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KG1fZWZmZWN0LmdldCgp
KS0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOworICAgIE9wdGlvbmFsPGNvbnN0IFN0
eWxlYWJsZT4gcHJldmlvdXNUYXJnZXQgPSBpczxLZXlmcmFtZUVmZmVjdD4ob2xkRWZmZWN0KSA/
IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0PihvbGRFZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFi
bGUoKSA6IFdURjo6bnVsbG9wdDsKKyAgICBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IG5ld1Rh
cmdldCA9IGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVjdCkgPyBkb3duY2FzdDxLZXlmcmFtZUVm
ZmVjdD4obV9lZmZlY3QuZ2V0KCkpLT50YXJnZXRTdHlsZWFibGUoKSA6IFdURjo6bnVsbG9wdDsK
IAogICAgIC8vIFVwZGF0ZSB0aGUgZWZmZWN0LXRvLWFuaW1hdGlvbiByZWxhdGlvbnNoaXBzIGFu
ZCB0aGUgdGltZWxpbmUncyBhbmltYXRpb24gbWFwLgogICAgIGlmIChvbGRFZmZlY3QpIHsKICAg
ICAgICAgb2xkRWZmZWN0LT5zZXRBbmltYXRpb24obnVsbHB0cik7CiAgICAgICAgIGlmICghZG9O
b3RSZW1vdmVGcm9tVGltZWxpbmUgJiYgbV90aW1lbGluZSAmJiBwcmV2aW91c1RhcmdldCAmJiBw
cmV2aW91c1RhcmdldCAhPSBuZXdUYXJnZXQpCi0gICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmlt
YXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICpwcmV2aW91c1RhcmdldCk7CisgICAg
ICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0eWxlYWJsZSgqdGhp
cywgKnByZXZpb3VzVGFyZ2V0KTsKICAgICAgICAgdXBkYXRlUmVsZXZhbmNlKCk7CiAgICAgfQog
CiAgICAgaWYgKG1fZWZmZWN0KSB7CiAgICAgICAgIG1fZWZmZWN0LT5zZXRBbmltYXRpb24odGhp
cyk7CiAgICAgICAgIGlmIChtX3RpbWVsaW5lICYmIG5ld1RhcmdldCAmJiBwcmV2aW91c1Rhcmdl
dCAhPSBuZXdUYXJnZXQpCi0gICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRl
ZFRvRWxlbWVudCgqdGhpcywgKm5ld1RhcmdldCk7CisgICAgICAgICAgICBtX3RpbWVsaW5lLT5h
bmltYXRpb25XYXNBZGRlZFRvU3R5bGVhYmxlKCp0aGlzLCAqbmV3VGFyZ2V0KTsKICAgICB9CiAK
ICAgICBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmRpZFNldFdlYkFuaW1hdGlvbkVmZmVjdCgq
dGhpcyk7CkBAIC0yNDUsMTYgKzI0MCwxNCBAQCB2b2lkIFdlYkFuaW1hdGlvbjo6c2V0VGltZWxp
bmUoUmVmUHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgICAgICBtX2hvbGRU
aW1lID0gV1RGOjpudWxsb3B0OwogCiAgICAgaWYgKGlzPEtleWZyYW1lRWZmZWN0PihtX2VmZmVj
dCkpIHsKLSAgICAgICAgYXV0byoga2V5ZnJhbWVFZmZlY3QgPSBkb3duY2FzdDxLZXlmcmFtZUVm
ZmVjdD4obV9lZmZlY3QuZ2V0KCkpOwotICAgICAgICBhdXRvKiB0YXJnZXQgPSBrZXlmcmFtZUVm
ZmVjdC0+dGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVudCgpOwotICAgICAgICBpZiAodGFyZ2V0
KSB7CisgICAgICAgIGlmIChhdXRvIHRhcmdldCA9IGRvd25jYXN0PEtleWZyYW1lRWZmZWN0Piht
X2VmZmVjdC5nZXQoKSktPnRhcmdldFN0eWxlYWJsZSgpKSB7CiAgICAgICAgICAgICAvLyBJbiB0
aGUgY2FzZSBvZiBhIGRlY2xhcmF0aXZlIGFuaW1hdGlvbiwgd2UgZG9uJ3Qgd2FudCB0byByZW1v
dmUgdGhlIGFuaW1hdGlvbiBmcm9tIHRoZSByZWxldmFudCBtYXBzIGJlY2F1c2UKICAgICAgICAg
ICAgIC8vIHdoaWxlIHRoZSB0aW1lbGluZSB3YXMgc2V0IHZpYSB0aGUgQVBJLCB0aGUgZWxlbWVu
dCBzdGlsbCBoYXMgYSB0cmFuc2l0aW9uIG9yIGFuaW1hdGlvbiBzZXQgdXAgYW5kIHdlIG11c3QK
ICAgICAgICAgICAgIC8vIG5vdCBicmVhayB0aGUgcmVsYXRpb25zaGlwLgogICAgICAgICAgICAg
aWYgKG1fdGltZWxpbmUgJiYgIWlzRGVjbGFyYXRpdmVBbmltYXRpb24oKSkKLSAgICAgICAgICAg
ICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICp0
YXJnZXQpOworICAgICAgICAgICAgICAgIG1fdGltZWxpbmUtPmFuaW1hdGlvbldhc1JlbW92ZWRG
cm9tU3R5bGVhYmxlKCp0aGlzLCAqdGFyZ2V0KTsKICAgICAgICAgICAgIGlmICh0aW1lbGluZSkK
LSAgICAgICAgICAgICAgICB0aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRo
aXMsICp0YXJnZXQpOworICAgICAgICAgICAgICAgIHRpbWVsaW5lLT5hbmltYXRpb25XYXNBZGRl
ZFRvU3R5bGVhYmxlKCp0aGlzLCAqdGFyZ2V0KTsKICAgICAgICAgfQogICAgIH0KIApAQCAtMjg1
LDE0ICsyNzgsMTQgQEAgdm9pZCBXZWJBbmltYXRpb246OnNldFRpbWVsaW5lSW50ZXJuYWwoUmVm
UHRyPEFuaW1hdGlvblRpbWVsaW5lPiYmIHRpbWVsaW5lKQogICAgICAgICBtX2VmZmVjdC0+YW5p
bWF0aW9uVGltZWxpbmVEaWRDaGFuZ2UobV90aW1lbGluZS5nZXQoKSk7CiB9CiAKLXZvaWQgV2Vi
QW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRDaGFuZ2UoRWxlbWVudCogcHJldmlvdXNUYXJnZXQs
IEVsZW1lbnQqIG5ld1RhcmdldCkKK3ZvaWQgV2ViQW5pbWF0aW9uOjplZmZlY3RUYXJnZXREaWRD
aGFuZ2UoY29uc3QgT3B0aW9uYWw8Y29uc3QgU3R5bGVhYmxlPiYgcHJldmlvdXNUYXJnZXQsIGNv
bnN0IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIG5ld1RhcmdldCkKIHsKICAgICBpZiAobV90
aW1lbGluZSkgewogICAgICAgICBpZiAocHJldmlvdXNUYXJnZXQpCi0gICAgICAgICAgICBtX3Rp
bWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbUVsZW1lbnQoKnRoaXMsICpwcmV2aW91c1Rh
cmdldCk7CisgICAgICAgICAgICBtX3RpbWVsaW5lLT5hbmltYXRpb25XYXNSZW1vdmVkRnJvbVN0
eWxlYWJsZSgqdGhpcywgKnByZXZpb3VzVGFyZ2V0KTsKIAogICAgICAgICBpZiAobmV3VGFyZ2V0
KQotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQoKnRo
aXMsICpuZXdUYXJnZXQpOworICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRk
ZWRUb1N0eWxlYWJsZSgqdGhpcywgKm5ld1RhcmdldCk7CiAKICAgICAgICAgLy8gVGhpcyBjb3Vs
ZCBoYXZlIGNoYW5nZWQgd2hldGhlciB3ZSBoYXZlIHJlcGxhY2VkIGFuaW1hdGlvbnMsIHNvIHdl
IG1heSBuZWVkIHRvIHNjaGVkdWxlIGFuIHVwZGF0ZS4KICAgICAgICAgbV90aW1lbGluZS0+YW5p
bWF0aW9uVGltaW5nRGlkQ2hhbmdlKCp0aGlzKTsKQEAgLTEzODIsOSArMTM3NSw5IEBAIHZvaWQg
V2ViQW5pbWF0aW9uOjpwZXJzaXN0KCkKICAgICBpZiAocHJldmlvdXNSZXBsYWNlU3RhdGUgPT0g
UmVwbGFjZVN0YXRlOjpSZW1vdmVkICYmIG1fdGltZWxpbmUpIHsKICAgICAgICAgaWYgKGlzPEtl
eWZyYW1lRWZmZWN0PihtX2VmZmVjdCkpIHsKICAgICAgICAgICAgIGF1dG8mIGtleWZyYW1lRWZm
ZWN0ID0gZG93bmNhc3Q8S2V5ZnJhbWVFZmZlY3Q+KCptX2VmZmVjdCk7Ci0gICAgICAgICAgICBh
dXRvJiB0YXJnZXQgPSAqa2V5ZnJhbWVFZmZlY3QudGFyZ2V0RWxlbWVudE9yUHNldWRvRWxlbWVu
dCgpOwotICAgICAgICAgICAgbV90aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb0VsZW1lbnQo
KnRoaXMsIHRhcmdldCk7Ci0gICAgICAgICAgICB0YXJnZXQuZW5zdXJlS2V5ZnJhbWVFZmZlY3RT
dGFjaygpLmFkZEVmZmVjdChrZXlmcmFtZUVmZmVjdCk7CisgICAgICAgICAgICBhdXRvIHN0eWxl
YWJsZSA9IGtleWZyYW1lRWZmZWN0LnRhcmdldFN0eWxlYWJsZSgpOworICAgICAgICAgICAgbV90
aW1lbGluZS0+YW5pbWF0aW9uV2FzQWRkZWRUb1N0eWxlYWJsZSgqdGhpcywgKnN0eWxlYWJsZSk7
CisgICAgICAgICAgICBzdHlsZWFibGUtPmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKS5hZGRF
ZmZlY3Qoa2V5ZnJhbWVFZmZlY3QpOwogICAgICAgICB9CiAgICAgfQogfQpAQCAtMTQyMyw3ICsx
NDE2LDcgQEAgRXhjZXB0aW9uT3I8dm9pZD4gV2ViQW5pbWF0aW9uOjpjb21taXRTdHlsZXMoKQog
ICAgIGF1dG8gaW5saW5lU3R5bGUgPSBzdHlsZWRFbGVtZW50LmRvY3VtZW50KCkuY3JlYXRlQ1NT
U3R5bGVEZWNsYXJhdGlvbigpOwogICAgIGlubGluZVN0eWxlLT5zZXRDc3NUZXh0KHN0eWxlZEVs
ZW1lbnQuZ2V0QXR0cmlidXRlKCJzdHlsZSIpKTsKIAotICAgIGF1dG8mIGtleWZyYW1lU3RhY2sg
PSBzdHlsZWRFbGVtZW50LmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICBhdXRvJiBr
ZXlmcmFtZVN0YWNrID0gc3R5bGVkRWxlbWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKFBz
ZXVkb0lkOjpOb25lKTsKIAogICAgIC8vIDIuNSBGb3IgZWFjaCBwcm9wZXJ0eSwgcHJvcGVydHks
IGluIHRhcmdldGVkIHByb3BlcnRpZXM6CiAgICAgZm9yIChhdXRvIHByb3BlcnR5IDogZWZmZWN0
LT5hbmltYXRlZFByb3BlcnRpZXMoKSkgewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvYW5p
bWF0aW9uL1dlYkFuaW1hdGlvbi5oIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvbi5oCmluZGV4IGJiMzlhMGFhMDNkZmUxMjgzMjMxZGIxNmI4MzJhYmM5MTNmNTAwMDkuLjY2
NjdiZmVlNjljMGU3YmIwMTg2ZDdiYjAyYzUyYThjNWQ4MGRhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb24uaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9h
bmltYXRpb24vV2ViQW5pbWF0aW9uLmgKQEAgLTI5LDYgKzI5LDcgQEAKICNpbmNsdWRlICJFdmVu
dFRhcmdldC5oIgogI2luY2x1ZGUgIkV4Y2VwdGlvbk9yLmgiCiAjaW5jbHVkZSAiSURMVHlwZXMu
aCIKKyNpbmNsdWRlICJTdHlsZWFibGUuaCIKICNpbmNsdWRlICJXZWJBbmltYXRpb25UeXBlcy5o
IgogI2luY2x1ZGUgPHd0Zi9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01hcmthYmxlLmg+CkBA
IC00NCw3ICs0NSw2IEBAIGNsYXNzIEFuaW1hdGlvbkVmZmVjdDsKIGNsYXNzIEFuaW1hdGlvbkV2
ZW50QmFzZTsKIGNsYXNzIEFuaW1hdGlvblRpbWVsaW5lOwogY2xhc3MgRG9jdW1lbnQ7Ci1jbGFz
cyBFbGVtZW50OwogY2xhc3MgUmVuZGVyU3R5bGU7CiAKIHRlbXBsYXRlPHR5cGVuYW1lIElETFR5
cGU+IGNsYXNzIERPTVByb21pc2VQcm94eVdpdGhSZXNvbHZlQ2FsbGJhY2s7CkBAIC0xMjIsNyAr
MTIyLDcgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCB0aWNrKCk7CiAgICAgV0VCQ09SRV9F
WFBPUlQgU2Vjb25kcyB0aW1lVG9OZXh0VGljaygpIGNvbnN0OwogICAgIHZpcnR1YWwgdm9pZCBy
ZXNvbHZlKFJlbmRlclN0eWxlJiwgT3B0aW9uYWw8U2Vjb25kcz4gPSBXVEY6Om51bGxvcHQpOwot
ICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKEVsZW1lbnQqIHByZXZpb3VzVGFyZ2V0LCBF
bGVtZW50KiBuZXdUYXJnZXQpOworICAgIHZvaWQgZWZmZWN0VGFyZ2V0RGlkQ2hhbmdlKGNvbnN0
IE9wdGlvbmFsPGNvbnN0IFN0eWxlYWJsZT4mIHByZXZpb3VzVGFyZ2V0LCBjb25zdCBPcHRpb25h
bDxjb25zdCBTdHlsZWFibGU+JiBuZXdUYXJnZXQpOwogICAgIHZvaWQgYWNjZWxlcmF0ZWRTdGF0
ZURpZENoYW5nZSgpOwogICAgIHZvaWQgYXBwbHlQZW5kaW5nQWNjZWxlcmF0ZWRBY3Rpb25zKCk7
CiAgICAgdm9pZCB3aWxsQ2hhbmdlUmVuZGVyZXIoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2FuaW1hdGlvbi9XZWJBbmltYXRpb25VdGlsaXRpZXMuY3BwIGIvU291cmNlL1dlYkNvcmUv
YW5pbWF0aW9uL1dlYkFuaW1hdGlvblV0aWxpdGllcy5jcHAKaW5kZXggZTE3MmQ4MmQ1NWNjY2Yx
MzA1ZDk5ZGJhMTVjNDZkZDE2MTNiNDNjNy4uZDBiZDdmYzU2MWJkZDU0YjA5ZGMyNmUyMzJkMDQ0
ZmViMmJlZWE5YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvblV0aWxpdGllcy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvYW5pbWF0aW9uL1dlYkFuaW1h
dGlvblV0aWxpdGllcy5jcHAKQEAgLTM4LDU0ICszOCw3MSBAQAogCiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKLXN0YXRpYyBib29sIGNvbXBhcmVEZWNsYXJhdGl2ZUFuaW1hdGlvbk93bmluZ0VsZW1l
bnRQb3NpdGlvbnNJbkRvY3VtZW50VHJlZU9yZGVyKEVsZW1lbnQmIGEsIEVsZW1lbnQmIGIpCitz
dGF0aWMgYm9vbCBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9zaXRp
b25zSW5Eb2N1bWVudFRyZWVPcmRlcihjb25zdCBTdHlsZWFibGUmIGEsIGNvbnN0IFN0eWxlYWJs
ZSYgYikKIHsKICAgICAvLyBXZSBzaG91bGQgbm90IGV2ZXIgYmUgY2FsbGluZyB0aGlzIGZ1bmN0
aW9uIHdpdGggdHdvIEVsZW1lbnRzIHRoYXQgYXJlIHRoZSBzYW1lLiBJZiB0aGF0IHdlcmUgdGhl
IGNhc2UsCiAgICAgLy8gdGhlbiBjb21wYXJpbmcgb2JqZWN0cyBvZiB0aGlzIGtpbmQgd291bGQg
eWllbGQgaW5jb25zaXN0ZW50IHJlc3VsdHMgd2hlbiBjb21wYXJpbmcgQSA9PSBCIGFuZCBCID09
IEEuCiAgICAgLy8gQXMgc3VjaCwgdGhpcyBmdW5jdGlvbiBzaG91bGQgYmUgY2FsbGVkIHdpdGgg
c3RkOjpzdGFibGVfc29ydCgpLgotICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oJmEgIT0gJmIpOworICAgIFJFTEVBU0VfQVNTRVJUX1dJVEhfU0VDVVJJVFlfSU1Q
TElDQVRJT04oYSAhPSBiKTsKIAogICAgIC8vIFdpdGggcmVnYXJkIHRvIHBzZXVkby1lbGVtZW50
cywgdGhlIHNvcnQgb3JkZXIgaXMgYXMgZm9sbG93czoKKyAgICAvLwogICAgIC8vICAgICAtIGVs
ZW1lbnQKKyAgICAvLyAgICAgLSA6Om1hcmtlcgogICAgIC8vICAgICAtIDo6YmVmb3JlCisgICAg
Ly8gICAgIC0gYW55IG90aGVyIHBzZXVkby1lbGVtZW50cyBub3QgbWVudGlvbmVkIHNwZWNpZmlj
YWxseSBpbiB0aGlzIGxpc3QsIHNvcnRlZCBpbiBhc2NlbmRpbmcgb3JkZXIgYnkgdGhlIFVuaWNv
ZGUgY29kZXBvaW50cyB0aGF0IG1ha2UgdXAgZWFjaCBzZWxlY3RvcgogICAgIC8vICAgICAtIDo6
YWZ0ZXIKICAgICAvLyAgICAgLSBlbGVtZW50IGNoaWxkcmVuCi0KLSAgICBlbnVtIFNvcnRpbmdJ
bmRleCA6IHVpbnQ4X3QgeyBOb3RQc2V1ZG8sIEJlZm9yZSwgQWZ0ZXIgfTsKLQotICAgIGludCBh
U29ydGluZ0luZGV4ID0gTm90UHNldWRvOwotICAgIEVsZW1lbnQqIGFSZWZlcmVuY2VFbGVtZW50
ID0gJmE7Ci0gICAgaWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGEpKSB7Ci0gICAgICAgIGF1dG8mIGFQ
c2V1ZG8gPSBkb3duY2FzdDxQc2V1ZG9FbGVtZW50PihhKTsKLSAgICAgICAgYVNvcnRpbmdJbmRl
eCA9IGFQc2V1ZG8uaXNCZWZvcmVQc2V1ZG9FbGVtZW50KCkgPyBCZWZvcmUgOiBBZnRlcjsKLSAg
ICAgICAgYVJlZmVyZW5jZUVsZW1lbnQgPSBhUHNldWRvLmhvc3RFbGVtZW50KCk7Ci0gICAgICAg
IEFTU0VSVChhUmVmZXJlbmNlRWxlbWVudCk7Ci0gICAgfQotCi0gICAgaW50IGJTb3J0aW5nSW5k
ZXggPSBOb3RQc2V1ZG87Ci0gICAgRWxlbWVudCogYlJlZmVyZW5jZUVsZW1lbnQgPSAmYjsKLSAg
ICBpZiAoaXM8UHNldWRvRWxlbWVudD4oYikpIHsKLSAgICAgICAgYXV0byYgYlBzZXVkbyA9IGRv
d25jYXN0PFBzZXVkb0VsZW1lbnQ+KGIpOwotICAgICAgICBiU29ydGluZ0luZGV4ID0gYlBzZXVk
by5pc0JlZm9yZVBzZXVkb0VsZW1lbnQoKSA/IEJlZm9yZSA6IEFmdGVyOwotICAgICAgICBiUmVm
ZXJlbmNlRWxlbWVudCA9IGJQc2V1ZG8uaG9zdEVsZW1lbnQoKTsKLSAgICAgICAgQVNTRVJUKGJS
ZWZlcmVuY2VFbGVtZW50KTsKLSAgICB9Ci0KLSAgICBpZiAoYVJlZmVyZW5jZUVsZW1lbnQgPT0g
YlJlZmVyZW5jZUVsZW1lbnQpCisgICAgZW51bSBTb3J0aW5nSW5kZXggOiB1aW50OF90IHsgTm90
UHNldWRvLCBNYXJrZXIsIEJlZm9yZSwgRmlyc3RMZXR0ZXIsIEZpcnN0TGluZSwgSGlnaGxpZ2h0
LCBTY3JvbGxiYXIsIFNlbGVjdGlvbiwgQWZ0ZXIsIE90aGVyIH07CisgICAgYXV0byBzb3J0aW5n
SW5kZXggPSBbXShQc2V1ZG9JZCBwc2V1ZG9JZCkgLT4gU29ydGluZ0luZGV4IHsKKyAgICAgICAg
c3dpdGNoIChwc2V1ZG9JZCkgeworICAgICAgICBjYXNlIFBzZXVkb0lkOjpOb25lOgorICAgICAg
ICAgICAgcmV0dXJuIE5vdFBzZXVkbzsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6TWFya2VyOgor
ICAgICAgICAgICAgcmV0dXJuIE1hcmtlcjsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6QmVmb3Jl
OgorICAgICAgICAgICAgcmV0dXJuIEJlZm9yZTsKKyAgICAgICAgY2FzZSBQc2V1ZG9JZDo6Rmly
c3RMZXR0ZXI6CisgICAgICAgICAgICByZXR1cm4gRmlyc3RMZXR0ZXI7CisgICAgICAgIGNhc2Ug
UHNldWRvSWQ6OkZpcnN0TGluZToKKyAgICAgICAgICAgIHJldHVybiBGaXJzdExpbmU7CisgICAg
ICAgIGNhc2UgUHNldWRvSWQ6OkhpZ2hsaWdodDoKKyAgICAgICAgICAgIHJldHVybiBIaWdobGln
aHQ7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OlNjcm9sbGJhcjoKKyAgICAgICAgICAgIHJldHVy
biBTY3JvbGxiYXI7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OlNlbGVjdGlvbjoKKyAgICAgICAg
ICAgIHJldHVybiBTZWxlY3Rpb247CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAg
ICAgICAgICAgcmV0dXJuIEFmdGVyOworICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgQVNT
RVJUX05PVF9SRUFDSEVEKCk7CisgICAgICAgICAgICByZXR1cm4gT3RoZXI7CisgICAgICAgIH0K
KyAgICB9OworCisgICAgYXV0byYgYVJlZmVyZW5jZUVsZW1lbnQgPSBhLmVsZW1lbnQ7CisgICAg
aW50IGFTb3J0aW5nSW5kZXggPSBzb3J0aW5nSW5kZXgoYS5wc2V1ZG9JZCk7CisKKyAgICBhdXRv
JiBiUmVmZXJlbmNlRWxlbWVudCA9IGIuZWxlbWVudDsKKyAgICBpbnQgYlNvcnRpbmdJbmRleCA9
IHNvcnRpbmdJbmRleChiLnBzZXVkb0lkKTsKKworICAgIGlmICgmYVJlZmVyZW5jZUVsZW1lbnQg
PT0gJmJSZWZlcmVuY2VFbGVtZW50KSB7CisgICAgICAgIEFTU0VSVChhU29ydGluZ0luZGV4ICE9
IGJTb3J0aW5nSW5kZXgpOwogICAgICAgICByZXR1cm4gYVNvcnRpbmdJbmRleCA8IGJTb3J0aW5n
SW5kZXg7Ci0gICAgcmV0dXJuIGFSZWZlcmVuY2VFbGVtZW50LT5jb21wYXJlRG9jdW1lbnRQb3Np
dGlvbigqYlJlZmVyZW5jZUVsZW1lbnQpICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9MTE9X
SU5HOworICAgIH0KKyAgICByZXR1cm4gYVJlZmVyZW5jZUVsZW1lbnQuY29tcGFyZURvY3VtZW50
UG9zaXRpb24oYlJlZmVyZW5jZUVsZW1lbnQpICYgTm9kZTo6RE9DVU1FTlRfUE9TSVRJT05fRk9M
TE9XSU5HOwogfQogCiBzdGF0aWMgYm9vbCBjb21wYXJlQ1NTVHJhbnNpdGlvbnMoY29uc3QgQ1NT
VHJhbnNpdGlvbiYgYSwgY29uc3QgQ1NTVHJhbnNpdGlvbiYgYikKIHsKICAgICBBU1NFUlQoYS5v
d25pbmdFbGVtZW50KCkpOwogICAgIEFTU0VSVChiLm93bmluZ0VsZW1lbnQoKSk7Ci0gICAgYXV0
byYgYU93bmluZ0VsZW1lbnQgPSAqYS5vd25pbmdFbGVtZW50KCk7Ci0gICAgYXV0byYgYk93bmlu
Z0VsZW1lbnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CisgICAgYXV0byYgYU93bmluZ0VsZW1lbnQg
PSBhLm93bmluZ0VsZW1lbnQoKTsKKyAgICBhdXRvJiBiT3duaW5nRWxlbWVudCA9IGIub3duaW5n
RWxlbWVudCgpOwogCiAgICAgLy8gSWYgdGhlIG93bmluZyBlbGVtZW50IG9mIEEgYW5kIEIgZGlm
ZmVycywgc29ydCBBIGFuZCBCIGJ5IHRyZWUgb3JkZXIgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBv
d25pbmcgZWxlbWVudHMuCi0gICAgaWYgKCZhT3duaW5nRWxlbWVudCAhPSAmYk93bmluZ0VsZW1l
bnQpCi0gICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVt
ZW50UG9zaXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmluZ0Vs
ZW1lbnQpOworICAgIGlmICgqYU93bmluZ0VsZW1lbnQgIT0gKmJPd25pbmdFbGVtZW50KQorICAg
ICAgICByZXR1cm4gY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0
aW9uc0luRG9jdW1lbnRUcmVlT3JkZXIoKmFPd25pbmdFbGVtZW50LCAqYk93bmluZ0VsZW1lbnQp
OwogCiAgICAgLy8gT3RoZXJ3aXNlLCBpZiBBIGFuZCBCIGhhdmUgZGlmZmVyZW50IHRyYW5zaXRp
b24gZ2VuZXJhdGlvbiB2YWx1ZXMsIHNvcnQgYnkgdGhlaXIgY29ycmVzcG9uZGluZyB0cmFuc2l0
aW9uIGdlbmVyYXRpb24gaW4gYXNjZW5kaW5nIG9yZGVyLgogICAgIGlmIChhLmdlbmVyYXRpb25U
aW1lKCkgIT0gYi5nZW5lcmF0aW9uVGltZSgpKQpAQCAtMTAxLDE1ICsxMTgsMTUgQEAgc3RhdGlj
IGJvb2wgY29tcGFyZUNTU0FuaW1hdGlvbnMoY29uc3QgQ1NTQW5pbWF0aW9uJiBhLCBjb25zdCBD
U1NBbmltYXRpb24mIGIpCiAgICAgLy8gaHR0cHM6Ly9kcmFmdHMuY3Nzd2cub3JnL2Nzcy1hbmlt
YXRpb25zLTIvI2FuaW1hdGlvbi1jb21wb3NpdGUtb3JkZXIKICAgICBBU1NFUlQoYS5vd25pbmdF
bGVtZW50KCkpOwogICAgIEFTU0VSVChiLm93bmluZ0VsZW1lbnQoKSk7Ci0gICAgYXV0byYgYU93
bmluZ0VsZW1lbnQgPSAqYS5vd25pbmdFbGVtZW50KCk7Ci0gICAgYXV0byYgYk93bmluZ0VsZW1l
bnQgPSAqYi5vd25pbmdFbGVtZW50KCk7CisgICAgYXV0byYgYU93bmluZ0VsZW1lbnQgPSBhLm93
bmluZ0VsZW1lbnQoKTsKKyAgICBhdXRvJiBiT3duaW5nRWxlbWVudCA9IGIub3duaW5nRWxlbWVu
dCgpOwogCiAgICAgLy8gSWYgdGhlIG93bmluZyBlbGVtZW50IG9mIEEgYW5kIEIgZGlmZmVycywg
c29ydCBBIGFuZCBCIGJ5IHRyZWUgb3JkZXIgb2YgdGhlaXIgY29ycmVzcG9uZGluZyBvd25pbmcg
ZWxlbWVudHMuCi0gICAgaWYgKCZhT3duaW5nRWxlbWVudCAhPSAmYk93bmluZ0VsZW1lbnQpCi0g
ICAgICAgIHJldHVybiBjb21wYXJlRGVjbGFyYXRpdmVBbmltYXRpb25Pd25pbmdFbGVtZW50UG9z
aXRpb25zSW5Eb2N1bWVudFRyZWVPcmRlcihhT3duaW5nRWxlbWVudCwgYk93bmluZ0VsZW1lbnQp
OworICAgIGlmICgqYU93bmluZ0VsZW1lbnQgIT0gKmJPd25pbmdFbGVtZW50KQorICAgICAgICBy
ZXR1cm4gY29tcGFyZURlY2xhcmF0aXZlQW5pbWF0aW9uT3duaW5nRWxlbWVudFBvc2l0aW9uc0lu
RG9jdW1lbnRUcmVlT3JkZXIoKmFPd25pbmdFbGVtZW50LCAqYk93bmluZ0VsZW1lbnQpOwogCiAg
ICAgLy8gU29ydCBBIGFuZCBCIGJhc2VkIG9uIHRoZWlyIHBvc2l0aW9uIGluIHRoZSBjb21wdXRl
ZCB2YWx1ZSBvZiB0aGUgYW5pbWF0aW9uLW5hbWUgcHJvcGVydHkgb2YgdGhlIChjb21tb24pIG93
bmluZyBlbGVtZW50LgotICAgIGF1dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVu
dC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCkuY3NzQW5pbWF0aW9uTGlzdCgpOworICAgIGF1
dG8qIGNzc0FuaW1hdGlvbkxpc3QgPSBhT3duaW5nRWxlbWVudC0+ZW5zdXJlS2V5ZnJhbWVFZmZl
Y3RTdGFjaygpLmNzc0FuaW1hdGlvbkxpc3QoKTsKICAgICBBU1NFUlQoY3NzQW5pbWF0aW9uTGlz
dCk7CiAgICAgQVNTRVJUKCFjc3NBbmltYXRpb25MaXN0LT5pc0VtcHR5KCkpOwogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudC5jcHAKaW5kZXggYmYzODg0YjA0MzY3OTVhYTVmNjBhYjg0MzhkZmNhNzk3M2QwMWI4
Yy4uMjc1YjVkNzU4OTdhNGFhNGMxMTIwOGI3MDAyYzkwNTVmYjc1YmM0NyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9F
bGVtZW50LmNwcApAQCAtMjI4Myw3ICsyMjgzLDcgQEAgdm9pZCBFbGVtZW50OjpyZW1vdmVkRnJv
bUFuY2VzdG9yKFJlbW92YWxUeXBlIHJlbW92YWxUeXBlLCBDb250YWluZXJOb2RlJiBvbGRQYXIK
IAogICAgIFJlZlB0cjxGcmFtZT4gZnJhbWUgPSBkb2N1bWVudCgpLmZyYW1lKCk7CiAgICAgaWYg
KGF1dG8qIHRpbWVsaW5lID0gZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAg
IHRpbWVsaW5lLT5lbGVtZW50V2FzUmVtb3ZlZCgqdGhpcyk7CisgICAgICAgIHRpbWVsaW5lLT5l
bGVtZW50V2FzUmVtb3ZlZCh7ICp0aGlzLCBwc2V1ZG9JZCgpIH0pOwogCiAjaWYgRU5BQkxFKFdI
RUVMX0VWRU5UX0xBVENISU5HKQogICAgIGlmIChmcmFtZSAmJiBmcmFtZS0+cGFnZSgpKSB7CkBA
IC0zODAzLDQyICszODAzLDQyIEBAIEludGVyc2VjdGlvbk9ic2VydmVyRGF0YSogRWxlbWVudDo6
aW50ZXJzZWN0aW9uT2JzZXJ2ZXJEYXRhSWZFeGlzdHMoKQogCiAjZW5kaWYKIAotRWxlbWVudEFu
aW1hdGlvblJhcmVEYXRhKiBFbGVtZW50OjphbmltYXRpb25SYXJlRGF0YSgpIGNvbnN0CitFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnQ6OmFuaW1hdGlvblJhcmVEYXRhKFBzZXVkb0lk
IHBzZXVkb0lkKSBjb25zdAogewotICAgIHJldHVybiBoYXNSYXJlRGF0YSgpID8gZWxlbWVudFJh
cmVEYXRhKCktPmVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSgpIDogbnVsbHB0cjsKKyAgICByZXR1
cm4gaGFzUmFyZURhdGEoKSA/IGVsZW1lbnRSYXJlRGF0YSgpLT5hbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkgOiBudWxscHRyOwogfQogCi1FbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIEVsZW1l
bnQ6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK0VsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYg
RWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0g
ICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJhcmVEYXRh
KCk7CisgICAgcmV0dXJuIGVuc3VyZUVsZW1lbnRSYXJlRGF0YSgpLmVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKHBzZXVkb0lkKTsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayogRWxlbWVudDo6a2V5
ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CitLZXlmcmFtZUVmZmVjdFN0YWNrKiBFbGVtZW50Ojpr
ZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKSBjb25zdAogewotICAgIGlmIChh
dXRvKiBhbmltYXRpb25EYXRhID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byog
YW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0
dXJuIGFuaW1hdGlvbkRhdGEtPmtleWZyYW1lRWZmZWN0U3RhY2soKTsKICAgICByZXR1cm4gbnVs
bHB0cjsKIH0KIAotS2V5ZnJhbWVFZmZlY3RTdGFjayYgRWxlbWVudDo6ZW5zdXJlS2V5ZnJhbWVF
ZmZlY3RTdGFjaygpCitLZXlmcmFtZUVmZmVjdFN0YWNrJiBFbGVtZW50OjplbnN1cmVLZXlmcmFt
ZUVmZmVjdFN0YWNrKFBzZXVkb0lkIHBzZXVkb0lkKQogewotICAgIHJldHVybiBlbnN1cmVBbmlt
YXRpb25SYXJlRGF0YSgpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3RhY2soKTsKKyAgICByZXR1cm4g
ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEocHNldWRvSWQpLmVuc3VyZUtleWZyYW1lRWZmZWN0U3Rh
Y2soKTsKIH0KIAotYm9vbCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdAorYm9v
bCBFbGVtZW50OjpoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7
Ci0gICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YSgpKSB7Cisg
ICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkp
IHsKICAgICAgICAgaWYgKGF1dG8qIGtleWZyYW1lRWZmZWN0U3RhY2sgPSBhbmltYXRpb25EYXRh
LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCiAgICAgICAgICAgICByZXR1cm4ga2V5ZnJhbWVFZmZl
Y3RTdGFjay0+aGFzRWZmZWN0cygpOwogICAgIH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLU9w
dGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1lbnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJl
bmRlclN0eWxlJiB0YXJnZXRTdHlsZSkKK09wdGlvblNldDxBbmltYXRpb25JbXBhY3Q+IEVsZW1l
bnQ6OmFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkIHBzZXVkb0lkLCBSZW5kZXJTdHlsZSYg
dGFyZ2V0U3R5bGUpCiB7CiAgICAgT3B0aW9uU2V0PEFuaW1hdGlvbkltcGFjdD4gaW1wYWN0Owog
Ci0gICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNr
KCkuc29ydGVkRWZmZWN0cygpKSB7CisgICAgZm9yIChjb25zdCBhdXRvJiBlZmZlY3QgOiBlbnN1
cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKS5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAg
ICAgQVNTRVJUKGVmZmVjdC0+YW5pbWF0aW9uKCkpOwogICAgICAgICBlZmZlY3QtPmFuaW1hdGlv
bigpLT5yZXNvbHZlKHRhcmdldFN0eWxlKTsKIApAQCAtMzg1Miw3MiArMzg1Miw3MiBAQCBPcHRp
b25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBFbGVtZW50OjphcHBseUtleWZyYW1lRWZmZWN0cyhSZW5k
ZXJTdHlsZSYgdGFyZ2V0U3R5bAogICAgIHJldHVybiBpbXBhY3Q7CiB9CiAKLWNvbnN0IEFuaW1h
dGlvbkNvbGxlY3Rpb24qIEVsZW1lbnQ6OmFuaW1hdGlvbnMoKSBjb25zdAorY29uc3QgQW5pbWF0
aW9uQ29sbGVjdGlvbiogRWxlbWVudDo6YW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkgY29u
c3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkp
CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0YShwc2V1ZG9J
ZCkpCiAgICAgICAgIHJldHVybiAmYW5pbWF0aW9uRGF0YS0+YW5pbWF0aW9ucygpOwogICAgIHJl
dHVybiBudWxscHRyOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc0NvbXBsZXRlZFRyYW5zaXRpb25z
Rm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKK2Jvb2wgRWxlbWVudDo6
aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NT
UHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0
YSA9IGFuaW1hdGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBh
bmltYXRpb25SYXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRh
LT5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAg
ICAgcmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9u
c0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0Citib29sIEVsZW1lbnQ6
Omhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkIHBzZXVkb0lkLCBDU1NQ
cm9wZXJ0eUlEIHByb3BlcnR5KSBjb25zdAogewotICAgIGlmIChhdXRvKiBhbmltYXRpb25EYXRh
ID0gYW5pbWF0aW9uUmFyZURhdGEoKSkKKyAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFu
aW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKSkKICAgICAgICAgcmV0dXJuIGFuaW1hdGlvbkRhdGEt
PnJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKS5jb250YWlucyhwcm9wZXJ0eSk7CiAgICAg
cmV0dXJuIGZhbHNlOwogfQogCi1ib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucygp
IGNvbnN0Citib29sIEVsZW1lbnQ6Omhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCBwc2V1
ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlvblJh
cmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJlRGF0
YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiAhYW5pbWF0aW9uRGF0YS0+cnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpLmlzRW1wdHkoKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLUFu
aW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmVuc3VyZUFuaW1hdGlvbnMoKQorQW5pbWF0aW9u
Q29sbGVjdGlvbiYgRWxlbWVudDo6ZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCBwc2V1ZG9JZCkK
IHsKLSAgICByZXR1cm4gZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zKCk7Cisg
ICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zKCk7
CiB9CiAKLUNTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIEVsZW1lbnQ6OmFuaW1hdGlvbnNDcmVhdGVk
QnlNYXJrdXAoKQorQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgRWxlbWVudDo6YW5pbWF0aW9uc0Ny
ZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCkKIHsKLSAgICByZXR1cm4gZW5zdXJlQW5p
bWF0aW9uUmFyZURhdGEoKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKCk7CisgICAgcmV0dXJu
IGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5hbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKCk7CiB9CiAKLXZvaWQgRWxlbWVudDo6c2V0QW5pbWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChD
U1NBbmltYXRpb25Db2xsZWN0aW9uJiYgYW5pbWF0aW9ucykKK3ZvaWQgRWxlbWVudDo6c2V0QW5p
bWF0aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCBwc2V1ZG9JZCwgQ1NTQW5pbWF0aW9uQ29s
bGVjdGlvbiYmIGFuaW1hdGlvbnMpCiB7Ci0gICAgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoKS5z
ZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFya3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOworICAgIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5zZXRBbmltYXRpb25zQ3JlYXRlZEJ5TWFy
a3VwKFdURk1vdmUoYW5pbWF0aW9ucykpOwogfQogCi1Qcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYg
RWxlbWVudDo6ZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkKK1Byb3BlcnR5
VG9UcmFuc2l0aW9uTWFwJiBFbGVtZW50OjplbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJv
cGVydHkoUHNldWRvSWQgcHNldWRvSWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJh
cmVEYXRhKCkuY29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCk7CisgICAgcmV0dXJuIGVu
c3VyZUFuaW1hdGlvblJhcmVEYXRhKHBzZXVkb0lkKS5jb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJv
cGVydHkoKTsKIH0KIAotUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVsZW1lbnQ6OmVuc3VyZVJ1
bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKQorUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIEVs
ZW1lbnQ6OmVuc3VyZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoUHNldWRvSWQgcHNldWRv
SWQpCiB7Ci0gICAgcmV0dXJuIGVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkucnVubmluZ1RyYW5z
aXRpb25zQnlQcm9wZXJ0eSgpOworICAgIHJldHVybiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShw
c2V1ZG9JZCkucnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eSgpOwogfQogCi1jb25zdCBSZW5k
ZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZSgpIGNvbnN0Citjb25z
dCBSZW5kZXJTdHlsZSogRWxlbWVudDo6bGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9J
ZCBwc2V1ZG9JZCkgY29uc3QKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1h
dGlvblJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25S
YXJlRGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIHJldHVybiBhbmltYXRpb25EYXRhLT5sYXN0U3R5
bGVDaGFuZ2VFdmVudFN0eWxlKCk7CiAgICAgcmV0dXJuIG51bGxwdHI7CiB9CiAKLXZvaWQgRWxl
bWVudDo6c2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9wdHI8Y29uc3Qg
UmVuZGVyU3R5bGU+JiYgc3R5bGUpCit2b2lkIEVsZW1lbnQ6OnNldExhc3RTdHlsZUNoYW5nZUV2
ZW50U3R5bGUoUHNldWRvSWQgcHNldWRvSWQsIHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJT
dHlsZT4mJiBzdHlsZSkKIHsKLSAgICBpZiAoYXV0byogYW5pbWF0aW9uRGF0YSA9IGFuaW1hdGlv
blJhcmVEYXRhKCkpCisgICAgaWYgKGF1dG8qIGFuaW1hdGlvbkRhdGEgPSBhbmltYXRpb25SYXJl
RGF0YShwc2V1ZG9JZCkpCiAgICAgICAgIGFuaW1hdGlvbkRhdGEtPnNldExhc3RTdHlsZUNoYW5n
ZUV2ZW50U3R5bGUoV1RGTW92ZShzdHlsZSkpOwogICAgIGVsc2UgaWYgKHN0eWxlKQotICAgICAg
ICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpLnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUo
V1RGTW92ZShzdHlsZSkpOworICAgICAgICBlbnN1cmVBbmltYXRpb25SYXJlRGF0YShwc2V1ZG9J
ZCkuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShXVEZNb3ZlKHN0eWxlKSk7CiB9CiAKICNp
ZiBFTkFCTEUoUkVTSVpFX09CU0VSVkVSKQpAQCAtNDU0Miw4ICs0NTQyLDggQEAgVmVjdG9yPFJl
ZlB0cjxXZWJBbmltYXRpb24+PiBFbGVtZW50OjpnZXRBbmltYXRpb25zKE9wdGlvbmFsPEdldEFu
aW1hdGlvbnNPcHRpb24KICAgICBkb2N1bWVudCgpLnVwZGF0ZVN0eWxlSWZOZWVkZWQoKTsKIAog
ICAgIFZlY3RvcjxSZWZQdHI8V2ViQW5pbWF0aW9uPj4gYW5pbWF0aW9uczsKLSAgICBpZiAoa2V5
ZnJhbWVFZmZlY3RTdGFjaygpKSB7Ci0gICAgICAgIGZvciAoYXV0byYgZWZmZWN0IDoga2V5ZnJh
bWVFZmZlY3RTdGFjaygpLT5zb3J0ZWRFZmZlY3RzKCkpIHsKKyAgICBpZiAoYXV0byogZWZmZWN0
U3RhY2sgPSBrZXlmcmFtZUVmZmVjdFN0YWNrKFBzZXVkb0lkOjpOb25lKSkgeworICAgICAgICBm
b3IgKGF1dG8mIGVmZmVjdCA6IGVmZmVjdFN0YWNrLT5zb3J0ZWRFZmZlY3RzKCkpIHsKICAgICAg
ICAgICAgIGlmIChlZmZlY3QtPmFuaW1hdGlvbigpLT5pc1JlbGV2YW50KCkpCiAgICAgICAgICAg
ICAgICAgYW5pbWF0aW9ucy5hcHBlbmQoZWZmZWN0LT5hbmltYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudC5oCmluZGV4IGY2NTE5MzdhNjAxYjdiYjUyNmU2YjFiMGVhMjNmZGVjNGJh
MzNhMTguLjYxMWUxMTA4ZDFjZWUwZjYzMWE3Nzg3MzQ2YWU5NWFiMjA4NGI2MTMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvZG9t
L0VsZW1lbnQuaApAQCAtNDg2LDIzICs0ODYsMjQgQEAgcHVibGljOgogICAgIHZvaWQgY2xlYXJI
YXNQZW5kaW5nUmVzb3VyY2VzKCkgeyBjbGVhck5vZGVGbGFnKE5vZGVGbGFnOjpIYXNQZW5kaW5n
UmVzb3VyY2VzKTsgfQogICAgIHZpcnR1YWwgdm9pZCBidWlsZFBlbmRpbmdSZXNvdXJjZSgpIHsg
fTsKIAotICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0U3RhY2soKSBjb25z
dDsKLSAgICBLZXlmcmFtZUVmZmVjdFN0YWNrJiBlbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKCk7
Ci0gICAgYm9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoKSBjb25zdDsKLSAgICBPcHRpb25TZXQ8QW5p
bWF0aW9uSW1wYWN0PiBhcHBseUtleWZyYW1lRWZmZWN0cyhSZW5kZXJTdHlsZSYpOwotCi0gICAg
Y29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucygpIGNvbnN0OwotICAgIGJvb2wg
aGFzQ29tcGxldGVkVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShDU1NQcm9wZXJ0eUlEKSBjb25zdDsK
LSAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQp
IGNvbnN0OwotICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb25zKCkgY29uc3Q7Ci0gICAgQW5p
bWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucygpOwotICAgIFByb3BlcnR5VG9UcmFu
c2l0aW9uTWFwJiBlbnN1cmVDb21wbGV0ZWRUcmFuc2l0aW9uc0J5UHJvcGVydHkoKTsKLSAgICBQ
cm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0
eSgpOwotICAgIENTU0FuaW1hdGlvbkNvbGxlY3Rpb24mIGFuaW1hdGlvbnNDcmVhdGVkQnlNYXJr
dXAoKTsKLSAgICB2b2lkIHNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9u
Q29sbGVjdGlvbiYmKTsKLQotICAgIGNvbnN0IFJlbmRlclN0eWxlKiBsYXN0U3R5bGVDaGFuZ2VF
dmVudFN0eWxlKCkgY29uc3Q7Ci0gICAgdm9pZCBzZXRMYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxl
KHN0ZDo6dW5pcXVlX3B0cjxjb25zdCBSZW5kZXJTdHlsZT4mJik7CisgICAgS2V5ZnJhbWVFZmZl
Y3RTdGFjayoga2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCkgY29uc3Q7CisgICAgS2V5ZnJh
bWVFZmZlY3RTdGFjayYgZW5zdXJlS2V5ZnJhbWVFZmZlY3RTdGFjayhQc2V1ZG9JZCk7CisgICAg
Ym9vbCBoYXNLZXlmcmFtZUVmZmVjdHMoUHNldWRvSWQpIGNvbnN0OworICAgIE9wdGlvblNldDxB
bmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFBzZXVkb0lkLCBSZW5kZXJTdHls
ZSYpOworCisgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVjdGlvbiogYW5pbWF0aW9ucyhQc2V1ZG9J
ZCkgY29uc3Q7CisgICAgYm9vbCBoYXNDb21wbGV0ZWRUcmFuc2l0aW9uc0ZvclByb3BlcnR5KFBz
ZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9uc0ZvclByb3BlcnR5KFBzZXVkb0lkLCBDU1NQcm9wZXJ0eUlEKSBjb25zdDsKKyAgICBib29s
IGhhc1J1bm5pbmdUcmFuc2l0aW9ucyhQc2V1ZG9JZCkgY29uc3Q7CisgICAgQW5pbWF0aW9uQ29s
bGVjdGlvbiYgZW5zdXJlQW5pbWF0aW9ucyhQc2V1ZG9JZCk7CisKKyAgICBQcm9wZXJ0eVRvVHJh
bnNpdGlvbk1hcCYgZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KFBzZXVkb0lk
KTsKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1hcCYgZW5zdXJlUnVubmluZ1RyYW5zaXRpb25z
QnlQcm9wZXJ0eShQc2V1ZG9JZCk7CisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5pbWF0
aW9uc0NyZWF0ZWRCeU1hcmt1cChQc2V1ZG9JZCk7CisgICAgdm9pZCBzZXRBbmltYXRpb25zQ3Jl
YXRlZEJ5TWFya3VwKFBzZXVkb0lkLCBDU1NBbmltYXRpb25Db2xsZWN0aW9uJiYpOworCisgICAg
Y29uc3QgUmVuZGVyU3R5bGUqIGxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUHNldWRvSWQpIGNv
bnN0OworICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShQc2V1ZG9JZCwgc3Rk
Ojp1bmlxdWVfcHRyPGNvbnN0IFJlbmRlclN0eWxlPiYmKTsKIAogI2lmIEVOQUJMRShGVUxMU0NS
RUVOX0FQSSkKICAgICBib29sIGNvbnRhaW5zRnVsbFNjcmVlbkVsZW1lbnQoKSBjb25zdCB7IHJl
dHVybiBoYXNOb2RlRmxhZyhOb2RlRmxhZzo6Q29udGFpbnNGdWxsU2NyZWVuRWxlbWVudCk7IH0K
QEAgLTcxNiw4ICs3MTcsOCBAQCBwcml2YXRlOgogICAgIEVsZW1lbnRSYXJlRGF0YSogZWxlbWVu
dFJhcmVEYXRhKCkgY29uc3Q7CiAgICAgRWxlbWVudFJhcmVEYXRhJiBlbnN1cmVFbGVtZW50UmFy
ZURhdGEoKTsKIAotICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURh
dGEoKSBjb25zdDsKLSAgICBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEmIGVuc3VyZUFuaW1hdGlv
blJhcmVEYXRhKCk7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBhbmltYXRpb25SYXJl
RGF0YShQc2V1ZG9JZCkgY29uc3Q7CisgICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1
cmVBbmltYXRpb25SYXJlRGF0YShQc2V1ZG9JZCk7CiAKICAgICB2aXJ0dWFsIGludCBkZWZhdWx0
VGFiSW5kZXgoKSBjb25zdDsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcApp
bmRleCBlNzJmMzJjOTFmNzQ4YmExNmNmNTIzNTNiMzg1Y2NlYTllNTdlZjEyLi5lYzg1YTQ5OTlk
NWU4OWVkNDMzMjkxY2M1NWEzZmExZjQ3MWVjNTVkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVu
dFJhcmVEYXRhLmNwcApAQCAtMzYsNyArMzYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBzdHJ1
Y3QgU2FtZVNpemVBc0VsZW1lbnRSYXJlRGF0YSA6IE5vZGVSYXJlRGF0YSB7CiAgICAgTGF5b3V0
U2l6ZSBzaXplRm9yUmVzaXppbmc7CiAgICAgSW50UG9pbnQgc2F2ZWRMYXllclNjcm9sbFBvc2l0
aW9uOwotICAgIHZvaWQqIHBvaW50ZXJzWzExXTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRy
PEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4+IGFuaW1hdGlvblJhcmVEYXRhOworICAgIHZvaWQq
IHBvaW50ZXJzWzEwXTsKICNpZiBFTkFCTEUoSU5URVJTRUNUSU9OX09CU0VSVkVSKQogICAgIHZv
aWQqIGludGVyc2VjdGlvbk9ic2VydmVyRGF0YTsKICNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvZG9tL0VsZW1lbnRSYXJlRGF0YS5oIGIvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1l
bnRSYXJlRGF0YS5oCmluZGV4IDFhMzVlNWZjMjExNDRkYmViYmZkOTkxNGY4NGExMTgwNDZiYjEz
YzkuLjJjZDdlOWY3ODc1NzY3ZDNmNjcxYjllYmYzMTdiNGVmNTExZDY5ODcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50UmFyZURhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudFJhcmVEYXRhLmgKQEAgLTg5LDggKzg5LDggQEAgcHVibGljOgogICAgIElu
dFBvaW50IHNhdmVkTGF5ZXJTY3JvbGxQb3NpdGlvbigpIGNvbnN0IHsgcmV0dXJuIG1fc2F2ZWRM
YXllclNjcm9sbFBvc2l0aW9uOyB9CiAgICAgdm9pZCBzZXRTYXZlZExheWVyU2Nyb2xsUG9zaXRp
b24oSW50UG9pbnQgcG9zaXRpb24pIHsgbV9zYXZlZExheWVyU2Nyb2xsUG9zaXRpb24gPSBwb3Np
dGlvbjsgfQogCi0gICAgRWxlbWVudEFuaW1hdGlvblJhcmVEYXRhKiBlbGVtZW50QW5pbWF0aW9u
UmFyZURhdGEoKSB7IHJldHVybiBtX2FuaW1hdGlvblJhcmVEYXRhLmdldCgpOyB9Ci0gICAgRWxl
bWVudEFuaW1hdGlvblJhcmVEYXRhJiBlbnN1cmVBbmltYXRpb25SYXJlRGF0YSgpOworICAgIEVs
ZW1lbnRBbmltYXRpb25SYXJlRGF0YSogYW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQpIGNvbnN0
OworICAgIEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YSYgZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEo
UHNldWRvSWQpOwogCiAgICAgRE9NVG9rZW5MaXN0KiBwYXJ0TGlzdCgpIGNvbnN0IHsgcmV0dXJu
IG1fcGFydExpc3QuZ2V0KCk7IH0KICAgICB2b2lkIHNldFBhcnRMaXN0KHN0ZDo6dW5pcXVlX3B0
cjxET01Ub2tlbkxpc3Q+IHBhcnRMaXN0KSB7IG1fcGFydExpc3QgPSBXVEZNb3ZlKHBhcnRMaXN0
KTsgfQpAQCAtMTQxLDcgKzE0MSw3IEBAIHB1YmxpYzoKICAgICAgICAgaWYgKG1fcmVzaXplT2Jz
ZXJ2ZXJEYXRhKQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBlOjpSZXNpemVPYnNlcnZl
cik7CiAjZW5kaWYKLSAgICAgICAgaWYgKG1fYW5pbWF0aW9uUmFyZURhdGEpCisgICAgICAgIGlm
ICghbV9hbmltYXRpb25SYXJlRGF0YS5pc0VtcHR5KCkpCiAgICAgICAgICAgICByZXN1bHQuYWRk
KFVzZVR5cGU6OkFuaW1hdGlvbnMpOwogICAgICAgICBpZiAobV9iZWZvcmVQc2V1ZG9FbGVtZW50
IHx8IG1fYWZ0ZXJQc2V1ZG9FbGVtZW50KQogICAgICAgICAgICAgcmVzdWx0LmFkZChVc2VUeXBl
OjpQc2V1ZG9FbGVtZW50cyk7CkBAIC0xNzUsNyArMTc1LDcgQEAgcHJpdmF0ZToKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8UmVzaXplT2JzZXJ2ZXJEYXRhPiBtX3Jlc2l6ZU9ic2VydmVyRGF0YTsKICNl
bmRpZgogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmltYXRpb25SYXJlRGF0YT4gbV9h
bmltYXRpb25SYXJlRGF0YTsKKyAgICBWZWN0b3I8c3RkOjp1bmlxdWVfcHRyPEVsZW1lbnRBbmlt
YXRpb25SYXJlRGF0YT4+IG1fYW5pbWF0aW9uUmFyZURhdGE7CiAKICAgICBSZWZQdHI8UHNldWRv
RWxlbWVudD4gbV9iZWZvcmVQc2V1ZG9FbGVtZW50OwogICAgIFJlZlB0cjxQc2V1ZG9FbGVtZW50
PiBtX2FmdGVyUHNldWRvRWxlbWVudDsKQEAgLTIzNywxMSArMjM3LDIyIEBAIGlubGluZSB2b2lk
IEVsZW1lbnRSYXJlRGF0YTo6c2V0VW51c3VhbFRhYkluZGV4KGludCB0YWJJbmRleCkKICAgICBt
X3VudXN1YWxUYWJJbmRleCA9IHRhYkluZGV4OwogfQogCi1pbmxpbmUgRWxlbWVudEFuaW1hdGlv
blJhcmVEYXRhJiBFbGVtZW50UmFyZURhdGE6OmVuc3VyZUFuaW1hdGlvblJhcmVEYXRhKCkKK2lu
bGluZSBFbGVtZW50QW5pbWF0aW9uUmFyZURhdGEqIEVsZW1lbnRSYXJlRGF0YTo6YW5pbWF0aW9u
UmFyZURhdGEoUHNldWRvSWQgcHNldWRvSWQpIGNvbnN0CiB7Ci0gICAgaWYgKCFtX2FuaW1hdGlv
blJhcmVEYXRhKQotICAgICAgICBtX2FuaW1hdGlvblJhcmVEYXRhID0gbWFrZVVuaXF1ZTxFbGVt
ZW50QW5pbWF0aW9uUmFyZURhdGE+KCk7Ci0gICAgcmV0dXJuICptX2FuaW1hdGlvblJhcmVEYXRh
LmdldCgpOworICAgIGZvciAoYXV0byYgYW5pbWF0aW9uUmFyZURhdGEgOiBtX2FuaW1hdGlvblJh
cmVEYXRhKSB7CisgICAgICAgIGlmIChhbmltYXRpb25SYXJlRGF0YS0+cHNldWRvSWQoKSA9PSBw
c2V1ZG9JZCkKKyAgICAgICAgICAgIHJldHVybiBhbmltYXRpb25SYXJlRGF0YS5nZXQoKTsKKyAg
ICB9CisgICAgcmV0dXJuIG51bGxwdHI7Cit9CisKK2lubGluZSBFbGVtZW50QW5pbWF0aW9uUmFy
ZURhdGEmIEVsZW1lbnRSYXJlRGF0YTo6ZW5zdXJlQW5pbWF0aW9uUmFyZURhdGEoUHNldWRvSWQg
cHNldWRvSWQpCit7CisgICAgaWYgKGF1dG8qIGFuaW1hdGlvblJhcmVEYXRhID0gdGhpcy0+YW5p
bWF0aW9uUmFyZURhdGEocHNldWRvSWQpKQorICAgICAgICByZXR1cm4gKmFuaW1hdGlvblJhcmVE
YXRhOworCisgICAgbV9hbmltYXRpb25SYXJlRGF0YS5hcHBlbmQobWFrZVVuaXF1ZTxFbGVtZW50
QW5pbWF0aW9uUmFyZURhdGE+KHBzZXVkb0lkKSk7CisgICAgcmV0dXJuICptX2FuaW1hdGlvblJh
cmVEYXRhLmxhc3QoKS5nZXQoKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvZG9tL1BzZXVkb0VsZW1lbnQuY3BwCmluZGV4IGRhZDE1NjZjYzA2YTNkMTRkNmJjYjdjNTA3
NmVjYzE4YjZjN2E3NjcuLjU4ZDI4NTM5MWY4YmNiODI1YTZjMmZmMWI5ZWExOWEyZmNhNmFjMzcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9Qc2V1ZG9FbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9kb20vUHNldWRvRWxlbWVudC5jcHAKQEAgLTkwLDcgKzkwLDcgQEAgdm9p
ZCBQc2V1ZG9FbGVtZW50OjpjbGVhckhvc3RFbGVtZW50KCkKICAgICBJbnNwZWN0b3JJbnN0cnVt
ZW50YXRpb246OnBzZXVkb0VsZW1lbnREZXN0cm95ZWQoZG9jdW1lbnQoKS5wYWdlKCksICp0aGlz
KTsKIAogICAgIGlmIChhdXRvKiB0aW1lbGluZSA9IGRvY3VtZW50KCkuZXhpc3RpbmdUaW1lbGlu
ZSgpKQotICAgICAgICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoKnRoaXMpOworICAgICAg
ICB0aW1lbGluZS0+ZWxlbWVudFdhc1JlbW92ZWQoU3R5bGVhYmxlOjpmcm9tRWxlbWVudCgqdGhp
cykpOwogICAgIAogICAgIG1faG9zdEVsZW1lbnQgPSBudWxscHRyOwogfQpAQCAtMTAyLDggKzEw
MiwxMCBAQCBib29sIFBzZXVkb0VsZW1lbnQ6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmIHN0eWxlKQogCiBib29sIFBzZXVkb0VsZW1lbnQ6OmlzVGFyZ2V0ZWRCeUtleWZyYW1l
RWZmZWN0UmVxdWlyaW5nUHNldWRvRWxlbWVudCgpCiB7Ci0gICAgaWYgKGF1dG8qIHN0YWNrID0g
a2V5ZnJhbWVFZmZlY3RTdGFjaygpKQotICAgICAgICByZXR1cm4gc3RhY2stPnJlcXVpcmVzUHNl
dWRvRWxlbWVudCgpOworICAgIGlmIChtX2hvc3RFbGVtZW50KSB7CisgICAgICAgIGlmIChhdXRv
KiBzdGFjayA9IG1faG9zdEVsZW1lbnQtPmtleWZyYW1lRWZmZWN0U3RhY2socHNldWRvSWQoKSkp
CisgICAgICAgICAgICByZXR1cm4gc3RhY2stPnJlcXVpcmVzUHNldWRvRWxlbWVudCgpOworICAg
IH0KICAgICByZXR1cm4gZmFsc2U7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9SZW5kZXJCb3hNb2RlbE9iamVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyQm94TW9kZWxPYmplY3QuY3BwCmluZGV4IGYxNjdjM2IyY2MyZTAyYzdhNmExNWI2
MDhjN2JhY2ZhNmZmNjA1OGIuLjIyODA4ZGE5ZjI5Zjk1MzIzMzM3Y2EzNzhhYjNiN2FmOGIzMDIx
MmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJCb3hNb2RlbE9i
amVjdC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckJveE1vZGVsT2Jq
ZWN0LmNwcApAQCAtMjcwOCw3ICsyNzA4LDcgQEAgYm9vbCBSZW5kZXJCb3hNb2RlbE9iamVjdDo6
aGFzUnVubmluZ0FjY2VsZXJhdGVkQW5pbWF0aW9ucygpIGNvbnN0CiB7CiAgICAgaWYgKGF1dG8q
IG5vZGUgPSBlbGVtZW50KCkpIHsKICAgICAgICAgaWYgKGF1dG8qIHRpbWVsaW5lID0gbm9kZS0+
ZG9jdW1lbnQoKS5leGlzdGluZ1RpbWVsaW5lKCkpCi0gICAgICAgICAgICByZXR1cm4gdGltZWxp
bmUtPnJ1bm5pbmdBbmltYXRpb25zRm9yRWxlbWVudEFyZUFsbEFjY2VsZXJhdGVkKCpub2RlKTsK
KyAgICAgICAgICAgIHJldHVybiB0aW1lbGluZS0+cnVubmluZ0FuaW1hdGlvbnNGb3JSZW5kZXJl
ckFyZUFsbEFjY2VsZXJhdGVkKCp0aGlzKTsKICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwogfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxheWVyQ29tcG9zaXRv
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNw
cAppbmRleCBmMjM5YzRhNDQ4MGFlZTcyYTM5MmIzNmM1MjQ1YjdjZDQxZDYyZDM3Li40ZmM4YWQ2
OGM1OWQ4YzYyNTYzMzE4MzM2NWIwZTQzNTM2ZjE2NDFmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJDb21wb3NpdG9yLmNwcApAQCAtMjk1OSw4ICsyOTU5
LDggQEAgYm9vbCBSZW5kZXJMYXllckNvbXBvc2l0b3I6OnJlcXVpcmVzQ29tcG9zaXRpbmdGb3JB
bmltYXRpb24oUmVuZGVyTGF5ZXJNb2RlbE9iamUKICAgICBpZiAoIShtX2NvbXBvc2l0aW5nVHJp
Z2dlcnMgJiBDaHJvbWVDbGllbnQ6OkFuaW1hdGlvblRyaWdnZXIpKQogICAgICAgICByZXR1cm4g
ZmFsc2U7CiAKLSAgICBpZiAoYXV0byogZWxlbWVudCA9IHJlbmRlcmVyLmVsZW1lbnQoKSkgewot
ICAgICAgICBpZiAoYXV0byogZWZmZWN0c1N0YWNrID0gZWxlbWVudC0+a2V5ZnJhbWVFZmZlY3RT
dGFjaygpKSB7CisgICAgaWYgKGF1dG8gc3R5bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVy
ZXIocmVuZGVyZXIpKSB7CisgICAgICAgIGlmIChhdXRvKiBlZmZlY3RzU3RhY2sgPSBzdHlsZWFi
bGUtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkgewogICAgICAgICAgICAgcmV0dXJuIChlZmZlY3Rz
U3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJvcGVydHkoQ1NTUHJvcGVydHlPcGFjaXR5KQog
ICAgICAgICAgICAgICAgICYmICh1c2VzQ29tcG9zaXRpbmcoKSB8fCAobV9jb21wb3NpdGluZ1Ry
aWdnZXJzICYgQ2hyb21lQ2xpZW50OjpBbmltYXRlZE9wYWNpdHlUcmlnZ2VyKSkpCiAgICAgICAg
ICAgICAgICAgfHwgZWZmZWN0c1N0YWNrLT5pc0N1cnJlbnRseUFmZmVjdGluZ1Byb3BlcnR5KENT
U1Byb3BlcnR5RmlsdGVyKQpAQCAtMzQ5NCw4ICszNDk0LDggQEAgYm9vbCBSZW5kZXJMYXllckNv
bXBvc2l0b3I6OmlzUnVubmluZ1RyYW5zZm9ybUFuaW1hdGlvbihSZW5kZXJMYXllck1vZGVsT2Jq
ZWN0JgogICAgIGlmICghKG1fY29tcG9zaXRpbmdUcmlnZ2VycyAmIENocm9tZUNsaWVudDo6QW5p
bWF0aW9uVHJpZ2dlcikpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIGlmIChhdXRvKiBl
bGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBlZmZlY3Rz
U3RhY2sgPSBlbGVtZW50LT5rZXlmcmFtZUVmZmVjdFN0YWNrKCkpCisgICAgaWYgKGF1dG8gc3R5
bGVhYmxlID0gU3R5bGVhYmxlOjpmcm9tUmVuZGVyZXIocmVuZGVyZXIpKSB7CisgICAgICAgIGlm
IChhdXRvKiBlZmZlY3RzU3RhY2sgPSBzdHlsZWFibGUtPmtleWZyYW1lRWZmZWN0U3RhY2soKSkK
ICAgICAgICAgICAgIHJldHVybiBlZmZlY3RzU3RhY2stPmlzQ3VycmVudGx5QWZmZWN0aW5nUHJv
cGVydHkoQ1NTUHJvcGVydHlUcmFuc2Zvcm0pOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdHlsZS9SZW5kZXJTdHlsZUNvbnN0YW50cy5jcHAKaW5kZXgg
ZTc0YzQxMjU2MzIyODVkYzMwMDljZTQzNDA5MDAyOWIxYTdkYmZkNi4uMGMxMjU3NTg4MDI4Nzlj
MGUwNTE5MDMzMGM0ZDY2OGZkYTlmM2U5NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N0eWxlL1JlbmRlclN0eWxlQ29uc3RhbnRzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3R5bGUvUmVuZGVyU3R5bGVDb25zdGFudHMuY3BwCkBAIC05NDMsNiArOTQz
LDcgQEAgVGV4dFN0cmVhbSYgb3BlcmF0b3I8PChUZXh0U3RyZWFtJiB0cywgUHNldWRvSWQgcHNl
dWRvSWQpCiAgICAgY2FzZSBQc2V1ZG9JZDo6Tm9uZTogdHMgPDwgIm5vbmUiOyBicmVhazsKICAg
ICBjYXNlIFBzZXVkb0lkOjpGaXJzdExpbmU6IHRzIDw8ICJmaXJzdC1saW5lIjsgYnJlYWs7CiAg
ICAgY2FzZSBQc2V1ZG9JZDo6Rmlyc3RMZXR0ZXI6IHRzIDw8ICJmaXJzdC1sZXR0ZXIiOyBicmVh
azsKKyAgICBjYXNlIFBzZXVkb0lkOjpIaWdobGlnaHQ6IHRzIDw8ICJoaWdobGlnaHQiOyBicmVh
azsKICAgICBjYXNlIFBzZXVkb0lkOjpNYXJrZXI6IHRzIDw8ICJtYXJrZXIiOyBicmVhazsKICAg
ICBjYXNlIFBzZXVkb0lkOjpCZWZvcmU6IHRzIDw8ICJiZWZvcmUiOyBicmVhazsKICAgICBjYXNl
IFBzZXVkb0lkOjpBZnRlcjogdHMgPDwgImFmdGVyIjsgYnJlYWs7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRl
eCA1NjRkZDVkNWIwMmMwYzE3Y2Y5YmQ3OWZiZWRjMTA3MjUzYmY3OTcxLi4wMjhkNjBhYWE1NWZi
YjYxZDE0YWUxZDU0ZjgyZWM2MzdiYzljZTI2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTU1OCwxNCAr
NTU4LDE0IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnRlYXJEb3duUmVuZGVyZXJzKEVsZW1l
bnQmIHJvb3QsIFRlYXJkb3duVHlwZSB0ZWFyZG93blR5CiAgICAgICAgICAgICBjYXNlIFRlYXJk
b3duVHlwZTo6UmVuZGVyZXJVcGRhdGVDYW5jZWxpbmdBbmltYXRpb25zOgogICAgICAgICAgICAg
ICAgIGlmICh0aW1lbGluZSkgewogICAgICAgICAgICAgICAgICAgICBpZiAoZG9jdW1lbnQucmVu
ZGVyVHJlZUJlaW5nRGVzdHJveWVkKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGlu
ZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBXZWJBbmlt
YXRpb246OlNpbGVudGx5OjpZZXMpOworICAgICAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUt
PmNhbmNlbERlY2xhcmF0aXZlQW5pbWF0aW9uc0ZvclN0eWxlYWJsZShTdHlsZWFibGU6OmZyb21F
bGVtZW50KGVsZW1lbnQpLCBXZWJBbmltYXRpb246OlNpbGVudGx5OjpZZXMpOwogICAgICAgICAg
ICAgICAgICAgICBlbHNlIGlmICh0ZWFyZG93blR5cGUgPT0gVGVhcmRvd25UeXBlOjpSZW5kZXJl
clVwZGF0ZUNhbmNlbGluZ0FuaW1hdGlvbnMpCi0gICAgICAgICAgICAgICAgICAgICAgICB0aW1l
bGluZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yRWxlbWVudChlbGVtZW50LCBXZWJB
bmltYXRpb246OlNpbGVudGx5OjpObyk7CisgICAgICAgICAgICAgICAgICAgICAgICB0aW1lbGlu
ZS0+Y2FuY2VsRGVjbGFyYXRpdmVBbmltYXRpb25zRm9yU3R5bGVhYmxlKFN0eWxlYWJsZTo6ZnJv
bUVsZW1lbnQoZWxlbWVudCksIFdlYkFuaW1hdGlvbjo6U2lsZW50bHk6Ok5vKTsKICAgICAgICAg
ICAgICAgICB9CiAgICAgICAgICAgICAgICAgYnJlYWs7CiAgICAgICAgICAgICBjYXNlIFRlYXJk
b3duVHlwZTo6UmVuZGVyZXJVcGRhdGU6CiAgICAgICAgICAgICAgICAgaWYgKHRpbWVsaW5lKQot
ICAgICAgICAgICAgICAgICAgICB0aW1lbGluZS0+d2lsbENoYW5nZVJlbmRlcmVyRm9yRWxlbWVu
dChlbGVtZW50KTsKKyAgICAgICAgICAgICAgICAgICAgdGltZWxpbmUtPndpbGxDaGFuZ2VSZW5k
ZXJlckZvclN0eWxlYWJsZShTdHlsZWFibGU6OmZyb21FbGVtZW50KGVsZW1lbnQpKTsKICAgICAg
ICAgICAgICAgICBicmVhazsKICAgICAgICAgICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3R5bGUv
U3R5bGVUcmVlUmVzb2x2ZXIuY3BwCmluZGV4IDU5ZGE0MWVkYWFhZDk4ZWZkOTc3YjlkNDc2NzYx
Yjc2NTZiNjJiYjEuLmU0YWFhMzQ4YTJkMzUzZjQyNDNmZmYxZWY1MjlhMDNmNGE1NzAxNjIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZVRyZWVSZXNvbHZlci5jcHAKQEAgLTIxNyw3ICsy
MTcsNyBAQCBFbGVtZW50VXBkYXRlcyBUcmVlUmVzb2x2ZXI6OnJlc29sdmVFbGVtZW50KEVsZW1l
bnQmIGVsZW1lbnQpCiAgICAgICAgIG1fZG9jdW1lbnQuc2V0SGFzTm9kZXNXaXRoTm9uRmluYWxT
dHlsZSgpOwogICAgIH0KIAotICAgIGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50
VXBkYXRlKFdURk1vdmUobmV3U3R5bGUpLCBlbGVtZW50LCBwYXJlbnQoKS5jaGFuZ2UpOworICAg
IGF1dG8gdXBkYXRlID0gY3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKFdURk1vdmUobmV3U3R5
bGUpLCB7IGVsZW1lbnQsIFBzZXVkb0lkOjpOb25lIH0sIHBhcmVudCgpLmNoYW5nZSk7CiAgICAg
YXV0byBkZXNjZW5kYW50c1RvUmVzb2x2ZSA9IGNvbXB1dGVEZXNjZW5kYW50c1RvUmVzb2x2ZSh1
cGRhdGUuY2hhbmdlLCBlbGVtZW50LnN0eWxlVmFsaWRpdHkoKSwgcGFyZW50KCkuZGVzY2VuZGFu
dHNUb1Jlc29sdmUpOwogCiAgICAgaWYgKCZlbGVtZW50ID09IG1fZG9jdW1lbnQuZG9jdW1lbnRF
bGVtZW50KCkpIHsKQEAgLTI3Nyw3ICsyNzcsNyBAQCBFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZl
cjo6cmVzb2x2ZVBzZXVkb1N0eWxlKEVsZW1lbnQmIGVsZW1lbnQsIGNvbnN0IEVsZW1lbnRVcAog
ICAgIGlmICghcHNldWRvRWxlbWVudFJlbmRlcmVySXNOZWVkZWQocHNldWRvU3R5bGUuZ2V0KCkp
ICYmICFoYXNBbmltYXRpb25zKQogICAgICAgICByZXR1cm4geyB9OwogCi0gICAgcmV0dXJuIGNy
ZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShXVEZNb3ZlKHBzZXVkb1N0eWxlKSwgZWxlbWVudC5l
bnN1cmVQc2V1ZG9FbGVtZW50KHBzZXVkb0lkKSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UpOworICAg
IHJldHVybiBjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoV1RGTW92ZShwc2V1ZG9TdHlsZSks
IHsgZWxlbWVudCwgcHNldWRvSWQgfSwgZWxlbWVudFVwZGF0ZS5jaGFuZ2UpOwogfQogCiBjb25z
dCBSZW5kZXJTdHlsZSogVHJlZVJlc29sdmVyOjpwYXJlbnRCb3hTdHlsZSgpIGNvbnN0CkBAIC0z
MDYsOSArMzA2LDIzIEBAIGNvbnN0IFJlbmRlclN0eWxlKiBUcmVlUmVzb2x2ZXI6OnBhcmVudEJv
eFN0eWxlRm9yUHNldWRvKGNvbnN0IEVsZW1lbnRVcGRhdGUmIGVsCiAgICAgfQogfQogCi1FbGVt
ZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0ZWRFbGVtZW50VXBkYXRlKHN0ZDo6
dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIEVsZW1lbnQmIGVsZW1lbnQsIENoYW5n
ZSBwYXJlbnRDaGFuZ2UpCitFbGVtZW50VXBkYXRlIFRyZWVSZXNvbHZlcjo6Y3JlYXRlQW5pbWF0
ZWRFbGVtZW50VXBkYXRlKHN0ZDo6dW5pcXVlX3B0cjxSZW5kZXJTdHlsZT4gbmV3U3R5bGUsIGNv
bnN0IFN0eWxlYWJsZSYgc3R5bGVhYmxlLCBDaGFuZ2UgcGFyZW50Q2hhbmdlKQogewotICAgIGF1
dG8qIG9sZFN0eWxlID0gZWxlbWVudC5yZW5kZXJPckRpc3BsYXlDb250ZW50c1N0eWxlKCk7Cisg
ICAgYXV0byYgZWxlbWVudCA9IHN0eWxlYWJsZS5lbGVtZW50OworCisgICAgLy8gRklYTUU6IElk
ZWFsbHkgd2UgY291bGQganVzdCBjYWxsIEVsZW1lbnQ6OnJlbmRlck9yRGlzcGxheUNvbnRlbnRz
U3R5bGUoKSB3aXRoIGEgUHNldWRvSWQKKyAgICAvLyBhbmQgZ2V0IHRoZSBzdHlsZSBmb3IgYW55
IFBzZXVkb0lkLCBub3QganVzdCBQc2V1ZG9JZDo6QmVmb3JlIG9yIFBzZXVkb0lkOjpBZnRlci4K
KyAgICBhdXRvKiBwc2V1ZG9FbGVtZW50ID0gW3N0eWxlYWJsZV0oKSAtPiBQc2V1ZG9FbGVtZW50
KiB7CisgICAgICAgIHN3aXRjaCAoc3R5bGVhYmxlLnBzZXVkb0lkKSB7CisgICAgICAgIGNhc2Ug
UHNldWRvSWQ6OkJlZm9yZToKKyAgICAgICAgICAgIHJldHVybiBzdHlsZWFibGUuZWxlbWVudC5i
ZWZvcmVQc2V1ZG9FbGVtZW50KCk7CisgICAgICAgIGNhc2UgUHNldWRvSWQ6OkFmdGVyOgorICAg
ICAgICAgICAgcmV0dXJuIHN0eWxlYWJsZS5lbGVtZW50LmFmdGVyUHNldWRvRWxlbWVudCgpOwor
ICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgcmV0dXJuIG51bGxwdHI7CisgICAgICAgIH0K
KyAgICB9KCk7CisgICAgYXV0byogb2xkU3R5bGUgPSBwc2V1ZG9FbGVtZW50ID8gcHNldWRvRWxl
bWVudC0+cmVuZGVyT3JEaXNwbGF5Q29udGVudHNTdHlsZSgpIDogZWxlbWVudC5yZW5kZXJPckRp
c3BsYXlDb250ZW50c1N0eWxlKCk7CiAKICAgICBPcHRpb25TZXQ8QW5pbWF0aW9uSW1wYWN0PiBh
bmltYXRpb25JbXBhY3Q7CiAKQEAgLTMxNywxNiArMzMxLDE2IEBAIEVsZW1lbnRVcGRhdGUgVHJl
ZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1bmlxdWVfcHRyPFJl
bmRlclN0CiAgICAgLy8gaW4gY2FzZSBubyBXZWIgQW5pbWF0aW9ucyBoYXZlIGJlZW4gY3JlYXRl
ZCB0aHJvdWdoIHRoZSBKUyBBUEkuCiAgICAgaWYgKGVsZW1lbnQuZG9jdW1lbnQoKS5iYWNrRm9y
d2FyZENhY2hlU3RhdGUoKSA9PSBEb2N1bWVudDo6Tm90SW5CYWNrRm9yd2FyZENhY2hlICYmICFl
bGVtZW50LmRvY3VtZW50KCkucmVuZGVyVmlldygpLT5wcmludGluZygpKSB7CiAgICAgICAgIGlm
IChvbGRTdHlsZSAmJiAob2xkU3R5bGUtPmhhc1RyYW5zaXRpb25zKCkgfHwgbmV3U3R5bGUtPmhh
c1RyYW5zaXRpb25zKCkpKQotICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0
ZUNTU1RyYW5zaXRpb25zRm9yRWxlbWVudChlbGVtZW50LCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7
CisgICAgICAgICAgICBtX2RvY3VtZW50LnRpbWVsaW5lKCkudXBkYXRlQ1NTVHJhbnNpdGlvbnNG
b3JTdHlsZWFibGUoc3R5bGVhYmxlLCAqb2xkU3R5bGUsICpuZXdTdHlsZSk7CiAKICAgICAgICAg
Ly8gVGhlIG9yZGVyIGluIHdoaWNoIENTUyBUcmFuc2l0aW9ucyBhbmQgQ1NTIEFuaW1hdGlvbnMg
YXJlIHVwZGF0ZWQgbWF0dGVycyBzaW5jZSBDU1MgVHJhbnNpdGlvbnMgZGVmaW5lIHRoZSBhZnRl
ci1jaGFuZ2Ugc3R5bGUKICAgICAgICAgLy8gdG8gdXNlIENTUyBBbmltYXRpb25zIGFzIGRlZmlu
ZWQgaW4gdGhlIHByZXZpb3VzIHN0eWxlIGNoYW5nZSBldmVudC4gQXMgc3VjaCwgd2UgdXBkYXRl
IENTUyBBbmltYXRpb25zIGFmdGVyIENTUyBUcmFuc2l0aW9ucwogICAgICAgICAvLyBzdWNoIHRo
YXQgd2hlbiBDU1MgVHJhbnNpdGlvbnMgYXJlIHVwZGF0ZWQgdGhlIENTUyBBbmltYXRpb25zIGRh
dGEgaXMgdGhlIHNhbWUgYXMgZHVyaW5nIHRoZSBwcmV2aW91cyBzdHlsZSBjaGFuZ2UgZXZlbnQu
CiAgICAgICAgIGlmICgob2xkU3R5bGUgJiYgb2xkU3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgfHwg
bmV3U3R5bGUtPmhhc0FuaW1hdGlvbnMoKSkgewotICAgICAgICAgICAgLy8gRklYTUU6IFJlbW92
ZSB0aGlzIGhhY2sgYW5kIHBhc3MgdGhlIHBhcmVudCBzdHlsZSB2aWEgdXBkYXRlQ1NTQW5pbWF0
aW9uc0ZvckVsZW1lbnQuCisgICAgICAgICAgICAvLyBGSVhNRTogUmVtb3ZlIHRoaXMgaGFjayBh
bmQgcGFzcyB0aGUgcGFyZW50IHN0eWxlIHZpYSB1cGRhdGVDU1NBbmltYXRpb25zRm9yU3R5bGVh
YmxlLgogICAgICAgICAgICAgc2NvcGUoKS5yZXNvbHZlci5zZXRQYXJlbnRFbGVtZW50U3R5bGVG
b3JLZXlmcmFtZXMoJnBhcmVudCgpLnN0eWxlKTsKIAotICAgICAgICAgICAgbV9kb2N1bWVudC50
aW1lbGluZSgpLnVwZGF0ZUNTU0FuaW1hdGlvbnNGb3JFbGVtZW50KGVsZW1lbnQsIG9sZFN0eWxl
LCAqbmV3U3R5bGUpOworICAgICAgICAgICAgbV9kb2N1bWVudC50aW1lbGluZSgpLnVwZGF0ZUNT
U0FuaW1hdGlvbnNGb3JTdHlsZWFibGUoc3R5bGVhYmxlLCBvbGRTdHlsZSwgKm5ld1N0eWxlKTsK
IAogICAgICAgICAgICAgc2NvcGUoKS5yZXNvbHZlci5zZXRQYXJlbnRFbGVtZW50U3R5bGVGb3JL
ZXlmcmFtZXMobnVsbHB0cik7CiAgICAgICAgIH0KQEAgLTMzNCwxNSArMzQ4LDE1IEBAIEVsZW1l
bnRVcGRhdGUgVHJlZVJlc29sdmVyOjpjcmVhdGVBbmltYXRlZEVsZW1lbnRVcGRhdGUoc3RkOjp1
bmlxdWVfcHRyPFJlbmRlclN0CiAKICAgICAvLyBOb3cgd2UgY2FuIHVwZGF0ZSBhbGwgV2ViIGFu
aW1hdGlvbnMsIHdoaWNoIHdpbGwgaW5jbHVkZSBDU1MgQW5pbWF0aW9ucyBhcyB3ZWxsCiAgICAg
Ly8gYXMgYW5pbWF0aW9ucyBjcmVhdGVkIHZpYSB0aGUgSlMgQVBJLgotICAgIGlmIChlbGVtZW50
Lmhhc0tleWZyYW1lRWZmZWN0cygpKSB7CisgICAgaWYgKHN0eWxlYWJsZS5oYXNLZXlmcmFtZUVm
ZmVjdHMoKSkgewogICAgICAgICAvLyBSZWNvcmQgdGhlIHN0eWxlIHByaW9yIHRvIGFwcGx5aW5n
IGFuaW1hdGlvbnMgZm9yIHRoaXMgc3R5bGUgY2hhbmdlIGV2ZW50LgotICAgICAgICBlbGVtZW50
LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUoUmVuZGVyU3R5bGU6OmNsb25lUHRyKCpuZXdT
dHlsZSkpOworICAgICAgICBzdHlsZWFibGUuc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShS
ZW5kZXJTdHlsZTo6Y2xvbmVQdHIoKm5ld1N0eWxlKSk7CiAgICAgICAgIC8vIEFwcGx5IGFsbCBr
ZXlmcmFtZSBlZmZlY3RzIHRvIHRoZSBuZXcgc3R5bGUuCiAgICAgICAgIGF1dG8gYW5pbWF0ZWRT
dHlsZSA9IFJlbmRlclN0eWxlOjpjbG9uZVB0cigqbmV3U3R5bGUpOwotICAgICAgICBhbmltYXRp
b25JbXBhY3QgPSBlbGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZlY3RzKCphbmltYXRlZFN0eWxlKTsK
KyAgICAgICAgYW5pbWF0aW9uSW1wYWN0ID0gc3R5bGVhYmxlLmFwcGx5S2V5ZnJhbWVFZmZlY3Rz
KCphbmltYXRlZFN0eWxlKTsKICAgICAgICAgbmV3U3R5bGUgPSBXVEZNb3ZlKGFuaW1hdGVkU3R5
bGUpOwogICAgIH0gZWxzZQotICAgICAgICBlbGVtZW50LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50
U3R5bGUobnVsbHB0cik7CisgICAgICAgIHN0eWxlYWJsZS5zZXRMYXN0U3R5bGVDaGFuZ2VFdmVu
dFN0eWxlKG51bGxwdHIpOwogCiAgICAgaWYgKGFuaW1hdGlvbkltcGFjdCkKICAgICAgICAgQWRq
dXN0ZXI6OmFkanVzdEFuaW1hdGVkU3R5bGUoKm5ld1N0eWxlLCBwYXJlbnRCb3hTdHlsZSgpLCBh
bmltYXRpb25JbXBhY3QpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVU
cmVlUmVzb2x2ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N0eWxlL1N0eWxlVHJlZVJlc29sdmVyLmgK
aW5kZXggMWFmYzlhOGJiZjU5YTcyN2QzNTVjNjM3NTQ4NTMxN2JhNDVlYWE5Yy4uYzI5NzM0MmZl
ZTg1NDk0YTlhNmFiZDFjZTk4MjhkOTc3MjIzYzExOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3R5bGUvU3R5bGVUcmVlUmVzb2x2ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9T
dHlsZVRyZWVSZXNvbHZlci5oCkBAIC0zMCw2ICszMCw3IEBACiAjaW5jbHVkZSAiU3R5bGVDaGFu
Z2UuaCIKICNpbmNsdWRlICJTdHlsZVNoYXJpbmdSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxl
VXBkYXRlLmgiCisjaW5jbHVkZSAiU3R5bGVhYmxlLmgiCiAjaW5jbHVkZSA8d3RmL0Z1bmN0aW9u
Lmg+CiAjaW5jbHVkZSA8d3RmL1JlZi5oPgogCkBAIC02MCw3ICs2MSw3IEBAIHByaXZhdGU6CiAK
ICAgICBFbGVtZW50VXBkYXRlcyByZXNvbHZlRWxlbWVudChFbGVtZW50Jik7CiAKLSAgICBFbGVt
ZW50VXBkYXRlIGNyZWF0ZUFuaW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVu
ZGVyU3R5bGU+LCBFbGVtZW50JiwgQ2hhbmdlKTsKKyAgICBFbGVtZW50VXBkYXRlIGNyZWF0ZUFu
aW1hdGVkRWxlbWVudFVwZGF0ZShzdGQ6OnVuaXF1ZV9wdHI8UmVuZGVyU3R5bGU+LCBjb25zdCBT
dHlsZWFibGUmLCBDaGFuZ2UpOwogICAgIEVsZW1lbnRVcGRhdGUgcmVzb2x2ZVBzZXVkb1N0eWxl
KEVsZW1lbnQmLCBjb25zdCBFbGVtZW50VXBkYXRlJiwgUHNldWRvSWQpOwogCiAgICAgc3RydWN0
IFNjb3BlIDogUmVmQ291bnRlZDxTY29wZT4gewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3R5bGUvU3R5bGVhYmxlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdHlsZS9TdHlsZWFibGUuaApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw
MDAwMDAwLi5iZWZiYjY0YjA0MDc0ZTg1NTZmYTJmZWFkMzBkYzA5Yjc4NmM0NDU2Ci0tLSAvZGV2
L251bGwKKysrIGIvU291cmNlL1dlYkNvcmUvc3R5bGUvU3R5bGVhYmxlLmgKQEAgLTAsMCArMSwx
NTEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjAgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJl
c2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5h
cnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVk
IHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICog
MS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9y
bSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMg
bGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisg
KiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0
aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQ
TEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJ
RVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFO
VElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICog
UFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IK
KyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJ
REVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMg
KElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJ
VFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRT
OyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhF
T1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJ
VFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJ
TkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJ
RiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjcHJh
Z21hIG9uY2UKKworI2luY2x1ZGUgIkVsZW1lbnQuaCIKKyNpbmNsdWRlICJQc2V1ZG9FbGVtZW50
LmgiCisjaW5jbHVkZSAiUmVuZGVyRWxlbWVudC5oIgorI2luY2x1ZGUgIlJlbmRlclN0eWxlQ29u
c3RhbnRzLmgiCisjaW5jbHVkZSAiV2ViQW5pbWF0aW9uVHlwZXMuaCIKKworbmFtZXNwYWNlIFdl
YkNvcmUgeworCitjbGFzcyBLZXlmcmFtZUVmZmVjdFN0YWNrOworY2xhc3MgUmVuZGVyU3R5bGU7
CisKK3N0cnVjdCBTdHlsZWFibGUgeworICAgIEVsZW1lbnQmIGVsZW1lbnQ7CisgICAgUHNldWRv
SWQgcHNldWRvSWQ7CisKKyAgICBTdHlsZWFibGUoRWxlbWVudCYgZWxlbWVudCwgUHNldWRvSWQg
cHNldWRvSWQpCisgICAgICAgIDogZWxlbWVudChlbGVtZW50KQorICAgICAgICAsIHBzZXVkb0lk
KHBzZXVkb0lkKQorICAgIHsKKyAgICAgICAgQVNTRVJUKCFpczxQc2V1ZG9FbGVtZW50PihlbGVt
ZW50KSk7CisgICAgfQorCisgICAgc3RhdGljIGNvbnN0IFN0eWxlYWJsZSBmcm9tRWxlbWVudChF
bGVtZW50JiBlbGVtZW50KQorICAgIHsKKyAgICAgICAgaWYgKGlzPFBzZXVkb0VsZW1lbnQ+KGVs
ZW1lbnQpKQorICAgICAgICAgICAgcmV0dXJuIFN0eWxlYWJsZSgqZG93bmNhc3Q8UHNldWRvRWxl
bWVudD4oZWxlbWVudCkuaG9zdEVsZW1lbnQoKSwgZWxlbWVudC5wc2V1ZG9JZCgpKTsKKyAgICAg
ICAgcmV0dXJuIFN0eWxlYWJsZShlbGVtZW50LCBlbGVtZW50LnBzZXVkb0lkKCkpOworICAgIH0K
KworICAgIHN0YXRpYyBjb25zdCBPcHRpb25hbDxjb25zdCBTdHlsZWFibGU+IGZyb21SZW5kZXJl
cihjb25zdCBSZW5kZXJFbGVtZW50JiByZW5kZXJlcikKKyAgICB7CisgICAgICAgIGlmIChhdXRv
KiBlbGVtZW50ID0gcmVuZGVyZXIuZWxlbWVudCgpKQorICAgICAgICAgICAgcmV0dXJuIGZyb21F
bGVtZW50KCplbGVtZW50KTsKKyAgICAgICAgcmV0dXJuIFdURjo6bnVsbG9wdDsKKyAgICB9CisK
KyAgICBib29sIG9wZXJhdG9yPT0oY29uc3QgU3R5bGVhYmxlJiBvdGhlcikgY29uc3QKKyAgICB7
CisgICAgICAgIHJldHVybiAoJmVsZW1lbnQgPT0gJm90aGVyLmVsZW1lbnQgJiYgcHNldWRvSWQg
PT0gb3RoZXIucHNldWRvSWQpOworICAgIH0KKworICAgIGJvb2wgb3BlcmF0b3IhPShjb25zdCBT
dHlsZWFibGUmIG90aGVyKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuICEoKnRoaXMgPT0g
b3RoZXIpOworICAgIH0KKworICAgIEtleWZyYW1lRWZmZWN0U3RhY2sqIGtleWZyYW1lRWZmZWN0
U3RhY2soKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0dXJuIGVsZW1lbnQua2V5ZnJhbWVFZmZl
Y3RTdGFjayhwc2V1ZG9JZCk7CisgICAgfQorCisgICAgS2V5ZnJhbWVFZmZlY3RTdGFjayYgZW5z
dXJlS2V5ZnJhbWVFZmZlY3RTdGFjaygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxl
bWVudC5lbnN1cmVLZXlmcmFtZUVmZmVjdFN0YWNrKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBi
b29sIGhhc0tleWZyYW1lRWZmZWN0cygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxl
bWVudC5oYXNLZXlmcmFtZUVmZmVjdHMocHNldWRvSWQpOworICAgIH0KKworICAgIE9wdGlvblNl
dDxBbmltYXRpb25JbXBhY3Q+IGFwcGx5S2V5ZnJhbWVFZmZlY3RzKFJlbmRlclN0eWxlJiBzdHls
ZSkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50LmFwcGx5S2V5ZnJhbWVFZmZl
Y3RzKHBzZXVkb0lkLCBzdHlsZSk7CisgICAgfQorCisgICAgY29uc3QgQW5pbWF0aW9uQ29sbGVj
dGlvbiogYW5pbWF0aW9ucygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5h
bmltYXRpb25zKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBib29sIGhhc0NvbXBsZXRlZFRyYW5z
aXRpb25zRm9yUHJvcGVydHkoQ1NTUHJvcGVydHlJRCBwcm9wZXJ0eSkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50Lmhhc0NvbXBsZXRlZFRyYW5zaXRpb25zRm9yUHJvcGVydHko
cHNldWRvSWQsIHByb3BlcnR5KTsKKyAgICB9CisKKyAgICBib29sIGhhc1J1bm5pbmdUcmFuc2l0
aW9uc0ZvclByb3BlcnR5KENTU1Byb3BlcnR5SUQgcHJvcGVydHkpIGNvbnN0CisgICAgeworICAg
ICAgICByZXR1cm4gZWxlbWVudC5oYXNSdW5uaW5nVHJhbnNpdGlvbnNGb3JQcm9wZXJ0eShwc2V1
ZG9JZCwgcHJvcGVydHkpOworICAgIH0KKworICAgIGJvb2wgaGFzUnVubmluZ1RyYW5zaXRpb25z
KCkgY29uc3QKKyAgICB7CisgICAgICAgIHJldHVybiBlbGVtZW50Lmhhc1J1bm5pbmdUcmFuc2l0
aW9ucyhwc2V1ZG9JZCk7CisgICAgfQorCisgICAgQW5pbWF0aW9uQ29sbGVjdGlvbiYgZW5zdXJl
QW5pbWF0aW9ucygpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5lbnN1cmVB
bmltYXRpb25zKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICBQcm9wZXJ0eVRvVHJhbnNpdGlvbk1h
cCYgZW5zdXJlQ29tcGxldGVkVHJhbnNpdGlvbnNCeVByb3BlcnR5KCkgY29uc3QKKyAgICB7Cisg
ICAgICAgIHJldHVybiBlbGVtZW50LmVuc3VyZUNvbXBsZXRlZFRyYW5zaXRpb25zQnlQcm9wZXJ0
eShwc2V1ZG9JZCk7CisgICAgfQorCisgICAgUHJvcGVydHlUb1RyYW5zaXRpb25NYXAmIGVuc3Vy
ZVJ1bm5pbmdUcmFuc2l0aW9uc0J5UHJvcGVydHkoKSBjb25zdAorICAgIHsKKyAgICAgICAgcmV0
dXJuIGVsZW1lbnQuZW5zdXJlUnVubmluZ1RyYW5zaXRpb25zQnlQcm9wZXJ0eShwc2V1ZG9JZCk7
CisgICAgfQorCisgICAgQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYgYW5pbWF0aW9uc0NyZWF0ZWRC
eU1hcmt1cCgpIGNvbnN0CisgICAgeworICAgICAgICByZXR1cm4gZWxlbWVudC5hbmltYXRpb25z
Q3JlYXRlZEJ5TWFya3VwKHBzZXVkb0lkKTsKKyAgICB9CisKKyAgICB2b2lkIHNldEFuaW1hdGlv
bnNDcmVhdGVkQnlNYXJrdXAoQ1NTQW5pbWF0aW9uQ29sbGVjdGlvbiYmIGNvbGxlY3Rpb24pIGNv
bnN0CisgICAgeworICAgICAgICBlbGVtZW50LnNldEFuaW1hdGlvbnNDcmVhdGVkQnlNYXJrdXAo
cHNldWRvSWQsIFdURk1vdmUoY29sbGVjdGlvbikpOworICAgIH0KKworICAgIGNvbnN0IFJlbmRl
clN0eWxlKiBsYXN0U3R5bGVDaGFuZ2VFdmVudFN0eWxlKCkgY29uc3QKKyAgICB7CisgICAgICAg
IHJldHVybiBlbGVtZW50Lmxhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUocHNldWRvSWQpOworICAg
IH0KKworICAgIHZvaWQgc2V0TGFzdFN0eWxlQ2hhbmdlRXZlbnRTdHlsZShzdGQ6OnVuaXF1ZV9w
dHI8Y29uc3QgUmVuZGVyU3R5bGU+JiYgc3R5bGUpIGNvbnN0CisgICAgeworICAgICAgICBlbGVt
ZW50LnNldExhc3RTdHlsZUNoYW5nZUV2ZW50U3R5bGUocHNldWRvSWQsIFdURk1vdmUoc3R5bGUp
KTsKKyAgICB9CisKK307CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBlN2VhOTU2
YmUzM2JiMjZjOTg4MzM0OWM4ZmYwOTAzOTAwZWVlN2UwLi4yYWQ5ZGY5ZTYzYWE3MmMzMmIwODg4
NTA4NWJiNDQ2NWFjN2NjYmM5IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysr
IGIvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMTggQEAKKzIwMjAtMDktMjUgIEFu
dG9pbmUgUXVpbnQgIDxncmFvdXRzQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmVkdWNlIHRoZSBy
ZWxpYW5jZSBvbiBQc2V1ZG9FbGVtZW50IGluIHRoZSBhbmltYXRpb24gY29kZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MjE2OTMxCisgICAgICAgIDxy
ZGFyOi8vcHJvYmxlbS82OTUxMTY4Mj4KKworICAgICAgICBSZXZpZXdlZCBieSBBbnR0aSBLb2l2
aXN0by4KKworICAgICAgICBVcGRhdGUgYSBjb3VwbGUgb2YgdGVzdHMgd2hpY2ggcmVsaWVkIG9u
IGFuIGludGVybmFscyBtZXRob2QgdG8gZ2V0IGEgcHNldWRvIGVsZW1lbnQgYW5kIGluc3RlYWQg
dXNlCisgICAgICAgIHRoZSBXZWIgQW5pbWF0aW9ucyBBUEkgdG8gZGV0ZXJtaW5lIHdoZXRoZXIg
YSBnaXZlbiBhbmltYXRpb24gdGFyZ2V0cyBhIHBzZXVkby1lbGVtZW50LiBUaGlzIGhhcyB0aGUK
KyAgICAgICAgYWRkZWQgYmVuZWZpdCBvZiBoYXZpbmcgdGhlIHNhbWUgY29kZSBydW4gaW4gYSB0
ZXN0aW5nIGVudmlyb25tZW50IGFzIGluIGEgcmVndWxhciBicm93c2VyLgorCisgICAgICAgICog
ZmFzdC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sOgorICAgICAg
ICAqIGZhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWw6CisK
IDIwMjAtMDktMjQgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAg
ICAgICBbR0xJQl0gVW5yZXZpZXdlZCB0ZXN0IGdhcmRlbmluZy4gU2V2ZXJhbCBXUFQncyBNYXRo
TUwgdGVzdHMgYXJlIGNyYXNoaW5nIGluIEdUSy9XUEUgRGVidWcuCmRpZmYgLS1naXQgYS9MYXlv
dXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvaW1wb3J0ZWQvdzNj
L0NoYW5nZUxvZwppbmRleCA1ZmMxZWQxYzQ0YTM5ZGJhOWQ4OWM0NjFkNmExZTZkYzZkODJlNWQ5
Li5mYWY0ZjlhM2MxYzcyMzc2OGNjODA3NjJmZDQxY2M4NGVlNTE2ZTUyIDEwMDY0NAotLS0gYS9M
YXlvdXRUZXN0cy9pbXBvcnRlZC93M2MvQ2hhbmdlTG9nCisrKyBiL0xheW91dFRlc3RzL2ltcG9y
dGVkL3czYy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwxNCBAQAorMjAyMC0wOS0yNSAgQW50b2luZSBR
dWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KKworICAgICAgICBSZWR1Y2UgdGhlIHJlbGlhbmNl
IG9uIFBzZXVkb0VsZW1lbnQgaW4gdGhlIGFuaW1hdGlvbiBjb2RlCisgICAgICAgIGh0dHBzOi8v
YnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMTY5MzEKKworICAgICAgICBSZXZpZXdl
ZCBieSBBbnR0aSBLb2l2aXN0by4KKworICAgICAgICBNYXJrIGEgV1BUIHRlc3QgcHJvZ3Jlc3Np
b24uCisKKyAgICAgICAgKiB3ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9u
b24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0OgorCiAyMDIwLTA5LTI0ICBLZWl0
aCBNaWxsZXIgIDxrZWl0aF9taWxsZXJAYXBwbGUuY29tPgogCiAgICAgICAgIENTUyBhbmdsZSB1
bml0IGNvbnZlcnNpb25zIHNob3VsZCBjb25zaXN0ZW50bHkgdXNlIHRoZSBzYW1lIGFzc29jaWF0
aXZpdHkKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50
L3BzZXVkby1hbmltYXRpb24uaHRtbCBiL0xheW91dFRlc3RzL2Zhc3QvY3NzLWdlbmVyYXRlZC1j
b250ZW50L3BzZXVkby1hbmltYXRpb24uaHRtbAppbmRleCBlMzA4NjVhYTMzY2ZmYmEyOWZiNjAz
MzljMjYwMzRmMGNjZGFmOGM3Li4yY2I0M2Q5YTUyMDljZTZlMDNmYTVkZTQ1Nzc0NWIxZGU0MWM0
OTBiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1nZW5lcmF0ZWQtY29udGVudC9w
c2V1ZG8tYW5pbWF0aW9uLmh0bWwKKysrIGIvTGF5b3V0VGVzdHMvZmFzdC9jc3MtZ2VuZXJhdGVk
LWNvbnRlbnQvcHNldWRvLWFuaW1hdGlvbi5odG1sCkBAIC03OCwxNyArNzgsMTAgQEAgZnVuY3Rp
b24gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpCiAvLyBGSVhNRTogVGhpcyB0ZXN0IHNob3VsZCBi
ZSBtb2RpZmllZCBzbyBzdWJwaXhlbCBkb2Vzbid0IGNhdXNlIG9mZiBieSBvbmUKIC8vIGJlbG93
IGFuZCBpdCBubyBsb25nZXIgbmVlZHMgc2hvdWxkQmVDbG9zZVRvLgogCi1mdW5jdGlvbiBwYXVz
ZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBlbGVt
ZW50LCBwc2V1ZG9JZCkKK2Z1bmN0aW9uIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Qc2V1ZG9FbGVt
ZW50KGFuaW1hdGlvbk5hbWUsIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0VsZW1lbnQpCiB7Ci0gICAg
Y29uc3QgcHNldWRvRWxlbWVudCA9IGludGVybmFscy5wc2V1ZG9FbGVtZW50KGVsZW1lbnQsIHBz
ZXVkb0lkKTsKLSAgICBpZiAoIXBzZXVkb0VsZW1lbnQpIHsKLSAgICAgICAgY29uc29sZS5sb2co
IkZhaWxlZCB0byBmaW5kIHBzZXVkbyBlbGVtZW50Iik7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBjb25zdCBhbmltYXRpb25zID0gcHNldWRvRWxlbWVudC5nZXRBbmltYXRpb25zKCk7
Ci0gICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGFuaW1hdGlvbnMpIHsKLSAgICAgICAgaWYgKGFu
aW1hdGlvbiBpbnN0YW5jZW9mIENTU0FuaW1hdGlvbiAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFt
ZSA9PSBhbmltYXRpb25OYW1lICYmIGFuaW1hdGlvbi5lZmZlY3QuZ2V0S2V5ZnJhbWVzKCkubGVu
Z3RoKSB7CisgICAgZm9yIChsZXQgYW5pbWF0aW9uIG9mIGVsZW1lbnQuZ2V0QW5pbWF0aW9ucyh7
IHN1YnRyZWU6IHRydWUgfSkpIHsKKyAgICAgICAgaWYgKGFuaW1hdGlvbiBpbnN0YW5jZW9mIENT
U0FuaW1hdGlvbiAmJiBhbmltYXRpb24uYW5pbWF0aW9uTmFtZSA9PSBhbmltYXRpb25OYW1lICYm
IGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVmZmVjdC5w
c2V1ZG9FbGVtZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1hdGlvbi5j
dXJyZW50VGltZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBhdXNlKCk7
CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKQEAgLTk5LDM1ICs5MiwyMCBAQCBmdW5jdGlvbiBw
YXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudChhbmltYXRpb25OYW1lLCB0aW1lLCBl
bGVtZW50LCBwc2V1ZAogCiBmdW5jdGlvbiB0ZXN0QW5pbWF0aW9uKGlkKQogeworICAgIGNvbnN0
IHBzZXVkb0VsZW1lbnQgPSBgOjoke2lkfWA7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVs
ZW1lbnRCeUlkKGlkKTsKICAgICBkaXYuY2xhc3NOYW1lID0gJ2FuaW1hdGUnOwogICAgIHdpbmRv
dy5kaXYgPSBkaXY7CiAgICAgc2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAg
IGlmICh3aW5kb3cuaW50ZXJuYWxzKSB7Ci0gICAgICAgIHBhdXNlQW5pbWF0aW9uQXRUaW1lT25Q
c2V1ZG9FbGVtZW50KCdleGFtcGxlJywgMS4wLCBkaXYsIGlkKTsKLSAgICAgICAgc2hvdWxkQmVD
bG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgIGNvbXB1dGVkVG9wID0g
Z2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1
dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAgcGF1c2VBbmltYXRpb25BdFRpbWVPblBzZXVkb0Vs
ZW1lbnQoJ2V4YW1wbGUnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8o
J2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgY29tcHV0ZWRUb3AgPSBnZXRQc2V1
ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3An
LCAyMDAsIDEpOwotICAgIH0gZWxzZSB7Ci0gICAgICAgIC8vIFRoaXMgd2lsbCBiZSBmbGFreSwg
YnV0IGl0J3MgYSByZWFzb25hYmxlIGFwcHJveGltYXRpb24gZm9yIHRlc3RpbmcKLSAgICAgICAg
Ly8gaW4gYSBicm93c2VyIGluc3RlYWQgb2YgRFJULgotICAgICAgICBzZXRUaW1lb3V0KGZ1bmN0
aW9uKCkgewotICAgICAgICAgICAgd2luZG93LmRpdiA9IGRpdjsKLSAgICAgICAgICAgIHNob3Vs
ZEJlQ2xvc2VUbygnZGl2Lm9mZnNldFdpZHRoJywgMjAsIDEpOwotICAgICAgICAgICAgY29tcHV0
ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7Ci0gICAgICAgICAgICBzaG91bGRCZUNs
b3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcwLCAxKTsKLSAgICAgICAgfSwgMTAwMCk7Ci0gICAgICAg
IHNldFRpbWVvdXQoZnVuY3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2Owot
ICAgICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAxMiwgMSk7Ci0g
ICAgICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAg
ICAgICAgIHNob3VsZEJlQ2xvc2VUbygnY29tcHV0ZWRUb3AnLCAyMDAsIDEpOwotICAgICAgICB9
LCAyMDAwKTsKLSAgICB9CisKKyAgICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVu
dCgnZXhhbXBsZScsIDEuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3Nl
VG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDIwLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVk
b0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMTcw
LCAxKTsKKyAgICBwYXVzZUFuaW1hdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnZXhhbXBsZScs
IDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZz
ZXRXaWR0aCcsIDEyLCAxKTsKKyAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9w
KGlkKTsKKyAgICBzaG91bGRCZUNsb3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAog
b25sb2FkID0gZnVuY3Rpb24oKSB7CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sIGIvTGF5b3V0VGVzdHMvZmFz
dC9jc3MtZ2VuZXJhdGVkLWNvbnRlbnQvcHNldWRvLXRyYW5zaXRpb24uaHRtbAppbmRleCA5YTc0
MmZlOGExNmZkZjMwMDQ5ZmY3MTEyMzYxNjQzZWJiOWQyYTg2Li5iYzRhMTZiYzRlNDc3MjdlOTNi
ZTJkMjFiZWQ3NGM4ODRjNTBiZDdkIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9mYXN0L2Nzcy1n
ZW5lcmF0ZWQtY29udGVudC9wc2V1ZG8tdHJhbnNpdGlvbi5odG1sCisrKyBiL0xheW91dFRlc3Rz
L2Zhc3QvY3NzLWdlbmVyYXRlZC1jb250ZW50L3BzZXVkby10cmFuc2l0aW9uLmh0bWwKQEAgLTU2
LDYzICs1Niw0MSBAQCBmdW5jdGlvbiBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCkKIGNvbnN0IHBy
ZWZpeCA9ICItd2Via2l0LSI7CiBjb25zdCBwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4ID0gWyIt
d2Via2l0LXRleHQtc3Ryb2tlLWNvbG9yIiwgIi13ZWJraXQtdGV4dC1maWxsLWNvbG9yIl07CiAK
LWZ1bmN0aW9uIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCh0cmFuc2l0aW9u
UHJvcGVydHksIHRpbWUsIGVsZW1lbnQsIHBzZXVkb0lkKQorZnVuY3Rpb24gcGF1c2VUcmFuc2l0
aW9uQXRUaW1lT25Qc2V1ZG9FbGVtZW50KHRyYW5zaXRpb25Qcm9wZXJ0eSwgdGltZSwgZWxlbWVu
dCwgcHNldWRvRWxlbWVudCkKIHsKLSAgICBjb25zdCBwc2V1ZG9FbGVtZW50ID0gaW50ZXJuYWxz
LnBzZXVkb0VsZW1lbnQoZWxlbWVudCwgcHNldWRvSWQpOwotICAgIGlmICghcHNldWRvRWxlbWVu
dCkgewotICAgICAgICBjb25zb2xlLmxvZygiRmFpbGVkIHRvIGZpbmQgcHNldWRvIGVsZW1lbnQi
KTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmICh0cmFuc2l0aW9uUHJvcGVydHku
c3RhcnRzV2l0aChwcmVmaXgpICYmICFwcm9wZXJ0aWVzUmVxdWlyaW5nUHJlZml4LmluY2x1ZGVz
KHRyYW5zaXRpb25Qcm9wZXJ0eSkpCiAgICAgICAgIHRyYW5zaXRpb25Qcm9wZXJ0eSA9IHRyYW5z
aXRpb25Qcm9wZXJ0eS5zdWJzdHIocHJlZml4Lmxlbmd0aCk7CiAKLSAgICAvLyBPdGhlcndpc2Us
IHVzZSB0aGUgV2ViIEFuaW1hdGlvbnMgQVBJLgotICAgIGNvbnN0IGFuaW1hdGlvbnMgPSBwc2V1
ZG9FbGVtZW50LmdldEFuaW1hdGlvbnMoKTsKLSAgICBmb3IgKGxldCBhbmltYXRpb24gb2YgYW5p
bWF0aW9ucykgewotICAgICAgICBpZiAoYW5pbWF0aW9uIGluc3RhbmNlb2YgQ1NTVHJhbnNpdGlv
biAmJiBhbmltYXRpb24udHJhbnNpdGlvblByb3BlcnR5ID09IHRyYW5zaXRpb25Qcm9wZXJ0eSkg
eworICAgIGZvciAobGV0IGFuaW1hdGlvbiBvZiBlbGVtZW50LmdldEFuaW1hdGlvbnMoeyBzdWJ0
cmVlOiB0cnVlIH0pKSB7CisgICAgICAgIGlmIChhbmltYXRpb24gaW5zdGFuY2VvZiBDU1NUcmFu
c2l0aW9uICYmIGFuaW1hdGlvbi50cmFuc2l0aW9uUHJvcGVydHkgPT0gdHJhbnNpdGlvblByb3Bl
cnR5ICYmIGFuaW1hdGlvbi5lZmZlY3QudGFyZ2V0ID09IGVsZW1lbnQgJiYgYW5pbWF0aW9uLmVm
ZmVjdC5wc2V1ZG9FbGVtZW50ID09IHBzZXVkb0VsZW1lbnQpIHsKICAgICAgICAgICAgIGFuaW1h
dGlvbi5jdXJyZW50VGltZSA9IHRpbWUgKiAxMDAwOwogICAgICAgICAgICAgYW5pbWF0aW9uLnBh
dXNlKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAgICAgICAgfQogICAgIH0KKwogICAg
IGNvbnNvbGUubG9nKGBBIHRyYW5zaXRpb24gZm9yIHByb3BlcnR5ICR7dHJhbnNpdGlvblByb3Bl
cnR5fSBjb3VsZCBub3QgYmUgZm91bmRgKTsKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKIGZ1bmN0
aW9uIHRlc3RUcmFuc2l0aW9uKGlkKQogeworICAgIGNvbnN0IHBzZXVkb0VsZW1lbnQgPSBgOjok
e2lkfWA7CiAgICAgdmFyIGRpdiA9IGRvY3VtZW50LmdldEVsZW1lbnRCeUlkKGlkKTsKICAgICBk
aXYuY2xhc3NOYW1lID0gJ3RyYW5zaXRpb24nOwogICAgIHdpbmRvdy5kaXYgPSBkaXY7CiAgICAg
c2hvdWxkQmUoJ2Rpdi5vZmZzZXRXaWR0aCcsICc1MicpOwotICAgIGlmICh3aW5kb3cuaW50ZXJu
YWxzKSB7Ci0gICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgnd2lk
dGgnLCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRX
aWR0aCcsIDIwLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9FbGVt
ZW50KCd0b3AnLCAxLjAsIGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBzZXVk
b0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcs
IDE3MCwgMSk7Ci0gICAgICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxlbWVudCgn
d2lkdGgnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZz
ZXRXaWR0aCcsIDEyLCAxKTsKLSAgICAgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1ZG9F
bGVtZW50KCd0b3AnLCAyLjAsIGRpdiwgaWQpOwotICAgICAgICBjb21wdXRlZFRvcCA9IGdldFBz
ZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRv
cCcsIDIwMCwgMSk7Ci0gICAgfSBlbHNlIHsKLSAgICAgICAgLy8gVGhpcyB3aWxsIGJlIGZsYWt5
LCBidXQgaXQncyBhIHJlYXNvbmFibGUgYXBwcm94aW1hdGlvbiBmb3IgdGVzdGluZwotICAgICAg
ICAvLyBpbiBhIGJyb3dzZXIgaW5zdGVhZCBvZiBEUlQuCi0gICAgICAgIHNldFRpbWVvdXQoZnVu
Y3Rpb24oKSB7Ci0gICAgICAgICAgICB3aW5kb3cuZGl2ID0gZGl2OwotICAgICAgICAgICAgc2hv
dWxkQmVDbG9zZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7Ci0gICAgICAgICAgICBjb21w
dXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKLSAgICAgICAgICAgIHNob3VsZEJl
Q2xvc2VUbygnY29tcHV0ZWRUb3AnLCAxNzAsIDEpOwotICAgICAgICB9LCAxMDAwKTsKLSAgICAg
ICAgc2V0VGltZW91dChmdW5jdGlvbigpIHsKLSAgICAgICAgICAgIHdpbmRvdy5kaXYgPSBkaXY7
Ci0gICAgICAgICAgICBzaG91bGRCZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsK
LSAgICAgICAgICAgIGNvbXB1dGVkVG9wID0gZ2V0UHNldWRvQ29tcHV0ZWRUb3AoaWQpOwotICAg
ICAgICAgICAgc2hvdWxkQmVDbG9zZVRvKCdjb21wdXRlZFRvcCcsIDIwMCwgMSk7Ci0gICAgICAg
IH0sIDIwMDApOwotICAgIH0KKworICAgIHBhdXNlVHJhbnNpdGlvbkF0VGltZU9uUHNldWRvRWxl
bWVudCgnd2lkdGgnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgc2hvdWxkQmVDbG9z
ZVRvKCdkaXYub2Zmc2V0V2lkdGgnLCAyMCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1l
T25Qc2V1ZG9FbGVtZW50KCd0b3AnLCAxLjAsIGRpdiwgcHNldWRvRWxlbWVudCk7CisgICAgY29t
cHV0ZWRUb3AgPSBnZXRQc2V1ZG9Db21wdXRlZFRvcChpZCk7CisgICAgc2hvdWxkQmVDbG9zZVRv
KCdjb21wdXRlZFRvcCcsIDE3MCwgMSk7CisgICAgcGF1c2VUcmFuc2l0aW9uQXRUaW1lT25Qc2V1
ZG9FbGVtZW50KCd3aWR0aCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAgICBzaG91bGRC
ZUNsb3NlVG8oJ2Rpdi5vZmZzZXRXaWR0aCcsIDEyLCAxKTsKKyAgICBwYXVzZVRyYW5zaXRpb25B
dFRpbWVPblBzZXVkb0VsZW1lbnQoJ3RvcCcsIDIuMCwgZGl2LCBwc2V1ZG9FbGVtZW50KTsKKyAg
ICBjb21wdXRlZFRvcCA9IGdldFBzZXVkb0NvbXB1dGVkVG9wKGlkKTsKKyAgICBzaG91bGRCZUNs
b3NlVG8oJ2NvbXB1dGVkVG9wJywgMjAwLCAxKTsKIH0KIAogb25sb2FkID0gZnVuY3Rpb24oKSB7
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3Rz
L2Nzcy9jc3MtdHJhbnNpdGlvbnMvbm9uLXJlbmRlcmVkLWVsZW1lbnQtMDAyLWV4cGVjdGVkLnR4
dCBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10
cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CmluZGV4IGQw
OTZkZTRkNTVkOTA2M2RiMDFkNzg5NTZmODgyMWRhYTllYmE3ZGEuLjNiODdhOGRjOGUwZDIyODll
NzU1OTgwMGFjNThkNDhhZmVlYTE1NjEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL2ltcG9ydGVk
L3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQt
ZWxlbWVudC0wMDItZXhwZWN0ZWQudHh0CisrKyBiL0xheW91dFRlc3RzL2ltcG9ydGVkL3czYy93
ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy10cmFuc2l0aW9ucy9ub24tcmVuZGVyZWQtZWxlbWVu
dC0wMDItZXhwZWN0ZWQudHh0CkBAIC0xLDUgKzEsMyBAQAogCi1IYXJuZXNzIEVycm9yIChUSU1F
T1VUKSwgbWVzc2FnZSA9IG51bGwKLQotVElNRU9VVCBUcmFuc2l0aW9ucyBvbiA6OmJlZm9yZS86
OmFmdGVyIHBzZXVkby1lbGVtZW50cyBhcmUgY2FuY2VsZWQgd2hlbiB0aGUgY29udGVudCBwcm9w
ZXJ0eSBpcyBjbGVhcmVkIFRlc3QgdGltZWQgb3V0CitQQVNTIFRyYW5zaXRpb25zIG9uIDo6YmVm
b3JlLzo6YWZ0ZXIgcHNldWRvLWVsZW1lbnRzIGFyZSBjYW5jZWxlZCB3aGVuIHRoZSBjb250ZW50
IHByb3BlcnR5IGlzIGNsZWFyZWQgCiAK
</data>
<flag name="commit-queue"
          id="425474"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
      

    </bug>

</bugzilla>