<?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>230296</bug_id>
          
          <creation_ts>2021-09-14 21:42:05 -0700</creation_ts>
          <short_desc>setNeedsLayout() should not be called when changing the SVG properties</short_desc>
          <delta_ts>2022-06-23 14:14:02 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>SVG</component>
          <version>WebKit 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=223343</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=228125</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=241489</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=230113</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>
          <dependson>240112</dependson>
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>cdumez</cc>
    
    <cc>changseok</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kangil.han</cc>
    
    <cc>koivisto</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>pdr</cc>
    
    <cc>rbuis</cc>
    
    <cc>sabouhallawa</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1793590</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-09-14 21:42:05 -0700</bug_when>
    <thetext>We should call SVGElement::setNeedsParentAndResourceInvalidation() which sets a flag to be checked by RenderTreeUpdater::updateRenderTree(). If this flag is true setNeedsLayout() will be called.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793591</commentid>
    <comment_count>1</comment_count>
      <attachid>438211</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-09-14 21:45:56 -0700</bug_when>
    <thetext>Created attachment 438211
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1793592</commentid>
    <comment_count>2</comment_count>
      <attachid>438212</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-09-14 21:58:43 -0700</bug_when>
    <thetext>Created attachment 438212
WIP</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1795946</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-09-21 21:42:24 -0700</bug_when>
    <thetext>&lt;rdar://problem/83383150&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845954</commentid>
    <comment_count>4</comment_count>
      <attachid>453188</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-25 03:23:42 -0800</bug_when>
    <thetext>Created attachment 453188
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845965</commentid>
    <comment_count>5</comment_count>
      <attachid>453194</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-25 04:11:06 -0800</bug_when>
    <thetext>Created attachment 453194
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1845973</commentid>
    <comment_count>6</comment_count>
      <attachid>453199</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-25 04:58:17 -0800</bug_when>
    <thetext>Created attachment 453199
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1846296</commentid>
    <comment_count>7</comment_count>
      <attachid>453292</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-02-26 05:38:06 -0800</bug_when>
    <thetext>Created attachment 453292
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1848849</commentid>
    <comment_count>8</comment_count>
      <attachid>453292</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-07 11:13:11 -0800</bug_when>
    <thetext>Comment on attachment 453292
Patch

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

&gt; Source/WebCore/svg/SVGSVGElement.cpp:214
&gt;              RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);

Why do we still call RenderSVGResource::markForLayoutAndParentResourceInvalidation() here?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849198</commentid>
    <comment_count>9</comment_count>
      <attachid>454103</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-08 04:42:42 -0800</bug_when>
    <thetext>Created attachment 454103
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849224</commentid>
    <comment_count>10</comment_count>
      <attachid>454103</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-08 05:55:59 -0800</bug_when>
    <thetext>Comment on attachment 454103
Patch

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

Unofficial review:

First of all: this is what we need! :-) I&apos;m glad both Said and you worked on that topic, since I haven&apos;t touched any non-rendering related stuff in LBSE -- however what we have right now is hacky, racy and unpredictable -- the way &quot;parent resources&quot; are invalidated, etc. The terminology is hard to understand, what is a &apos;resource&apos; etc - quite confusing overall. In LBSE the dependency on the code in the RenderSVGResource* classes is greatly reduced (RenderSVGResourceClipper is dumb -- applyresource/postApplyResources are all no-ops, for Clipper/Masker/Filter, and they are stateless -- no more caching and maps from renderer pointers to temporary state data or even rendered image buffers). However I haven&apos;t started to improve anything related to the core concepts as how resources invalidate themselves, or how elements invalidate resources in their ancestor chain, I can only say: that is a grey area, when to use markForParentResourceInvalidation() / moreConfusingMethods()...

This patch is a huge leap in the right direction: avoiding setNeedsLayout() in random places -- I do know we&apos;re able to enter layout cycles, that we have to break (various security issues in the past...).

Obviously this is WIP, and too large for a review. And there are things you can easily break out in individual mechanical preparation patches, after everyone agreed on the design.

&gt; Source/WebCore/ChangeLog:8
&gt; +        Make SVG not call setNeedsLayout() from outside RenderTreeUpdater::updateRenderTree() when an attribute changes.

The importance of this patch should be reflected in the future ChangeLog :-) aka. please expand what kind of issues/races... we avoid by this approach.

&gt; Source/WebCore/dom/ElementData.h:134
&gt; +    static const uint32_t s_flagParentAndResourceInvalidationNeeded = 1 &lt;&lt; 5;

That needs a better name, totally unclear if that is SVG related or not, and what Parent and Resource means in that context.
(That&apos;s a comment to myself probably, I guess I&apos;m guilty for that awful name).

&gt; Source/WebCore/dom/ElementData.h:165
&gt; +    void setParentAndResourceInvalidationNeeded(bool dirty) const { updateFlag(s_flagParentAndResourceInvalidationNeeded, dirty); }

First try:
void setSVGResourcesInAncestorChainAreDirty(bool dirty)?

&gt; Source/WebCore/rendering/svg/RenderSVGImage.cpp:254
&gt; +    imageElement().setNeedsParentAndResourceInvalidation();

I am not sure about that change -- in the LBSE variant of RenderSVGImage, the imageChanged() method is basically a copy of the RenderImage::imageChanged() method and that does include a &apos;repaintOrMarkForLayout(rect)&apos; call.
If you trace that further RenderImage::repaintOrMarkForLayout() reacts on intrinsic size changes with a setNeedsLayout() call, see setNeedsLayoutIfNeededAfterIntrinsicSizeChange(). Therefore the removal of the reaction on &apos;updateImageViewport()&apos; seems fishy.

&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:253
&gt; +    auto invalidate = [](SVGElement&amp; element) {

invalidate what? :-) I&apos;d go for invalidateTargetElement().

However: this is also legacy terminology, what is invalidation? :-) setNeeds.... setFooIsDirty... is more descriptive.
This should be adapted to whatever naming scheme is chosen instead of &apos;setNeedsParentAndResourceInvalidation&apos;.

&gt; Source/WebCore/svg/SVGCircleElement.cpp:71
&gt; +        ASSERT(PropertyRegistry::isAnimatedLengthAttribute(attrName));

That is guaranteed by the generated code, and only to instruct the developer?

&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:95
&gt; +        invalidateFilterPrimitiveParent(*this);

I would consistently get rid of the &apos;invalidate&apos; terminology here as you did in other places.

&gt; Source/WebCore/svg/SVGElement.cpp:613
&gt; +    setAnimatedSVGAttributesAreDirty();

That reads so much better than invalidateSVGAttributes().

&gt; Source/WebCore/svg/SVGElement.cpp:886
&gt; +void SVGElement::setPresentationalHintStyleIsDirty()

You de-inlined this -- I guess this is hot enough to justify inlining.

&gt; Source/WebCore/svg/SVGElement.cpp:889
&gt; +    // Trigger style recalculation for &quot;elements as resource&quot; (e.g. referenced by feImage).

Huh? setPresentationalHintStyleIsDirty() is also used to propagate e.g. cxAttr changes of SVGEllipseElement, since that&apos;s mapped to the CSS cx property too.

&gt; Source/WebCore/svg/SVGElement.cpp:893
&gt; +void SVGElement::setNeedsParentAndResourceInvalidation()

Won&apos;t repeat the comment, let&apos;s find a better replacment for &apos;NeedsParentAndResourceInvalidation&apos;.

Also if you re-inline setPresantationalHintStyleIsDirty(), this one should be inlined too.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:83
&gt; +void invalidateFilterPrimitiveParent(SVGElement&amp;);

Might be a good idea to encapsulate this somewhere else than in the namespace.

&gt; Source/WebCore/svg/SVGGeometryElement.cpp:150
&gt;      if (attrName == SVGNames::pathLengthAttr) {

The PropertyRegistry::isKnownAttribute() check is omitted on purpose?

&gt; Source/WebCore/svg/SVGImageElement.cpp:101
&gt; +            if (!downcast&lt;RenderSVGImage&gt;(*renderer).updateImageViewport())

Aha, ic -- regarding my previous RenderSVGImage::imageChanged() comment. You&apos;re now triggering the setNeedsParentAndResourceInvalidation() here for SVG attribute changes -- I wonder if we still handle &quot;intrincic size changes&quot; correctly -- not sure if we have test coverage for that.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:223
&gt; +                    renderer-&gt;view().setNeedsLayout(MarkOnlyThis);

Hmmm, I am not fully sure about these changes, if that covers all cases or not. Need to think about it.
Is width/height CSS property changes the only case when we have to mark the RenderView explicitely? How does it work for other cases, e.g. &lt;iframe&gt;?e</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849270</commentid>
    <comment_count>11</comment_count>
      <attachid>454103</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-08 08:12:42 -0800</bug_when>
    <thetext>Comment on attachment 454103
Patch

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

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:223
&gt;&gt; +                    renderer-&gt;view().setNeedsLayout(MarkOnlyThis);
&gt; 
&gt; Hmmm, I am not fully sure about these changes, if that covers all cases or not. Need to think about it.
&gt; Is width/height CSS property changes the only case when we have to mark the RenderView explicitely? How does it work for other cases, e.g. &lt;iframe&gt;?e

After experimenting a bit, I think there is a difference since iframe seems to dictate its dimension whereas object can take the dimension of the (image) contents. Of course object can&apos;t reference html, so I am not sure there is a html equivalent to the object + embedded svg scenario.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1849273</commentid>
    <comment_count>12</comment_count>
      <attachid>453292</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-08 08:18:51 -0800</bug_when>
    <thetext>Comment on attachment 453292
Patch

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

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:214
&gt;&gt;              RenderSVGResource::markForLayoutAndParentResourceInvalidation(*renderer);
&gt; 
&gt; Why do we still call RenderSVGResource::markForLayoutAndParentResourceInvalidation() here?

Well spotted :) After more debugging, this is only needed for the case where we set width/height and the svg is embedded through object (and some other containers). In this case it is important to mark the container chain dirty (in reality only the container RenderView) so document.defaultView.getComputedStyle(object).width will detect this and restyle/relayout to get up to date contents and image dimension.

AFAIK this is a special case and nothing like this is possible in HTML (I could be wrong). My current idea is to special case it and add a FIXME to see if anything nicer can be implemented.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850390</commentid>
    <comment_count>13</comment_count>
      <attachid>454103</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-11 01:15:47 -0800</bug_when>
    <thetext>Comment on attachment 454103
Patch

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

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:886
&gt;&gt; +void SVGElement::setPresentationalHintStyleIsDirty()
&gt; 
&gt; You de-inlined this -- I guess this is hot enough to justify inlining.

I am taking this to https://bugs.webkit.org/show_bug.cgi?id=237716.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:889
&gt;&gt; +    // Trigger style recalculation for &quot;elements as resource&quot; (e.g. referenced by feImage).
&gt; 
&gt; Huh? setPresentationalHintStyleIsDirty() is also used to propagate e.g. cxAttr changes of SVGEllipseElement, since that&apos;s mapped to the CSS cx property too.

Good point! Will address in https://bugs.webkit.org/show_bug.cgi?id=237716.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850439</commentid>
    <comment_count>14</comment_count>
      <attachid>454469</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-11 04:08:06 -0800</bug_when>
    <thetext>Created attachment 454469
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850498</commentid>
    <comment_count>15</comment_count>
      <attachid>454482</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-11 06:53:34 -0800</bug_when>
    <thetext>Created attachment 454482
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1850499</commentid>
    <comment_count>16</comment_count>
      <attachid>454103</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-11 06:57:40 -0800</bug_when>
    <thetext>Comment on attachment 454103
Patch

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

&gt;&gt; Source/WebCore/dom/ElementData.h:165
&gt;&gt; +    void setParentAndResourceInvalidationNeeded(bool dirty) const { updateFlag(s_flagParentAndResourceInvalidationNeeded, dirty); }
&gt; 
&gt; First try:
&gt; void setSVGResourcesInAncestorChainAreDirty(bool dirty)?

Not bad, I go with that for now.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.cpp:254
&gt;&gt; +    imageElement().setNeedsParentAndResourceInvalidation();
&gt; 
&gt; I am not sure about that change -- in the LBSE variant of RenderSVGImage, the imageChanged() method is basically a copy of the RenderImage::imageChanged() method and that does include a &apos;repaintOrMarkForLayout(rect)&apos; call.
&gt; If you trace that further RenderImage::repaintOrMarkForLayout() reacts on intrinsic size changes with a setNeedsLayout() call, see setNeedsLayoutIfNeededAfterIntrinsicSizeChange(). Therefore the removal of the reaction on &apos;updateImageViewport()&apos; seems fishy.

Not sure either, this was Said&apos;s code, I did not look into this yet.

&gt;&gt; Source/WebCore/svg/SVGAnimateMotionElement.cpp:253
&gt;&gt; +    auto invalidate = [](SVGElement&amp; element) {
&gt; 
&gt; invalidate what? :-) I&apos;d go for invalidateTargetElement().
&gt; 
&gt; However: this is also legacy terminology, what is invalidation? :-) setNeeds.... setFooIsDirty... is more descriptive.
&gt; This should be adapted to whatever naming scheme is chosen instead of &apos;setNeedsParentAndResourceInvalidation&apos;.

Good point, I changed the name but it is probably still not great.

&gt;&gt; Source/WebCore/svg/SVGCircleElement.cpp:71
&gt;&gt; +        ASSERT(PropertyRegistry::isAnimatedLengthAttribute(attrName));
&gt; 
&gt; That is guaranteed by the generated code, and only to instruct the developer?

Just a sanity check I think, they do not hurt and should be now all over the place.

&gt;&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:95
&gt;&gt; +        invalidateFilterPrimitiveParent(*this);
&gt; 
&gt; I would consistently get rid of the &apos;invalidate&apos; terminology here as you did in other places.

Right.

&gt;&gt; Source/WebCore/svg/SVGElement.cpp:613
&gt;&gt; +    setAnimatedSVGAttributesAreDirty();
&gt; 
&gt; That reads so much better than invalidateSVGAttributes().

Good!

&gt;&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:83
&gt;&gt; +void invalidateFilterPrimitiveParent(SVGElement&amp;);
&gt; 
&gt; Might be a good idea to encapsulate this somewhere else than in the namespace.

I did not see how, so far.... SVGRenderSupport?

&gt;&gt; Source/WebCore/svg/SVGGeometryElement.cpp:150
&gt;&gt;      if (attrName == SVGNames::pathLengthAttr) {
&gt; 
&gt; The PropertyRegistry::isKnownAttribute() check is omitted on purpose?

Fixed already in ToT.

&gt;&gt; Source/WebCore/svg/SVGImageElement.cpp:101
&gt;&gt; +            if (!downcast&lt;RenderSVGImage&gt;(*renderer).updateImageViewport())
&gt; 
&gt; Aha, ic -- regarding my previous RenderSVGImage::imageChanged() comment. You&apos;re now triggering the setNeedsParentAndResourceInvalidation() here for SVG attribute changes -- I wonder if we still handle &quot;intrincic size changes&quot; correctly -- not sure if we have test coverage for that.

So is this part of the change acceptable?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851691</commentid>
    <comment_count>17</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-16 01:46:57 -0700</bug_when>
    <thetext>(In reply to Rob Buis from comment #16)
&gt; Comment on attachment 454103 [details]

&gt; &gt;&gt; Source/WebCore/rendering/svg/RenderSVGImage.cpp:254
&gt; &gt;&gt; +    imageElement().setNeedsParentAndResourceInvalidation();
&gt; &gt; 
&gt; &gt; I am not sure about that change -- in the LBSE variant of RenderSVGImage, the imageChanged() method is basically a copy of the RenderImage::imageChanged() method and that does include a &apos;repaintOrMarkForLayout(rect)&apos; call.
&gt; &gt; If you trace that further RenderImage::repaintOrMarkForLayout() reacts on intrinsic size changes with a setNeedsLayout() call, see setNeedsLayoutIfNeededAfterIntrinsicSizeChange(). Therefore the removal of the reaction on &apos;updateImageViewport()&apos; seems fishy.
&gt; 
&gt; Not sure either, this was Said&apos;s code, I did not look into this yet.
Ok. I think we have tests that do exercise image repainting, but only if they run as pixel tests :-( we have lots of these tests, e.g. in svg/dynamic-updates. If we don&apos;t convert them to reftests or tests that dump repaintrects, we lack coverage.


&gt; &gt;&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:83
&gt; &gt;&gt; +void invalidateFilterPrimitiveParent(SVGElement&amp;);
&gt; &gt; 
&gt; &gt; Might be a good idea to encapsulate this somewhere else than in the namespace.
&gt; 
&gt; I did not see how, so far.... SVGRenderSupport?
Hmm, I&apos;m trying to get rid of classes like SVGRenderSupport / SVGRenderingContext in the future. You could add a simple RAII helper class instead of a free function in its own header file.

Also it should not use the &apos;invalidate&apos; terminology. Since all it does is calling setSVGResourcesInAncestorChainAreDirty() on the enclosing filter element, how about: MarkFilterAncestorChainAsDirty mark(*this) -- similar to the way &apos;InstanceInvalidationGuard&apos; is used in WebCore/svg/.

&gt; 
&gt; &gt;&gt; Source/WebCore/svg/SVGImageElement.cpp:101
&gt; &gt;&gt; +            if (!downcast&lt;RenderSVGImage&gt;(*renderer).updateImageViewport())
&gt; &gt; 
&gt; &gt; Aha, ic -- regarding my previous RenderSVGImage::imageChanged() comment. You&apos;re now triggering the setNeedsParentAndResourceInvalidation() here for SVG attribute changes -- I wonder if we still handle &quot;intrincic size changes&quot; correctly -- not sure if we have test coverage for that.
&gt; 
&gt; So is this part of the change acceptable?
I am only pointing out that we should check carefully if/how it differs from RenderImage::imageChanged(). However the current RenderSVGImage implementation is already quite different from RenderImage, unlike the RenderImage variant in the LBSE downstream branch -- with that one it would be easier to check/spot the diffs between RenderImage/RenderSVGImage. That said, I am not fully sure -- at least the controversial parts of this patch should be split out to a first preparation patch, that fixes e.g. the RenderSVGImage implementation before the  actual patch that changes the &apos;updateRenderTree&apos; behaviour for SVG.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851797</commentid>
    <comment_count>18</comment_count>
      <attachid>454834</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-16 07:57:23 -0700</bug_when>
    <thetext>Created attachment 454834
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1851799</commentid>
    <comment_count>19</comment_count>
      <attachid>454103</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-16 07:59:34 -0700</bug_when>
    <thetext>Comment on attachment 454103
Patch

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

Re

&gt;&gt;&gt;&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.h:83
&gt;&gt;&gt;&gt; +void invalidateFilterPrimitiveParent(SVGElement&amp;);
&gt;&gt;&gt; 
&gt;&gt;&gt; Might be a good idea to encapsulate this somewhere else than in the namespace.
&gt;&gt; 
&gt;&gt; I did not see how, so far.... SVGRenderSupport?
&gt; 
&gt; Hmm, I&apos;m trying to get rid of classes like SVGRenderSupport / SVGRenderingContext in the future. You could add a simple RAII helper class instead of a free function in its own header file.
&gt; 
&gt; Also it should not use the &apos;invalidate&apos; terminology. Since all it does is calling setSVGResourcesInAncestorChainAreDirty() on the enclosing filter element, how about: MarkFilterAncestorChainAsDirty mark(*this) -- similar to the way &apos;InstanceInvalidationGuard&apos; is used in WebCore/svg/.

Ah, I did not think of RAII, I like it! Fixed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853207</commentid>
    <comment_count>20</comment_count>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-21 08:51:04 -0700</bug_when>
    <thetext>The failures look unrelated, so this can be reviewed.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853503</commentid>
    <comment_count>21</comment_count>
      <attachid>454834</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-21 20:43:55 -0700</bug_when>
    <thetext>Comment on attachment 454834
Patch

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

&gt; Source/WebCore/dom/ElementData.h:134
&gt; +    static const uint32_t s_flagSVGResourcesInAncestorChainAreDirty = 1 &lt;&lt; 5;

I am not sure if this is the right place to add this new flag or not since this is only related to SVGElements. Because the following existing flags are also related to SVGElements

s_flagAnimatedSVGAttributesAreDirty (Only SVGElements)
s_flagPresentationalHintStyleIsDirty (Mostly SVGElements)

I do not have a strong opinion about it but adding more similar flags makes me feel we should do some clean-up here may be in the future. So please add a FIXME comment if you stick with adding it here.

&gt; Source/WebCore/dom/ElementData.h:164
&gt; +    bool areSVGResourcesInAncestorChainDirty() const { return m_arraySizeAndFlags &amp; s_flagSVGResourcesInAncestorChainAreDirty; }

Should this function have a similar name like all the getters above?

areSVGResourcesInAncestorChainDirty() -&gt; svgResourcesInAncestorChainAreDirty()

&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:95
&gt;          InstanceInvalidationGuard guard(*this);
&gt; -        invalidateFilterPrimitiveParent(this);
&gt; +        MarkFilterAncestorChainAsDirty mark(*this);

This now really looks weird. We declare two objects of two different classes and and pass them *this. And in their destructors, they do some work. Unless I am missing something, I think this easy implementation looks more obvious and cleaner:

invalidateFilterPrimitiveParent(this); // which can be renamed setFilterPrimitiveSVGResourcesInAncestorChainAreDirty() or something else.
invalidateInstances();

&gt; Source/WebCore/svg/SVGElement.cpp:892
&gt; +void SVGElement::markSVGResourcesInAncestorChainIfNeeded()

This function&apos;s name does not say what the SVGResources will be marked for. Should not it be named 

invalidateSVGResourcesInAncestorChainIfNeeded()
markForLayoutAndParentResourceInvalidation()

Or something more obvious.

&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:110
&gt; +MarkFilterAncestorChainAsDirty::~MarkFilterAncestorChainAsDirty()

I think MarkFilterAncestorChainAsDirty is not an accurate name because the parent we call setSVGResourcesInAncestorChainAreDirty() for should be a superclass of SVGFilterPrimitiveStandardAttributes such that SVGFEMerge, SVGFEDiffuseLightingElement, SVGFESpecularLightingElement or SVGFEComponentTransferElement. These superclasses must be children of SVGFilter. And this is why the original function name was invalidateFilterPrimitiveParent() not invalidateFilterParent().

&gt; Source/WebCore/svg/SVGPolyElement.cpp:61
&gt; +        if (auto* renderer = downcast&lt;RenderSVGPath&gt;(this-&gt;renderer()))

I think this casting is not needed. All SVGGraphicsElement superclasses create renders of type RenderSVGPath.

&gt; Source/WebCore/svg/SVGSVGElement.cpp:224
&gt; +                if (embeddedThroughFrame)
&gt; +                    renderer-&gt;view().setNeedsLayout(MarkOnlyThis);

I do not understand this change. Why do we have to call setNeedsLayout() for the entire RenderView in addition to calling setSVGResourcesInAncestorChainAreDirty() for this particular case?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853592</commentid>
    <comment_count>22</comment_count>
      <attachid>455357</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-22 02:56:22 -0700</bug_when>
    <thetext>Created attachment 455357
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853610</commentid>
    <comment_count>23</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-22 04:34:01 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #21)
&gt; Comment on attachment 454834 [details]
&gt; Patch
&gt; 
&gt; &gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:95
&gt; &gt;          InstanceInvalidationGuard guard(*this);
&gt; &gt; -        invalidateFilterPrimitiveParent(this);
&gt; &gt; +        MarkFilterAncestorChainAsDirty mark(*this);
&gt; 
&gt; This now really looks weird. We declare two objects of two different classes
&gt; and and pass them *this. And in their destructors, they do some work. Unless
&gt; I am missing something, I think this easy implementation looks more obvious
&gt; and cleaner:
&gt; 
&gt; invalidateFilterPrimitiveParent(this); // which can be renamed
&gt; setFilterPrimitiveSVGResourcesInAncestorChainAreDirty() or something else.
&gt; invalidateInstances();

Indeed -- my initial suggestion was just not to place this in namespace WebCore directly, having a non-descriptive top-level function named &apos;invalidateInstances&apos; would pollute WebCore IMHO.


&gt; &gt; Source/WebCore/svg/SVGElement.cpp:892
&gt; &gt; +void SVGElement::markSVGResourcesInAncestorChainIfNeeded()
&gt; 
&gt; This function&apos;s name does not say what the SVGResources will be marked for.
&gt; Should not it be named 
&gt; 
&gt; invalidateSVGResourcesInAncestorChainIfNeeded()
&gt; markForLayoutAndParentResourceInvalidation()
&gt; 
&gt; Or something more obvious.
&gt; 
&gt; &gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:110
&gt; &gt; +MarkFilterAncestorChainAsDirty::~MarkFilterAncestorChainAsDirty()
&gt; 
&gt; I think MarkFilterAncestorChainAsDirty is not an accurate name because the
&gt; parent we call setSVGResourcesInAncestorChainAreDirty() for should be a
&gt; superclass of SVGFilterPrimitiveStandardAttributes such that SVGFEMerge,
&gt; SVGFEDiffuseLightingElement, SVGFESpecularLightingElement or
&gt; SVGFEComponentTransferElement. These superclasses must be children of
&gt; SVGFilter. And this is why the original function name was
&gt; invalidateFilterPrimitiveParent() not invalidateFilterParent().
That&apos;s a pretty strong compelling reason, thanks Said.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853641</commentid>
    <comment_count>24</comment_count>
      <attachid>455372</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-22 07:07:48 -0700</bug_when>
    <thetext>Created attachment 455372
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853759</commentid>
    <comment_count>25</comment_count>
      <attachid>455394</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-22 10:52:42 -0700</bug_when>
    <thetext>Created attachment 455394
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853762</commentid>
    <comment_count>26</comment_count>
      <attachid>454834</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-22 10:58:21 -0700</bug_when>
    <thetext>Comment on attachment 454834
Patch

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

&gt;&gt; Source/WebCore/dom/ElementData.h:134
&gt;&gt; +    static const uint32_t s_flagSVGResourcesInAncestorChainAreDirty = 1 &lt;&lt; 5;
&gt; 
&gt; I am not sure if this is the right place to add this new flag or not since this is only related to SVGElements. Because the following existing flags are also related to SVGElements
&gt; 
&gt; s_flagAnimatedSVGAttributesAreDirty (Only SVGElements)
&gt; s_flagPresentationalHintStyleIsDirty (Mostly SVGElements)
&gt; 
&gt; I do not have a strong opinion about it but adding more similar flags makes me feel we should do some clean-up here may be in the future. So please add a FIXME comment if you stick with adding it here.

I think for SVG we only have a rare data section to store this conveniently, but I think the two flags are not rare data. So for now I left the FIXME.

&gt;&gt; Source/WebCore/dom/ElementData.h:164
&gt;&gt; +    bool areSVGResourcesInAncestorChainDirty() const { return m_arraySizeAndFlags &amp; s_flagSVGResourcesInAncestorChainAreDirty; }
&gt; 
&gt; Should this function have a similar name like all the getters above?
&gt; 
&gt; areSVGResourcesInAncestorChainDirty() -&gt; svgResourcesInAncestorChainAreDirty()

Right, I was going for SVGResourcesInAncestorChainAreDirty first, and it looked off, but lowercasing the svg here seems reasonable. Fixed.

&gt;&gt;&gt; Source/WebCore/svg/SVGComponentTransferFunctionElement.cpp:95
&gt;&gt;&gt; +        MarkFilterAncestorChainAsDirty mark(*this);
&gt;&gt; 
&gt;&gt; This now really looks weird. We declare two objects of two different classes and and pass them *this. And in their destructors, they do some work. Unless I am missing something, I think this easy implementation looks more obvious and cleaner:
&gt;&gt; 
&gt;&gt; invalidateFilterPrimitiveParent(this); // which can be renamed setFilterPrimitiveSVGResourcesInAncestorChainAreDirty() or something else.
&gt;&gt; invalidateInstances();
&gt; 
&gt; Indeed -- my initial suggestion was just not to place this in namespace WebCore directly, having a non-descriptive top-level function named &apos;invalidateInstances&apos; would pollute WebCore IMHO.

Sure, I removed the MarkFilterAncestorChainAsDirty RAII class.

&gt;&gt;&gt; Source/WebCore/svg/SVGElement.cpp:892
&gt;&gt;&gt; +void SVGElement::markSVGResourcesInAncestorChainIfNeeded()
&gt;&gt; 
&gt;&gt; This function&apos;s name does not say what the SVGResources will be marked for. Should not it be named 
&gt;&gt; 
&gt;&gt; invalidateSVGResourcesInAncestorChainIfNeeded()
&gt;&gt; markForLayoutAndParentResourceInvalidation()
&gt;&gt; 
&gt;&gt; Or something more obvious.
&gt; 
&gt; That&apos;s a pretty strong compelling reason, thanks Said.

Right, that was a bit inaccurate, I went with invalidateSVGResourcesInAncestorChainIfNeeded.

&gt;&gt; Source/WebCore/svg/SVGFilterPrimitiveStandardAttributes.cpp:110
&gt;&gt; +MarkFilterAncestorChainAsDirty::~MarkFilterAncestorChainAsDirty()
&gt; 
&gt; I think MarkFilterAncestorChainAsDirty is not an accurate name because the parent we call setSVGResourcesInAncestorChainAreDirty() for should be a superclass of SVGFilterPrimitiveStandardAttributes such that SVGFEMerge, SVGFEDiffuseLightingElement, SVGFESpecularLightingElement or SVGFEComponentTransferElement. These superclasses must be children of SVGFilter. And this is why the original function name was invalidateFilterPrimitiveParent() not invalidateFilterParent().

Fair enough, I removed the MarkFilterAncestorChainAsDirty class.

&gt;&gt; Source/WebCore/svg/SVGPolyElement.cpp:61
&gt;&gt; +        if (auto* renderer = downcast&lt;RenderSVGPath&gt;(this-&gt;renderer()))
&gt; 
&gt; I think this casting is not needed. All SVGGraphicsElement superclasses create renders of type RenderSVGPath.

Fixed here and in two similar instances.

&gt;&gt; Source/WebCore/svg/SVGSVGElement.cpp:224
&gt;&gt; +                    renderer-&gt;view().setNeedsLayout(MarkOnlyThis);
&gt; 
&gt; I do not understand this change. Why do we have to call setNeedsLayout() for the entire RenderView in addition to calling setSVGResourcesInAncestorChainAreDirty() for this particular case?

This is explained in comment 12.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1853785</commentid>
    <comment_count>27</comment_count>
      <attachid>455394</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2022-03-22 11:18:26 -0700</bug_when>
    <thetext>Comment on attachment 455394
Patch

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

&gt; Source/WebCore/svg/SVGSVGElement.cpp:222
&gt; +#if ENABLE(LAYER_BASED_SVG_ENGINE)
&gt; +                if (is&lt;RenderSVGRoot&gt;(renderer) &amp;&amp; downcast&lt;RenderSVGRoot&gt;(renderer)-&gt;isEmbeddedThroughFrameContainingSVGDocument())
&gt; +                    embeddedThroughFrame = true;
&gt; +#endif
&gt; +                if (is&lt;LegacyRenderSVGRoot&gt;(renderer) &amp;&amp; downcast&lt;LegacyRenderSVGRoot&gt;(renderer)-&gt;isEmbeddedThroughFrameContainingSVGDocument())
&gt; +                    embeddedThroughFrame = true;

Why we do have to check is&lt;LegacyRenderSVGRoot&gt;(renderer) in the case #if ENABLE(LAYER_BASED_SVG_ENGINE)? Should not the check is&lt;LegacyRenderSVGRoot&gt;(renderer) be inside the #else ... #endif block? I think also we can get rid of the local &quot;embeddedThroughFrame&quot; and call renderer-&gt;view().setNeedsLayout(MarkOnlyThis); directly.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854312</commentid>
    <comment_count>28</comment_count>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-23 11:56:15 -0700</bug_when>
    <thetext>(In reply to Said Abou-Hallawa from comment #27)
&gt; Comment on attachment 455394 [details]
&gt; Patch
&gt; 
&gt; View in context:
&gt; https://bugs.webkit.org/attachment.cgi?id=455394&amp;action=review

Thanks for the r+ Said and starting the work - it&apos;s a good move in the right direction! I&apos;d like to chim in regarding the LBSE questions:

&gt; 
&gt; &gt; Source/WebCore/svg/SVGSVGElement.cpp:222
&gt; &gt; +#if ENABLE(LAYER_BASED_SVG_ENGINE)
&gt; &gt; +                if (is&lt;RenderSVGRoot&gt;(renderer) &amp;&amp; downcast&lt;RenderSVGRoot&gt;(renderer)-&gt;isEmbeddedThroughFrameContainingSVGDocument())
&gt; &gt; +                    embeddedThroughFrame = true;
&gt; &gt; +#endif
&gt; &gt; +                if (is&lt;LegacyRenderSVGRoot&gt;(renderer) &amp;&amp; downcast&lt;LegacyRenderSVGRoot&gt;(renderer)-&gt;isEmbeddedThroughFrameContainingSVGDocument())
&gt; &gt; +                    embeddedThroughFrame = true;
&gt; 
&gt; Why we do have to check is&lt;LegacyRenderSVGRoot&gt;(renderer) in the case #if
&gt; ENABLE(LAYER_BASED_SVG_ENGINE)? Should not the check
&gt; is&lt;LegacyRenderSVGRoot&gt;(renderer) be inside the #else ... #endif block?
Because you can compile WebKit with LBSE enabled, but disable it at runtime (that&apos;s the default). Therefore you need to handle both cases when compiling wiht LBSE. The check if LBSE is actually activated can be omitted (which Rob did), since objects of type &apos;RenderSVGRoot&apos; are only ever produced, if LBSE is compiled into WebKit and activated at runtime (e.g. via a menu in MiniBrowser).

&gt; I think also we can get rid of the local &quot;embeddedThroughFrame&quot; and call
&gt; renderer-&gt;view().setNeedsLayout(MarkOnlyThis); directly.
Nope, that would a huge amount of extra work for inner &lt;svg&gt; elements, whose width/height changes -- you would invalidate the whole documents&apos; RenderView, whenever an inner &lt;svg&gt; element changes its size. SVGSVGElement creates &apos;RenderSVGRoot&apos; type renderers for outer &lt;svg&gt; elements (such as those SVG documents embedded through a frame) and &apos;RenderSVGViewportContainer&apos; - for inner &lt;svg&gt; elements.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854352</commentid>
    <comment_count>29</comment_count>
      <attachid>455394</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2022-03-23 13:12:21 -0700</bug_when>
    <thetext>Comment on attachment 455394
Patch

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

&gt; Source/WebCore/svg/SVGSVGElement.cpp:221
&gt; +                if (is&lt;LegacyRenderSVGRoot&gt;(renderer) &amp;&amp; downcast&lt;LegacyRenderSVGRoot&gt;(renderer)-&gt;isEmbeddedThroughFrameContainingSVGDocument())

Nitpick: add if (!embeddedThroughFrame... to save work.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854399</commentid>
    <comment_count>30</comment_count>
      <attachid>455553</attachid>
    <who name="Rob Buis">rbuis</who>
    <bug_when>2022-03-23 14:21:15 -0700</bug_when>
    <thetext>Created attachment 455553
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1854589</commentid>
    <comment_count>31</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2022-03-23 23:33:47 -0700</bug_when>
    <thetext>Committed r291788 (248816@main): &lt;https://commits.webkit.org/248816@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 455553.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1866774</commentid>
    <comment_count>32</comment_count>
    <who name="Antti Koivisto">koivisto</who>
    <bug_when>2022-05-05 01:13:02 -0700</bug_when>
    <thetext>This was 9% regression in Motion Mark Suits subtest, bug 240112</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438211</attachid>
            <date>2021-09-14 21:45:56 -0700</date>
            <delta_ts>2021-09-14 21:58:41 -0700</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230296-20210914214556.patch</filename>
            <type>text/plain</type>
            <size>69254</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZkNGZmOWExMDFjMDg4
NmJlZjEyOGQ1NzFiZTQxN2E1NzBjNDUwZC4uZDk1ZTU3NDI5N2Q5YWJiY2I3YzJiYjljODE5ZmFj
MmU1OWU3MTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0wOS0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBzZXROZWVkc0xheW91
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdpbmcgdGhlIFNWRyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9t
Q2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjpyZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5j
aG9yKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5
bGUpOgorCiAyMDIxLTA5LTEzICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXSBSZW5hbWUgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkKkZvcm1hdHRpbmdTdGF0
ZSB0byBmb3JtYXR0aW5nU3RhdGVGb3IqRm9ybWF0dGluZ0NvbnRleHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggZWE1Yjg1MTNlNmU0
NzhhZjVkOWY3ZTU5ZWE3YTQxOGE4NjdiYTdiNi4uOGIyYmNlNGNkOWUyMjEzMGQ4ODU4ZDBjMGEz
Y2Q0MDVlYWE4MzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAKQEAgLTI0MywxOSArMjQzLDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKQogICAgIC8vIFRo
aXMgZW1wdHkgaW1hZ2UgbWF5IGJlIGNhY2hlZCBieSBTVkcgcmVzb3VyY2VzIHdoaWNoIG11c3Qg
YmUgaW52YWxpZGF0ZWQuCiAgICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0Nh
Y2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcykpCiAgICAgICAgIHJlc291cmNl
cy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKLQotICAgIC8vIEV2ZW50dWFsbHkgbm90
aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hhbmdlZC4KLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCp0aGlz
LCBmYWxzZSk7Ci0KKyAgICAKICAgICAvLyBVcGRhdGUgdGhlIFNWR0ltYWdlQ2FjaGUgc2l6ZUFu
ZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdlIGxvYWRpbmcgZmluaXNoZWQgYWZ0ZXIgbGF5b3V0
LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0ODkp
CiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwotICAgIGlmICh1cGRhdGVJ
bWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNldE5lZWRzTGF5b3V0KCk7CiAKICAgICBpbnZhbGlk
YXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICByZXBhaW50KCk7CisgICAgaW1hZ2VFbGVt
ZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lk
IFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNw
cAppbmRleCA5ZmQzM2YzYzBiOTFmNzE0NTZiYTI1YTJlZmQwNmRkMDJkMzlhNmFkLi40MDVmYzQ3
YTRmYWZmYzAzMDQ3ZjZjMGUzYWEwZWExNzdkMGVjNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMTU2LDE2ICsxNTYs
NyBAQCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIFJlbmRlclNWR1Jlc291cmNlOjpzaGFy
ZWRTb2xpZFBhaW50aW5nUmVzb3VyY2UoKQogCiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tQ2FjaGVB
bmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBib29sIG5l
ZWRzTGF5b3V0KQogewotICAgIGlmIChhdXRvKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNo
ZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmIChS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gcmVzb3VyY2VzLT5maWx0ZXIoKSkKLSAg
ICAgICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKLQotICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFz
a2VyKCkpCi0gICAgICAgICAgICBtYXNrZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZShyZW5kZXJl
cik7Ci0KLSAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJl
c291cmNlcy0+Y2xpcHBlcigpKQotICAgICAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKHJlbmRlcmVyKTsKLSAgICB9CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OnJlbW92ZVJl
bmRlcmVyRnJvbVJlc291cmNlcyhyZW5kZXJlcik7CiAKICAgICBpZiAoIWlzPFNWR0VsZW1lbnQ+
KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggYWQ5ZTIyNDJm
ZTlkZmNjYzBhNjRlNDVjYTMyM2M3YzQ1ZDlhMTA1Ni4uNGJlMGRmNDdjMmUyNzQ4ZTQwODVlNDRk
NTU2NWFlOGU4NmFkNGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE2OSw2ICsxNjksMjIgQEAgdm9pZCBTVkdSZXNv
dXJjZXNDYWNoZTo6cmVzb3VyY2VEZXN0cm95ZWQoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIm
IHJlc291cmNlKQogICAgIH0KIH0KIAordm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVu
ZGVyZXJGcm9tUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQoreworICAgIGF1dG8q
IHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJl
cihyZW5kZXJlcik7CisgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdXRvIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCkpCisgICAgICAgIGZpbHRlci0+
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIG1hc2tlciA9
IHJlc291cmNlcy0+bWFza2VyKCkpCisgICAgICAgIG1hc2tlci0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBw
ZXIoKSkKKyAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsK
K30KKwogU1ZHUmVzb3VyY2VzQ2FjaGU6OlNldFN0eWxlRm9yU2NvcGU6OlNldFN0eWxlRm9yU2Nv
cGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzY29wZWRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogICAgIDogbV9yZW5kZXJlcihyZW5kZXJl
cikKICAgICAsIG1fc2NvcGVkU3R5bGUoc2NvcGVkU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXggNThjOTE0NzRkYmIwMzVl
YjM1ZDNhYzY3MTdiZjRmZmRkMTg1MmJhZC4uN2I2YmM5ZDJkYjAzNGQyYmRlMmMxNTA0MjUyOTNi
NzNhMTgwYTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZy
b20gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OndpbGxCZURlc3Ryb3llZCgpLgogICAgIHN0
YXRpYyB2b2lkIHJlc291cmNlRGVzdHJveWVkKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMoUmVuZGVyRWxl
bWVudCYpOworCiAgICAgY2xhc3MgU2V0U3R5bGVGb3JTY29wZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNldFN0eWxlRm9yU2NvcGUpOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
CmluZGV4IDhjMmJjNGVmNGM0OTcwMzE5MDAyMThiZDA2Zjc1ZGE5N2M4NWQxMTQuLjQ0NWEwMzli
Zjk3ZGY3MTA2ZWNiYWY2ZGFjYzM2MDJmNGRiNTU1NWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtMTkz
LDYgKzE5Myw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUoQ29u
dGFpbmVyTm9kZSYgcm9vdCkKICAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGVzKQogICAgICAgICAg
ICAgdXBkYXRlRWxlbWVudFJlbmRlcmVyKGVsZW1lbnQsICplbGVtZW50VXBkYXRlcyk7CiAKKyAg
ICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgZG93bmNhc3Q8
U1ZHRWxlbWVudD4oZWxlbWVudCkuaW52YWxpZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVkZWQo
KTsKKwogICAgICAgICBzdG9yZVByZXZpb3VzUmVuZGVyZXIoZWxlbWVudCk7CiAKICAgICAgICAg
Ym9vbCBtYXlIYXZlUmVuZGVyZWREZXNjZW5kYW50cyA9IGVsZW1lbnQucmVuZGVyZXIoKSB8fCAo
ZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSAmJiBzaG91bGRDcmVhdGVSZW5kZXJlcihlbGVt
ZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggMzc3ZDc5YTBkMzFlMGFmYjVi
YzhkODJlNGZkMGU2MTI2ZGNkM2Q4Yy4uNmM1YWU1ODBjNzdmZjMwMTM5ZWE5ZGZkYTRlYzU2ODFl
ODFmZjU2NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25F
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQuY3BwCkBAIC0yNDgsMTEgKzI0OCwxNCBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgaWYgKCF0YXJnZXRFbGVtZW50KQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSB0YXJnZXRFbGVt
ZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVw
ZGF0ZSgpOwotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgfQotCisgICAgYXV0byBpbnZh
bGlkYXRlID0gW10oU1ZHRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSgpOworICAgICAgICBlbGVtZW50LnNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICB9OworICAgIAorICAgIGludmFsaWRhdGUoKnRhcmdl
dEVsZW1lbnQpOworICAgIAogICAgIEFmZmluZVRyYW5zZm9ybSogdGFyZ2V0U3VwcGxlbWVudGFs
VHJhbnNmb3JtID0gdGFyZ2V0RWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAgICAg
aWYgKCF0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgIHJldHVybjsKQEAgLTI2
MywxMCArMjY2LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRz
VG9UYXJnZXQoKQogICAgICAgICBpZiAoIXRyYW5zZm9ybSB8fCAqdHJhbnNmb3JtID09ICp0YXJn
ZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAg
KnRyYW5zZm9ybSA9ICp0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm07Ci0gICAgICAgIGlmIChS
ZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGluc3RhbmNlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAg
ICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBpbnZhbGlkYXRlKGluc3RhbmNlKTsK
ICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAppbmRleCBj
ZDgxZDM5OGNlNTMzNGVjYjk4OGY2Y2ViNDFiMjJlMjY2NjI0ODIwLi4xNjY5YWFhMTI4ZmU0MWE4
NDEyNTJhZmY1MDk1NzE3N2MwM2Q2MDJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2lyY2xlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVs
ZW1lbnQuY3BwCkBAIC02Nyw4ICs2Nyw5IEBAIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiB2b2lk
IFNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSk7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9u
YWxIaW50U3R5bGUoKTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQ
YXRoRWxlbWVudC5jcHAKaW5kZXggYjRlNzk5NThjNWIxMzAzNTVmNzk5OTRiMTE4M2M1M2Y5MmNl
ZDY5Yi4uMGU2MDQzZmYyZGMyNWExZjEzN2I3Y2MzOTIxNjIyZDA4YTlhNTJkYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKQEAgLTY2LDkgKzY2LDcgQEAgdm9p
ZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotCi0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVy
KCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVy
RnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggMGNkNGZkNDFlNTNhZDE1ODI4MzI4ZTNiMTNm
ODJlZTYwNjVlMmQ5ZC4uOGRkYzhkYmQ3ZTJkNDE1ZmFjYzgzODFhMjA4MGY1Y2RlYTY4ODkzMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOworICAgICAg
ICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IGJhNTQyNjA2YmIwOWJh
Njk4ODczZGJkN2FlMDhhMTNlMjJhYWZkYmYuLjhkMjExMTY0ODJlZmZkYTdhNzIxYmRiOGQyZDUx
Y2IwNzczOTIzYTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTU4NSw3ICs1ODUs
NyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBw
cm9wZXJ0eSkKICAgICAvLyBTVkdMZW5ndGhMaXN0IGFuZCBub3QgdGhlIFNWR0xlbmd0aC4KICAg
ICBwcm9wZXJ0eS0+c2V0RGlydHkoKTsKIAotICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7
CisgICAgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKTsKICAgICBzdmdBdHRyaWJ1
dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0eUF0dHJpYnV0ZU5hbWUoKnByb3Bl
cnR5KSk7CiB9CiAKQEAgLTYwMSw3ICs2MDEsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFBy
b3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFuaW1hdGVkUHJvcGVydHkpCiAgICAg
ZWxzZQogICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUs
IGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkpOwogCi0gICAgaW52YWxpZGF0ZVNW
R0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpOwog
ICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFtZSk7CiB9CiAKQEAgLTYzNCw3ICs2
MzQsNyBAQCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+IFNWR0VsZW1lbnQ6OmNyZWF0ZUFu
aW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dAogICAgICAgICBpbnN0YW5jZS0+cHJvcGVy
dHlSZWdpc3RyeSgpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2UoYXR0cmlidXRlTmFtZSwgKmFuaW1h
dG9yKTsKICAgICByZXR1cm4gYW5pbWF0b3I7CiB9Ci0gICAgCisKIHZvaWQgU1ZHRWxlbWVudDo6
YW5pbWF0b3JXaWxsQmVEZWxldGVkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUp
CiB7CiAgICAgcHJvcGVydHlBbmltYXRvckZhY3RvcnkoKS5hbmltYXRvcldpbGxCZURlbGV0ZWQo
YXR0cmlidXRlTmFtZSk7CkBAIC04NTUsNiArODU1LDI5IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29s
bGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwg
cHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2b2lkIFNWR0VsZW1lbnQ6OnNldFByZXNlbnRhdGlv
bmFsSGludFN0eWxlSXNEaXJ0eSgpCit7CisgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5z
ZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkodHJ1ZSk7CisgICAgLy8gVHJpZ2dlciBz
dHlsZSByZWNhbGN1bGF0aW9uIGZvciAiZWxlbWVudHMgYXMgcmVzb3VyY2UiIChlLmcuIHJlZmVy
ZW5jZWQgYnkgZmVJbWFnZSkuCisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQgU1ZH
RWxlbWVudDo6c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpCit7CisgICAg
bV9OZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uID0gdHJ1ZTsKKyAgICBpbnZhbGlk
YXRlU3R5bGUoKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlUGFyZW50QW5kUmVz
b3VyY2VJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX05lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24pCisgICAgICAgIHJldHVybjsKKyAgICAKKyAgICBpZiAoYXV0byByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICBtX05lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24gPSBmYWxzZTsKK30KKwogdm9pZCBTVkdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIENTU1Byb3BlcnR5SUQgcHJvcElkID0gY3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0
ZU5hbWUoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5kZXggNzA0YWU4MGE5N2Ix
ZDRhNDM5Y2EyZWMwMTcxYWUzMDY4ZWU3MmRkOC4uZTMyZjMyMGNkODM1OWIwODI0ZmQ4YTI1NDJk
ZjZkODIwZjYzN2UwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBAIC04MSwxMyArODEsMTAg
QEAgcHVibGljOgogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0qIHN1cHBsZW1lbnRhbFRy
YW5zZm9ybSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIHZvaWQgaW52YWxpZGF0ZVNWR0F0
dHJpYnV0ZXMoKSB7IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdBdHRy
aWJ1dGVzQXJlRGlydHkodHJ1ZSk7IH0KLSAgICB2b2lkIGludmFsaWRhdGVTVkdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpCi0gICAgewotICAgICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgp
LnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSh0cnVlKTsKLSAgICAgICAgLy8gVHJp
Z2dlciBzdHlsZSByZWNhbGN1bGF0aW9uIGZvciAiZWxlbWVudHMgYXMgcmVzb3VyY2UiIChlLmcu
IHJlZmVyZW5jZWQgYnkgZmVJbWFnZSkuCi0gICAgICAgIGludmFsaWRhdGVTdHlsZSgpOwotICAg
IH0KKyAgICB2b2lkIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCkgeyBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLnNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUp
OyB9CisgICAgdm9pZCBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICB2
b2lkIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICB2b2lkIGlu
dmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFu
Y2VzIG9mIGFuIGVsZW1lbnQgYXJlIGNsb25lcyBtYWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBs
ZW1lbnQgPHVzZT4uCiAgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNl
cygpIGNvbnN0OwpAQCAtMTk3LDYgKzE5NCw4IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGludmFs
aWRhdGVJbnN0YW5jZXMoKTsKIAorICAgIGJvb2wgbV9OZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uIHsgZmFsc2UgfTsKKwogICAgIHN0ZDo6dW5pcXVlX3B0cjxTVkdFbGVtZW50UmFy
ZURhdGE+IG1fc3ZnUmFyZURhdGE7CiAKICAgICBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiBtX2Vs
ZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwCmluZGV4IDM0NzQ4ZjM4ZTc2ZTM1NGM2ZjczNjhmN2QzNjNmM2FmZmE5OTc0M2Eu
LjAwNGJhMzZlY2IxOTBjYWE4NzMzNTUxZDA3ODA4MjE4ZWViNGU3YTkgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcApAQCAtNzAsOCArNzAsOSBAQCB2b2lkIFNWR0Vs
bGlwc2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3Bl
cnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggN2JjZjA0MTgwMGY3OTlmMTE3
NGNmZTA0YjgyMmQ2ZDA2NDMxZjY4Ni4uYjNiMDgwZjYzOTE4Y2ZhNDk4MDJmMjA3Yzc2YzBmNzI0
ZDcwNDg2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC04
NSwxNSArODUsMTIgQEAgYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKIAogdm9pZCBTVkdGRUJsZW5k
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7CisgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRp
dmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjppbjJBdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAKaW5kZXggMDUyNDg1NzhjMjc0YzhmYTJiM2UxZjI0NGU0MzY3ODY4
ZjQyYmE5Yy4uZjlkOGIxNWVlMDJmODVhY2Q3MTYwMDgwYTNjYjZhZjNjMjQwMWFjOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC04NSwx
NSArODUsMTIgQEAgYm9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb24KIAogdm9pZCBTVkdGRUNvbG9yTWF0
cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVB
dHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5j
cHAKaW5kZXggZTg5MjY3Y2U3ZDM0MTQ2ZDJhNjVkNmYwMWRjZTVkZWY0OWM4MmY3OC4uZGM4YTNi
NDdhYjQ0N2FhODE0ZGI4NjI3OTExM2NiMDViM2ExMjU2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02Miw2ICs2
MiwxNyBAQCB2b2lkIFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjbwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCit2b2lk
IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQoreworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBh
cmVudCgqdGhpcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwor
fQorCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciogZmlsdGVyQnVpbGRlciwgRmlsdGVyJiBmaWx0ZXIpIGNv
bnN0CiB7CiAgICAgYXV0byBpbnB1dDEgPSBmaWx0ZXJCdWlsZGVyLT5nZXRFZmZlY3RCeUlkKGlu
MSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJF
bGVtZW50LmgKaW5kZXggYmI1ODkzNDdkODgyNmRmYjM2MDllZGFjNmU4Yjk5M2E0ZGQ1NDg2My4u
NmI3ZmVhYmNmMGI5NjBkOWQ5MjFhMzBmMTk1NjcwMDNjMGI1NTI3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQwLDgg
KzQwLDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVy
dHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0
cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVn
aXN0cnk7IH0KIAotICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAg
ICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0
cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBidWlsZChT
VkdGaWx0ZXJCdWlsZGVyKiwgRmlsdGVyJikgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggM2NhOTliODc1NzA4YmJk
OGE2YmFmNjUzZGMwNmZlMjA1YWM5ODIzNS4uODRhYzg0MzcyMzg4YWM3MjRiN2NjMDhlYzZjMzVj
MDIyMGEzMjZiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAKQEAgLTExNiwxNSArMTE2LDEyIEBAIGJvb2wgU1ZHRkVDb21wb3NpdGVFbGVtZW50Ojpz
ZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNvbnN0CiAKIHZv
aWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3Bl
cmF0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmsyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjprNEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNw
cAppbmRleCBmNzUwNTgxNWRlY2FiYjRlYTM0YjQzNWI0N2VhNWE4MGM2YTI2ZGYxLi4yNGFhNzJk
Y2RmYTJhNTFhZTljMTE4MjVkOTQ3YjMyYTE4YzE0MjBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTE2NCwyNyArMTY0LDI0
IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKGZsb2F0IHgsIGZs
b2F0IHkpCiB7CiAgICAgbV9vcmRlclgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX29y
ZGVyWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwgZmxvYXQgeSkK
IHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAg
bV9rZXJuZWxVbml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRh
dGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAK
IHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjplZGdlTW9kZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpdmlzb3JBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpiaWFzQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
dGFyZ2V0WEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFlBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cHJlc2VydmVBbHBoYUF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikgewotICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRy
KQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCA3NTFhZGFjMTI4YThiM2Y4
ZjgwMTc5MzA3NTgyM2JlZWNmZDk0YmNlLi45NTA1YzQwZTRkMGRlYTRiMzIwMWEwYmJhZjkwZmZl
ODBiZWRlNWI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcApAQCAtMTI3LDE1ICsxMjcsMTIgQEAgYm9vbCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVm
ZmVjdCwKIAogdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpk
aWZmdXNlQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVu
Z3RoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6bGlnaHRpbmdfY29sb3JBdHRyKSB7Cisg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBw
cmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAg
IH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0gICAgICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRl
KCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQorICAgICAgICAg
ICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNl
CisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCAwYzVlODI1YmM4MjU2MGYzNmEyNjllYTZkNzIy
ZGZkMDUxNzNkOGMyLi43MjlhNmQ0MzgxODllMWRlNDc0ZjIzOWE2YmQzY2E1ZGQzMWM4YzAzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcApAQCAtMTAwLDE1ICsxMDAsMTIgQEAgYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKIAogdm9p
ZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
Ojp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxT
ZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikgeworICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0K
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAg
ZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcAppbmRleCAyMmJjZTFkMzMzMTdjOTU3MWZlNWQ3OWY0YjMyNmE4OWJm
YzViNjgxLi5lMGQ2MGQzYzIwYjJkZDU0ZDA2NjRjZWZlM2Q3OWZjOTNiNDIxZmYwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC01NSw3ICs1
NSw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0
IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwo
eCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52
YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
IH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTkwLDcgKzkw
LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBz
ZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dC5jcHAKaW5kZXggN2E5OTgyMjRjOTIxOTU1NTI0NGE4NjljYTc4YTgzMGQ1NjNjNTk5ZC4uOTgz
OGFkY2I3ZjFlODdkNDVkOGFkNzZiMmEwOTRmNWQ3Y2MyZTg4YyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAg
dm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBm
bG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwog
ICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRh
dGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAK
IHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg4LDcgKzg4LDcg
QEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0
TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxOGY3
ODA5ZmFlMDI5MjQ3NGJmZjA1ZmIxNDAxN2MyZGU2NjFkMzQ2Li5jMjU2OTBlM2IwMGFhNmYwNTEy
OTk4NTJmYzcyMjc0ZTYzYjVmMGU4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxl
bWVudC5jcHAKQEAgLTEwOCw3ICsxMDgsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWls
ZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmIChpczxTVkdFbGVtZW50PigqdGFyZ2V0
LmVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQp
LmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAKLSAgICBpbnZhbGlkYXRlKCk7CisgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTEyNCw5ICsxMjQsOSBAQCB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAg
ICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xNjIsMTYgKzE2MiwxMSBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50
Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmlj
cwogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgYXV0byBw
YXJlbnQgPSBtYWtlUmVmUHRyKHBhcmVudEVsZW1lbnQoKSk7Ci0KKyAgICBhdXRvIHBhcmVudCA9
IHBhcmVudEVsZW1lbnQoKTsKICAgICBpZiAoIXBhcmVudCB8fCAhcGFyZW50LT5oYXNUYWdOYW1l
KFNWR05hbWVzOjpmaWx0ZXJUYWcpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJFbGVt
ZW50KiBwYXJlbnRSZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAoIXBhcmVu
dFJlbmRlcmVyKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwYXJlbnRSZW5kZXJlcik7
CisgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogfQogCiBSZWZQdHI8RmlsdGVyRWZmZWN0PiBTVkdGRUltYWdl
RWxlbWVudDo6YnVpbGQoU1ZHRmlsdGVyQnVpbGRlciosIEZpbHRlciYgZmlsdGVyKSBjb25zdApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggM2QxM2QxNmUxMDdm
ZTQ0Y2YyMGI1NzlhNWYxNzY5NTJkODU4NmE4My4uZDcwMjAxYzhiODVjOTIwNGI3YWU5ZjY4OGNm
ZGIwZDJmNjIyMjI5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3Bw
CkBAIC0xNTAsMTUgKzE1MCw5IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB2b2lkIFNWR0ZFTGlnaHRF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAg
ICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKLQogICAgIGlmIChjaGFuZ2Uu
c291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwot
ICAgIGF1dG8gcGFyZW50ID0gbWFrZVJlZlB0cihwYXJlbnROb2RlKCkpOwotICAgIGlmICghcGFy
ZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBwYXJl
bnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291
cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICBpbnZh
bGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCA0YmU5MDc4MjZkYmEwNjE5
MzY4NGUwYTRkYWY1YmEyYjVmYTk0YWZhLi45MWE2YzE0MDQxZDE1N2Q4NmY2YWJmYTYyNjVjMTlk
NTNjM2FiY2VmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcApAQCAtNjAsOSArNjAsOSBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbQogCiB2b2lkIFNW
R0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikg
eworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAg
ICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCh0aGlzKTsKKyAgICAgICAgaW52YWxp
ZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRl
eCBkNmZiOTVjOGUzNzc2ZTZkMjA5M2JlYWNlMzVlMmVkMTc5NWQzMjFiLi4yODU4OGM0ZTUyM2U3
MzllYzUzY2E4ODY5ZGU4OGViNjBmNTBkMWU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9yYWRp
dXNYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9yYWRpdXNZLT5zZXRCYXNlVmFsSW50
ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKQEAgLTk5LDE1ICs5OSwxMiBAQCBib29sIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNl
dEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29ucwogCiB2b2lk
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVy
YXRvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnJhZGl1c0F0dHIpIHsKKyAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCmlu
ZGV4IDAzODI2OGI4OWIyZjE5ZjliZTU2ODczOWQxMjMwMzU0MTAwYTVlZTcuLjUwOGZjMWI1OGZh
MWJjM2I1NWY4YjVlM2FjYTVhOTBlODQzNzQ3YTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwCkBAIC03NCw3ICs3NCw3IEBAIHZvaWQgU1ZHRkVPZmZzZXRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAyNjRkMTk3ZWYz
NjU2YmJmYjg0MWI2NzYwNDNiNjAzMWQxY2VjZDgxLi5lOGI5ZmRmNDE2OTE4ZmE0YjVkZGZjMDQy
YWM2MzNhZWU2MWVhMjJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMzYsMTUgKzEzNiwxMiBAQCBib29sIFNWR0ZF
U3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdAogCiB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyIHx8IGF0dHJOYW1lID09IFNW
R05hbWVzOjpzcGVjdWxhckNvbnN0YW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3Bl
Y3VsYXJFeHBvbmVudEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7
Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCmluZGV4IDM5YmRjYzc3MzU5NjY1MDM2ZTFhZTc0NzYxMmVhZDZmOWFjMzcz
NzAuLjBlZTA0ZGE5M2Y5ZmZlNDc4OTg2MTM1YzQwZGVmNmU3NDIyODJjZTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKQEAgLTYxLDkgKzYxLDkgQEAgdm9pZCBTVkdG
RVRpbGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW4KIAogdm9pZCBTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDgxM2JjYmQwODIwY2Fj
Njc3YTc5N2YyN2JjY2U4Y2UxMDkxMmJjNDcuLjU1NjdkMTQ0OTY4M2NlMmIxMTVhMTY5NmZkODg0
YzBmYjBiMGVmMmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAg
LTkxLDE2ICs5MSwxNyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgIH0KIAotICAgIGlmIChQcm9wZXJ0
eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlv
dXQoKTsKLSAgICAgICAgcmV0dXJuOworICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCmluZGV4IGYyYTZlZTA4ZGI3YTBkMmRmM2JkOGNj
NTM3NWQzMTc5OGI1MTIxZTIuLjdmM2Y5MWIyZWIyYzUxYjM2NWIyMmE1ODAxZWU5ZjMxZTE2Yjg0
OTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCkBAIC03Nyw4ICs3Nyw3IEBAIHZvaWQgU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgIH0KIAogICAgIFNW
R0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpAQCAtOTAsNyArODksNyBA
QCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaAogCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgaW52YWxpZGF0
ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAog
dm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnNldFN0YW5kYXJkQXR0
cmlidXRlcyhGaWx0ZXJFZmZlY3QqIGZpbHRlckVmZmVjdCkgY29uc3QKQEAgLTEyMiwyMSArMTIx
LDEyIEBAIGJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpyZW5kZXJl
cklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0dXJuIGZhbHNlOwogfQogCi12
b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkK
K3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50JiBlbGVtZW50
KQogewotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgYXV0byBwYXJl
bnQgPSBtYWtlUmVmUHRyKGVsZW1lbnQtPnBhcmVudE5vZGUoKSk7Ci0KLSAgICBpZiAoIXBhcmVu
dCkKKyAgICBhdXRvIHBhcmVudCA9IGVsZW1lbnQucGFyZW50Tm9kZSgpOworICAgIGlmICghaXM8
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpKQogICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZSgpKQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgZmFsc2Up
OworICAgIGRvd25jYXN0PFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz4ocGFy
ZW50KS0+c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKaW5kZXggYzk4YjEzZWQ5NjI3NmFmOWUxNGY2NDI4MTFhNmZkNzQ2Nzcy
YWNhNy4uYTQ4ZGEyMjBiMmIyZTFkNzQwYWNhYzQ1NjE5NWJhZTA4M2UyZWNjOSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaApAQCAtNjMsNyArNjMsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBp
bnZhbGlkYXRlKCk7CiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOwogCiBwcml2YXRlOgpAQCAtODIsMTMgKzgxLDcg
QEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1fcmVzdWx0IHsgU1ZHQW5p
bWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAotdm9pZCBpbnZhbGlkYXRlRmlsdGVy
UHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKLQotaW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAoYXV0byog
cHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQotICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwcmltaXRpdmVS
ZW5kZXJlcik7Ci19Cit2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxl
bWVudCYpOwogCiBpbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlKQogewpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKaW5kZXggM2E1MTRjYjM4NDFjNDI4ZTYyZGUxMmE2NTFiY2Q2MGY1ZTVlZTYzZC4uNDI3YzYx
YjRiODhhNzIwNWVjNWE1MjY4N2VlNzljZjcyZmE0ZTdjMCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC03MywxNSArNzMsMTQgQEAgdm9p
ZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXQKIAogdm9pZCBTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikgewotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50
U3R5bGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKSB7Ci0gICAgICAg
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
KyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
KyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKQorICAgICAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJ
c0RpcnR5KCk7CisgICAgICAgIGVsc2UgeworICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKKyAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCmluZGV4IGQ1ZWUwYzg4ODM4MzA5
ZjgzN2MyYjU3MmJlYjBjOWNlNjI0MDI0ODIuLjcxMGQ3YjUwYjZmZTFjZWRlOTZkYTdlNDNmYzU3
NjkwMGUzODg2ZjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3Bw
CkBAIC0xMTIsOSArMTEyLDcgQEAgdm9pZCBTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpwYXRoTGVuZ3RoQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAg
cmV0dXJuOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CiAgICAgfQogCiAgICAgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXgg
M2RhMGYzMzA5NzUyYWZmMzI4Y2I4MGJkYzhmNDM2OWZjZGIwMTBlNi4uNmM0ODgwYmJlYjU4Nzk5
NGJmOWQxOTE4MmI3M2MwZjZlZTRmYjExZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAKQEAgLTc3LDEwICs3NywxNSBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cgogCiB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQor
CisgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
KyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAg
IHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRl
eCA1NjdjNDA1NjM4Njk3NGIxYWY5MmIzOThmN2M0NjE5OTk3OWVjMTNlLi43YmMyZWMxNzA2NTM0
N2FhNDBjZmY1N2EzNTE4OGRiM2Y2ZWY4OGY4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmNwcApAQCAtMTQ2LDE0ICsxNDYsMTIgQEAgdm9pZCBTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHIKIAogdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp0cmFuc2Zvcm1BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dHJhbnNmb3JtQXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAg
ICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotCisgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCAxNWFlYzJiMGQ3ZDkwM2U3Njk5ZGY4
MGQyZWI2NWU5NmQ2M2ZhMTQ4Li4xZDYzZmFhNGEyM2JkMDhmZTFiOTU3ZDE5Y2MwN2JkYjkzNmNk
NTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtOTcsMjIgKzk3
LDIyIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpOwogCiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVy
KS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OworICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51
cGRhdGVJbWFnZVZpZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAg
ICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICB9CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Ondp
ZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TGluZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcApp
bmRleCBhNDJlYWU1NGEwZTBmMWNmN2YxMjUzNzNkNzVlMGFiNWFjMmFlZjJjLi4xOTNiY2NkMzVj
YTBmYjllOTcyYTUwMDAzYzRhYTQyMGQyNGJjNmEzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
RWxlbWVudC5jcHAKQEAgLTcxLDEyICs3MSwxMCBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLQotICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJl
bmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggYmMyYTE4
OTBiMjQ0Y2E1NjNmNWY0ZjUwMDg2NDZlMjEzZTY0YmQ3OS4uMjA5NWUzZGEwNTU3M2Q3ODg5ZGNh
YjcxNDJkMmViZDZjMDE3YWRkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTgyLDggKzgyLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAg
ICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNl
dE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCmluZGV4IDBiNDNiYjg0MmU1ZTM2MmFhZWY4NzlmZDYwNjNhYTU3NmVh
ZTIxYWIuLjI5ZDJjNWI5NTI3ZDJhMzYzM2I2MDZmYzY0MTVhN2I5MDgzNGU1MDEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTk4LDE0ICs5OCwxMyBAQCB2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZShhdHRyTmFtZSkpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1h
dGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1Bh
cmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAg
ICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA0OGZkMzdiZjNkNjJhMTg3NzkxMzg4NTE4MDJj
NGE4YzkzZWE3ZjdkLi5jYWNiOGQ4NDYyMTU1Mjk1YWEwODg1MTFkZjFlZTJjMWU4NjhkZjQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTk3LDE1ICs5NywxMiBAQCB2
b2lkIFNWR01hc2tFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52
YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICAgICAgc2V0
UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggMTA3
NjYxOWJlYTEwNzRhMTc1ZmVlNmM3YjA1YzZiNWY4OTUyZDEyMS4uMjM3MTIyZWY5ODBmOGJkZWUx
NWE3YzdhZjgyY2FmYjMzOTRmYmM0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwCkBAIC02NCwxNSArNjQsMTIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9pZCBT
VkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CisgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZh
bGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKLQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgeworICAgICAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJl
cigpKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBpbnZhbGlkYXRl
TVBhdGhEZXBlbmRlbmNpZXMoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCAzOTc2OTI0ODZlMjAyNzVjZDA1OGM0MzFiN2Fm
NjBiY2Q5NmIzYWNiLi5kYjk4YTAxYjczYWQ1NWMxMDc3YWNkODdkZWM5Y2U3MjNhNTM3OGYyIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTExMCwxNSArMTEw
LDE4IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0g
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICAgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUp
KQorICAgICAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAg
ICAgIGVsc2UKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBpZiAoU1ZHRml0
VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuY3BwCmluZGV4IGVhMWZlMDkyYTE2MjM3MTNjOTM4MzNhNWQ5NTdhZGNl
MWU2MzkxMDAuLmE2Mjk2NjI1ZWQ5OGFkOTA2ZDM5ZmFmM2ExODk2MGY4OWVhOTU4NmIgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQg
U1ZHUG9seUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJU
KGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKTsKKyAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzhmYWZiNTFhMWFhNDZiNTIy
MGE1NzVmYWVmNGU4ZjA0OTVjZGY2Zi4uYzVjMTYyZWRkNDE0Y2JhNTk4OTk0YTc2ZjBjZGQ3NzMz
NjUxZGQ3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAKQEAgLTg4LDggKzg4LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JlY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAK
aW5kZXggY2E4ZGJhMmY2ZjI3NzU1Y2ZkMGNjZTcyZDY1MGJkNjJjYzNkMjU2OC4uZDIwODliMTYw
NmE5MDllNGU5MTBkNzcxNTU0N2FkMzM3ZDZhNWMxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVj
dEVsZW1lbnQuY3BwCkBAIC03Nyw4ICs3Nyw5IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiB2
b2lkIFNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVu
dC5jcHAKaW5kZXggOTBjMWNmZjQ1ZDE0MzI4MTYyMDExMzZiMWNlOGY1OWM1YjhkNjQ4Zi4uMmFl
YjQyZGFkZjg5NjBjNTJjNjZkOTg2YWUxZmM4NjkyN2FiOTU4ZSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcApAQCAtMjA3LDcgKzIwNyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlu
dmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50
YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKIAogICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGlmIChpczxSZW5kZXJTVkdSb290Pihy
ZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4oKnJlbmRlcmVyKS5pc0VtYmVkZGVk
VGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkpCkBAIC0yMTcsMTEgKzIxNyw5IEBA
IHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47
CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9
CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUp
OwpAQCAtNTY5LDcgKzU2Nyw2IEBAIFNWR1NWR0VsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6OmZpbmRS
b290QW5jaG9yKFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKSBjb25zCiAKIGJvb2wgU1ZH
U1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudChTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmll
cikKIHsKLSAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBhdXRvIHZp
ZXcgPSBtX3ZpZXdTcGVjOwogICAgIGlmICh2aWV3KQogICAgICAgICB2aWV3LT5yZXNldCgpOwpA
QCAtNTc5LDggKzU3Niw4IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudChT
dHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcikKIAogICAgIGlmIChmcmFnbWVudElkZW50aWZp
ZXIuc3RhcnRzV2l0aCgieHBvaW50ZXIoIikpIHsKICAgICAgICAgLy8gRklYTUU6IFhQb2ludGVy
IHJlZmVyZW5jZXMgYXJlIGlnbm9yZWQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD0xNzQ5MSkKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIGhhZFVzZUN1cnJlbnRWaWV3
KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBpZiAoaGFkVXNlQ3VycmVu
dFZpZXcpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
KCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTU5MSw4ICs1ODgsOCBAQCBi
b29sIFNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQoU3RyaW5nVmlldyBmcmFnbWVudElk
ZW50aWZpZXIpCiAgICAgICAgICAgICBtX3VzZUN1cnJlbnRWaWV3ID0gdHJ1ZTsKICAgICAgICAg
ZWxzZQogICAgICAgICAgICAgdmlldy0+cmVzZXQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYm
IChoYWRVc2VDdXJyZW50VmlldyB8fCBtX3VzZUN1cnJlbnRWaWV3KSkKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKChoYWRVc2VDdXJyZW50VmlldyB8fCBtX3VzZUN1
cnJlbnRWaWV3KSkKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgfQogCkBAIC02
MTYsOCArNjEzLDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KFN0cmlu
Z1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICBy
b290RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp2aWV3RWxlbWVudCk7Ci0gICAgICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSByb290RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICByb290RWxlbWVudC0+c2V0
TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICAgICAgbV9jdXJy
ZW50Vmlld0ZyYWdtZW50SWRlbnRpZmllciA9IGZyYWdtZW50SWRlbnRpZmllci50b1N0cmluZygp
OwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTY0Nyw4ICs2NDMsNyBA
QCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5jaG9yKCkKICAgICB9CiAKICAgICBt
X3VzZUN1cnJlbnRWaWV3ID0gZmFsc2U7Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKCkpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50Ojppbmhlcml0Vmlld0F0dHJpYnV0ZXMoY29u
c3QgU1ZHVmlld0VsZW1lbnQmIHZpZXdFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxl
bWVudC5jcHAKaW5kZXggMTk1NzAwZWJmN2JhNzQxOTQzYzMxN2M5NmY1MmVlZDU3ZWIyOWEzYy4u
N2FhNzg2Yjc5OGViNzFmYTJhMzQ1YmYwZGEyOGQyMTM0NzIyNjA1NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC02NCwxMSArNjQsMTAgQEAgdm9pZCBTVkdTdG9wRWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bVN0cmluZyYKIAogdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBB
U1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpOworICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCA3NjlhYTFhMTJkZmVjYjk1ZTg2YzYx
ODkyMDBjMWQ3ZWI2Mjg2NjYwLi44YTAwNTg5Mjc5NjQzOWZlMGJjYmNjMDJlZTUyNjdhNGQ3NzIy
MWUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE4Myw4ICsxODMs
NyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAppbmRleCA5ZTliMmRjYjkxYjhiZDQ4OTUwZTczNGNlNDkwZTJhNmQ1
ZTQ3YmMyLi5jNjhjMjFmNzAyMWFhYzViN2MwZjU2ZTQ4YzY3OTgxNWVjMjBlYjc2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTc5LDEzICsx
NzksMTAgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
eworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgICAg
IG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgp
OwotCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAg
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IDY1ODdkZDZiMGJhZDg0
ZTZhMDY0OTliMDJlZjhmYzkxNGRjZGYzNTYuLjEwODM4Mjg1YWQwMmRiODIyZmQ3NmY1NDc4ZTBm
M2M0NjM5YmQxMzQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CkBAIC04OCwxOSArODgsMTUgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCiAgICAgICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLQotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIHJl
dHVybjsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
ICAgIH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAg
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuY3BwCmluZGV4IDljYWYwMTIzNGFhMDg3N2IxNzRhNTZiNjBlZjNhNzlkZDZjNGVk
NDkuLjkyMGMyY2FhMGExMzBiMmRmNjA5Y2IzODMzYTI0N2NlZmMzZGRmMTkgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAgLTk4LDE2
ICs5OCwxMyBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgICAgICBpZiAoYXR0ck5hbWUgIT0g
U1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJ
bmZvcm1hdGlvbigpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IFJlbmRlclNWR1Rl
eHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVyZXIpKQotICAgICAgICAgICAg
ICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0
ZXh0QW5jZXN0b3IgPSByZW5kZXJlcigpID8gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZH
VGV4dEFuY2VzdG9yKCpyZW5kZXJlcigpKSA6IG51bGxwdHIpCisgICAgICAgICAgICB0ZXh0QW5j
ZXN0b3ItPnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKIAorICAgICAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCBiMmIwMjYzNWM0MDY3
YTEwYzlmZmM2YjU0OWQxOTk4YzAzZGE4MWVlLi4xN2M5NDA2ZWRjMTIzZDM1ZjcwNTlkZmIyYTQ1
MDNiMWZkNWNlMGE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNTUs
MjEgKzE1NSwyMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNU
b1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogCiB2b2lkIFNWR1VzZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVubmVjZXNzYXJpbHkgaW5lZmZpY2ll
bnQgdG8gdXBkYXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBlYWNoIHRpbWUgZWl0aGVyIGlzIGNo
YW5nZWQuCiAgICAgICAgICAgICBpZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENs
b25lKCkpCiAgICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xv
bmUoKnRhcmdldENsb25lKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworCisgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICB1cGRh
dGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRl
RXh0ZXJuYWxEb2N1bWVudCgpOwogICAgICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAg
ICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCAyMmFi
ZWU5Mzk4MjMxM2Y0ZDgwZmRiMTg0M2U2NGM3YzlhMDg4NGE5Li44YWIyZGEwZTEzOGY0NjUzMTk2
OWM2OWQ0ZGIyNjY4YjgzNDg1OGU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5j
cHAKQEAgLTUzLDE3ICs1MywxMyBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNW
R1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIC8vIFdlIGlnbm9yZSBjaGFuZ2VzIHRvIFNWR05hbWVzOjp2aWV3VGFy
Z2V0QXR0ciwgd2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgdW51c2VkIGluIFdlYkNvcmUuCi0gICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAg
ICByZXR1cm47Ci0KICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBt
X3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7Ci0gICAgICAgICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAg
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Ci0KKyAgICAgICAgaWYgKCFt
X3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdGFyZ2V0RWxl
bWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKKyAgICAgICAgICAgIAorICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCptX3RhcmdldEVsZW1lbnQpOworICAg
ICAgICBtX3RhcmdldEVsZW1lbnQtPnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCmluZGV4IDY5ODQ0Mjc2
MDRhNDYwZWY0YWUxNjllOTNlZGIwMzY2ZWFhNGJiOTEuLmM1ODE0ZWQ3NDI4NzI4YWYxZDBkZTZj
ZTJkODA5NzQ5OGIyYjkyZTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0
aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJv
cGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBT
VkdBdHRyaWJ1dGVBbmltYXRvcjo6aXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlhbXRvcihjb25z
dCBTVkdFbGVtZW50JiB0YXIKIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmludmFsaWRhdGVT
dHlsZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50KQogewogICAgIFNWR0VsZW1lbnQ6Okluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQodGFyZ2V0RWxlbWVudCk7Ci0gICAgdGFyZ2V0RWxl
bWVudC5pbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICB0YXJnZXRF
bGVtZW50LnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogfQogCiB2b2lkIFNW
R0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZShTVkdF
bGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>438212</attachid>
            <date>2021-09-14 21:58:43 -0700</date>
            <delta_ts>2022-02-25 03:23:37 -0800</delta_ts>
            <desc>WIP</desc>
            <filename>bug-230296-20210914215842.patch</filename>
            <type>text/plain</type>
            <size>69508</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjgyMzUwCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZkNGZmOWExMDFjMDg4
NmJlZjEyOGQ1NzFiZTQxN2E1NzBjNDUwZC4uZDk1ZTU3NDI5N2Q5YWJiY2I3YzJiYjljODE5ZmFj
MmU1OWU3MTUwNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMS0wOS0xNCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBzZXROZWVkc0xheW91
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdpbmcgdGhlIFNWRyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9t
Q2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjpyZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5j
aG9yKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5
bGUpOgorCiAyMDIxLTA5LTEzICBBbGFuIEJ1anRhcyAgPHphbGFuQGFwcGxlLmNvbT4KIAogICAg
ICAgICBbTEZDXSBSZW5hbWUgTGF5b3V0U3RhdGU6OmVzdGFibGlzaGVkKkZvcm1hdHRpbmdTdGF0
ZSB0byBmb3JtYXR0aW5nU3RhdGVGb3IqRm9ybWF0dGluZ0NvbnRleHQKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAKaW5kZXggZWE1Yjg1MTNlNmU0
NzhhZjVkOWY3ZTU5ZWE3YTQxOGE4NjdiYTdiNi4uOGIyYmNlNGNkOWUyMjEzMGQ4ODU4ZDBjMGEz
Y2Q0MDVlYWE4MzE5ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdJbWFnZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5k
ZXJTVkdJbWFnZS5jcHAKQEAgLTI0MywxOSArMjQzLDE0IEBAIHZvaWQgUmVuZGVyU1ZHSW1hZ2U6
OmltYWdlQ2hhbmdlZChXcmFwcGVkSW1hZ2VQdHIsIGNvbnN0IEludFJlY3QqKQogICAgIC8vIFRo
aXMgZW1wdHkgaW1hZ2UgbWF5IGJlIGNhY2hlZCBieSBTVkcgcmVzb3VyY2VzIHdoaWNoIG11c3Qg
YmUgaW52YWxpZGF0ZWQuCiAgICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0Nh
Y2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcykpCiAgICAgICAgIHJlc291cmNl
cy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKLQotICAgIC8vIEV2ZW50dWFsbHkgbm90
aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hhbmdlZC4KLSAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCp0aGlz
LCBmYWxzZSk7Ci0KKyAgICAKICAgICAvLyBVcGRhdGUgdGhlIFNWR0ltYWdlQ2FjaGUgc2l6ZUFu
ZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdlIGxvYWRpbmcgZmluaXNoZWQgYWZ0ZXIgbGF5b3V0
LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0ODkp
CiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwotICAgIGlmICh1cGRhdGVJ
bWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNldE5lZWRzTGF5b3V0KCk7CiAKICAgICBpbnZhbGlk
YXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICByZXBhaW50KCk7CisgICAgaW1hZ2VFbGVt
ZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lk
IFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJl
Y3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJj
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNw
cAppbmRleCA5ZmQzM2YzYzBiOTFmNzE0NTZiYTI1YTJlZmQwNmRkMDJkMzlhNmFkLi40MDVmYzQ3
YTRmYWZmYzAzMDQ3ZjZjMGUzYWEwZWExNzdkMGVjNWZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApAQCAtMTU2LDE2ICsxNTYs
NyBAQCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIFJlbmRlclNWR1Jlc291cmNlOjpzaGFy
ZWRTb2xpZFBhaW50aW5nUmVzb3VyY2UoKQogCiBzdGF0aWMgdm9pZCByZW1vdmVGcm9tQ2FjaGVB
bmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBib29sIG5l
ZWRzTGF5b3V0KQogewotICAgIGlmIChhdXRvKiByZXNvdXJjZXMgPSBTVkdSZXNvdXJjZXNDYWNo
ZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7Ci0gICAgICAgIGlmIChS
ZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gcmVzb3VyY2VzLT5maWx0ZXIoKSkKLSAg
ICAgICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKLQotICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9IHJlc291cmNlcy0+bWFz
a2VyKCkpCi0gICAgICAgICAgICBtYXNrZXItPnJlbW92ZUNsaWVudEZyb21DYWNoZShyZW5kZXJl
cik7Ci0KLSAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBlciogY2xpcHBlciA9IHJl
c291cmNlcy0+Y2xpcHBlcigpKQotICAgICAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJv
bUNhY2hlKHJlbmRlcmVyKTsKLSAgICB9CisgICAgU1ZHUmVzb3VyY2VzQ2FjaGU6OnJlbW92ZVJl
bmRlcmVyRnJvbVJlc291cmNlcyhyZW5kZXJlcik7CiAKICAgICBpZiAoIWlzPFNWR0VsZW1lbnQ+
KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwIGIvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKaW5kZXggYWQ5ZTIyNDJm
ZTlkZmNjYzBhNjRlNDVjYTMyM2M3YzQ1ZDlhMTA1Ni4uNGJlMGRmNDdjMmUyNzQ4ZTQwODVlNDRk
NTU2NWFlOGU4NmFkNGI2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2
Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE2OSw2ICsxNjksMjIgQEAgdm9pZCBTVkdSZXNv
dXJjZXNDYWNoZTo6cmVzb3VyY2VEZXN0cm95ZWQoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXIm
IHJlc291cmNlKQogICAgIH0KIH0KIAordm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVu
ZGVyZXJGcm9tUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyKQoreworICAgIGF1dG8q
IHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJl
cihyZW5kZXJlcik7CisgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAgIHJldHVybjsKKworICAg
IGlmIChhdXRvIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCkpCisgICAgICAgIGZpbHRlci0+
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIG1hc2tlciA9
IHJlc291cmNlcy0+bWFza2VyKCkpCisgICAgICAgIG1hc2tlci0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIGNsaXBwZXIgPSByZXNvdXJjZXMtPmNsaXBw
ZXIoKSkKKyAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsK
K30KKwogU1ZHUmVzb3VyY2VzQ2FjaGU6OlNldFN0eWxlRm9yU2NvcGU6OlNldFN0eWxlRm9yU2Nv
cGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0eWxlJiBzY29wZWRTdHls
ZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogICAgIDogbV9yZW5kZXJlcihyZW5kZXJl
cikKICAgICAsIG1fc2NvcGVkU3R5bGUoc2NvcGVkU3R5bGUpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXggNThjOTE0NzRkYmIwMzVl
YjM1ZDNhYzY3MTdiZjRmZmRkMTg1MmJhZC4uN2I2YmM5ZDJkYjAzNGQyYmRlMmMxNTA0MjUyOTNi
NzNhMTgwYTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdS
ZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVz
b3VyY2VzQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZy
b20gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OndpbGxCZURlc3Ryb3llZCgpLgogICAgIHN0
YXRpYyB2b2lkIHJlc291cmNlRGVzdHJveWVkKFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJik7
CiAKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMoUmVuZGVyRWxl
bWVudCYpOworCiAgICAgY2xhc3MgU2V0U3R5bGVGb3JTY29wZSB7CiAgICAgICAgIFdURl9NQUtF
X05PTkNPUFlBQkxFKFNldFN0eWxlRm9yU2NvcGUpOwogICAgIHB1YmxpYzoKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3Bw
CmluZGV4IDhjMmJjNGVmNGM0OTcwMzE5MDAyMThiZDA2Zjc1ZGE5N2M4NWQxMTQuLjg1Mzk2ZTYx
Y2M1MDM5OTA0NTJiMjNlYTViODVkYWJmNzFhODM4ZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNDYs
NiArNDYsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5o
IgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1
cmVzLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIu
aCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRNYW5pcHVs
YXRpb25Db250cm9sbGVyLmgiCkBAIC0xOTMsNiArMTk0LDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBk
YXRlcjo6dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICBpZiAo
ZWxlbWVudFVwZGF0ZXMpCiAgICAgICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVu
dCwgKmVsZW1lbnRVcGRhdGVzKTsKIAorICAgICAgICBpZiAoaXM8U1ZHRWxlbWVudD4oZWxlbWVu
dCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50KS5pbnZhbGlkYXRl
UGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpOworCiAgICAgICAgIHN0b3JlUHJldmlvdXNSZW5k
ZXJlcihlbGVtZW50KTsKIAogICAgICAgICBib29sIG1heUhhdmVSZW5kZXJlZERlc2NlbmRhbnRz
ID0gZWxlbWVudC5yZW5kZXJlcigpIHx8IChlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpICYm
IHNob3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVu
dCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNw
cAppbmRleCAzNzdkNzlhMGQzMWUwYWZiNWJjOGQ4MmU0ZmQwZTYxMjZkY2QzZDhjLi42YzVhZTU4
MGM3N2ZmMzAxMzllYTlkZmRhNGVjNTY4MWU4MWZmNTY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTI0OCwxMSArMjQ4LDE0IEBAIHZv
aWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAgICBp
ZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJFbGVt
ZW50KiByZW5kZXJlciA9IHRhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgcmVu
ZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKLSAgICB9Ci0KKyAgICBhdXRvIGludmFsaWRhdGUgPSBbXShTVkdFbGVtZW50JiBlbGVtZW50
KSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIGVs
ZW1lbnQuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgIH07Cisg
ICAgCisgICAgaW52YWxpZGF0ZSgqdGFyZ2V0RWxlbWVudCk7CisgICAgCiAgICAgQWZmaW5lVHJh
bnNmb3JtKiB0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSB0YXJnZXRFbGVtZW50LT5zdXBw
bGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICBpZiAoIXRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9y
bSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjYzLDEwICsyNjYsNyBAQCB2b2lkIFNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNm
b3JtIHx8ICp0cmFuc2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAg
ICAgICAgIGNvbnRpbnVlOwogICAgICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRh
bFRyYW5zZm9ybTsKLSAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFu
Y2UtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9y
bVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAg
ICAgIGludmFsaWRhdGUoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NpcmNsZUVsZW1lbnQuY3BwCmluZGV4IGNkODFkMzk4Y2U1MzM0ZWNiOTg4ZjZjZWI0MWIyMmUy
NjY2MjQ4MjAuLjE2NjlhYWExMjhmZTQxYTg0MTI1MmFmZjUwOTU3MTc3YzAzZDYwMmUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTY3LDggKzY3LDkgQEAgdm9p
ZCBTVkdDaXJjbGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tU3RyaW4KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJU
KFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVz
ZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1
YjEzMDM1NWY3OTk5NGIxMTgzYzUzZjkyY2VkNjliLi4wZTYwNDNmZjJkYzI1YTFmMTM3YjdjYzM5
MjE2MjJkMDhhOWE1MmRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBh
dGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50
LmNwcApAQCAtNjYsOSArNjYsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAgICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRleCAw
Y2Q0ZmQ0MWU1M2FkMTU4MjgzMjhlM2IxM2Y4MmVlNjA2NWUyZDlkLi44ZGRjOGRiZDdlMmQ0MTVm
YWNjODM4MWEyMDgwZjVjZGVhNjg4OTMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTkyLDcg
KzkyLDcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW0KIHsKICAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmlt
aXRpdmVQYXJlbnQodGhpcyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKaW5kZXggYmE1NDI2MDZiYjA5YmE2OTg4NzNkYmQ3YWUwOGExM2UyMmFhZmRiZi4uOGQy
MTExNjQ4MmVmZmRhN2E3MjFiZGI4ZDJkNTFjYjA3NzM5MjNhNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcApAQCAtNTg1LDcgKzU4NSw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJv
cGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQogICAgIC8vIFNWR0xlbmd0aExpc3Qg
YW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgogICAgIHByb3BlcnR5LT5zZXREaXJ0eSgpOwogCi0gICAg
aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNB
cmVEaXJ0eSgpOwogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQocHJvcGVydHlSZWdpc3RyeSgpLnBy
b3BlcnR5QXR0cmlidXRlTmFtZSgqcHJvcGVydHkpKTsKIH0KIApAQCAtNjAxLDcgKzYwMSw3IEBA
IHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0
eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICBlbHNlCiAgICAgICAgIHNldFN5bmNocm9uaXplZExh
enlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQcm9wZXJ0eS5iYXNlVmFsQXNTdHJp
bmcoKSk7CiAKLSAgICBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOworICAgIHNldEFuaW1hdGVk
U1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChhdHRyaWJ1
dGVOYW1lKTsKIH0KIApAQCAtNjM0LDcgKzYzNCw3IEBAIFJlZlB0cjxTVkdBdHRyaWJ1dGVBbmlt
YXRvcj4gU1ZHRWxlbWVudDo6Y3JlYXRlQW5pbWF0b3IoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
CiAgICAgICAgIGluc3RhbmNlLT5wcm9wZXJ0eVJlZ2lzdHJ5KCkuYXBwZW5kQW5pbWF0ZWRJbnN0
YW5jZShhdHRyaWJ1dGVOYW1lLCAqYW5pbWF0b3IpOwogICAgIHJldHVybiBhbmltYXRvcjsKIH0K
LSAgICAKKwogdm9pZCBTVkdFbGVtZW50OjphbmltYXRvcldpbGxCZURlbGV0ZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSkKIHsKICAgICBwcm9wZXJ0eUFuaW1hdG9yRmFjdG9y
eSgpLmFuaW1hdG9yV2lsbEJlRGVsZXRlZChhdHRyaWJ1dGVOYW1lKTsKQEAgLTg1NSw2ICs4NTUs
MjkgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNl
bnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCB2YWx1ZSk7CiB9CiAKK3ZvaWQg
U1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCkKK3sKKyAgICBl
bnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSh0cnVlKTsKKyAgICAvLyBUcmlnZ2VyIHN0eWxlIHJlY2FsY3VsYXRpb24gZm9yICJlbGVtZW50
cyBhcyByZXNvdXJjZSIgKGUuZy4gcmVmZXJlbmNlZCBieSBmZUltYWdlKS4KKyAgICBpbnZhbGlk
YXRlU3R5bGUoKTsKK30KKwordm9pZCBTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBtX05lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24gPSB0cnVlOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCit2b2lkIFNWR0VsZW1l
bnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIW1f
TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbikKKyAgICAgICAgcmV0dXJuOworICAg
IAorICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOworICAgIG1fTmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbiA9
IGZhbHNlOworfQorCiB2b2lkIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQgPSBj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAppbmRleCA3MDRhZTgwYTk3YjFkNGE0MzljYTJlYzAxNzFhZTMwNjhlZTcyZGQ4Li5l
MzJmMzIwY2Q4MzU5YjA4MjRmZDhhMjU0MmRmNmQ4MjBmNjM3ZTAwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKQEAgLTgxLDEzICs4MSwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEFmZmlu
ZVRyYW5zZm9ybSogc3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gbnVsbHB0cjsgfQog
Ci0gICAgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpIHsgZW5zdXJlVW5pcXVlRWxlbWVu
dERhdGEoKS5zZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSh0cnVlKTsgfQotICAgIHZv
aWQgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCkKLSAgICB7Ci0gICAgICAg
IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0Rp
cnR5KHRydWUpOwotICAgICAgICAvLyBUcmlnZ2VyIHN0eWxlIHJlY2FsY3VsYXRpb24gZm9yICJl
bGVtZW50cyBhcyByZXNvdXJjZSIgKGUuZy4gcmVmZXJlbmNlZCBieSBmZUltYWdlKS4KLSAgICAg
ICAgaW52YWxpZGF0ZVN0eWxlKCk7Ci0gICAgfQorICAgIHZvaWQgc2V0QW5pbWF0ZWRTVkdBdHRy
aWJ1dGVzQXJlRGlydHkoKSB7IGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0QW5pbWF0ZWRT
VkdBdHRyaWJ1dGVzQXJlRGlydHkodHJ1ZSk7IH0KKyAgICB2b2lkIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOworICAgIHZvaWQgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOworICAgIHZvaWQgaW52YWxpZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVk
ZWQoKTsKIAogICAgIC8vIFRoZSBpbnN0YW5jZXMgb2YgYW4gZWxlbWVudCBhcmUgY2xvbmVzIG1h
ZGUgaW4gc2hhZG93IHRyZWVzIHRvIGltcGxlbWVudCA8dXNlPi4KICAgICBjb25zdCBXZWFrSGFz
aFNldDxTVkdFbGVtZW50PiYgaW5zdGFuY2VzKCkgY29uc3Q7CkBAIC0xOTcsNiArMTk0LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgaW52YWxpZGF0ZUluc3RhbmNlcygpOwogCisgICAgYm9vbCBt
X05lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24geyBmYWxzZSB9OworCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0VsZW1lbnRSYXJlRGF0YT4gbV9zdmdSYXJlRGF0YTsKIAogICAgIFdl
YWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKaW5kZXggMzQ3NDhmMzhlNzZlMzU0
YzZmNzM2OGY3ZDM2M2YzYWZmYTk5NzQzYS4uMDA0YmEzNmVjYjE5MGNhYTg3MzM1NTFkMDc4MDgy
MThlZWI0ZTdhOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCkBA
IC03MCw4ICs3MCw5IEBAIHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiB2b2lkIFNWR0VsbGlwc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgeworICAgICAgICBBU1NFUlQoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0
dHJpYnV0ZShhdHRyTmFtZSkpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxl
KCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVC
bGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNw
cAppbmRleCA3YmNmMDQxODAwZjc5OWYxMTc0Y2ZlMDRiODIyZDZkMDY0MzFmNjg2Li5iM2IwODBm
NjM5MThjZmE0OTgwMmYyMDdjNzZjMGY3MjRkNzA0ODZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTg1LDE1ICs4NSwxMiBAQCBib29sIFNWR0ZFQmxlbmRF
bGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsIGNv
bnN0IFF1YQogCiB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6bW9kZUF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwot
ICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpIHsKLSAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsK
KyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluMkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCAwNTI0ODU3
OGMyNzRjOGZhMmIzZTFmMjQ0ZTQzNjc4NjhmNDJiYTljLi5mOWQ4YjE1ZWUwMmY4NWFjZDcxNjAw
ODBhM2NiNmFmM2MyNDAxYWM5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9y
TWF0cml4RWxlbWVudC5jcHAKQEAgLTg1LDE1ICs4NSwxMiBAQCBib29sIFNWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3Qs
IGNvbgogCiB2b2lkIFNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVlc0F0dHIpIHsK
KyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0g
ICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRh
dGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVs
c2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAppbmRleCBlODkyNjdjZTdkMzQxNDZkMmE2NWQ2
ZjAxZGNlNWRlZjQ5YzgyZjc4Li5kYzhhM2I0N2FiNDQ3YWE4MTRkYjg2Mjc5MTEzY2IwNWIzYTEy
NTY1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2Zl
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudC5jcHAKQEAgLTYyLDYgKzYyLDE3IEBAIHZvaWQgU1ZHRkVDb21wb25lbnRUcmFu
c2ZlckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwYXJzZUF0dHJpYnV0
ZShuYW1lLCB2YWx1ZSk7CiB9CiAKK3ZvaWQgU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCit7Cisg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Cisg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBp
bnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKKyAgICAgICAgcmV0dXJuOwor
ICAgIH0KKworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Cit9CisKIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVyKiBmaWx0ZXJC
dWlsZGVyLCBGaWx0ZXImIGZpbHRlcikgY29uc3QKIHsKICAgICBhdXRvIGlucHV0MSA9IGZpbHRl
ckJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoaW4xKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCBiYjU4OTM0N2Q4ODI2ZGZi
MzYwOWVkYWM2ZThiOTkzYTRkZDU0ODYzLi42YjdmZWFiY2YwYjk2MGQ5ZDkyMWEzMGYxOTU2NzAw
M2MwYjU1Mjc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBwcml2YXRlOgogICAgIHVzaW5nIFBy
b3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb21wb25lbnRU
cmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcz47CiAg
ICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNvbnN0IGZp
bmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklYTUU6IHN2Z0F0
dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9pZCBzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAogICAgIFJl
ZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkKFNWR0ZpbHRlckJ1aWxkZXIqLCBGaWx0ZXImKSBjb25z
dCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9z
aXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcAppbmRleCAzY2E5OWI4NzU3MDhiYmQ4YTZiYWY2NTNkYzA2ZmUyMDVhYzk4MjM1Li44NGFj
ODQzNzIzODhhYzcyNGI3Y2MwOGVjNmMzNWMwMjIwYTMyNmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE2LDE1ICsxMTYsMTIgQEAgYm9v
bCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCwgY29uc3QKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmsxQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjprM0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0cikgeworICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAg
ICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAg
ICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IGY3NTA1ODE1ZGVjYWJiNGVhMzRiNDM1
YjQ3ZWE1YTgwYzZhMjZkZjEuLjI0YWE3MmRjZGZhMmE1MWFlOWMxMTgyNWQ5NDdiMzJhMThjMTQy
MGUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcApAQCAtMTY0LDI3ICsxNjQsMjQgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxl
bWVudDo6c2V0T3JkZXIoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVyWC0+c2V0QmFz
ZVZhbEludGVybmFsKHgpOwogICAgIG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0g
ICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVsVW5p
dExlbmd0aChmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5zZXRCYXNlVmFs
SW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6dGFyZ2V0WUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5n
dGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgeworICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9
Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxNYXRyaXhB
dHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwCmluZGV4IDc1MWFkYWMxMjhhOGIzZjhmODAxNzkzMDc1ODIzYmVlY2ZkOTRiY2UuLjk1MDVj
NDBlNGQwZGVhNGIzMjAxYTBiYmFmOTBmZmU4MGJlZGU1YjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjcsMTUgKzEy
NywxMiBAQCBib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjpsaWdodGluZ19jb2xvckF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IDBj
NWU4MjViYzgyNTYwZjM2YTI2OWVhNmQ3MjJkZmQwNTE3M2Q4YzIuLjcyOWE2ZDQzODE4OWUxZGU0
NzRmMjM5YTZiZDNjYTVkZDMxYzhjMDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMDAsMTUgKzEwMCwxMiBAQCBib29s
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c2NhbGVBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7Ci0gICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7
CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDIyYmNlMWQz
MzMxN2M5NTcxZmU1ZDc5ZjRiMzI2YTg5YmZjNWI2ODEuLmUwZDYwZDNjMjBiMmRkNTRkMDY2NGNl
ZmUzZDc5ZmM5M2I0MjFmZjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURy
b3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudC5jcHAKQEAgLTU1LDcgKzU1LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlh
dGlvblgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJh
c2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlKQpAQCAtOTAsNyArOTAsNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCA3YTk5ODIyNGM5MjE5NTU1MjQ0
YTg2OWNhNzhhODMwZDU2M2M1OTlkLi45ODM4YWRjYjdmMWU4N2Q0NWQ4YWQ3NmIyYTA5NGY1ZDdj
YzJlODhjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZpYXRpb25Y
LT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNlVmFs
SW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJp
bmcmIHZhbHVlKQpAQCAtODgsNyArODgsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogewog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
aW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJ
bWFnZUVsZW1lbnQuY3BwCmluZGV4IDE4Zjc4MDlmYWUwMjkyNDc0YmZmMDVmYjE0MDE3YzJkZTY2
MWQzNDYuLmMyNTY5MGUzYjAwYWE2ZjA1MTI5OTg1MmZjNzIyNzRlNjNiNWYwZTggMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTA4LDcgKzEwOCw3IEBAIHZv
aWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9IGVsc2Ug
aWYgKGlzPFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkpCiAgICAgICAgIGRvd25jYXN0PFNW
R0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50KCp0aGlzKTsK
IAotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTI0
LDkgKzEyNCw5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0
cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2MiwxNiArMTYyLDEx
IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJlc291cmNl
JiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIocGFyZW50RWxlbWVu
dCgpKTsKLQorICAgIGF1dG8gcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFy
ZW50IHx8ICFwYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5y
ZW5kZXJlcigpOwotICAgIGlmICghcGFyZW50UmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnBhcmVudFJlbmRlcmVyKTsKKyAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFy
ZW50KS5zZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlZlB0
cjxGaWx0ZXJFZmZlY3Q+IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZChTVkdGaWx0ZXJCdWlsZGVy
KiwgRmlsdGVyJiBmaWx0ZXIpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAppbmRleCAzZDEzZDE2ZTEwN2ZlNDRjZjIwYjU3OWE1ZjE3Njk1MmQ4NTg2YTgzLi5k
NzAyMDFjOGI4NWM5MjA0YjdhZTlmNjg4Y2ZkYjBkMmY2MjIyMjlhIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTE1MCwxNSArMTUwLDkgQEAgdm9pZCBTVkdG
RUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2UpOwotCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6
UGFyc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgYXV0byBwYXJlbnQgPSBtYWtlUmVmUHRyKHBh
cmVudE5vZGUoKSk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVy
ZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOworICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRo
aXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQu
Y3BwCmluZGV4IDRiZTkwNzgyNmRiYTA2MTkzNjg0ZTBhNGRhZjViYTJiNWZhOTRhZmEuLjkxYTZj
MTQwNDFkMTU3ZDg2ZjZhYmZhNjI2NWMxOWQ1M2MzYWJjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgU1ZH
RkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW1lLCBjb25zdCBBdG9tCiAKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFy
ZW50KHRoaXMpOworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlz
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4IGQ2ZmI5NWM4ZTM3NzZlNmQyMDkzYmVhY2UzNWUy
ZWQxNzk1ZDMyMWIuLjI4NTg4YzRlNTIzZTczOWVjNTNjYTg4NjlkZTg4ZWI2MGY1MGQxZTQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTUz
LDcgKzUzLDcgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQg
eCwgZmxvYXQgeSkKIHsKICAgICBtX3JhZGl1c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAg
ICBtX3JhZGl1c1ktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7Cisg
ICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtOTksMTUgKzk5LDEyIEBAIGJvb2wg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCogZWZmZWN0LCBjb25zCiAKIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6cmFkaXVzQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggMDM4MjY4Yjg5YjJmMTlmOWJlNTY4NzM5ZDEy
MzAzNTQxMDBhNWVlNy4uNTA4ZmMxYjU4ZmExYmMzYjU1ZjhiNWUzYWNhNWE5MGU4NDM3NDdhOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTc0LDcgKzc0
LDcgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGlu
Z0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwCmluZGV4IDI2NGQxOTdlZjM2NTZiYmZiODQxYjY3NjA0M2I2MDMxZDFjZWNkODEu
LmU4YjlmZGY0MTY5MThmYTRiNWRkZmMwNDJhYzYzM2FlZTYxZWEyMmUgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEz
NiwxNSArMTM2LDEyIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0CiAKIHZvaWQgU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1p
dGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggMzliZGNjNzczNTk2
NjUwMzZlMWFlNzQ3NjEyZWFkNmY5YWMzNzM3MC4uMGVlMDRkYTkzZjlmZmU0Nzg5ODYxMzVjNDBk
ZWY2ZTc0MjI4MmNlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApA
QCAtNjEsOSArNjEsOSBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiB2b2lkIFNWR0ZFVGls
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRh
dGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVu
dC5jcHAKaW5kZXggODEzYmNiZDA4MjBjYWM2NzdhNzk3ZjI3YmNjZThjZTEwOTEyYmM0Ny4uNTU2
N2QxNDQ5NjgzY2UyYjExNWExNjk2ZmQ4ODRjMGZiMGIwZWYyYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAtOTEsMTYgKzkxLDE3IEBAIHZvaWQgU1ZHRmlsdGVy
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0cmluCiAKIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQ
cmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAg
ICAgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBl
bHNlCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CiAgICAgfQogCi0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
LSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCgpOwotICAgICAgICByZXR1cm47CisgICAgaWYg
KFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBTVkdFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKaW5k
ZXggZjJhNmVlMDhkYjdhMGQyZGYzYmQ4Y2M1Mzc1ZDMxNzk4YjUxMjFlMi4uN2YzZjkxYjJlYjJj
NTFiMzY1YjIyYTU4MDFlZTlmMzFlMTZiODQ5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAKQEAg
LTc3LDggKzc3LDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmEKIHsKICAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsK
LSAgICAgICAgcmV0dXJuOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiAgICAgfQogCiAgICAgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CkBAIC05MCw3ICs4OSw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoCiAKICAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6c2V0U3RhbmRhcmRBdHRyaWJ1dGVzKEZpbHRlckVmZmVjdCogZmlsdGVyRWZm
ZWN0KSBjb25zdApAQCAtMTIyLDIxICsxMjEsMTIgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMK
ICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBh
cmVudChTVkdFbGVtZW50KiBlbGVtZW50KQordm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZl
UGFyZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBhdXRvIHBhcmVudCA9IG1ha2VSZWZQdHIoZWxlbWVudC0+cGFyZW50
Tm9kZSgpKTsKLQotICAgIGlmICghcGFyZW50KQorICAgIGF1dG8gcGFyZW50ID0gZWxlbWVudC5w
YXJlbnROb2RlKCk7CisgICAgaWYgKCFpczxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM+KHBhcmVudCkpCiAgICAgICAgIHJldHVybjsKLQotICAgIFJlbmRlckVsZW1lbnQqIHJl
bmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRl
cmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgIHJldHVybjsKLQot
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNhc3Q8U1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpLT5zZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCBjOThiMTNlZDk2
Mjc2YWY5ZTE0ZjY0MjgxMWE2ZmQ3NDY3NzJhY2E3Li5hNDhkYTIyMGIyYjJlMWQ3NDBhY2FjNDU2
MTk1YmFlMDgzZTJlY2M5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC02Myw3ICs2Myw2IEBAIHBy
b3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdl
Jikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIHByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAK
IHByaXZhdGU6CkBAIC04MiwxMyArODEsNyBAQCBwcml2YXRlOgogICAgIFJlZjxTVkdBbmltYXRl
ZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CiB9
OwogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwot
Ci1pbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFs
aWRhdGUoKQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkp
Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0KK3ZvaWQgaW52YWxpZGF0ZUZp
bHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Jik7CiAKIGlubGluZSB2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCAzYTUxNGNiMzg0MWM0MjhlNjJkZTEy
YTY1MWJjZDYwZjVlNWVlNjNkLi40MjdjNjFiNGI4OGE3MjA1ZWM1YTUyNjg3ZWU3OWNmNzJmYTRl
N2MwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5j
cHAKQEAgLTczLDE1ICs3MywxNCBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdAogCiB2b2lkIFNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhB
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0gICAgICAgIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAg
fQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRp
b24oKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0
aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisgICAgICAgICAgICBz
ZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZSB7CisgICAg
ICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICAgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICB9CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
ZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVu
dC5jcHAKaW5kZXggZDVlZTBjODg4MzgzMDlmODM3YzJiNTcyYmViMGM5Y2U2MjQwMjQ4Mi4uNzEw
ZDdiNTBiNmZlMWNlZGU5NmRhN2U0M2ZjNTc2OTAwZTM4ODZmMyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTExMiw5ICsxMTIsNyBAQCB2b2lkIFNWR0dl
b21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRy
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHNldE5lZWRzUGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBTVkdHcmFwaGljc0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
R3JhZGllbnRFbGVtZW50LmNwcAppbmRleCAzZGEwZjMzMDk3NTJhZmYzMjhjYjgwYmRjOGY0MzY5
ZmNkYjAxMGU2Li42YzQ4ODBiYmViNTg3OTk0YmY5ZDE5MTgyYjczYzBmNmVlNGZiMTFmIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNzcsMTAgKzc3LDE1
IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyCiAKIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdV
UklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFs
aWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IDU2N2M0MDU2Mzg2OTc0YjFhZjkyYjM5OGY3YzQ2
MTk5OTc5ZWMxM2UuLjdiYzJlYzE3MDY1MzQ3YWE0MGNmZjU3YTM1MTg4ZGIzZjZlZjg4ZjggMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBAIC0xNDYsMTQgKzE0
NiwxMiBAQCB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogCiB2b2lkIFNWR0dyYXBoaWNzRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpIHsKKyAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAg
QVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Ci0K
KyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCmlu
ZGV4IDE1YWVjMmIwZDdkOTAzZTc2OTlkZjgwZDJlYjY1ZTk2ZDYzZmExNDguLjFkNjNmYWE0YTIz
YmQwOGZlMWI5NTdkMTljYzA3YmRiOTM2Y2Q1MGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwCkBAIC05NywyMiArOTcsMjIgQEAgdm9pZCBTVkdJbWFnZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAg
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKICAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKGRvd25jYXN0
PFJlbmRlclNWR0ltYWdlPigqcmVuZGVyZXIpLnVwZGF0ZUltYWdlVmlld3BvcnQoKSkKLSAgICAg
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICBpZiAoIWRvd25jYXN0PFJl
bmRlclNWR0ltYWdlPigqcmVuZGVyZXIpLnVwZGF0ZUltYWdlVmlld3BvcnQoKSkKKyAgICAgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjpoZWlnaHRBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsK
KyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCmluZGV4IGE0MmVhZTU0YTBlMGYxY2Y3ZjEyNTM3M2Q3
NWUwYWI1YWMyYWVmMmMuLjE5M2JjY2QzNWNhMGZiOWU5NzJhNTAwMDNjNGFhNDIwZDI0YmM2YTMg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcApAQCAtNzEsMTIgKzcxLDEwIEBA
IHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwot
Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1NoYXBlPih0
aGlzLT5yZW5kZXJlcigpKSkgeworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZW5kZXJl
ci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwot
ICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Cisg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcAppbmRleCBiYzJhMTg5MGIyNDRjYTU2M2Y1ZjRmNTAwODY0NmUyMTNlNjRi
ZDc5Li4yMDk1ZTNkYTA1NTczZDc4ODlkY2FiNzE0MmQyZWJkNmMwMTdhZGQxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcApAQCAtODIsOCAr
ODIsNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5m
b3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMGI0M2JiODQy
ZTVlMzYyYWFlZjg3OWZkNjA2M2FhNTc2ZWFlMjFhYi4uMjlkMmM1Yjk1MjdkMmEzNjMzYjYwNmZj
NjQxNWE3YjkwODM0ZTUwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNw
cApAQCAtOTgsMTQgKzk4LDEzIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDQ4
ZmQzN2JmM2Q2MmExODc3OTEzODg1MTgwMmM0YThjOTNlYTdmN2QuLmNhY2I4ZDg0NjIxNTUyOTVh
YTA4ODUxMWRmMWVlMmMxZTg2OGRmNDMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50
LmNwcApAQCAtOTcsMTUgKzk3LDEyIEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAKIHZvaWQg
U1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhB
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5
bGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwor
ICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShh
dHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHko
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcAppbmRleCAxMDc2NjE5YmVhMTA3NGExNzVmZWU2YzdiMDVjNmI1Zjg5
NTJkMTIxLi4yMzcxMjJlZjk4MGY4YmRlZTE1YTdjN2FmODJjYWZiMzM5NGZiYzQyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTY0LDE1ICs2NCwxMiBAQCB2b2lkIFNW
R1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6ZEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOwotCi0g
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMt
PnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJl
bmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAg
ICAgfQotCisgICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOworICAgICAgICBz
ZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IDM5
NzY5MjQ4NmUyMDI3NWNkMDU4YzQzMWI3YWY2MGJjZDk2YjNhY2IuLmRiOThhMDFiNzNhZDU1YzEw
NzdhY2Q4N2RlYzljZTcyM2E1Mzc4ZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcApAQCAtMTEwLDE1ICsxMTAsMTggQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkK
IAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpOworICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCgpOworICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
KyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAg
IHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKaW5kZXggZWExZmUw
OTJhMTYyMzcxM2M5MzgzM2E1ZDk1N2FkY2UxZTYzOTEwMC4uYTYyOTY2MjVlZDk4YWQ5MDZkMzlm
YWYzYTE4OTYwZjg5ZWE5NTg2YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bv
bHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3Bw
CkBAIC01NSwxMiArNTUsMTIgQEAgdm9pZCBTVkdQb2x5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9pZCBTVkdQ
b2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpIHsKLSAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+
cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0
dHIpOworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAg
ICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+
cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgp
OwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cAppbmRleCA3OGZhZmI1MWExYWE0NmI1MjIwYTU3NWZhZWY0ZThmMDQ5NWNkZjZmLi5jNWMxNjJl
ZGQ0MTRjYmE1OTg5OTRhNzZmMGNkZDc3MzM2NTFkZDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcApAQCAtODgsOCArODgsNyBAQCB2b2lk
IFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
LSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRleCBjYThkYmEyZjZmMjc3NTVjZmQwY2NlNzJk
NjUwYmQ2MmNjM2QyNTY4Li5kMjA4OWIxNjA2YTkwOWU0ZTkxMGQ3NzE1NTQ3YWQzMzdkNmE1YzEx
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKQEAgLTc3LDggKzc3LDkgQEAg
dm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VS
VChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSk7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICAgICAgc2V0UHJl
c2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5MGMxY2ZmNDVkMTQzMjgxNjIw
MTEzNmIxY2U4ZjU5YzViOGQ2NDhmLi4yYWViNDJkYWRmODk2MGM1MmM2NmQ5ODZhZTFmYzg2OTI3
YWI5NThlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCkBAIC0yMDcsNyArMjA3
LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0
eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogCiAg
ICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxSZW5kZXJTVkdS
b290PigqcmVuZGVyZXIpLmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1l
bnQoKSkKQEAgLTIxNywxMSArMjE3LDkgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlm
IChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5z
ZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwot
ICAgICAgICB9Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogICAgIH0KIAogICAgIFNWR0dyYXBoaWNzRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CkBAIC01NjksNyArNTY3LDYgQEAgU1ZHU1ZHRWxl
bWVudCogU1ZHU1ZHRWxlbWVudDo6ZmluZFJvb3RBbmNob3IoU3RyaW5nVmlldyBmcmFnbWVudElk
ZW50aWZpZXIpIGNvbnMKIAogYm9vbCBTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KFN0
cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogewotICAgIGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpOwogICAgIGF1dG8gdmlldyA9IG1fdmlld1NwZWM7CiAgICAgaWYgKHZpZXcp
CiAgICAgICAgIHZpZXctPnJlc2V0KCk7CkBAIC01NzksOCArNTc2LDggQEAgYm9vbCBTVkdTVkdF
bGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQog
CiAgICAgaWYgKGZyYWdtZW50SWRlbnRpZmllci5zdGFydHNXaXRoKCJ4cG9pbnRlcigiKSkgewog
ICAgICAgICAvLyBGSVhNRTogWFBvaW50ZXIgcmVmZXJlbmNlcyBhcmUgaWdub3JlZCAoaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE3NDkxKQotICAgICAgICBpZiAocmVu
ZGVyZXIgJiYgaGFkVXNlQ3VycmVudFZpZXcpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgIGlmIChoYWRVc2VDdXJyZW50VmlldykKKyAgICAgICAgICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAg
IH0KIApAQCAtNTkxLDggKzU4OCw4IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFn
bWVudChTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcikKICAgICAgICAgICAgIG1fdXNlQ3Vy
cmVudFZpZXcgPSB0cnVlOwogICAgICAgICBlbHNlCiAgICAgICAgICAgICB2aWV3LT5yZXNldCgp
OwotICAgICAgICBpZiAocmVuZGVyZXIgJiYgKGhhZFVzZUN1cnJlbnRWaWV3IHx8IG1fdXNlQ3Vy
cmVudFZpZXcpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBpZiAoKGhh
ZFVzZUN1cnJlbnRWaWV3IHx8IG1fdXNlQ3VycmVudFZpZXcpKQorICAgICAgICAgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm4gbV91c2VD
dXJyZW50VmlldzsKICAgICB9CiAKQEAgLTYxNiw4ICs2MTMsNyBAQCBib29sIFNWR1NWR0VsZW1l
bnQ6OnNjcm9sbFRvRnJhZ21lbnQoU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXIpCiAgICAg
ICAgICAgICB9CiAKICAgICAgICAgICAgIHJvb3RFbGVtZW50LT5pbmhlcml0Vmlld0F0dHJpYnV0
ZXMoKnZpZXdFbGVtZW50KTsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHJvb3RF
bGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAg
ICAgICAgICAgIHJvb3RFbGVtZW50LT5zZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgICAgICAgICBtX2N1cnJlbnRWaWV3RnJhZ21lbnRJZGVudGlmaWVyID0gZnJh
Z21lbnRJZGVudGlmaWVyLnRvU3RyaW5nKCk7CiAgICAgICAgICAgICByZXR1cm4gdHJ1ZTsKICAg
ICAgICAgfQpAQCAtNjQ3LDggKzY0Myw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6cmVzZXRTY3Jv
bGxBbmNob3IoKQogICAgIH0KIAogICAgIG1fdXNlQ3VycmVudFZpZXcgPSBmYWxzZTsKLSAgICBp
ZiAocmVuZGVyZXIoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIoKSk7CisgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR1NWR0VsZW1lbnQ6
OmluaGVyaXRWaWV3QXR0cmlidXRlcyhjb25zdCBTVkdWaWV3RWxlbWVudCYgdmlld0VsZW1lbnQp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAppbmRleCAxOTU3MDBlYmY3YmE3NDE5
NDNjMzE3Yzk2ZjUyZWVkNTdlYjI5YTNjLi43YWE3ODZiNzk4ZWI3MWZhMmEzNDViZjBkYTI4ZDIx
MzQ3MjI2MDU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKQEAgLTY0LDEx
ICs2NCwxMCBAQCB2b2lkIFNWR1N0b3BFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1N0b3BFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cikgewotICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOwotICAgICAgICB9CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b2Zm
c2V0QXR0cik7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
UmVmRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmlu
ZGV4IDc2OWFhMWExMmRmZWNiOTVlODZjNjE4OTIwMGMxZDdlYjYyODY2NjAuLjhhMDA1ODkyNzk2
NDM5ZmUwYmNiY2MwMmVlNTI2N2E0ZDc3MjIxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcApAQCAtMTgzLDggKzE4Myw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFNW
R1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGlu
Z1Jlc291cmNlKCk7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IDllOWIyZGNi
OTFiOGJkNDg5NTBlNzM0Y2U0OTBlMmE2ZDVlNDdiYzIuLmM2OGMyMWY3MDIxYWFjNWI3YzBmNTZl
NDhjNjc5ODE1ZWMyMGViNzYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCkBAIC0xNzksMTMgKzE3OSwxMCBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxl
bWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRv
bQogdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRl
eHRMZW5ndGhBdHRyKQogICAgICAgICAgICAgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0
TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAg
fQorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAKaW5kZXggNjU4N2RkNmIwYmFkODRlNmEwNjQ5OWIwMmVmOGZjOTE0ZGNkZjM1Ni4uMTA4
MzgyODVhZDAyZGI4MjJmZDc2ZjU0NzhlMGYzYzQ2MzliZDEzNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTg4LDE5ICs4OCwxNSBAQCB2b2lkIFNWR1Rl
eHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7Ci0KICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIp
CiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotCi0gICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgcmV0dXJuOworICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgfQogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7
Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggOWNhZjAxMjM0YWEw
ODc3YjE3NGE1NmI2MGVmM2E3OWRkNmM0ZWQ0OS4uOTIwYzJjYWEwYTEzMGIyZGY2MDljYjM4MzNh
MjQ3Y2VmYzNkZGYxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRp
b25pbmdFbGVtZW50LmNwcApAQCAtOTgsMTYgKzk4LDEzIEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
CiAgICAgICAgIGlmIChhdHRyTmFtZSAhPSBTVkdOYW1lczo6cm90YXRlQXR0cikKICAgICAgICAg
ICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1
dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byog
dGV4dEFuY2VzdG9yID0gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9y
KCpyZW5kZXJlcikpCi0gICAgICAgICAgICAgICAgdGV4dEFuY2VzdG9yLT5zZXROZWVkc1Bvc2l0
aW9uaW5nVmFsdWVzVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAg
ICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IHJlbmRlcmVyKCkgPyBSZW5k
ZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3IoKnJlbmRlcmVyKCkpIDogbnVs
bHB0cikKKyAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVl
c1VwZGF0ZSgpOwogCisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1l
bnQuY3BwCmluZGV4IGIyYjAyNjM1YzQwNjdhMTBjOWZmYzZiNTQ5ZDE5OThjMDNkYTgxZWUuLjE3
Yzk0MDZlZGMxMjNkMzVmNzA1OWRmYjJhNDUwM2IxZmQ1Y2UwYTYgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE1NSwyMSArMTU1LDIxIEBAIHZvaWQgU1ZHVXNlRWxlbWVu
dDo6dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93
RWxlbWVuCiAKIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKLQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewogICAgICAgICAgICAgLy8gRklYTUU6IEl0
J3MgdW5uZWNlc3NhcmlseSBpbmVmZmljaWVudCB0byB1cGRhdGUgYm90aCB3aWR0aCBhbmQgaGVp
Z2h0IGVhY2ggdGltZSBlaXRoZXIgaXMgY2hhbmdlZC4KICAgICAgICAgICAgIGlmIChhdXRvIHRh
cmdldENsb25lID0gdGhpcy0+dGFyZ2V0Q2xvbmUoKSkKICAgICAgICAgICAgICAgICB0cmFuc2Zl
clNpemVBdHRyaWJ1dGVzVG9UYXJnZXRDbG9uZSgqdGFyZ2V0Q2xvbmUpOwogICAgICAgICB9Ci0g
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CisKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CisgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7
CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVFeHRlcm5hbERvY3VtZW50KCk7CiAgICAgICAgIGlu
dmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Vmlld0VsZW1lbnQuY3BwCmluZGV4IDIyYWJlZTkzOTgyMzEzZjRkODBmZGIxODQzZTY0YzdjOWEw
ODg0YTkuLjhhYjJkYTBlMTM4ZjQ2NTMxOTY5YzY5ZDRkYjI2NjhiODM0ODU4ZTYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcApAQCAtNTMsMTcgKzUzLDEzIEBAIHZvaWQgU1ZH
Vmlld0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgLy8gV2UgaWdub3JlIGNo
YW5nZXMgdG8gU1ZHTmFtZXM6OnZpZXdUYXJnZXRBdHRyLCB3aGljaCBpcyBkZXByZWNhdGVkIGFu
ZCB1bnVzZWQgaW4gV2ViQ29yZS4KLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpCi0gICAgICAgIHJldHVybjsKLQogICAgIGlmIChTVkdGaXRUb1Zp
ZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChtX3Rhcmdl
dEVsZW1lbnQpIHsKLSAgICAgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRy
aWJ1dGVzKCp0aGlzKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IG1fdGFyZ2V0
RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0g
ICAgICAgIH0KLQorICAgICAgICBpZiAoIW1fdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHJl
dHVybjsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5pbmhlcml0Vmlld0F0dHJpYnV0ZXMoKnRo
aXMpOworICAgICAgICAgICAgCisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKm1fdGFyZ2V0RWxlbWVudCk7CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVB
bmltYXRvci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVB
bmltYXRvci5jcHAKaW5kZXggNjk4NDQyNzYwNGE0NjBlZjRhZTE2OWU5M2VkYjAzNjZlYWE0YmI5
MS4uYzU4MTRlZDc0Mjg3MjhhZjFkMGRlNmNlMmQ4MDk3NDk4YjJiOTJlNCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cApAQCAtNDAsNyArNDAsNyBAQCBib29sIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppc0FuaW1hdGVk
U3R5bGVQcm9wZXJ0eUFuaWFtdG9yKGNvbnN0IFNWR0VsZW1lbnQmIHRhcgogdm9pZCBTVkdBdHRy
aWJ1dGVBbmltYXRvcjo6aW52YWxpZGF0ZVN0eWxlKFNWR0VsZW1lbnQmIHRhcmdldEVsZW1lbnQp
CiB7CiAgICAgU1ZHRWxlbWVudDo6SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCh0YXJn
ZXRFbGVtZW50KTsKLSAgICB0YXJnZXRFbGVtZW50LmludmFsaWRhdGVTVkdQcmVzZW50YXRpb25h
bEhpbnRTdHlsZSgpOworICAgIHRhcmdldEVsZW1lbnQuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5
bGVJc0RpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmFwcGx5QW5pbWF0
ZWRTdHlsZVByb3BlcnR5Q2hhbmdlKFNWR0VsZW1lbnQmIGVsZW1lbnQsIENTU1Byb3BlcnR5SUQg
aWQsIGNvbnN0IFN0cmluZyYgdmFsdWUpCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453188</attachid>
            <date>2022-02-25 03:23:42 -0800</date>
            <delta_ts>2022-02-25 04:11:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220225112341.patch</filename>
            <type>text/plain</type>
            <size>70115</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk4MjE4NTU0MjkyNzIx
ODM3YjZjNThmMWVhYTdkZGM4ZWY2ODFlYy4uNzI2NjMyYmE5MDQxMGQ5NjU4ZjE3NjA2M2JhNmIw
ZjhkNzUwZWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMi0wMi0yNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBzZXROZWVkc0xheW91
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdpbmcgdGhlIFNWRyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9t
Q2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjpyZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5j
aG9yKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5
bGUpOgorCiAyMDIyLTAyLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogTGlzdCBpdGVtIG1hcmtlciBub3QgZXhwb3NlZCB3aGVuIG5v
dCBhIGRpcmVjdCBjaGlsZCBvZiBhIGxpc3QgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBlY2YxNzEzMWExYzUyNTkyYTVmNzMw
YTZkMTU5ZjExZDg4YWRmYWE3Li4zZWRlNmZmNGNiM2ZlOGQ3OWExMjBlNDRjMDg1M2JiYzdiNjll
NzliIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtMjQ0LDE5ICsyNDQsMTQgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFu
Z2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgLy8gVGhpcyBlbXB0eSBp
bWFnZSBtYXkgYmUgY2FjaGVkIGJ5IFNWRyByZXNvdXJjZXMgd2hpY2ggbXVzdCBiZSBpbnZhbGlk
YXRlZC4KICAgICBpZiAoYXV0byogcmVzb3VyY2VzID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hl
ZFJlc291cmNlc0ZvclJlbmRlcmVyKCp0aGlzKSkKICAgICAgICAgcmVzb3VyY2VzLT5yZW1vdmVD
bGllbnRGcm9tQ2FjaGUoKnRoaXMpOwotCi0gICAgLy8gRXZlbnR1YWxseSBub3RpZnkgcGFyZW50
IHJlc291cmNlcywgdGhhdCB3ZSd2ZSBjaGFuZ2VkLgotICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnRoaXMsIGZhbHNlKTsK
LQorICAgIAogICAgIC8vIFVwZGF0ZSB0aGUgU1ZHSW1hZ2VDYWNoZSBzaXplQW5kU2NhbGVzIGVu
dHJ5IGluIGNhc2UgaW1hZ2UgbG9hZGluZyBmaW5pc2hlZCBhZnRlciBsYXlvdXQuCiAgICAgLy8g
KGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD05OTQ4OSkKICAgICBtX29i
amVjdEJvdW5kaW5nQm94ID0gRmxvYXRSZWN0KCk7Ci0gICAgaWYgKHVwZGF0ZUltYWdlVmlld3Bv
cnQoKSkKLSAgICAgICAgc2V0TmVlZHNMYXlvdXQoKTsKIAogICAgIGludmFsaWRhdGVCdWZmZXJl
ZEZvcmVncm91bmQoKTsKIAotICAgIHJlcGFpbnQoKTsKKyAgICBpbWFnZUVsZW1lbnQoKS5zZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgUmVuZGVyU1ZH
SW1hZ2U6OmFkZEZvY3VzUmluZ1JlY3RzKFZlY3RvcjxMYXlvdXRSZWN0PiYgcmVjdHMsIGNvbnN0
IExheW91dFBvaW50JiwgY29uc3QgUmVuZGVyTGF5ZXJNb2RlbE9iamVjdCopCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCmluZGV4IGU2
NzEyZmMyNmYwMzA4ZGYwY2VhMTgyYjA5ZmVhNzM5YmYzZDI1YzcuLmQyMTUxNDNlZjM1ZjVjYzQ5
ZDFmYTdmNThmZWM0NDQzNWZlYWQ3YTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2UuY3BwCkBAIC0xNTksMTYgKzE1OSw3IEBAIFJlbmRl
clNWR1Jlc291cmNlU29saWRDb2xvciogUmVuZGVyU1ZHUmVzb3VyY2U6OnNoYXJlZFNvbGlkUGFp
bnRpbmdSZXNvdXJjZSgpCiAKIHN0YXRpYyB2b2lkIHJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRh
dGVEZXBlbmRlbmNpZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGJvb2wgbmVlZHNMYXlvdXQp
CiB7Ci0gICAgaWYgKGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRS
ZXNvdXJjZXNGb3JSZW5kZXJlcihyZW5kZXJlcikpIHsKLSAgICAgICAgaWYgKFJlbmRlclNWR1Jl
c291cmNlRmlsdGVyKiBmaWx0ZXIgPSByZXNvdXJjZXMtPmZpbHRlcigpKQotICAgICAgICAgICAg
ZmlsdGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVuZGVyZXIpOwotCi0gICAgICAgIGlmIChS
ZW5kZXJTVkdSZXNvdXJjZU1hc2tlciogbWFza2VyID0gcmVzb3VyY2VzLT5tYXNrZXIoKSkKLSAg
ICAgICAgICAgIG1hc2tlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKLQotICAg
ICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VDbGlwcGVyKiBjbGlwcGVyID0gcmVzb3VyY2VzLT5j
bGlwcGVyKCkpCi0gICAgICAgICAgICBjbGlwcGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVu
ZGVyZXIpOwotICAgIH0KKyAgICBTVkdSZXNvdXJjZXNDYWNoZTo6cmVtb3ZlUmVuZGVyZXJGcm9t
UmVzb3VyY2VzKHJlbmRlcmVyKTsKIAogICAgIGlmICghaXM8U1ZHRWxlbWVudD4ocmVuZGVyZXIu
ZWxlbWVudCgpKSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmNwcAppbmRleCA2MDg2Y2VmOWU4MTg2YTU5MGQz
YWMxYTE4NjJiOTUzZDViNTJjMWQ1Li42ZTJiYWJkMDkwYThlNzY4ZDgzZmYwNWU5ZTY0N2E4NjM4
ZmRhOGQ1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlc0NhY2hlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291
cmNlc0NhY2hlLmNwcApAQCAtMTcwLDYgKzE3MCwyMiBAQCB2b2lkIFNWR1Jlc291cmNlc0NhY2hl
OjpyZXNvdXJjZURlc3Ryb3llZChSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYgcmVzb3VyY2Up
CiAgICAgfQogfQogCit2b2lkIFNWR1Jlc291cmNlc0NhY2hlOjpyZW1vdmVSZW5kZXJlckZyb21S
ZXNvdXJjZXMoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIpCit7CisgICAgYXV0byogcmVzb3VyY2Vz
ID0gU1ZHUmVzb3VyY2VzQ2FjaGU6OmNhY2hlZFJlc291cmNlc0ZvclJlbmRlcmVyKHJlbmRlcmVy
KTsKKyAgICBpZiAoIXJlc291cmNlcykKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8g
ZmlsdGVyID0gcmVzb3VyY2VzLT5maWx0ZXIoKSkKKyAgICAgICAgZmlsdGVyLT5yZW1vdmVDbGll
bnRGcm9tQ2FjaGUocmVuZGVyZXIpOworCisgICAgaWYgKGF1dG8gbWFza2VyID0gcmVzb3VyY2Vz
LT5tYXNrZXIoKSkKKyAgICAgICAgbWFza2VyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVuZGVy
ZXIpOworCisgICAgaWYgKGF1dG8gY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKQorICAg
ICAgICBjbGlwcGVyLT5yZW1vdmVDbGllbnRGcm9tQ2FjaGUocmVuZGVyZXIpOworfQorCiBTVkdS
ZXNvdXJjZXNDYWNoZTo6U2V0U3R5bGVGb3JTY29wZTo6U2V0U3R5bGVGb3JTY29wZShSZW5kZXJF
bGVtZW50JiByZW5kZXJlciwgY29uc3QgUmVuZGVyU3R5bGUmIHNjb3BlZFN0eWxlLCBjb25zdCBS
ZW5kZXJTdHlsZSYgbmV3U3R5bGUpCiAgICAgOiBtX3JlbmRlcmVyKHJlbmRlcmVyKQogICAgICwg
bV9zY29wZWRTdHlsZShzY29wZWRTdHlsZSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaAppbmRleCA1OGM5MTQ3NGRiYjAzNWViMzVkM2FjNjcx
N2JmNGZmZGQxODUyYmFkLi43YjZiYzlkMmRiMDM0ZDJiZGUyYzE1MDQyNTI5M2I3M2ExODBhMWVk
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0Nh
Y2hlLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNo
ZS5oCkBAIC01OCw2ICs1OCw4IEBAIHB1YmxpYzoKICAgICAvLyBDYWxsZWQgZnJvbSBSZW5kZXJT
VkdSZXNvdXJjZUNvbnRhaW5lcjo6d2lsbEJlRGVzdHJveWVkKCkuCiAgICAgc3RhdGljIHZvaWQg
cmVzb3VyY2VEZXN0cm95ZWQoUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXImKTsKIAorICAgIHN0
YXRpYyB2b2lkIHJlbW92ZVJlbmRlcmVyRnJvbVJlc291cmNlcyhSZW5kZXJFbGVtZW50Jik7CisK
ICAgICBjbGFzcyBTZXRTdHlsZUZvclNjb3BlIHsKICAgICAgICAgV1RGX01BS0VfTk9OQ09QWUFC
TEUoU2V0U3R5bGVGb3JTY29wZSk7CiAgICAgcHVibGljOgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggM2Vj
NDUxYTk2MTM3ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uMWRmYWRkMWRhOTQxNTMzYzlm
ZTM2NTc0NTdlMmNiZjVjMGViZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBA
CiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgiCiAjaW5jbHVk
ZSAiUmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNp
bmNsdWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRy
b2xsZXIuaCIKQEAgLTE5Miw2ICsxOTMsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgICAgIGlmIChlbGVtZW50VXBk
YXRlcykKICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVu
dFVwZGF0ZXMpOwogCisgICAgICAgIGlmIChpczxTVkdFbGVtZW50PihlbGVtZW50KSkKKyAgICAg
ICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KGVsZW1lbnQpLmludmFsaWRhdGVQYXJlbnRBbmRS
ZXNvdXJjZUlmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1l
bnQpOwogCiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMgPSBlbGVtZW50
LnJlbmRlcmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYgc2hvdWxkQ3Jl
YXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY5
NTI3MmE0ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLmRjMjgzZTQ5YjQyYjk5ODE5
MDQ5YWYwYTNjZTg0MDYyYjZmZDE3YWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDExICsyNTAsMTQgQEAgdm9pZCBTVkdBbmlt
YXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlmICghdGFyZ2V0
RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0
TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgIH0K
LQorICAgIGF1dG8gaW52YWxpZGF0ZSA9IFtdKFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsKKyAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpCisgICAgICAgICAgICBy
ZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAgICAgICAgZWxlbWVudC5zZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgfTsKKyAgICAKKyAgICBp
bnZhbGlkYXRlKCp0YXJnZXRFbGVtZW50KTsKKyAgICAKICAgICBBZmZpbmVUcmFuc2Zvcm0qIHRh
cmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1lbnRhbFRy
YW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQogICAgICAg
ICByZXR1cm47CkBAIC0yNjUsMTAgKzI2OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1l
bnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAgICAgICAgaWYgKCF0cmFuc2Zvcm0gfHwgKnRy
YW5zZm9ybSA9PSAqdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQogICAgICAgICAgICAgY29u
dGludWU7CiAgICAgICAgICp0cmFuc2Zvcm0gPSAqdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3Jt
OwotICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBpbnN0YW5jZS0+cmVuZGVy
ZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaW52YWxp
ZGF0ZShpbnN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxl
bWVudC5jcHAKaW5kZXggNmQ2YWYyNTA1YzRjZWYyMjk2YzkwMzIxMTJkODdhZmY0Njc0OTQ3Yy4u
N2M1ZjU0ZjhhMjhkZWUwOWY3MGZmMDMxMGMzNTgyYjZlMDk3OTI1MyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcApAQCAtNjgsOCArNjgsOSBAQCB2b2lkIFNWR0NpcmNs
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbgogdm9pZCBTVkdDaXJjbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoUHJvcGVydHlS
ZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpOwogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCmluZGV4IGI0ZTc5OTU4YzViMTMwMzU1Zjc5
OTk0YjExODNjNTNmOTJjZWQ2OWIuLjBlNjA0M2ZmMmRjMjVhMWYxMzdiN2NjMzkyMTYyMmQwOGE5
YTUyZGIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCkBAIC02
Niw5ICs2Niw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBv
YmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCmluZGV4IDBjZDRmZDQxZTUz
YWQxNTgyODMyOGUzYjEzZjgyZWU2MDY1ZTJkOWQuLjhkZGM4ZGJkN2UyZDQxNWZhY2M4MzgxYTIw
ODBmNWNkZWE2ODg5MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2
b2lkIFNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVu
dCh0aGlzKTsKKyAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRl
eCBkYzU5MmEyZDc0MWRmMzdmZTk2N2NmY2IzMmNlZDZjNzY2MTA5ZmQ2Li45YjllMmM4MGFkNGJk
ZTJlODlmMTAzZmY1OTc2ZGI5MjgyZTU5YmFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CkBAIC02MTAsNyArNjEwLDcgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5n
ZShTVkdQcm9wZXJ0eSogcHJvcGVydHkpCiAgICAgLy8gU1ZHTGVuZ3RoTGlzdCBhbmQgbm90IHRo
ZSBTVkdMZW5ndGguCiAgICAgcHJvcGVydHktPnNldERpcnR5KCk7CiAKLSAgICBpbnZhbGlkYXRl
U1ZHQXR0cmlidXRlcygpOworICAgIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7
CiAgICAgc3ZnQXR0cmlidXRlQ2hhbmdlZChwcm9wZXJ0eVJlZ2lzdHJ5KCkucHJvcGVydHlBdHRy
aWJ1dGVOYW1lKCpwcm9wZXJ0eSkpOwogfQogCkBAIC02MjYsNyArNjI2LDcgQEAgdm9pZCBTVkdF
bGVtZW50Ojpjb21taXRQcm9wZXJ0eUNoYW5nZShTVkdBbmltYXRlZFByb3BlcnR5JiBhbmltYXRl
ZFByb3BlcnR5KQogICAgIGVsc2UKICAgICAgICAgc2V0U3luY2hyb25pemVkTGF6eUF0dHJpYnV0
ZShhdHRyaWJ1dGVOYW1lLCBhbmltYXRlZFByb3BlcnR5LmJhc2VWYWxBc1N0cmluZygpKTsKIAot
ICAgIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1
dGVzQXJlRGlydHkoKTsKICAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJpYnV0ZU5hbWUpOwog
fQogCkBAIC02NTksNyArNjU5LDcgQEAgUmVmUHRyPFNWR0F0dHJpYnV0ZUFuaW1hdG9yPiBTVkdF
bGVtZW50OjpjcmVhdGVBbmltYXRvcihjb25zdCBRdWFsaWZpZWROYW1lJiBhdHQKICAgICAgICAg
aW5zdGFuY2UtPnByb3BlcnR5UmVnaXN0cnkoKS5hcHBlbmRBbmltYXRlZEluc3RhbmNlKGF0dHJp
YnV0ZU5hbWUsICphbmltYXRvcik7CiAgICAgcmV0dXJuIGFuaW1hdG9yOwogfQotICAgIAorCiB2
b2lkIFNWR0VsZW1lbnQ6OmFuaW1hdG9yV2lsbEJlRGVsZXRlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyaWJ1dGVOYW1lKQogewogICAgIHByb3BlcnR5QW5pbWF0b3JGYWN0b3J5KCkuYW5pbWF0
b3JXaWxsQmVEZWxldGVkKGF0dHJpYnV0ZU5hbWUpOwpAQCAtODgzLDYgKzg4MywyOSBAQCB2b2lk
IFNWR0VsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNvbnN0
IFF1YWxpZmllZE5hbWUmIG5hbQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9uYWxI
aW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdFbGVtZW50
OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKQoreworICAgIGVuc3VyZVVuaXF1
ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOwor
ICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVjYWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFzIHJlc291
cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5IGZlSW1hZ2UpLgorICAgIGludmFsaWRhdGVTdHlsZSgp
OworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKQoreworICAgIG1fTmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbiA9IHRy
dWU7CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6aW52YWxp
ZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVkZWQoKQoreworICAgIGlmICghbV9OZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKQorICAgICAgICByZXR1cm47CisgICAgCisgICAgaWYg
KGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJl
cik7CisgICAgbV9OZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uID0gZmFsc2U7Cit9
CisKIHZvaWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9IGNzc1Byb3BlcnR5
SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmlu
ZGV4IDJkM2EzMzFlOGU4MjU0ZTY3ZjBjNjc2MmNkMjA1MzIzZmE5NjBjY2IuLjBhNGM4MmI3YzI1
MDY4YmY3ZTlkOTM3NzdjOWM4ZWFmMDA5Y2VkY2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApA
QCAtODIsOCArODIsMTAgQEAgcHVibGljOgogCiAgICAgdmlydHVhbCBBZmZpbmVUcmFuc2Zvcm0q
IHN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpIHsgcmV0dXJuIG51bGxwdHI7IH0KIAotICAgIGlubGlu
ZSB2b2lkIGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7Ci0gICAgaW5saW5lIHZvaWQgaW52YWxp
ZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgaW5saW5lIHZvaWQgc2V0QW5p
bWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKTsKKyAgICB2b2lkIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOworICAgIHZvaWQgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOworICAgIHZvaWQgaW52YWxpZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVk
ZWQoKTsKIAogICAgIC8vIFRoZSBpbnN0YW5jZXMgb2YgYW4gZWxlbWVudCBhcmUgY2xvbmVzIG1h
ZGUgaW4gc2hhZG93IHRyZWVzIHRvIGltcGxlbWVudCA8dXNlPi4KICAgICBjb25zdCBXZWFrSGFz
aFNldDxTVkdFbGVtZW50PiYgaW5zdGFuY2VzKCkgY29uc3Q7CkBAIC0xOTMsNiArMTk1LDggQEAg
cHJpdmF0ZToKIAogICAgIHZvaWQgaW52YWxpZGF0ZUluc3RhbmNlcygpOwogCisgICAgYm9vbCBt
X05lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24geyBmYWxzZSB9OworCiAgICAgc3Rk
Ojp1bmlxdWVfcHRyPFNWR0VsZW1lbnRSYXJlRGF0YT4gbV9zdmdSYXJlRGF0YTsKIAogICAgIFdl
YWtIYXNoU2V0PFNWR0VsZW1lbnQ+IG1fZWxlbWVudHNXaXRoUmVsYXRpdmVMZW5ndGhzOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaAppbmRleCA1OTdhYTBlZTE1NzZjMjFlNzVl
MjdkNDFhYjE2MzIzOGJiMjA4YWIyLi5jNjllYzcwYmI2OTliNDE4OWM1ZmFlNmNkZGRjYTMxNDVm
N2M1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaApAQCAtMzAsMTgg
KzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHZvaWQgU1ZHRWxlbWVu
dDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKQoraW5saW5lIHZvaWQgU1ZHRWxlbWVudDo6c2V0
QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKQogewogICAgIGVuc3VyZVVuaXF1ZUVsZW1l
bnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkodHJ1ZSk7CiB9CiAKLWlu
bGluZSB2b2lkIFNWR0VsZW1lbnQ6OmludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHls
ZSgpCi17Ci0gICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50YXRpb25hbEhp
bnRTdHlsZUlzRGlydHkodHJ1ZSk7Ci0gICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGN1bGF0aW9u
IGZvciAiZWxlbWVudHMgYXMgcmVzb3VyY2UiIChlLmcuIHJlZmVyZW5jZWQgYnkgZmVJbWFnZSku
Ci0gICAgaW52YWxpZGF0ZVN0eWxlKCk7Ci19Ci0KIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNoVHJh
bnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUXVhbGlmaWVkTmFtZSYg
a2V5KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCmluZGV4
IDU5NTk5NzExZjRiYTk5NDEyZDk4NzJiODAyMTQ4ODQwNzI3NTJkMTkuLmQ1NGNlMmJhNmQzMDcx
NWFkMDFhMGNlYWQwMmYzZDNjYmVhOTYwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlw
c2VFbGVtZW50LmNwcApAQCAtNzEsOCArNzEsOSBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQog
dm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5UmVnaXN0cnk6Omlz
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50
YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlz
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHAKaW5kZXggZTFjYzgzMzVjMzIwZDllZmU1YzI0Mzg0MzBmYzgzOTc0
OGU3NmYzNS4uMjY3N2E5YzlkNzI4OTg5ZDk3ZWUwYzkyZDNlZTgyNjM5OTNhNzUwZCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC04MywxNSArODMsMTIgQEAg
Ym9vbCBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKIAogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7
Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAg
ICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5j
cHAKaW5kZXggNjlmOTFkYzBlNTA5NjdjZmM2N2NjYWFmZjAwZmQxNGEzZDg1NjdjNC4uOWI1MmM0
ZjU3NTAxY2Y4MDI3MGUzYWYyZjM2ODU4ZWEwOGZmMjgyNCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC04NCwxNSArODQsMTIgQEAgYm9v
bCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCogZWZmZWN0LCBjb24KIAogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
Ojp2YWx1ZXNBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAg
ICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5B
dHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggOWE3NWI0
NjI4N2ZjMDY5NDA5MjJlYzM5NTEzMTczZWVmMjQwMzNlOC4uYjUzNzhlYjczZTQ1Njc3NzRhZGRk
MTQyNTZmMmZjOTg3ODVkMzNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
Q29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02Miw2ICs2MiwxNyBAQCB2b2lkIFNW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjbwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCit2b2lkIFNWR0ZFQ29tcG9uZW50
VHJhbnNmZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQoreworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKKyAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7Cisg
ICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworfQorCiBSZWZQdHI8Rmls
dGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0KGNv
bnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdAog
ewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVkOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCA2NGY3YjlhZTg5
MWFiOTMxMjdkOTkwZjQ0N2VlNGRmMjY0NTU4YjExLi5mMTRjM2M3NzJhNmMzY2Q4YTE0OWQwZGQ2
YzQyMmYwZWMzMGM3YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBwcml2YXRlOgogICAgIHVz
aW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVDb21w
b25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgpIGNv
bnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklYTUU6
IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAgdm9p
ZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKIAog
ICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IG92
ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGZp
bHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVj
dG9yJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0
ZUVsZW1lbnQuY3BwCmluZGV4IDQ1OWVkYWI4NTk3YmEyNzk2Yzc3OTJmOWZlZTU3OGM5ODM4ZGFh
MWEuLjk3YjRjYzVjMDZjNzNiMTcwNDQ1ZWRiYjg4OTE3MzY2NmU0MzRiZWYgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xMTUsMTUgKzExNSwx
MiBAQCBib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdAogCiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRy
KSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJB
dHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggMDJiYzM3YjZkNGEzYmMy
OGRhOGFlZDM2M2FlMTc0OTdmNjE5Zjc2Yi4uYjk0Y2RlNThlYmI1NTVhZTRhNjU4NTcxNTFhMWQ2
YTQ2MTU4YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCkBAIC0xNjAsMjcgKzE2MCwyNCBAQCB2b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzZXRPcmRlcihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fb3JkZXJY
LT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9vcmRlclktPnNldEJhc2VWYWxJbnRlcm5h
bCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRL
ZXJuZWxVbml0TGVuZ3RoKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVu
Z3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNl
dEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
Ymlhc0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjp0YXJnZXRZQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVs
VW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRy
KSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJu
OwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5l
bE1hdHJpeEF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikKKyAgICAgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKaW5kZXggOTY4NGZhYjgwMGNjMDU2YTgzNGI3NDdlY2YyZDczZGJhZjBmYzY5
OC4uOGE2ZGM5NzBkMjU0ZTJjNDFjNGM4YTlhOGI3Y2QyZTU2NmE5YTM4MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEy
NSwxNSArMTI1LDEyIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0
ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAKIHZvaWQgU1ZHRkVEaWZm
dXNlTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNj
YWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAK
aW5kZXggYjYyYzQ2NDliZTEzOTk2YzE4MWUzYTk4NmUwZjljM2MzZDUzZGIxNC4uNTIzNjc4ZGQ5
Njk2MzQ2YmJjNjhkY2M2ZTM4NGRkNzcyZTA2YTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxMiBA
QCBib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7Ci0gICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRp
dmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQ1
OTkxMGU1NGQyZjYwNTZlYTI1OWIxODgzOWIzZTNlOWI1MzE2ODIuLmJkYzhkY2VmNmJiOTk0MDUy
NGZkYTc0N2E4MzQ5MjI4ZWFlYTI4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVE
cm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0
ZERldmlhdGlvblgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblkt
PnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCBiNWYzYzdiNmNlZmZk
NjVkZmQwYWUxMWE0YTliMmIyZTBkODNiOGEzLi40NWRlZDAwMDU2NzUwYjVkNjI5M2QwMzk0MWE3
M2MyNDkyZDczYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJs
dXJFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZp
YXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRC
YXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIHZhbHVlKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRhOWMzYzQ1YTkyM2ViZDJhYmRmNWExZmQyZDdm
ZTUwNjA3OTRkNDMuLmQ1ZTg2ODk2YjVkNjUxMjg3ODg2OTU3ZWM4ZmZmOWU4YmZhODA3NGUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTExLDcgKzExMSw3
IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9
IGVsc2UgaWYgKGlzPFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkpCiAgICAgICAgIGRvd25j
YXN0PFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50KCp0
aGlzKTsKIAotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpA
QCAtMTI3LDkgKzEyNyw5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZHRkVJ
bWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJh
dGlvQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NSwxNiAr
MTY1LDExIEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hlZFJl
c291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3RlZCgp
KQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVudCgp
OwotCisgICAgYXV0byBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJlbnQg
fHwgIXBhcmVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRl
cmVyKCk7Ci0gICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0gICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcGFyZW50UmVuZGVyZXIpOworICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQp
LnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogc3RhdGljIGlu
bGluZSBJbnRSZWN0IHNjYWxlZEltYWdlQnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJlY3Qs
IGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcAppbmRleCBjNjI1MjZjY2Q3NTgzMjcwZTg4NTZkMTJlMzI3ZGVjMzM0OTRiMDEyLi44
N2EyZTAyMWU0NzBhZDk1ZDNkMzc1NDRkZmNhNzVlYWRiMDc4NzIxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTE1MSwxNSArMTUxLDkgQEAgdm9pZCBTVkdG
RUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
aGFuZ2UpOwotCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6
UGFyc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUo
KTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQq
IHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5k
ZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQotICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiB9CiAK
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKaW5kZXgg
NGJlOTA3ODI2ZGJhMDYxOTM2ODRlMGE0ZGFmNWJhMmI1ZmE5NGFmYS4uOTFhNmMxNDA0MWQxNTdk
ODZmNmFiZmE2MjY1YzE5ZDUzYzNhYmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TWVyZ2VOb2RlRWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBTVkdGRU1lcmdlTm9k
ZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b20KIAogdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7
CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudC5jcHAKaW5kZXggYWZiOTk5NDAwZDUwMjY2NzM0MjdlYjc1MDg2NTVlZTJjOGNjMWY5
NS4uODY1MDY2MDI0NmIyYmNiYzRhYmUwMDc5ZTI3ZmZkYjdlYWI5YjMxYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTIsNyArNTIsNyBA
QCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9hdCB5
KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fcmFkaXVz
WS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC05OCwxNSArOTgsMTIgQEAgYm9vbCBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZl
Y3QsIGNvbnMKIAogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNB
dHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7Ci0g
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBp
bnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQor
ICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAg
ICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZz
ZXRFbGVtZW50LmNwcAppbmRleCA4NDNmOGRlNzdhYjhjODFkYmEzM2FmMjFkZjYwYzhkMmU4Y2Iy
NzQzLi4yNWI4NmFkOTMyZDViYzczOWExNDA5ZmZkYzg3OTI1YWFjMjFmMzc1IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2b2lk
IFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAK
aW5kZXggNjgxNTI2ODA4MmZkODhjMjY3Nzc5ZjMxMTk4OTNlZDYwODMyMDZiOS4uYTcyMzk0MjY1
Y2QwZDI4YTcyOTYyMTE3YmRhMDNiYzQ0YWYxYWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTM1LDE1ICsxMzUs
MTIgQEAgYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RB
dHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QKIAogdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprZXJuZWxVbml0TGVuZ3RoQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCAyYTdhM2Y0OTNiZWFmYTFlMmQyMzRj
ZTNhOWRjYTNlODIzMzg1ODdmLi5hOTc5ZGM5YzNhZTA1NjJkYjhjOWM4NGY2MjU2NDE0NDk5OGM3
MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC01OCw5ICs1
OCw5IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAKIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAppbmRl
eCA1NTc4YjUxOWEzNjIyYmQ3MDZhZDI3YmZlNGM2MDAzOTE0ODU4Y2EwLi42MmQ0ZTAwMTYzNjY5
MWQ1MDA5MmJlMDNjM2RhYmY2NThmYjllZTBlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRl
ckVsZW1lbnQuY3BwCkBAIC05MiwxNiArOTIsMTcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW4K
IAogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKCk7Ci0gICAgICAgIHJldHVybjsKKyAgICAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAgICAgICAg
c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgICAgIGVsc2UKKyAgICAg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAK
LSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwg
U1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVy
ZXItPnNldE5lZWRzTGF5b3V0KCk7Ci0gICAgICAgIHJldHVybjsKKyAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgIH0KIAogICAgIFNWR0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAwMGU0ZTY5
ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi45MTZhZTUyODBjMTFlZTQ3MTFjMmY3
ZDhlMmE3ZjNiMWUwOGRkOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgsOCArNzgs
NyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICB9CiAKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
QEAgLTkxLDcgKzkwLDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2gKIAogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYm
IHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpAQCAtMTA3LDIwICsxMDYsMTMgQEAg
Ym9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVk
ZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgaW52
YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQordm9pZCBp
bnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQpCiB7Ci0g
ICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHIgcGFyZW50ID0g
ZWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47
Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKLSAg
ICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2
ZSgpKQorICAgIGF1dG8gcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CisgICAgaWYgKCFp
czxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KHBhcmVudCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNhc3Q8U1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpLT5zZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRl
eCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTJlMGQyMWM0MTFh
ZWE5OWJkNjQ4YjdiNWI2ZTg4M2U0YzFmYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC02Miw3
ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2
b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmli
dXRlTmFtZSk7CiAKIHByaXZhdGU6CkBAIC04MSwxMyArODAsNyBAQCBwcml2YXRlOgogICAgIFJl
ZjxTVkdBbmltYXRlZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRl
KHRoaXMpIH07CiB9OwogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZH
RWxlbWVudCopOwotCi1pbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OmludmFsaWRhdGUoKQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5kZXJlciA9
IHJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0KK3ZvaWQg
aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Jik7CiAKIGlubGluZSB2
b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCA1YWI5OTU5M2Qy
ZGEyZWYzNzA2MjkzMGU2YzQ5MjFkNmFiYmFkMzU1Li45NWZmNTU2Y2IwMjBhZDI3YjNlZDM3MWEz
NWM2ZmE0NWFlYjFlNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWln
bk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAKQEAgLTc0LDE1ICs3NCwxNCBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dAogCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7Ci0g
ICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCisg
ICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAg
ZWxzZSB7CisgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwor
ICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dl
b21ldHJ5RWxlbWVudC5jcHAKaW5kZXggZTZmMmMxNzk5NjZhYmRhMjIxNGI3NmIwOTZhM2M1YWI1
NDI3ZjFhMC4uYzFhMTUxYjNiYTkxZjBjYjgwY2YzMTFlMTlhZTA3ZGJhYWFjNzJlNCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTE0OSw5ICsxNDksNyBA
QCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBh
dGhMZW5ndGhBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICByZXR1cm47CisgICAgICAgIHNl
dE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBTVkdH
cmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA3NzRjMTFlM2Q5ODczYjkzY2Rl
OTY4YjM3ZWIzNDdjNzY1ODI0ODNlLi43MWE1MDJmNzZiMjRmNTJlYzBmODY0MjRmZjdjYzhkODQz
NDUzNWVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAt
NzcsMTAgKzc3LDE1IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyCiAKIHZvaWQgU1ZHR3JhZGll
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Cisg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IDQ5YTJjYTY5OGY1NGU1MmYw
OTIwYjU0ODQ2ZGUzNWQzNWVhMmQxZmEuLmMxZDg0NWFkY2Y3ZThiYWU5M2FlYTAwODJmZDJiNDFi
YWJiOGJkODggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCkBA
IC0xMzIsMTQgKzEzMiwxMiBAQCB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogCiB2b2lkIFNWR0dy
YXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIp
IHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKKyAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKTsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5z
ZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwot
ICAgICAgICB9Ci0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IGE0NjdjZWEwYjJkMTZkODk4MWE0MGYzNzc0MTQzYjdmMzMyNGZjYTgu
LmI0YzgxMWNhODUyZDc0MTA4NzM0ZWM4YzIxNGUwMjQwYzFjZWVhODQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwCkBAIC05OCwyMiArOTgsMjIgQEAgdm9pZCBTVkdJbWFn
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAg
aWYgKGRvd25jYXN0PFJlbmRlclNWR0ltYWdlPigqcmVuZGVyZXIpLnVwZGF0ZUltYWdlVmlld3Bv
cnQoKSkKLSAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFu
ZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICBpZiAo
IWRvd25jYXN0PFJlbmRlclNWR0ltYWdlPigqcmVuZGVyZXIpLnVwZGF0ZUltYWdlVmlld3BvcnQo
KSkKKyAgICAgICAgICAgICAgICByZXR1cm47CisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpoZWlnaHRBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxI
aW50U3R5bGUoKTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCmluZGV4IGVmYjliOGJjZmQ5Y2M5
NWVhYTQ5M2JmZTFhYWQ5MTljYTc5Y2IzYzUuLmEwYjRiNTE4OTZmMGJhYWI2YjliZjM3NTlkMDMz
N2JiMDA0ODMyYmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcApAQCAtNzIs
MTIgKzcyLDEwIEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpOwotCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PExlZ2Fj
eVJlbmRlclNWR1NoYXBlPih0aGlzLT5yZW5kZXJlcigpKSkgeworICAgICAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIo
KSkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA4NDhmNmEyMmY4ZTI1
MTM2NjdiYjA0Y2JiYjk5ZjgwOWEyNjhmYzdmLi43MzYxYmQ3YjY2MGZlYWU3MTA1MzJmYTY0ZTM2
ZGNmMmVkNmY0MzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcApAQCAtODMsOCArODMsNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9i
amVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNM
YXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxl
bWVudC5jcHAKaW5kZXggMGI0M2JiODQyZTVlMzYyYWFlZjg3OWZkNjA2M2FhNTc2ZWFlMjFhYi4u
MjlkMmM1Yjk1MjdkMmEzNjMzYjYwNmZjNjQxNWE3YjkwODM0ZTUwMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtOTgsMTQgKzk4LDEzIEBAIHZvaWQgU1ZHTWFy
a2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAg
ICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0
dHJOYW1lKSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7
Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KLSAgICAKKwog
ICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFza0VsZW1lbnQuY3BwCmluZGV4IDFiZmI0MWQzNzBmYzMzNjNjYjAwYWI2NDg0ODRkZjlkNWEw
M2VjZGQuLjU1NDE0MzljNDEyNzQ5MDg2YzY3NTA5Njg5MTFmNzYwZjBkMWY2M2MgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtOTgsMTUgKzk4LDEyIEBAIHZvaWQgU1ZH
TWFza0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRl
U1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAg
ICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50
YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0
TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBlMTUxOTBlZjgz
Y2U2NWMyYTE0YzBhYjIxYzlmY2I1MmZiZDMxMDRkLi4yMjNkNzIwZTdiMDg2MTllNzkzNzc5M2M2
YzBhNDhmYzU1ZTk5ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAg
LTY1LDE1ICs2NSwxMiBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25z
dCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BhdGhF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKKyAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVN
UGF0aERlcGVuZGVuY2llcygpOwotCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25j
YXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGlmIChhdXRv
KiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQog
ICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotCisgICAgICAgIGludmFsaWRhdGVNUGF0aERl
cGVuZGVuY2llcygpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
dGVybkVsZW1lbnQuY3BwCmluZGV4IGM0NzQzNDA2MjIyYjU1ZGEwNTFjZmFlYWYzZWFjMmM5NTFl
YjY1MTUuLmYwZjhjNDdiOTQ3YTlmZWE2YjcxM2IwYjcyM2MzNzliNDI2NTRiYmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTEwLDE1ICsxMTAsMTggQEAg
dm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
KyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAg
ICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAg
ICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIGlmIChTVkdGaXRUb1ZpZXdC
b3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5
RWxlbWVudC5jcHAKaW5kZXggZWExZmUwOTJhMTYyMzcxM2M5MzgzM2E1ZDk1N2FkY2UxZTYzOTEw
MC4uYTYyOTY2MjVlZDk4YWQ5MDZkMzlmYWYzYTE4OTYwZjg5ZWE5NTg2YiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCkBAIC01NSwxMiArNTUsMTIgQEAgdm9pZCBTVkdQb2x5
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYKIAogdm9pZCBTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBvaW50c0F0dHIpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpOworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICByZW5kZXJl
ci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwot
ICAgICAgICB9CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCBlNWUyMWFmZWU5ZTNmNTZiMTg3OGNkM2Uy
ZTkxOTg0MDRmNDk4OWNlLi5mMzM5OTRhOTBhYWE2ODkyMDMyNTY0MWFlNDg3OWU0NjQ0NWNiNjc1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cApAQCAtODksOCArODksNyBAQCB2b2lkIFNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0
ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcAppbmRleCBm
ZDQwYThlY2Q4YmI5OWZiNGNhNWJhZjU1ZWMzYzMyNTdiOGI4MTljLi5hZDdhYWM4OTllOWFkYTk0
ODJiODlhMDAzMTFiNjdmYzcyYzYwZDUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUmVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVu
dC5jcHAKQEAgLTc5LDggKzc5LDkgQEAgdm9pZCBTVkdSZWN0RWxlbWVudDo6cGFyc2VBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIHZvaWQgU1ZH
UmVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVu
Z3RoQXR0cmlidXRlKGF0dHJOYW1lKSk7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50
U3R5bGUoKTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApp
bmRleCA5NDVkYmMwYzkzY2RjZmY1NzZhZGI1MTYwM2U3YzQ2YzM2NjY0YjdiLi5jMjQyODY4MzAz
Y2VjMWZhNjk5ZjZkZTdkNDIyNDdhMzNhYzVhZGM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCkBAIC0yMDksNyArMjA5LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOwogCiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CkBAIC0yMTcsMTEgKzIx
Nyw5IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotICAgICAgICBy
ZXR1cm47CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICB9CiAKICAgICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwpAQCAtNTgzLDcgKzU4MSw2IEBAIFNWR1NWR0VsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6
OmZpbmRSb290QW5jaG9yKFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKSBjb25zCiAKIGJv
b2wgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudChTdHJpbmdWaWV3IGZyYWdtZW50SWRl
bnRpZmllcikKIHsKLSAgICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBh
dXRvIHZpZXcgPSBtX3ZpZXdTcGVjOwogICAgIGlmICh2aWV3KQogICAgICAgICB2aWV3LT5yZXNl
dCgpOwpAQCAtNTkzLDggKzU5MCw4IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFn
bWVudChTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcikKIAogICAgIGlmIChmcmFnbWVudElk
ZW50aWZpZXIuc3RhcnRzV2l0aCgieHBvaW50ZXIoIikpIHsKICAgICAgICAgLy8gRklYTUU6IFhQ
b2ludGVyIHJlZmVyZW5jZXMgYXJlIGlnbm9yZWQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3No
b3dfYnVnLmNnaT9pZD0xNzQ5MSkKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIGhhZFVzZUN1cnJl
bnRWaWV3KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBpZiAoaGFkVXNl
Q3VycmVudFZpZXcpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTYwNSw4ICs2MDIs
OCBAQCBib29sIFNWR1NWR0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQoU3RyaW5nVmlldyBmcmFn
bWVudElkZW50aWZpZXIpCiAgICAgICAgICAgICBtX3VzZUN1cnJlbnRWaWV3ID0gdHJ1ZTsKICAg
ICAgICAgZWxzZQogICAgICAgICAgICAgdmlldy0+cmVzZXQoKTsKLSAgICAgICAgaWYgKHJlbmRl
cmVyICYmIChoYWRVc2VDdXJyZW50VmlldyB8fCBtX3VzZUN1cnJlbnRWaWV3KSkKLSAgICAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKChoYWRVc2VDdXJyZW50VmlldyB8fCBt
X3VzZUN1cnJlbnRWaWV3KSkKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgfQog
CkBAIC02MzAsOCArNjI3LDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50
KFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKQogICAgICAgICAgICAgfQogCiAgICAgICAg
ICAgICByb290RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp2aWV3RWxlbWVudCk7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSByb290RWxlbWVudC0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICByb290RWxlbWVu
dC0+c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICAgICAg
bV9jdXJyZW50Vmlld0ZyYWdtZW50SWRlbnRpZmllciA9IGZyYWdtZW50SWRlbnRpZmllci50b1N0
cmluZygpOwogICAgICAgICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTY2MSw4ICs2
NTcsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5jaG9yKCkKICAgICB9CiAK
ICAgICBtX3VzZUN1cnJlbnRWaWV3ID0gZmFsc2U7Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKCkpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdTVkdFbGVtZW50Ojppbmhlcml0Vmlld0F0dHJpYnV0
ZXMoY29uc3QgU1ZHVmlld0VsZW1lbnQmIHZpZXdFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
dG9wRWxlbWVudC5jcHAKaW5kZXggMTk1NzAwZWJmN2JhNzQxOTQzYzMxN2M5NmY1MmVlZDU3ZWIy
OWEzYy4uN2FhNzg2Yjc5OGViNzFmYTJhMzQ1YmYwZGEyOGQyMTM0NzIyNjA1NCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC02NCwxMSArNjQsMTAgQEAgdm9pZCBTVkdT
dG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29u
c3QgQXRvbVN0cmluZyYKIAogdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpOworICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAyOTkxZGI2OTM0MjA2ZWE5
MjdlYmQ4N2YzNzExMTc4MWU1MjE4MmRlLi5mNDUxMmU5Mjc3MjdkYTE1MTM2MGVhYmI1ZDI4NWNi
M2E3OGE2ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE4NCw4
ICsxODQsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAg
ICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBjMTQ1M2JmYzYwNDA4Yzk1MDc0NjA3N2Q3NjFl
ZTE0ZDcyOTY1MWZiLi5kZDE0ZGFjMGRjZmQzZWU3YjliYjViYmU1Mjc5YmFiM2I2NmIwODgxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTgw
LDEzICsxODAsMTAgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KIHZvaWQgU1ZHVGV4dENvbnRl
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
ICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAg
ICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52
YWx1ZSgpOwotCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkg
ewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IGE3NDkxYzRk
MWI4NWI5N2UzNDdmZDVhNzE0MTEzMTRjOTc4NDY2OTMuLmE1YmJmYjIzZTQxNDJjZTY3Y2Y5ZThm
ZGNmYjEzOTIxYzJjNGM5OTcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1l
bnQuY3BwCkBAIC04OSwxOSArODksMTUgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCiAgICAgICAgIGlmIChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAgICAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLQotICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAg
ICAgIHJldHVybjsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgIH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGZlMjFlNjZhZjU2NjUyODkwYWIzMTgwODNkZDgzMTlj
ZWYxZTYyMDIuLjA1ZTQ4NDY4Yjg1MzBkMjljZDg5NTVhODMxZTYyYTFkZGFkMWM5OGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAg
LTk5LDE2ICs5OSwxMyBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogewogICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgICAgICBpZiAoYXR0ck5h
bWUgIT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxl
bmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IFJlbmRl
clNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVyZXIpKQotICAgICAg
ICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgp
OwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGlmIChh
dXRvKiB0ZXh0QW5jZXN0b3IgPSByZW5kZXJlcigpID8gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVu
ZGVyU1ZHVGV4dEFuY2VzdG9yKCpyZW5kZXJlcigpKSA6IG51bGxwdHIpCisgICAgICAgICAgICB0
ZXh0QW5jZXN0b3ItPnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKIAorICAgICAg
ICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAwNTQ3Y2Nh
OWQyNmZiZDBmMzk1OTUzYWFhNDllZGJhNTIyMjA2NDJkLi44OGIwN2NlNzVhYjI3ZmNjMzQ0NWRj
YzRiM2FjM2EzNDMxNjJlOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBA
IC0xNTYsMjEgKzE1NiwyMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJp
YnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogCiB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAg
ICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVubmVjZXNzYXJpbHkgaW5l
ZmZpY2llbnQgdG8gdXBkYXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBlYWNoIHRpbWUgZWl0aGVy
IGlzIGNoYW5nZWQuCiAgICAgICAgICAgICBpZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRh
cmdldENsb25lKCkpCiAgICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFy
Z2V0Q2xvbmUoKnRhcmdldENsb25lKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAg
ICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1Bh
cmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewor
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
dXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwogICAgICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgp
OwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRl
eCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAzMjNiYzIxNDRiY2ViZTQ5MGU1Li41NDc1ZjM3Y2YyN2U5
NzA4ZjRlMjcxNDRjOTk2ODU1NTk2ODA3MWExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxl
bWVudC5jcHAKQEAgLTU0LDE3ICs1NCwxMyBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2
b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIC8vIFdlIGlnbm9yZSBjaGFuZ2VzIHRvIFNWR05hbWVzOjp2
aWV3VGFyZ2V0QXR0ciwgd2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgdW51c2VkIGluIFdlYkNvcmUu
Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQot
ICAgICAgICByZXR1cm47Ci0KICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7Ci0gICAgICAg
ICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7Ci0gICAg
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Ci0KKyAgICAgICAg
aWYgKCFtX3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdGFy
Z2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKKyAgICAgICAgICAgIAor
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCptX3RhcmdldEVsZW1lbnQp
OworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCmluZGV4IDVm
MjNiMzAxMjZmNDFmYTQyZDFmNjgwODBjZThiOTQ0OTUzYWVlYjMuLmE2ZGU3OGVhNDg0NDM1M2E1
Y2IzOWRiMmI3MGVkODU1YjlkNjNjMWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9w
cm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAg
Ym9vbCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6aXNBbmltYXRlZFN0eWxlUHJvcGVydHlBbmlhbXRv
cihjb25zdCBTVkdFbGVtZW50JiB0YXIKIHZvaWQgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmludmFs
aWRhdGVTdHlsZShTVkdFbGVtZW50JiB0YXJnZXRFbGVtZW50KQogewogICAgIFNWR0VsZW1lbnQ6
Okluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQodGFyZ2V0RWxlbWVudCk7Ci0gICAgdGFy
Z2V0RWxlbWVudC5pbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICB0
YXJnZXRFbGVtZW50LnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogfQogCiB2
b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBseUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5n
ZShTVkdFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9wZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZh
bHVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453194</attachid>
            <date>2022-02-25 04:11:06 -0800</date>
            <delta_ts>2022-02-25 04:58:11 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220225121104.patch</filename>
            <type>text/plain</type>
            <size>72651</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk4MjE4NTU0MjkyNzIx
ODM3YjZjNThmMWVhYTdkZGM4ZWY2ODFlYy4uNzI2NjMyYmE5MDQxMGQ5NjU4ZjE3NjA2M2JhNmIw
ZjhkNzUwZWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMi0wMi0yNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBzZXROZWVkc0xheW91
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdpbmcgdGhlIFNWRyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9t
Q2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjpyZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5j
aG9yKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5
bGUpOgorCiAyMDIyLTAyLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogTGlzdCBpdGVtIG1hcmtlciBub3QgZXhwb3NlZCB3aGVuIG5v
dCBhIGRpcmVjdCBjaGlsZCBvZiBhIGxpc3QgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBlY2YxNzEzMWExYzUyNTkyYTVmNzMw
YTZkMTU5ZjExZDg4YWRmYWE3Li5hMTIzM2RlZWE5N2NlZmI1NmE1N2RhYTVjMDdlM2M2NmVmZThj
MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtMjQ1LDE4ICsyNDUsMTMgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFu
Z2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgaWYgKGF1dG8qIHJlc291
cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhp
cykpCiAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKIAot
ICAgIC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hh
bmdlZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCp0aGlzLCBmYWxzZSk7Ci0KICAgICAvLyBVcGRhdGUgdGhlIFNWR0lt
YWdlQ2FjaGUgc2l6ZUFuZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdlIGxvYWRpbmcgZmluaXNo
ZWQgYWZ0ZXIgbGF5b3V0LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTk0ODkpCiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwot
ICAgIGlmICh1cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNldE5lZWRzTGF5b3V0KCk7
CiAKICAgICBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICByZXBhaW50KCk7
CisgICAgaW1hZ2VFbGVtZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlLmNwcAppbmRleCBlNjcxMmZjMjZmMDMwOGRmMGNlYTE4MmIwOWZlYTczOWJm
M2QyNWM3Li5kMjE1MTQzZWYzNWY1Y2M0OWQxZmE3ZjU4ZmVjNDQ0MzVmZWFkN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApA
QCAtMTU5LDE2ICsxNTksNyBAQCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIFJlbmRlclNW
R1Jlc291cmNlOjpzaGFyZWRTb2xpZFBhaW50aW5nUmVzb3VyY2UoKQogCiBzdGF0aWMgdm9pZCBy
ZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBib29sIG5lZWRzTGF5b3V0KQogewotICAgIGlmIChhdXRvKiByZXNvdXJjZXMgPSBT
VkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7
Ci0gICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gcmVzb3VyY2Vz
LT5maWx0ZXIoKSkKLSAgICAgICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJl
bmRlcmVyKTsKLQotICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9
IHJlc291cmNlcy0+bWFza2VyKCkpCi0gICAgICAgICAgICBtYXNrZXItPnJlbW92ZUNsaWVudEZy
b21DYWNoZShyZW5kZXJlcik7Ci0KLSAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKQotICAgICAgICAgICAgY2xpcHBlci0+
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKLSAgICB9CisgICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbVJlc291cmNlcyhyZW5kZXJlcik7CiAKICAgICBpZiAo
IWlzPFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAK
aW5kZXggNjA4NmNlZjllODE4NmE1OTBkM2FjMWExODYyYjk1M2Q1YjUyYzFkNS4uNmUyYmFiZDA5
MGE4ZTc2OGQ4M2ZmMDVlOWU2NDdhODYzOGZkYThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE3MCw2ICsxNzAsMjIg
QEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVzb3VyY2VEZXN0cm95ZWQoUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXImIHJlc291cmNlKQogICAgIH0KIH0KIAordm9pZCBTVkdSZXNvdXJjZXND
YWNoZTo6cmVtb3ZlUmVuZGVyZXJGcm9tUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KQoreworICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCkpCisg
ICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlm
IChhdXRvIG1hc2tlciA9IHJlc291cmNlcy0+bWFza2VyKCkpCisgICAgICAgIG1hc2tlci0+cmVt
b3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIGNsaXBwZXIgPSBy
ZXNvdXJjZXMtPmNsaXBwZXIoKSkKKyAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKHJlbmRlcmVyKTsKK30KKwogU1ZHUmVzb3VyY2VzQ2FjaGU6OlNldFN0eWxlRm9yU2NvcGU6
OlNldFN0eWxlRm9yU2NvcGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0
eWxlJiBzY29wZWRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogICAgIDogbV9y
ZW5kZXJlcihyZW5kZXJlcikKICAgICAsIG1fc2NvcGVkU3R5bGUoc2NvcGVkU3R5bGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXgg
NThjOTE0NzRkYmIwMzVlYjM1ZDNhYzY3MTdiZjRmZmRkMTg1MmJhZC4uN2I2YmM5ZDJkYjAzNGQy
YmRlMmMxNTA0MjUyOTNiNzNhMTgwYTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGZyb20gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OndpbGxCZURlc3Ry
b3llZCgpLgogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlRGVzdHJveWVkKFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJlckZyb21SZXNv
dXJjZXMoUmVuZGVyRWxlbWVudCYpOworCiAgICAgY2xhc3MgU2V0U3R5bGVGb3JTY29wZSB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldFN0eWxlRm9yU2NvcGUpOwogICAgIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCmluZGV4IDNlYzQ1MWE5NjEzNzg1NDU1ODVkNjczZGZiYjliZDg4ODUz
MmUyOTAuLjFkZmFkZDFkYTk0MTUzM2M5ZmUzNjU3NDU3ZTJjYmY1YzBlYmYyZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgiCkBAIC0xOTIsNiArMTkzLDkgQEAgdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290
KQogICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZXMpCiAgICAgICAgICAgICB1cGRhdGVFbGVtZW50
UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGVzKTsKIAorICAgICAgICBpZiAoaXM8U1ZH
RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVt
ZW50KS5pbnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpOworCiAgICAgICAgIHN0
b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIAogICAgICAgICBib29sIG1heUhhdmVSZW5k
ZXJlZERlc2NlbmRhbnRzID0gZWxlbWVudC5yZW5kZXJlcigpIHx8IChlbGVtZW50Lmhhc0Rpc3Bs
YXlDb250ZW50cygpICYmIHNob3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQ
b3NpdGlvbigpLnBhcmVudCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAppbmRleCBmOTUyNzJhNGQ1ZDhhODliNTYwYzZkZWE4MGY2ODljMDFm
MWE2NjZlLi4zNmI3Y2E3NmJhMTA4ZjJjZDM5MmE2YzY0NTkyY2M5YjhhMmYwYTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTI1MCwx
MCArMjUwLDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KCkKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkp
IHsKLSAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKLSAgICB9CisgICAgYXV0byBpbnZhbGlkYXRlID0gW10oU1ZHRWxl
bWVudCYgZWxlbWVudCkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQucmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
OworICAgICAgICBlbGVtZW50LnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKKyAgICB9OworCisgICAgaW52YWxpZGF0ZSgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBBZmZp
bmVUcmFuc2Zvcm0qIHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQt
PnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJh
bnNmb3JtKQpAQCAtMjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0cmFu
c2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybTsK
LSAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGludmFsaWRh
dGUoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCmluZGV4IDZkNmFmMjUwNWM0Y2VmMjI5NmM5MDMyMTEyZDg3YWZmNDY3NDk0N2MuLjdj
NWY1NGY4YTI4ZGVlMDlmNzBmZjAzMTBjMzU4MmI2ZTA5NzkyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTY4LDggKzY4LDkgQEAgdm9pZCBTVkdDaXJjbGVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW4KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5UmVn
aXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVT
VkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhp
bnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5
NGIxMTgzYzUzZjkyY2VkNjliLi4xMDAwOTIyODk2ZDYxZTMwY2U3ODJlMzc4NTMzNjJkMWM3NDM0
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjYs
OSArNjYsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04Miw4ICs4MCw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAo
Y2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAg
ICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlw
UGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggMGNkNGZk
NDFlNTNhZDE1ODI4MzI4ZTNiMTNmODJlZTYwNjVlMmQ5ZC4uOGRkYzhkYmQ3ZTJkNDE1ZmFjYzgz
ODFhMjA4MGY1Y2RlYTY4ODkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3
IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZl
UGFyZW50KHRoaXMpOworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CmluZGV4IGRjNTkyYTJkNzQxZGYzN2ZlOTY3Y2ZjYjMyY2VkNmM3NjYxMDlmZDYuLmU1NzM5MzY1
ZDU5NTlhYTU4ZWQ4ZjI3NTNjYzg5YzFhMmE2NDBiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5
Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKICAgICAvLyBTVkdMZW5ndGhMaXN0IGFuZCBu
b3QgdGhlIFNWR0xlbmd0aC4KICAgICBwcm9wZXJ0eS0+c2V0RGlydHkoKTsKIAotICAgIGludmFs
aWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGly
dHkoKTsKICAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0
eUF0dHJpYnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lk
IFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHkpCiAgICAgZWxzZQogICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkp
OwogCi0gICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRBbmltYXRlZFNWR0F0
dHJpYnV0ZXNBcmVEaXJ0eSgpOwogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFt
ZSk7CiB9CiAKQEAgLTY1OSw3ICs2NTksNyBAQCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+
IFNWR0VsZW1lbnQ6OmNyZWF0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dAogICAg
ICAgICBpbnN0YW5jZS0+cHJvcGVydHlSZWdpc3RyeSgpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2Uo
YXR0cmlidXRlTmFtZSwgKmFuaW1hdG9yKTsKICAgICByZXR1cm4gYW5pbWF0b3I7CiB9Ci0gICAg
CisKIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxldGVkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgcHJvcGVydHlBbmltYXRvckZhY3RvcnkoKS5h
bmltYXRvcldpbGxCZURlbGV0ZWQoYXR0cmlidXRlTmFtZSk7CkBAIC04ODMsNiArODgzLDI5IEBA
IHZvaWQgU1ZHRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25hbEhpbnRTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2b2lkIFNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpCit7CisgICAgZW5zdXJl
VW5pcXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkodHJ1
ZSk7CisgICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGN1bGF0aW9uIGZvciAiZWxlbWVudHMgYXMg
cmVzb3VyY2UiIChlLmcuIHJlZmVyZW5jZWQgYnkgZmVJbWFnZSkuCisgICAgaW52YWxpZGF0ZVN0
eWxlKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpCit7CisgICAgbV9uZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
ID0gdHJ1ZTsKKyAgICBpbnZhbGlkYXRlU3R5bGUoKTsKK30KKwordm9pZCBTVkdFbGVtZW50Ojpp
bnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX25lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOworICAgIG1fbmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbiA9IGZhbHNlOwor
fQorCiB2b2lkIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQgPSBjc3NQcm9wZXJ0
eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCAyZDNhMzMxZThlODI1NGU2N2YwYzY3NjJjZDIwNTMyM2ZhOTYwY2NiLi5jZWIyNGJjMWVi
OGMwNGNhNjEzZDQ1ZTRhMmUwYjQ4NDE4N2Q1MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
QEAgLTgyLDggKzgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
KiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICBpbmxp
bmUgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwotICAgIGlubGluZSB2b2lkIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgIGlubGluZSB2b2lkIHNldEFu
aW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CisgICAgdm9pZCBzZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICB2b2lkIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKKyAgICB2b2lkIGludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVl
ZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVsZW1lbnQgYXJlIGNsb25lcyBt
YWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4uCiAgICAgY29uc3QgV2Vha0hh
c2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0OwpAQCAtMTkzLDYgKzE5NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKIAorICAgIGJvb2wg
bV9uZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uIHsgZmFsc2UgfTsKKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdFbGVtZW50UmFyZURhdGE+IG1fc3ZnUmFyZURhdGE7CiAKICAgICBX
ZWFrSGFzaFNldDxTVkdFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKaW5kZXggNTk3YWEwZWUxNTc2YzIxZTc1
ZTI3ZDQxYWIxNjMyMzhiYjIwOGFiMi4uYzY5ZWM3MGJiNjk5YjQxODljNWZhZTZjZGRkY2EzMTQ1
ZjdjNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKQEAgLTMwLDE4
ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSB2b2lkIFNWR0VsZW1l
bnQ6OmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCkKK2lubGluZSB2b2lkIFNWR0VsZW1lbnQ6OnNl
dEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCkKIHsKICAgICBlbnN1cmVVbmlxdWVFbGVt
ZW50RGF0YSgpLnNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUpOwogfQogCi1p
bmxpbmUgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5
bGUoKQotewotICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxI
aW50U3R5bGVJc0RpcnR5KHRydWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVjYWxjdWxhdGlv
biBmb3IgImVsZW1lbnRzIGFzIHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5IGZlSW1hZ2Up
LgotICAgIGludmFsaWRhdGVTdHlsZSgpOwotfQotCiBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRy
YW5zbGF0b3IgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGtleSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAppbmRl
eCA1OTU5OTcxMWY0YmE5OTQxMmQ5ODcyYjgwMjE0ODg0MDcyNzUyZDE5Li5kNTRjZTJiYTZkMzA3
MTVhZDAxYTBjZWFkMDJmM2QzY2JlYTk2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAKQEAgLTcxLDggKzcxLDkgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkK
IHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSk7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJ
c0RpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IGUxY2M4MzM1YzMyMGQ5ZWZlNWMyNDM4NDMwZmM4Mzk3
NDhlNzZmMzUuLjI2NzdhOWM5ZDcyODk4OWQ5N2VlMGM5MmQzZWU4MjYzOTkzYTc1MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtODMsMTUgKzgzLDEyIEBA
IGJvb2wgU1ZHRkVCbGVuZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVhCiAKIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikg
ewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCmluZGV4IDY5ZjkxZGMwZTUwOTY3Y2ZjNjdjY2FhZmYwMGZkMTRhM2Q4NTY3YzQuLjliNTJj
NGY1NzUwMWNmODAyNzBlM2FmMmYzNjg1OGVhMDhmZjI4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtODQsMTUgKzg0LDEyIEBAIGJv
b2wgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqIGVmZmVjdCwgY29uCiAKIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dmFsdWVzQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDlhNzVi
NDYyODdmYzA2OTQwOTIyZWMzOTUxMzE3M2VlZjI0MDMzZTguLmI1Mzc4ZWI3M2U0NTY3Nzc0YWRk
ZDE0MjU2ZjJmYzk4Nzg1ZDMzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsMTcgQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK3sKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKK30KKwogUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QK
IHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggNjRmN2I5YWU4
OTFhYjkzMTI3ZDk5MGY0NDdlZTRkZjI2NDU1OGIxMS4uZjE0YzNjNzcyYTZjM2NkOGExNDlkMGRk
NmM0MjJmMGVjMzBjN2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQwLDggKzQwLDggQEAgcHJpdmF0ZToKICAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIC8vIEZJWE1F
OiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcAppbmRleCA0NTllZGFiODU5N2JhMjc5NmM3NzkyZjlmZWU1NzhjOTgzOGRh
YTFhLi45N2I0Y2M1YzA2YzczYjE3MDQ0NWVkYmI4ODkxNzM2NjZlNDM0YmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE1LDE1ICsxMTUs
MTIgQEAgYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29uc3QKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmsxQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjprM0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0
cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4y
QXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDAyYmMzN2I2ZDRhM2Jj
MjhkYThhZWQzNjNhZTE3NDk3ZjYxOWY3NmIuLmI5NGNkZTU4ZWJiNTU1YWU0YTY1ODU3MTUxYTFk
NmE0NjE1OGFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcApAQCAtMTYwLDI3ICsxNjAsMjQgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVy
WC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJu
YWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0
S2VybmVsVW5pdExlbmd0aChmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fa2VybmVsVW5pdExl
bmd0aFgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmJpYXNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5l
bFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0
cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJu
ZWxNYXRyaXhBdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpCisgICAgICAgICAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCmluZGV4IDk2ODRmYWI4MDBjYzA1NmE4MzRiNzQ3ZWNmMmQ3M2RiYWYwZmM2
OTguLjhhNmRjOTcwZDI1NGUyYzQxYzRjOGE5YThiN2NkMmU1NjZhOWEzODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
MjUsMTUgKzEyNSwxMiBAQCBib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CmluZGV4IGI2MmM0NjQ5YmUxMzk5NmMxODFlM2E5ODZlMGY5YzNjM2Q1M2RiMTQuLjUyMzY3OGRk
OTY5NjM0NmJiYzY4ZGNjNmUzODRkZDc3MmUwNmE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC05OSwxNSArOTksMTIg
QEAgYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKIAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA0
NTk5MTBlNTRkMmY2MDU2ZWEyNTliMTg4MzliM2UzZTliNTMxNjgyLi5iZGM4ZGNlZjZiYjk5NDA1
MjRmZGE3NDdhODM0OTIyOGVhZWEyODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9z
dGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25Z
LT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYjVmM2M3YjZjZWZm
ZDY1ZGZkMGFlMTFhNGE5YjJiMmUwZDgzYjhhMy4uNDVkZWQwMDA1Njc1MGI1ZDYyOTNkMDM5NDFh
NzNjMjQ5MmQ3M2FhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2
aWF0aW9uWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0
QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0YTljM2M0NWE5MjNlYmQyYWJkZjVhMWZkMmQ3
ZmU1MDYwNzk0ZDQzLi5kNWU4Njg5NmI1ZDY1MTI4Nzg4Njk1N2VjOGZmZjllOGJmYTgwNzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEs
NyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAg
fSBlbHNlIGlmIChpczxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3du
Y2FzdDxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgq
dGhpcyk7CiAKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
QEAgLTEyNyw5ICsxMjcsOSBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogCiB2b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjUsMTYg
KzE2NSwxMSBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIGlmICghaXNDb25uZWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQo
KTsKLQorICAgIGF1dG8gcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOwotICAgIGlmICghcGFyZW50UmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnBhcmVudFJlbmRlcmVyKTsKKyAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50
KS5zZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSW50UmVjdCBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAKaW5kZXggYzYyNTI2Y2NkNzU4MzI3MGU4ODU2ZDEyZTMyN2RlYzMzNDk0YjAxMi4u
ODdhMmUwMjFlNDcwYWQ5NWQzZDM3NTQ0ZGZjYTc1ZWFkYjA3ODcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0xNTEsMTUgKzE1MSw5IEBAIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y2hhbmdlKTsKLQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6
OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2Rl
KCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVu
ZGVyZXIpOworICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCmluZGV4
IDRiZTkwNzgyNmRiYTA2MTkzNjg0ZTBhNGRhZjViYTJiNWZhOTRhZmEuLjkxYTZjMTQwNDFkMTU3
ZDg2ZjZhYmZhNjI2NWMxOWQ1M2MzYWJjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlTm9kZUVsZW1lbnQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tCiAKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMp
OworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuY3BwCmluZGV4IGFmYjk5OTQwMGQ1MDI2NjczNDI3ZWI3NTA4NjU1ZWUyYzhjYzFm
OTUuLjg2NTA2NjAyNDZiMmJjYmM0YWJlMDA3OWUyN2ZmZGI3ZWFiOWIzMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQgeCwgZmxvYXQg
eSkKIHsKICAgICBtX3JhZGl1c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3JhZGl1
c1ktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtOTgsMTUgKzk4LDEyIEBAIGJvb2wgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZm
ZWN0LCBjb25zCiAKIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFkaXVz
QXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewot
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
aW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikK
KyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNi
Mjc0My4uMjViODZhZDkzMmQ1YmM3MzlhMTQwOWZmZGM4NzkyNWFhYzIxZjM3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDY4MTUyNjgwODJmZDg4YzI2Nzc3OWYzMTE5ODkzZWQ2MDgzMjA2YjkuLmE3MjM5NDI2
NWNkMGQyOGE3Mjk2MjExN2JkYTAzYmM0NGFmMWFiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEzNSwxNSArMTM1
LDEyIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0CiAKIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggMmE3YTNmNDkzYmVhZmExZTJkMjM0
Y2UzYTlkY2EzZTgyMzM4NTg3Zi4uYTk3OWRjOWMzYWUwNTYyZGI4YzljODRmNjI1NjQxNDQ5OThj
NzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNTgsOSAr
NTgsOSBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5k
ZXggNTU3OGI1MTlhMzYyMmJkNzA2YWQyN2JmZTRjNjAwMzkxNDg1OGNhMC4uMjQ0MjdmM2JmYTE0
Zjc4OWU0YWQ4NWJiOGZjOThlYTRjY2Q2NGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcApAQCAtOTIsMTYgKzkyLDE3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
CiAKIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgICAg
IHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgfQog
Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXROZWVkc0xheW91dCgpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBTVkdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKQEAgLTExNCw4ICsxMTUsNyBAQCB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAg
IGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkK
LSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAw
MGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi45MTZhZTUyODBjMTFlZTQ3
MTFjMmY3ZDhlMmE3ZjNiMWUwOGRkOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgs
OCArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICB9CiAKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKQEAgLTkxLDcgKzkwLDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2gKIAogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpAQCAtMTA3LDIwICsxMDYs
MTMgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQor
dm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHIgcGFy
ZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZSgpKQorICAgIGF1dG8gcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CisgICAg
aWYgKCFpczxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KHBhcmVudCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNh
c3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpLT5zZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTJlMGQy
MWM0MTFhZWE5OWJkNjQ4YjdiNWI2ZTg4M2U0YzFmYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBA
IC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsK
ICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6CkBAIC04MSwxMyArODAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CiB9OwogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQoU1ZHRWxlbWVudCopOwotCi1pbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OmludmFsaWRhdGUoKQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5k
ZXJlciA9IHJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0K
K3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Jik7CiAKIGlu
bGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCA1YWI5
OTU5M2QyZGEyZWYzNzA2MjkzMGU2YzQ5MjFkNmFiYmFkMzU1Li45NWZmNTU2Y2IwMjBhZDI3YjNl
ZDM3MWEzNWM2ZmE0NWFlYjFlNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc0LDE1ICs3NCwxNCBAQCB2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdAogCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOworICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXggZTZmMmMxNzk5NjZhYmRhMjIxNGI3NmIwOTZh
M2M1YWI1NDI3ZjFhMC4uYzFhMTUxYjNiYTkxZjBjYjgwY2YzMTFlMTlhZTA3ZGJhYWFjNzJlNCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTE0OSw5ICsx
NDksNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnBhdGhMZW5ndGhBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICByZXR1cm47CisgICAg
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAg
ICBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA3NzRjMTFlM2Q5ODcz
YjkzY2RlOTY4YjM3ZWIzNDdjNzY1ODI0ODNlLi42NDVhY2FjZDBlZTQxNzRjMjRhZjBiOTJjM2I2
MjhjOTE5NjI0ZTNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cApAQCAtNzcsMTAgKzc3LDE1IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyCiAKIHZvaWQgU1ZH
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBpZiAoU1ZH
VVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBA
IC05NCw4ICs5OSw3IEBAIHZvaWQgU1ZHR3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGls
ZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5k
ZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNM
YXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9
CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCA0OWEyY2E2OThm
NTRlNTJmMDkyMGI1NDg0NmRlMzVkMzVlYTJkMWZhLi5jMWQ4NDVhZGNmN2U4YmFlOTNhZWEwMDgy
ZmQyYjQxYmFiYjhiZDg4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhp
Y3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50
LmNwcApAQCAtMTMyLDE0ICsxMzIsMTIgQEAgdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHIKIAogdm9p
ZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zv
cm1BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3Jt
QXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAg
ICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5k
ZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICAgICAgfQotCisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
SW1hZ2VFbGVtZW50LmNwcAppbmRleCBhNDY3Y2VhMGIyZDE2ZDg5ODFhNDBmMzc3NDE0M2I3ZjMz
MjRmY2E4Li5iNGM4MTFjYTg1MmQ3NDEwODczNGVjOGMyMTRlMDI0MGMxY2VlYTg0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApAQCAtOTgsMjIgKzk4LDIyIEBAIHZvaWQg
U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwog
CiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgIGlmIChkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFn
ZVZpZXdwb3J0KCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAg
ICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZp
ZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRh
dGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNE
aXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCBlZmI5Yjhi
Y2ZkOWNjOTVlYWE0OTNiZmUxYWFkOTE5Y2E3OWNiM2M1Li5hMGI0YjUxODk2ZjBiYWFiNmI5YmYz
NzU5ZDAzMzdiYjAwNDgzMmJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGlu
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAK
QEAgLTcyLDEyICs3MiwxMCBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKLQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2Fz
dDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJl
bmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggODQ4ZjZh
MjJmOGUyNTEzNjY3YmIwNGNiYmI5OWY4MDlhMjY4ZmM3Zi4uNzM2MWJkN2I2NjBmZWFlNzEwNTMy
ZmE2NGUzNmRjZjJlZDZmNDMzNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVh
ckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTgzLDggKzgzLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFk
aWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAg
ICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNl
dE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01h
cmtlckVsZW1lbnQuY3BwCmluZGV4IDBiNDNiYjg0MmU1ZTM2MmFhZWY4NzlmZDYwNjNhYTU3NmVh
ZTIxYWIuLjJiNzk0MWQ4YzYwNzI1ZDAxMmMzYmFkZmVjZDEwMWFjMTdjZGQzMTUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTk4LDE0ICs5OCwxMyBAQCB2b2lk
IFNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJp
YnV0ZShhdHRyTmFtZSkpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1h
dGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1Bh
cmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0g
ICAgCisKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAg
ICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTksOCAr
MTE4LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFN0cmlu
ZyBTVkdNYXJrZXJFbGVtZW50OjpvcmllbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNr
RWxlbWVudC5jcHAKaW5kZXggMWJmYjQxZDM3MGZjMzM2M2NiMDBhYjY0ODQ4NGRmOWQ1YTAzZWNk
ZC4uMjNlNGNiOWY3NDBkMTZhZmFlMmQ5MzgzYTVjZjI2MWQxNzA0NjcxNSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBAIC05OCwxNSArOTgsMTIgQEAgdm9pZCBTVkdNYXNr
RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3Qg
QXRvbVN0cmluZyYKIAogdm9pZCBTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQ
cmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBy
ZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgICAgIHNldFByZXNlbnRhdGlv
bmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTEyMCw4ICsxMTcsNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBD
aGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBlMTUxOTBlZjgzY2U2
NWMyYTE0YzBhYjIxYzlmY2I1MmZiZDMxMDRkLi4yMjNkNzIwZTdiMDg2MTllNzkzNzc5M2M2YzBh
NDhmYzU1ZTk5ZTZlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTY1
LDE1ICs2NSwxMiBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BhdGhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKKyAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVNUGF0
aERlcGVuZGVuY2llcygpOwotCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAg
ICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotCisgICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVu
ZGVuY2llcygpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVy
bkVsZW1lbnQuY3BwCmluZGV4IGM0NzQzNDA2MjIyYjU1ZGEwNTFjZmFlYWYzZWFjMmM5NTFlYjY1
MTUuLjQzMTBiNzdmNTQyNTExZGZhMjkzNmFiYzYxODk3ZGMxNDFhNzg1YWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTEwLDE1ICsxMTAsMTggQEAgdm9p
ZCBTVkdQYXR0ZXJuRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtZSwgY29uc3QgQXRvbVN0cmkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlu
dmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAg
ICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTMyLDggKzEzNSw3IEBAIHZvaWQg
U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hh
bmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNl
cikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5
bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UG9seUVsZW1lbnQuY3BwCmluZGV4IGVhMWZlMDkyYTE2MjM3MTNjOTM4MzNhNWQ5NTdhZGNlMWU2
MzkxMDAuLmE2Mjk2NjI1ZWQ5OGFkOTA2ZDM5ZmFmM2ExODk2MGY4OWVhOTU4NmIgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQgU1ZH
UG9seUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpwb2ludHNBdHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKGF0
dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNBdHRyKTsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRv
d25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmVu
ZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKLSAgICAgICAgfQorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggZTVlMjFhZmVlOWUzZjU2YjE4Nzhj
ZDNlMmU5MTk4NDA0ZjQ5ODljZS4uZjMzOTk0YTkwYWFhNjg5MjAzMjU2NDFhZTQ4NzllNDY0NDVj
YjY3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHAKQEAgLTg5LDggKzg5LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJl
bGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9i
amVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7
CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Jl
Y3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5k
ZXggZmQ0MGE4ZWNkOGJiOTlmYjRjYTViYWY1NWVjM2MzMjU3YjhiODE5Yy4uYWQ3YWFjODk5ZTlh
ZGE5NDgyYjg5YTAwMzExYjY3ZmM3MmM2MGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1JlY3RFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVs
ZW1lbnQuY3BwCkBAIC03OSw4ICs3OSw5IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiB2b2lk
IFNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRl
ZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAKaW5kZXggOTQ1ZGJjMGM5M2NkY2ZmNTc2YWRiNTE2MDNlN2M0NmMzNjY2NGI3Yi4uZDI5MzBh
YWVlZTQ3MDMzN2M1NjMxOGVjNDlkOWYwNWUwOTAzMmNjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdT
VkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0
Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xhdGlvbikKIAogdm9pZCBT
VkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKIHsKLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAg
IGlmIChwYXJlbnROb2RlKCkgPT0gJmRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3
KCkpCiAgICAgICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5yZXBhaW50KCk7CiB9CkBAIC0y
MDksNyArMjA4LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSgpOwogCiAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CkBAIC0yMTcsMTEgKzIxNiw5IEBAIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAg
ICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQotICAgICAgICByZXR1cm47CisgICAgICAg
IHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBT
VkdHcmFwaGljc0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpAQCAtNTgz
LDcgKzU4MCw2IEBAIFNWR1NWR0VsZW1lbnQqIFNWR1NWR0VsZW1lbnQ6OmZpbmRSb290QW5jaG9y
KFN0cmluZ1ZpZXcgZnJhZ21lbnRJZGVudGlmaWVyKSBjb25zCiAKIGJvb2wgU1ZHU1ZHRWxlbWVu
dDo6c2Nyb2xsVG9GcmFnbWVudChTdHJpbmdWaWV3IGZyYWdtZW50SWRlbnRpZmllcikKIHsKLSAg
ICBhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKTsKICAgICBhdXRvIHZpZXcgPSBtX3Zp
ZXdTcGVjOwogICAgIGlmICh2aWV3KQogICAgICAgICB2aWV3LT5yZXNldCgpOwpAQCAtNTkzLDgg
KzU4OSw4IEBAIGJvb2wgU1ZHU1ZHRWxlbWVudDo6c2Nyb2xsVG9GcmFnbWVudChTdHJpbmdWaWV3
IGZyYWdtZW50SWRlbnRpZmllcikKIAogICAgIGlmIChmcmFnbWVudElkZW50aWZpZXIuc3RhcnRz
V2l0aCgieHBvaW50ZXIoIikpIHsKICAgICAgICAgLy8gRklYTUU6IFhQb2ludGVyIHJlZmVyZW5j
ZXMgYXJlIGlnbm9yZWQgKGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0x
NzQ5MSkKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIGhhZFVzZUN1cnJlbnRWaWV3KQotICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBpZiAoaGFkVXNlQ3VycmVudFZpZXcpCisg
ICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAKQEAgLTYwNSw4ICs2MDEsOCBAQCBib29sIFNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQoU3RyaW5nVmlldyBmcmFnbWVudElkZW50aWZpZXIp
CiAgICAgICAgICAgICBtX3VzZUN1cnJlbnRWaWV3ID0gdHJ1ZTsKICAgICAgICAgZWxzZQogICAg
ICAgICAgICAgdmlldy0+cmVzZXQoKTsKLSAgICAgICAgaWYgKHJlbmRlcmVyICYmIChoYWRVc2VD
dXJyZW50VmlldyB8fCBtX3VzZUN1cnJlbnRWaWV3KSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKKyAgICAgICAgaWYgKChoYWRVc2VDdXJyZW50VmlldyB8fCBtX3VzZUN1cnJlbnRWaWV3
KSkKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICAgICAgcmV0dXJuIG1fdXNlQ3VycmVudFZpZXc7CiAgICAgfQogCkBAIC02MzAsOCArNjI2
LDcgQEAgYm9vbCBTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0ZyYWdtZW50KFN0cmluZ1ZpZXcgZnJh
Z21lbnRJZGVudGlmaWVyKQogICAgICAgICAgICAgfQogCiAgICAgICAgICAgICByb290RWxlbWVu
dC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp2aWV3RWxlbWVudCk7Ci0gICAgICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSByb290RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICByb290RWxlbWVudC0+c2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICAgICAgbV9jdXJyZW50Vmlld0Zy
YWdtZW50SWRlbnRpZmllciA9IGZyYWdtZW50SWRlbnRpZmllci50b1N0cmluZygpOwogICAgICAg
ICAgICAgcmV0dXJuIHRydWU7CiAgICAgICAgIH0KQEAgLTY2MSw4ICs2NTYsNyBAQCB2b2lkIFNW
R1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5jaG9yKCkKICAgICB9CiAKICAgICBtX3VzZUN1cnJl
bnRWaWV3ID0gZmFsc2U7Ci0gICAgaWYgKHJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKCkpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0K
IAogdm9pZCBTVkdTVkdFbGVtZW50Ojppbmhlcml0Vmlld0F0dHJpYnV0ZXMoY29uc3QgU1ZHVmll
d0VsZW1lbnQmIHZpZXdFbGVtZW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAK
aW5kZXggMTk1NzAwZWJmN2JhNzQxOTQzYzMxN2M5NmY1MmVlZDU3ZWIyOWEzYy4uN2FhNzg2Yjc5
OGViNzFmYTJhMzQ1YmYwZGEyOGQyMTM0NzIyNjA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwCkBAIC02NCwxMSArNjQsMTAgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYK
IAogdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNl
dEF0dHIpIHsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7
Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpOworICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAyOTkxZGI2OTM0MjA2ZWE5MjdlYmQ4N2YzNzExMTc4
MWU1MjE4MmRlLi5mNDUxMmU5Mjc3MjdkYTE1MTM2MGVhYmI1ZDI4NWNiM2E3OGE2ZmM3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE4NCw4ICsxODQsNyBAQCB2b2lk
IFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Cisg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRD
b250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcAppbmRleCBjMTQ1M2JmYzYwNDA4Yzk1MDc0NjA3N2Q3NjFlZTE0ZDcyOTY1MWZiLi5k
ZDE0ZGFjMGRjZmQzZWU3YjliYjViYmU1Mjc5YmFiM2I2NmIwODgxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTgwLDEzICsxODAsMTAgQEAg
dm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgICAgIG1fc3BlY2lm
aWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpOwotCi0gICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCmluZGV4IGE3NDkxYzRkMWI4NWI5N2UzNDdmZDVh
NzE0MTEzMTRjOTc4NDY2OTMuLmI4ZGQyOTM1MTllY2RkMWRiZTc4MGY1ODc4MTYyM2Y3NTY3ZWE5
MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC04OSwx
OSArODksMTYgQEAgdm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oKTsKLQotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAog
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Cisg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBi
dWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQu
Y3BwCmluZGV4IGZlMjFlNjZhZjU2NjUyODkwYWIzMTgwODNkZDgzMTljZWYxZTYyMDIuLjA1ZTQ4
NDY4Yjg1MzBkMjljZDg5NTVhODMxZTYyYTFkZGFkMWM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAgLTk5LDE2ICs5OSwxMyBA
QCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgICAgICBpZiAoYXR0ck5hbWUgIT0gU1ZHTmFtZXM6
OnJvdGF0ZUF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0
ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVyZXIpKQotICAgICAgICAgICAgICAgIHRleHRB
bmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0ZXh0QW5jZXN0
b3IgPSByZW5kZXJlcigpID8gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2Vz
dG9yKCpyZW5kZXJlcigpKSA6IG51bGxwdHIpCisgICAgICAgICAgICB0ZXh0QW5jZXN0b3ItPnNl
dE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKIAorICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAppbmRleCAwNTQ3Y2NhOWQyNmZiZDBmMzk1OTUz
YWFhNDllZGJhNTIyMjA2NDJkLi44OGIwN2NlNzVhYjI3ZmNjMzQ0NWRjYzRiM2FjM2EzNDMxNjJl
OTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNTYsMjEgKzE1Niwy
MSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENs
b25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1lbgogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgdXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAg
ICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVubmVjZXNzYXJpbHkgaW5lZmZpY2llbnQgdG8gdXBk
YXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBlYWNoIHRpbWUgZWl0aGVyIGlzIGNoYW5nZWQuCiAg
ICAgICAgICAgICBpZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAg
ICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdl
dENsb25lKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworCisgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICB1cGRhdGVSZWxhdGl2
ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHVVJJ
UmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlRXh0ZXJuYWxE
b2N1bWVudCgpOwogICAgICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICByZXR1
cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNj
MzZjMDhiNTAzMjNiYzIxNDRiY2ViZTQ5MGU1Li4yYWNlYmNjODY4NTA5ZjM2YTI4MDQyZWE5NTBh
ZTQ4ODljM2UxMzcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU0
LDE3ICs1NCwxMyBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1ZpZXdFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewotICAgIC8vIFdlIGlnbm9yZSBjaGFuZ2VzIHRvIFNWR05hbWVzOjp2aWV3VGFyZ2V0QXR0ciwg
d2hpY2ggaXMgZGVwcmVjYXRlZCBhbmQgdW51c2VkIGluIFdlYkNvcmUuCi0gICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKQotICAgICAgICByZXR1cm47
Ci0KICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVs
ZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGlmICghbV90YXJnZXRFbGVt
ZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVy
aXRWaWV3QXR0cmlidXRlcygqdGhpcyk7CiAKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqbV90YXJnZXRFbGVtZW50KTsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5z
ZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0
dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRleCA1ZjIzYjMwMTI2ZjQxZmE0MmQxZjY4MDgwY2U4Yjk0
NDk1M2FlZWIzLi5hNmRlNzhlYTQ4NDQzNTNhNWNiMzlkYjJiNzBlZDg1NWI5ZDYzYzFkIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRv
ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5p
bWF0b3IuY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgU1ZHQXR0cmlidXRlQW5pbWF0b3I6Omlz
QW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IoY29uc3QgU1ZHRWxlbWVudCYgdGFyCiB2b2lk
IFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5bGUoU1ZHRWxlbWVudCYgdGFyZ2V0
RWxlbWVudCkKIHsKICAgICBTVkdFbGVtZW50OjpJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKHRhcmdldEVsZW1lbnQpOwotICAgIHRhcmdldEVsZW1lbnQuaW52YWxpZGF0ZVNWR1ByZXNl
bnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgdGFyZ2V0RWxlbWVudC5zZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKIH0KIAogdm9pZCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBw
bHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJv
cGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453199</attachid>
            <date>2022-02-25 04:58:17 -0800</date>
            <delta_ts>2022-02-26 05:37:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220225125815.patch</filename>
            <type>text/plain</type>
            <size>70161</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjk4MjE4NTU0MjkyNzIx
ODM3YjZjNThmMWVhYTdkZGM4ZWY2ODFlYy4uNzI2NjMyYmE5MDQxMGQ5NjU4ZjE3NjA2M2JhNmIw
ZjhkNzUwZWFiNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzNyBAQAorMjAyMi0wMi0yNSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBzZXROZWVkc0xheW91
dCgpIHNob3VsZCBub3QgYmUgY2FsbGVkIHdoZW4gY2hhbmdpbmcgdGhlIFNWRyBwcm9wZXJ0aWVz
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzAyOTYK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBXSVAKKwor
ICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHSW1hZ2UuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6UmVuZGVyU1ZHSW1hZ2U6OmltYWdlQ2hhbmdlZCk6CisgICAgICAgICogcmVuZGVyaW5n
L3N2Zy9SZW5kZXJTVkdSZXNvdXJjZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpyZW1vdmVGcm9t
Q2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1Jlc291cmNlc0NhY2hlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Jlc291cmNlc0Nh
Y2hlOjpyZW1vdmVSZW5kZXJlckZyb21SZXNvdXJjZXMpOgorICAgICAgICAqIHJlbmRlcmluZy9z
dmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvdXBkYXRpbmcvUmVu
ZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlS
ZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5oOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVk
LgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21w
b3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVD
b252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVz
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgIChXZWJDb3JlOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9tZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NW
R0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzY3JvbGxUb0Zy
YWdtZW50KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnJlc2V0U2Nyb2xsQW5j
aG9yKToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdUUmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5
bGUpOgorCiAyMDIyLTAyLTI1ICBDYXJsb3MgR2FyY2lhIENhbXBvcyAgPGNnYXJjaWFAaWdhbGlh
LmNvbT4KIAogICAgICAgICBBWDogTGlzdCBpdGVtIG1hcmtlciBub3QgZXhwb3NlZCB3aGVuIG5v
dCBhIGRpcmVjdCBjaGlsZCBvZiBhIGxpc3QgaXRlbQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBlY2YxNzEzMWExYzUyNTkyYTVmNzMw
YTZkMTU5ZjExZDg4YWRmYWE3Li5hMTIzM2RlZWE5N2NlZmI1NmE1N2RhYTVjMDdlM2M2NmVmZThj
MzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0lt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcApAQCAtMjQ1LDE4ICsyNDUsMTMgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFu
Z2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgaWYgKGF1dG8qIHJlc291
cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhp
cykpCiAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKIAot
ICAgIC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hh
bmdlZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCp0aGlzLCBmYWxzZSk7Ci0KICAgICAvLyBVcGRhdGUgdGhlIFNWR0lt
YWdlQ2FjaGUgc2l6ZUFuZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdlIGxvYWRpbmcgZmluaXNo
ZWQgYWZ0ZXIgbGF5b3V0LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9OTk0ODkpCiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwot
ICAgIGlmICh1cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNldE5lZWRzTGF5b3V0KCk7
CiAKICAgICBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICByZXBhaW50KCk7
CisgICAgaW1hZ2VFbGVtZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8
TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVy
TW9kZWxPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9S
ZW5kZXJTVkdSZXNvdXJjZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlLmNwcAppbmRleCBlNjcxMmZjMjZmMDMwOGRmMGNlYTE4MmIwOWZlYTczOWJm
M2QyNWM3Li5kMjE1MTQzZWYzNWY1Y2M0OWQxZmE3ZjU4ZmVjNDQ0MzVmZWFkN2EyIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcApA
QCAtMTU5LDE2ICsxNTksNyBAQCBSZW5kZXJTVkdSZXNvdXJjZVNvbGlkQ29sb3IqIFJlbmRlclNW
R1Jlc291cmNlOjpzaGFyZWRTb2xpZFBhaW50aW5nUmVzb3VyY2UoKQogCiBzdGF0aWMgdm9pZCBy
ZW1vdmVGcm9tQ2FjaGVBbmRJbnZhbGlkYXRlRGVwZW5kZW5jaWVzKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBib29sIG5lZWRzTGF5b3V0KQogewotICAgIGlmIChhdXRvKiByZXNvdXJjZXMgPSBT
VkdSZXNvdXJjZXNDYWNoZTo6Y2FjaGVkUmVzb3VyY2VzRm9yUmVuZGVyZXIocmVuZGVyZXIpKSB7
Ci0gICAgICAgIGlmIChSZW5kZXJTVkdSZXNvdXJjZUZpbHRlciogZmlsdGVyID0gcmVzb3VyY2Vz
LT5maWx0ZXIoKSkKLSAgICAgICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJl
bmRlcmVyKTsKLQotICAgICAgICBpZiAoUmVuZGVyU1ZHUmVzb3VyY2VNYXNrZXIqIG1hc2tlciA9
IHJlc291cmNlcy0+bWFza2VyKCkpCi0gICAgICAgICAgICBtYXNrZXItPnJlbW92ZUNsaWVudEZy
b21DYWNoZShyZW5kZXJlcik7Ci0KLSAgICAgICAgaWYgKFJlbmRlclNWR1Jlc291cmNlQ2xpcHBl
ciogY2xpcHBlciA9IHJlc291cmNlcy0+Y2xpcHBlcigpKQotICAgICAgICAgICAgY2xpcHBlci0+
cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKLSAgICB9CisgICAgU1ZHUmVzb3VyY2Vz
Q2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbVJlc291cmNlcyhyZW5kZXJlcik7CiAKICAgICBpZiAo
IWlzPFNWR0VsZW1lbnQ+KHJlbmRlcmVyLmVsZW1lbnQoKSkpCiAgICAgICAgIHJldHVybjsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAK
aW5kZXggNjA4NmNlZjllODE4NmE1OTBkM2FjMWExODYyYjk1M2Q1YjUyYzFkNS4uNmUyYmFiZDA5
MGE4ZTc2OGQ4M2ZmMDVlOWU2NDdhODYzOGZkYThkNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5jcHAKQEAgLTE3MCw2ICsxNzAsMjIg
QEAgdm9pZCBTVkdSZXNvdXJjZXNDYWNoZTo6cmVzb3VyY2VEZXN0cm95ZWQoUmVuZGVyU1ZHUmVz
b3VyY2VDb250YWluZXImIHJlc291cmNlKQogICAgIH0KIH0KIAordm9pZCBTVkdSZXNvdXJjZXND
YWNoZTo6cmVtb3ZlUmVuZGVyZXJGcm9tUmVzb3VyY2VzKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
KQoreworICAgIGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNv
dXJjZXNGb3JSZW5kZXJlcihyZW5kZXJlcik7CisgICAgaWYgKCFyZXNvdXJjZXMpCisgICAgICAg
IHJldHVybjsKKworICAgIGlmIChhdXRvIGZpbHRlciA9IHJlc291cmNlcy0+ZmlsdGVyKCkpCisg
ICAgICAgIGZpbHRlci0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlm
IChhdXRvIG1hc2tlciA9IHJlc291cmNlcy0+bWFza2VyKCkpCisgICAgICAgIG1hc2tlci0+cmVt
b3ZlQ2xpZW50RnJvbUNhY2hlKHJlbmRlcmVyKTsKKworICAgIGlmIChhdXRvIGNsaXBwZXIgPSBy
ZXNvdXJjZXMtPmNsaXBwZXIoKSkKKyAgICAgICAgY2xpcHBlci0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKHJlbmRlcmVyKTsKK30KKwogU1ZHUmVzb3VyY2VzQ2FjaGU6OlNldFN0eWxlRm9yU2NvcGU6
OlNldFN0eWxlRm9yU2NvcGUoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlclN0
eWxlJiBzY29wZWRTdHlsZSwgY29uc3QgUmVuZGVyU3R5bGUmIG5ld1N0eWxlKQogICAgIDogbV9y
ZW5kZXJlcihyZW5kZXJlcikKICAgICAsIG1fc2NvcGVkU3R5bGUoc2NvcGVkU3R5bGUpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1Jlc291cmNlc0NhY2hlLmgKaW5kZXgg
NThjOTE0NzRkYmIwMzVlYjM1ZDNhYzY3MTdiZjRmZmRkMTg1MmJhZC4uN2I2YmM5ZDJkYjAzNGQy
YmRlMmMxNTA0MjUyOTNiNzNhMTgwYTFlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuaApAQCAtNTgsNiArNTgsOCBAQCBwdWJsaWM6CiAg
ICAgLy8gQ2FsbGVkIGZyb20gUmVuZGVyU1ZHUmVzb3VyY2VDb250YWluZXI6OndpbGxCZURlc3Ry
b3llZCgpLgogICAgIHN0YXRpYyB2b2lkIHJlc291cmNlRGVzdHJveWVkKFJlbmRlclNWR1Jlc291
cmNlQ29udGFpbmVyJik7CiAKKyAgICBzdGF0aWMgdm9pZCByZW1vdmVSZW5kZXJlckZyb21SZXNv
dXJjZXMoUmVuZGVyRWxlbWVudCYpOworCiAgICAgY2xhc3MgU2V0U3R5bGVGb3JTY29wZSB7CiAg
ICAgICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFNldFN0eWxlRm9yU2NvcGUpOwogICAgIHB1Ymxp
YzoKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJU
cmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCmluZGV4IDNlYzQ1MWE5NjEzNzg1NDU1ODVkNjczZGZiYjliZDg4ODUz
MmUyOTAuLjFkZmFkZDFkYTk0MTUzM2M5ZmUzNjU3NDU3ZTJjYmY1YzBlYmYyZmUgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRh
dGVyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2Vu
ZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50
aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUg
IlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1
ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgiCkBAIC0xOTIsNiArMTkzLDkgQEAgdm9p
ZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290
KQogICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZXMpCiAgICAgICAgICAgICB1cGRhdGVFbGVtZW50
UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGVzKTsKIAorICAgICAgICBpZiAoaXM8U1ZH
RWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVt
ZW50KS5pbnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpOworCiAgICAgICAgIHN0
b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIAogICAgICAgICBib29sIG1heUhhdmVSZW5k
ZXJlZERlc2NlbmRhbnRzID0gZWxlbWVudC5yZW5kZXJlcigpIHx8IChlbGVtZW50Lmhhc0Rpc3Bs
YXlDb250ZW50cygpICYmIHNob3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQ
b3NpdGlvbigpLnBhcmVudCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
QW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcAppbmRleCBmOTUyNzJhNGQ1ZDhhODliNTYwYzZkZWE4MGY2ODljMDFm
MWE2NjZlLi4zNmI3Y2E3NmJhMTA4ZjJjZDM5MmE2YzY0NTkyY2M5YjhhMmYwYTYxIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTI1MCwx
MCArMjUwLDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KCkKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAg
IGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkp
IHsKLSAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKLSAgICB9CisgICAgYXV0byBpbnZhbGlkYXRlID0gW10oU1ZHRWxl
bWVudCYgZWxlbWVudCkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQucmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
OworICAgICAgICBlbGVtZW50LnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKKyAgICB9OworCisgICAgaW52YWxpZGF0ZSgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBBZmZp
bmVUcmFuc2Zvcm0qIHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQt
PnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJh
bnNmb3JtKQpAQCAtMjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50
OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0cmFu
c2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNvbnRp
bnVlOwogICAgICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybTsK
LSAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRlcmVy
KCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGludmFsaWRh
dGUoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1l
bnQuY3BwCmluZGV4IDZkNmFmMjUwNWM0Y2VmMjI5NmM5MDMyMTEyZDg3YWZmNDY3NDk0N2MuLjdj
NWY1NGY4YTI4ZGVlMDlmNzBmZjAzMTBjMzU4MmI2ZTA5NzkyNTMgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTY4LDggKzY4LDkgQEAgdm9pZCBTVkdDaXJjbGVF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW4KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5UmVn
aXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVT
VkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhp
bnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5
NGIxMTgzYzUzZjkyY2VkNjliLi4xMDAwOTIyODk2ZDYxZTMwY2U3ODJlMzc4NTMzNjJkMWM3NDM0
NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjYs
OSArNjYsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCkBAIC04Miw4ICs4MCw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAo
Y2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAg
ICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlw
UGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBj
b25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggMGNkNGZk
NDFlNTNhZDE1ODI4MzI4ZTNiMTNmODJlZTYwNjVlMmQ5ZC4uOGRkYzhkYmQ3ZTJkNDE1ZmFjYzgz
ODFhMjA4MGY1Y2RlYTY4ODkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Nv
bXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3
IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZl
UGFyZW50KHRoaXMpOworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0
aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3Bw
CmluZGV4IGRjNTkyYTJkNzQxZGYzN2ZlOTY3Y2ZjYjMyY2VkNmM3NjYxMDlmZDYuLmU1NzM5MzY1
ZDU5NTlhYTU4ZWQ4ZjI3NTNjYzg5YzFhMmE2NDBiOTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5
Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKICAgICAvLyBTVkdMZW5ndGhMaXN0IGFuZCBu
b3QgdGhlIFNWR0xlbmd0aC4KICAgICBwcm9wZXJ0eS0+c2V0RGlydHkoKTsKIAotICAgIGludmFs
aWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGly
dHkoKTsKICAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5wcm9wZXJ0
eUF0dHJpYnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKQEAgLTYyNiw3ICs2MjYsNyBAQCB2b2lk
IFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVydHkmIGFu
aW1hdGVkUHJvcGVydHkpCiAgICAgZWxzZQogICAgICAgICBzZXRTeW5jaHJvbml6ZWRMYXp5QXR0
cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3RyaW5nKCkp
OwogCi0gICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRBbmltYXRlZFNWR0F0
dHJpYnV0ZXNBcmVEaXJ0eSgpOwogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmlidXRlTmFt
ZSk7CiB9CiAKQEAgLTY1OSw3ICs2NTksNyBAQCBSZWZQdHI8U1ZHQXR0cmlidXRlQW5pbWF0b3I+
IFNWR0VsZW1lbnQ6OmNyZWF0ZUFuaW1hdG9yKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dAogICAg
ICAgICBpbnN0YW5jZS0+cHJvcGVydHlSZWdpc3RyeSgpLmFwcGVuZEFuaW1hdGVkSW5zdGFuY2Uo
YXR0cmlidXRlTmFtZSwgKmFuaW1hdG9yKTsKICAgICByZXR1cm4gYW5pbWF0b3I7CiB9Ci0gICAg
CisKIHZvaWQgU1ZHRWxlbWVudDo6YW5pbWF0b3JXaWxsQmVEZWxldGVkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJpYnV0ZU5hbWUpCiB7CiAgICAgcHJvcGVydHlBbmltYXRvckZhY3RvcnkoKS5h
bmltYXRvcldpbGxCZURlbGV0ZWQoYXR0cmlidXRlTmFtZSk7CkBAIC04ODMsNiArODgzLDI5IEBA
IHZvaWQgU1ZHRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRp
b25hbEhpbnRTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2b2lkIFNWR0Vs
ZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpCit7CisgICAgZW5zdXJl
VW5pcXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkodHJ1
ZSk7CisgICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGN1bGF0aW9uIGZvciAiZWxlbWVudHMgYXMg
cmVzb3VyY2UiIChlLmcuIHJlZmVyZW5jZWQgYnkgZmVJbWFnZSkuCisgICAgaW52YWxpZGF0ZVN0
eWxlKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpCit7CisgICAgbV9uZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
ID0gdHJ1ZTsKKyAgICBpbnZhbGlkYXRlU3R5bGUoKTsKK30KKwordm9pZCBTVkdFbGVtZW50Ojpp
bnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpCit7CisgICAgaWYgKCFtX25lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24pCisgICAgICAgIHJldHVybjsKKworICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOworICAgIG1fbmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbiA9IGZhbHNlOwor
fQorCiB2b2lkIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQgPSBjc3NQcm9wZXJ0
eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApp
bmRleCAyZDNhMzMxZThlODI1NGU2N2YwYzY3NjJjZDIwNTMyM2ZhOTYwY2NiLi5jZWIyNGJjMWVi
OGMwNGNhNjEzZDQ1ZTRhMmUwYjQ4NDE4N2Q1MzVlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
QEAgLTgyLDggKzgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1YWwgQWZmaW5lVHJhbnNmb3Jt
KiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBudWxscHRyOyB9CiAKLSAgICBpbmxp
bmUgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwotICAgIGlubGluZSB2b2lkIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgIGlubGluZSB2b2lkIHNldEFu
aW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CisgICAgdm9pZCBzZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICB2b2lkIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKKyAgICB2b2lkIGludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVl
ZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVsZW1lbnQgYXJlIGNsb25lcyBt
YWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4uCiAgICAgY29uc3QgV2Vha0hh
c2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0OwpAQCAtMTkzLDYgKzE5NSw4IEBA
IHByaXZhdGU6CiAKICAgICB2b2lkIGludmFsaWRhdGVJbnN0YW5jZXMoKTsKIAorICAgIGJvb2wg
bV9uZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uIHsgZmFsc2UgfTsKKwogICAgIHN0
ZDo6dW5pcXVlX3B0cjxTVkdFbGVtZW50UmFyZURhdGE+IG1fc3ZnUmFyZURhdGE7CiAKICAgICBX
ZWFrSGFzaFNldDxTVkdFbGVtZW50PiBtX2VsZW1lbnRzV2l0aFJlbGF0aXZlTGVuZ3RoczsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKaW5kZXggNTk3YWEwZWUxNTc2YzIxZTc1
ZTI3ZDQxYWIxNjMyMzhiYjIwOGFiMi4uYzY5ZWM3MGJiNjk5YjQxODljNWZhZTZjZGRkY2EzMTQ1
ZjdjNTU5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVz
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKQEAgLTMwLDE4
ICszMCwxMSBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSB2b2lkIFNWR0VsZW1l
bnQ6OmludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCkKK2lubGluZSB2b2lkIFNWR0VsZW1lbnQ6OnNl
dEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCkKIHsKICAgICBlbnN1cmVVbmlxdWVFbGVt
ZW50RGF0YSgpLnNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUpOwogfQogCi1p
bmxpbmUgdm9pZCBTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5
bGUoKQotewotICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxI
aW50U3R5bGVJc0RpcnR5KHRydWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVjYWxjdWxhdGlv
biBmb3IgImVsZW1lbnRzIGFzIHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5IGZlSW1hZ2Up
LgotICAgIGludmFsaWRhdGVTdHlsZSgpOwotfQotCiBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRy
YW5zbGF0b3IgewogICAgIHN0YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGtleSkKICAgICB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAppbmRl
eCA1OTU5OTcxMWY0YmE5OTQxMmQ5ODcyYjgwMjE0ODg0MDcyNzUyZDE5Li5kNTRjZTJiYTZkMzA3
MTVhZDAxYTBjZWFkMDJmM2QzY2JlYTk2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxp
cHNlRWxlbWVudC5jcHAKQEAgLTcxLDggKzcxLDkgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkK
IHZvaWQgU1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSk7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJ
c0RpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IGUxY2M4MzM1YzMyMGQ5ZWZlNWMyNDM4NDMwZmM4Mzk3
NDhlNzZmMzUuLjI2NzdhOWM5ZDcyODk4OWQ5N2VlMGM5MmQzZWU4MjYzOTkzYTc1MGQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtODMsMTUgKzgzLDEyIEBA
IGJvb2wgU1ZHRkVCbGVuZEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJF
ZmZlY3QqIGVmZmVjdCwgY29uc3QgUXVhCiAKIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjptb2RlQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikg
ewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAg
ICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCmluZGV4IDY5ZjkxZGMwZTUwOTY3Y2ZjNjdjY2FhZmYwMGZkMTRhM2Q4NTY3YzQuLjliNTJj
NGY1NzUwMWNmODAyNzBlM2FmMmYzNjg1OGVhMDhmZjI4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtODQsMTUgKzg0LDEyIEBAIGJv
b2wgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0
ZXJFZmZlY3QqIGVmZmVjdCwgY29uCiAKIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dmFsdWVzQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDlhNzVi
NDYyODdmYzA2OTQwOTIyZWMzOTUxMzE3M2VlZjI0MDMzZTguLmI1Mzc4ZWI3M2U0NTY3Nzc0YWRk
ZDE0MjU2ZjJmYzk4Nzg1ZDMzZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsMTcgQEAgdm9pZCBT
VkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlm
aWVkTmFtZSYgbmFtZSwgY28KICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnBhcnNlQXR0cmlidXRlKG5hbWUsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdGRUNvbXBvbmVu
dFRyYW5zZmVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKK3sKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwor
ICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKK30KKwogUmVmUHRyPEZp
bHRlckVmZmVjdD4gU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChj
b25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QK
IHsKICAgICBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uIHJlZDsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggNjRmN2I5YWU4
OTFhYjkzMTI3ZDk5MGY0NDdlZTRkZjI2NDU1OGIxMS4uZjE0YzNjNzcyYTZjM2NkOGExNDlkMGRk
NmM0MjJmMGVjMzBjN2FlMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKQEAgLTQwLDggKzQwLDggQEAgcHJpdmF0ZToKICAgICB1
c2luZyBQcm9wZXJ0eVJlZ2lzdHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+OwogICAgIGNvbnN0IFNWR1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIC8vIEZJWE1F
OiBzdmdBdHRyaWJ1dGVDaGFuZ2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZv
aWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAK
ICAgICBWZWN0b3I8QXRvbVN0cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBv
dmVycmlkZSB7IHJldHVybiB7IGluMSgpIH07IH0KICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBm
aWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZl
Y3RvciYpIGNvbnN0IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3Np
dGVFbGVtZW50LmNwcAppbmRleCA0NTllZGFiODU5N2JhMjc5NmM3NzkyZjlmZWU1NzhjOTgzOGRh
YTFhLi45N2I0Y2M1YzA2YzczYjE3MDQ0NWVkYmI4ODkxNzM2NjZlNDM0YmVmIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE1LDE1ICsxMTUs
MTIgQEAgYm9vbCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0
ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29uc3QKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmsxQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjprM0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0
cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4y
QXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDAyYmMzN2I2ZDRhM2Jj
MjhkYThhZWQzNjNhZTE3NDk3ZjYxOWY3NmIuLmI5NGNkZTU4ZWJiNTU1YWU0YTY1ODU3MTUxYTFk
NmE0NjE1OGFiNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50LmNwcApAQCAtMTYwLDI3ICsxNjAsMjQgQEAgdm9pZCBTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVy
WC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJu
YWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0
S2VybmVsVW5pdExlbmd0aChmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fa2VybmVsVW5pdExl
bmd0aFgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmJpYXNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5l
bFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0
cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVy
bjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJu
ZWxNYXRyaXhBdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpCisgICAgICAgICAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGln
aHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGlu
Z0VsZW1lbnQuY3BwCmluZGV4IDk2ODRmYWI4MDBjYzA1NmE4MzRiNzQ3ZWNmMmQ3M2RiYWYwZmM2
OTguLjhhNmRjOTcwZDI1NGUyYzQxYzRjOGE5YThiN2NkMmU1NjZhOWEzODMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
MjUsMTUgKzEyNSwxMiBAQCBib29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0Rmls
dGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VT
Y2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09
IFNWR05hbWVzOjpsaWdodGluZ19jb2xvckF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3Bw
CmluZGV4IGI2MmM0NjQ5YmUxMzk5NmMxODFlM2E5ODZlMGY5YzNjM2Q1M2RiMTQuLjUyMzY3OGRk
OTY5NjM0NmJiYzY4ZGNjNmUzODRkZDc3MmUwNmE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC05OSwxNSArOTksMTIg
QEAgYm9vbCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJp
YnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwKIAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnNjYWxlQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRy
TmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA0
NTk5MTBlNTRkMmY2MDU2ZWEyNTliMTg4MzliM2UzZTliNTMxNjgyLi5iZGM4ZGNlZjZiYjk5NDA1
MjRmZGE3NDdhODM0OTIyOGVhZWEyODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hh
ZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9z
dGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25Z
LT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYjVmM2M3YjZjZWZm
ZDY1ZGZkMGFlMTFhNGE5YjJiMmUwZDgzYjhhMy4uNDVkZWQwMDA1Njc1MGI1ZDYyOTNkMDM5NDFh
NzNjMjQ5MmQ3M2FhNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2
aWF0aW9uWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0
QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAppbmRleCA0YTljM2M0NWE5MjNlYmQyYWJkZjVhMWZkMmQ3
ZmU1MDYwNzk0ZDQzLi5kNWU4Njg5NmI1ZDY1MTI4Nzg4Njk1N2VjOGZmZjllOGJmYTgwNzRlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEs
NyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAg
fSBlbHNlIGlmIChpczxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3du
Y2FzdDxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgq
dGhpcyk7CiAKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
QEAgLTEyNyw5ICsxMjcsOSBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogCiB2b2lkIFNWR0ZF
SW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RS
YXRpb0F0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjUsMTYg
KzE2NSwxMSBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRS
ZXNvdXJjZSYsIGNvbnN0IE5ldHdvcmtMb2FkTWV0cmljcwogICAgIGlmICghaXNDb25uZWN0ZWQo
KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQo
KTsKLQorICAgIGF1dG8gcGFyZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50
IHx8ICFwYXJlbnQtPmhhc1RhZ05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAgICAgICAgIHJl
dHVybjsKIAotICAgIFJlbmRlckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5k
ZXJlcigpOwotICAgIGlmICghcGFyZW50UmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnBhcmVudFJlbmRlcmVyKTsKKyAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50
KS5zZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHN0YXRpYyBp
bmxpbmUgSW50UmVjdCBzY2FsZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0
LCBjb25zdCBGbG9hdFNpemUmIHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAKaW5kZXggYzYyNTI2Y2NkNzU4MzI3MGU4ODU2ZDEyZTMyN2RlYzMzNDk0YjAxMi4u
ODdhMmUwMjFlNDcwYWQ5NWQzZDM3NTQ0ZGZjYTc1ZWFkYjA3ODcyMSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0xNTEsMTUgKzE1MSw5IEBAIHZvaWQgU1ZH
RkVMaWdodEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3Qg
Q2hpbGRDaGFuZ2UmIGNoYW5nZSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQo
Y2hhbmdlKTsKLQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6
OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2Rl
KCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVu
ZGVyZXItPmlzU1ZHUmVzb3VyY2VGaWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVu
ZGVyZXIpOworICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogfQog
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCmluZGV4
IDRiZTkwNzgyNmRiYTA2MTkzNjg0ZTBhNGRhZjViYTJiNWZhOTRhZmEuLjkxYTZjMTQwNDFkMTU3
ZDg2ZjZhYmZhNjI2NWMxOWQ1M2MzYWJjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1lcmdlTm9kZUVsZW1lbnQuY3BwCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgU1ZHRkVNZXJnZU5v
ZGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tCiAKIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMp
OworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TW9ycGhvbG9neUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9n
eUVsZW1lbnQuY3BwCmluZGV4IGFmYjk5OTQwMGQ1MDI2NjczNDI3ZWI3NTA4NjU1ZWUyYzhjYzFm
OTUuLjg2NTA2NjAyNDZiMmJjYmM0YWJlMDA3OWUyN2ZmZGI3ZWFiOWIzMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcg
QEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQgeCwgZmxvYXQg
eSkKIHsKICAgICBtX3JhZGl1c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3JhZGl1
c1ktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtOTgsMTUgKzk4LDEyIEBAIGJvb2wgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZm
ZWN0LCBjb25zCiAKIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFkaXVz
QXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewot
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
aW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikK
KyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAg
ICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zm
c2V0RWxlbWVudC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNi
Mjc0My4uMjViODZhZDkzMmQ1YmM3MzlhMTQwOWZmZGM4NzkyNWFhYzIxZjM3NSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9p
ZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDY4MTUyNjgwODJmZDg4YzI2Nzc3OWYzMTE5ODkzZWQ2MDgzMjA2YjkuLmE3MjM5NDI2
NWNkMGQyOGE3Mjk2MjExN2JkYTAzYmM0NGFmMWFiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEzNSwxNSArMTM1
LDEyIEBAIGJvb2wgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0
QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0CiAKIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6a2VybmVsVW5pdExlbmd0aEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjppbkF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggMmE3YTNmNDkzYmVhZmExZTJkMjM0
Y2UzYTlkY2EzZTgyMzM4NTg3Zi4uYTk3OWRjOWMzYWUwNTYyZGI4YzljODRmNjI1NjQxNDQ5OThj
NzA5MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNTgsOSAr
NTgsOSBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogCiB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0g
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5k
ZXggNTU3OGI1MTlhMzYyMmJkNzA2YWQyN2JmZTRjNjAwMzkxNDg1OGNhMC4uMjQ0MjdmM2JmYTE0
Zjc4OWU0YWQ4NWJiOGZjOThlYTRjY2Q2NGMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcApAQCAtOTIsMTYgKzkyLDE3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6
cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmlu
CiAKIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpOwotICAgICAgICByZXR1cm47CisgICAgICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgICAg
IHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBlbHNlCisgICAg
ICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgfQog
Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8
IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXROZWVkc0xheW91dCgpOwotICAgICAgICByZXR1cm47CisgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICB9CiAKICAgICBTVkdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKQEAgLTExNCw4ICsxMTUsNyBAQCB2b2lkIFNWR0ZpbHRl
ckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAg
IGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAg
ICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkK
LSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAw
MGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi45MTZhZTUyODBjMTFlZTQ3
MTFjMmY3ZDhlMmE3ZjNiMWUwOGRkOWQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgs
OCArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwotICAg
ICAgICByZXR1cm47CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKICAgICB9CiAKICAgICBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKQEAgLTkxLDcgKzkwLDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2gKIAogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpAQCAtMTA3LDIwICsxMDYs
MTMgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQor
dm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAgICByZXR1cm47Ci0KLSAgICBSZWZQdHIgcGFy
ZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICBy
ZXR1cm47Ci0KLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+cmVuZGVyZXIo
KTsKLSAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclBy
aW1pdGl2ZSgpKQorICAgIGF1dG8gcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CisgICAg
aWYgKCFpczxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+KHBhcmVudCkpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNh
c3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpLT5zZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTJlMGQy
MWM0MTFhZWE5OWJkNjQ4YjdiNWI2ZTg4M2U0YzFmYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBA
IC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsK
ICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6CkBAIC04MSwxMyArODAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CiB9OwogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQoU1ZHRWxlbWVudCopOwotCi1pbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OmludmFsaWRhdGUoKQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5k
ZXJlciA9IHJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0K
K3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Jik7CiAKIGlu
bGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCA1YWI5
OTU5M2QyZGEyZWYzNzA2MjkzMGU2YzQ5MjFkNmFiYmFkMzU1Li45NWZmNTU2Y2IwMjBhZDI3YjNl
ZDM3MWEzNWM2ZmE0NWFlYjFlNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc0LDE1ICs3NCwxNCBAQCB2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdAogCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOworICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXggZTZmMmMxNzk5NjZhYmRhMjIxNGI3NmIwOTZh
M2M1YWI1NDI3ZjFhMC4uMWIyYmNjZDFiODU0YjlhZTMxZjIyNDExYWU2N2RhMTIzNWY3MzM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTE0OSw4ICsx
NDksNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnBhdGhMZW5ndGhBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3
M2I5M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgzZS4uNjQ1YWNhY2QwZWU0MTc0YzI0YWYwYjkyYzNi
NjI4YzkxOTYyNGUzZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAKQEAgLTc3LDEwICs3NywxNSBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cgogCiB2b2lkIFNW
R0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAg
IG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOworICAgICAgICByZXR1cm47CisgICAgfQorCisgICAgaWYgKFNW
R1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtOTQsOCArOTksNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
fQogCiBHcmFkaWVudENvbG9yU3RvcHMgU1ZHR3JhZGllbnRFbGVtZW50OjpidWlsZFN0b3BzKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKaW5kZXggNDlhMmNhNjk4
ZjU0ZTUyZjA5MjBiNTQ4NDZkZTM1ZDM1ZWEyZDFmYS4uYzFkODQ1YWRjZjdlOGJhZTkzYWVhMDA4
MmZkMmI0MWJhYmI4YmQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVu
dC5jcHAKQEAgLTEzMiwxNCArMTMyLDEyIEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyCiAKIHZv
aWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNm
b3JtQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9y
bUF0dHIpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LQotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVu
ZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYTQ2N2NlYTBiMmQxNmQ4OTgxYTQwZjM3NzQxNDNiN2Yz
MzI0ZmNhOC4uYjRjODExY2E4NTJkNzQxMDg3MzRlYzhjMjE0ZTAyNDBjMWNlZWE4NCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTk4LDIyICs5OCwyMiBAQCB2b2lk
IFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
IAogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAg
ICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1h
Z2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAg
ICAgIGlmICghZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1hZ2VW
aWV3cG9ydCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50
YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlz
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAg
IHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZiOWI4
YmNmZDljYzk1ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uYTBiNGI1MTg5NmYwYmFhYjZiOWJm
Mzc1OWQwMzM3YmIwMDQ4MzJiYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3Bw
CkBAIC03MiwxMiArNzIsMTAgQEAgdm9pZCBTVkdMaW5lRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNh
c3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1NoYXBlPih0aGlzLT5y
ZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDg0OGY2
YTIyZjhlMjUxMzY2N2JiMDRjYmJiOTlmODA5YTI2OGZjN2YuLjczNjFiZDdiNjYwZmVhZTcxMDUz
MmZhNjRlMzZkY2YyZWQ2ZjQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04Myw4ICs4Myw3IEBAIHZvaWQgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdN
YXJrZXJFbGVtZW50LmNwcAppbmRleCAwYjQzYmI4NDJlNWUzNjJhYWVmODc5ZmQ2MDYzYWE1NzZl
YWUyMWFiLi4yYjc5NDFkOGM2MDcyNWQwMTJjM2JhZGZlY2QxMDFhYzE3Y2RkMzE1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05OCwxNCArOTgsMTMgQEAgdm9p
ZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRy
aWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3Jt
YXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQot
ICAgIAorCiAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDgg
KzExOCw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENo
aWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6
OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7
CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiBTdHJp
bmcgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwCmluZGV4IDFiZmI0MWQzNzBmYzMzNjNjYjAwYWI2NDg0ODRkZjlkNWEwM2Vj
ZGQuLjIzZTRjYjlmNzQwZDE2YWZhZTJkOTM4M2E1Y2YyNjFkMTcwNDY3MTUgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtOTgsMTUgKzk4LDEyIEBAIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZH
UHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjAsOCArMTE3LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVs
ZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRp
b24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggZTE1MTkwZWY4M2Nl
NjVjMmExNGMwYWIyMWM5ZmNiNTJmYmQzMTA0ZC4uMjIzZDcyMGU3YjA4NjE5ZTc5Mzc3OTNjNmMw
YTQ4ZmM1NWU5OWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC02
NSwxNSArNjUsMTIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9pZCBTVkdQYXRoRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRyKSB7CisgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlTVBh
dGhEZXBlbmRlbmNpZXMoKTsKLQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2Fz
dDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgeworICAgICAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkKICAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBpbnZhbGlkYXRlTVBhdGhEZXBl
bmRlbmNpZXMoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAppbmRleCBjNDc0MzQwNjIyMmI1NWRhMDUxY2ZhZWFmM2VhYzJjOTUxZWI2
NTE1Li40MzEwYjc3ZjU0MjUxMWRmYTI5MzZhYmM2MTg5N2RjMTQxYTc4NWFhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTExMCwxNSArMTEwLDE4IEBAIHZv
aWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUm
IG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKFBy
b3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Cisg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBp
bnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICAgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQorICAgICAg
ICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgICAgIGVsc2UK
KyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBpZiAoU1ZHRml0VG9WaWV3Qm94
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEzMiw4ICsxMzUsNyBAQCB2b2lk
IFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNo
YW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJz
ZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJl
bmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJF
bGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BvbHlFbGVtZW50LmNwcAppbmRleCBlYTFmZTA5MmExNjIzNzEzYzkzODMzYTVkOTU3YWRjZTFl
NjM5MTAwLi5hNjI5NjYyNWVkOThhZDkwNmQzOWZhZjNhMTg5NjBmODllYTk1ODZiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTU1LDEyICs1NSwxMiBAQCB2b2lkIFNW
R1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6cG9pbnRzQXR0cikgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEFTU0VSVChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cik7CisgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJl
bmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNv
dXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJl
cik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRh
dGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU1ZTIxYWZlZTllM2Y1NmIxODc4
Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLmYzMzk5NGE5MGFhYTY4OTIwMzI1NjQxYWU0ODc5ZTQ2NDQ1
Y2I2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBv
YmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
ZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCmlu
ZGV4IGZkNDBhOGVjZDhiYjk5ZmI0Y2E1YmFmNTVlYzNjMzI1N2I4YjgxOWMuLmFkN2FhYzg5OWU5
YWRhOTQ4MmI4OWEwMDMxMWI2N2ZjNzJjNjBkNTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RF
bGVtZW50LmNwcApAQCAtNzksOCArNzksOSBAQCB2b2lkIFNWR1JlY3RFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogdm9p
ZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25h
bEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHko
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCmluZGV4IDk0NWRiYzBjOTNjZGNmZjU3NmFkYjUxNjAzZTdjNDZjMzY2NjRiN2IuLjg1NTlj
NDBhNzU1ZDU5MGQzNDY3YWQ5NmUwNjljZjIxMDUxNWFkNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnNl
dEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYgdHJhbnNsYXRpb24pCiAKIHZvaWQg
U1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgpCiB7Ci0gICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAg
ICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRvY3VtZW50KCkucmVuZGVyVmll
dygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVwYWludCgpOwogfQpAQCAt
MjA5LDcgKzIwOCw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGly
dHkoKTsKIAogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQog
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwpAQCAtMjE5LDcgKzIxOCw3IEBAIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CiAg
ICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMTk1NzAwZWJmN2JhNzQxOTQzYzMx
N2M5NmY1MmVlZDU3ZWIyOWEzYy4uN2FhNzg2Yjc5OGViNzFmYTJhMzQ1YmYwZGEyOGQyMTM0NzIy
NjA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC02NCwxMSArNjQs
MTAgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVk
TmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9pZCBTVkdTdG9wRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAgICAgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
LSAgICAgICAgfQorICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0
dHIpOworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAy
OTkxZGI2OTM0MjA2ZWE5MjdlYmQ4N2YzNzExMTc4MWU1MjE4MmRlLi5mNDUxMmU5Mjc3MjdkYTE1
MTM2MGVhYmI1ZDI4NWNiM2E3OGE2ZmM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKQEAgLTE4NCw4ICsxODQsNyBAQCB2b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklS
ZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNv
dXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBjMTQ1M2JmYzYwNDA4
Yzk1MDc0NjA3N2Q3NjFlZTE0ZDcyOTY1MWZiLi5kZDE0ZGFjMGRjZmQzZWU3YjliYjViYmU1Mjc5
YmFiM2I2NmIwODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcApAQCAtMTgwLDEzICsxODAsMTAgQEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6
OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b20KIHZv
aWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVu
Z3RoQXR0cikKICAgICAgICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0
aC0+YmFzZVZhbCgpLT52YWx1ZSgpOwotCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBh
dGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3Bw
CmluZGV4IGE3NDkxYzRkMWI4NWI5N2UzNDdmZDVhNzE0MTEzMTRjOTc4NDY2OTMuLmI4ZGQyOTM1
MTllY2RkMWRiZTc4MGY1ODc4MTYyM2Y3NTY3ZWE5MTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC04OSwxOSArODksMTYgQEAgdm9pZCBTVkdUZXh0UGF0
aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRyKQogICAg
ICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLQotICAgICAgICBp
ZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAg
ICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGZlMjFlNjZhZjU2NjUyODkw
YWIzMTgwODNkZDgzMTljZWYxZTYyMDIuLjA1ZTQ4NDY4Yjg1MzBkMjljZDg5NTVhODMxZTYyYTFk
ZGFkMWM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25p
bmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAKQEAgLTk5LDE2ICs5OSwxMyBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQog
ewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAg
ICAgICBpZiAoYXR0ck5hbWUgIT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIpCiAgICAgICAgICAgICB1
cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRB
bmNlc3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVu
ZGVyZXIpKQotICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmlu
Z1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9
CisgICAgICAgIGlmIChhdXRvKiB0ZXh0QW5jZXN0b3IgPSByZW5kZXJlcigpID8gUmVuZGVyU1ZH
VGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCpyZW5kZXJlcigpKSA6IG51bGxwdHIp
CisgICAgICAgICAgICB0ZXh0QW5jZXN0b3ItPnNldE5lZWRzUG9zaXRpb25pbmdWYWx1ZXNVcGRh
dGUoKTsKIAorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAppbmRleCAwNTQ3Y2NhOWQyNmZiZDBmMzk1OTUzYWFhNDllZGJhNTIyMjA2NDJkLi44OGIwN2Nl
NzVhYjI3ZmNjMzQ0NWRjYzRiM2FjM2EzNDMxNjJlOTdhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCkBAIC0xNTYsMjEgKzE1NiwyMSBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnRy
YW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1lbnQmIHNoYWRvd0VsZW1l
bgogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
ICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgICAgIC8vIEZJWE1FOiBJdCdzIHVu
bmVjZXNzYXJpbHkgaW5lZmZpY2llbnQgdG8gdXBkYXRlIGJvdGggd2lkdGggYW5kIGhlaWdodCBl
YWNoIHRpbWUgZWl0aGVyIGlzIGNoYW5nZWQuCiAgICAgICAgICAgICBpZiAoYXV0byB0YXJnZXRD
bG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAgICAgICAgICAgICAgICAgdHJhbnNmZXJTaXpl
QXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdldENsb25lKTsKICAgICAgICAgfQotICAgICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOworCisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOworICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOworICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwogICAgICAgICBpbnZhbGlk
YXRlU2hhZG93VHJlZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdF
bGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAzMjNiYzIxNDRiY2ViZTQ5MGU1
Li44MzEzYTEzNzU0MTdmNGNkMGNlYzA2MjVjNGUwMzY4NWY4MmZhY2U4IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU5LDEyICs1OSwxMiBAQCB2b2lkIFNWR1ZpZXdF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7Ci0gICAg
ICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7Ci0g
ICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQtPnJlbmRlcmVy
KCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAg
IGlmICghbV90YXJnZXRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBtX3Rh
cmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7CiAKKyAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqbV90YXJnZXRFbGVtZW50KTsKKyAgICAgICAg
bV90YXJnZXRFbGVtZW50LT5zZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRleCA1ZjIzYjMwMTI2ZjQx
ZmE0MmQxZjY4MDgwY2U4Yjk0NDk1M2FlZWIzLi5hNmRlNzhlYTQ4NDQzNTNhNWNiMzlkYjJiNzBl
ZDg1NWI5ZDYzYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9T
VkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRp
ZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC00MCw3ICs0MCw3IEBAIGJvb2wgU1ZHQXR0
cmlidXRlQW5pbWF0b3I6OmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5pYW10b3IoY29uc3QgU1ZH
RWxlbWVudCYgdGFyCiB2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5bGUo
U1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkKIHsKICAgICBTVkdFbGVtZW50OjpJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKHRhcmdldEVsZW1lbnQpOwotICAgIHRhcmdldEVsZW1lbnQu
aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgdGFyZ2V0RWxlbWVu
dC5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKIH0KIAogdm9pZCBTVkdBdHRy
aWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlDaGFuZ2UoU1ZHRWxlbWVu
dCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>453292</attachid>
            <date>2022-02-26 05:38:06 -0800</date>
            <delta_ts>2022-03-08 04:42:36 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220226133804.patch</filename>
            <type>text/plain</type>
            <size>75215</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwNTA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNDBiNzQwZjczYzRhMzQw
YjNkZjEzOGZkM2NjM2IzZWY1NTZiNDMzYi4uOGQ3ODRlZmU2MmM0OTUzMzUwNzFjMDE4ZTRmMWIy
MTIwMzliYmJhZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3NyBAQAorMjAyMi0wMi0yNiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKworICAgICAgICBCYXNl
ZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OnBhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnREYXRhOjpzZXRQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbk5lZWRlZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRh
dGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZh
bGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdU
UmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5bGUp
OgorCisyMDIyLTAyLTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2lu
ZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdJUAorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbVJlc291cmNlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZSk6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0Rp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxp
ZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRBbmltYXRlZFNWR0F0dHJpYnV0
ZXNBcmVEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZH
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZh
bGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3Rk
RGV2aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRT
dGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
ZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpzZXRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVG
aWx0ZXJQcmltaXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
R2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6cmVzZXRTY3JvbGxBbmNob3IpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5p
bWF0b3I6OmludmFsaWRhdGVTdHlsZSk6CisKIDIwMjItMDItMjUgIFlvdWVubiBGYWJsZXQgIDx5
b3Vlbm5AYXBwbGUuY29tPgogCiAgICAgICAgIE5vbi1zaW1wbGUgQ09SUyBwcmVmbGlnaHQgZmFp
bHMgZHVlIHRvIGNhY2hlLWNvbnRyb2wgaGVhZGVyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9kb20vRWxlbWVudERhdGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmlu
ZGV4IDUxMTZlMzIwODk3ZjhkYjUyOGJiMTE0Yjc5NjgyZTlkZTZjZGNmOGUuLmIxZDk2NTcxN2U5
NTNkMmIzYThhMDIwM2E1OTMwNzhiMzlmYmRlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2RvbS9FbGVtZW50RGF0YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5o
CkBAIC0xMjUsMTIgKzEyNSwxMyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDMyX3QgbV9h
cnJheVNpemVBbmRGbGFnczsKIAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FycmF5U2l6
ZSA9IDI3OwotICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdDb3VudCA9IDU7CisgICAg
c3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0NvdW50ID0gNjsKICAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgc19mbGFnSXNVbmlxdWUgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBz
X2ZsYWdIYXNOYW1lQXR0cmlidXRlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2ZsYWdQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkgPSAxIDw8IDI7CiAgICAgc3Rh
dGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ1N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IDEgPDwgMzsK
ICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJl
RGlydHkgPSAxIDw8IDQ7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uTmVlZGVkID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBzX2ZsYWdzTWFzayA9ICgxIDw8IHNfZmxhZ0NvdW50KSAtIDE7CiAKICAgICBpbmxp
bmUgdm9pZCB1cGRhdGVGbGFnKHVpbnQzMl90IGZsYWcsIGJvb2wgc2V0KSBjb25zdApAQCAtMTYw
LDYgKzE2MSw5IEBAIHByb3RlY3RlZDoKICAgICBib29sIGFuaW1hdGVkU1ZHQXR0cmlidXRlc0Fy
ZURpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVNpemVBbmRGbGFncyAmIHNfZmxhZ0FuaW1h
dGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5OyB9CiAgICAgdm9pZCBzZXRBbmltYXRlZFNWR0F0dHJp
YnV0ZXNBcmVEaXJ0eShib29sIGRpcnR5KSBjb25zdCB7IHVwZGF0ZUZsYWcoc19mbGFnQW5pbWF0
ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHksIGRpcnR5KTsgfQogCisgICAgYm9vbCBwYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlTaXplQW5k
RmxhZ3MgJiBzX2ZsYWdQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbk5lZWRlZDsgfQorICAg
IHZvaWQgc2V0UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb25OZWVkZWQoYm9vbCBkaXJ0eSkg
Y29uc3QgeyB1cGRhdGVGbGFnKHNfZmxhZ1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uTmVl
ZGVkLCBkaXJ0eSk7IH0KKwogICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9p
bmxpbmVTdHlsZTsKICAgICBtdXRhYmxlIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwog
ICAgIG11dGFibGUgQXRvbVN0cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBlY2YxNzEz
MWExYzUyNTkyYTVmNzMwYTZkMTU5ZjExZDg4YWRmYWE3Li5hMTIzM2RlZWE5N2NlZmI1NmE1N2Rh
YTVjMDdlM2M2NmVmZThjMzBjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR0ltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR0ltYWdlLmNwcApAQCAtMjQ1LDE4ICsyNDUsMTMgQEAgdm9pZCBSZW5kZXJTVkdJ
bWFnZTo6aW1hZ2VDaGFuZ2VkKFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAg
aWYgKGF1dG8qIHJlc291cmNlcyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNG
b3JSZW5kZXJlcigqdGhpcykpCiAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNh
Y2hlKCp0aGlzKTsKIAotICAgIC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMs
IHRoYXQgd2UndmUgY2hhbmdlZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCp0aGlzLCBmYWxzZSk7Ci0KICAgICAvLyBV
cGRhdGUgdGhlIFNWR0ltYWdlQ2FjaGUgc2l6ZUFuZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdl
IGxvYWRpbmcgZmluaXNoZWQgYWZ0ZXIgbGF5b3V0LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Vi
a2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9OTk0ODkpCiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9
IEZsb2F0UmVjdCgpOwotICAgIGlmICh1cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNl
dE5lZWRzTGF5b3V0KCk7CiAKICAgICBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAK
LSAgICByZXBhaW50KCk7CisgICAgaW1hZ2VFbGVtZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1Jp
bmdSZWN0cyhWZWN0b3I8TGF5b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNv
bnN0IFJlbmRlckxheWVyTW9kZWxPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggM2VjNDUxYTk2
MTM3ODU0NTU4NWQ2NzNkZmJiOWJkODg4NTMyZTI5MC4uMWRmYWRkMWRhOTQxNTMzYzlmZTM2NTc0
NTdlMmNiZjVjMGViZjJmZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3Vw
ZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5j
bHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgiCiAjaW5jbHVkZSAiUmVu
ZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRl
ICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0
eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIu
aCIKQEAgLTE5Miw2ICsxOTMsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5k
ZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgICAgIGlmIChlbGVtZW50VXBkYXRlcykK
ICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVudFVwZGF0
ZXMpOwogCisgICAgICAgIGlmIChpczxTVkdFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAg
IGRvd25jYXN0PFNWR0VsZW1lbnQ+KGVsZW1lbnQpLmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJj
ZUlmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1lbnQpOwog
CiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMgPSBlbGVtZW50LnJlbmRl
cmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYgc2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY5NTI3MmE0
ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLjM2YjdjYTc2YmExMDhmMmNkMzkyYTZj
NjQ1OTJjYzliOGEyZjBhNjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDEwICsyNTAsMTMgQEAgdm9pZCBTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgIH0KKyAgICBh
dXRvIGludmFsaWRhdGUgPSBbXShTVkdFbGVtZW50JiBlbGVtZW50KSB7CisgICAgICAgIGlmIChh
dXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAgICAgICAgICAgcmVuZGVyZXIt
PnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIGVsZW1lbnQuc2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgIH07CisKKyAgICBpbnZhbGlkYXRlKCp0
YXJnZXRFbGVtZW50KTsKIAogICAgIEFmZmluZVRyYW5zZm9ybSogdGFyZ2V0U3VwcGxlbWVudGFs
VHJhbnNmb3JtID0gdGFyZ2V0RWxlbWVudC0+c3VwcGxlbWVudGFsVHJhbnNmb3JtKCk7CiAgICAg
aWYgKCF0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0pCkBAIC0yNjUsMTAgKzI2OCw3IEBAIHZv
aWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAgICAg
ICAgaWYgKCF0cmFuc2Zvcm0gfHwgKnRyYW5zZm9ybSA9PSAqdGFyZ2V0U3VwcGxlbWVudGFsVHJh
bnNmb3JtKQogICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgICp0cmFuc2Zvcm0gPSAqdGFy
Z2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtOwotICAgICAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVu
ZGVyZXIgPSBpbnN0YW5jZS0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgcmVuZGVyZXItPnNl
dE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0g
ICAgICAgIH0KKyAgICAgICAgaW52YWxpZGF0ZShpbnN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKaW5kZXggNmQ2YWYyNTA1YzRjZWYyMjk2
YzkwMzIxMTJkODdhZmY0Njc0OTQ3Yy4uN2M1ZjU0ZjhhMjhkZWUwOWY3MGZmMDMxMGMzNTgyYjZl
MDk3OTI1MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcApAQCAtNjgs
OCArNjgsOSBAQCB2b2lkIFNWR0NpcmNsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbgogdm9pZCBTVkdDaXJjbGVFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewor
ICAgICAgICBBU1NFUlQoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZShhdHRyTmFtZSkpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7Cisg
ICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCmlu
ZGV4IGI0ZTc5OTU4YzViMTMwMzU1Zjc5OTk0YjExODNjNTNmOTJjZWQ2OWIuLjEwMDA5MjI4OTZk
NjFlMzBjZTc4MmUzNzg1MzM2MmQxYzc0MzQ0NGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
bGlwUGF0aEVsZW1lbnQuY3BwCkBAIC02Niw5ICs2Niw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyLDggKzgw
LDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGls
ZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpT
b3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCog
b2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOwor
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVy
UHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmNwcAppbmRleCAwY2Q0ZmQ0MWU1M2FkMTU4MjgzMjhlM2IxM2Y4MmVlNjA2NWUy
ZDlkLi44ZGRjOGRiZDdlMmQ0MTVmYWNjODM4MWEyMDgwZjVjZGVhNjg4OTMzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9u
RWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW0KIHsK
ICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CisgICAgICAgIGludmFsaWRh
dGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggZGM1OTJhMmQ3NDFkZjM3ZmU5NjdjZmNi
MzJjZWQ2Yzc2NjEwOWZkNi4uMjJiYzQwMzJlNmJiYzkzNzU5MjQyYWMwZDA5ZDMwOWIyMzBhZTg5
MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtNjEwLDcgKzYxMCw3IEBAIHZvaWQg
U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UoU1ZHUHJvcGVydHkqIHByb3BlcnR5KQog
ICAgIC8vIFNWR0xlbmd0aExpc3QgYW5kIG5vdCB0aGUgU1ZHTGVuZ3RoLgogICAgIHByb3BlcnR5
LT5zZXREaXJ0eSgpOwogCi0gICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRB
bmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpOwogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
cHJvcGVydHlSZWdpc3RyeSgpLnByb3BlcnR5QXR0cmlidXRlTmFtZSgqcHJvcGVydHkpKTsKIH0K
IApAQCAtNjI2LDcgKzYyNiw3IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFu
Z2UoU1ZHQW5pbWF0ZWRQcm9wZXJ0eSYgYW5pbWF0ZWRQcm9wZXJ0eSkKICAgICBlbHNlCiAgICAg
ICAgIHNldFN5bmNocm9uaXplZExhenlBdHRyaWJ1dGUoYXR0cmlidXRlTmFtZSwgYW5pbWF0ZWRQ
cm9wZXJ0eS5iYXNlVmFsQXNTdHJpbmcoKSk7CiAKLSAgICBpbnZhbGlkYXRlU1ZHQXR0cmlidXRl
cygpOworICAgIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CiAgICAgc3ZnQXR0
cmlidXRlQ2hhbmdlZChhdHRyaWJ1dGVOYW1lKTsKIH0KIApAQCAtODgzLDYgKzg4MywyOSBAQCB2
b2lkIFNWR0VsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJlc2VudGF0aW9u
YWxIaW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdFbGVt
ZW50OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKQoreworICAgIGVuc3VyZVVu
aXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRydWUp
OworICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVjYWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFzIHJl
c291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5IGZlSW1hZ2UpLgorICAgIGludmFsaWRhdGVTdHls
ZSgpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6OnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24oKQoreworICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb25OZWVkZWQodHJ1ZSk7CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7
Cit9CisKK3ZvaWQgU1ZHRWxlbWVudDo6aW52YWxpZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVk
ZWQoKQoreworICAgIGlmICghZWxlbWVudERhdGEoKSB8fCAhZWxlbWVudERhdGEoKS0+cGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb25OZWVkZWQoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAg
aWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgZWxlbWVudERhdGEoKS0+c2V0UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b25OZWVkZWQoZmFsc2UpOworfQorCiB2b2lkIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBw
cm9wSWQgPSBjc3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAppbmRleCAyZDNhMzMxZThlODI1NGU2N2YwYzY3NjJjZDIwNTMyM2Zh
OTYwY2NiLi45NDI1MTA4NzViOTA3ZjNlOWM5MDI0YzdlYjg5NDhjY2QzNzcyNWRlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGVtZW50LmgKQEAgLTgyLDggKzgyLDEwIEBAIHB1YmxpYzoKIAogICAgIHZpcnR1
YWwgQWZmaW5lVHJhbnNmb3JtKiBzdXBwbGVtZW50YWxUcmFuc2Zvcm0oKSB7IHJldHVybiBudWxs
cHRyOyB9CiAKLSAgICBpbmxpbmUgdm9pZCBpbnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwotICAg
IGlubGluZSB2b2lkIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAg
IGlubGluZSB2b2lkIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CisgICAgdm9p
ZCBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICB2b2lkIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICB2b2lkIGludmFsaWRhdGVQYXJl
bnRBbmRSZXNvdXJjZUlmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVs
ZW1lbnQgYXJlIGNsb25lcyBtYWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4u
CiAgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaAppbmRleCA1OTdhYTBlZTE1NzZjMjFl
NzVlMjdkNDFhYjE2MzIzOGJiMjA4YWIyLi5jNjllYzcwYmI2OTliNDE4OWM1ZmFlNmNkZGRjYTMx
NDVmN2M1NTljIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaApAQCAtMzAs
MTggKzMwLDExIEBACiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotaW5saW5lIHZvaWQgU1ZHRWxl
bWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKQoraW5saW5lIHZvaWQgU1ZHRWxlbWVudDo6
c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKQogewogICAgIGVuc3VyZVVuaXF1ZUVs
ZW1lbnREYXRhKCkuc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkodHJ1ZSk7CiB9CiAK
LWlubGluZSB2b2lkIFNWR0VsZW1lbnQ6OmludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRT
dHlsZSgpCi17Ci0gICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkodHJ1ZSk7Ci0gICAgLy8gVHJpZ2dlciBzdHlsZSByZWNhbGN1bGF0
aW9uIGZvciAiZWxlbWVudHMgYXMgcmVzb3VyY2UiIChlLmcuIHJlZmVyZW5jZWQgYnkgZmVJbWFn
ZSkuCi0gICAgaW52YWxpZGF0ZVN0eWxlKCk7Ci19Ci0KIHN0cnVjdCBTVkdBdHRyaWJ1dGVIYXNo
VHJhbnNsYXRvciB7CiAgICAgc3RhdGljIHVuc2lnbmVkIGhhc2goY29uc3QgUXVhbGlmaWVkTmFt
ZSYga2V5KQogICAgIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNl
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwCmlu
ZGV4IDU5NTk5NzExZjRiYTk5NDEyZDk4NzJiODAyMTQ4ODQwNzI3NTJkMTkuLmQ1NGNlMmJhNmQz
MDcxNWFkMDFhMGNlYWQwMmYzZDNjYmVhOTYwZjkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
bGlwc2VFbGVtZW50LmNwcApAQCAtNzEsOCArNzEsOSBAQCB2b2lkIFNWR0VsbGlwc2VFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aQogdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5UmVnaXN0cnk6
OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVz
ZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHls
ZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggZTFjYzgzMzVjMzIwZDllZmU1YzI0Mzg0MzBmYzgz
OTc0OGU3NmYzNS4uMjY3N2E5YzlkNzI4OTg5ZDk3ZWUwYzkyZDNlZTgyNjM5OTNhNzUwZCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC04MywxNSArODMsMTIg
QEAgYm9vbCBTVkdGRUJsZW5kRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRl
ckVmZmVjdCogZWZmZWN0LCBjb25zdCBRdWEKIAogdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om1vZGVBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRy
KSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5B
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICAgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAKaW5kZXggNjlmOTFkYzBlNTA5NjdjZmM2N2NjYWFmZjAwZmQxNGEzZDg1NjdjNC4uOWI1
MmM0ZjU3NTAxY2Y4MDI3MGUzYWYyZjM2ODU4ZWEwOGZmMjgyNCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC04NCwxNSArODQsMTIgQEAg
Ym9vbCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZp
bHRlckVmZmVjdCogZWZmZWN0LCBjb24KIAogdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjp2YWx1ZXNBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
LSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aW5BdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRh
dGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFu
Z2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAKaW5kZXggOWE3
NWI0NjI4N2ZjMDY5NDA5MjJlYzM5NTEzMTczZWVmMjQwMzNlOC4uYjUzNzhlYjczZTQ1Njc3NzRh
ZGRkMTQyNTZmMmZjOTg3ODVkMzNkZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCkBAIC02Miw2ICs2MiwxNyBAQCB2b2lk
IFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjbwogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6cGFyc2VBdHRyaWJ1dGUobmFtZSwgdmFsdWUpOwogfQogCit2b2lkIFNWR0ZFQ29tcG9u
ZW50VHJhbnNmZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQoreworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKKyAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7
CisgICAgICAgIHJldHVybjsKKyAgICB9CisKKyAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOworfQorCiBSZWZQdHI8
RmlsdGVyRWZmZWN0PiBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6ZmlsdGVyRWZmZWN0
KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25z
dAogewogICAgIENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24gcmVkOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVtZW50LmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAppbmRleCA2NGY3Yjlh
ZTg5MWFiOTMxMjdkOTkwZjQ0N2VlNGRmMjY0NTU4YjExLi5mMTRjM2M3NzJhNmMzY2Q4YTE0OWQw
ZGQ2YzQyMmYwZWMzMGM3YWUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuaApAQCAtNDAsOCArNDAsOCBAQCBwcml2YXRlOgogICAg
IHVzaW5nIFByb3BlcnR5UmVnaXN0cnkgPSBTVkdQcm9wZXJ0eU93bmVyUmVnaXN0cnk8U1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQsIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlcz47CiAgICAgY29uc3QgU1ZHUHJvcGVydHlSZWdpc3RyeSYgcHJvcGVydHlSZWdpc3RyeSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fcHJvcGVydHlSZWdpc3RyeTsgfQogCi0gICAgLy8gRklY
TUU6IHN2Z0F0dHJpYnV0ZUNoYW5nZWQgbWlzc2luZy4KICAgICB2b2lkIHBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmLCBjb25zdCBBdG9tU3RyaW5nJikgb3ZlcnJpZGU7CisgICAg
dm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsK
IAogICAgIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IG92ZXJyaWRlIHsgcmV0dXJuIHsgaW4xKCkgfTsgfQogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWlsZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0
VmVjdG9yJikgY29uc3Qgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBv
c2l0ZUVsZW1lbnQuY3BwCmluZGV4IDQ1OWVkYWI4NTk3YmEyNzk2Yzc3OTJmOWZlZTU3OGM5ODM4
ZGFhMWEuLjk3YjRjYzVjMDZjNzNiMTcwNDQ1ZWRiYjg4OTE3MzY2NmU0MzRiZWYgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xMTUsMTUgKzEx
NSwxMiBAQCBib29sIFNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmli
dXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zdAogCiB2b2lkIFNWR0ZFQ29tcG9zaXRlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRB
dHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bjJBdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKaW5kZXggMDJiYzM3YjZkNGEz
YmMyOGRhOGFlZDM2M2FlMTc0OTdmNjE5Zjc2Yi4uYjk0Y2RlNThlYmI1NTVhZTRhNjU4NTcxNTFh
MWQ2YTQ2MTU4YWI2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xNjAsMjcgKzE2MCwyNCBAQCB2b2lkIFNWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50OjpzZXRPcmRlcihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fb3Jk
ZXJYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9vcmRlclktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpz
ZXRLZXJuZWxVbml0TGVuZ3RoKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9rZXJuZWxVbml0
TGVuZ3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFkt
PnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQ
YXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6Ymlhc0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2Vy
bmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFB
dHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwot
ICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtl
cm5lbE1hdHJpeEF0dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikKKyAgICAgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKaW5kZXggOTY4NGZhYjgwMGNjMDU2YTgzNGI3NDdlY2YyZDczZGJhZjBm
YzY5OC4uOGE2ZGM5NzBkMjU0ZTJjNDFjNGM4YTlhOGI3Y2QyZTU2NmE5YTM4MyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKQEAg
LTEyNSwxNSArMTI1LDEyIEBAIGJvb2wgU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzZXRG
aWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QsCiAKIHZvaWQgU1ZHRkVE
aWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFj
ZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmxpZ2h0aW5nX2NvbG9yQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0
aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHAKaW5kZXggYjYyYzQ2NDliZTEzOTk2YzE4MWUzYTk4NmUwZjljM2MzZDUzZGIxNC4uNTIzNjc4
ZGQ5Njk2MzQ2YmJjNjhkY2M2ZTM4NGRkNzcyZTA2YTVlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwx
MiBAQCBib29sIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0
cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFw
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKLSAgICAgICAgcmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKSB7Ci0gICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZh
bGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0
dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmlt
aXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4
IDQ1OTkxMGU1NGQyZjYwNTZlYTI1OWIxODgzOWIzZTNlOWI1MzE2ODIuLmJkYzhkY2VmNmJiOTk0
MDUyNGZkYTc0N2E4MzQ5MjI4ZWFlYTI4ODAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBt
X3N0ZERldmlhdGlvblgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlv
blktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFRHJvcFNo
YWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCBiNWYzYzdiNmNl
ZmZkNjVkZmQwYWUxMWE0YTliMmIyZTBkODNiOGEzLi40NWRlZDAwMDU2NzUwYjVkNjI5M2QwMzk0
MWE3M2MyNDkyZDczYWE0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVz
c2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGRE
ZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFy
ZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1
ckVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0
IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDRhOWMzYzQ1YTkyM2ViZDJhYmRmNWExZmQy
ZDdmZTUwNjA3OTRkNDMuLmQ1ZTg2ODk2YjVkNjUxMjg3ODg2OTU3ZWM4ZmZmOWU4YmZhODA3NGUg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTExLDcgKzEx
MSw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAg
ICB9IGVsc2UgaWYgKGlzPFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkpCiAgICAgICAgIGRv
d25jYXN0PFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50
KCp0aGlzKTsKIAotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVl
KQpAQCAtMTI3LDkgKzEyNyw5IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmli
dXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZH
RkVJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVj
dFJhdGlvQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTE2NSwx
NiArMTY1LDExIEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6Om5vdGlmeUZpbmlzaGVkKENhY2hl
ZFJlc291cmNlJiwgY29uc3QgTmV0d29ya0xvYWRNZXRyaWNzCiAgICAgaWYgKCFpc0Nvbm5lY3Rl
ZCgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50RWxlbWVu
dCgpOwotCisgICAgYXV0byBwYXJlbnQgPSBwYXJlbnRFbGVtZW50KCk7CiAgICAgaWYgKCFwYXJl
bnQgfHwgIXBhcmVudC0+aGFzVGFnTmFtZShTVkdOYW1lczo6ZmlsdGVyVGFnKSkKICAgICAgICAg
cmV0dXJuOwogCi0gICAgUmVuZGVyRWxlbWVudCogcGFyZW50UmVuZGVyZXIgPSBwYXJlbnQtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFwYXJlbnRSZW5kZXJlcikKLSAgICAgICAgcmV0dXJuOwotCi0g
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigqcGFyZW50UmVuZGVyZXIpOworICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJl
bnQpLnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogc3RhdGlj
IGlubGluZSBJbnRSZWN0IHNjYWxlZEltYWdlQnVmZmVyUmVjdChjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsIGNvbnN0IEZsb2F0U2l6ZSYgc2NhbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRF
bGVtZW50LmNwcAppbmRleCBjNjI1MjZjY2Q3NTgzMjcwZTg4NTZkMTJlMzI3ZGVjMzM0OTRiMDEy
Li44N2EyZTAyMWU0NzBhZDk1ZDNkMzc1NDRkZmNhNzVlYWRiMDc4NzIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTE1MSwxNSArMTUxLDkgQEAgdm9pZCBT
VkdGRUxpZ2h0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25z
dCBDaGlsZENoYW5nZSYgY2hhbmdlKQogewogICAgIFNWR0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjaGFuZ2UpOwotCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5v
ZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiBy
ZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQotICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CisgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiB9
CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKaW5k
ZXggNGJlOTA3ODI2ZGJhMDYxOTM2ODRlMGE0ZGFmNWJhMmI1ZmE5NGFmYS4uOTFhNmMxNDA0MWQx
NTdkODZmNmFiZmE2MjY1YzE5ZDUzYzNhYmNlZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKQEAgLTYwLDkgKzYwLDkgQEAgdm9pZCBTVkdGRU1lcmdl
Tm9kZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b20KIAogdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhp
cyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKaW5kZXggYWZiOTk5NDAwZDUwMjY2NzM0MjdlYjc1MDg2NTVlZTJjOGNj
MWY5NS4uODY1MDY2MDI0NmIyYmNiYzRhYmUwMDc5ZTI3ZmZkYjdlYWI5YjMxYiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9h
dCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fcmFk
aXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVNb3Jw
aG9sb2d5RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwg
Y29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC05OCwxNSArOTgsMTIgQEAgYm9vbCBTVkdGRU1v
cnBob2xvZ3lFbGVtZW50OjpzZXRGaWx0ZXJFZmZlY3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBl
ZmZlY3QsIGNvbnMKIAogdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRp
dXNBdHRyKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKLSAgICAgICAg
cmV0dXJuOwotICAgIH0KLQotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7
Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
KQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwor
ICAgICAgICBlbHNlCisgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVP
ZmZzZXRFbGVtZW50LmNwcAppbmRleCA4NDNmOGRlNzdhYjhjODFkYmEzM2FmMjFkZjYwYzhkMmU4
Y2IyNzQzLi4yNWI4NmFkOTMyZDViYzczOWExNDA5ZmZkYzg3OTI1YWFjMjFmMzc1IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtNzIsNyArNzIsNyBAQCB2
b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5j
cHAKaW5kZXggNjgxNTI2ODA4MmZkODhjMjY3Nzc5ZjMxMTk4OTNlZDYwODMyMDZiOS4uYTcyMzk0
MjY1Y2QwZDI4YTcyOTYyMTE3YmRhMDNiYzQ0YWYxYWIwZiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTM1LDE1ICsx
MzUsMTIgQEAgYm9vbCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzZXRGaWx0ZXJFZmZl
Y3RBdHRyaWJ1dGUoRmlsdGVyRWZmZWN0KiBlZmZlY3QKIAogdm9pZCBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChh
dHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcAppbmRleCAyYTdhM2Y0OTNiZWFmYTFlMmQy
MzRjZTNhOWRjYTNlODIzMzg1ODdmLi5hOTc5ZGM5YzNhZTA1NjJkYjhjOWM4NGY2MjU2NDE0NDk5
OGM3MDkzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCkBAIC01OCw5
ICs1OCw5IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVh
bGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAKIHZvaWQgU1ZHRkVUaWxlRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgeworICAgIGlmIChQcm9wZXJ0
eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwor
ICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApp
bmRleCA1NTc4YjUxOWEzNjIyYmQ3MDZhZDI3YmZlNGM2MDAzOTE0ODU4Y2EwLi4xMzZmOTY0M2Q4
ZmQzNjkyMzU1ZTk4ZTYwMWUzMzMyOTM5OTdmNTBhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlckVsZW1lbnQuY3BwCkBAIC05MiwxNSArOTIsMTggQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW4KIAogdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0Fu
aW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRh
dGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKKyAgICAgICAgICAgIHNldFByZXNlbnRhdGlv
bmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkg
fHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVu
ZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7CisgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExNyw3IEBAIHZv
aWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBj
aGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFy
c2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVy
RWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0
eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCmluZGV4IDAwZTRlNjk4NjY0NTMyOTIyZDYzNzVlNzdhZDQzYjI4NWM3NDQ5NGEuLmYzOGFh
Mjg5Y2Y3YTEwMzI2ZjQ3NTg5YTM3YjIzYWQ4NjYwYzc4N2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
Y3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtOTEsNyArOTEsNyBAQCB2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJiBjaAogCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJj
ZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCkBAIC0xMDcsMjAgKzEwNywxMyBAQCBib29sIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlczo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHlsZSYgcwogICAgIHJl
dHVybiBmYWxzZTsKIH0KIAotdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNW
R0VsZW1lbnQqIGVsZW1lbnQpCit2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQo
U1ZHRWxlbWVudCYgZWxlbWVudCkKIHsKLSAgICBpZiAoIWVsZW1lbnQpCisgICAgYXV0byBwYXJl
bnQgPSBlbGVtZW50LnBhcmVudE5vZGUoKTsKKyAgICBpZiAoIWlzPFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcz4ocGFyZW50KSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgUmVm
UHRyIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkKLSAg
ICAgICAgcmV0dXJuOwotCi0gICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBwYXJlbnQtPnJl
bmRlcmVyKCk7Ci0gICAgaWYgKCFyZW5kZXJlciB8fCAhcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgcmV0dXJuOwotCi0gICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIs
IGZhbHNlKTsKKyAgICBkb3duY2FzdDxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM+KHBhcmVudCktPnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0K
IAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDdkZjkyMDZmYWE5MWVhZmVmZWZkYTUyOWU5MmY2
OWM1MWYzZDhlZDkuLjJlMmUwZDIxYzQxMWFlYTk5YmQ2NDhiN2I1YjZlODgzZTRjMWZiMDUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQg
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAg
dm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAg
IHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKIAogcHJpdmF0ZToKQEAgLTgxLDEz
ICs4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3VsdCB7
IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKLXZvaWQgaW52YWxpZGF0
ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7Ci0KLWlubGluZSB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSgpCi17Ci0gICAgaWYg
KGF1dG8qIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcHJp
bWl0aXZlUmVuZGVyZXIpOwotfQordm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50
KFNWR0VsZW1lbnQmKTsKIAogaW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVs
ZW1lbnQuY3BwCmluZGV4IDVhYjk5NTkzZDJkYTJlZjM3MDYyOTMwZTZjNDkyMWQ2YWJiYWQzNTUu
Ljk1ZmY1NTZjYjAyMGFkMjdiM2VkMzcxYTM1YzZmYTQ1YWViMWU0OGIgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAtNzQsMTUgKzc0LDE0
IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0CiAKIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKCk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5QXR0cikgewot
ICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwor
ICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKKyAgICAgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGlu
dFN0eWxlSXNEaXJ0eSgpOworICAgICAgICBlbHNlIHsKKyAgICAgICAgICAgIHVwZGF0ZVJlbGF0
aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJl
c291cmNlSW52YWxpZGF0aW9uKCk7CisgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAppbmRleCBlNmYyYzE3
OTk2NmFiZGEyMjE0Yjc2YjA5NmEzYzVhYjU0MjdmMWEwLi4xYjJiY2NkMWI4NTRiOWFlMzFmMjI0
MTFhZTY3ZGExMjM1ZjczMzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2Vv
bWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVt
ZW50LmNwcApAQCAtMTQ5LDggKzE0OSw3IEBAIHZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Cisg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNw
cAppbmRleCA3NzRjMTFlM2Q5ODczYjkzY2RlOTY4YjM3ZWIzNDdjNzY1ODI0ODNlLi5mMTVkZDcw
OWMyMGI3Zjc0ZTdkNTM1ZWZkNDU5ZjAxMWNhMTA1MDY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNzksOCArNzksNyBAQCB2b2lkIFNWR0dyYWRpZW50
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaWYg
KFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+
c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFs
aWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05NCw4ICs5Myw3IEBAIHZv
aWQgU1ZHR3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2Um
IGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQ
YXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIEdyYWRpZW50Q29sb3JT
dG9wcyBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMoKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCA0OWEyY2E2OThmNTRlNTJmMDkyMGI1NDg0NmRl
MzVkMzVlYTJkMWZhLi5jMWQ4NDVhZGNmN2U4YmFlOTNhZWEwMDgyZmQyYjQxYmFiYjhiZDg4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTMyLDE0ICsx
MzIsMTIgQEAgdm9pZCBTVkdHcmFwaGljc0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHIKIAogdm9pZCBTVkdHcmFwaGljc0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKSB7CisgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAg
IEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cik7CiAgICAgICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCi0gICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFu
c2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQot
CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcApp
bmRleCBhNDY3Y2VhMGIyZDE2ZDg5ODFhNDBmMzc3NDE0M2I3ZjMzMjRmY2E4Li5iNGM4MTFjYTg1
MmQ3NDEwODczNGVjOGMyMTRlMDI0MGMxY2VlYTg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1h
Z2VFbGVtZW50LmNwcApAQCAtOTgsMjIgKzk4LDIyIEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAg
ICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCiAgICAgICAgIGlmIChhdXRv
KiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIGlmIChkb3duY2Fz
dDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAg
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxS
ZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCisgICAgICAg
ICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6aGVpZ2h0QXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7
CisgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFz
cGVjdFJhdGlvQXR0cikgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCBlZmI5YjhiY2ZkOWNjOTVlYWE0OTNiZmUx
YWFkOTE5Y2E3OWNiM2M1Li5hMGI0YjUxODk2ZjBiYWFiNmI5YmYzNzU5ZDAzMzdiYjAwNDgzMmJi
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKQEAgLTcyLDEyICs3MiwxMCBA
QCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
LQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdT
aGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
ZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAg
ICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
KnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggODQ4ZjZhMjJmOGUyNTEzNjY3YmIwNGNi
YmI5OWY4MDlhMjY4ZmM3Zi4uNzM2MWJkN2I2NjBmZWFlNzEwNTMyZmE2NGUzNmRjZjJlZDZmNDMz
NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5j
cHAKQEAgLTgzLDggKzgzLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0
aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVj
dCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7Cisg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtl
ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCmlu
ZGV4IDBiNDNiYjg0MmU1ZTM2MmFhZWY4NzlmZDYwNjNhYTU3NmVhZTIxYWIuLjJiNzk0MWQ4YzYw
NzI1ZDAxMmMzYmFkZmVjZDEwMWFjMTdjZGQzMTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFy
a2VyRWxlbWVudC5jcHAKQEAgLTk4LDE0ICs5OCwxMyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCiAg
ICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgCisKICAgICBpZiAoU1ZH
Rml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTksOCArMTE4LDcgQEAgdm9pZCBTVkdN
YXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
ICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVy
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFN0cmluZyBTVkdNYXJrZXJFbGVtZW50
OjpvcmllbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKaW5kZXgg
MWJmYjQxZDM3MGZjMzM2M2NiMDBhYjY0ODQ4NGRmOWQ1YTAzZWNkZC4uMjNlNGNiOWY3NDBkMTZh
ZmFlMmQ5MzgzYTVjZjI2MWQxNzA0NjcxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1l
bnQuY3BwCkBAIC05OCwxNSArOTgsMTIgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9p
ZCBTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0
aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRT
dHlsZSgpOwotICAgICAgICByZXR1cm47Ci0gICAgfQotCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNM
YXlvdXQoKTsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CisgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRl
KGF0dHJOYW1lKSkKKyAgICAgICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSgpOworICAgICAgICBlbHNlCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyMCw4ICsxMTcs
NyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFu
Z2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVj
dCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBz
ZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxS
ZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCBlMTUxOTBlZjgzY2U2NWMyYTE0YzBhYjIxYzlmY2I1
MmZiZDMxMDRkLi4yMjNkNzIwZTdiMDg2MTllNzkzNzc5M2M2YzBhNDhmYzU1ZTk5ZTZlIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTY1LDE1ICs2NSwxMiBAQCB2b2lk
IFNWR1BhdGhFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1l
LCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6ZEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOwot
Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRo
aXMtPnJlbmRlcmVyKCkpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0
PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXIt
PnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAg
ICAgICAgfQotCisgICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2llcygpOworICAgICAg
ICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4
IGM0NzQzNDA2MjIyYjU1ZGEwNTFjZmFlYWYzZWFjMmM5NTFlYjY1MTUuLjQzMTBiNzdmNTQyNTEx
ZGZhMjkzNmFiYzYxODk3ZGMxNDFhNzg1YWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcApAQCAtMTEwLDE1ICsxMTAsMTggQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmkKIAogdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNB
bmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50
YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmlt
YXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCi0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
IHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJ
UmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXRO
ZWVkc0xheW91dCgpOworICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAg
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTMyLDggKzEzNSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmlu
ZGV4IGVhMWZlMDkyYTE2MjM3MTNjOTM4MzNhNWQ5NTdhZGNlMWU2MzkxMDAuLmE2Mjk2NjI1ZWQ5
OGFkOTA2ZDM5ZmFmM2ExODk2MGY4OWVhOTU4NmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcApAQCAtNTUsMTIgKzU1LDEyIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAK
IHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpwb2ludHNB
dHRyKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Bh
dGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVz
Ojpwb2ludHNBdHRyKTsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Bh
dGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hh
cGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50
RWxlbWVudC5jcHAKaW5kZXggZTVlMjFhZmVlOWUzZjU2YjE4NzhjZDNlMmU5MTk4NDA0ZjQ5ODlj
ZS4uZjMzOTk0YTkwYWFhNjg5MjAzMjU2NDFhZTQ4NzllNDY0NDVjYjY3NSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTg5LDggKzg5
LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKaW5kZXggZmQ0MGE4ZWNkOGJiOTlm
YjRjYTViYWY1NWVjM2MzMjU3YjhiODE5Yy4uYWQ3YWFjODk5ZTlhZGE5NDgyYjg5YTAwMzExYjY3
ZmM3MmM2MGQ1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmVjdEVsZW1lbnQuY3BwCkBAIC03OSw4
ICs3OSw5IEBAIHZvaWQgU1ZHUmVjdEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiB2b2lkIFNWR1JlY3RFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAg
ICAgICBBU1NFUlQoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShh
dHRyTmFtZSkpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAg
ICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggOTQ1ZGJjMGM5
M2NkY2ZmNTc2YWRiNTE2MDNlN2M0NmMzNjY2NGI3Yi4uODU1OWM0MGE3NTVkNTkwZDM0NjdhZDk2
ZTA2OWNmMjEwNTE1YWQ1YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAt
MTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShj
b25zdCBGbG9hdFBvaW50JiB0cmFuc2xhdGlvbikKIAogdm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRh
dGVDdXJyZW50VHJhbnNsYXRlKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0TmVl
ZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgIGlmIChwYXJlbnROb2RlKCkg
PT0gJmRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCiAgICAgICAgIGRvY3Vt
ZW50KCkucmVuZGVyVmlldygpLT5yZXBhaW50KCk7CiB9CkBAIC0yMDksNyArMjA4LDcgQEAgdm9p
ZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7Cisg
ICAgICAgIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogCiAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CkBAIC0yMTksNyArMjE4LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdG
aXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OworICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
ICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BF
bGVtZW50LmNwcAppbmRleCAxOTU3MDBlYmY3YmE3NDE5NDNjMzE3Yzk2ZjUyZWVkNTdlYjI5YTNj
Li43YWE3ODZiNzk4ZWI3MWZhMmEzNDViZjBkYTI4ZDIxMzQ3MjI2MDU0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKQEAgLTY0LDExICs2NCwxMCBAQCB2b2lkIFNWR1N0b3BF
bGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBB
dG9tU3RyaW5nJgogCiB2b2lkIFNWR1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6b2Zmc2V0QXR0cikgewotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAg
IEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cik7CisgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IDI5OTFkYjY5MzQyMDZlYTkyN2Vi
ZDg3ZjM3MTExNzgxZTUyMTgyZGUuLmY0NTEyZTkyNzcyN2RhMTUxMzYwZWFiYjVkMjg1Y2IzYTc4
YTZmYzcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcApAQCAtMTg0LDggKzE4
NCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJl
bmRlcmVyKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGMxNDUzYmZjNjA0MDhjOTUwNzQ2MDc3ZDc2MWVlMTRk
NzI5NjUxZmIuLmRkMTRkYWMwZGNmZDNlZTdiOWJiNWJiZTUyNzliYWIzYjY2YjA4ODEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC0xODAsMTMg
KzE4MCwxMCBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbQogdm9pZCBTVkdUZXh0Q29udGVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICAg
ICAgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVl
KCk7Ci0KLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0g
ICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAg
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggYTc0OTFjNGQxYjg1
Yjk3ZTM0N2ZkNWE3MTQxMTMxNGM5Nzg0NjY5My4uYjhkZDI5MzUxOWVjZGQxZGJlNzgwZjU4Nzgx
NjIzZjc1NjdlYTkxMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKQEAgLTg5LDE5ICs4OSwxNiBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAgICAgICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxh
dGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAg
ICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBv
c2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHAKaW5kZXggZmUyMWU2NmFmNTY2NTI4OTBhYjMxODA4M2RkODMxOWNlZjFl
NjIwMi4uMDVlNDg0NjhiODUzMGQyOWNkODk1NWE4MzFlNjJhMWRkYWQxYzk4ZCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcApAQCAtOTks
MTYgKzk5LDEzIEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotCiAgICAgICAgIGlmIChhdHRyTmFtZSAh
PSBTVkdOYW1lczo6cm90YXRlQXR0cikKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Ro
c0luZm9ybWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoYXV0byogdGV4dEFuY2VzdG9yID0gUmVuZGVyU1ZH
VGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCpyZW5kZXJlcikpCi0gICAgICAgICAg
ICAgICAgdGV4dEFuY2VzdG9yLT5zZXROZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlKCk7Ci0g
ICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291
cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8q
IHRleHRBbmNlc3RvciA9IHJlbmRlcmVyKCkgPyBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJT
VkdUZXh0QW5jZXN0b3IoKnJlbmRlcmVyKCkpIDogbnVsbHB0cikKKyAgICAgICAgICAgIHRleHRB
bmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwogCisgICAgICAgIHNl
dE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IDA1NDdjY2E5ZDI2
ZmJkMGYzOTU5NTNhYWE0OWVkYmE1MjIyMDY0MmQuLjg4YjA3Y2U3NWFiMjdmY2MzNDQ1ZGNjNGIz
YWMzYTM0MzE2MmU5N2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE1
NiwyMSArMTU2LDIxIEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6dHJhbnNmZXJTaXplQXR0cmlidXRl
c1RvVGFyZ2V0Q2xvbmUoU1ZHRWxlbWVudCYgc2hhZG93RWxlbWVuCiAKIHZvaWQgU1ZHVXNlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
IHsKLSAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLQogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAg
ICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogICAgICAgICBpZiAoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0
QXR0cikgewogICAgICAgICAgICAgLy8gRklYTUU6IEl0J3MgdW5uZWNlc3NhcmlseSBpbmVmZmlj
aWVudCB0byB1cGRhdGUgYm90aCB3aWR0aCBhbmQgaGVpZ2h0IGVhY2ggdGltZSBlaXRoZXIgaXMg
Y2hhbmdlZC4KICAgICAgICAgICAgIGlmIChhdXRvIHRhcmdldENsb25lID0gdGhpcy0+dGFyZ2V0
Q2xvbmUoKSkKICAgICAgICAgICAgICAgICB0cmFuc2ZlclNpemVBdHRyaWJ1dGVzVG9UYXJnZXRD
bG9uZSgqdGFyZ2V0Q2xvbmUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisKKyAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50
QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRh
dGVFeHRlcm5hbERvY3VtZW50KCk7CiAgICAgICAgIGludmFsaWRhdGVTaGFkb3dUcmVlKCk7CiAg
ICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCmluZGV4IGVj
ZmU0MzFhNDUzM2MzNmMwOGI1MDMyM2JjMjE0NGJjZWJlNDkwZTUuLjgzMTNhMTM3NTQxN2Y0Y2Qw
Y2VjMDYyNWM0ZTAzNjg1ZjgyZmFjZTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50
LmNwcApAQCAtNTksMTIgKzU5LDEyIEBAIHZvaWQgU1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIHJldHVybjsK
IAogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
Ci0gICAgICAgIGlmIChtX3RhcmdldEVsZW1lbnQpIHsKLSAgICAgICAgICAgIG1fdGFyZ2V0RWxl
bWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKLSAgICAgICAgICAgIGlmIChhdXRv
KiByZW5kZXJlciA9IG1fdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKCFtX3RhcmdldEVsZW1l
bnQpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJp
dFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKIAorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCptX3RhcmdldEVsZW1lbnQpOworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPnNl
dE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlQW5pbWF0b3IuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0
cmlidXRlQW5pbWF0b3IuY3BwCmluZGV4IDVmMjNiMzAxMjZmNDFmYTQyZDFmNjgwODBjZThiOTQ0
OTUzYWVlYjMuLmE2ZGU3OGVhNDg0NDM1M2E1Y2IzOWRiMmI3MGVkODU1YjlkNjNjMWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9y
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmlt
YXRvci5jcHAKQEAgLTQwLDcgKzQwLDcgQEAgYm9vbCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6aXNB
bmltYXRlZFN0eWxlUHJvcGVydHlBbmlhbXRvcihjb25zdCBTVkdFbGVtZW50JiB0YXIKIHZvaWQg
U1ZHQXR0cmlidXRlQW5pbWF0b3I6OmludmFsaWRhdGVTdHlsZShTVkdFbGVtZW50JiB0YXJnZXRF
bGVtZW50KQogewogICAgIFNWR0VsZW1lbnQ6Okluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQodGFyZ2V0RWxlbWVudCk7Ci0gICAgdGFyZ2V0RWxlbWVudC5pbnZhbGlkYXRlU1ZHUHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICB0YXJnZXRFbGVtZW50LnNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjphcHBs
eUFuaW1hdGVkU3R5bGVQcm9wZXJ0eUNoYW5nZShTVkdFbGVtZW50JiBlbGVtZW50LCBDU1NQcm9w
ZXJ0eUlEIGlkLCBjb25zdCBTdHJpbmcmIHZhbHVlKQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454103</attachid>
            <date>2022-03-08 04:42:42 -0800</date>
            <delta_ts>2022-03-11 04:08:00 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220308124240.patch</filename>
            <type>text/plain</type>
            <size>75933</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkwOTAxCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZjdkNjg1YjA3YzMxYTdi
NWVhZWY2N2JhZmY0YzEwYzNhOTJlNmMxOS4uMGE1N2VlZDc5OTYyNTUxYWVhMGQ5ZjcxZWI5MDQw
NWE4NTRmYzdjOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDI3NyBAQAorMjAyMi0wMy0wNyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKworICAgICAgICBCYXNl
ZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OnBhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uTmVlZGVkIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnREYXRhOjpzZXRQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbk5lZWRlZCBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToKKyAgICAgICAgKiByZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
UmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUpOgorICAgICAgICAqIHN2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQpOgorICAgICAgICAqIHN2Zy9TVkdDaXJj
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NpcmNsZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKToKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291
cmNlSW52YWxpZGF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OmludmFsaWRh
dGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVlZGVkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5o
OgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50SW5saW5lcy5oOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFs
SGludFN0eWxlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxsaXBzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVDb21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oOgorICAgICAgICAqIHN2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3Np
dGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252
b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6OnNldE9yZGVyKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVN
YXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6bm90aWZ5RmluaXNoZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRVRpbGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RmlsdGVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZh
bGlkYXRlKTogRGVsZXRlZC4KKyAgICAgICAgKiBzdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFwaGljc0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdJbWFnZUVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTGlu
ZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXRo
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdHRlcm5F
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdHRlcm5FbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQb2x5RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdQb2x5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdSZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdSZWN0RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdU
UmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0F0dHJpYnV0ZUFuaW1hdG9yOjppbnZhbGlkYXRlU3R5bGUp
OgorCisyMDIyLTAyLTI1ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgorCisg
ICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hvdWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2lu
ZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTIzMDI5NgorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFdJUAorCisgICAgICAgICogcmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2VkKToK
KyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OnJlbW92ZUZyb21DYWNoZUFuZEludmFsaWRhdGVEZXBlbmRlbmNpZXMpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvU1ZHUmVzb3VyY2VzQ2FjaGUuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHUmVzb3VyY2VzQ2FjaGU6OnJlbW92ZVJlbmRlcmVyRnJvbVJlc291cmNlcyk6Cisg
ICAgICAgICogcmVuZGVyaW5nL3N2Zy9TVkdSZXNvdXJjZXNDYWNoZS5oOgorICAgICAgICAqIHJl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVyVHJlZSk6CisgICAgICAgICogc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0FuaW1hdGVN
b3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCk6CisgICAgICAgICogc3ZnL1NWR0Np
cmNsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQ2lyY2xlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6Y29tbWl0UHJvcGVydHlDaGFuZ2UpOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0Rp
cnR5KToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0VsZW1lbnQ6OnNldE5lZWRzUGFyZW50QW5kUmVz
b3VyY2VJbnZhbGlkYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6aW52YWxp
ZGF0ZVBhcmVudEFuZFJlc291cmNlSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50
Lmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRBbmltYXRlZFNWR0F0dHJpYnV0
ZXNBcmVEaXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZH
QXR0cmlidXRlcyk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZh
bGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUpOiBEZWxldGVkLgorICAgICAgICAqIHN2
Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGxpcHNlRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3Rk
RGV2aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRT
dGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jl
c291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlG
aW5pc2hlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVN
ZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xv
Z3lFbGVtZW50OjpzZXRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFT2Zmc2V0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVG
aWx0ZXJQcmltaXRpdmVQYXJlbnQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3Zn
L1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVp
Z25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
R2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0lt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR01hc2tFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR01hc2tFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGllbnRF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1JlY3RFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1JlY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
VkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NW
R0VsZW1lbnQ6OnNjcm9sbFRvRnJhZ21lbnQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxl
bWVudDo6cmVzZXRTY3JvbGxBbmNob3IpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRo
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL3Byb3BlcnRpZXMvU1ZH
QXR0cmlidXRlQW5pbWF0b3IuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHQXR0cmlidXRlQW5p
bWF0b3I6OmludmFsaWRhdGVTdHlsZSk6CisKIDIwMjItMDMtMDcgIENocmlzIER1bWV6ICA8Y2R1
bWV6QGFwcGxlLmNvbT4KIAogICAgICAgICBPcHRpbWl6ZSB0aGUgcGFzc2luZyBvZiBkYXRhIGFj
cm9zcyB0aHJlYWRzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEu
aCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDUxMTZlMzIwODk3Zjhk
YjUyOGJiMTE0Yjc5NjgyZTlkZTZjZGNmOGUuLmIxZDk2NTcxN2U5NTNkMmIzYThhMDIwM2E1OTMw
NzhiMzlmYmRlMTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0xMjUsMTIgKzEyNSwx
MyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDMyX3QgbV9hcnJheVNpemVBbmRGbGFnczsK
IAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FycmF5U2l6ZSA9IDI3OwotICAgIHN0YXRp
YyBjb25zdCB1aW50MzJfdCBzX2ZsYWdDb3VudCA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IHNfZmxhZ0NvdW50ID0gNjsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSXNV
bmlxdWUgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdIYXNOYW1lQXR0cmli
dXRlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkgPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90
IHNfZmxhZ1N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IDEgPDwgMzsKICAgICBzdGF0aWMgY29uc3Qg
dWludDMyX3Qgc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkgPSAxIDw8IDQ7Cisg
ICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uTmVlZGVkID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdzTWFz
ayA9ICgxIDw8IHNfZmxhZ0NvdW50KSAtIDE7CiAKICAgICBpbmxpbmUgdm9pZCB1cGRhdGVGbGFn
KHVpbnQzMl90IGZsYWcsIGJvb2wgc2V0KSBjb25zdApAQCAtMTYwLDYgKzE2MSw5IEBAIHByb3Rl
Y3RlZDoKICAgICBib29sIGFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCkgY29uc3QgeyBy
ZXR1cm4gbV9hcnJheVNpemVBbmRGbGFncyAmIHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0Fy
ZURpcnR5OyB9CiAgICAgdm9pZCBzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eShib29s
IGRpcnR5KSBjb25zdCB7IHVwZGF0ZUZsYWcoc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJl
RGlydHksIGRpcnR5KTsgfQogCisgICAgYm9vbCBwYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bk5lZWRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbk5lZWRlZDsgfQorICAgIHZvaWQgc2V0UGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb25OZWVkZWQoYm9vbCBkaXJ0eSkgY29uc3QgeyB1cGRhdGVGbGFn
KHNfZmxhZ1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uTmVlZGVkLCBkaXJ0eSk7IH0KKwog
ICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9pbmxpbmVTdHlsZTsKICAgICBt
dXRhYmxlIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwogICAgIG11dGFibGUgQXRvbVN0
cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3N2Zy9SZW5kZXJTVkdJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNwcAppbmRleCBlY2YxNzEzMWExYzUyNTkyYTVmNzMwYTZk
MTU5ZjExZDg4YWRmYWE3Li5hMTIzM2RlZWE5N2NlZmI1NmE1N2RhYTVjMDdlM2M2NmVmZThjMzBj
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdl
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR0ltYWdlLmNw
cApAQCAtMjQ1LDE4ICsyNDUsMTMgQEAgdm9pZCBSZW5kZXJTVkdJbWFnZTo6aW1hZ2VDaGFuZ2Vk
KFdyYXBwZWRJbWFnZVB0ciwgY29uc3QgSW50UmVjdCopCiAgICAgaWYgKGF1dG8qIHJlc291cmNl
cyA9IFNWR1Jlc291cmNlc0NhY2hlOjpjYWNoZWRSZXNvdXJjZXNGb3JSZW5kZXJlcigqdGhpcykp
CiAgICAgICAgIHJlc291cmNlcy0+cmVtb3ZlQ2xpZW50RnJvbUNhY2hlKCp0aGlzKTsKIAotICAg
IC8vIEV2ZW50dWFsbHkgbm90aWZ5IHBhcmVudCByZXNvdXJjZXMsIHRoYXQgd2UndmUgY2hhbmdl
ZC4KLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCp0aGlzLCBmYWxzZSk7Ci0KICAgICAvLyBVcGRhdGUgdGhlIFNWR0ltYWdl
Q2FjaGUgc2l6ZUFuZFNjYWxlcyBlbnRyeSBpbiBjYXNlIGltYWdlIGxvYWRpbmcgZmluaXNoZWQg
YWZ0ZXIgbGF5b3V0LgogICAgIC8vIChodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9OTk0ODkpCiAgICAgbV9vYmplY3RCb3VuZGluZ0JveCA9IEZsb2F0UmVjdCgpOwotICAg
IGlmICh1cGRhdGVJbWFnZVZpZXdwb3J0KCkpCi0gICAgICAgIHNldE5lZWRzTGF5b3V0KCk7CiAK
ICAgICBpbnZhbGlkYXRlQnVmZmVyZWRGb3JlZ3JvdW5kKCk7CiAKLSAgICByZXBhaW50KCk7Cisg
ICAgaW1hZ2VFbGVtZW50KCkuc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogfQogCiB2b2lkIFJlbmRlclNWR0ltYWdlOjphZGRGb2N1c1JpbmdSZWN0cyhWZWN0b3I8TGF5
b3V0UmVjdD4mIHJlY3RzLCBjb25zdCBMYXlvdXRQb2ludCYsIGNvbnN0IFJlbmRlckxheWVyTW9k
ZWxPYmplY3QqKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5n
L1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRhdGlu
Zy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNzE1MWUwNjJlOGRmMzg1NGIxMjMxMWQ5MzY4
ZTdkMTRhNjc3OGY5NC4uNDhhNzM4YzUzNmYxNDY5YTFiNTQ1YzczYWJjYzJjMmUyZGIwMmExOSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVy
VHJlZVVwZGF0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAjaW5jbHVkZSAiUmVuZGVyVHJlZVVw
ZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgiCiAjaW5jbHVkZSAiUmVuZGVyVmlldy5oIgogI2luY2x1
ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNsdWRlICJTVkdFbGVtZW50LmgiCiAj
aW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlN0eWxlVHJlZVJlc29sdmVyLmgi
CiAjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xsZXIuaCIKQEAgLTE5Miw2ICsxOTMs
OSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKENvbnRhaW5lck5v
ZGUmIHJvb3QpCiAgICAgICAgIGlmIChlbGVtZW50VXBkYXRlKQogICAgICAgICAgICAgdXBkYXRl
RWxlbWVudFJlbmRlcmVyKGVsZW1lbnQsICplbGVtZW50VXBkYXRlKTsKIAorICAgICAgICBpZiAo
aXM8U1ZHRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50
PihlbGVtZW50KS5pbnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRlZCgpOworCiAgICAg
ICAgIHN0b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIAogICAgICAgICBib29sIG1heUhh
dmVSZW5kZXJlZERlc2NlbmRhbnRzID0gZWxlbWVudC5yZW5kZXJlcigpIHx8IChlbGVtZW50Lmhh
c0Rpc3BsYXlDb250ZW50cygpICYmIHNob3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRl
clRyZWVQb3NpdGlvbigpLnBhcmVudCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Fu
aW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCBmOTUyNzJhNGQ1ZDhhODliNTYwYzZkZWE4MGY2
ODljMDFmMWE2NjZlLi4zNmI3Y2E3NmJhMTA4ZjJjZDM5MmE2YzY0NTkyY2M5YjhhMmYwYTYxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAg
LTI1MCwxMCArMjUwLDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVz
dWx0c1RvVGFyZ2V0KCkKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRhcmdldEVsZW1lbnQtPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0g
ICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICB9CisgICAgYXV0byBpbnZhbGlkYXRlID0gW10o
U1ZHRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVsZW1l
bnQucmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVw
ZGF0ZSgpOworICAgICAgICBlbGVtZW50LnNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKKyAgICB9OworCisgICAgaW52YWxpZGF0ZSgqdGFyZ2V0RWxlbWVudCk7CiAKICAg
ICBBZmZpbmVUcmFuc2Zvcm0qIHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVs
ZW1lbnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVu
dGFsVHJhbnNmb3JtKQpAQCAtMjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25F
bGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8
ICp0cmFuc2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAg
IGNvbnRpbnVlOwogICAgICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5z
Zm9ybTsKLSAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJl
bmRlcmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIGlu
dmFsaWRhdGUoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NpcmNsZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NpcmNs
ZUVsZW1lbnQuY3BwCmluZGV4IDZkNmFmMjUwNWM0Y2VmMjI5NmM5MDMyMTEyZDg3YWZmNDY3NDk0
N2MuLjdjNWY1NGY4YTI4ZGVlMDlmNzBmZjAzMTBjMzU4MmI2ZTA5NzkyNTMgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDaXJjbGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2lyY2xlRWxlbWVudC5jcHAKQEAgLTY4LDggKzY4LDkgQEAgdm9pZCBTVkdD
aXJjbGVFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyaW4KIHZvaWQgU1ZHQ2lyY2xlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3Bl
cnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFs
aWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1
NWY3OTk5NGIxMTgzYzUzZjkyY2VkNjliLi4xMDAwOTIyODk2ZDYxZTMwY2U3ODJlMzc4NTMzNjJk
MWM3NDM0NDRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApA
QCAtNjYsOSArNjYsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KLSAgICAgICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlv
dXQoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC04Miw4ICs4MCw3IEBAIHZvaWQgU1ZHQ2xpcFBh
dGhFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAg
ICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkp
Ci0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBT
VkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXgg
MGNkNGZkNDFlNTNhZDE1ODI4MzI4ZTNiMTNmODJlZTYwNjVlMmQ5ZC4uOGRkYzhkYmQ3ZTJkNDE1
ZmFjYzgzODFhMjA4MGY1Y2RlYTY4ODkzMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3
ICs5Miw3IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJp
bWl0aXZlUGFyZW50KHRoaXMpOworICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFy
ZW50KCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1l
bnQuY3BwCmluZGV4IGYyZWY3NzU3YjU5MDI2ZTg2ZTJmZDVmZTUzYjdhZjhhMGNlOWI2OWUuLjQ5
ZDc3ZTkxZjhhOGQ1YWQ2OTA5OGEzMDU0ZTA2NWQyZjdmMzE3ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5jcHAKQEAgLTYxMCw3ICs2MTAsNyBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFBy
b3BlcnR5Q2hhbmdlKFNWR1Byb3BlcnR5KiBwcm9wZXJ0eSkKICAgICAvLyBTVkdMZW5ndGhMaXN0
IGFuZCBub3QgdGhlIFNWR0xlbmd0aC4KICAgICBwcm9wZXJ0eS0+c2V0RGlydHkoKTsKIAotICAg
IGludmFsaWRhdGVTVkdBdHRyaWJ1dGVzKCk7CisgICAgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVz
QXJlRGlydHkoKTsKICAgICBzdmdBdHRyaWJ1dGVDaGFuZ2VkKHByb3BlcnR5UmVnaXN0cnkoKS5w
cm9wZXJ0eUF0dHJpYnV0ZU5hbWUoKnByb3BlcnR5KSk7CiB9CiAKQEAgLTYyNiw3ICs2MjYsNyBA
QCB2b2lkIFNWR0VsZW1lbnQ6OmNvbW1pdFByb3BlcnR5Q2hhbmdlKFNWR0FuaW1hdGVkUHJvcGVy
dHkmIGFuaW1hdGVkUHJvcGVydHkpCiAgICAgZWxzZQogICAgICAgICBzZXRTeW5jaHJvbml6ZWRM
YXp5QXR0cmlidXRlKGF0dHJpYnV0ZU5hbWUsIGFuaW1hdGVkUHJvcGVydHkuYmFzZVZhbEFzU3Ry
aW5nKCkpOwogCi0gICAgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKKyAgICBzZXRBbmltYXRl
ZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpOwogICAgIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoYXR0cmli
dXRlTmFtZSk7CiB9CiAKQEAgLTg4Myw2ICs4ODMsMjkgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb2xs
ZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBu
YW0KICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBw
cm9wZXJ0eUlELCB2YWx1ZSk7CiB9CiAKK3ZvaWQgU1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5KCkKK3sKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNl
dFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSh0cnVlKTsKKyAgICAvLyBUcmlnZ2VyIHN0
eWxlIHJlY2FsY3VsYXRpb24gZm9yICJlbGVtZW50cyBhcyByZXNvdXJjZSIgKGUuZy4gcmVmZXJl
bmNlZCBieSBmZUltYWdlKS4KKyAgICBpbnZhbGlkYXRlU3R5bGUoKTsKK30KKwordm9pZCBTVkdF
bGVtZW50OjpzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCkKK3sKKyAgICBl
bnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldFBhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
TmVlZGVkKHRydWUpOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCit2b2lkIFNWR0VsZW1l
bnQ6OmludmFsaWRhdGVQYXJlbnRBbmRSZXNvdXJjZUlmTmVlZGVkKCkKK3sKKyAgICBpZiAoIWVs
ZW1lbnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPnBhcmVudEFuZFJlc291cmNlSW52YWxpZGF0
aW9uTmVlZGVkKCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIHJlbmRlcmVyID0g
dGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGVsZW1lbnRE
YXRhKCktPnNldFBhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uTmVlZGVkKGZhbHNlKTsKK30K
Kwogdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcElkID0gY3NzUHJvcGVydHlJ
ZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKaW5k
ZXggMmQzYTMzMWU4ZTgyNTRlNjdmMGM2NzYyY2QyMDUzMjNmYTk2MGNjYi4uOTQyNTEwODc1Yjkw
N2YzZTljOTAyNGM3ZWI4OTQ4Y2NkMzc3MjVkZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCkBA
IC04Miw4ICs4MiwxMCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIEFmZmluZVRyYW5zZm9ybSog
c3VwcGxlbWVudGFsVHJhbnNmb3JtKCkgeyByZXR1cm4gbnVsbHB0cjsgfQogCi0gICAgaW5saW5l
IHZvaWQgaW52YWxpZGF0ZVNWR0F0dHJpYnV0ZXMoKTsKLSAgICBpbmxpbmUgdm9pZCBpbnZhbGlk
YXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKKyAgICBpbmxpbmUgdm9pZCBzZXRBbmlt
YXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpOworICAgIHZvaWQgc2V0UHJlc2VudGF0aW9uYWxI
aW50U3R5bGVJc0RpcnR5KCk7CisgICAgdm9pZCBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CisgICAgdm9pZCBpbnZhbGlkYXRlUGFyZW50QW5kUmVzb3VyY2VJZk5lZWRl
ZCgpOwogCiAgICAgLy8gVGhlIGluc3RhbmNlcyBvZiBhbiBlbGVtZW50IGFyZSBjbG9uZXMgbWFk
ZSBpbiBzaGFkb3cgdHJlZXMgdG8gaW1wbGVtZW50IDx1c2U+LgogICAgIGNvbnN0IFdlYWtIYXNo
U2V0PFNWR0VsZW1lbnQ+JiBpbnN0YW5jZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnRJbmxpbmVzLmgKaW5kZXggNTk3YWEwZWUxNTc2YzIxZTc1ZTI3ZDQxYWIxNjMyMzhiYjIw
OGFiMi4uYzY5ZWM3MGJiNjk5YjQxODljNWZhZTZjZGRkY2EzMTQ1ZjdjNTU5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKQEAgLTMwLDE4ICszMCwxMSBAQAogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLWlubGluZSB2b2lkIFNWR0VsZW1lbnQ6OmludmFsaWRhdGVTVkdB
dHRyaWJ1dGVzKCkKK2lubGluZSB2b2lkIFNWR0VsZW1lbnQ6OnNldEFuaW1hdGVkU1ZHQXR0cmli
dXRlc0FyZURpcnR5KCkKIHsKICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldEFuaW1h
dGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KHRydWUpOwogfQogCi1pbmxpbmUgdm9pZCBTVkdFbGVt
ZW50OjppbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKQotewotICAgIGVuc3Vy
ZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRy
dWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVjYWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFz
IHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5IGZlSW1hZ2UpLgotICAgIGludmFsaWRhdGVT
dHlsZSgpOwotfQotCiBzdHJ1Y3QgU1ZHQXR0cmlidXRlSGFzaFRyYW5zbGF0b3IgewogICAgIHN0
YXRpYyB1bnNpZ25lZCBoYXNoKGNvbnN0IFF1YWxpZmllZE5hbWUmIGtleSkKICAgICB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsbGlwc2VFbGVtZW50LmNwcAppbmRleCA1OTU5OTcxMWY0YmE5OTQx
MmQ5ODcyYjgwMjE0ODg0MDcyNzUyZDE5Li5kNTRjZTJiYTZkMzA3MTVhZDAxYTBjZWFkMDJmM2Qz
Y2JlYTk2MGY5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxsaXBzZUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGxpcHNlRWxlbWVudC5jcHAKQEAg
LTcxLDggKzcxLDkgQEAgdm9pZCBTVkdFbGxpcHNlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmkKIHZvaWQgU1ZHRWxsaXBzZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIEFTU0VSVChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJOYW1lKSk7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUo
KTsKKyAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJs
ZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3Bw
CmluZGV4IGUxY2M4MzM1YzMyMGQ5ZWZlNWMyNDM4NDMwZmM4Mzk3NDhlNzZmMzUuLjI2NzdhOWM5
ZDcyODk4OWQ5N2VlMGM5MmQzZWU4MjYzOTkzYTc1MGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtODMsMTUgKzgzLDEyIEBAIGJvb2wgU1ZHRkVCbGVuZEVs
ZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwgY29u
c3QgUXVhCiAKIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjptb2RlQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0g
ICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwor
ICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDY5ZjkxZGMw
ZTUwOTY3Y2ZjNjdjY2FhZmYwMGZkMTRhM2Q4NTY3YzQuLjliNTJjNGY1NzUwMWNmODAyNzBlM2Fm
MmYzNjg1OGVhMDhmZjI4MjQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcApAQCAtODQsMTUgKzg0LDEyIEBAIGJvb2wgU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVmZmVjdCwg
Y29uCiAKIHZvaWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp0eXBlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmFsdWVzQXR0cikgewor
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAg
ICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAg
ICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxz
ZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQuY3BwCmluZGV4IDlhNzViNDYyODdmYzA2OTQwOTIyZWMz
OTUxMzE3M2VlZjI0MDMzZTguLmI1Mzc4ZWI3M2U0NTY3Nzc0YWRkZDE0MjU2ZjJmYzk4Nzg1ZDMz
ZGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvbmVudFRyYW5zZmVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNm
ZXJFbGVtZW50LmNwcApAQCAtNjIsNiArNjIsMTcgQEAgdm9pZCBTVkdGRUNvbXBvbmVudFRyYW5z
ZmVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY28K
ICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnBhcnNlQXR0cmlidXRl
KG5hbWUsIHZhbHVlKTsKIH0KIAordm9pZCBTVkdGRUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKK3sKKyAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIGlu
dmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOworICAgICAgICByZXR1cm47Cisg
ICAgfQorCisgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKK30KKwogUmVmUHRyPEZpbHRlckVmZmVjdD4gU1ZHRkVD
b21wb25lbnRUcmFuc2ZlckVsZW1lbnQ6OmZpbHRlckVmZmVjdChjb25zdCBTVkdGaWx0ZXJCdWls
ZGVyJiwgY29uc3QgRmlsdGVyRWZmZWN0VmVjdG9yJikgY29uc3QKIHsKICAgICBDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uIHJlZDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvbmVudFRyYW5zZmVyRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9uZW50VHJhbnNmZXJFbGVtZW50LmgKaW5kZXggNjRmN2I5YWU4OTFhYjkzMTI3ZDk5MGY0NDdl
ZTRkZjI2NDU1OGIxMS4uZjE0YzNjNzcyYTZjM2NkOGExNDlkMGRkNmM0MjJmMGVjMzBjN2FlMyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LmgKQEAgLTQwLDggKzQwLDggQEAgcHJpdmF0ZToKICAgICB1c2luZyBQcm9wZXJ0eVJlZ2lz
dHJ5ID0gU1ZHUHJvcGVydHlPd25lclJlZ2lzdHJ5PFNWR0ZFQ29tcG9uZW50VHJhbnNmZXJFbGVt
ZW50LCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+OwogICAgIGNvbnN0IFNW
R1Byb3BlcnR5UmVnaXN0cnkmIHByb3BlcnR5UmVnaXN0cnkoKSBjb25zdCBmaW5hbCB7IHJldHVy
biBtX3Byb3BlcnR5UmVnaXN0cnk7IH0KIAotICAgIC8vIEZJWE1FOiBzdmdBdHRyaWJ1dGVDaGFu
Z2VkIG1pc3NpbmcuCiAgICAgdm9pZCBwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiwgY29uc3QgQXRvbVN0cmluZyYpIG92ZXJyaWRlOworICAgIHZvaWQgc3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAKICAgICBWZWN0b3I8QXRvbVN0
cmluZz4gZmlsdGVyRWZmZWN0SW5wdXRzTmFtZXMoKSBjb25zdCBvdmVycmlkZSB7IHJldHVybiB7
IGluMSgpIH07IH0KICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3Qg
U1ZHRmlsdGVyQnVpbGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0IG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAppbmRl
eCA0NTllZGFiODU5N2JhMjc5NmM3NzkyZjlmZWU1NzhjOTgzOGRhYTFhLi45N2I0Y2M1YzA2Yzcz
YjE3MDQ0NWVkYmI4ODkxNzM2NjZlNDM0YmVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE1LDE1ICsxMTUsMTIgQEAgYm9vbCBTVkdGRUNv
bXBvc2l0ZUVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3QqIGVm
ZmVjdCwgY29uc3QKIAogdm9pZCBTVkdGRUNvbXBvc2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmsxQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprM0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0cikgeworICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKKyAgICAgICAgICAg
IHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwCmluZGV4IDAyYmMzN2I2ZDRhM2JjMjhkYThhZWQzNjNhZTE3NDk3
ZjYxOWY3NmIuLmI5NGNkZTU4ZWJiNTU1YWU0YTY1ODU3MTUxYTFkNmE0NjE1OGFiNmMgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApA
QCAtMTYwLDI3ICsxNjAsMjQgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0
T3JkZXIoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVyWC0+c2V0QmFzZVZhbEludGVy
bmFsKHgpOwogICAgIG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxp
ZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKIH0K
IAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVsVW5pdExlbmd0aChm
bG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNldEJhc2VWYWxJ
bnRlcm5hbCh4KTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5zZXRCYXNlVmFsSW50ZXJuYWwo
eSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZh
bGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmJpYXNBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFy
Z2V0WUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cikgeworICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZlQXR0
cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxNYXRyaXhBdHRyKSB7Ci0g
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBp
bnZhbGlkYXRlKCk7CisgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Omtlcm5lbE1hdHJpeEF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4
IDk2ODRmYWI4MDBjYzA1NmE4MzRiNzQ3ZWNmMmQ3M2RiYWYwZmM2OTguLjhhNmRjOTcwZDI1NGUy
YzQxYzRjOGE5YThiN2NkMmU1NjZhOWEzODMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjUsMTUgKzEyNSwxMiBAQCBi
b29sIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRl
KEZpbHRlckVmZmVjdCogZWZmZWN0LAogCiB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
LSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpsaWdodGlu
Z19jb2xvckF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0
dHIpIHsKLSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIpCisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQo
YXR0ck5hbWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4IGI2MmM0NjQ5YmUx
Mzk5NmMxODFlM2E5ODZlMGY5YzNjM2Q1M2RiMTQuLjUyMzY3OGRkOTY5NjM0NmJiYzY4ZGNjNmUz
ODRkZDc3MmUwNmE1ZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC05OSwxNSArOTksMTIgQEAgYm9vbCBTVkdGRURpc3Bs
YWNlbWVudE1hcEVsZW1lbnQ6OnNldEZpbHRlckVmZmVjdEF0dHJpYnV0ZShGaWx0ZXJFZmZlY3Qq
IGVmZmVjdCwKIAogdm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJO
YW1lID09IFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNjYWxl
QXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJl
dHVybjsKLSAgICB9Ci0KLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikgewotICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW4yQXR0cikKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRp
b24oKTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA0NTk5MTBlNTRkMmY2MDU2ZWEy
NTliMTg4MzliM2UzZTliNTMxNjgyLi5iZGM4ZGNlZjZiYjk5NDA1MjRmZGE3NDdhODM0OTIyOGVh
ZWEyODgwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQu
Y3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3Rk
RGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZpYXRpb25YLT5zZXRC
YXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNlVmFsSW50ZXJu
YWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1
ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1
c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYjVmM2M3YjZjZWZmZDY1ZGZkMGFlMTFhNGE5YjJi
MmUwZDgzYjhhMy4uNDVkZWQwMDA1Njc1MGI1ZDYyOTNkMDM5NDFhNzNjMjQ5MmQ3M2FhNCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKQEAg
LTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnNldFN0ZERldmlh
dGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFzZVZh
bEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbEludGVybmFsKHkp
OwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxp
ZGF0aW9uKCk7CiB9CiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJp
YnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIHsKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUo
KTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50
LmNwcAppbmRleCA0YTljM2M0NWE5MjNlYmQyYWJkZjVhMWZkMmQ3ZmU1MDYwNzk0ZDQzLi5kNWU4
Njg5NmI1ZDY1MTI4Nzg4Njk1N2VjOGZmZjllOGJmYTgwNzRlIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNWR0ZFSW1h
Z2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmIChpczxTVkdF
bGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxTVkdFbGVtZW50Pigq
dGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAKLSAgICBpbnZh
bGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwog
fQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZp
ZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTEyNyw5ICsxMjcsOSBA
QCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWRO
YW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlm
IChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKKyAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xNjUsMTYgKzE2NSwxMSBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50Ojpub3RpZnlGaW5pc2hlZChDYWNoZWRSZXNvdXJjZSYsIGNvbnN0IE5l
dHdvcmtMb2FkTWV0cmljcwogICAgIGlmICghaXNDb25uZWN0ZWQoKSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudEVsZW1lbnQoKTsKLQorICAgIGF1dG8gcGFy
ZW50ID0gcGFyZW50RWxlbWVudCgpOwogICAgIGlmICghcGFyZW50IHx8ICFwYXJlbnQtPmhhc1Rh
Z05hbWUoU1ZHTmFtZXM6OmZpbHRlclRhZykpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRl
ckVsZW1lbnQqIHBhcmVudFJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmICgh
cGFyZW50UmVuZGVyZXIpCi0gICAgICAgIHJldHVybjsKLQotICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnBhcmVudFJlbmRl
cmVyKTsKKyAgICBkb3duY2FzdDxTVkdFbGVtZW50PigqcGFyZW50KS5zZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIHN0YXRpYyBpbmxpbmUgSW50UmVjdCBzY2Fs
ZWRJbWFnZUJ1ZmZlclJlY3QoY29uc3QgRmxvYXRSZWN0JiByZWN0LCBjb25zdCBGbG9hdFNpemUm
IHNjYWxlKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXggYzYy
NTI2Y2NkNzU4MzI3MGU4ODU2ZDEyZTMyN2RlYzMzNDk0YjAxMi4uODdhMmUwMjFlNDcwYWQ5NWQz
ZDM3NTQ0ZGZjYTc1ZWFkYjA3ODcyMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVs
ZW1lbnQuY3BwCkBAIC0xNTEsMTUgKzE1MSw5IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB2b2lkIFNW
R0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5n
ZSkKIHsKICAgICBTVkdFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY2hhbmdlKTsKLQogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJl
bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVu
dC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGludmFs
aWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCmluZGV4IDRiZTkwNzgyNmRiYTA2MTkz
Njg0ZTBhNGRhZjViYTJiNWZhOTRhZmEuLjkxYTZjMTQwNDFkMTU3ZDg2ZjZhYmZhNjI2NWMxOWQ1
M2MzYWJjZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQu
Y3BwCkBAIC02MCw5ICs2MCw5IEBAIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpwYXJzZUF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tCiAKIHZvaWQgU1ZH
RkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKSB7
CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOworICAgICAgICBpbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KCp0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCmluZGV4
IGFmYjk5OTQwMGQ1MDI2NjczNDI3ZWI3NTA4NjU1ZWUyYzhjYzFmOTUuLjg2NTA2NjAyNDZiMmJj
YmM0YWJlMDA3OWUyN2ZmZGI3ZWFiOWIzMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKQEAgLTUyLDcgKzUyLDcgQEAgdm9pZCBTVkdGRU1vcnBo
b2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMoZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3JhZGl1
c1gtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3JhZGl1c1ktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogfQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpAQCAtOTgsMTUgKzk4LDEyIEBAIGJvb2wgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0
RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVmZmVjdCogZWZmZWN0LCBjb25zCiAKIHZvaWQg
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJh
dG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cikgeworICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgcHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7Ci0gICAgICAgIHJldHVybjsKLSAgICB9Ci0KLSAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikgewotICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKKyAgICAgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKKyAgICAgICAgZWxzZQorICAgICAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5k
ZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uMjViODZhZDkzMmQ1
YmM3MzlhMTQwOWZmZGM4NzkyNWFhYzIxZjM3NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlk
YXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDY4MTUyNjgwODJm
ZDg4YzI2Nzc3OWYzMTE5ODkzZWQ2MDgzMjA2YjkuLmE3MjM5NDI2NWNkMGQyOGE3Mjk2MjExN2Jk
YTAzYmM0NGFmMWFiMGYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEzNSwxNSArMTM1LDEyIEBAIGJvb2wgU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c2V0RmlsdGVyRWZmZWN0QXR0cmlidXRlKEZpbHRlckVm
ZmVjdCogZWZmZWN0CiAKIHZvaWQgU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0
aEF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
Ci0gICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwotICAgICAgICBy
ZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpIHsK
LSAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGUoKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIp
CisgICAgICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7Cisg
ICAgICAgIGVsc2UKKyAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxl
RWxlbWVudC5jcHAKaW5kZXggMmE3YTNmNDkzYmVhZmExZTJkMjM0Y2UzYTlkY2EzZTgyMzM4NTg3
Zi4uYTk3OWRjOWMzYWUwNTYyZGI4YzljODRmNjI1NjQxNDQ5OThjNzA5MyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNTgsOSArNTgsOSBAQCB2b2lkIFNWR0ZF
VGlsZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNv
bnN0IEF0b21TdHJpbgogCiB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJl
bnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKaW5kZXggNTU3OGI1MTlhMzYyMmJk
NzA2YWQyN2JmZTRjNjAwMzkxNDg1OGNhMC4uMTM2Zjk2NDNkOGZkMzY5MjM1NWU5OGU2MDFlMzMz
MjkzOTk3ZjUwYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcApAQCAt
OTIsMTUgKzkyLDE4IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluCiAKIHZvaWQgU1ZHRmlsdGVy
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKIHsKLSAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKKyAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwor
ICAgICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShh
dHRyTmFtZSkpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHko
KTsKKyAgICAgICAgZWxzZQorICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUlu
dmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91
dCgpOworICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAg
ICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTExNCw4ICsxMTcsNyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAwMGU0ZTY5ODY2
NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi5mMzhhYTI4OWNmN2ExMDMyNmY0NzU4OWEz
N2IyM2FkODY2MGM3ODdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXRO
ZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2gKIAogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJT
dHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpAQCAtMTA3LDIwICsxMDcs
MTMgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQor
dm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQmIGVsZW1lbnQp
CiB7Ci0gICAgaWYgKCFlbGVtZW50KQorICAgIGF1dG8gcGFyZW50ID0gZWxlbWVudC5wYXJlbnRO
b2RlKCk7CisgICAgaWYgKCFpczxTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM+
KHBhcmVudCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlZlB0ciBwYXJlbnQgPSBlbGVtZW50
LT5wYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnQpCi0gICAgICAgIHJldHVybjsKLQotICAg
IFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmICgh
cmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0g
ICAgICAgIHJldHVybjsKLQotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNh
c3Q8U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzPihwYXJlbnQpLT5zZXROZWVk
c1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMu
aAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTJlMGQy
MWM0MTFhZWE5OWJkNjQ4YjdiNWI2ZTg4M2U0YzFmYjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBA
IC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsK
ICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6CkBAIC04MSwxMyArODAsNyBAQCBwcml2YXRlOgog
ICAgIFJlZjxTVkdBbmltYXRlZFN0cmluZz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6
Y3JlYXRlKHRoaXMpIH07CiB9OwogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQoU1ZHRWxlbWVudCopOwotCi1pbmxpbmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXM6OmludmFsaWRhdGUoKQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5k
ZXJlciA9IHJlbmRlcmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0K
K3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Jik7CiAKIGlu
bGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZl
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAppbmRleCA1YWI5
OTU5M2QyZGEyZWYzNzA2MjkzMGU2YzQ5MjFkNmFiYmFkMzU1Li45NWZmNTU2Y2IwMjBhZDI3YjNl
ZDM3MWEzNWM2ZmE0NWFlYjFlNDhiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
Rm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKQEAgLTc0LDE1ICs3NCwxNCBAQCB2b2lkIFNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdAogCiB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpoZWlnaHRBdHRy
KSB7Ci0gICAgICAgIGludmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOwotICAg
ICAgICByZXR1cm47Ci0gICAgfQotCi0gICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUF0dHIpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0
dHIpCisgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAg
ICAgICAgZWxzZSB7CisgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOworICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigp
OworICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKaW5kZXggZTZmMmMxNzk5NjZhYmRhMjIxNGI3NmIwOTZh
M2M1YWI1NDI3ZjFhMC4uMWIyYmNjZDFiODU0YjlhZTMxZjIyNDExYWU2N2RhMTIzNWY3MzM3MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAKQEAgLTE0OSw4ICsx
NDksNyBAQCB2b2lkIFNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnBhdGhMZW5ndGhBdHRyKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3
M2I5M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgzZS4uZjE1ZGQ3MDljMjBiN2Y3NGU3ZDUzNWVmZDQ1
OWYwMTFjYTEwNTA2OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHAKQEAgLTc5LDggKzc5LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3Bl
cnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5j
ZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVj
dCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7Cisg
ICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtOTQsOCArOTMsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNo
YW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1
cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJj
ZUludmFsaWRhdGlvbigpOwogfQogCiBHcmFkaWVudENvbG9yU3RvcHMgU1ZHR3JhZGllbnRFbGVt
ZW50OjpidWlsZFN0b3BzKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFw
aGljc0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5j
cHAKaW5kZXggNDlhMmNhNjk4ZjU0ZTUyZjA5MjBiNTQ4NDZkZTM1ZDM1ZWEyZDFmYS4uYzFkODQ1
YWRjZjdlOGJhZTkzYWVhMDA4MmZkMmI0MWJhYmI4YmQ4OCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0dyYXBoaWNzRWxlbWVudC5jcHAKQEAgLTEzMiwxNCArMTMyLDEyIEBAIHZvaWQgU1ZHR3Jh
cGhpY3NFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBj
b25zdCBBdG9tU3RyCiAKIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewotICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6dHJhbnNmb3JtQXR0cikgeworICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLQotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBzZXROZWVkc1Bh
cmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggYTQ2N2NlYTBiMmQxNmQ4
OTgxYTQwZjM3NzQxNDNiN2YzMzI0ZmNhOC4uYjRjODExY2E4NTJkNzQxMDg3MzRlYzhjMjE0ZTAy
NDBjMWNlZWE4NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTk4
LDIyICs5OCwyMiBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKIAogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpy
ZW5kZXJlcikudXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJl
bmRlcmVyKTsKKyAgICAgICAgICAgIGlmICghZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5k
ZXJlcikudXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQorICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAg
ICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlu
dmFsaWRhdGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50
YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24o
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVu
dC5jcHAKaW5kZXggZWZiOWI4YmNmZDljYzk1ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uYTBi
NGI1MTg5NmYwYmFhYjZiOWJmMzc1OWQwMzM3YmIwMDQ4MzJiYiAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTGluZUVsZW1lbnQuY3BwCkBAIC03MiwxMiArNzIsMTAgQEAgdm9pZCBTVkdMaW5lRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
ICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0KLSAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVy
KCkpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PExlZ2FjeVJlbmRl
clNWR1NoYXBlPih0aGlzLT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRO
ZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAg
IH0KKyAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKKyAgICAgICAg
c2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGll
bnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwCmluZGV4IDg0OGY2YTIyZjhlMjUxMzY2N2JiMDRjYmJiOTlmODA5YTI2OGZjN2YuLjcz
NjFiZDdiNjYwZmVhZTcxMDUzMmZhNjRlMzZkY2YyZWQ2ZjQzMzcgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04Myw4ICs4Myw3IEBA
IHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlv
bigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAg
ICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVu
dEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAwYjQzYmI4NDJlNWUzNjJh
YWVmODc5ZmQ2MDYzYWE1NzZlYWUyMWFiLi4yYjc5NDFkOGM2MDcyNWQwMTJjM2JhZGZlY2QxMDFh
YzE3Y2RkMzE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05
OCwxNCArOTgsMTMgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
QW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRlUmVs
YXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQotICAgIAorCiAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0
ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNl
dE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTE5LDggKzExOCw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3Vy
Y2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3Qt
PnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRh
dGlvbigpOwogfQogCiBTdHJpbmcgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50KCkgY29uc3QKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDFiZmI0MWQzNzBmYzMzNjNjYjAw
YWI2NDg0ODRkZjlkNWEwM2VjZGQuLjIzZTRjYjlmNzQwZDE2YWZhZTJkOTM4M2E1Y2YyNjFkMTcw
NDY3MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtOTgsMTUgKzk4
LDEyIEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmCiAKIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7Ci0gICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKLSAgICAgICAgcmV0
dXJuOwotICAgIH0KLQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIElu
c3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFtZSkpCisgICAgICAg
ICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMjAsOCArMTE3LDcgQEAgdm9pZCBTVkdNYXNrRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYg
KGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICBy
ZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAg
ICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNv
dXJjZUludmFsaWRhdGlvbigpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFz
a0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
aW5kZXggZTE1MTkwZWY4M2NlNjVjMmExNGMwYWIyMWM5ZmNiNTJmYmQzMTA0ZC4uMjIzZDcyMGU3
YjA4NjE5ZTc5Mzc3OTNjNmMwYTQ4ZmM1NWU5OWU2ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCkBAIC02NSwxNSArNjUsMTIgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6cGFy
c2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYK
IAogdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRBdHRy
KSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpbnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKLQotICAgICAgICBpZiAoYXV0byog
cmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewor
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlz
LT5yZW5kZXJlcigpKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRl
KCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBp
bnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRS
ZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCBjNDc0MzQwNjIyMmI1NWRhMDUx
Y2ZhZWFmM2VhYzJjOTUxZWI2NTE1Li40MzEwYjc3ZjU0MjUxMWRmYTI5MzZhYmM2MTg5N2RjMTQx
YTc4NWFhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTEx
MCwxNSArMTEwLDE4IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNv
bnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpCiAKIHZvaWQgU1ZHUGF0dGVy
bkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiB7Ci0gICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlU1ZHUHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsK
KyAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUo
YXR0ck5hbWUpKQorICAgICAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5
KCk7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGlmIChQcm9wZXJ0
eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6
OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBp
ZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklS
ZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3RhbmNl
SW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXROZWVkc1BhcmVudEFu
ZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEz
Miw4ICsxMzUsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29u
c3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENo
YW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJP
YmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlv
dXQoKTsKKyAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiB9CiAK
IFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVu
dFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYp
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAppbmRleCBlYTFmZTA5MmExNjIzNzEz
YzkzODMzYTVkOTU3YWRjZTFlNjM5MTAwLi5hNjI5NjYyNWVkOThhZDkwNmQzOWZhZjNhMTg5NjBm
ODllYTk1ODZiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTU1LDEy
ICs1NSwxMiBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFs
aWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJgogCiB2b2lkIFNWR1BvbHlFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewot
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cikgewotICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigp
KSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CisgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CisgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cik7CisgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAo
YXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigp
KSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRB
bmRSZXNvdXJjZUludmFsaWRhdGlvbigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU1
ZTIxYWZlZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLmYzMzk5NGE5MGFhYTY4OTIw
MzI1NjQxYWU0ODc5ZTQ2NDQ1Y2I2NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFkaWFs
R3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0
LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52
YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UmVjdEVsZW1lbnQuY3BwCmluZGV4IGZkNDBhOGVjZDhiYjk5ZmI0Y2E1YmFmNTVlYzNjMzI1N2I4
YjgxOWMuLmFkN2FhYzg5OWU5YWRhOTQ4MmI4OWEwMDMxMWI2N2ZjNzJjNjBkNTAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1JlY3RFbGVtZW50LmNwcApAQCAtNzksOCArNzksOSBAQCB2b2lkIFNWR1Jl
Y3RFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25z
dCBBdG9tU3RyaW5nJgogdm9pZCBTVkdSZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3Ry
eTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKKyAgICAgICAgQVNTRVJUKFByb3BlcnR5
UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKTsKICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRh
dGVTVkdQcmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgICAgICBzZXRQcmVzZW50YXRpb25h
bEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCmluZGV4IDk0NWRiYzBjOTNjZGNmZjU3NmFkYjUxNjAzZTdj
NDZjMzY2NjRiN2IuLjU4ZmViN2YxNDk1N2RjODU1MGVjYTY3MDY2NDYzNjU4YjNiN2YyNGMgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKQEAgLTEzNyw4ICsxMzcsNyBAQCB2b2lk
IFNWR1NWR0VsZW1lbnQ6OnNldEN1cnJlbnRUcmFuc2xhdGUoY29uc3QgRmxvYXRQb2ludCYgdHJh
bnNsYXRpb24pCiAKIHZvaWQgU1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0ZSgp
CiB7Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3VyY2VJ
bnZhbGlkYXRpb24oKTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+
cmVwYWludCgpOwogfQpAQCAtMjA5LDE3ICsyMDgsMjkgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52
YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CisgICAgICAgIHNldFByZXNlbnRh
dGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOwogCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAg
IGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6d2lkdGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpoZWlnaHRBdHRyKSB7CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKSB7CisgICAgICAgICAgICAgICAgYm9vbCBlbWJlZGRlZFRocm91Z2hGcmFt
ZSA9IGZhbHNlOworI2lmIEVOQUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICAg
ICAgICAgIGlmIChpczxSZW5kZXJTVkdSb290PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVy
U1ZHUm9vdD4ocmVuZGVyZXIpLT5pc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0Rv
Y3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkVGhyb3VnaEZyYW1lID0gdHJ1
ZTsKKyNlbmRpZgorICAgICAgICAgICAgICAgIGlmIChpczxMZWdhY3lSZW5kZXJTVkdSb290Pihy
ZW5kZXJlcikgJiYgZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpLT5pc0Vt
YmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkpCisgICAgICAgICAgICAg
ICAgICAgIGVtYmVkZGVkVGhyb3VnaEZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAo
ZW1iZWRkZWRUaHJvdWdoRnJhbWUpCisgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT52aWV3
KCkuc2V0TmVlZHNMYXlvdXQoTWFya09ubHlUaGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAg
fQorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9uKCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKSB7CiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgICAgIHNldE5lZWRz
UGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMTk1NzAw
ZWJmN2JhNzQxOTQzYzMxN2M5NmY1MmVlZDU3ZWIyOWEzYy4uN2FhNzg2Yjc5OGViNzFmYTJhMzQ1
YmYwZGEyOGQyMTM0NzIyNjA1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CkBAIC02NCwxMSArNjQsMTAgQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYKIAogdm9pZCBTVkdT
dG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKIHsKLSAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0dHIpIHsKLSAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6Om9mZnNldEF0dHIpOworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAppbmRleCAyOTkxZGI2OTM0MjA2ZWE5MjdlYmQ4N2YzNzExMTc4MWU1MjE4MmRlLi5m
NDUxMmU5Mjc3MjdkYTE1MTM2MGVhYmI1ZDI4NWNiM2E3OGE2ZmM3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE4NCw4ICsxODQsNyBAQCB2b2lkIFNWR1RSZWZFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBi
dWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5l
ZWRzUGFyZW50QW5kUmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRl
eCBjMTQ1M2JmYzYwNDA4Yzk1MDc0NjA3N2Q3NjFlZTE0ZDcyOTY1MWZiLi5kZDE0ZGFjMGRjZmQz
ZWU3YjliYjViYmU1Mjc5YmFiM2I2NmIwODgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dENvbnRlbnRFbGVtZW50LmNwcApAQCAtMTgwLDEzICsxODAsMTAgQEAgdm9pZCBTVkdUZXh0
Q29udGVudEVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b20KIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0
aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgpOwotCi0gICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
Ci0gICAgICAgIH0KKyAgICAgICAgc2V0TmVlZHNQYXJlbnRBbmRSZXNvdXJjZUludmFsaWRhdGlv
bigpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0
UGF0aEVsZW1lbnQuY3BwCmluZGV4IGE3NDkxYzRkMWI4NWI5N2UzNDdmZDVhNzE0MTEzMTRjOTc4
NDY2OTMuLmI4ZGQyOTM1MTllY2RkMWRiZTc4MGY1ODc4MTYyM2Y3NTY3ZWE5MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC04OSwxOSArODksMTYgQEAg
dm9pZCBTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwotCiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRP
ZmZzZXRBdHRyKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24o
KTsKLQotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5kUmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdV
UklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CisgICAgICAgIEluc3Rh
bmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBidWlsZFBlbmRpbmdS
ZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldE5lZWRzUGFyZW50QW5k
UmVzb3VyY2VJbnZhbGlkYXRpb24oKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGZl
MjFlNjZhZjU2NjUyODkwYWIzMTgwODNkZDgzMTljZWYxZTYyMDIuLjA1ZTQ4NDY4Yjg1MzBkMjlj
ZDg5NTVhODMxZTYyYTFkZGFkMWM5OGQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAgLTk5LDE2ICs5OSwxMyBAQCB2b2lkIFNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVk
TmFtZSYgYXR0ck5hbQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLQogICAgICAgICBpZiAoYXR0ck5hbWUgIT0gU1ZHTmFtZXM6OnJvdGF0ZUF0dHIp
CiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAg
aWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1Rl
eHRBbmNlc3RvcigqcmVuZGVyZXIpKQotICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0
TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOwotICAgICAgICB9CisgICAgICAgIGlmIChhdXRvKiB0ZXh0QW5jZXN0b3IgPSByZW5kZXJl
cigpID8gUmVuZGVyU1ZHVGV4dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCpyZW5kZXJl
cigpKSA6IG51bGxwdHIpCisgICAgICAgICAgICB0ZXh0QW5jZXN0b3ItPnNldE5lZWRzUG9zaXRp
b25pbmdWYWx1ZXNVcGRhdGUoKTsKIAorICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAppbmRleCBiOWVkZWY2MzFlNjZlNjBmZjU4Yzc1MjM0OTgxZTIxNDUz
MGU0ZmZhLi4xNTYxMmViMTM0MDM5NWQ4NTk3NTI2ZmExOGY0MWE0MDFkZjBkMWViIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCkBAIC0xNTYsMjEgKzE1NiwyMSBAQCB2b2lkIFNW
R1VzZUVsZW1lbnQ6OnRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKFNWR0VsZW1l
bnQmIHNoYWRvd0VsZW1lbgogCiB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7Ci0gICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKICAgICAgICAgICAgIC8v
IEZJWE1FOiBJdCdzIHVubmVjZXNzYXJpbHkgaW5lZmZpY2llbnQgdG8gdXBkYXRlIGJvdGggd2lk
dGggYW5kIGhlaWdodCBlYWNoIHRpbWUgZWl0aGVyIGlzIGNoYW5nZWQuCiAgICAgICAgICAgICBp
ZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAgICAgICAgICAgICAg
ICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdldENsb25lKTsKICAg
ICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworCisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZv
cm1hdGlvbigpOworICAgICAgICBzZXROZWVkc1BhcmVudEFuZFJlc291cmNlSW52YWxpZGF0aW9u
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgeworICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlRXh0ZXJuYWxEb2N1bWVudCgpOwog
ICAgICAgICBpbnZhbGlkYXRlU2hhZG93VHJlZSgpOwogICAgICAgICByZXR1cm47CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAzMjNi
YzIxNDRiY2ViZTQ5MGU1Li44MzEzYTEzNzU0MTdmNGNkMGNlYzA2MjVjNGUwMzY4NWY4MmZhY2U4
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU5LDEyICs1OSwxMiBA
QCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3
Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRF
bGVtZW50KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmli
dXRlcygqdGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVs
ZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAg
ICAgICB9CisgICAgICAgIGlmICghbV90YXJnZXRFbGVtZW50KQorICAgICAgICAgICAgcmV0dXJu
OworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7
CiAKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqbV90YXJnZXRFbGVt
ZW50KTsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5zZXROZWVkc1BhcmVudEFuZFJlc291cmNl
SW52YWxpZGF0aW9uKCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9wcm9wZXJ0aWVzL1NWR0F0dHJpYnV0ZUFuaW1hdG9yLmNwcAppbmRl
eCA1ZjIzYjMwMTI2ZjQxZmE0MmQxZjY4MDgwY2U4Yjk0NDk1M2FlZWIzLi5hNmRlNzhlYTQ4NDQz
NTNhNWNiMzlkYjJiNzBlZDg1NWI5ZDYzYzFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvcHJvcGVydGllcy9TVkdBdHRyaWJ1dGVBbmltYXRvci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL3Byb3BlcnRpZXMvU1ZHQXR0cmlidXRlQW5pbWF0b3IuY3BwCkBAIC00MCw3ICs0MCw3
IEBAIGJvb2wgU1ZHQXR0cmlidXRlQW5pbWF0b3I6OmlzQW5pbWF0ZWRTdHlsZVByb3BlcnR5QW5p
YW10b3IoY29uc3QgU1ZHRWxlbWVudCYgdGFyCiB2b2lkIFNWR0F0dHJpYnV0ZUFuaW1hdG9yOjpp
bnZhbGlkYXRlU3R5bGUoU1ZHRWxlbWVudCYgdGFyZ2V0RWxlbWVudCkKIHsKICAgICBTVkdFbGVt
ZW50OjpJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKHRhcmdldEVsZW1lbnQpOwotICAg
IHRhcmdldEVsZW1lbnQuaW52YWxpZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7Cisg
ICAgdGFyZ2V0RWxlbWVudC5zZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKIH0K
IAogdm9pZCBTVkdBdHRyaWJ1dGVBbmltYXRvcjo6YXBwbHlBbmltYXRlZFN0eWxlUHJvcGVydHlD
aGFuZ2UoU1ZHRWxlbWVudCYgZWxlbWVudCwgQ1NTUHJvcGVydHlJRCBpZCwgY29uc3QgU3RyaW5n
JiB2YWx1ZSkK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454469</attachid>
            <date>2022-03-11 04:08:06 -0800</date>
            <delta_ts>2022-03-11 06:53:28 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220311120804.patch</filename>
            <type>text/plain</type>
            <size>51914</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTQ5CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggN2VkOWZiOTA5NmFmZTRk
N2IyNGJkZmI1ZDI3YWM1YTNiZTk2MmJkNC4uNDRiMDc0MzYzNGNhMmNhZTY2OTBhNzRlYzA2OTFi
MzQzMzA3NDM1NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyMyBAQAorMjAyMi0wMy0xMSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKworICAgICAgICBCYXNl
ZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4KKworICAgICAgICAq
IGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVudERhdGE6OmFyZVNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkRpcnR5IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSBjb25z
dCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVSZW5kZXJUcmVlKToK
KyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KToKKyAg
ICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSk6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluSWZO
ZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAgICogc3ZnL1NWR0ZF
QmxlbmRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQmxlbmRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVyKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxV
bml0TGVuZ3RoKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEaWZmdXNlTGlnaHRp
bmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlzcGxhY2Vt
ZW50TWFwRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpc3BsYWNlbWVudE1h
cEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURyb3BT
aGFkb3dFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVHYXVzc2lh
bkJsdXJFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFR2F1c3NpYW5C
bHVyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpidWls
ZFBlbmRpbmdSZXNvdXJjZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTGlnaHRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpT
VkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzZXRSYWRpdXMpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU9mZnNldEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVNwZWN1bGFy
TGlnaHRpbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpp
bnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGUpOiBEZWxldGVkLgorICAg
ICAgICAqIHN2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGb3JlaWduT2JqZWN0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHZW9t
ZXRyeUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFk
aWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYWRpZW50RWxlbWVu
dDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdMaW5lRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR01hcmtlckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHTWFza0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
TWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAg
ICogc3ZnL1NWR1BvbHlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1BvbHlFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHU1ZHRWxlbWVudDo6dXBkYXRlQ3VycmVudFRyYW5zbGF0
ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHU3RvcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdU
UmVmRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUUmVmRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHVXNlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdVc2VFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHVmlld0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorCiAyMDIyLTAzLTEwICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgog
CiAgICAgICAgIFt3ZWItYW5pbWF0aW9uc10gbWFzay1vcmlnaW4gc2hvdWxkIHN1cHBvcnQgZGlz
Y3JldGUgYW5pbWF0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERh
dGEuaCBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDUxMTZlMzIwODk3
ZjhkYjUyOGJiMTE0Yjc5NjgyZTlkZTZjZGNmOGUuLjViNDYyZTYyN2RhNGI3NjNmMDFkMDk2ZTI1
ZDU2NGMwYjExZWFhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0
YS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0xMjUsMTIgKzEy
NSwxMyBAQCBwcml2YXRlOgogICAgIG11dGFibGUgdWludDMyX3QgbV9hcnJheVNpemVBbmRGbGFn
czsKIAogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2FycmF5U2l6ZSA9IDI3OwotICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdDb3VudCA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHNfZmxhZ0NvdW50ID0gNjsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFn
SXNVbmlxdWUgPSAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdIYXNOYW1lQXR0
cmlidXRlID0gMSA8PCAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdQcmVzZW50
YXRpb25hbEhpbnRTdHlsZUlzRGlydHkgPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IHNfZmxhZ1N0eWxlQXR0cmlidXRlSXNEaXJ0eSA9IDEgPDwgMzsKICAgICBzdGF0aWMgY29u
c3QgdWludDMyX3Qgc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkgPSAxIDw8IDQ7
CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ1NWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5ID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdz
TWFzayA9ICgxIDw8IHNfZmxhZ0NvdW50KSAtIDE7CiAKICAgICBpbmxpbmUgdm9pZCB1cGRhdGVG
bGFnKHVpbnQzMl90IGZsYWcsIGJvb2wgc2V0KSBjb25zdApAQCAtMTYwLDYgKzE2MSw5IEBAIHBy
b3RlY3RlZDoKICAgICBib29sIGFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCkgY29uc3Qg
eyByZXR1cm4gbV9hcnJheVNpemVBbmRGbGFncyAmIHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRl
c0FyZURpcnR5OyB9CiAgICAgdm9pZCBzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eShi
b29sIGRpcnR5KSBjb25zdCB7IHVwZGF0ZUZsYWcoc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVz
QXJlRGlydHksIGRpcnR5KTsgfQogCisgICAgYm9vbCBhcmVTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5EaXJ0eSgpIGNvbnN0IHsgcmV0dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdT
VkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eTsgfQorICAgIHZvaWQgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoYm9vbCBkaXJ0eSkgY29uc3QgeyB1cGRhdGVG
bGFnKHNfZmxhZ1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5LCBkaXJ0eSk7IH0K
KwogICAgIG11dGFibGUgUmVmUHRyPFN0eWxlUHJvcGVydGllcz4gbV9pbmxpbmVTdHlsZTsKICAg
ICBtdXRhYmxlIFNwYWNlU3BsaXRTdHJpbmcgbV9jbGFzc05hbWVzOwogICAgIG11dGFibGUgQXRv
bVN0cmluZyBtX2lkRm9yU3R5bGVSZXNvbHV0aW9uOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKaW5kZXggNzE1MWUw
NjJlOGRmMzg1NGIxMjMxMWQ5MzY4ZTdkMTRhNjc3OGY5NC4uYmVmYzliMzFkYTM4OTRlMGEyZjZl
MmZlYzA2YWJmYzU4YTA1NWI3OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5k
ZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCkBAIC00NSw2ICs0NSw3IEBACiAj
aW5jbHVkZSAiUmVuZGVyVHJlZVVwZGF0ZXJHZW5lcmF0ZWRDb250ZW50LmgiCiAjaW5jbHVkZSAi
UmVuZGVyVmlldy5oIgogI2luY2x1ZGUgIlJ1bnRpbWVFbmFibGVkRmVhdHVyZXMuaCIKKyNpbmNs
dWRlICJTVkdFbGVtZW50LmgiCiAjaW5jbHVkZSAiU3R5bGVSZXNvbHZlci5oIgogI2luY2x1ZGUg
IlN0eWxlVHJlZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiVGV4dE1hbmlwdWxhdGlvbkNvbnRyb2xs
ZXIuaCIKQEAgLTE5Miw2ICsxOTMsOSBAQCB2b2lkIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKENvbnRhaW5lck5vZGUmIHJvb3QpCiAgICAgICAgIGlmIChlbGVtZW50VXBkYXRl
KQogICAgICAgICAgICAgdXBkYXRlRWxlbWVudFJlbmRlcmVyKGVsZW1lbnQsICplbGVtZW50VXBk
YXRlKTsKIAorICAgICAgICBpZiAoaXM8U1ZHRWxlbWVudD4oZWxlbWVudCkpCisgICAgICAgICAg
ICBkb3duY2FzdDxTVkdFbGVtZW50PihlbGVtZW50KS5tYXJrU1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluSWZOZWVkZWQoKTsKKwogICAgICAgICBzdG9yZVByZXZpb3VzUmVuZGVyZXIoZWxlbWVu
dCk7CiAKICAgICAgICAgYm9vbCBtYXlIYXZlUmVuZGVyZWREZXNjZW5kYW50cyA9IGVsZW1lbnQu
cmVuZGVyZXIoKSB8fCAoZWxlbWVudC5oYXNEaXNwbGF5Q29udGVudHMoKSAmJiBzaG91bGRDcmVh
dGVSZW5kZXJlcihlbGVtZW50LCByZW5kZXJUcmVlUG9zaXRpb24oKS5wYXJlbnQoKSkpOwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKaW5kZXggZjk1
MjcyYTRkNWQ4YTg5YjU2MGM2ZGVhODBmNjg5YzAxZjFhNjY2ZS4uNGI2YzUzMGJlOWRjZDBlZjRl
NTIwYThmMTBmMmJjNDZhMTM1ZmRhYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5p
bWF0ZU1vdGlvbkVsZW1lbnQuY3BwCkBAIC0yNTAsMTAgKzI1MCwxMyBAQCB2b2lkIFNWR0FuaW1h
dGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgaWYgKCF0YXJnZXRF
bGVtZW50KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVy
ZXIgPSB0YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgIHJlbmRlcmVyLT5zZXRO
ZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgfQor
ICAgIGF1dG8gdXBkYXRlVGFyZ2V0RWxlbWVudCA9IFtdKFNWR0VsZW1lbnQmIGVsZW1lbnQpIHsK
KyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSBlbGVtZW50LnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKKyAgICAgICAgZWxlbWVu
dC5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOworICAgIH07CisKKyAg
ICB1cGRhdGVUYXJnZXRFbGVtZW50KCp0YXJnZXRFbGVtZW50KTsKIAogICAgIEFmZmluZVRyYW5z
Zm9ybSogdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtID0gdGFyZ2V0RWxlbWVudC0+c3VwcGxl
bWVudGFsVHJhbnNmb3JtKCk7CiAgICAgaWYgKCF0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0p
CkBAIC0yNjUsMTAgKzI2OCw3IEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5
UmVzdWx0c1RvVGFyZ2V0KCkKICAgICAgICAgaWYgKCF0cmFuc2Zvcm0gfHwgKnRyYW5zZm9ybSA9
PSAqdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQogICAgICAgICAgICAgY29udGludWU7CiAg
ICAgICAgICp0cmFuc2Zvcm0gPSAqdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtOwotICAgICAg
ICBpZiAoUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBpbnN0YW5jZS0+cmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgdXBkYXRlVGFyZ2V0RWxl
bWVudChpbnN0YW5jZSk7CiAgICAgfQogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0
aEVsZW1lbnQuY3BwCmluZGV4IGI0ZTc5OTU4YzViMTMwMzU1Zjc5OTk0YjExODNjNTNmOTJjZWQ2
OWIuLmFmZDYwZWJlMDg4ZTQzZDc3YTY4NjhhNWM1NDY3ZjRkMTg1MDA1NjQgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwCkBAIC02Nyw4ICs2Nyw3IEBAIHZvaWQg
U1ZHQ2xpcFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKIAotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC04Miw4ICs4MSw3IEBAIHZvaWQgU1ZHQ2xpcFBhdGhFbGVtZW50OjpjaGlsZHJlbkNoYW5n
ZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBD
aGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChS
ZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHQ2xpcFBhdGhFbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCmluZGV4IDBjZDRmZDQxZTUzYWQxNTgyODMyOGUz
YjEzZjgyZWU2MDY1ZTJkOWQuLjhkZGM4ZGJkN2UyZDQxNWZhY2M4MzgxYTIwODBmNWNkZWE2ODg5
MzMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcApAQCAtOTIsNyArOTIsNyBAQCB2b2lkIFNWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCh0aGlzKTsKKyAg
ICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCBmMmVmNzc1N2I1
OTAyNmU4NmUyZmQ1ZmU1M2I3YWY4YTBjZTliNjllLi40MmEzMzgxZjYyMGVhM2YxNmY3ZGU0NDU2
NDIxZGNhZjIwN2M4ZjRiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC04ODMsNiAr
ODgzLDIyIEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9Q
cmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2
b2lkIFNWR0VsZW1lbnQ6OnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCkK
K3sKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KHRydWUpOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCit2b2lk
IFNWR0VsZW1lbnQ6Om1hcmtTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpCit7
CisgICAgaWYgKCFlbGVtZW50RGF0YSgpIHx8ICFlbGVtZW50RGF0YSgpLT5hcmVTVkdSZXNvdXJj
ZXNJbkFuY2VzdG9yQ2hhaW5EaXJ0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0
byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
KyAgICBlbGVtZW50RGF0YSgpLT5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eShmYWxzZSk7Cit9CisKIHZvaWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCmluZGV4IDJkM2EzMzFlOGU4MjU0ZTY3ZjBjNjc2MmNkMjA1MzIzZmE5NjBjY2Iu
LjNiNDRiNzkwMzU2NTU5ZWUyNjFiZTMxNDcwODc2MTU0ZDY0MjE2MzMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgdm9pZCBp
bnZhbGlkYXRlU1ZHQXR0cmlidXRlcygpOwogICAgIGlubGluZSB2b2lkIGludmFsaWRhdGVTVkdQ
cmVzZW50YXRpb25hbEhpbnRTdHlsZSgpOworICAgIHZvaWQgc2V0U1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluQXJlRGlydHkoKTsKKyAgICB2b2lkIG1hcmtTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5JZk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIGluc3RhbmNlcyBvZiBhbiBlbGVtZW50IGFy
ZSBjbG9uZXMgbWFkZSBpbiBzaGFkb3cgdHJlZXMgdG8gaW1wbGVtZW50IDx1c2U+LgogICAgIGNv
bnN0IFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+JiBpbnN0YW5jZXMoKSBjb25zdDsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IDAxYzY0MDBlMjM0NGM5MzVlZjI4
NzY2NDY0NDMzNzdlODhhY2Q0NjIuLjBhMWI0M2E3YWQzNTJmOTJhOGU5MTdlMWFlYTgyYWQ1MTI5
MWI5NTkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtODks
NyArODksNyBAQCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJU
KGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
MkF0dHIpOwotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1
cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAKaW5kZXggYTJiOGM2MDc0NTc0NDhjODU1MjFjM2JjMTJkNmY5MzljYTA1YzZjMi4uOTJj
NzAwMzY0Zjg5ZWJjNGQyZjg0ZTQwMzU3MTEyYmIyYWNjNmQ2NSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZv
aWQgU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikK
LSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNT
RVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0eXBlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dmFsdWVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAK
aW5kZXggMTQ5NWNjZmI5M2U4NzNiNjIyMzI3NGZjNTJmYWI3MGEyNTRiZjgxZS4uNjQ2MDQyZmQ0
YTQ0NTJiMTJlNmFmNDZmZGNhMjJkNjZiNTM4YmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFNWR0ZF
Q29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbjJBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAg
ICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmsxQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpr
M0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6b3BlcmF0b3JBdHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9s
dmVNYXRyaXhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKaW5kZXggYmRiMWNlZmRjYzliZjBlZTExODg5NDc4NjFhODdiODI3MDk0
M2RlZi4uNGE4M2ExNWEwM2NjNTkwMDkyM2QzYTI3MTk3NWM5OGFhZTAxMTdkMSAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0x
NjAsMTQgKzE2MCwxNCBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRPcmRl
cihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fb3JkZXJYLT5zZXRCYXNlVmFsSW50ZXJuYWwo
eCk7CiAgICAgbV9vcmRlclktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRl
KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAog
dm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVsVW5pdExlbmd0aChmbG9h
dCB4LCBmbG9hdCB5KQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNldEJhc2VWYWxJbnRl
cm5hbCh4KTsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7
Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xNzUsNyArMTc1
LDcgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6Omtlcm5lbE1hdHJpeEF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Cisg
ICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRn
ZU1vZGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6Ymlhc0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhB
dHRyCiAgICAgICAgICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFlBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBbHBoYUF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAzMGU5MTI4ZjI3MjM0
YjA2MjNmMjY2NjQwMjU4YzZkYTdiNDUzMTNlLi4xM2QzY2M2ZmJlZjhjMTI4OGRjMTM2OGRiYzgx
ZmVlZWM5NDRlN2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNl
TGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKLSAgICAgICAgICAgIGlu
dmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09
IFNWR05hbWVzOjpkaWZmdXNlQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpz
dXJmYWNlU2NhbGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3Ro
QXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5j
cHAKaW5kZXggZjlkYjg1YWVhOTBlNDYxMTVhZjM4YWMwZTg5MzBmYmZiYzI2MmY0OS4uYTI5MzNi
YzNlMjI5YmY0NTFiYjQyYTc4YzQwMTcwNDlkOTdhYzY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEwMiw3ICsxMDIs
NyBAQCB2b2lkIFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAgICAgICAgICBpbnZh
bGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eENoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlD
aGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzY2FsZUF0dHIpOwog
ICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNDU5OTEwZTU0
ZDJmNjA1NmVhMjU5YjE4ODM5YjNlM2U5YjUzMTY4Mi4uZTFhY2RmMDlmMzkyZTJiY2ExN2IxYTQ0
ZTY3MmE3Nzk4MjA0YWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJv
cFNoYWRvd0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0
aW9uWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFz
ZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21T
dHJpbmcmIHZhbHVlKQpAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYjVmM2M3YjZjZWZmZDY1ZGZk
MGFlMTFhNGE5YjJiMmUwZDgzYjhhMy4uMDczYmQ3MjRiYjllMzVmMGI4MGQ2MmRmOWMwMjk1NTMy
ZTk2OWQyNyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVy
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxl
bWVudC5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6
OnNldFN0ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0aW9u
WC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZh
bEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVJbWFnZUVsZW1lbnQuY3BwCmluZGV4IDFhZDUxNjU5MDFhNTUyNTZlYjQxYTI1MzAyZGE1ZmUw
YTFhM2EwMzMuLmNjMzJkMjkwMmIxZDdmNDhlYWI5NTJmM2JjZjMxMzM2NjEyNzFiY2EgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBA
IHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9IGVs
c2UgaWYgKGlzPFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkpCiAgICAgICAgIGRvd25jYXN0
PFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50KCp0aGlz
KTsKIAotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0
ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAg
LTEzMCw3ICsxMzAsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsK
KyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHAKaW5kZXggMjQ4NjY2NGVlNjI0OTFiMGUxNzEzZjc2Mzc2MGE4NjhlOWE4ZGRjMy4uNzhkNjk4
ZjE3NjBhNWYxYjVhNTNhYmU4YmJiMDQxMDJkMjFjZjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVMaWdodEVsZW1lbnQuY3BwCkBAIC0xNTcsMTIgKzE1Nyw3IEBAIHZvaWQgU1ZHRkVMaWdo
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogCiAg
ICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAg
ICAgICByZXR1cm47Ci0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAo
IXBhcmVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
cGFyZW50LT5yZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNTVkdS
ZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAg
aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKaW5kZXggNWViZGNjOWRkMThi
NTE3ZjY2NWU2YTBhOWU1OGQ2ODI3ZWIyNTdiZi4uYzJlMDg2MTY1ZjRiZjZhY2I3ODNmYjQyYmU1
NWQ5ZmU4NzBjNzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VO
b2RlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxl
bWVudC5jcHAKQEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQ
cmltaXRpdmVQYXJlbnQodGhpcyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQ
YXJlbnQoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggNzkwOTIwNzRjNGYxNWZkZWFl
ZmZjNjk2OGE2ZDZmYjI1MzM3ZTdmOC4uYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3
Y2RjZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJh
ZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVy
bmFsKHgpOwogICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFs
aWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
fQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uZWI2
ZDdjYmY4ZDgwYzZhYjhjMmY4ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBi
NjhiYTM5MDU0NGFhNjViZmI5ZGVkOTY3NGU2ZWNlMmMyOTg3OGEyLi5lODdjNTEwZDVjNzc2MGE4
MmFlNWFlMDgyOTU2OTllNTU3Y2NhYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHIKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggZTQ2MTdkZTk1
MmQ5OWViY2M3Njg4MTM3ZjFlNzNmYmU1YmQwNjljZi4uYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2
MzVhNDFhNzRiMWJjNWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDU1NzhiNTE5
YTM2MjJiZDcwNmFkMjdiZmU0YzYwMDM5MTQ4NThjYTAuLmYzMzAxYWIwYjI0MGI1NzRiNjU4YjU0
YzZhNGE0NmFkMzBlMmMzYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAKQEAgLTk5LDggKzk5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw3IEBAIHZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5k
ZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAppbmRleCAwMGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi43MDNhZDk1
YjFhMTJkMzk0NDBjYTViYzY3MTQzMmI0MTg5ZGVmNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCkBAIC0xMDcsMTIgKzEwNyw5IEBAIGJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZH
RWxlbWVudCogZWxlbWVudCkKK3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChj
b25zdCBTVkdFbGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAg
cmV0dXJuOwotCi0gICAgUmVmUHRyIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKKyAg
ICBSZWZQdHIgcGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQp
CiAgICAgICAgIHJldHVybjsKIApAQCAtMTIwLDcgKzExNyw3IEBAIHZvaWQgaW52YWxpZGF0ZUZp
bHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVy
ZXIgfHwgIXJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCiAgICAgICAg
IHJldHVybjsKIAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNhc3Q8U1ZH
RWxlbWVudD4oKnBhcmVudCkuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDdkZjkyMDZmYWE5MWVhZmVmZWZkYTUy
OWU5MmY2OWM1MWYzZDhlZDkuLjBjZGE0ZWFkYmI3MGJlMzk2M2YxMTYzNzMwM2YzN2FiODZjMmI5
ZjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgc3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7
CiAgICAgdm9pZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsK
IAotICAgIHZvaWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKIAogcHJpdmF0ZToKQEAg
LTgxLDEzICs4MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jl
c3VsdCB7IFNWR0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKLXZvaWQgaW52
YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7Ci0KLWlubGluZSB2b2lk
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSgpCi17Ci0g
ICAgaWYgKGF1dG8qIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcHJpbWl0aXZlUmVuZGVyZXIpOwotfQordm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZl
UGFyZW50KGNvbnN0IFNWR0VsZW1lbnQmKTsKIAogaW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IDQyZjM2ZTdiNmRiOTc5ZjFhNjExMGNmODBjOGYx
M2M4ODJlYTU3YmQuLjRjYmFlMzkyMGRkNjQ2OGI5MjE5ZTM5ZWQwNGRiZjY5ZGRjY2I0ZDQgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAt
ODEsOCArODEsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0lu
Zm9ybWF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21l
dHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNw
cAppbmRleCA1NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFjZGRlNjRiNDBlMWJkLi5jMGJmMjFl
NDQyNGEzNjM4OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2VvbWV0cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1MCw3IEBAIHZvaWQgU1ZHR2VvbWV0
cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRy
KTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3M2I5M2NkZTk2OGIzN2ViMzQ3
Yzc2NTgyNDgzZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3NjdiYTMwZmMzMjdhNjUwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTc5LDggKzc5LDcg
QEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291
cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTk0LDggKzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJl
bmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiB9CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBkYzEwOGU1
YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4wMzE2M2U0ZjM5ZmRjYTFkNWQ4MWVj
Nzc4NzVmZmQwYjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcApAQCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAg
QVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAgICAgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Cisg
ICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5k
ZXggZTE4NTQ4NzQ5ODU3YWE4NGJlMmIzYjg3OTMwZmY5YWE1YmU5ODFiMy4uY2ZlMTE2MGIzNDE4
OTgyZDAzMjA3MDJkNTlhMWMxNzI4Njc0ODdkOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAg
ICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1hZ2VWaWV3cG9y
dCgpKQotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICAg
ICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZp
ZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAgICAgICAgICBpbnZhbGlkYXRlU1ZH
UHJlc2VudGF0aW9uYWxIaW50U3R5bGUoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBB
U1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKLSAg
ICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZiOWI4YmNmZDljYzk1
ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uYjY3MTFhNDhlOGNkY2YzZTMzNDYxNjFhOWM5NTMx
YTlkOTYzMjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC03NCwx
MCArNzQsOSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRp
b24oKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxMZWdhY3lSZW5k
ZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRl
cmVyID0gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpKQog
ICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAg
IFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlk
YXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDg0OGY2
YTIyZjhlMjUxMzY2N2JiMDRjYmJiOTlmODA5YTI2OGZjN2YuLjFjZDUwMWIwMmU2OWQ0NjI3OGU1
N2NlYjliOGVjZmZhMjlmMWNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdM
aW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04Myw4ICs4Myw3IEBAIHZvaWQgU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
TWFya2VyRWxlbWVudC5jcHAKaW5kZXggMGI0M2JiODQyZTVlMzYyYWFlZjg3OWZkNjA2M2FhNTc2
ZWFlMjFhYi4uOTk0OGYxOTg3NzM4MjVjOTBjNmUwMWZiODNmM2JiMDFlOGZmOTc3MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtOTgsMTQgKzk4LDEyIEBAIHZv
aWQgU1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWRO
YW1lJiBhdHRyTmFtZSkKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7CiAgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0
cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAgICAgCiAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtMTE5LDggKzExNyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsK
IH0KIAogU3RyaW5nIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudCgpIGNvbnN0CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCAxYmZiNDFkMzcwZmMzMzYzY2IwMGFiNjQ4NDg0
ZGY5ZDVhMDNlY2RkLi5lNjkzNmRlY2QxMzE0MDZlNDA5M2E5ODkyYWJkNzMzMjAxYTQ4Y2JlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTEwNSw4ICsxMDUsNyBAQCB2
b2lkIFNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7Cisg
ICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKQEAgLTEyMCw4ICsxMTksNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hh
bmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVy
bjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAg
IG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0Vs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Bh
dGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5k
ZXggNmEwY2Y5MzZkMzU3YTllYTg1NzllM2Y0NzVlZGI4NzAyM2E1ODBlYy4uMTZjY2IwMjJiZDEx
OGY3ODcyZjE0ZWYyMTY4NzFhYzlmNWQxZTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVs
ZW1lbnQuY3BwCkBAIC03MCwxMCArNzAsOSBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZU1Q
YXRoRGVwZW5kZW5jaWVzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNh
c3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8q
IHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpCiAg
ICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IGM0NzQzNDA2MjIyYjU1ZGEwNTFj
ZmFlYWYzZWFjMmM5NTFlYjY1MTUuLmU5ODIwYzA4NDU1ZDI4Nzg0YzM5NWZkNWQ1ODNmMDk1MTUz
NWZlMmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTE3
LDggKzExNyw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSBy
ZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCkBAIC0xMzIsOCArMTMxLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5n
ZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBv
YmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5F
bGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3Qg
UmVuZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmlu
ZGV4IDZiZGViZmE3YTQ5NTI0NjdkOTA1NjUwNjg5Yzc1ZWYxOGUxMTBlYzMuLjQ1MGJlMjgyYTEw
NTFiNDE2ZDdjMDQwMzg4MjhlNjZjZTZiNTk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlF
bGVtZW50LmNwcApAQCAtNTcsMTEgKzU3LDEwIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cik7Ci0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkp
KSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
KyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAg
IGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRl
cmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAg
ICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmlu
ZGV4IGU1ZTIxYWZlZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLjA3NGE3Njc3OWQ3
ZGNiMTA5MDdkNmU3MGRlZTMwYmJlYzMwOTJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZH
UmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggOTQ1ZGJjMGM5M2NkY2ZmNTc2YWRiNTE2MDNlN2M0
NmMzNjY2NGI3Yi4uNDhmMDJlMGJmMjZhOGZlNGQxNWRiNTAyNmYwMjYwMzQzNmMwM2MzYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQg
U1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFu
c2xhdGlvbikKIAogdm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkK
IHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBv
YmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRv
Y3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+
cmVwYWludCgpOwogfQpAQCAtMjExLDE2ICsyMTAsMjcgQEAgdm9pZCBTVkdTVkdFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxp
ZGF0ZVNWR1ByZXNlbnRhdGlvbmFsSGludFN0eWxlKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
KyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKKyAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgICAgICAgICBib29sIGVtYmVkZGVkVGhy
b3VnaEZyYW1lID0gZmFsc2U7CisjaWYgRU5BQkxFKExBWUVSX0JBU0VEX1NWR19FTkdJTkUpCisg
ICAgICAgICAgICAgICAgaWYgKGlzPFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKSAmJiBkb3duY2Fz
dDxSZW5kZXJTVkdSb290PihyZW5kZXJlciktPmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWlu
aW5nU1ZHRG9jdW1lbnQoKSkKKyAgICAgICAgICAgICAgICAgICAgZW1iZWRkZWRUaHJvdWdoRnJh
bWUgPSB0cnVlOworI2VuZGlmCisgICAgICAgICAgICAgICAgaWYgKGlzPExlZ2FjeVJlbmRlclNW
R1Jvb3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290PihyZW5kZXJl
ciktPmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSkKKyAgICAg
ICAgICAgICAgICAgICAgZW1iZWRkZWRUaHJvdWdoRnJhbWUgPSB0cnVlOworICAgICAgICAgICAg
ICAgIGlmIChlbWJlZGRlZFRocm91Z2hGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmVuZGVy
ZXItPnZpZXcoKS5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICAgICAgfQor
ICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAppbmRleCAyMDc5NmE5
MDIwMjgwZGI1MzZjNGJjZjU3NDA0NGM3YzM4NzUzZDEzLi5hZDgzMjM5OWU2ZGVkYzEwOTA4MzM2
MDAxMDFhMDgxZjI0YTA3OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3Rv
cEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAK
QEAgLTY2LDEwICs2Niw4IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cik7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAg
IH0KKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4IDI5
OTFkYjY5MzQyMDZlYTkyN2ViZDg3ZjM3MTExNzgxZTUyMTgyZGUuLmFhZGFjOTllNTA1OWFkZWQ1
NDI5ZWJhM2ZmNGU5NTFiYjY2YzRhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50
LmNwcApAQCAtMTg0LDggKzE4NCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFNWR1VSSVJl
ZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291
cmNlKCk7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBjMTQ1M2JmYzYwNDA4
Yzk1MDc0NjA3N2Q3NjFlZTE0ZDcyOTY1MWZiLi5mODRjMzRiNDQwMTJkYWFjZDgzOTViMTYyYzQ4
MTc2MDU0YzdmZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRl
bnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcApAQCAtMTgzLDEwICsxODMsOCBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAgICAg
IG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1ZSgp
OwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAg
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
ICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52
YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggYTc0OTFjNGQxYjg1Yjk3ZTM0N2Zk
NWE3MTQxMTMxNGM5Nzg0NjY5My4uMDc4YzBjNzgxMWI3NGIwMTZmMTM2Nzc2ODEzY2I2MzhhNmQz
MWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAgLTkz
LDE1ICs5MywxMyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgaWYgKGF0dHJOYW1lID09
IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxl
bmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
KyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGZlMjFlNjZhZjU2NjUyODkwYWIzMTgwODNkZDgzMTlj
ZWYxZTYyMDIuLmJhYTU1MWRjM2YzMTQwZGUyZTUxNWNmOTU0NDBjNGRkZGY1ZTdjNzkgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKQEAg
LTEwNiw5ICsxMDYsOCBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogICAgICAgICBpZiAoYXV0
byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRvKiB0
ZXh0QW5jZXN0b3IgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0b3Io
KnJlbmRlcmVyKSkKICAgICAgICAgICAgICAgICB0ZXh0QW5jZXN0b3ItPnNldE5lZWRzUG9zaXRp
b25pbmdWYWx1ZXNVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAgICAg
ICAgfQotCisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNw
cAppbmRleCBiOWVkZWY2MzFlNjZlNjBmZjU4Yzc1MjM0OTgxZTIxNDUzMGU0ZmZhLi5hMDFmNmJh
ZGExYzFkNmMyNWY4MjBmNzI2YzhlY2VlODE4MmVjYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwCkBAIC0xNjUsOCArMTY1LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAg
ICAgaWYgKGF1dG8gdGFyZ2V0Q2xvbmUgPSB0aGlzLT50YXJnZXRDbG9uZSgpKQogICAgICAgICAg
ICAgICAgIHRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKCp0YXJnZXRDbG9uZSk7
CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKaW5kZXggZWNmZTQzMWE0NTMzYzM2YzA4YjUw
MzIzYmMyMTQ0YmNlYmU0OTBlNS4uZWFhMjY1MTY0YzQ5NmFkZWEzODI1ZTFiMzQ4ZTNmYTQwZDll
MGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCkBAIC01OSwxMiArNTks
MTAgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFNWR0ZpdFRv
Vmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKG1fdGFy
Z2V0RWxlbWVudCkgewotICAgICAgICAgICAgbV90YXJnZXRFbGVtZW50LT5pbmhlcml0Vmlld0F0
dHJpYnV0ZXMoKnRoaXMpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbV90YXJn
ZXRFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
LSAgICAgICAgfQotCisgICAgICAgIGlmICghbV90YXJnZXRFbGVtZW50KQorICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygq
dGhpcyk7CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454482</attachid>
            <date>2022-03-11 06:53:34 -0800</date>
            <delta_ts>2022-03-16 07:57:17 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220311145333.patch</filename>
            <type>text/plain</type>
            <size>52930</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMTYyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMzMyN2NmNDI4MGYzODdj
OTA4MjI5NDVhMTc2ZGZkMDgwYjcxOTBiMy4uMTVjYzM4MmJjZTQxNGIzYjFlOTJiNzQxNDRiMjg3
NzkwMjgyYjQxOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOCBAQAorMjAyMi0wMy0xMSAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBl
bnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRpYXRl
bHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMgdG8g
YXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4KKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6OmFyZVNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkRpcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6IFJlbW92ZSBjb25mdXNpbmcgY29tbWVudAorICAg
ICAgICAoV2ViQ29yZTo6U1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0Rp
cnR5KToKKyAgICAgICAgKiBzdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUNv
bnZvbHZlTWF0cml4RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZl
TWF0cml4RWxlbWVudDo6c2V0T3JkZXIpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAg
ICAgICAgKiBzdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVMaWdo
dEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTWVyZ2VOb2Rl
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1
cyk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHRkVUaWxlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0ZpbHRlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVT
dGFuZGFyZEF0dHJpYnV0ZXMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0
aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y2hpbGRyZW5DaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQp
OgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6
aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhp
Y3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAg
KiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJF
bGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVt
ZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250
ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQ
YXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMjItMDMtMTEgIFJvYiBCdWlzICA8
cmJ1aXNAaWdhbGlhLmNvbT4KIAogICAgICAgICBSZW5hbWUgaW52YWxpZGF0aW9uIG1ldGhvZHMg
aW4gU1ZHRWxlbWVudApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRh
LmggYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4
ZGI1MjhiYjExNGI3OTY4MmU5ZGU2Y2RjZjhlLi41YjQ2MmU2MjdkYTRiNzYzZjAxZDA5NmUyNWQ1
NjRjMGIxMWVhYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTI1LDEyICsxMjUs
MTMgQEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fYXJyYXlTaXplQW5kRmxhZ3M7
CiAKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcnJheVNpemUgPSAyNzsKLSAgICBzdGF0
aWMgY29uc3QgdWludDMyX3Qgc19mbGFnQ291bnQgPSA1OworICAgIHN0YXRpYyBjb25zdCB1aW50
MzJfdCBzX2ZsYWdDb3VudCA9IDY7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0lz
VW5pcXVlID0gMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSGFzTmFtZUF0dHJp
YnV0ZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnUHJlc2VudGF0
aW9uYWxIaW50U3R5bGVJc0RpcnR5ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2ZsYWdTdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSAxIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0
IHVpbnQzMl90IHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5ID0gMSA8PCA0Owor
ICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSA9IDEgPDwgNTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnc01h
c2sgPSAoMSA8PCBzX2ZsYWdDb3VudCkgLSAxOwogCiAgICAgaW5saW5lIHZvaWQgdXBkYXRlRmxh
Zyh1aW50MzJfdCBmbGFnLCBib29sIHNldCkgY29uc3QKQEAgLTE2MCw2ICsxNjEsOSBAQCBwcm90
ZWN0ZWQ6CiAgICAgYm9vbCBhbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpIGNvbnN0IHsg
cmV0dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdBbmltYXRlZFNWR0F0dHJpYnV0ZXNB
cmVEaXJ0eTsgfQogICAgIHZvaWQgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoYm9v
bCBkaXJ0eSkgY29uc3QgeyB1cGRhdGVGbGFnKHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0Fy
ZURpcnR5LCBkaXJ0eSk7IH0KIAorICAgIGJvb2wgYXJlU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZUFuZEZsYWdzICYgc19mbGFnU1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHk7IH0KKyAgICB2b2lkIHNldFNWR1Jlc291
cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KGJvb2wgZGlydHkpIGNvbnN0IHsgdXBkYXRlRmxh
ZyhzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSwgZGlydHkpOyB9CisK
ICAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1faW5saW5lU3R5bGU7CiAgICAg
bXV0YWJsZSBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKICAgICBtdXRhYmxlIEF0b21T
dHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDcxNTFlMDYy
ZThkZjM4NTRiMTIzMTFkOTM2OGU3ZDE0YTY3NzhmOTQuLmJlZmM5YjMxZGEzODk0ZTBhMmY2ZTJm
ZWMwNmFiZmM1OGEwNTViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91
cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2lu
Y2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJl
bmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVk
ZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJT
dHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVy
LmgiCkBAIC0xOTIsNiArMTkzLDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVu
ZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZSkK
ICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVudFVwZGF0
ZSk7CiAKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAg
ZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCkubWFya1NWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbklmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1lbnQp
OwogCiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMgPSBlbGVtZW50LnJl
bmRlcmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYgc2hvdWxkQ3JlYXRl
UmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKTsKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY5NTI3
MmE0ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLjRiNmM1MzBiZTlkY2QwZWY0ZTUy
MGE4ZjEwZjJiYzQ2YTEzNWZkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdB
bmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1h
dGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDEwICsyNTAsMTMgQEAgdm9pZCBTVkdBbmltYXRl
TW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlmICghdGFyZ2V0RWxl
bWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVy
ID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVl
ZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgIH0KKyAg
ICBhdXRvIHVwZGF0ZVRhcmdldEVsZW1lbnQgPSBbXShTVkdFbGVtZW50JiBlbGVtZW50KSB7Cisg
ICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAgICAgICAg
ICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIGVsZW1lbnQu
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAgICB9OworCisgICAg
dXBkYXRlVGFyZ2V0RWxlbWVudCgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBBZmZpbmVUcmFuc2Zv
cm0qIHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1l
bnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQpA
QCAtMjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJl
c3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0cmFuc2Zvcm0gPT0g
KnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAg
ICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybTsKLSAgICAgICAg
aWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHVwZGF0ZVRhcmdldEVsZW1l
bnQoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhF
bGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5NGIxMTgzYzUzZjkyY2VkNjli
Li5hZmQ2MGViZTA4OGU0M2Q3N2E2ODY4YTVjNTQ2N2Y0ZDE4NTAwNTY0IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjcsOCArNjcsNyBAQCB2b2lkIFNW
R0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApA
QCAtODIsOCArODEsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hp
bGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRz
TGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsK
IH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRl
RWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3Np
dGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRleCAwY2Q0ZmQ0MWU1M2FkMTU4MjgzMjhlM2Ix
M2Y4MmVlNjA2NWUyZDlkLi44ZGRjOGRiZDdlMmQ0MTVmYWNjODM4MWEyMDgwZjVjZGVhNjg4OTMz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFu
c2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTVkdDb21wb25l
bnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW0KIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CisgICAg
ICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRoaXMpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKaW5kZXggNDI0ZmIwODMyOTEz
YzhkOWU2ODJlN2RjM2ZlYWRmMTkyY2MwYzQyMC4uNjE0ZDA0NzVlMjFhNzQxYWRkNTY3NTQ1OTVi
MDk4YTM0M2Y2NTg4NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcApAQCAtODgzLDYgKzg4
MywyMiBAQCB2b2lkIFNWR0VsZW1lbnQ6OmNvbGxlY3RQcmVzZW50YXRpb25hbEhpbnRzRm9yQXR0
cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbQogICAgICAgICBhZGRQcm9wZXJ0eVRvUHJl
c2VudGF0aW9uYWxIaW50U3R5bGUoc3R5bGUsIHByb3BlcnR5SUQsIHZhbHVlKTsKIH0KIAordm9p
ZCBTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpCit7
CisgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSh0cnVlKTsKKyAgICBpbnZhbGlkYXRlU3R5bGUoKTsKK30KKwordm9pZCBT
VkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluSWZOZWVkZWQoKQorewor
ICAgIGlmICghZWxlbWVudERhdGEoKSB8fCAhZWxlbWVudERhdGEoKS0+YXJlU1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluRGlydHkoKSkKKyAgICAgICAgcmV0dXJuOworCisgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Cisg
ICAgZWxlbWVudERhdGEoKS0+c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
ZmFsc2UpOworfQorCiB2b2lkIFNWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgQ1NTUHJvcGVydHlJRCBwcm9wSWQgPSBj
c3NQcm9wZXJ0eUlkRm9yU1ZHQXR0cmlidXRlTmFtZShhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Vs
ZW1lbnQuaAppbmRleCBmYzY2MTRiZDQ2OTMyOWE5YzQ2NGRmOWU5MzQ2Zjg3OWQ5NzdiZmQ1Li45
Y2E5MGQ2YjdlYTYyYzNlNGQ2OTljMWQ0M2E0ZmExODEzNjE1Njg0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKQEAgLTg0LDYgKzg0LDggQEAgcHVibGljOgogCiAgICAgaW5saW5lIHZvaWQgc2V0
QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKTsKICAgICBpbmxpbmUgdm9pZCBzZXRQcmVz
ZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKKyAgICB2b2lkIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CisgICAgdm9pZCBtYXJrU1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluSWZOZWVkZWQoKTsKIAogICAgIC8vIFRoZSBpbnN0YW5jZXMgb2YgYW4gZWxlbWVu
dCBhcmUgY2xvbmVzIG1hZGUgaW4gc2hhZG93IHRyZWVzIHRvIGltcGxlbWVudCA8dXNlPi4KICAg
ICBjb25zdCBXZWFrSGFzaFNldDxTVkdFbGVtZW50PiYgaW5zdGFuY2VzKCkgY29uc3Q7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oCmluZGV4IGI0YzE3N2Y4OWYxYmRmMWUxNzM2
MWZkMWQ2ZWQ5MjYzYjBlZmEyYTguLjMwZDgzNjIzZjQ3ZTRhYzdhNTUzZDBmNTdjYzQ1MTI1YWVi
NDM0MTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oCkBAIC0zOCw3ICsz
OCw2IEBAIGlubGluZSB2b2lkIFNWR0VsZW1lbnQ6OnNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0Fy
ZURpcnR5KCkKIGlubGluZSB2b2lkIFNWR0VsZW1lbnQ6OnNldFByZXNlbnRhdGlvbmFsSGludFN0
eWxlSXNEaXJ0eSgpCiB7CiAgICAgZW5zdXJlVW5pcXVlRWxlbWVudERhdGEoKS5zZXRQcmVzZW50
YXRpb25hbEhpbnRTdHlsZUlzRGlydHkodHJ1ZSk7Ci0gICAgLy8gVHJpZ2dlciBzdHlsZSByZWNh
bGN1bGF0aW9uIGZvciAiZWxlbWVudHMgYXMgcmVzb3VyY2UiIChlLmcuIHJlZmVyZW5jZWQgYnkg
ZmVJbWFnZSkuCiAgICAgaW52YWxpZGF0ZVN0eWxlKCk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVCbGVuZEVsZW1lbnQuY3BwCmluZGV4IDAxYzY0MDBlMjM0NGM5MzVlZjI4NzY2NDY0NDMz
NzdlODhhY2Q0NjIuLjBhMWI0M2E3YWQzNTJmOTJhOGU5MTdlMWFlYTgyYWQ1MTI5MWI5NTkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcApAQCAtODksNyArODksNyBA
QCB2b2lkIFNWR0ZFQmxlbmRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpOwot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAg
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKaW5k
ZXggYTJiOGM2MDc0NTc0NDhjODU1MjFjM2JjMTJkNmY5MzljYTA1YzZjMi4uOTJjNzAwMzY0Zjg5
ZWJjNGQyZjg0ZTQwMzU3MTEyYmIyYWNjNmQ2NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU1ZHRkVD
b2xvck1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKLSAgICAgICAg
ICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJO
YW1lID09IFNWR05hbWVzOjp0eXBlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dmFsdWVz
QXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKaW5kZXggMTQ5
NWNjZmI5M2U4NzNiNjIyMzI3NGZjNTJmYWI3MGEyNTRiZjgxZS4uNjQ2MDQyZmQ0YTQ0NTJiMTJl
NmFmNDZmZGNhMjJkNjZiNTM4YmI1NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29t
cG9zaXRlRWxlbWVudC5jcHAKQEAgLTExOCw3ICsxMTgsNyBAQCB2b2lkIFNWR0ZFQ29tcG9zaXRl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjppbjJBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmsxQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6azJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprM0F0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6Oms0QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3Bl
cmF0b3JBdHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5h
bWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dC5jcHAKaW5kZXggYmRiMWNlZmRjYzliZjBlZTExODg5NDc4NjFhODdiODI3MDk0M2RlZi4uNGE4
M2ExNWEwM2NjNTkwMDkyM2QzYTI3MTk3NWM5OGFhZTAxMTdkMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCkBAIC0xNjAsMTQgKzE2
MCwxNCBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRPcmRlcihmbG9hdCB4
LCBmbG9hdCB5KQogewogICAgIG1fb3JkZXJYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAg
bV9vcmRlclktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdG
RUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVsVW5pdExlbmd0aChmbG9hdCB4LCBmbG9h
dCB5KQogewogICAgIG1fa2VybmVsVW5pdExlbmd0aFgtPnNldEJhc2VWYWxJbnRlcm5hbCh4KTsK
ICAgICBtX2tlcm5lbFVuaXRMZW5ndGhZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52
YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiB9CiAKIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCkBAIC0xNzUsNyArMTc1LDcgQEAgdm9p
ZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmEKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcmRlckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Omtlcm5lbE1hdHJpeEF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBlbHNl
IHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZWRnZU1vZGVBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpkaXZpc29yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6Ymlhc0F0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFhBdHRyCiAgICAg
ICAgICAgICAgICAgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRhcmdldFlBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cHJlc2VydmVBbHBoYUF0dHIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCAzMGU5MTI4ZjI3MjM0YjA2MjNmMjY2
NjQwMjU4YzZkYTdiNDUzMTNlLi4xM2QzY2M2ZmJlZjhjMTI4OGRjMTM2OGRiYzgxZmVlZWM5NDRl
N2JjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50LmNwcApAQCAtMTI4LDcgKzEyOCw3IEBAIHZvaWQgU1ZHRkVEaWZmdXNlTGlnaHRpbmdF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0cikKLSAgICAgICAgICAgIGludmFsaWRhdGUo
KTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVz
OjpkaWZmdXNlQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2Nh
bGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprZXJuZWxVbml0TGVuZ3RoQXR0cik7CiAg
ICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKaW5kZXgg
ZjlkYjg1YWVhOTBlNDYxMTVhZjM4YWMwZTg5MzBmYmZiYzI2MmY0OS4uYTI5MzNiYzNlMjI5YmY0
NTFiYjQyYTc4YzQwMTcwNDlkOTdhYzY5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAKQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lk
IFNWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTgogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7
CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
eENoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlDaGFubmVsU2Vs
ZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzY2FsZUF0dHIpOwogICAgICAgICAg
ICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKaW5kZXggNDU5OTEwZTU0ZDJmNjA1NmVh
MjU5YjE4ODM5YjNlM2U5YjUzMTY4Mi4uZTFhY2RmMDlmMzkyZTJiY2ExN2IxYTQ0ZTY3MmE3Nzk4
MjA0YWJiZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0Vs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcApAQCAtNTQsNyArNTQsNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnNldFN0
ZERldmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0
QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbEludGVy
bmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpAQCAtODksNyArODksNyBAQCB2b2lkIFNWR0ZFRHJvcFNoYWRvd0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHAKaW5kZXggYjVmM2M3YjZjZWZmZDY1ZGZkMGFlMTFhNGE5
YjJiMmUwZDgzYjhhMy4uMDczYmQ3MjRiYjllMzVmMGI4MGQ2MmRmOWMwMjk1NTMyZTk2OWQyNyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAK
QEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnNldFN0ZERl
dmlhdGlvbihmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fc3RkRGV2aWF0aW9uWC0+c2V0QmFz
ZVZhbEludGVybmFsKHgpOwogICAgIG1fc3RkRGV2aWF0aW9uWS0+c2V0QmFzZVZhbEludGVybmFs
KHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6cGFyc2VB
dHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFs
dWUpCkBAIC04Nyw3ICs4Nyw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVs
ZW1lbnQuY3BwCmluZGV4IDFhZDUxNjU5MDFhNTUyNTZlYjQxYTI1MzAyZGE1ZmUwYTFhM2EwMzMu
LmNjMzJkMjkwMmIxZDdmNDhlYWI5NTJmM2JjZjMxMzM2NjEyNzFiY2EgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcApAQCAtMTExLDcgKzExMSw3IEBAIHZvaWQgU1ZH
RkVJbWFnZUVsZW1lbnQ6OmJ1aWxkUGVuZGluZ1Jlc291cmNlKCkKICAgICB9IGVsc2UgaWYgKGlz
PFNWR0VsZW1lbnQ+KCp0YXJnZXQuZWxlbWVudCkpCiAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1l
bnQ+KCp0YXJnZXQuZWxlbWVudCkuYWRkUmVmZXJlbmNpbmdFbGVtZW50KCp0aGlzKTsKIAotICAg
IGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogfQogCiB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBR
dWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTEzMCw3ICsx
MzAsNyBAQCB2b2lkIFNWR0ZFSW1hZ2VFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlk
YXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKaW5kZXgg
MjQ4NjY2NGVlNjI0OTFiMGUxNzEzZjc2Mzc2MGE4NjhlOWE4ZGRjMy4uNzhkNjk4ZjE3NjBhNWYx
YjVhNTNhYmU4YmJiMDQxMDJkMjFjZjE1MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdo
dEVsZW1lbnQuY3BwCkBAIC0xNTcsMTIgKzE1Nyw3IEBAIHZvaWQgU1ZHRkVMaWdodEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogCiAgICAgaWYgKGNo
YW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1
cm47Ci0gICAgUmVmUHRyIHBhcmVudCA9IHBhcmVudE5vZGUoKTsKLSAgICBpZiAoIXBhcmVudCkK
LSAgICAgICAgcmV0dXJuOwotICAgIFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcGFyZW50LT5y
ZW5kZXJlcigpOwotICAgIGlmIChyZW5kZXJlciAmJiByZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZp
bHRlclByaW1pdGl2ZSgpKQotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgaW52YWxpZGF0
ZUZpbHRlclByaW1pdGl2ZVBhcmVudCgqdGhpcyk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAKaW5kZXggNWViZGNjOWRkMThiNTE3ZjY2NWU2
YTBhOWU1OGQ2ODI3ZWIyNTdiZi4uYzJlMDg2MTY1ZjRiZjZhY2I3ODNmYjQyYmU1NWQ5ZmU4NzBj
NzEwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAK
QEAgLTYzLDcgKzYzLDcgQEAgdm9pZCBTVkdGRU1lcmdlTm9kZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQ
YXJlbnQodGhpcyk7CisgICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoKnRo
aXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggNzkwOTIwNzRjNGYxNWZkZWFlZmZjNjk2OGE2
ZDZmYjI1MzM3ZTdmOC4uYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3Y2RjZTRmZiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAt
NTIsNyArNTIsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1cyhmbG9h
dCB4LCBmbG9hdCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwog
ICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsK
KyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lk
IFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5h
bWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZv
aWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6cmFkaXVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5k
ZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uZWI2ZDdjYmY4ZDgw
YzZhYjhjMmY4ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiNjhiYTM5MDU0
NGFhNjViZmI5ZGVkOTY3NGU2ZWNlMmMyOTg3OGEyLi5lODdjNTEwZDVjNzc2MGE4MmFlNWFlMDgy
OTU2OTllNTU3Y2NhYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVj
dWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3Bl
Y3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHIKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFj
ZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIp
OwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggZTQ2MTdkZTk1MmQ5OWViY2M3
Njg4MTM3ZjFlNzNmYmU1YmQwNjljZi4uYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2MzVhNDFhNzRi
MWJjNWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNjEs
NyArNjEsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDgwZDM2NmQxZDQ5ZTA0MThj
YjNhMGNkNjM4MWY1OTU1MTY1ZTM1YzQuLjIwNGE2MWI0NzE4NmE3OGE2MGFjZWNkNmEzMmMxNTdj
ZjJiMGM3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTk5
LDggKzk5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQo
KTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw3IEBAIHZvaWQgU1ZHRmlsdGVy
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAg
aWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNW
R0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxl
LCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAw
MGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi43MDNhZDk1YjFhMTJkMzk0
NDBjYTViYzY3MTQzMmI0MTg5ZGVmNGUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgs
NyArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBy
ZXR1cm47CiAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNo
CiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIp
CiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkBAIC0x
MDcsMTIgKzEwNyw5IEBAIGJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVz
OjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0dXJuIGZhbHNl
OwogfQogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCog
ZWxlbWVudCkKK3ZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChjb25zdCBTVkdF
bGVtZW50JiBlbGVtZW50KQogewotICAgIGlmICghZWxlbWVudCkKLSAgICAgICAgcmV0dXJuOwot
Ci0gICAgUmVmUHRyIHBhcmVudCA9IGVsZW1lbnQtPnBhcmVudE5vZGUoKTsKKyAgICBSZWZQdHIg
cGFyZW50ID0gZWxlbWVudC5wYXJlbnROb2RlKCk7CiAgICAgaWYgKCFwYXJlbnQpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMTIwLDcgKzExNyw3IEBAIHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1p
dGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJl
bmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJ
bnZhbGlkYXRpb24oKnJlbmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4o
KnBhcmVudCkuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAog
fQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5k
YXJkQXR0cmlidXRlcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlcy5oCmluZGV4IDdkZjkyMDZmYWE5MWVhZmVmZWZkYTUyOWU5MmY2OWM1
MWYzZDhlZDkuLjBjZGE0ZWFkYmI3MGJlMzk2M2YxMTYzNzMwM2YzN2FiODZjMmI5ZjUgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzLmgKQEAgLTYyLDcgKzYyLDYgQEAgcHJvdGVjdGVkOgogICAgIHZvaWQgc3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJikgb3ZlcnJpZGU7CiAgICAgdm9p
ZCBjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmKSBvdmVycmlkZTsKIAotICAgIHZv
aWQgaW52YWxpZGF0ZSgpOwogICAgIHZvaWQgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGVOYW1lKTsKIAogcHJpdmF0ZToKQEAgLTgxLDEzICs4
MCw3IEBAIHByaXZhdGU6CiAgICAgUmVmPFNWR0FuaW1hdGVkU3RyaW5nPiBtX3Jlc3VsdCB7IFNW
R0FuaW1hdGVkU3RyaW5nOjpjcmVhdGUodGhpcykgfTsKIH07CiAKLXZvaWQgaW52YWxpZGF0ZUZp
bHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50Kik7Ci0KLWlubGluZSB2b2lkIFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSgpCi17Ci0gICAgaWYgKGF1
dG8qIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcHJpbWl0
aXZlUmVuZGVyZXIpOwotfQordm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KGNv
bnN0IFNWR0VsZW1lbnQmKTsKIAogaW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJpYnV0ZSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVj
dEVsZW1lbnQuY3BwCmluZGV4IGUzNDliYzcxOTZjMDRjYzFmMmViZWMyOTc1MTQxZGI2YzRmZmIw
NTAuLmVjYjNiYmY4OTYwN2NkN2QwMzI1NzY0NGU4YjYyYWNiMDY1NThjMWIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAtODEsOCArODEs
NyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAg
IEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9u
KCk7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47
CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAppbmRleCA1
NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFjZGRlNjRiNDBlMWJkLi5jMGJmMjFlNDQyNGEzNjM4
OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0
cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1MCw3IEBAIHZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRyKTsKICAgICAg
ICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3M2I5M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgz
ZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3NjdiYTMwZmMzMjdhNjUwMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTc5LDggKzc5LDcgQEAgdm9pZCBT
VkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1
dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk0LDgg
KzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIEdy
YWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMoKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBkYzEwOGU1YjIzYzQ2ZGE5
NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4wMzE2M2U0ZjM5ZmRjYTFkNWQ4MWVjNzc4NzVmZmQw
YjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApA
QCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgQVNTRVJUKGF0
dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNl
dFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAKICAgICAgICAgcmV0dXJu
OwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5kZXggMTYyM2U3
MzljYzAzYWZhNDgyZGVlYTY1NWFjNmU5ZTVmMDNhNTJiMC4uYmUwNDQ5MjdjYzgxZjkwZDQxMTQ4
NmU5NjcwNmNhNzJiZDA3YTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0lt
YWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5j
cHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAgIHVwZGF0
ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKICAgICAgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBpZiAoZG93bmNh
c3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQotICAg
ICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICAgICAgaWYgKCFk
b3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZpZXdwb3J0KCkp
CisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9
IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAgICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRT
dHlsZUlzRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKLSAgICAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZiOWI4YmNmZDljYzk1ZWFhNDkzYmZlMWFh
ZDkxOWNhNzljYjNjNS4uYjY3MTFhNDhlOGNkY2YzZTMzNDYxNjFhOWM5NTMxYTlkOTYzMjM4YyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC03NCwxMCArNzQsOSBAQCB2
b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIAotICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4o
dGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNh
c3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IDg0OGY2YTIyZjhlMjUxMzY2
N2JiMDRjYmJiOTlmODA5YTI2OGZjN2YuLjFjZDUwMWIwMmU2OWQ0NjI3OGU1N2NlYjliOGVjZmZh
MjlmMWNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVs
ZW1lbnQuY3BwCkBAIC04Myw4ICs4Myw3IEBAIHZvaWQgU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAg
ICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRh
dGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVu
dC5jcHAKaW5kZXggMGI0M2JiODQyZTVlMzYyYWFlZjg3OWZkNjA2M2FhNTc2ZWFlMjFhYi4uOTk0
OGYxOTg3NzM4MjVjOTBjNmUwMWZiODNmM2JiMDFlOGZmOTc3MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtOTgsMTQgKzk4LDEyIEBAIHZvaWQgU1ZHTWFya2Vy
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFt
ZSkKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1hdGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJO
YW1lKSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAgICAgCiAgICAg
aWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9i
amVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE5LDggKzEx
Nyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNv
dXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBv
YmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7Cisg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogU3RyaW5n
IFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudCgpIGNvbnN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tF
bGVtZW50LmNwcAppbmRleCA2M2JhNzJiMDUzODJmZjU4YmVhMDUyZGNiZmVmNTQ3MWJhOTQ5MTA0
Li4yNTc3ODNiMzRlY2IyNThjZTI3ZmU0MTRjYThiNmZlODY5MWQzOTcyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTEwNSw4ICsxMDUsNyBAQCB2b2lkIFNWR01hc2tF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKQEAgLTEyMCw4ICsxMTksNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9
PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0
ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9z
aXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAKaW5kZXggNmEwY2Y5MzZk
MzU3YTllYTg1NzllM2Y0NzVlZGI4NzAyM2E1ODBlYy4uMTZjY2IwMjJiZDExOGY3ODcyZjE0ZWYy
MTY4NzFhYzlmNWQxZTMwNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBA
IC03MCwxMCArNzAsOSBAQCB2b2lkIFNWR1BhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaW52YWxpZGF0ZU1QYXRoRGVwZW5kZW5j
aWVzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZH
UGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0g
ZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpCiAgICAgICAgICAgICBy
ZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
UGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IDZiNTRlN2VmY2Q4MzM0NGMzODczNWE3MWExZGMyMGM1
ZDQ4YmQ4NjUuLmI0NzU4OWZmOGZjYTdjYTE2ODM5NmJlOTYxODRlZDY0ZWQ5NzA1YTYgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTE3LDggKzExNyw3IEBA
IHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CkBAIC0xMzIsOCArMTMxLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVh
dGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBv
c2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmluZGV4IDZiZGViZmE3
YTQ5NTI0NjdkOTA1NjUwNjg5Yzc1ZWYxOGUxMTBlYzMuLjQ1MGJlMjgyYTEwNTFiNDE2ZDdjMDQw
Mzg4MjhlNjZjZTZiNTk3NjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApA
QCAtNTcsMTEgKzU3LDEwIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cik7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJl
ciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKQogICAg
ICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU1ZTIxYWZl
ZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLjA3NGE3Njc3OWQ3ZGNiMTA5MDdkNmU3
MGRlZTMwYmJlYzMwOTJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxH
cmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAoUmVu
ZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXRO
ZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxl
bWVudC5jcHAKaW5kZXggOWM2YTdlODNiZTc5MjE2MTdlMjU5Y2E3ZDNmYzhlOWE1NWUzNThkOC4u
MzMxOGJiNDcyMzU1YmFmYWU5NjAyOGQ2YjM3NTM4NWZlOTU4ZTZlMCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVu
dDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xhdGlvbikKIAog
dm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKIHsKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRvY3VtZW50KCkucmVu
ZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVwYWludCgpOwog
fQpAQCAtMjExLDE2ICsyMTAsMjggQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxI
aW50U3R5bGVJc0RpcnR5KCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omhl
aWdodEF0dHIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0cnkgdG8gZ2V0IHJpZCBvZiB0aGlz
IGN1c3RvbSBoYW5kbGluZyBvZiBlbWJlZGRlZCBTVkcgaW52YWxpZGF0aW9uLCBtYXliZSB0aHJv
dWdoIGFic3RyYWN0aW9uLgorICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgZW1iZWRkZWRUaHJvdWdoRnJhbWUg
PSBmYWxzZTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgICAg
ICAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlclNW
R1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1
bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7
CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZHUm9vdD4ocmVu
ZGVyZXIpICYmIGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJl
ZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQorICAgICAgICAgICAgICAg
ICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYgKGVt
YmVkZGVkVGhyb3VnaEZyYW1lKQorICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+dmlldygp
LnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAgIH0K
KyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291
cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmluZGV4IDIwNzk2YTkwMjAyODBkYjUz
NmM0YmNmNTc0MDQ0YzdjMzg3NTNkMTMuLmFkODMyMzk5ZTZkZWRjMTA5MDgzMzYwMDEwMWEwODFm
MjRhMDc5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcApAQCAtNjYsMTAg
KzY2LDggQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNW
R05hbWVzOjpvZmZzZXRBdHRyKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjk5MWRiNjkzNDIw
NmVhOTI3ZWJkODdmMzcxMTE3ODFlNTIxODJkZS4uYWFkYWM5OWU1MDU5YWRlZDU0MjllYmEzZmY0
ZTk1MWJiNjZjNGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0x
ODQsOCArMTg0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGMxNDUzYmZjNjA0MDhjOTUwNzQ2MDc3
ZDc2MWVlMTRkNzI5NjUxZmIuLmY4NGMzNGI0NDAxMmRhYWNkODM5NWIxNjJjNDgxNzYwNTRjN2Zl
Y2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCkBA
IC0xODMsMTAgKzE4Myw4IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICAgICAgbV9zcGVjaWZp
ZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCk7CiAKLSAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
KnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
VGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzQ5MWM0ZDFiODViOTdlMzQ3ZmQ1YTcxNDExMzE0
Yzk3ODQ2NjkzLi4wNzhjMGM3ODExYjc0YjAxNmYxMzY3NzY4MTNjYjYzOGE2ZDMxYTcxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtOTMsMTUgKzkzLDEz
IEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnN0YXJ0T2Zmc2V0QXR0cikKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9y
bWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAgICAg
aWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9u
aW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudC5jcHAKaW5kZXggZmUyMWU2NmFmNTY2NTI4OTBhYjMxODA4M2RkODMxOWNlZjFlNjIwMi4u
YmFhNTUxZGMzZjMxNDBkZTJlNTE1Y2Y5NTQ0MGM0ZGRkZjVlN2M3OSAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcApAQCAtMTA2LDkgKzEw
Niw4IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtCiAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNlc3Rv
ciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVyZXIp
KQogICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVl
c1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICB9Ci0KKyAg
ICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4IGI5
ZWRlZjYzMWU2NmU2MGZmNThjNzUyMzQ5ODFlMjE0NTMwZTRmZmEuLmEwMWY2YmFkYTFjMWQ2YzI1
ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5j
cHAKQEAgLTE2NSw4ICsxNjUsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgICAgICBpZiAoYXV0
byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAgICAgICAgICAgICAgICAgdHJh
bnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdldENsb25lKTsKICAgICAgICAg
fQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAzMjNiYzIxNDRi
Y2ViZTQ5MGU1Li5lYWEyNjUxNjRjNDk2YWRlYTM4MjVlMWIzNDhlM2ZhNDBkOWUwYTZjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU5LDEyICs1OSwxMCBAQCB2b2lk
IFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRFbGVtZW50
KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRlcygq
dGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQt
PnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9
Ci0KKyAgICAgICAgaWYgKCFtX3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47Cisg
ICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKKyAg
ICAgICAgbV90YXJnZXRFbGVtZW50LT5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>454834</attachid>
            <date>2022-03-16 07:57:23 -0700</date>
            <delta_ts>2022-03-22 02:56:16 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220316145721.patch</filename>
            <type>text/plain</type>
            <size>53410</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxMzQ1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMTI4OWU1YTg3Y2RkMzU5
ZjllMWZlMTdkNmI4NTQ1NjIxY2VhODBkNi4uY2M0NWViYjhjYWI3MDNlYzUzNWNkNmIwYzNmZjQ5
N2ViNDk4YjJkMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMi0wMy0xNiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBl
bnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRpYXRl
bHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMgdG8g
YXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4KKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6OmFyZVNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkRpcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkpOgorICAgICAgICAqIHN2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRPcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVs
VW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVU
aWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5Ojp+TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5B
c0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNE
aXJ0eTo6TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGll
bnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50
VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisKIDIwMjItMDMtMTYgIENocmlzIEZsZWl6YWNoICA8Y2ZsZWl6YWNoQGFw
cGxlLmNvbT4KIAogICAgICAgICBBWDogaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9z
cGVlY2gtYXBpL1NwZWVjaFN5bnRoZXNpcyAobGF5b3V0LXRlc3RzKSBhcmUgY29uc3RhbnQgdGV4
dCBmYWlsdXJlcwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4ZGI1
MjhiYjExNGI3OTY4MmU5ZGU2Y2RjZjhlLi41YjQ2MmU2MjdkYTRiNzYzZjAxZDA5NmUyNWQ1NjRj
MGIxMWVhYTdlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTI1LDEyICsxMjUsMTMg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fYXJyYXlTaXplQW5kRmxhZ3M7CiAK
ICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcnJheVNpemUgPSAyNzsKLSAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3Qgc19mbGFnQ291bnQgPSA1OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2ZsYWdDb3VudCA9IDY7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0lzVW5p
cXVlID0gMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSGFzTmFtZUF0dHJpYnV0
ZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnUHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBz
X2ZsYWdTdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSAxIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5ID0gMSA8PCA0OworICAg
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSA9IDEgPDwgNTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnc01hc2sg
PSAoMSA8PCBzX2ZsYWdDb3VudCkgLSAxOwogCiAgICAgaW5saW5lIHZvaWQgdXBkYXRlRmxhZyh1
aW50MzJfdCBmbGFnLCBib29sIHNldCkgY29uc3QKQEAgLTE2MCw2ICsxNjEsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBhbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVE
aXJ0eTsgfQogICAgIHZvaWQgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoYm9vbCBk
aXJ0eSkgY29uc3QgeyB1cGRhdGVGbGFnKHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURp
cnR5LCBkaXJ0eSk7IH0KIAorICAgIGJvb2wgYXJlU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
RGlydHkoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZUFuZEZsYWdzICYgc19mbGFnU1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHk7IH0KKyAgICB2b2lkIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KGJvb2wgZGlydHkpIGNvbnN0IHsgdXBkYXRlRmxhZyhz
X2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSwgZGlydHkpOyB9CisKICAg
ICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1faW5saW5lU3R5bGU7CiAgICAgbXV0
YWJsZSBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKICAgICBtdXRhYmxlIEF0b21TdHJp
bmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDcxNTFlMDYyZThk
ZjM4NTRiMTIzMTFkOTM2OGU3ZDE0YTY3NzhmOTQuLmJlZmM5YjMxZGEzODk0ZTBhMmY2ZTJmZWMw
NmFiZmM1OGEwNTViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHls
ZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgi
CkBAIC0xOTIsNiArMTkzLDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVy
VHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZSkKICAg
ICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVudFVwZGF0ZSk7
CiAKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgZG93
bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCkubWFya1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bklmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1lbnQpOwog
CiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMgPSBlbGVtZW50LnJlbmRl
cmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYgc2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY5NTI3MmE0
ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLjRiNmM1MzBiZTlkY2QwZWY0ZTUyMGE4
ZjEwZjJiYzQ2YTEzNWZkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDEwICsyNTAsMTMgQEAgdm9pZCBTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgIH0KKyAgICBh
dXRvIHVwZGF0ZVRhcmdldEVsZW1lbnQgPSBbXShTVkdFbGVtZW50JiBlbGVtZW50KSB7CisgICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIGVsZW1lbnQuc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAgICB9OworCisgICAgdXBk
YXRlVGFyZ2V0RWxlbWVudCgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0q
IHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQpAQCAt
MjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3Vs
dHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0cmFuc2Zvcm0gPT0gKnRh
cmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybTsKLSAgICAgICAgaWYg
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHVwZGF0ZVRhcmdldEVsZW1lbnQo
aW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5NGIxMTgzYzUzZjkyY2VkNjliLi5h
ZmQ2MGViZTA4OGU0M2Q3N2E2ODY4YTVjNTQ2N2Y0ZDE4NTAwNTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjcsOCArNjcsNyBAQCB2b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
ODIsOCArODEsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRleCAwY2Q0ZmQ0MWU1M2FkMTU4MjgzMjhlM2IxM2Y4
MmVlNjA2NWUyZDlkLi5jNjAxOTczZTQ3OWFiNDRmMTk5YmI2YTc1OTQzYTQ3OGJiMTdiN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW0KIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CisgICAgICAg
IE1hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSBtYXJrKCp0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDQyNGZiMDgzMjkx
M2M4ZDllNjgyZTdkYzNmZWFkZjE5MmNjMGM0MjAuLjYxNGQwNDc1ZTIxYTc0MWFkZDU2NzU0NTk1
YjA5OGEzNDNmNjU4ODUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTg4Myw2ICs4
ODMsMjIgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCB2YWx1ZSk7CiB9CiAKK3Zv
aWQgU1ZHRWxlbWVudDo6c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKQor
eworICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkodHJ1ZSk7CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQg
U1ZHRWxlbWVudDo6bWFya1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbklmTmVlZGVkKCkKK3sK
KyAgICBpZiAoIWVsZW1lbnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPmFyZVNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkRpcnR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgIGVsZW1lbnREYXRhKCktPnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KGZhbHNlKTsKK30KKwogdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcElkID0g
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKaW5kZXggZmM2NjE0YmQ0NjkzMjlhOWM0NjRkZjllOTM0NmY4NzlkOTc3YmZkNS4u
OWNhOTBkNmI3ZWE2MmMzZTRkNjk5YzFkNDNhNGZhMTgxMzYxNTY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSB2b2lkIHNl
dEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CiAgICAgaW5saW5lIHZvaWQgc2V0UHJl
c2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgdm9pZCBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOworICAgIHZvaWQgbWFya1NWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbklmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVsZW1l
bnQgYXJlIGNsb25lcyBtYWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4uCiAg
ICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaAppbmRleCBiNGMxNzdmODlmMWJkZjFlMTcz
NjFmZDFkNmVkOTI2M2IwZWZhMmE4Li4zMGQ4MzYyM2Y0N2U0YWM3YTU1M2QwZjU3Y2M0NTEyNWFl
YjQzNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaApAQCAtMzgsNyAr
MzgsNiBAQCBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNB
cmVEaXJ0eSgpCiBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRQcmVzZW50YXRpb25hbEhpbnRT
dHlsZUlzRGlydHkoKQogewogICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVj
YWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFzIHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5
IGZlSW1hZ2UpLgogICAgIGludmFsaWRhdGVTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCAwMWM2NDAwZTIzNDRjOTM1ZWYyODc2NjQ2NDQz
Mzc3ZTg4YWNkNDYyLi4wYTFiNDNhN2FkMzUyZjkyYThlOTE3ZTFhZWE4MmFkNTEyOTFiOTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKTsK
LSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmlu
ZGV4IGEyYjhjNjA3NDU3NDQ4Yzg1NTIxYzNiYzEyZDZmOTM5Y2EwNWM2YzIuLjkyYzcwMDM2NGY4
OWViYzRkMmY4NGU0MDM1NzExMmJiMmFjYzZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVl
c0F0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDE0
OTVjY2ZiOTNlODczYjYyMjMyNzRmYzUyZmFiNzBhMjU0YmY4MWUuLjY0NjA0MmZkNGE0NDUyYjEy
ZTZhZjQ2ZmRjYTIyZDY2YjUzOGJiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNl
dFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmsyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9w
ZXJhdG9yQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCmluZGV4IGJkYjFjZWZkY2M5YmYwZWUxMTg4OTQ3ODYxYTg3YjgyNzA5NDNkZWYuLjRh
ODNhMTVhMDNjYzU5MDA5MjNkM2EyNzE5NzVjOThhYWUwMTE3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtMTYwLDE0ICsx
NjAsMTQgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxvYXQg
eCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVyWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAg
IG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwgZmxv
YXQgeSkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7
CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGlu
dmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprZXJuZWxNYXRyaXhBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmJpYXNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cgogICAg
ICAgICAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMzBlOTEyOGYyNzIzNGIwNjIzZjI2
NjY0MDI1OGM2ZGE3YjQ1MzEzZS4uMTNkM2NjNmZiZWY4YzEyODhkYzEzNjhkYmM4MWZlZWVjOTQ0
ZTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRl
KCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6ZGlmZnVzZUNvbnN0YW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNj
YWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpOwog
ICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4
IGY5ZGI4NWFlYTkwZTQ2MTE1YWYzOGFjMGU4OTMwZmJmYmMyNjJmNDkuLmEyOTMzYmMzZTIyOWJm
NDUxYmI0MmE3OGM0MDE3MDQ5ZDk3YWM2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9p
ZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgp
OworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnhDaGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNl
bGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKTsKICAgICAgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQ1OTkxMGU1NGQyZjYwNTZl
YTI1OWIxODgzOWIzZTNlOWI1MzE2ODIuLmUxYWNkZjA5ZjM5MmUyYmNhMTdiMWE0NGU2NzJhNzc5
ODIwNGFiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRT
dGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IGI1ZjNjN2I2Y2VmZmQ2NWRmZDBhZTExYTRh
OWIyYjJlMGQ4M2I4YTMuLjA3M2JkNzI0YmI5ZTM1ZjBiODBkNjJkZjljMDI5NTUzMmU5NjlkMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRTdGRE
ZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgtPnNldEJh
c2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRlcm5h
bCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAppbmRleCAxYWQ1MTY1OTAxYTU1MjU2ZWI0MWEyNTMwMmRhNWZlMGExYTNhMDMz
Li5jYzMyZDI5MDJiMWQ3ZjQ4ZWFiOTUyZjNiY2YzMTMzNjYxMjcxYmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmIChp
czxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxTVkdFbGVt
ZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAKLSAg
ICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKIH0KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0xMzAsNyAr
MTMwLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCmluZGV4
IDI0ODY2NjRlZTYyNDkxYjBlMTcxM2Y3NjM3NjBhODY4ZTlhOGRkYzMuLjI4ZGRkYzYxZmYyMDcz
MThiNWQzMTUwYjkzMWNkNDk3N2VhOTM3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmNwcApAQCAtMTU3LDEyICsxNTcsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlmIChj
aGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0
dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+
cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIE1hcmtGaWx0
ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSBtYXJrKCp0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCA1ZWJkY2M5ZGQxOGI1MTdm
NjY1ZTZhMGE5ZTU4ZDY4MjdlYjI1N2JmLi5kZjdkY2Y1ZTY2ZWMwMzAxZTA2YmJmNTc2MTlmZTZm
ZDI1MDVjZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNT
RVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpOwogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1p
dGl2ZVBhcmVudCh0aGlzKTsKKyAgICAgICAgTWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5
IG1hcmsoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggNzkwOTIwNzRjNGYxNWZkZWFl
ZmZjNjk2OGE2ZDZmYjI1MzM3ZTdmOC4uYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3
Y2RjZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJh
ZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVy
bmFsKHgpOwogICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFs
aWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
fQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uZWI2
ZDdjYmY4ZDgwYzZhYjhjMmY4ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBi
NjhiYTM5MDU0NGFhNjViZmI5ZGVkOTY3NGU2ZWNlMmMyOTg3OGEyLi5lODdjNTEwZDVjNzc2MGE4
MmFlNWFlMDgyOTU2OTllNTU3Y2NhYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHIKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggZTQ2MTdkZTk1
MmQ5OWViY2M3Njg4MTM3ZjFlNzNmYmU1YmQwNjljZi4uYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2
MzVhNDFhNzRiMWJjNWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDgwZDM2NmQx
ZDQ5ZTA0MThjYjNhMGNkNjM4MWY1OTU1MTY1ZTM1YzQuLjIwNGE2MWI0NzE4NmE3OGE2MGFjZWNk
NmEzMmMxNTdjZjJiMGM3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAKQEAgLTk5LDggKzk5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw3IEBAIHZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5k
ZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAppbmRleCAwMGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi40YTFmMTcw
Y2QzYTE1YmRlNTFhZGIwODliN2Y4MmRkMTYzYTM2MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCkBAIC0xMDcsMTIgKzEwNyw5IEBAIGJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZH
RWxlbWVudCogZWxlbWVudCkKK01hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eTo6fk1hcmtG
aWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSgpCiB7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZWZQdHIgcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwor
ICAgIFJlZlB0ciBwYXJlbnQgPSBtX2VsZW1lbnQucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMCw3ICsxMTcsNyBAQCB2b2lkIGludmFsaWRh
dGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJl
bmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgZmFsc2UpOworICAgIGRvd25jYXN0
PFNWR0VsZW1lbnQ+KCpwYXJlbnQpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVm
ZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTUxZDAzN2EzMDBmZjE5NzcyOTcwMDc1NGQzMTdjZjY0
ODhhZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6
CkBAIC04MSwxMiArODAsMTcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1fcmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAotdm9p
ZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKK2NsYXNzIE1h
cmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSB7CitwdWJsaWM6CisgICAgTWFya0ZpbHRlckFu
Y2VzdG9yQ2hhaW5Bc0RpcnR5KFNWR0VsZW1lbnQmKTsKKyAgICB+TWFya0ZpbHRlckFuY2VzdG9y
Q2hhaW5Bc0RpcnR5KCk7Citwcml2YXRlOgorICAgIFNWR0VsZW1lbnQmIG1fZWxlbWVudDsKK307
CiAKLWlubGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52
YWxpZGF0ZSgpCitpbmxpbmUgTWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5OjpNYXJrRmls
dGVyQW5jZXN0b3JDaGFpbkFzRGlydHkoU1ZHRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IG1fZWxl
bWVudChlbGVtZW50KQogewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRl
cmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKIH0KIAogaW5saW5lIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGUzNDliYzcxOTZjMDRj
YzFmMmViZWMyOTc1MTQxZGI2YzRmZmIwNTAuLmVjYjNiYmY4OTYwN2NkN2QwMzI1NzY0NGU4YjYy
YWNiMDY1NThjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcApAQCAtODEsOCArODEsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVwZGF0ZVJl
bGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2Vv
bWV0cnlFbGVtZW50LmNwcAppbmRleCA1NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFjZGRlNjRi
NDBlMWJkLi5jMGJmMjFlNDQyNGEzNjM4OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1MCw3IEBA
IHZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBhdGhMZW5ndGhBdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3M2I5
M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgzZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3NjdiYTMw
ZmMzMjdhNjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAK
QEAgLTc5LDggKzc5LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk0LDggKzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiB9CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkU3RvcHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cAppbmRleCBkYzEwOGU1YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4wMzE2M2U0
ZjM5ZmRjYTFkNWQ4MWVjNzc4NzVmZmQwYjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRy
KTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKaW5kZXggMTYyM2U3MzljYzAzYWZhNDgyZGVlYTY1NWFjNmU5ZTVmMDNhNTJi
MC4uYmUwNDQ5MjdjYzgxZjkwZDQxMTQ4NmU5NjcwNmNhNzJiZDA3YTE0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAK
ICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBk
YXRlSW1hZ2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVy
KS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3
aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAgICAgICAg
ICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZi
OWI4YmNmZDljYzk1ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uYjY3MTFhNDhlOGNkY2YzZTMz
NDYxNjFhOWM5NTMxYTlkOTYzMjM4YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
Y3BwCkBAIC03NCwxMCArNzQsOSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2Fz
dDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGU+KHRoaXMtPnJl
bmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
CmluZGV4IDg0OGY2YTIyZjhlMjUxMzY2N2JiMDRjYmJiOTlmODA5YTI2OGZjN2YuLjFjZDUwMWIw
MmU2OWQ0NjI3OGU1N2NlYjliOGVjZmZhMjlmMWNiOWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04Myw4ICs4Myw3IEBAIHZvaWQg
U1ZHTGluZWFyR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKaW5kZXggMGI0M2JiODQyZTVlMzYyYWFlZjg3
OWZkNjA2M2FhNTc2ZWFlMjFhYi4uOTk0OGYxOTg3NzM4MjVjOTBjNmUwMWZiODNmM2JiMDFlOGZm
OTc3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcApAQCAtOTgsMTQg
Kzk4LDEyIEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0FuaW1h
dGVkTGVuZ3RoQXR0cmlidXRlKGF0dHJOYW1lKSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZl
TGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAgICAgCiAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTE5LDggKzExNyw3IEBAIHZvaWQgU1ZHTWFya2VyRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5z
b3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKIH0KIAogU3RyaW5nIFNWR01hcmtlckVsZW1lbnQ6Om9yaWVudCgpIGNvbnN0
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAppbmRleCA2M2JhNzJiMDUzODJmZjU4
YmVhMDUyZGNiZmVmNTQ3MWJhOTQ5MTA0Li4yNTc3ODNiMzRlY2IyNThjZTI3ZmU0MTRjYThiNmZl
ODY5MWQzOTcyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKQEAgLTEwNSw4
ICsxMDUsNyBAQCB2b2lkIFNWR01hc2tFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
TGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTEyMCw4ICsxMTksNyBAQCB2b2lkIFNW
R01hc2tFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkK
ICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVy
KCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJj
ZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiBSZW5kZXJQdHI8UmVuZGVyRWxlbWVu
dD4gU1ZHTWFza0VsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0
eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKaW5kZXggNmEwY2Y5MzZkMzU3YTllYTg1NzllM2Y0NzVlZGI4NzAyM2E1ODBlYy4u
MTZjY2IwMjJiZDExOGY3ODcyZjE0ZWYyMTY4NzFhYzlmNWQxZTMwNiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUGF0aEVsZW1lbnQuY3BwCkBAIC03MCwxMCArNzAsOSBAQCB2b2lkIFNWR1BhdGhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
aW52YWxpZGF0ZU1QYXRoRGVwZW5kZW5jaWVzKCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRl
cmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVuZGVyZXIoKSkpIHsKKyAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gZG93bmNhc3Q8UmVuZGVyU1ZHUGF0aD4odGhpcy0+cmVu
ZGVyZXIoKSkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCmluZGV4IDZiNTRlN2Vm
Y2Q4MzM0NGMzODczNWE3MWExZGMyMGM1ZDQ4YmQ4NjUuLmI0NzU4OWZmOGZjYTdjYTE2ODM5NmJl
OTYxODRlZDY0ZWQ5NzA1YTYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0
ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50
LmNwcApAQCAtMTE3LDggKzExNyw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogCiAgICAg
aWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0Zp
dFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNl
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91
dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzIsOCArMTMxLDcgQEAgdm9pZCBTVkdQYXR0
ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAg
ICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigp
KQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+
IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBz
dHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVs
ZW1lbnQuY3BwCmluZGV4IDZiZGViZmE3YTQ5NTI0NjdkOTA1NjUwNjg5Yzc1ZWYxOGUxMTBlYzMu
LjQ1MGJlMjgyYTEwNTFiNDE2ZDdjMDQwMzg4MjhlNjZjZTZiNTk3NjYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1BvbHlFbGVtZW50LmNwcApAQCAtNTcsMTEgKzU3LDEwIEBAIHZvaWQgU1ZHUG9seUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cG9pbnRzQXR0cik7Ci0g
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+KHRoaXMt
PnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1BhdGg+
KHRoaXMtPnJlbmRlcmVyKCkpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVV
cGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCmluZGV4IGU1ZTIxYWZlZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2Uu
LjA3NGE3Njc3OWQ3ZGNiMTA5MDdkNmU3MGRlZTMwYmJlYzMwOTJjM2QgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3
IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1h
dGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQot
ICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggOWM2YTdlODNiZTc5MjE2MTdl
MjU5Y2E3ZDNmYzhlOWE1NWUzNThkOC4uMzMxOGJiNDcyMzU1YmFmYWU5NjAyOGQ2YjM3NTM4NWZl
OTU4ZTZlMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEz
Nyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9h
dFBvaW50JiB0cmFuc2xhdGlvbikKIAogdm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50
VHJhbnNsYXRlKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigp
KQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1
bWVudCgpICYmIGRvY3VtZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJl
bmRlclZpZXcoKS0+cmVwYWludCgpOwogfQpAQCAtMjExLDE2ICsyMTAsMjggQEAgdm9pZCBTVkdT
VkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAg
ICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAKLSAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJl
bmRlcmVyKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwg
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1F
OiB0cnkgdG8gZ2V0IHJpZCBvZiB0aGlzIGN1c3RvbSBoYW5kbGluZyBvZiBlbWJlZGRlZCBTVkcg
aW52YWxpZGF0aW9uLCBtYXliZSB0aHJvdWdoIGFic3RyYWN0aW9uLgorICAgICAgICAgICAgaWYg
KGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGJv
b2wgZW1iZWRkZWRUaHJvdWdoRnJhbWUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURf
U1ZHX0VOR0lORSkKKyAgICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocmVuZGVy
ZXIpICYmIGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJlZGRlZFRocm91
Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBlbWJl
ZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoaXM8
TGVnYWN5UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PExlZ2FjeVJlbmRlclNW
R1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1
bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7
CisgICAgICAgICAgICAgICAgaWYgKGVtYmVkZGVkVGhyb3VnaEZyYW1lKQorICAgICAgICAgICAg
ICAgICAgICByZW5kZXJlci0+dmlldygpLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7Cisg
ICAgICAgICAgICB9CisgICAgICAgIH0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdG
aXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVk
c1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAg
ICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAg
ICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3Bw
CmluZGV4IDIwNzk2YTkwMjAyODBkYjUzNmM0YmNmNTc0MDQ0YzdjMzg3NTNkMTMuLmFkODMyMzk5
ZTZkZWRjMTA5MDgzMzYwMDEwMWEwODFmMjRhMDc5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0
b3BFbGVtZW50LmNwcApAQCAtNjYsMTAgKzY2LDggQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKTsKLSAgICAgICAgaWYg
KGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICAgICAgfQorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVu
dC5jcHAKaW5kZXggMjk5MWRiNjkzNDIwNmVhOTI3ZWJkODdmMzcxMTE3ODFlNTIxODJkZS4uYWFk
YWM5OWU1MDU5YWRlZDU0MjllYmEzZmY0ZTk1MWJiNjZjNGFmOCAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVFJlZkVsZW1lbnQuY3BwCkBAIC0xODQsOCArMTg0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICBpZiAoU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgYnVp
bGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4
IGMxNDUzYmZjNjA0MDhjOTUwNzQ2MDc3ZDc2MWVlMTRkNzI5NjUxZmIuLmY4NGMzNGI0NDAxMmRh
YWNkODM5NWIxNjJjNDgxNzYwNTRjN2ZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuY3BwCkBAIC0xODMsMTAgKzE4Myw4IEBAIHZvaWQgU1ZHVGV4dENv
bnRlbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRy
KQogICAgICAgICAgICAgbV9zcGVjaWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNl
VmFsKCktPnZhbHVlKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzQ5MWM0
ZDFiODViOTdlMzQ3ZmQ1YTcxNDExMzE0Yzk3ODQ2NjkzLi4wNzhjMGM3ODExYjc0YjAxNmYxMzY3
NzY4MTNjYjYzOGE2ZDMxYTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVt
ZW50LmNwcApAQCAtOTMsMTUgKzkzLDEzIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBp
ZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKICAgICAgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAg
ICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggZmUyMWU2NmFmNTY2NTI4OTBh
YjMxODA4M2RkODMxOWNlZjFlNjIwMi4uYmFhNTUxZGMzZjMxNDBkZTJlNTE1Y2Y5NTQ0MGM0ZGRk
ZjVlN2M3OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmlu
Z0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdF
bGVtZW50LmNwcApAQCAtMTA2LDkgKzEwNiw4IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtCiAg
ICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAg
ICAgaWYgKGF1dG8qIHRleHRBbmNlc3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNW
R1RleHRBbmNlc3RvcigqcmVuZGVyZXIpKQogICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+
c2V0TmVlZHNQb3NpdGlvbmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVu
ZGVyZXIpOwogICAgICAgICB9Ci0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCmluZGV4IGI5ZWRlZjYzMWU2NmU2MGZmNThjNzUyMzQ5ODFlMjE0NTMw
ZTRmZmEuLmEwMWY2YmFkYTFjMWQ2YzI1ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKQEAgLTE2NSw4ICsxNjUsNyBAQCB2b2lkIFNWR1Vz
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgICAgICAgICBpZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25l
KCkpCiAgICAgICAgICAgICAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUo
KnRhcmdldENsb25lKTsKICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMx
YTQ1MzNjMzZjMDhiNTAzMjNiYzIxNDRiY2ViZTQ5MGU1Li5lYWEyNjUxNjRjNDk2YWRlYTM4MjVl
MWIzNDhlM2ZhNDBkOWUwYTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmll
d0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAK
QEAgLTU5LDEyICs1OSwxMCBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAg
ICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBpZiAobV90YXJnZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQt
PmluaGVyaXRWaWV3QXR0cmlidXRlcygqdGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVu
ZGVyZXIgPSBtX3RhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVu
ZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlv
bigqcmVuZGVyZXIpOwotICAgICAgICB9Ci0KKyAgICAgICAgaWYgKCFtX3RhcmdldEVsZW1lbnQp
CisgICAgICAgICAgICByZXR1cm47CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZp
ZXdBdHRyaWJ1dGVzKCp0aGlzKTsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5zZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
Cg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455357</attachid>
            <date>2022-03-22 02:56:22 -0700</date>
            <delta_ts>2022-03-22 07:07:42 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220322095620.patch</filename>
            <type>text/plain</type>
            <size>53503</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVlYjE1OGVkODRkZGNk
YThjYjRhMWVmYTJlMzcwY2NiODk5MzBiYS4uNzg3OTcwYzE0NmUzMWQ5ZTAyMjg3ZTcwZDEzN2Y1
OGYzZDUyMzA2MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEzMCBAQAorMjAyMi0wMy0yMiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBl
bnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRpYXRl
bHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMgdG8g
YXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4KKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6OnN2Z1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkpOgorICAgICAgICAqIHN2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRPcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVs
VW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVU
aWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5Ojp+TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5B
c0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJl
bnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0
dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6Ok1hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNE
aXJ0eTo6TWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5KToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0
ZWQuCisgICAgICAgICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0dlb21ldHJ5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3Zn
L1NWR0dyYWRpZW50RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGll
bnRFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0Vs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3Jh
ZGllbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
UGF0aEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgIChXZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
UG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGll
bnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50
VHJhbnNsYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICog
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisKIDIwMjItMDMtMjIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdh
bGlhLmNvbT4KIAogICAgICAgICBVbnJldmlld2VkLCBmaXggbm9uLXVuaWZpZWQgYnVpbGQgYWZ0
ZXIgcjI5MTU5NwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmgg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4ZGI1
MjhiYjExNGI3OTY4MmU5ZGU2Y2RjZjhlLi4yNmY1MDBmYTIyOWE3YTVhOTVhOWM1NWJjM2FiZmEx
ZjY2YmE5NmI0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTI1LDEyICsxMjUsMTMg
QEAgcHJpdmF0ZToKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fYXJyYXlTaXplQW5kRmxhZ3M7CiAK
ICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcnJheVNpemUgPSAyNzsKLSAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3Qgc19mbGFnQ291bnQgPSA1OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2ZsYWdDb3VudCA9IDY7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0lzVW5p
cXVlID0gMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSGFzTmFtZUF0dHJpYnV0
ZSA9IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnUHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBz
X2ZsYWdTdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSAxIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0IHVp
bnQzMl90IHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5ID0gMSA8PCA0OworICAg
IHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSA9IDEgPDwgNTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnc01hc2sg
PSAoMSA8PCBzX2ZsYWdDb3VudCkgLSAxOwogCiAgICAgaW5saW5lIHZvaWQgdXBkYXRlRmxhZyh1
aW50MzJfdCBmbGFnLCBib29sIHNldCkgY29uc3QKQEAgLTE2MCw2ICsxNjEsOSBAQCBwcm90ZWN0
ZWQ6CiAgICAgYm9vbCBhbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpIGNvbnN0IHsgcmV0
dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVE
aXJ0eTsgfQogICAgIHZvaWQgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoYm9vbCBk
aXJ0eSkgY29uc3QgeyB1cGRhdGVGbGFnKHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURp
cnR5LCBkaXJ0eSk7IH0KIAorICAgIGJvb2wgc3ZnUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZUFuZEZsYWdzICYgc19mbGFnU1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHk7IH0KKyAgICB2b2lkIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KGJvb2wgZGlydHkpIGNvbnN0IHsgdXBkYXRlRmxhZyhz
X2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSwgZGlydHkpOyB9CisKICAg
ICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1faW5saW5lU3R5bGU7CiAgICAgbXV0
YWJsZSBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKICAgICBtdXRhYmxlIEF0b21TdHJp
bmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDcxNTFlMDYyZThk
ZjM4NTRiMTIzMTFkOTM2OGU3ZDE0YTY3NzhmOTQuLmJlZmM5YjMxZGEzODk0ZTBhMmY2ZTJmZWMw
NmFiZmM1OGEwNTViNzggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNDUsNiArNDUsNyBAQAogI2luY2x1
ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgogI2luY2x1ZGUgIlJlbmRl
clZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisjaW5jbHVkZSAi
U1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJTdHls
ZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250cm9sbGVyLmgi
CkBAIC0xOTIsNiArMTkzLDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBkYXRlUmVuZGVy
VHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICBpZiAoZWxlbWVudFVwZGF0ZSkKICAg
ICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVudFVwZGF0ZSk7
CiAKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAgICAgICAgZG93
bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCkubWFya1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bklmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRlcmVyKGVsZW1lbnQpOwog
CiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMgPSBlbGVtZW50LnJlbmRl
cmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYgc2hvdWxkQ3JlYXRlUmVu
ZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50KCkpKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCmluZGV4IGY5NTI3MmE0
ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLjRiNmM1MzBiZTlkY2QwZWY0ZTUyMGE4
ZjEwZjJiYzQ2YTEzNWZkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmlt
YXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVN
b3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDEwICsyNTAsMTMgQEAgdm9pZCBTVkdBbmltYXRlTW90
aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlmICghdGFyZ2V0RWxlbWVu
dCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0g
dGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNU
cmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgIH0KKyAgICBh
dXRvIHVwZGF0ZVRhcmdldEVsZW1lbnQgPSBbXShTVkdFbGVtZW50JiBlbGVtZW50KSB7CisgICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigpKQorICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAgICAgIGVsZW1lbnQuc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAgICB9OworCisgICAgdXBk
YXRlVGFyZ2V0RWxlbWVudCgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBBZmZpbmVUcmFuc2Zvcm0q
IHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1lbnQtPnN1cHBsZW1lbnRh
bFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFsVHJhbnNmb3JtKQpAQCAt
MjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVtZW50OjphcHBseVJlc3Vs
dHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0cmFuc2Zvcm0gPT0gKnRh
cmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAg
ICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybTsKLSAgICAgICAgaWYg
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRlcmVyKCkpIHsKLSAgICAg
ICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHVwZGF0ZVRhcmdldEVsZW1lbnQo
aW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVt
ZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5NGIxMTgzYzUzZjkyY2VkNjliLi5h
ZmQ2MGViZTA4OGU0M2Q3N2E2ODY4YTVjNTQ2N2Y0ZDE4NTAwNTY0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjcsOCArNjcsNyBAQCB2b2lkIFNWR0Ns
aXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBh
dHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
ODIsOCArODEsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJG
dW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5z
ZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRleCAwY2Q0ZmQ0MWU1M2FkMTU4MjgzMjhlM2IxM2Y4
MmVlNjA2NWUyZDlkLi5jNjAxOTczZTQ3OWFiNDRmMTk5YmI2YTc1OTQzYTQ3OGJiMTdiN2RiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlv
bkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2Zl
ckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9pZCBTVkdDb21wb25lbnRU
cmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW0KIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CisgICAgICAg
IE1hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSBtYXJrKCp0aGlzKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDQyNGZiMDgzMjkx
M2M4ZDllNjgyZTdkYzNmZWFkZjE5MmNjMGM0MjAuLmI3NmJmMjhiMGU4MzRmNTE3ZWUzZTJiOWM0
OWMxMjVkYmJjYjY5ZWEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTg4Myw2ICs4
ODMsMjIgQEAgdm9pZCBTVkdFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0
dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgYWRkUHJvcGVydHlUb1By
ZXNlbnRhdGlvbmFsSGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCB2YWx1ZSk7CiB9CiAKK3Zv
aWQgU1ZHRWxlbWVudDo6c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKQor
eworICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkodHJ1ZSk7CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQg
U1ZHRWxlbWVudDo6bWFya1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbklmTmVlZGVkKCkKK3sK
KyAgICBpZiAoIWVsZW1lbnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPnN2Z1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgIGVsZW1lbnREYXRhKCktPnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KGZhbHNlKTsKK30KKwogdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcElkID0g
Y3NzUHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmgKaW5kZXggZmM2NjE0YmQ0NjkzMjlhOWM0NjRkZjllOTM0NmY4NzlkOTc3YmZkNS4u
OWNhOTBkNmI3ZWE2MmMzZTRkNjk5YzFkNDNhNGZhMTgxMzYxNTY4NCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSB2b2lkIHNl
dEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CiAgICAgaW5saW5lIHZvaWQgc2V0UHJl
c2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgdm9pZCBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOworICAgIHZvaWQgbWFya1NWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbklmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVsZW1l
bnQgYXJlIGNsb25lcyBtYWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4uCiAg
ICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0OwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmggYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaAppbmRleCBiNGMxNzdmODlmMWJkZjFlMTcz
NjFmZDFkNmVkOTI2M2IwZWZhMmE4Li4zMGQ4MzYyM2Y0N2U0YWM3YTU1M2QwZjU3Y2M0NTEyNWFl
YjQzNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaApAQCAtMzgsNyAr
MzgsNiBAQCBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNB
cmVEaXJ0eSgpCiBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRQcmVzZW50YXRpb25hbEhpbnRT
dHlsZUlzRGlydHkoKQogewogICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUgcmVj
YWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFzIHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2VkIGJ5
IGZlSW1hZ2UpLgogICAgIGludmFsaWRhdGVTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCAwMWM2NDAwZTIzNDRjOTM1ZWYyODc2NjQ2NDQz
Mzc3ZTg4YWNkNDYyLi4wYTFiNDNhN2FkMzUyZjkyYThlOTE3ZTFhZWE4MmFkNTEyOTFiOTU5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5LDcg
QEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5n
ZWQoYXR0ck5hbWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKTsK
LSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwogICAg
IH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCmlu
ZGV4IGEyYjhjNjA3NDU3NDQ4Yzg1NTIxYzNiYzEyZDZmOTM5Y2EwNWM2YzIuLjkyYzcwMDM2NGY4
OWViYzRkMmY4NGU0MDM1NzExMmJiMmFjYzZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZF
Q29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRl
KGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0
aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZhbHVl
c0F0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4IDE0
OTVjY2ZiOTNlODczYjYyMjMyNzRmYzUyZmFiNzBhMjU0YmY4MWUuLjY0NjA0MmZkNGE0NDUyYjEy
ZTZhZjQ2ZmRjYTIyZDY2YjUzOGJiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNv
bXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTVkdGRUNvbXBvc2l0
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAg
ICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6aW4yQXR0cikKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNl
dFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2Ugewog
ICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIgfHwgYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6OmsyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9w
ZXJhdG9yQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJO
YW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1l
bnQuY3BwCmluZGV4IGJkYjFjZWZkY2M5YmYwZWUxMTg4OTQ3ODYxYTg3YjgyNzA5NDNkZWYuLjRh
ODNhMTVhMDNjYzU5MDA5MjNkM2EyNzE5NzVjOThhYWUwMTE3ZDEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtMTYwLDE0ICsx
NjAsMTQgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxvYXQg
eCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVyWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAg
IG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZH
RkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwgZmxv
YXQgeSkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7
CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGlu
dmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTc1LDcgKzE3NSw3IEBAIHZv
aWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8
fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprZXJuZWxNYXRyaXhBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2RlQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmJpYXNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cgogICAg
ICAgICAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMzBlOTEyOGYyNzIzNGIwNjIzZjI2
NjY0MDI1OGM2ZGE3YjQ1MzEzZS4uMTNkM2NjNmZiZWY4YzEyODhkYzEzNjhkYmM4MWZlZWVjOTQ0
ZTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0aW5n
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTgog
ICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAg
aWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRl
KCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6ZGlmZnVzZUNvbnN0YW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNj
YWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpOwog
ICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmluZGV4
IGY5ZGI4NWFlYTkwZTQ2MTE1YWYzOGFjMGU4OTMwZmJmYmMyNjJmNDkuLmEyOTMzYmMzZTIyOWJm
NDUxYmI0MmE3OGM0MDE3MDQ5ZDk3YWM2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAgdm9p
ZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgp
OworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsK
ICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnhDaGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5lbFNl
bGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKTsKICAgICAgICAg
ICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQ1OTkxMGU1NGQyZjYwNTZl
YTI1OWIxODgzOWIzZTNlOWI1MzE2ODIuLmUxYWNkZjA5ZjM5MmUyYmNhMTdiMWE0NGU2NzJhNzc5
ODIwNGFiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzZXRT
dGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpwYXJz
ZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2
YWx1ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IGI1ZjNjN2I2Y2VmZmQ2NWRmZDBhZTExYTRh
OWIyYjJlMGQ4M2I4YTMuLjA3M2JkNzI0YmI5ZTM1ZjBiODBkNjJkZjljMDI5NTUzMmU5NjlkMjcg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3Bw
CkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRTdGRE
ZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgtPnNldEJh
c2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRlcm5h
bCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogewogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgp
OwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAppbmRleCAxYWQ1MTY1OTAxYTU1MjU2ZWI0MWEyNTMwMmRhNWZlMGExYTNhMDMz
Li5jYzMyZDI5MDJiMWQ3ZjQ4ZWFiOTUyZjNiY2YzMTMzNjYxMjcxYmNhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lkIFNW
R0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlmIChp
czxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxTVkdFbGVt
ZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAKLSAg
ICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKIH0KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0xMzAsNyAr
MTMwLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNW
R05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCmluZGV4
IDI0ODY2NjRlZTYyNDkxYjBlMTcxM2Y3NjM3NjBhODY4ZTlhOGRkYzMuLjI4ZGRkYzYxZmYyMDcz
MThiNWQzMTUwYjkzMWNkNDk3N2VhOTM3NzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGln
aHRFbGVtZW50LmNwcApAQCAtMTU3LDEyICsxNTcsNyBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVtZW50
OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlmIChj
aGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0
dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJlbnQp
Ci0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVudC0+
cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3VyY2VG
aWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgIE1hcmtGaWx0
ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSBtYXJrKCp0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCA1ZWJkY2M5ZGQxOGI1MTdm
NjY1ZTZhMGE5ZTU4ZDY4MjdlYjI1N2JmLi5kZjdkY2Y1ZTY2ZWMwMzAxZTA2YmJmNTc2MTlmZTZm
ZDI1MDVjZjVhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50
LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNT
RVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpOwogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1p
dGl2ZVBhcmVudCh0aGlzKTsKKyAgICAgICAgTWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5
IG1hcmsoKnRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXggNzkwOTIwNzRjNGYxNWZkZWFl
ZmZjNjk2OGE2ZDZmYjI1MzM3ZTdmOC4uYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3
Y2RjZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50
LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJh
ZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVy
bmFsKHgpOwogICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFs
aWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
fQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1
YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTAxLDcgKzEw
MSw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVu
dC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uZWI2
ZDdjYmY4ZDgwYzZhYjhjMmY4ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9m
ZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0
ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMp
OwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBi
NjhiYTM5MDU0NGFhNjViZmI5ZGVkOTY3NGU2ZWNlMmMyOTg3OGEyLi5lODdjNTEwZDVjNzc2MGE4
MmFlNWFlMDgyOTU2OTllNTU3Y2NhYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9p
ZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHIKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1l
czo6c3VyZmFjZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExl
bmd0aEF0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggZTQ2MTdkZTk1
MmQ5OWViY2M3Njg4MTM3ZjFlNzNmYmU1YmQwNjljZi4uYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2
MzVhNDFhNzRiMWJjNWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGls
ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNw
cApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVn
aXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDgwZDM2NmQx
ZDQ5ZTA0MThjYjNhMGNkNjM4MWY1OTU1MTY1ZTM1YzQuLjIwNGE2MWI0NzE4NmE3OGE2MGFjZWNk
NmEzMmMxNTdjZjJiMGM3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHAKQEAgLTk5LDggKzk5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZl
cmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVl
ZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw3IEBAIHZvaWQg
U1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFu
Z2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2Vy
KQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5k
ZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVs
ZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHls
ZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cAppbmRleCAwMGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi40YTFmMTcw
Y2QzYTE1YmRlNTFhZGIwODliN2Y4MmRkMTYzYTM2MzU5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNw
cApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmli
dXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRD
aGFuZ2UmIGNoCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNl
OjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRl
ckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCkBAIC0xMDcsMTIgKzEwNyw5IEBAIGJvb2wgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpyZW5kZXJlcklzTmVlZGVkKGNvbnN0IFJlbmRlclN0eWxlJiBzCiAgICAgcmV0
dXJuIGZhbHNlOwogfQogCi12b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZH
RWxlbWVudCogZWxlbWVudCkKK01hcmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eTo6fk1hcmtG
aWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSgpCiB7Ci0gICAgaWYgKCFlbGVtZW50KQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBSZWZQdHIgcGFyZW50ID0gZWxlbWVudC0+cGFyZW50Tm9kZSgpOwor
ICAgIFJlZlB0ciBwYXJlbnQgPSBtX2VsZW1lbnQucGFyZW50Tm9kZSgpOwogICAgIGlmICghcGFy
ZW50KQogICAgICAgICByZXR1cm47CiAKQEAgLTEyMCw3ICsxMTcsNyBAQCB2b2lkIGludmFsaWRh
dGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJl
bmRlcmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAg
ICAgICByZXR1cm47CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgZmFsc2UpOworICAgIGRvd25jYXN0
PFNWR0VsZW1lbnQ+KCpwYXJlbnQpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0
ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVm
ZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4yZTUxZDAzN2EzMDBmZjE5NzcyOTcwMDc1NGQzMTdjZjY0
ODhhZTU2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC02Miw3ICs2Miw2IEBAIHByb3RlY3RlZDoK
ICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92ZXJy
aWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3ZlcnJp
ZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIHByaW1pdGl2ZUF0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKIHByaXZhdGU6
CkBAIC04MSwxMiArODAsMTcgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+
IG1fcmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAotdm9p
ZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKK2NsYXNzIE1h
cmtGaWx0ZXJBbmNlc3RvckNoYWluQXNEaXJ0eSB7CitwdWJsaWM6CisgICAgTWFya0ZpbHRlckFu
Y2VzdG9yQ2hhaW5Bc0RpcnR5KFNWR0VsZW1lbnQmKTsKKyAgICB+TWFya0ZpbHRlckFuY2VzdG9y
Q2hhaW5Bc0RpcnR5KCk7Citwcml2YXRlOgorICAgIFNWR0VsZW1lbnQmIG1fZWxlbWVudDsKK307
CiAKLWlubGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52
YWxpZGF0ZSgpCitpbmxpbmUgTWFya0ZpbHRlckFuY2VzdG9yQ2hhaW5Bc0RpcnR5OjpNYXJrRmls
dGVyQW5jZXN0b3JDaGFpbkFzRGlydHkoU1ZHRWxlbWVudCYgZWxlbWVudCkKKyAgICA6IG1fZWxl
bWVudChlbGVtZW50KQogewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRl
cmVyKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50
UmVzb3VyY2VJbnZhbGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKIH0KIAogaW5saW5lIHZv
aWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGUzNDliYzcxOTZjMDRj
YzFmMmViZWMyOTc1MTQxZGI2YzRmZmIwNTAuLmVjYjNiYmY4OTYwN2NkN2QwMzI1NzY0NGU4YjYy
YWNiMDY1NThjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2Jq
ZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RF
bGVtZW50LmNwcApAQCAtODEsOCArODEsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAg
ICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVwZGF0ZVJl
bGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJl
ciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2Vv
bWV0cnlFbGVtZW50LmNwcAppbmRleCA1NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFjZGRlNjRi
NDBlMWJkLi5jMGJmMjFlNDQyNGEzNjM4OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1MCw3IEBA
IHZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0
cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OnBhdGhMZW5ndGhBdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3M2I5
M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgzZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3NjdiYTMw
ZmMzMjdhNjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAK
QEAgLTc5LDggKzc5LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTk0LDggKzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiB9CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1l
bnQ6OmJ1aWxkU3RvcHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBo
aWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNw
cAppbmRleCBkYzEwOGU1YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4wMzE2M2U0
ZjM5ZmRjYTFkNWQ4MWVjNzc4NzVmZmQwYjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNWR0dyYXBo
aWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRy
KTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlm
IChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKaW5kZXggMTYyM2U3MzljYzAzYWZhNDgyZGVlYTY1NWFjNmU5ZTVmMDNhNTJi
MC4uYmUwNDQ5MjdjYzgxZjkwZDQxMTQ4NmU5NjcwNmNhNzJiZDA3YTE0OCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIFNWR0lt
YWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAK
ICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBk
YXRlSW1hZ2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVy
KS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAg
ICAgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwog
ICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3
aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAgICAgICAg
ICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAg
ICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0
aW9BdHRyKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQ
YXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZi
OWI4YmNmZDljYzk1ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uMjMxOWQ1ZWNjZDdlZjIzNDQ2
ZmRlODRjZWQ3MmEwODdhNjk5N2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQu
Y3BwCkBAIC03NCwxMCArNzQsOSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5n
dGhzSW5mb3JtYXRpb24oKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2Fz
dDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAg
IHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVu
ZGVyZXIoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PExlZ2FjeVJlbmRlclNWR1NoYXBlKj4o
cmVuZGVyZXIpLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXgg
ODQ4ZjZhMjJmOGUyNTEzNjY3YmIwNGNiYmI5OWY4MDlhMjY4ZmM3Zi4uMWNkNTAxYjAyZTY5ZDQ2
Mjc4ZTU3Y2ViOWI4ZWNmZmEyOWYxY2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTgzLDggKzgzLDcgQEAgdm9pZCBTVkdMaW5l
YXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgYXR0ck5hbWUKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAwYjQzYmI4NDJlNWUzNjJhYWVmODc5ZmQ2MDYz
YWE1NzZlYWUyMWFiLi45OTQ4ZjE5ODc3MzgyNWM5MGM2ZTAxZmI4M2YzYmIwMWU4ZmY5NzcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05OCwxNCArOTgsMTIg
QEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5n
dGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhz
SW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KICAgICAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigp
KQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMTksOCArMTE3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9
PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlm
IChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0
TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogfQogCiBTdHJpbmcgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50KCkgY29uc3QKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDYzYmE3MmIwNTM4MmZmNThiZWEwNTJk
Y2JmZWY1NDcxYmE5NDkxMDQuLjI1Nzc4M2IzNGVjYjI1OGNlMjdmZTQxNGNhOGI2ZmU4NjkxZDM5
NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMTA1LDggKzEwNSw3
IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQo
KTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIwLDggKzExOSw3IEBAIHZvaWQgU1ZHTWFza0Vs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdN
YXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNw
cAppbmRleCA2YTBjZjkzNmQzNTdhOWVhODU3OWUzZjQ3NWVkYjg3MDIzYTU4MGVjLi5kMGI1ZGYy
MWQxNmFjNGRjMTMwZjQwMjkxYmQ0NWE5OWZkMzg0NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
YXRoRWxlbWVudC5jcHAKQEAgLTcwLDEwICs3MCw5IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlk
YXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5k
ZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHJlbmRlcmVy
KS0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCA2YjU0ZTdlZmNkODMzNDRjMzg3MzVh
NzFhMWRjMjBjNWQ0OGJkODY1Li5iNDc1ODlmZjhmY2E3Y2ExNjgzOTZiZTk2MTg0ZWQ2NGVkOTcw
NWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTExNyw4
ICsxMTcsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJl
Z2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtMTMyLDggKzEzMSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNo
aWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uu
c291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwog
Ci0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2Jq
ZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0ZXJuRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAppbmRl
eCA2YmRlYmZhN2E0OTUyNDY3ZDkwNTY1MDY4OWM3NWVmMThlMTEwZWMzLi44MGVkMDNmY2E0Yjdj
MzY2ODU0MDk1YzZkZWNiN2M1NmFjM2ZmZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxl
bWVudC5jcHAKQEAgLTU3LDExICs1NywxMCBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQ
cm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBB
U1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpOwotICAgICAgICBpZiAoYXV0
byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkg
ewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0g
ICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAg
UmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRh
dGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHJlbmRl
cmVyKS0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU1ZTIx
YWZlZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLjA3NGE3Njc3OWQ3ZGNiMTA5MDdk
NmU3MGRlZTMwYmJlYzMwOTJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdS
YWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRp
YWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3Jh
ZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZH
RWxlbWVudC5jcHAKaW5kZXggOWM2YTdlODNiZTc5MjE2MTdlMjU5Y2E3ZDNmYzhlOWE1NWUzNThk
OC4uMzMxOGJiNDcyMzU1YmFmYWU5NjAyOGQ2YjM3NTM4NWZlOTU4ZTZlMCAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZHU1ZHRWxl
bWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xhdGlvbikK
IAogdm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKIHsKLSAgICBp
ZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNl
dE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRvY3VtZW50KCku
cmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVwYWludCgp
OwogfQpAQCAtMjExLDE2ICsyMTAsMjggQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgc2V0UHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5KCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYg
KGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
OmhlaWdodEF0dHIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0cnkgdG8gZ2V0IHJpZCBvZiB0
aGlzIGN1c3RvbSBoYW5kbGluZyBvZiBlbWJlZGRlZCBTVkcgaW52YWxpZGF0aW9uLCBtYXliZSB0
aHJvdWdoIGFic3RyYWN0aW9uLgorICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgZW1iZWRkZWRUaHJvdWdoRnJh
bWUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAg
ICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRl
clNWR1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdE
b2N1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRy
dWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZHUm9vdD4o
cmVuZGVyZXIpICYmIGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKS0+aXNF
bWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQorICAgICAgICAgICAg
ICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7CisgICAgICAgICAgICAgICAgaWYg
KGVtYmVkZGVkVGhyb3VnaEZyYW1lKQorICAgICAgICAgICAgICAgICAgICByZW5kZXJlci0+dmll
dygpLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICB9CisgICAgICAg
IH0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25B
dHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMt
PnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwot
ICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNv
dXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmluZGV4IDIwNzk2YTkwMjAyODBk
YjUzNmM0YmNmNTc0MDQ0YzdjMzg3NTNkMTMuLmFkODMyMzk5ZTZkZWRjMTA5MDgzMzYwMDEwMWEw
ODFmMjRhMDc5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcApAQCAtNjYs
MTAgKzY2LDggQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09
IFNWR05hbWVzOjpvZmZzZXRBdHRyKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0
QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjk5MWRiNjkz
NDIwNmVhOTI3ZWJkODdmMzcxMTE3ODFlNTIxODJkZS4uYWFkYWM5OWU1MDU5YWRlZDU0MjllYmEz
ZmY0ZTk1MWJiNjZjNGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCkBA
IC0xODQsOCArMTg0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoU1ZHVVJJUmVmZXJlbmNl
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsK
LSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAg
ICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFs
aWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGMxNDUzYmZjNjA0MDhjOTUwNzQ2
MDc3ZDc2MWVlMTRkNzI5NjUxZmIuLmY4NGMzNGI0NDAxMmRhYWNkODM5NWIxNjJjNDgxNzYwNTRj
N2ZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3Bw
CkBAIC0xODMsMTAgKzE4Myw4IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBpZiAo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICAgICAgbV9zcGVj
aWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCk7CiAKLSAg
ICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzQ5MWM0ZDFiODViOTdlMzQ3ZmQ1YTcxNDEx
MzE0Yzk3ODQ2NjkzLi4wNzhjMGM3ODExYjc0YjAxNmYxMzY3NzY4MTNjYjYzOGE2ZDMxYTcxIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtOTMsMTUgKzkz
LDEzIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnN0YXJ0T2Zmc2V0QXR0cikKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0lu
Zm9ybWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJj
ZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCiAg
ICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5n
RWxlbWVudC5jcHAKaW5kZXggZmUyMWU2NmFmNTY2NTI4OTBhYjMxODA4M2RkODMxOWNlZjFlNjIw
Mi4uYmFhNTUxZGMzZjMxNDBkZTJlNTE1Y2Y5NTQ0MGM0ZGRkZjVlN2M3OSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcApAQCAtMTA2LDkg
KzEwNiw4IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtCiAgICAgICAgIGlmIChhdXRvIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHRleHRBbmNl
c3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3RvcigqcmVuZGVy
ZXIpKQogICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlvbmluZ1Zh
bHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAgICB9Ci0K
KyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1Vz
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3BwCmluZGV4
IGI5ZWRlZjYzMWU2NmU2MGZmNThjNzUyMzQ5ODFlMjE0NTMwZTRmZmEuLmEwMWY2YmFkYTFjMWQ2
YzI1ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVu
dC5jcHAKQEAgLTE2NSw4ICsxNjUsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgICAgICBpZiAo
YXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAgICAgICAgICAgICAgICAg
dHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdldENsb25lKTsKICAgICAg
ICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAzMjNiYzIx
NDRiY2ViZTQ5MGU1Li5lYWEyNjUxNjRjNDk2YWRlYTM4MjVlMWIzNDhlM2ZhNDBkOWUwYTZjIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU5LDEyICs1OSwxMCBAQCB2
b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJnZXRFbGVt
ZW50KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRl
cygqdGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3RhcmdldEVsZW1l
bnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAg
ICB9Ci0KKyAgICAgICAgaWYgKCFtX3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICByZXR1cm47
CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsK
KyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455372</attachid>
            <date>2022-03-22 07:07:48 -0700</date>
            <delta_ts>2022-03-22 10:52:36 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220322140746.patch</filename>
            <type>text/plain</type>
            <size>53623</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjA4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMWVlYjE1OGVkODRkZGNk
YThjYjRhMWVmYTJlMzcwY2NiODk5MzBiYS4uYTFhNDkyNTg3OTUzOTkyYjgwZTA1NzFlMDc1NmRh
MzI1ZDc1YmQzZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMi0wMy0yMiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBl
bnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRpYXRl
bHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMgdG8g
YXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4KKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6OnN2Z1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjptYXJrU1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6CisgICAgICAg
ICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50
OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkpOgorICAgICAgICAqIHN2Zy9TVkdG
RUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRPcmRlcik6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0S2VybmVs
VW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdodGluZ0Vs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURpc3BsYWNl
bWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFjZW1lbnRN
YXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFkb3dFbGVt
ZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9wU2hhZG93
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFR2F1c3Np
YW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFuQmx1ckVs
ZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUlt
YWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVudDo6YnVp
bGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVPZmZzZXRF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVTcGVjdWxh
ckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVU
aWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlRmlsdGVyUHJp
bWl0aXZlUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRp
dmVQYXJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFu
ZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZvcmVpZ25P
YmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHR2Vv
bWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpjaGlsZHJlbkNo
YW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAg
ICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ltYWdl
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xpbmVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdQ
YXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpT
VkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUG9s
eUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKToKKyAgICAgICAg
KFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9wRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdU
ZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RleHRQb3Np
dGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdV
c2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisKIDIwMjIt
MDMtMjIgIERpZWdvIFBpbm8gR2FyY2lhICA8ZHBpbm9AaWdhbGlhLmNvbT4KIAogICAgICAgICBV
bnJldmlld2VkLCBmaXggbm9uLXVuaWZpZWQgYnVpbGQgYWZ0ZXIgcjI5MTU5NwpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmggYi9Tb3VyY2UvV2ViQ29yZS9kb20v
RWxlbWVudERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4ZGI1MjhiYjExNGI3OTY4MmU5ZGU2Y2Rj
ZjhlLi5kNjRiMzA4ZGZiYmJhY2I2YWVmZGNhMjhhNjIxNDViNGU3MDg5OWY3IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9k
b20vRWxlbWVudERhdGEuaApAQCAtMTI1LDEzICsxMjUsMTUgQEAgcHJpdmF0ZToKICAgICBtdXRh
YmxlIHVpbnQzMl90IG1fYXJyYXlTaXplQW5kRmxhZ3M7CiAKICAgICBzdGF0aWMgY29uc3QgdWlu
dDMyX3Qgc19hcnJheVNpemUgPSAyNzsKLSAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFn
Q291bnQgPSA1OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdDb3VudCA9IDY7CiAg
ICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0lzVW5pcXVlID0gMTsKICAgICBzdGF0aWMg
Y29uc3QgdWludDMyX3Qgc19mbGFnSGFzTmFtZUF0dHJpYnV0ZSA9IDEgPDwgMTsKICAgICBzdGF0
aWMgY29uc3QgdWludDMyX3Qgc19mbGFnUHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5ID0g
MSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdTdHlsZUF0dHJpYnV0ZUlz
RGlydHkgPSAxIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0FuaW1hdGVk
U1ZHQXR0cmlidXRlc0FyZURpcnR5ID0gMSA8PCA0OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJf
dCBzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSA9IDEgPDwgNTsKICAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnc01hc2sgPSAoMSA8PCBzX2ZsYWdDb3VudCkg
LSAxOworICAgIC8vIEZJWE1FOiBjb3VsZCB0aGUgU1ZHIHNwZWNpZmljIGZsYWdzIGdvIHRvIHNv
bWUgU1ZHIGNsYXNzPwogCiAgICAgaW5saW5lIHZvaWQgdXBkYXRlRmxhZyh1aW50MzJfdCBmbGFn
LCBib29sIHNldCkgY29uc3QKICAgICB7CkBAIC0xNjAsNiArMTYyLDkgQEAgcHJvdGVjdGVkOgog
ICAgIGJvb2wgYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKSBjb25zdCB7IHJldHVybiBt
X2FycmF5U2l6ZUFuZEZsYWdzICYgc19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHk7
IH0KICAgICB2b2lkIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KGJvb2wgZGlydHkp
IGNvbnN0IHsgdXBkYXRlRmxhZyhzX2ZsYWdBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSwg
ZGlydHkpOyB9CiAKKyAgICBib29sIHN2Z1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVNpemVBbmRGbGFncyAmIHNfZmxhZ1NWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5OyB9CisgICAgdm9pZCBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eShib29sIGRpcnR5KSBjb25zdCB7IHVwZGF0ZUZsYWcoc19mbGFn
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHksIGRpcnR5KTsgfQorCiAgICAgbXV0
YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX2lubGluZVN0eWxlOwogICAgIG11dGFibGUg
U3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXM7CiAgICAgbXV0YWJsZSBBdG9tU3RyaW5nIG1f
aWRGb3JTdHlsZVJlc29sdXRpb247CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVy
aW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRleCA3MTUxZTA2MmU4ZGYzODU0
YjEyMzExZDkzNjhlN2QxNGE2Nzc4Zjk0Li5iZWZjOWIzMWRhMzg5NGUwYTJmNmUyZmVjMDZhYmZj
NThhMDU1Yjc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcv
UmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy91cGRh
dGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTQ1LDYgKzQ1LDcgQEAKICNpbmNsdWRlICJS
ZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCIKICNpbmNsdWRlICJSZW5kZXJWaWV3
LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5oIgorI2luY2x1ZGUgIlNWR0Vs
ZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAjaW5jbHVkZSAiU3R5bGVUcmVl
UmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWFuaXB1bGF0aW9uQ29udHJvbGxlci5oIgpAQCAt
MTkyLDYgKzE5Myw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6OnVwZGF0ZVJlbmRlclRyZWUo
Q29udGFpbmVyTm9kZSYgcm9vdCkKICAgICAgICAgaWYgKGVsZW1lbnRVcGRhdGUpCiAgICAgICAg
ICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVsZW1lbnRVcGRhdGUpOwogCisg
ICAgICAgIGlmIChpczxTVkdFbGVtZW50PihlbGVtZW50KSkKKyAgICAgICAgICAgIGRvd25jYXN0
PFNWR0VsZW1lbnQ+KGVsZW1lbnQpLm1hcmtTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5JZk5l
ZWRlZCgpOworCiAgICAgICAgIHN0b3JlUHJldmlvdXNSZW5kZXJlcihlbGVtZW50KTsKIAogICAg
ICAgICBib29sIG1heUhhdmVSZW5kZXJlZERlc2NlbmRhbnRzID0gZWxlbWVudC5yZW5kZXJlcigp
IHx8IChlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygpICYmIHNob3VsZENyZWF0ZVJlbmRlcmVy
KGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBhcmVudCgpKSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcAppbmRleCBmOTUyNzJhNGQ1ZDhh
ODliNTYwYzZkZWE4MGY2ODljMDFmMWE2NjZlLi40YjZjNTMwYmU5ZGNkMGVmNGU1MjBhOGYxMGYy
YmM0NmExMzVmZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1v
dGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9u
RWxlbWVudC5jcHAKQEAgLTI1MCwxMCArMjUwLDEzIEBAIHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVs
ZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAgICBpZiAoIXRhcmdldEVsZW1lbnQpCiAg
ICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHRhcmdl
dEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNm
b3JtVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICB9CisgICAgYXV0byB1
cGRhdGVUYXJnZXRFbGVtZW50ID0gW10oU1ZHRWxlbWVudCYgZWxlbWVudCkgeworICAgICAgICBp
ZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHJlbmRl
cmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOworICAgICAgICBlbGVtZW50LnNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CisgICAgfTsKKworICAgIHVwZGF0ZVRh
cmdldEVsZW1lbnQoKnRhcmdldEVsZW1lbnQpOwogCiAgICAgQWZmaW5lVHJhbnNmb3JtKiB0YXJn
ZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSB0YXJnZXRFbGVtZW50LT5zdXBwbGVtZW50YWxUcmFu
c2Zvcm0oKTsKICAgICBpZiAoIXRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKQEAgLTI2NSwx
MCArMjY4LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9U
YXJnZXQoKQogICAgICAgICBpZiAoIXRyYW5zZm9ybSB8fCAqdHJhbnNmb3JtID09ICp0YXJnZXRT
dXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgKnRy
YW5zZm9ybSA9ICp0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm07Ci0gICAgICAgIGlmIChSZW5k
ZXJFbGVtZW50KiByZW5kZXJlciA9IGluc3RhbmNlLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAg
ICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
KnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICB1cGRhdGVUYXJnZXRFbGVtZW50KGluc3Rh
bmNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlw
UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5j
cHAKaW5kZXggYjRlNzk5NThjNWIxMzAzNTVmNzk5OTRiMTE4M2M1M2Y5MmNlZDY5Yi4uYWZkNjBl
YmUwODhlNDNkNzdhNjg2OGE1YzU0NjdmNGQxODUwMDU2NCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKQEAgLTY3LDggKzY3LDcgQEAgdm9pZCBTVkdDbGlwUGF0
aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogCi0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTgyLDgg
KzgxLDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBD
aGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdl
OjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVj
dCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIFJl
bmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlwUGF0aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1
bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggMGNkNGZkNDFlNTNhZDE1ODI4MzI4ZTNiMTNmODJlZTYw
NjVlMmQ5ZC4uYmI2ZTUyNTYzMmQ3NTgzZWYxZjhiZWVlY2IzNGI2ZjFlYzcyZjUzMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVt
ZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5j
dGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBAIHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFt
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOworICAgICAgICBTVkdG
aWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRp
dmVQYXJlbnQodGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdF
bGVtZW50LmNwcAppbmRleCA0MjRmYjA4MzI5MTNjOGQ5ZTY4MmU3ZGMzZmVhZGYxOTJjYzBjNDIw
Li5iNzZiZjI4YjBlODM0ZjUxN2VlM2UyYjljNDljMTI1ZGJiY2I2OWVhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0VsZW1lbnQuY3BwCkBAIC04ODMsNiArODgzLDIyIEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29s
bGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYg
bmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50YXRpb25hbEhpbnRTdHlsZShzdHlsZSwg
cHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2b2lkIFNWR0VsZW1lbnQ6OnNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCkKK3sKKyAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0
YSgpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KHRydWUpOworICAgIGlu
dmFsaWRhdGVTdHlsZSgpOworfQorCit2b2lkIFNWR0VsZW1lbnQ6Om1hcmtTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpCit7CisgICAgaWYgKCFlbGVtZW50RGF0YSgpIHx8ICFl
bGVtZW50RGF0YSgpLT5zdmdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpKQorICAg
ICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
CisgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3Vy
Y2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICBlbGVtZW50RGF0YSgpLT5zZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eShmYWxzZSk7Cit9CisKIHZvaWQgU1ZHRWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
ICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVO
YW1lKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50
LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5oCmluZGV4IGZjNjYxNGJkNDY5MzI5
YTljNDY0ZGY5ZTkzNDZmODc5ZDk3N2JmZDUuLjljYTkwZDZiN2VhNjJjM2U0ZDY5OWMxZDQzYTRm
YTE4MTM2MTU2ODQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaApAQCAtODQsNiArODQsOCBAQCBw
dWJsaWM6CiAKICAgICBpbmxpbmUgdm9pZCBzZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0
eSgpOwogICAgIGlubGluZSB2b2lkIHNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgp
OworICAgIHZvaWQgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAg
ICB2b2lkIG1hcmtTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpOwogCiAgICAg
Ly8gVGhlIGluc3RhbmNlcyBvZiBhbiBlbGVtZW50IGFyZSBjbG9uZXMgbWFkZSBpbiBzaGFkb3cg
dHJlZXMgdG8gaW1wbGVtZW50IDx1c2U+LgogICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR0VsZW1l
bnQ+JiBpbnN0YW5jZXMoKSBjb25zdDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdFbGVtZW50SW5saW5lcy5oIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVz
LmgKaW5kZXggYjRjMTc3Zjg5ZjFiZGYxZTE3MzYxZmQxZDZlZDkyNjNiMGVmYTJhOC4uMzBkODM2
MjNmNDdlNGFjN2E1NTNkMGY1N2NjNDUxMjVhZWI0MzQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnRJbmxpbmVzLmgKQEAgLTM4LDcgKzM4LDYgQEAgaW5saW5lIHZvaWQgU1ZHRWxlbWVu
dDo6c2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkoKQogaW5saW5lIHZvaWQgU1ZHRWxl
bWVudDo6c2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCkKIHsKICAgICBlbnN1cmVV
bmlxdWVFbGVtZW50RGF0YSgpLnNldFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSh0cnVl
KTsKLSAgICAvLyBUcmlnZ2VyIHN0eWxlIHJlY2FsY3VsYXRpb24gZm9yICJlbGVtZW50cyBhcyBy
ZXNvdXJjZSIgKGUuZy4gcmVmZXJlbmNlZCBieSBmZUltYWdlKS4KICAgICBpbnZhbGlkYXRlU3R5
bGUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXgg
MDFjNjQwMGUyMzQ0YzkzNWVmMjg3NjY0NjQ0MzM3N2U4OGFjZDQ2Mi4uMGExYjQzYTdhZDM1MmY5
MmE4ZTkxN2UxYWVhODJhZDUxMjkxYjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFQmxlbmRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVu
ZEVsZW1lbnQuY3BwCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAg
ICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cik7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7Cisg
ICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAg
ICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcAppbmRleCBhMmI4YzYwNzQ1NzQ0OGM4NTUyMWMzYmMx
MmQ2ZjkzOWNhMDVjNmMyLi45MmM3MDAzNjRmODllYmM0ZDJmODRlNDAzNTcxMTJiYjJhY2M2ZDY1
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQu
Y3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAK
QEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVy
dHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjp2YWx1ZXNBdHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2
ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29tcG9zaXRlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVD
b21wb3NpdGVFbGVtZW50LmNwcAppbmRleCAxNDk1Y2NmYjkzZTg3M2I2MjIzMjc0ZmM1MmZhYjcw
YTI1NGJmODFlLi42NDYwNDJmZDRhNDQ1MmIxMmU2YWY0NmZkY2EyMmQ2NmI1MzhiYjU0IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE4LDcg
KzExOCw3IEBAIHZvaWQgU1ZHRkVDb21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVz
OjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAgICAgICAgICBp
bnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9
PSBTVkdOYW1lczo6azFBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmszQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpvcGVyYXRvckF0dHIpOwogICAgICAgICAgICAgcHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcAppbmRleCBiZGIxY2VmZGNjOWJmMGVl
MTE4ODk0Nzg2MWE4N2I4MjcwOTQzZGVmLi40YTgzYTE1YTAzY2M1OTAwOTIzZDNhMjcxOTc1Yzk4
YWFlMDExN2QxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAKQEAgLTE2MCwxNCArMTYwLDE0IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1h
dHJpeEVsZW1lbnQ6OnNldE9yZGVyKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9vcmRlclgt
PnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX29yZGVyWS0+c2V0QmFzZVZhbEludGVybmFs
KHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRL
ZXJuZWxVbml0TGVuZ3RoKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVu
Z3RoWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNl
dEJhc2VWYWxJbnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TmFtZSkKQEAgLTE3NSw3ICsxNzUsNyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0
dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVy
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikKLSAgICAgICAg
ICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJO
YW1lID09IFNWR05hbWVzOjplZGdlTW9kZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRp
dmlzb3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpiaWFzQXR0ciB8fCBhdHRyTmFtZSA9
PSBTVkdOYW1lczo6dGFyZ2V0WEF0dHIKICAgICAgICAgICAgICAgICB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6dGFyZ2V0WUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRM
ZW5ndGhBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cik7CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3Bw
CmluZGV4IDMwZTkxMjhmMjcyMzRiMDYyM2YyNjY2NDAyNThjNmRhN2I0NTMxM2UuLjEzZDNjYzZm
YmVmOGMxMjg4ZGMxMzY4ZGJjODFmZWVlYzk0NGU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjgsNyArMTI4LDcg
QEAgdm9pZCBTVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQo
Y29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNL
bm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25H
dWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5B
dHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAg
ICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OnN1cmZhY2VTY2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0
ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
RGlzcGxhY2VtZW50TWFwRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50LmNwcAppbmRleCBmOWRiODVhZWE5MGU0NjExNWFmMzhhYzBlODkz
MGZiZmJjMjYyZjQ5Li5hMjkzM2JjM2UyMjliZjQ1MWJiNDJhNzhjNDAxNzA0OWQ5N2FjNjllIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
LmNwcApAQCAtMTAyLDcgKzEwMiw3IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0
cikKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAg
QVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRy
TmFtZSA9PSBTVkdOYW1lczo6eUNoYW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNjYWxlQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2Vk
KGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50
LmNwcAppbmRleCA0NTk5MTBlNTRkMmY2MDU2ZWEyNTliMTg4MzliM2UzZTliNTMxNjgyLi5lMWFj
ZGYwOWYzOTJlMmJjYTE3YjFhNDRlNjcyYTc3OTgyMDRhYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQg
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkp
CiB7CiAgICAgbV9zdGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9z
dGREZXZpYXRpb25ZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOwor
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQg
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFt
ZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQg
U1ZHRkVEcm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRl
eCBiNWYzYzdiNmNlZmZkNjVkZmQwYWUxMWE0YTliMmIyZTBkODNiOGEzLi4wNzNiZDcyNGJiOWUz
NWYwYjgwZDYyZGY5YzAyOTU1MzJlOTY5ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7
CiAgICAgbV9zdGREZXZpYXRpb25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGRE
ZXZpYXRpb25ZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZH
RkVHYXVzc2lhbkJsdXJFbGVtZW50OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1l
JiBuYW1lLCBjb25zdCBBdG9tU3RyaW5nJiB2YWx1ZSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBT
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKaW5kZXggMWFkNTE2NTkwMWE1
NTI1NmViNDFhMjUzMDJkYTVmZTBhMWEzYTAzMy4uY2MzMmQyOTAyYjFkN2Y0OGVhYjk1MmYzYmNm
MzEzMzY2MTI3MWJjYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3Bw
CkBAIC0xMTEsNyArMTExLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGRQZW5kaW5n
UmVzb3VyY2UoKQogICAgIH0gZWxzZSBpZiAoaXM8U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50
KSkKICAgICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50KS5hZGRSZWZl
cmVuY2luZ0VsZW1lbnQoKnRoaXMpOwogCi0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVs
ZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0
b21TdHJpbmcmIHZhbHVlKQpAQCAtMTMwLDcgKzEzMCw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0
dHIpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAg
ICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTGlnaHRFbGVtZW50LmNwcAppbmRleCAyNDg2NjY0ZWU2MjQ5MWIwZTE3MTNmNzYzNzYw
YTg2OGU5YThkZGMzLi5lNjg2NGE3YmFlZmE3NGNjNmI3MzlhMTdhN2Q3MjVkMWQ3ZjRiZjc1IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTE1NywxMiArMTU3
LDggQEAgdm9pZCBTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxk
Q2hhbmdlJiBjaGFuZ2UpCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBSZWZQdHIgcGFyZW50ID0gcGFy
ZW50Tm9kZSgpOwotICAgIGlmICghcGFyZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVy
RWxlbWVudCogcmVuZGVyZXIgPSBwYXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVy
ICYmIHJlbmRlcmVyLT5pc1NWR1Jlc291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgIFJl
bmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRp
b24oKnJlbmRlcmVyKTsKKworICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
czo6aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCh0aGlzKTsKIH0KIAogfQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCA1ZWJkY2M5ZGQx
OGI1MTdmNjY1ZTZhMGE5ZTU4ZDY4MjdlYjI1N2JmLi45MzA4YjIwYmI2NWNmMTg1ZTZmZmRjNWE1
YmFhNDQ4ZWEzYTExYTE3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJn
ZU5vZGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVF
bGVtZW50LmNwcApAQCAtNjMsNyArNjMsNyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpOwogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRl
clByaW1pdGl2ZVBhcmVudCh0aGlzKTsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9s
b2d5RWxlbWVudC5jcHAKaW5kZXggNzkwOTIwNzRjNGYxNWZkZWFlZmZjNjk2OGE2ZDZmYjI1MzM3
ZTdmOC4uYmE1NGJhNzkyMTVjN2FmNmNlMWE0ZGE1MGI2NmQxYTc3Y2RjZTRmZiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTIsNyArNTIs
NyBAQCB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9h
dCB5KQogewogICAgIG1fcmFkaXVzWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fcmFk
aXVzWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRT
VkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFTW9y
cGhvbG9neUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUs
IGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU1ZHRkVN
b3JwaG9sb2d5RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShh
dHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAg
ICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5h
bWUgPT0gU1ZHTmFtZXM6Om9wZXJhdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFk
aXVzQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1l
KTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggODQzZjhk
ZTc3YWI4YzgxZGJhMzNhZjIxZGY2MGM4ZDJlOGNiMjc0My4uZWI2ZDdjYmY4ZDgwYzZhYjhjMmY4
ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
T2Zmc2V0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxl
bWVudC5jcHAKQEAgLTcyLDcgKzcyLDcgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAppbmRleCBiNjhiYTM5MDU0NGFhNjViZmI5
ZGVkOTY3NGU2ZWNlMmMyOTg3OGEyLi5lODdjNTEwZDVjNzc2MGE4MmFlNWFlMDgyOTU2OTllNTU3
Y2NhYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdo
dGluZ0VsZW1lbnQuY3BwCkBAIC0xMzgsNyArMTM4LDcgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGln
aHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHIKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAg
ICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgaW52YWxp
ZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnNwZWN1bGFyQ29uc3RhbnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVj
dWxhckV4cG9uZW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpOwogICAgICAg
ICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKaW5kZXggZTQ2MTdkZTk1MmQ5OWViY2M3Njg4MTM3ZjFl
NzNmYmU1YmQwNjljZi4uYjk5MzA3YzRiZTZjYjExYjViMzMxOWQ2MzVhNDFhNzRiMWJjNWUzOCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNjEsNyArNjEsNyBA
QCB2b2lkIFNWR0ZFVGlsZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6
aW5BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCmluZGV4IDgwZDM2NmQxZDQ5ZTA0MThjYjNhMGNkNjM4
MWY1OTU1MTY1ZTM1YzQuLjIwNGE2MWI0NzE4NmE3OGE2MGFjZWNkNmEzMmMxNTdjZjJiMGM3ZDYg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTk5LDggKzk5LDcg
QEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApAQCAtMTE0LDggKzExMyw3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6
Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5n
ZS5zb3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47
CiAKLSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBv
YmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVs
ZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBS
ZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAwMGU0ZTY5ODY2
NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2IyODVjNzQ0OTRhLi4yNDAyNTQ2ZjRmNDIwNzA1N2E2NTRlZTRk
MDgwYjBhZTQ2MzQ3NDlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgsNyArNzgsNyBA
QCB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXRT
VkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCkBAIC05MSw3ICs5MSw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRB
dHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoCiAKICAgICBp
ZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAg
IHJldHVybjsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRl
clByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRl
clN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCkBAIC0xMDcsNyArMTA3
LDcgQEAgYm9vbCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVy
SXNOZWVkZWQoY29uc3QgUmVuZGVyU3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZv
aWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQor
dm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGVGaWx0
ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1l
bnQpCiAgICAgICAgIHJldHVybjsKQEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIGludmFsaWRhdGVG
aWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRl
cmVyIHx8ICFyZW5kZXJlci0+aXNTVkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAgICAg
ICByZXR1cm47CiAKLSAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVu
dFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlciwgZmFsc2UpOworICAgIGRvd25jYXN0PFNW
R0VsZW1lbnQ+KCpwYXJlbnQpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiB9CiAKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1
MjllOTJmNjljNTFmM2Q4ZWQ5Li4zMTAzY2M2YWMyMzNlMGZkM2IyZmIxZTk3OTA0OWEyOGI3YjZm
OGJiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIFZlY3RvcjxBdG9tU3RyaW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0
IHsgcmV0dXJuIHsgfTsgfQogICAgIHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVy
RWZmZWN0KGNvbnN0IFNWR0ZpbHRlckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3Im
KSBjb25zdCA9IDA7CiAKKyAgICBzdGF0aWMgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZl
UGFyZW50KFNWR0VsZW1lbnQqKTsKKwogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2
ZVN0YW5kYXJkQXR0cmlidXRlcyhjb25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApA
QCAtNjIsNyArNjQsNiBAQCBwcm90ZWN0ZWQ6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmKSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYpIG92ZXJyaWRlOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7
CiAgICAgdm9pZCBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJpYnV0ZU5hbWUpOwogCiBwcml2YXRlOgpAQCAtODEsMTQgKzgyLDYgQEAgcHJpdmF0ZToK
ICAgICBSZWY8U1ZHQW5pbWF0ZWRTdHJpbmc+IG1fcmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6
OmNyZWF0ZSh0aGlzKSB9OwogfTsKIAotdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFy
ZW50KFNWR0VsZW1lbnQqKTsKLQotaW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRh
cmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlKCkKLXsKLSAgICBpZiAoYXV0byogcHJpbWl0aXZlUmVu
ZGVyZXIgPSByZW5kZXJlcigpKQotICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zvckxh
eW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpwcmltaXRpdmVSZW5kZXJlcik7Ci19
Ci0KIGlubGluZSB2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJp
bWl0aXZlQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7
CiAgICAgaWYgKGF1dG8qIHByaW1pdGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGUzNDliYzcx
OTZjMDRjYzFmMmViZWMyOTc1MTQxZGI2YzRmZmIwNTAuLmVjYjNiYmY4OTYwN2NkN2QwMzI1NzY0
NGU4YjYyYWNiMDY1NThjMWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3Jl
aWduT2JqZWN0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25P
YmplY3RFbGVtZW50LmNwcApAQCAtODEsOCArODEsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RF
bGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1l
KQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6eEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVz
b3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVy
ZXIpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0dlb21ldHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2VvbWV0cnlFbGVtZW50LmNwcAppbmRleCA1NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFj
ZGRlNjRiNDBlMWJkLi5jMGJmMjFlNDQyNGEzNjM4OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1
MCw3IEBAIHZvaWQgU1ZHR2VvbWV0cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OnBhdGhMZW5ndGhBdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291
cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNk
OTg3M2I5M2NkZTk2OGIzN2ViMzQ3Yzc2NTgyNDgzZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3
NjdiYTMwZmMzMjdhNjUwMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRp
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVu
dC5jcHAKQEAgLTc5LDggKzc5LDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFBy
b3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVy
ZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9i
amVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7
CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKQEAgLTk0LDggKzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVs
ZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAg
ICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVu
dEVsZW1lbnQ6OmJ1aWxkU3RvcHMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYXBoaWNzRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcAppbmRleCBkYzEwOGU1YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4w
MzE2M2U0ZjM5ZmRjYTFkNWQ4MWVjNzc4NzVmZmQwYjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcApAQCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNW
R0dyYXBoaWNzRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zv
cm1BdHRyKTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAg
ICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJl
bmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZH
UmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVu
ZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ltYWdlRWxlbWVudC5jcHAKaW5kZXggMTYyM2U3MzljYzAzYWZhNDgyZGVlYTY1NWFjNmU5ZTVm
MDNhNTJiMC4uYmUwNDQ5MjdjYzgxZjkwZDQxMTQ4NmU5NjcwNmNhNzJiZDA3YTE0OCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lk
IFNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1l
JiBhdHRyTmFtZSkKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9u
KCk7CiAKICAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
IHsKLSAgICAgICAgICAgICAgICBpZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJl
cikudXBkYXRlSW1hZ2VWaWV3cG9ydCgpKQotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgICAgICAgICAgICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJl
bmRlcmVyKS51cGRhdGVJbWFnZVZpZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVy
bjsKKyAgICAgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogICAgICAgICAgICAgfQogICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAg
ICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgZWxz
ZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNw
ZWN0UmF0aW9BdHRyKTsKLSAgICAgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJl
bmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAg
ICAgICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xp
bmVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5k
ZXggZWZiOWI4YmNmZDljYzk1ZWFhNDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uMjMxOWQ1ZWNjZDdl
ZjIzNDQ2ZmRlODRjZWQ3MmEwODdhNjk5N2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVs
ZW1lbnQuY3BwCkBAIC03NCwxMCArNzQsOSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRp
dmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
b3duY2FzdDxMZWdhY3lSZW5kZXJTVkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKLSAgICAg
ICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKKyAgICAgICAgICAgIHN0YXRpY19jYXN0PExlZ2FjeVJlbmRlclNWR1No
YXBlKj4ocmVuZGVyZXIpLT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7CisgICAgICAgIHNldFNWR1Jl
c291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAK
aW5kZXggODQ4ZjZhMjJmOGUyNTEzNjY3YmIwNGNiYmI5OWY4MDlhMjY4ZmM3Zi4uMWNkNTAxYjAy
ZTY5ZDQ2Mjc4ZTU3Y2ViOWI4ZWNmZmEyOWYxY2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKQEAgLTgzLDggKzgzLDcgQEAgdm9pZCBT
VkdMaW5lYXJHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJp
YnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFy
ZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0g
ICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAppbmRleCAwYjQzYmI4NDJlNWUzNjJhYWVmODc5
ZmQ2MDYzYWE1NzZlYWUyMWFiLi45OTQ4ZjE5ODc3MzgyNWM5MGM2ZTAxZmI4M2YzYmIwMWU4ZmY5
NzcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05OCwxNCAr
OTgsMTIgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0
ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVM
ZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0g
cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KICAgICAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5k
ZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47
CiAgICAgfQogCkBAIC0xMTksOCArMTE3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNv
dXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVj
dC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSgpOwogfQogCiBTdHJpbmcgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50KCkgY29uc3QK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFza0VsZW1lbnQuY3BwCmluZGV4IDYzYmE3MmIwNTM4MmZmNThi
ZWEwNTJkY2JmZWY1NDcxYmE5NDkxMDQuLjI1Nzc4M2IzNGVjYjI1OGNlMjdmZTQxNGNhOGI2ZmU4
NjkxZDM5NzIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMTA1LDgg
KzEwNSw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNM
YXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTIwLDggKzExOSw3IEBAIHZvaWQgU1ZH
TWFza0VsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQog
ICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAg
ICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIo
KSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50
PiBTVkdNYXNrRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5
bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVt
ZW50LmNwcAppbmRleCA2YTBjZjkzNmQzNTdhOWVhODU3OWUzZjQ3NWVkYjg3MDIzYTU4MGVjLi5k
MGI1ZGYyMWQxNmFjNGRjMTMwZjQwMjkxYmQ0NWE5OWZkMzg0NmY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXRoRWxlbWVudC5jcHAKQEAgLTcwLDEwICs3MCw5IEBAIHZvaWQgU1ZHUGF0aEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBp
bnZhbGlkYXRlTVBhdGhEZXBlbmRlbmNpZXMoKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAg
ICAgICAgcmVuZGVyZXItPnNldE5lZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
KnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlz
LT5yZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHJl
bmRlcmVyKS0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcAppbmRleCA2YjU0ZTdlZmNkODMzNDRj
Mzg3MzVhNzFhMWRjMjBjNWQ0OGJkODY1Li5iNDc1ODlmZjhmY2E3Y2ExNjgzOTZiZTk2MTg0ZWQ2
NGVkOTcwNWE2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAg
LTExNyw4ICsxMTcsNyBAQCB2b2lkIFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdC
b3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0
ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAg
ICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAg
cmV0dXJuOwogICAgIH0KIApAQCAtMTMyLDggKzEzMSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1l
bnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChj
aGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0
dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0
b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0
ZXJuRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNv
bnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHUG9seUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNw
cAppbmRleCA2YmRlYmZhN2E0OTUyNDY3ZDkwNTY1MDY4OWM3NWVmMThlMTEwZWMzLi44MGVkMDNm
Y2E0YjdjMzY2ODU0MDk1YzZkZWNiN2M1NmFjM2ZmZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQ
b2x5RWxlbWVudC5jcHAKQEAgLTU3LDExICs1NywxMCBAQCB2b2lkIFNWR1BvbHlFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpOwotICAgICAgICBp
ZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJl
cigpKSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhp
cyk7Ci0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQorICAgICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+
KHJlbmRlcmVyKS0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJj
ZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4
IGU1ZTIxYWZlZTllM2Y1NmIxODc4Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLjA3NGE3Njc3OWQ3ZGNi
MTA5MDdkNmU3MGRlZTMwYmJlYzMwOTJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFk
aWFsR3JhZGllbnRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAg
ICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2Jq
ZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAKaW5kZXggOWM2YTdlODNiZTc5MjE2MTdlMjU5Y2E3ZDNmYzhlOWE1
NWUzNThkOC4uMzMxOGJiNDcyMzU1YmFmYWU5NjAyOGQ2YjM3NTM4NWZlOTU4ZTZlMCAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZH
U1ZHRWxlbWVudDo6c2V0Q3VycmVudFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xh
dGlvbikKIAogdm9pZCBTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKIHsK
LSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKICAgICBpZiAocGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRvY3Vt
ZW50KCkucmVuZGVyVmlldygpKQogICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVw
YWludCgpOwogfQpAQCAtMjExLDE2ICsyMTAsMjggQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJ
bnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgc2V0UHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmhlaWdodEF0dHIpIHsKKyAgICAgICAgICAgIC8vIEZJWE1FOiB0cnkgdG8gZ2V0IHJp
ZCBvZiB0aGlzIGN1c3RvbSBoYW5kbGluZyBvZiBlbWJlZGRlZCBTVkcgaW52YWxpZGF0aW9uLCBt
YXliZSB0aHJvdWdoIGFic3RyYWN0aW9uLgorICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAgICAgICAgICAgICAgIGJvb2wgZW1iZWRkZWRUaHJv
dWdoRnJhbWUgPSBmYWxzZTsKKyNpZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAg
ICAgICAgICAgICAgICBpZiAoaXM8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0
PFJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVyKS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5p
bmdTVkdEb2N1bWVudCgpKQorICAgICAgICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFt
ZSA9IHRydWU7CisjZW5kaWYKKyAgICAgICAgICAgICAgICBpZiAoaXM8TGVnYWN5UmVuZGVyU1ZH
Um9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1Jvb3Q+KHJlbmRlcmVy
KS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQorICAgICAg
ICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7CisgICAgICAgICAgICAg
ICAgaWYgKGVtYmVkZGVkVGhyb3VnaEZyYW1lKQorICAgICAgICAgICAgICAgICAgICByZW5kZXJl
ci0+dmlldygpLnNldE5lZWRzTGF5b3V0KE1hcmtPbmx5VGhpcyk7CisgICAgICAgICAgICB9Cisg
ICAgICAgIH0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9
IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+
cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0
ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJl
bnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHNl
dFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCmluZGV4IDIwNzk2YTkw
MjAyODBkYjUzNmM0YmNmNTc0MDQ0YzdjMzg3NTNkMTMuLmFkODMyMzk5ZTZkZWRjMTA5MDgzMzYw
MDEwMWEwODFmMjRhMDc5NTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9w
RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcApA
QCAtNjYsMTAgKzY2LDggQEAgdm9pZCBTVkdTdG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdp
c3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJO
YW1lID09IFNWR05hbWVzOjpvZmZzZXRBdHRyKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIg
PSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAg
fQorICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0
dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKaW5kZXggMjk5
MWRiNjkzNDIwNmVhOTI3ZWJkODdmMzcxMTE3ODFlNTIxODJkZS4uYWFkYWM5OWU1MDU5YWRlZDU0
MjllYmEzZmY0ZTk1MWJiNjZjNGFmOCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RSZWZFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQu
Y3BwCkBAIC0xODQsOCArMTg0LDcgQEAgdm9pZCBTVkdUUmVmRWxlbWVudDo6c3ZnQXR0cmlidXRl
Q2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoU1ZHVVJJUmVm
ZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUlu
dmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3Vy
Y2UoKTsKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1lbnQuY3BwCmluZGV4IGMxNDUzYmZjNjA0MDhj
OTUwNzQ2MDc3ZDc2MWVlMTRkNzI5NjUxZmIuLmY4NGMzNGI0NDAxMmRhYWNkODM5NWIxNjJjNDgx
NzYwNTRjN2ZlY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVu
dEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0Q29udGVudEVsZW1l
bnQuY3BwCkBAIC0xODMsMTAgKzE4Myw4IEBAIHZvaWQgU1ZHVGV4dENvbnRlbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAg
ICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRleHRMZW5ndGhBdHRyKQogICAgICAgICAgICAg
bV9zcGVjaWZpZWRUZXh0TGVuZ3RoID0gbV90ZXh0TGVuZ3RoLT5iYXNlVmFsKCktPnZhbHVlKCk7
CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Ci0gICAg
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICBJbnN0YW5jZUludmFsaWRh
dGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcAppbmRleCBhNzQ5MWM0ZDFiODViOTdlMzQ3ZmQ1
YTcxNDExMzE0Yzk3ODQ2NjkzLi4wNzhjMGM3ODExYjc0YjAxNmYxMzY3NzY4MTNjYjYzOGE2ZDMx
YTcxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBhdGhFbGVtZW50LmNwcApAQCAtOTMs
MTUgKzkzLDEzIEBAIHZvaWQgU1ZHVGV4dFBhdGhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBpZiAoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnN0YXJ0T2Zmc2V0QXR0cikKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVu
Z3Roc0luZm9ybWF0aW9uKCk7CiAKLSAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5y
ZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKICAgICAgICAgYnVpbGRQZW5kaW5nUmVzb3VyY2UoKTsKLSAgICAgICAgaWYgKGF1dG8gcmVu
ZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwor
ICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0
aW9uaW5nRWxlbWVudC5jcHAKaW5kZXggZmUyMWU2NmFmNTY2NTI4OTBhYjMxODA4M2RkODMxOWNl
ZjFlNjIwMi4uYmFhNTUxZGMzZjMxNDBkZTJlNTE1Y2Y5NTQ0MGM0ZGRkZjVlN2M3OSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcApAQCAt
MTA2LDkgKzEwNiw4IEBAIHZvaWQgU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtCiAgICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewogICAgICAgICAgICAgaWYgKGF1dG8qIHRl
eHRBbmNlc3RvciA9IFJlbmRlclNWR1RleHQ6OmxvY2F0ZVJlbmRlclNWR1RleHRBbmNlc3Rvcigq
cmVuZGVyZXIpKQogICAgICAgICAgICAgICAgIHRleHRBbmNlc3Rvci0+c2V0TmVlZHNQb3NpdGlv
bmluZ1ZhbHVlc1VwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtG
b3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwogICAgICAg
ICB9Ci0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsK
ICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR1VzZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CmluZGV4IGI5ZWRlZjYzMWU2NmU2MGZmNThjNzUyMzQ5ODFlMjE0NTMwZTRmZmEuLmEwMWY2YmFk
YTFjMWQ2YzI1ZjgyMGY3MjZjOGVjZWU4MTgyZWNiNmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNl
RWxlbWVudC5jcHAKQEAgLTE2NSw4ICsxNjUsNyBAQCB2b2lkIFNWR1VzZUVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgICAg
ICBpZiAoYXV0byB0YXJnZXRDbG9uZSA9IHRoaXMtPnRhcmdldENsb25lKCkpCiAgICAgICAgICAg
ICAgICAgdHJhbnNmZXJTaXplQXR0cmlidXRlc1RvVGFyZ2V0Q2xvbmUoKnRhcmdldENsb25lKTsK
ICAgICAgICAgfQotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigp
KQotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcAppbmRleCBlY2ZlNDMxYTQ1MzNjMzZjMDhiNTAz
MjNiYzIxNDRiY2ViZTQ5MGU1Li5lYWEyNjUxNjRjNDk2YWRlYTM4MjVlMWIzNDhlM2ZhNDBkOWUw
YTZjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKQEAgLTU5LDEyICs1OSwx
MCBAQCB2b2lkIFNWR1ZpZXdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxp
ZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICByZXR1cm47CiAKICAgICBpZiAoU1ZHRml0VG9W
aWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAobV90YXJn
ZXRFbGVtZW50KSB7Ci0gICAgICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0
cmlidXRlcygqdGhpcyk7Ci0gICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBtX3Rhcmdl
dEVsZW1lbnQtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6
Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwot
ICAgICAgICB9Ci0KKyAgICAgICAgaWYgKCFtX3RhcmdldEVsZW1lbnQpCisgICAgICAgICAgICBy
ZXR1cm47CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0
aGlzKTsKKyAgICAgICAgbV90YXJnZXRFbGVtZW50LT5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCg==
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455394</attachid>
            <date>2022-03-22 10:52:42 -0700</date>
            <delta_ts>2022-03-23 14:21:08 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220322175241.patch</filename>
            <type>text/plain</type>
            <size>53655</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNjI3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggMjZmZDBkZDlkOTQyMmI0
OWZkZjhiYjk5MThlZGVhYTBlOWU4MWY5Zi4uY2ZhNzAwNmE4NWQwMzY0YjQ2ZThmMTVjYmRlY2M1
ZDljYmZiNDM3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMi0wMy0yMiAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE1ha2UgU1ZHIG5vdCBj
YWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhpcyBl
bnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRpYXRl
bHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMgdG8g
YXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4KKwor
ICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3YS4K
KworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxlbWVu
dERhdGE6OnN2Z1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5IGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5B
cmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVV
cGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRhdGVS
ZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1Rv
VGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6CisgICAg
ICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6Cisg
ICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpTVkdF
bGVtZW50OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkpOgorICAgICAgICAqIHN2
Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5kRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JNYXRy
aXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRP
cmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0
S2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlmZnVz
ZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VMaWdo
dGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRURp
c3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNwbGFj
ZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BTaGFk
b3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEcm9w
U2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZF
R2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNzaWFu
Qmx1ckVsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdh
dXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9T
VkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxlbWVu
dDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFnZUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRyZW5D
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToKKyAgICAgICAgKFdlYkNv
cmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVP
ZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVT
cGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNwZWN1
bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVtZW50
OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVudC5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFu
Z2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5j
cHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyUHJp
bWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlRmls
dGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0ZXJQ
cmltaXRpdmVQYXJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAgICog
c3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0Zv
cmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5RWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50RWxl
bWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50OjpjaGls
ZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToK
KyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0xp
bmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAg
ICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNrRWxl
bWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQp
OgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdTdG9w
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1Rl
eHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6OnN2
Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisK
IDIwMjItMDMtMjIgIEogUGFzY29lICA8al9wYXNjb2VAYXBwbGUuY29tPgogCiAgICAgICAgIFtX
ZWJBdXRobl0gU3VwcG9ydCBnZXRBc3NlcnRpb24gZm9yIHZpcnR1YWwgSElEIGF1dGhlbnRpY2F0
b3JzCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaCBiL1NvdXJj
ZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCmluZGV4IDUxMTZlMzIwODk3ZjhkYjUyOGJiMTE0
Yjc5NjgyZTlkZTZjZGNmOGUuLmQ2NGIzMDhkZmJiYmFjYjZhZWZkY2EyOGE2MjE0NWI0ZTcwODk5
ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2RvbS9FbGVtZW50RGF0YS5oCkBAIC0xMjUsMTMgKzEyNSwxNSBAQCBwcml2
YXRlOgogICAgIG11dGFibGUgdWludDMyX3QgbV9hcnJheVNpemVBbmRGbGFnczsKIAogICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBzX2FycmF5U2l6ZSA9IDI3OwotICAgIHN0YXRpYyBjb25zdCB1
aW50MzJfdCBzX2ZsYWdDb3VudCA9IDU7CisgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxh
Z0NvdW50ID0gNjsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSXNVbmlxdWUgPSAx
OwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdIYXNOYW1lQXR0cmlidXRlID0gMSA8
PCAxOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdQcmVzZW50YXRpb25hbEhpbnRT
dHlsZUlzRGlydHkgPSAxIDw8IDI7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ1N0
eWxlQXR0cmlidXRlSXNEaXJ0eSA9IDEgPDwgMzsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qg
c19mbGFnQW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHkgPSAxIDw8IDQ7CisgICAgc3RhdGlj
IGNvbnN0IHVpbnQzMl90IHNfZmxhZ1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
ID0gMSA8PCA1OwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdzTWFzayA9ICgxIDw8
IHNfZmxhZ0NvdW50KSAtIDE7CisgICAgLy8gRklYTUU6IGNvdWxkIHRoZSBTVkcgc3BlY2lmaWMg
ZmxhZ3MgZ28gdG8gc29tZSBTVkcgY2xhc3M/CiAKICAgICBpbmxpbmUgdm9pZCB1cGRhdGVGbGFn
KHVpbnQzMl90IGZsYWcsIGJvb2wgc2V0KSBjb25zdAogICAgIHsKQEAgLTE2MCw2ICsxNjIsOSBA
QCBwcm90ZWN0ZWQ6CiAgICAgYm9vbCBhbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpIGNv
bnN0IHsgcmV0dXJuIG1fYXJyYXlTaXplQW5kRmxhZ3MgJiBzX2ZsYWdBbmltYXRlZFNWR0F0dHJp
YnV0ZXNBcmVEaXJ0eTsgfQogICAgIHZvaWQgc2V0QW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGly
dHkoYm9vbCBkaXJ0eSkgY29uc3QgeyB1cGRhdGVGbGFnKHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmli
dXRlc0FyZURpcnR5LCBkaXJ0eSk7IH0KIAorICAgIGJvb2wgc3ZnUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZUFuZEZsYWdzICYgc19m
bGFnU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHk7IH0KKyAgICB2b2lkIHNldFNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KGJvb2wgZGlydHkpIGNvbnN0IHsgdXBk
YXRlRmxhZyhzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSwgZGlydHkp
OyB9CisKICAgICBtdXRhYmxlIFJlZlB0cjxTdHlsZVByb3BlcnRpZXM+IG1faW5saW5lU3R5bGU7
CiAgICAgbXV0YWJsZSBTcGFjZVNwbGl0U3RyaW5nIG1fY2xhc3NOYW1lczsKICAgICBtdXRhYmxl
IEF0b21TdHJpbmcgbV9pZEZvclN0eWxlUmVzb2x1dGlvbjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCmluZGV4IDcx
NTFlMDYyZThkZjM4NTRiMTIzMTFkOTM2OGU3ZDE0YTY3NzhmOTQuLjVkNGY2NDhkOTYwN2RjMGFi
M2UwN2Y0YWZjM2M2NWE1YmU4MWZlZWYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRl
cmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcApAQCAtNDUsNiArNDUsNyBA
QAogI2luY2x1ZGUgIlJlbmRlclRyZWVVcGRhdGVyR2VuZXJhdGVkQ29udGVudC5oIgogI2luY2x1
ZGUgIlJlbmRlclZpZXcuaCIKICNpbmNsdWRlICJSdW50aW1lRW5hYmxlZEZlYXR1cmVzLmgiCisj
aW5jbHVkZSAiU1ZHRWxlbWVudC5oIgogI2luY2x1ZGUgIlN0eWxlUmVzb2x2ZXIuaCIKICNpbmNs
dWRlICJTdHlsZVRyZWVSZXNvbHZlci5oIgogI2luY2x1ZGUgIlRleHRNYW5pcHVsYXRpb25Db250
cm9sbGVyLmgiCkBAIC0xOTIsNiArMTkzLDkgQEAgdm9pZCBSZW5kZXJUcmVlVXBkYXRlcjo6dXBk
YXRlUmVuZGVyVHJlZShDb250YWluZXJOb2RlJiByb290KQogICAgICAgICBpZiAoZWxlbWVudFVw
ZGF0ZSkKICAgICAgICAgICAgIHVwZGF0ZUVsZW1lbnRSZW5kZXJlcihlbGVtZW50LCAqZWxlbWVu
dFVwZGF0ZSk7CiAKKyAgICAgICAgaWYgKGlzPFNWR0VsZW1lbnQ+KGVsZW1lbnQpKQorICAgICAg
ICAgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oZWxlbWVudCkuaW52YWxpZGF0ZVNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbklmTmVlZGVkKCk7CisKICAgICAgICAgc3RvcmVQcmV2aW91c1JlbmRl
cmVyKGVsZW1lbnQpOwogCiAgICAgICAgIGJvb2wgbWF5SGF2ZVJlbmRlcmVkRGVzY2VuZGFudHMg
PSBlbGVtZW50LnJlbmRlcmVyKCkgfHwgKGVsZW1lbnQuaGFzRGlzcGxheUNvbnRlbnRzKCkgJiYg
c2hvdWxkQ3JlYXRlUmVuZGVyZXIoZWxlbWVudCwgcmVuZGVyVHJlZVBvc2l0aW9uKCkucGFyZW50
KCkpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
CmluZGV4IGY5NTI3MmE0ZDVkOGE4OWI1NjBjNmRlYTgwZjY4OWMwMWYxYTY2NmUuLjRiNmM1MzBi
ZTlkY2QwZWY0ZTUyMGE4ZjEwZjJiYzQ2YTEzNWZkYWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50LmNwcApAQCAtMjUwLDEwICsyNTAsMTMgQEAgdm9p
ZCBTVkdBbmltYXRlTW90aW9uRWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgIGlm
ICghdGFyZ2V0RWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlckVsZW1l
bnQqIHJlbmRlcmVyID0gdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkgewotICAgICAgICByZW5k
ZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRhdGUoKTsKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwotICAgIH0KKyAgICBhdXRvIHVwZGF0ZVRhcmdldEVsZW1lbnQgPSBbXShTVkdFbGVtZW50JiBl
bGVtZW50KSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gZWxlbWVudC5yZW5kZXJlcigp
KQorICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7CisgICAg
ICAgIGVsZW1lbnQuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAg
ICB9OworCisgICAgdXBkYXRlVGFyZ2V0RWxlbWVudCgqdGFyZ2V0RWxlbWVudCk7CiAKICAgICBB
ZmZpbmVUcmFuc2Zvcm0qIHRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSA9IHRhcmdldEVsZW1l
bnQtPnN1cHBsZW1lbnRhbFRyYW5zZm9ybSgpOwogICAgIGlmICghdGFyZ2V0U3VwcGxlbWVudGFs
VHJhbnNmb3JtKQpAQCAtMjY1LDEwICsyNjgsNyBAQCB2b2lkIFNWR0FuaW1hdGVNb3Rpb25FbGVt
ZW50OjphcHBseVJlc3VsdHNUb1RhcmdldCgpCiAgICAgICAgIGlmICghdHJhbnNmb3JtIHx8ICp0
cmFuc2Zvcm0gPT0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9ybSkKICAgICAgICAgICAgIGNv
bnRpbnVlOwogICAgICAgICAqdHJhbnNmb3JtID0gKnRhcmdldFN1cHBsZW1lbnRhbFRyYW5zZm9y
bTsKLSAgICAgICAgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gaW5zdGFuY2UtPnJlbmRl
cmVyKCkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgp
OwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRS
ZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIHVwZGF0
ZVRhcmdldEVsZW1lbnQoaW5zdGFuY2UpOwogICAgIH0KIH0KIApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAppbmRleCBiNGU3OTk1OGM1YjEzMDM1NWY3OTk5NGIxMTgz
YzUzZjkyY2VkNjliLi5hZmQ2MGViZTA4OGU0M2Q3N2E2ODY4YTVjNTQ2N2Y0ZDE4NTAwNTY0IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcApAQCAtNjcsOCArNjcs
NyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7CiAKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVu
ZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJu
OwogICAgIH0KIApAQCAtODIsOCArODEsNyBAQCB2b2lkIFNWR0NsaXBQYXRoRWxlbWVudDo6Y2hp
bGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5z
b3VyY2UgPT0gQ2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAK
LSAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWlu
QXJlRGlydHkoKTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0NsaXBQYXRoRWxl
bWVudDo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJl
bmRlclRyZWVQb3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29t
cG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAppbmRleCAwY2Q0ZmQ0MWU1M2Fk
MTU4MjgzMjhlM2IxM2Y4MmVlNjA2NWUyZDlkLi5iYjZlNTI1NjMyZDc1ODNlZjFmOGJlZWVjYjM0
YjZmMWVjNzJmNTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQ29tcG9uZW50
VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdD
b21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgdm9p
ZCBTVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW0KIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQo
dGhpcyk7CisgICAgICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52
YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCh0aGlzKTsKICAgICAgICAgcmV0dXJuOwogICAg
IH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCmluZGV4IDQyNGZiMDgzMjkxM2M4ZDllNjgy
ZTdkYzNmZWFkZjE5MmNjMGM0MjAuLjQxNDgxNTA4NWRiY2FhMzk0ZGMxMWY5MDUwZWQzOGM3MGI4
MTRiNTMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAKQEAgLTg4Myw2ICs4ODMsMjIgQEAg
dm9pZCBTVkdFbGVtZW50Ojpjb2xsZWN0UHJlc2VudGF0aW9uYWxIaW50c0ZvckF0dHJpYnV0ZShj
b25zdCBRdWFsaWZpZWROYW1lJiBuYW0KICAgICAgICAgYWRkUHJvcGVydHlUb1ByZXNlbnRhdGlv
bmFsSGludFN0eWxlKHN0eWxlLCBwcm9wZXJ0eUlELCB2YWx1ZSk7CiB9CiAKK3ZvaWQgU1ZHRWxl
bWVudDo6c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKQoreworICAgIGVu
c3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkodHJ1ZSk7CisgICAgaW52YWxpZGF0ZVN0eWxlKCk7Cit9CisKK3ZvaWQgU1ZHRWxlbWVu
dDo6aW52YWxpZGF0ZVNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbklmTmVlZGVkKCkKK3sKKyAg
ICBpZiAoIWVsZW1lbnREYXRhKCkgfHwgIWVsZW1lbnREYXRhKCktPnN2Z1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCkpCisgICAgICAgIHJldHVybjsKKworICAgIGlmIChhdXRvIHJl
bmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAg
IGVsZW1lbnREYXRhKCktPnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KGZh
bHNlKTsKK30KKwogdm9pZCBTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIENTU1Byb3BlcnR5SUQgcHJvcElkID0gY3Nz
UHJvcGVydHlJZEZvclNWR0F0dHJpYnV0ZU5hbWUoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVt
ZW50LmgKaW5kZXggZmM2NjE0YmQ0NjkzMjlhOWM0NjRkZjllOTM0NmY4NzlkOTc3YmZkNS4uZjc4
ZDIxMTM0ODk4ZjBjMjc1MWJiMzRhYWJlZjNjMmMwMzVmYjgyNyAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxl
bWVudC5oCkBAIC04NCw2ICs4NCw4IEBAIHB1YmxpYzoKIAogICAgIGlubGluZSB2b2lkIHNldEFu
aW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5KCk7CiAgICAgaW5saW5lIHZvaWQgc2V0UHJlc2Vu
dGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KCk7CisgICAgdm9pZCBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOworICAgIHZvaWQgaW52YWxpZGF0ZVNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbklmTmVlZGVkKCk7CiAKICAgICAvLyBUaGUgaW5zdGFuY2VzIG9mIGFuIGVs
ZW1lbnQgYXJlIGNsb25lcyBtYWRlIGluIHNoYWRvdyB0cmVlcyB0byBpbXBsZW1lbnQgPHVzZT4u
CiAgICAgY29uc3QgV2Vha0hhc2hTZXQ8U1ZHRWxlbWVudD4mIGluc3RhbmNlcygpIGNvbnN0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmggYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaAppbmRleCBiNGMxNzdmODlmMWJkZjFl
MTczNjFmZDFkNmVkOTI2M2IwZWZhMmE4Li4zMGQ4MzYyM2Y0N2U0YWM3YTU1M2QwZjU3Y2M0NTEy
NWFlYjQzNDE1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGlu
ZXMuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudElubGluZXMuaApAQCAtMzgs
NyArMzgsNiBAQCBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRBbmltYXRlZFNWR0F0dHJpYnV0
ZXNBcmVEaXJ0eSgpCiBpbmxpbmUgdm9pZCBTVkdFbGVtZW50OjpzZXRQcmVzZW50YXRpb25hbEhp
bnRTdHlsZUlzRGlydHkoKQogewogICAgIGVuc3VyZVVuaXF1ZUVsZW1lbnREYXRhKCkuc2V0UHJl
c2VudGF0aW9uYWxIaW50U3R5bGVJc0RpcnR5KHRydWUpOwotICAgIC8vIFRyaWdnZXIgc3R5bGUg
cmVjYWxjdWxhdGlvbiBmb3IgImVsZW1lbnRzIGFzIHJlc291cmNlIiAoZS5nLiByZWZlcmVuY2Vk
IGJ5IGZlSW1hZ2UpLgogICAgIGludmFsaWRhdGVTdHlsZSgpOwogfQogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcAppbmRleCAwMWM2NDAwZTIzNDRjOTM1ZWYyODc2NjQ2
NDQzMzc3ZTg4YWNkNDYyLi4wYTFiNDNhN2FkMzUyZjkyYThlOTE3ZTFhZWE4MmFkNTEyOTFiOTU5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKQEAgLTg5LDcgKzg5
LDcgQEAgdm9pZCBTVkdGRUJsZW5kRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNo
YW5nZWQoYXR0ck5hbWUpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRy
KTsKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNl
c0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIH0KICAgICAgICAgcmV0dXJuOwog
ICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3Bw
CmluZGV4IGEyYjhjNjA3NDU3NDQ4Yzg1NTIxYzNiYzEyZDZmOTM5Y2EwNWM2YzIuLjkyYzcwMDM2
NGY4OWViYzRkMmY4NGU0MDM1NzExMmJiMmFjYzZkNjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50LmNwcApAQCAtODcsNyArODcsNyBAQCB2b2lkIFNW
R0ZFQ29sb3JNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmli
dXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJk
KCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAg
ICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6dHlwZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnZh
bHVlc0F0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFt
ZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCmluZGV4
IDE0OTVjY2ZiOTNlODczYjYyMjMyNzRmYzUyZmFiNzBhMjU0YmY4MWUuLjY0NjA0MmZkNGE0NDUy
YjEyZTZhZjQ2ZmRjYTIyZDY2YjUzOGJiNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGRUNvbXBvc2l0ZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUNvbXBvc2l0ZUVsZW1lbnQuY3BwCkBAIC0xMTgsNyArMTE4LDcgQEAgdm9pZCBTVkdGRUNvbXBv
c2l0ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwog
ICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW4yQXR0cikKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIGVsc2Ug
ewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjprMUF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmsyQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azNBdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjprNEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6
Om9wZXJhdG9yQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0
dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVs
ZW1lbnQuY3BwCmluZGV4IGJkYjFjZWZkY2M5YmYwZWUxMTg4OTQ3ODYxYTg3YjgyNzA5NDNkZWYu
LjRhODNhMTVhMDNjYzU5MDA5MjNkM2EyNzE5NzVjOThhYWUwMTE3ZDEgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50LmNwcApAQCAtMTYwLDE0
ICsxNjAsMTQgQEAgdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c2V0T3JkZXIoZmxv
YXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX29yZGVyWC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwog
ICAgIG1fb3JkZXJZLT5zZXRCYXNlVmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOwor
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQg
U1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldEtlcm5lbFVuaXRMZW5ndGgoZmxvYXQgeCwg
ZmxvYXQgeSkKIHsKICAgICBtX2tlcm5lbFVuaXRMZW5ndGhYLT5zZXRCYXNlVmFsSW50ZXJuYWwo
eCk7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAg
IGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogfQogCiB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQpAQCAtMTc1LDcgKzE3NSw3IEBA
IHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3Vh
cmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0
ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3JkZXJBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjprZXJuZWxNYXRyaXhBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAg
ICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAg
ZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmVkZ2VNb2Rl
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6ZGl2aXNvckF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmJpYXNBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRYQXR0cgog
ICAgICAgICAgICAgICAgIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp0YXJnZXRZQXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIgfHwgYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OnByZXNlcnZlQWxwaGFBdHRyKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFRGlmZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHAKaW5kZXggMzBlOTEyOGYyNzIzNGIwNjIz
ZjI2NjY0MDI1OGM2ZGE3YjQ1MzEzZS4uMTNkM2NjNmZiZWY4YzEyODhkYzEzNjhkYmM4MWZlZWVj
OTQ0ZTdiYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudC5jcHAKQEAgLTEyOCw3ICsxMjgsNyBAQCB2b2lkIFNWR0ZFRGlmZnVzZUxpZ2h0
aW5nRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRy
TgogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkg
ewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAg
ICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlk
YXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdO
YW1lczo6ZGlmZnVzZUNvbnN0YW50QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFj
ZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIp
OwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCmlu
ZGV4IGY5ZGI4NWFlYTkwZTQ2MTE1YWYzOGFjMGU4OTMwZmJmYmMyNjJmNDkuLmEyOTMzYmMzZTIy
OWJmNDUxYmI0MmE3OGM0MDE3MDQ5ZDk3YWM2OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwCkBAIC0xMDIsNyArMTAyLDcgQEAg
dm9pZCBTVkdGRURpc3BsYWNlbWVudE1hcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck4KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRy
IHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjppbjJBdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0
ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OnhDaGFubmVsU2VsZWN0b3JBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjp5Q2hhbm5l
bFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6c2NhbGVBdHRyKTsKICAgICAg
ICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRvd0VsZW1lbnQuY3BwCmluZGV4IDQ1OTkxMGU1NGQyZjYw
NTZlYTI1OWIxODgzOWIzZTNlOWI1MzE2ODIuLmUxYWNkZjA5ZjM5MmUyYmNhMTdiMWE0NGU2NzJh
Nzc5ODIwNGFiYmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFk
b3dFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9wU2hhZG93RWxl
bWVudC5jcHAKQEAgLTU0LDcgKzU0LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpz
ZXRTdGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgt
PnNldEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJ
bnRlcm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpw
YXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3RyaW5n
JiB2YWx1ZSkKQEAgLTg5LDcgKzg5LDcgQEAgdm9pZCBTVkdGRURyb3BTaGFkb3dFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52
YWxpZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQuY3BwCmluZGV4IGI1ZjNjN2I2Y2VmZmQ2NWRmZDBhZTEx
YTRhOWIyYjJlMGQ4M2I4YTMuLjA3M2JkNzI0YmI5ZTM1ZjBiODBkNjJkZjljMDI5NTUzMmU5Njlk
MjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQu
Y3BwCkBAIC01Myw3ICs1Myw3IEBAIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50OjpzZXRT
dGREZXZpYXRpb24oZmxvYXQgeCwgZmxvYXQgeSkKIHsKICAgICBtX3N0ZERldmlhdGlvblgtPnNl
dEJhc2VWYWxJbnRlcm5hbCh4KTsKICAgICBtX3N0ZERldmlhdGlvblktPnNldEJhc2VWYWxJbnRl
cm5hbCh5KTsKLSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3Rv
ckNoYWluQXJlRGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnBh
cnNlQXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcm
IHZhbHVlKQpAQCAtODcsNyArODcsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogewogICAg
IGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAg
ICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52
YWxpZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1h
Z2VFbGVtZW50LmNwcAppbmRleCAxYWQ1MTY1OTAxYTU1MjU2ZWI0MWEyNTMwMmRhNWZlMGExYTNh
MDMzLi5jYzMyZDI5MDJiMWQ3ZjQ4ZWFiOTUyZjNiY2YzMTMzNjYxMjcxYmNhIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGRUltYWdlRWxlbWVudC5jcHAKQEAgLTExMSw3ICsxMTEsNyBAQCB2b2lk
IFNWR0ZFSW1hZ2VFbGVtZW50OjpidWlsZFBlbmRpbmdSZXNvdXJjZSgpCiAgICAgfSBlbHNlIGlm
IChpczxTVkdFbGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpKQogICAgICAgICBkb3duY2FzdDxTVkdF
bGVtZW50PigqdGFyZ2V0LmVsZW1lbnQpLmFkZFJlZmVyZW5jaW5nRWxlbWVudCgqdGhpcyk7CiAK
LSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6cGFyc2VBdHRyaWJ1dGUoY29u
c3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUpCkBAIC0xMzAs
NyArMTMwLDcgQEAgdm9pZCBTVkdGRUltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09
IFNWR05hbWVzOjpwcmVzZXJ2ZUFzcGVjdFJhdGlvQXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52
YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCmlu
ZGV4IDI0ODY2NjRlZTYyNDkxYjBlMTcxM2Y3NjM3NjBhODY4ZTlhOGRkYzMuLmU2ODY0YTdiYWVm
YTc0Y2M2YjczOWExN2E3ZDcyNWQxZDdmNGJmNzUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRUxpZ2h0RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
TGlnaHRFbGVtZW50LmNwcApAQCAtMTU3LDEyICsxNTcsOCBAQCB2b2lkIFNWR0ZFTGlnaHRFbGVt
ZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoYW5nZSkKIAogICAgIGlm
IChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAg
cmV0dXJuOwotICAgIFJlZlB0ciBwYXJlbnQgPSBwYXJlbnROb2RlKCk7Ci0gICAgaWYgKCFwYXJl
bnQpCi0gICAgICAgIHJldHVybjsKLSAgICBSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHBhcmVu
dC0+cmVuZGVyZXIoKTsKLSAgICBpZiAocmVuZGVyZXIgJiYgcmVuZGVyZXItPmlzU1ZHUmVzb3Vy
Y2VGaWx0ZXJQcmltaXRpdmUoKSkKLSAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JM
YXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworCisgICAgU1ZH
RmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRlRmlsdGVyUHJpbWl0
aXZlUGFyZW50KHRoaXMpOwogfQogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdl
Tm9kZUVsZW1lbnQuY3BwCmluZGV4IDVlYmRjYzlkZDE4YjUxN2Y2NjVlNmEwYTllNThkNjgyN2Vi
MjU3YmYuLjkzMDhiMjBiYjY1Y2YxODVlNmZmZGM1YTViYWE0NDhlYTNhMTFhMTcgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1lcmdlTm9kZUVsZW1lbnQuY3BwCkBAIC02Myw3ICs2Myw3
IEBAIHZvaWQgU1ZHRkVNZXJnZU5vZGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tu
b3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZH
TmFtZXM6OmluQXR0cik7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQo
KnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOwor
ICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGVG
aWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRU1vcnBob2xvZ3lFbGVtZW50LmNwcAppbmRleCA3OTA5
MjA3NGM0ZjE1ZmRlYWVmZmM2OTY4YTZkNmZiMjUzMzdlN2Y4Li5iYTU0YmE3OTIxNWM3YWY2Y2Ux
YTRkYTUwYjY2ZDFhNzdjZGNlNGZmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTW9y
cGhvbG9neUVsZW1lbnQuY3BwCkBAIC01Miw3ICs1Miw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5
RWxlbWVudDo6c2V0UmFkaXVzKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9yYWRpdXNYLT5z
ZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9yYWRpdXNZLT5zZXRCYXNlVmFsSW50ZXJuYWwo
eSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6cGFyc2VBdHRy
aWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0cmluZyYgdmFsdWUp
CkBAIC0xMDEsNyArMTAxLDcgQEAgdm9pZCBTVkdGRU1vcnBob2xvZ3lFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgIGlmIChQcm9w
ZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjppbkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
ICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6b3BlcmF0b3JB
dHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpyYWRpdXNBdHRyKTsKICAgICAgICAgICAgIHBy
aW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVPZmZzZXRFbGVtZW50LmNwcAppbmRleCA4NDNmOGRlNzdhYjhjODFkYmEzM2FmMjFkZjYwYzhk
MmU4Y2IyNzQzLi5lYjZkN2NiZjhkODBjNmFiOGMyZjhlOTA0YzU3YTgzZjdmMjBiZTRhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVPZmZzZXRFbGVtZW50LmNwcApAQCAtNzIsNyArNzIsNyBA
QCB2b2lkIFNWR0ZFT2Zmc2V0RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93
bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFy
ZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVz
b3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0Vs
ZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1l
bnQuY3BwCmluZGV4IGI2OGJhMzkwNTQ0YWE2NWJmYjlkZWQ5Njc0ZTZlY2UyYzI5ODc4YTIuLmU4
N2M1MTBkNWM3NzYwYTgyYWU1YWUwODI5NTY5OWU1NTdjY2FhYjEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKQEAgLTEzOCw3
ICsxMzgsNyBAQCB2b2lkIFNWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0
ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cgogICAgIGlmIChQcm9wZXJ0eVJlZ2lz
dHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFs
aWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05h
bWVzOjppbkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRT
VkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3BlY3VsYXJDb25zdGFudEF0
dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyRXhwb25lbnRBdHRyIHx8IGF0dHJO
YW1lID09IFNWR05hbWVzOjpzdXJmYWNlU2NhbGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
OjprZXJuZWxVbml0TGVuZ3RoQXR0cik7CiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVD
aGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRp
bGVFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVRpbGVFbGVtZW50LmNwcApp
bmRleCBlNDYxN2RlOTUyZDk5ZWJjYzc2ODgxMzdmMWU3M2ZiZTViZDA2OWNmLi5iOTkzMDdjNGJl
NmNiMTFiNWIzMzE5ZDYzNWE0MWE3NGIxYmM1ZTM4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZF
VGlsZUVsZW1lbnQuY3BwCkBAIC02MSw3ICs2MSw3IEBAIHZvaWQgU1ZHRkVUaWxlRWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBp
ZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAg
ICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIpOwogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwor
ICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmls
dGVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyRWxlbWVudC5jcHAK
aW5kZXggODBkMzY2ZDFkNDllMDQxOGNiM2EwY2Q2MzgxZjU5NTUxNjVlMzVjNC4uMjA0YTYxYjQ3
MTg2YTc4YTYwYWNlY2Q2YTMyYzE1N2NmMmIwYzdkNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
aWx0ZXJFbGVtZW50LmNwcApAQCAtOTksOCArOTksNyBAQCB2b2lkIFNWR0ZpbHRlckVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
fQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
IHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIHJl
bmRlcmVyLT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTQsOCAr
MTEzLDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiBSZW5k
ZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRmlsdGVyRWxlbWVudDo6Y3JlYXRlRWxlbWVudFJlbmRl
cmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlvbiYpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuY3BwCmluZGV4IDAwZTRlNjk4NjY0NTMyOTIyZDYzNzVlNzdhZDQzYjI4NWM3
NDQ5NGEuLjI0MDI1NDZmNGY0MjA3MDU3YTY1NGVlNGQwODBiMGFlNDYzNDc0OWEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFy
ZEF0dHJpYnV0ZXMuY3BwCkBAIC03OCw3ICs3OCw3IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZl
U3RhbmRhcmRBdHRyaWJ1dGVzOjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
CiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUp
KSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAg
ICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTkxLDcgKzkxLDcgQEAg
dm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2gKIAogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwotICAgIGludmFsaWRhdGUo
KTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiBS
ZW5kZXJQdHI8UmVuZGVyRWxlbWVudD4gU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1
dGVzOjpjcmVhdGVFbGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVu
ZGVyVHJlZVBvc2l0aW9uJikKQEAgLTEwNyw3ICsxMDcsNyBAQCBib29sIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cmVuZGVyZXJJc05lZWRlZChjb25zdCBSZW5kZXJTdHls
ZSYgcwogICAgIHJldHVybiBmYWxzZTsKIH0KIAotdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0
aXZlUGFyZW50KFNWR0VsZW1lbnQqIGVsZW1lbnQpCit2b2lkIFNWR0ZpbHRlclByaW1pdGl2ZVN0
YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdFbGVt
ZW50KiBlbGVtZW50KQogewogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwpAQCAt
MTIwLDcgKzEyMCw3IEBAIHZvaWQgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudChTVkdF
bGVtZW50KiBlbGVtZW50KQogICAgIGlmICghcmVuZGVyZXIgfHwgIXJlbmRlcmVyLT5pc1NWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCiAgICAgICAgIHJldHVybjsKIAotICAgIFJlbmRlclNW
R1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJl
bmRlcmVyLCBmYWxzZSk7CisgICAgZG93bmNhc3Q8U1ZHRWxlbWVudD4oKnBhcmVudCkuc2V0U1ZH
UmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcy5o
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCmluZGV4IDdkZjkyMDZmYWE5MWVhZmVmZWZkYTUyOWU5MmY2OWM1MWYzZDhlZDkuLjMxMDNj
YzZhYzIzM2UwZmQzYjJmYjFlOTc5MDQ5YTI4YjdiNmY4YmIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgK
QEAgLTU1LDYgKzU1LDggQEAgcHVibGljOgogICAgIHZpcnR1YWwgVmVjdG9yPEF0b21TdHJpbmc+
IGZpbHRlckVmZmVjdElucHV0c05hbWVzKCkgY29uc3QgeyByZXR1cm4geyB9OyB9CiAgICAgdmly
dHVhbCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBmaWx0ZXJFZmZlY3QoY29uc3QgU1ZHRmlsdGVyQnVp
bGRlciYsIGNvbnN0IEZpbHRlckVmZmVjdFZlY3RvciYpIGNvbnN0ID0gMDsKIAorICAgIHN0YXRp
YyB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOworCiBw
cm90ZWN0ZWQ6CiAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzKGNvbnN0
IFF1YWxpZmllZE5hbWUmLCBEb2N1bWVudCYpOwogCkBAIC02Miw3ICs2NCw2IEBAIHByb3RlY3Rl
ZDoKICAgICB2b2lkIHN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYpIG92
ZXJyaWRlOwogICAgIHZvaWQgY2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJikgb3Zl
cnJpZGU7CiAKLSAgICB2b2lkIGludmFsaWRhdGUoKTsKICAgICB2b2lkIHByaW1pdGl2ZUF0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0cmlidXRlTmFtZSk7CiAKIHByaXZh
dGU6CkBAIC04MSwxNCArODIsNiBAQCBwcml2YXRlOgogICAgIFJlZjxTVkdBbmltYXRlZFN0cmlu
Zz4gbV9yZXN1bHQgeyBTVkdBbmltYXRlZFN0cmluZzo6Y3JlYXRlKHRoaXMpIH07CiB9OwogCi12
b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZHRWxlbWVudCopOwotCi1pbmxp
bmUgdm9pZCBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGUo
KQotewotICAgIGlmIChhdXRvKiBwcmltaXRpdmVSZW5kZXJlciA9IHJlbmRlcmVyKCkpCi0gICAg
ICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZh
bGlkYXRpb24oKnByaW1pdGl2ZVJlbmRlcmVyKTsKLX0KLQogaW5saW5lIHZvaWQgU1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZSkKIHsKICAgICBpZiAoYXV0byogcHJpbWl0aXZl
UmVuZGVyZXIgPSByZW5kZXJlcigpKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWdu
T2JqZWN0RWxlbWVudC5jcHAKaW5kZXggZTM0OWJjNzE5NmMwNGNjMWYyZWJlYzI5NzUxNDFkYjZj
NGZmYjA1MC4uZWNiM2JiZjg5NjA3Y2Q3ZDAzMjU3NjQ0ZThiNjJhY2IwNjU1OGMxYiAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQuY3BwCkBAIC04MSw4
ICs4MSw3IEBAIHZvaWQgU1ZHRm9yZWlnbk9iamVjdEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIGVsc2UgewogICAgICAg
ICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp4QXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6eUF0dHIpOwogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3Jt
YXRpb24oKTsKLSAgICAgICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIo
KSkKLSAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBh
cmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICB9CiAgICAgICAgIHJl
dHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCmlu
ZGV4IDU2NDgwZTkxNmRmZmIzNWE5OTZkNGI0NTlmMWNkZGU2NGI0MGUxYmQuLmMwYmYyMWU0NDI0
YTM2Mzg4YzdmMjE2NzI3MTU1MzBjMWYyZDE4M2IgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdHZW9tZXRyeUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdH
ZW9tZXRyeUVsZW1lbnQuY3BwCkBAIC0xNTAsOCArMTUwLDcgQEAgdm9pZCBTVkdHZW9tZXRyeUVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7
CiAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6cGF0aExlbmd0aEF0dHIpOwog
ICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAg
aWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRl
clNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24o
KnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGly
dHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
ZGllbnRFbGVtZW50LmNwcAppbmRleCA3NzRjMTFlM2Q5ODczYjkzY2RlOTY4YjM3ZWIzNDdjNzY1
ODI0ODNlLi5lMDljMWQ5NTlkZTg5ZDZkMzgyYjFjNzc2N2JhMzBmYzMyN2E2NTAwIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHR3JhZGllbnRFbGVtZW50LmNwcApAQCAtNzksOCArNzksNyBAQCB2
b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
OTQsOCArOTMsNyBAQCB2b2lkIFNWR0dyYWRpZW50RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNv
bnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRD
aGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVy
T2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0K
IAogR3JhZGllbnRDb2xvclN0b3BzIFNWR0dyYWRpZW50RWxlbWVudDo6YnVpbGRTdG9wcygpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwCmluZGV4IGRjMTA4ZTViMjNj
NDZkYTk1NjAwYTAyYWFjNjIwN2VkNWI2NjU2OTYuLjAzMTYzZTRmMzlmZGNhMWQ1ZDgxZWM3Nzg3
NWZmZDBiMWM4MzQ0YjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGlj
c0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdHcmFwaGljc0VsZW1lbnQu
Y3BwCkBAIC0xMzYsMTAgKzEzNiw5IEBAIHZvaWQgU1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnRyYW5zZm9ybUF0dHIpOwogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKIAotICAgICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKKyAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0
aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3Jt
VXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFu
ZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAg
ICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIAogICAgICAgICBy
ZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcAppbmRleCAx
NjIzZTczOWNjMDNhZmE0ODJkZWVhNjU1YWM2ZTllNWYwM2E1MmIwLi5iZTA0NDkyN2NjODFmOTBk
NDExNDg2ZTk2NzA2Y2E3MmJkMDdhMTQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHSW1hZ2VFbGVt
ZW50LmNwcApAQCAtOTksMTUgKzk5LDE1IEBAIHZvaWQgU1ZHSW1hZ2VFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICAgICAg
dXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIAogICAgICAgICAgICAgaWYgKGF1
dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgICAgIGlmIChk
b3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZpZXdwb3J0KCkp
Ci0gICAgICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgICAgICAgICBp
ZiAoIWRvd25jYXN0PFJlbmRlclNWR0ltYWdlPigqcmVuZGVyZXIpLnVwZGF0ZUltYWdlVmlld3Bv
cnQoKSkKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgICAgIHNldFNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgICAgICB9CiAgICAg
ICAgIH0gZWxzZSBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikKICAgICAgICAgICAgIHNldFByZXNlbnRhdGlvbmFs
SGludFN0eWxlSXNEaXJ0eSgpOwogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIEFTU0VSVChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpOwotICAgICAgICAg
ICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgICAg
ICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxp
ZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcAppbmRleCBlZmI5YjhiY2ZkOWNjOTVlYWE0OTNi
ZmUxYWFkOTE5Y2E3OWNiM2M1Li4yMzE5ZDVlY2NkN2VmMjM0NDZmZGU4NGNlZDcyYTA4N2E2OTk3
YzcwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKQEAgLTc0LDEwICs3NCw5
IEBAIHZvaWQgU1ZHTGluZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlm
aWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3Vh
cmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwog
Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PExlZ2FjeVJlbmRlclNWR1No
YXBlPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5lZWRz
U2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQor
ICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAgICAg
ICAgc3RhdGljX2Nhc3Q8TGVnYWN5UmVuZGVyU1ZHU2hhcGUqPihyZW5kZXJlciktPnNldE5lZWRz
U2hhcGVVcGRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50LmNwcAppbmRleCA4NDhmNmEyMmY4ZTI1MTM2Njdi
YjA0Y2JiYjk5ZjgwOWEyNjhmYzdmLi4xY2Q1MDFiMDJlNjlkNDYyNzhlNTdjZWI5YjhlY2ZmYTI5
ZjFjYjlhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVt
ZW50LmNwcApAQCAtODMsOCArODMsNyBAQCB2b2lkIFNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6
c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZQogICAgIGlm
IChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAg
ICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRl
UmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCog
b2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQo
KTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R01hcmtlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR01hcmtlckVsZW1lbnQu
Y3BwCmluZGV4IDBiNDNiYjg0MmU1ZTM2MmFhZWY4NzlmZDYwNjNhYTU3NmVhZTIxYWIuLjk5NDhm
MTk4NzczODI1YzkwYzZlMDFmYjgzZjNiYjAxZThmZjk3NzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHTWFya2VyRWxlbWVudC5jcHAKQEAgLTk4LDE0ICs5OCwxMiBAQCB2b2lkIFNWR01hcmtlckVs
ZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUp
CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNBbmltYXRlZExlbmd0aEF0dHJpYnV0ZShhdHRyTmFt
ZSkpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogICAgIAogICAgIGlm
IChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0gICAgICAg
IGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmpl
Y3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTExOSw4ICsxMTcs
NyBAQCB2b2lkIFNWR01hcmtlckVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENo
YW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3Vy
Y2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2Jq
ZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAg
IHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIFN0cmluZyBT
VkdNYXJrZXJFbGVtZW50OjpvcmllbnQoKSBjb25zdApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxl
bWVudC5jcHAKaW5kZXggNjNiYTcyYjA1MzgyZmY1OGJlYTA1MmRjYmZlZjU0NzFiYTk0OTEwNC4u
MjU3NzgzYjM0ZWNiMjU4Y2UyN2ZlNDE0Y2E4YjZmZTg2OTFkMzk3MiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHTWFza0VsZW1lbnQuY3BwCkBAIC0xMDUsOCArMTA1LDcgQEAgdm9pZCBTVkdNYXNrRWxl
bWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkK
ICAgICB9CiAKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkpIHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCkBAIC0xMjAsOCArMTE5LDcgQEAgdm9pZCBTVkdNYXNrRWxlbWVudDo6Y2hpbGRyZW5DaGFu
Z2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0g
Q2hpbGRDaGFuZ2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAo
UmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5l
ZWRzTGF5b3V0KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHko
KTsKIH0KIAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR01hc2tFbGVtZW50OjpjcmVhdGVF
bGVtZW50UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0
aW9uJikKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQuY3BwCmluZGV4IDZhMGNmOTM2ZDM1
N2E5ZWE4NTc5ZTNmNDc1ZWRiODcwMjNhNTgwZWMuLmQwYjVkZjIxZDE2YWM0ZGMxMzBmNDAyOTFi
ZDQ1YTk5ZmQzODQ2ZjcgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxl
bWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcApAQCAt
NzAsMTAgKzcwLDkgQEAgdm9pZCBTVkdQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGludmFsaWRhdGVNUGF0aERlcGVuZGVuY2ll
cygpOwogCi0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25jYXN0PFJlbmRlclNWR1Bh
dGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNT
aGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Cisg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgICAg
ICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdQYXRoKj4ocmVuZGVyZXIpLT5zZXROZWVkc1NoYXBlVXBk
YXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAKICAgICAgICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVs
ZW1lbnQuY3BwCmluZGV4IDZiNTRlN2VmY2Q4MzM0NGMzODczNWE3MWExZGMyMGM1ZDQ4YmQ4NjUu
LmI0NzU4OWZmOGZjYTdjYTE2ODM5NmJlOTYxODRlZDY0ZWQ5NzA1YTYgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR1BhdHRlcm5FbGVtZW50LmNwcApAQCAtMTE3LDggKzExNyw3IEBAIHZvaWQgU1ZH
UGF0dGVybkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck5hbWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRy
aWJ1dGUoYXR0ck5hbWUpIHx8IFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRy
TmFtZSkgfHwgU1ZHVVJJUmVmZXJlbmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewot
ICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAg
ICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFu
Y2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMzIs
OCArMTMxLDcgQEAgdm9pZCBTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAog
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR1BhdHRlcm5FbGVtZW50OjpjcmVhdGVFbGVtZW50
UmVuZGVyZXIoUmVuZGVyU3R5bGUmJiBzdHlsZSwgY29uc3QgUmVuZGVyVHJlZVBvc2l0aW9uJikK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwCmluZGV4IDZiZGViZmE3YTQ5NTI0Njdk
OTA1NjUwNjg5Yzc1ZWYxOGUxMTBlYzMuLjgwZWQwM2ZjYTRiN2MzNjY4NTQwOTVjNmRlY2I3YzU2
YWMzZmZlMzAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcApAQCAtNTcsMTEg
KzU3LDEwIEBAIHZvaWQgU1ZHUG9seUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6cG9pbnRzQXR0cik7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IGRvd25j
YXN0PFJlbmRlclNWR1BhdGg+KHRoaXMtPnJlbmRlcmVyKCkpKSB7Ci0gICAgICAgICAgICBJbnN0
YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgICAgIHJlbmRlcmVy
LT5zZXROZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6
bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0g
ICAgICAgIH0KKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7
CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAg
ICAgICBzdGF0aWNfY2FzdDxSZW5kZXJTVkdQYXRoKj4ocmVuZGVyZXIpLT5zZXROZWVkc1NoYXBl
VXBkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1JhZGlhbEdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggZTVlMjFhZmVlOWUzZjU2YjE4NzhjZDNl
MmU5MTk4NDA0ZjQ5ODljZS4uMDc0YTc2Nzc5ZDdkY2IxMDkwN2Q2ZTcwZGVlMzBiYmVjMzA5MmMz
ZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1JhZGlhbEdyYWRpZW50RWxlbWVudC5j
cHAKQEAgLTg5LDggKzg5LDcgQEAgdm9pZCBTVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAgICBpZiAoUHJv
cGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVwZGF0ZVJlbGF0
aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVj
dCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7Cisg
ICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdF
bGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVtZW50LmNwcAppbmRleCA5
YzZhN2U4M2JlNzkyMTYxN2UyNTljYTdkM2ZjOGU5YTU1ZTM1OGQ4Li4zMzE4YmI0NzIzNTViYWZh
ZTk2MDI4ZDZiMzc1Mzg1ZmU5NThlNmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHU1ZHRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1NWR0VsZW1lbnQu
Y3BwCkBAIC0xMzcsOCArMTM3LDcgQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzZXRDdXJyZW50VHJh
bnNsYXRlKGNvbnN0IEZsb2F0UG9pbnQmIHRyYW5zbGF0aW9uKQogCiB2b2lkIFNWR1NWR0VsZW1l
bnQ6OnVwZGF0ZUN1cnJlbnRUcmFuc2xhdGUoKQogewotICAgIGlmIChSZW5kZXJPYmplY3QqIG9i
amVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgIGlmIChwYXJl
bnROb2RlKCkgPT0gJmRvY3VtZW50KCkgJiYgZG9jdW1lbnQoKS5yZW5kZXJWaWV3KCkpCiAgICAg
ICAgIGRvY3VtZW50KCkucmVuZGVyVmlldygpLT5yZXBhaW50KCk7CiB9CkBAIC0yMTEsMTYgKzIx
MCwyOCBAQCB2b2lkIFNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQg
Z3VhcmQoKnRoaXMpOwogICAgICAgICBzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHko
KTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQotICAg
ICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJj
ZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFt
ZXM6OndpZHRoQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aGVpZ2h0QXR0cikgeworICAg
ICAgICAgICAgLy8gRklYTUU6IHRyeSB0byBnZXQgcmlkIG9mIHRoaXMgY3VzdG9tIGhhbmRsaW5n
IG9mIGVtYmVkZGVkIFNWRyBpbnZhbGlkYXRpb24sIG1heWJlIHRocm91Z2ggYWJzdHJhY3Rpb24u
CisgICAgICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7Cisg
ICAgICAgICAgICAgICAgYm9vbCBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IGZhbHNlOworI2lmIEVO
QUJMRShMQVlFUl9CQVNFRF9TVkdfRU5HSU5FKQorICAgICAgICAgICAgICAgIGlmIChpczxSZW5k
ZXJTVkdSb290PihyZW5kZXJlcikgJiYgZG93bmNhc3Q8UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIp
LT5pc0VtYmVkZGVkVGhyb3VnaEZyYW1lQ29udGFpbmluZ1NWR0RvY3VtZW50KCkpCisgICAgICAg
ICAgICAgICAgICAgIGVtYmVkZGVkVGhyb3VnaEZyYW1lID0gdHJ1ZTsKKyNlbmRpZgorICAgICAg
ICAgICAgICAgIGlmIChpczxMZWdhY3lSZW5kZXJTVkdSb290PihyZW5kZXJlcikgJiYgZG93bmNh
c3Q8TGVnYWN5UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpLT5pc0VtYmVkZGVkVGhyb3VnaEZyYW1l
Q29udGFpbmluZ1NWR0RvY3VtZW50KCkpCisgICAgICAgICAgICAgICAgICAgIGVtYmVkZGVkVGhy
b3VnaEZyYW1lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICBpZiAoZW1iZWRkZWRUaHJvdWdoRnJh
bWUpCisgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyLT52aWV3KCkuc2V0TmVlZHNMYXlvdXQo
TWFya09ubHlUaGlzKTsKKyAgICAgICAgICAgIH0KKyAgICAgICAgfQorICAgICAgICBzZXRTVkdS
ZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAg
fQogCiAgICAgaWYgKFNWR0ZpdFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgeworICAg
ICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQogICAgICAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJT
VkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpy
ZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNo
YWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdTdG9wRWxlbWVudC5jcHAKaW5kZXggMjA3OTZhOTAyMDI4MGRiNTM2YzRiY2Y1NzQwNDRjN2Mz
ODc1M2QxMy4uYWQ4MzIzOTllNmRlZGMxMDkwODMzNjAwMTAxYTA4MWYyNGEwNzk1MSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1lbnQuY3BwCkBAIC02NiwxMCArNjYsOCBAQCB2b2lkIFNW
R1N0b3BFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0
dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9mZnNldEF0
dHIpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAg
ICAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9CisgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1RSZWZFbGVtZW50LmNwcAppbmRleCAyOTkxZGI2OTM0MjA2ZWE5MjdlYmQ4N2YzNzEx
MTc4MWU1MjE4MmRlLi5hYWRhYzk5ZTUwNTlhZGVkNTQyOWViYTNmZjRlOTUxYmI2NmM0YWY4IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVmRWxlbWVudC5jcHAKQEAgLTE4NCw4ICsxODQsNyBAQCB2
b2lkIFNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOwogICAgICAgICBidWlsZFBlbmRpbmdSZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byBy
ZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJj
ZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7
CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdU
ZXh0Q29udGVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50
RWxlbWVudC5jcHAKaW5kZXggYzE0NTNiZmM2MDQwOGM5NTA3NDYwNzdkNzYxZWUxNGQ3Mjk2NTFm
Yi4uZjg0YzM0YjQ0MDEyZGFhY2Q4Mzk1YjE2MmM0ODE3NjA1NGM3ZmVjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAKQEAgLTE4MywxMCArMTgzLDgg
QEAgdm9pZCBTVkdUZXh0Q29udGVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1l
czo6dGV4dExlbmd0aEF0dHIpCiAgICAgICAgICAgICBtX3NwZWNpZmllZFRleHRMZW5ndGggPSBt
X3RleHRMZW5ndGgtPmJhc2VWYWwoKS0+dmFsdWUoKTsKIAotICAgICAgICBpZiAoYXV0byByZW5k
ZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0
aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1h
cmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAg
ICAgICB9CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwor
ICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4
dFBhdGhFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQu
Y3BwCmluZGV4IGE3NDkxYzRkMWI4NWI5N2UzNDdmZDVhNzE0MTEzMTRjOTc4NDY2OTMuLjA3OGMw
Yzc4MTFiNzRiMDE2ZjEzNjc3NjgxM2NiNjM4YTZkMzFhNzEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwCkBAIC05MywxNSArOTMsMTMgQEAgdm9pZCBTVkdUZXh0
UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0
ck5hbWUpCiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6c3RhcnRPZmZzZXRBdHRy
KQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsKIAotICAg
ICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHVVJJUmVmZXJl
bmNlOjppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBidWlsZFBlbmRpbmdS
ZXNvdXJjZSgpOwotICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkp
Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcAppbmRleCBm
ZTIxZTY2YWY1NjY1Mjg5MGFiMzE4MDgzZGQ4MzE5Y2VmMWU2MjAyLi5iYWE1NTFkYzNmMzE0MGRl
MmU1MTVjZjk1NDQwYzRkZGRmNWU3Yzc5IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwCkBAIC0xMDYsOSArMTA2LDggQEAgdm9pZCBTVkdU
ZXh0UG9zaXRpb25pbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmll
ZE5hbWUmIGF0dHJOYW0KICAgICAgICAgaWYgKGF1dG8gcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJl
cigpKSB7CiAgICAgICAgICAgICBpZiAoYXV0byogdGV4dEFuY2VzdG9yID0gUmVuZGVyU1ZHVGV4
dDo6bG9jYXRlUmVuZGVyU1ZHVGV4dEFuY2VzdG9yKCpyZW5kZXJlcikpCiAgICAgICAgICAgICAg
ICAgdGV4dEFuY2VzdG9yLT5zZXROZWVkc1Bvc2l0aW9uaW5nVmFsdWVzVXBkYXRlKCk7Ci0gICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CiAgICAgICAgIH0KLQorICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKaW5kZXggYjllZGVmNjMxZTY2ZTYwZmY1
OGM3NTIzNDk4MWUyMTQ1MzBlNGZmYS4uYTAxZjZiYWRhMWMxZDZjMjVmODIwZjcyNmM4ZWNlZTgx
ODJlY2I2YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1VzZUVsZW1lbnQuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50LmNwcApAQCAtMTY1LDggKzE2
NSw3IEBAIHZvaWQgU1ZHVXNlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgICAgIGlmIChhdXRvIHRhcmdldENsb25lID0g
dGhpcy0+dGFyZ2V0Q2xvbmUoKSkKICAgICAgICAgICAgICAgICB0cmFuc2ZlclNpemVBdHRyaWJ1
dGVzVG9UYXJnZXRDbG9uZSgqdGFyZ2V0Q2xvbmUpOwogICAgICAgICB9Ci0gICAgICAgIGlmIChh
dXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBSZW5kZXJTVkdS
ZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5k
ZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdWaWV3RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQu
Y3BwCmluZGV4IGVjZmU0MzFhNDUzM2MzNmMwOGI1MDMyM2JjMjE0NGJjZWJlNDkwZTUuLmVhYTI2
NTE2NGM0OTZhZGVhMzgyNWUxYjM0OGUzZmE0MGQ5ZTBhNmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1ZpZXdFbGVtZW50LmNwcApAQCAtNTksMTIgKzU5LDEwIEBAIHZvaWQgU1ZHVmlld0VsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAg
ICAgIHJldHVybjsKIAogICAgIGlmIChTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChtX3RhcmdldEVsZW1lbnQpIHsKLSAgICAgICAgICAg
IG1fdGFyZ2V0RWxlbWVudC0+aW5oZXJpdFZpZXdBdHRyaWJ1dGVzKCp0aGlzKTsKLSAgICAgICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IG1fdGFyZ2V0RWxlbWVudC0+cmVuZGVyZXIoKSkKLSAg
ICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJl
c291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KLQorICAgICAgICBpZiAo
IW1fdGFyZ2V0RWxlbWVudCkKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgbV90YXJnZXRF
bGVtZW50LT5pbmhlcml0Vmlld0F0dHJpYnV0ZXMoKnRoaXMpOworICAgICAgICBtX3RhcmdldEVs
ZW1lbnQtPnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>455553</attachid>
            <date>2022-03-23 14:21:15 -0700</date>
            <delta_ts>2022-03-23 23:33:50 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-230296-20220323212113.patch</filename>
            <type>text/plain</type>
            <size>53684</size>
            <attacher name="Rob Buis">rbuis</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjkxNzY1CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggZmZiMzNhN2I0NWYzZjc4
NmY2MDE5ZjZmYzEyMTVjNWFiOWEzNWFmMC4uODViZjk5Y2JhOWJmZDhhMzNjMjkwYjNjNmUzNzlh
N2Y1YmFmNWYwMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDEyOSBAQAorMjAyMi0wMy0yMyAgUm9i
IEJ1aXMgIDxyYnVpc0BpZ2FsaWEuY29tPgorCisgICAgICAgIHNldE5lZWRzTGF5b3V0KCkgc2hv
dWxkIG5vdCBiZSBjYWxsZWQgd2hlbiBjaGFuZ2luZyB0aGUgU1ZHIHByb3BlcnRpZXMKKyAgICAg
ICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMDI5NgorCisgICAg
ICAgIFJldmlld2VkIGJ5IFNhaWQgQWJvdS1IYWxsYXdhLgorCisgICAgICAgIE1ha2UgU1ZHIG5v
dCBjYWxsIHNldE5lZWRzTGF5b3V0KCkgZnJvbSBvdXRzaWRlIFJlbmRlclRyZWVVcGRhdGVyOjp1
cGRhdGVSZW5kZXJUcmVlKCkgd2hlbiBhbiBhdHRyaWJ1dGUgY2hhbmdlcy4KKyAgICAgICAgVGhp
cyBlbnN1cmVzIHRoZXJlIHdpbGwgbm90IGJlIGEgZGlydHkgcmVuZGVyaW5nIHRyZWUgaW1tZWRp
YXRlbHkgYWZ0ZXIgdXBkYXRpbmcgaXQuCisKKyAgICAgICAgVGhlIHBhdGNoIGFsc28gdHJpZXMg
dG8gYXZvaWQgaW52YWxpZGF0ZSB3b3JkaW5nIHNpbmNlIHRoaXMgaXMgcXVpdGUgZ2VuZXJpYy4K
KworICAgICAgICBCYXNlZCBvbiB0aGUgaW5pdGlhbCBwYXRjaCBieSBTYWlkIEFib3UtSGFsbGF3
YS4KKworICAgICAgICAqIGRvbS9FbGVtZW50RGF0YS5oOgorICAgICAgICAoV2ViQ29yZTo6RWxl
bWVudERhdGE6OnN2Z1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5IGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkVsZW1lbnREYXRhOjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hh
aW5BcmVEaXJ0eSBjb25zdCk6CisgICAgICAgICogcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRy
ZWVVcGRhdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlclRyZWVVcGRhdGVyOjp1cGRh
dGVSZW5kZXJUcmVlKToKKyAgICAgICAgKiBzdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6U1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0
c1RvVGFyZ2V0KToKKyAgICAgICAgKiBzdmcvU1ZHQ2xpcFBhdGhFbGVtZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OlNWR0NsaXBQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdDbGlwUGF0aEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZCk6Cisg
ICAgICAgICogc3ZnL1NWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRWxlbWVudC5jcHA6CisgICAgICAg
IChXZWJDb3JlOjpTVkdFbGVtZW50OjpzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdFbGVtZW50OjppbnZhbGlkYXRlU1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluSWZOZWVkZWQpOgorICAgICAgICAqIHN2Zy9TVkdFbGVtZW50Lmg6
CisgICAgICAgICogc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmg6CisgICAgICAgIChXZWJDb3JlOjpT
VkdFbGVtZW50OjpzZXRQcmVzZW50YXRpb25hbEhpbnRTdHlsZUlzRGlydHkpOgorICAgICAgICAq
IHN2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUJsZW5k
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29sb3JN
YXRyaXhFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29sb3JNYXRyaXhFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVDb21wb3NpdGVF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29tcG9zaXRlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFQ29udm9sdmVNYXRyaXhFbGVt
ZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50Ojpz
ZXRPcmRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6
c2V0S2VybmVsVW5pdExlbmd0aCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUNvbnZvbHZlTWF0
cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZFRGlm
ZnVzZUxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdG
RURpc3BsYWNlbWVudE1hcEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVEaXNw
bGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcv
U1ZHRkVEcm9wU2hhZG93RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRURyb3BT
aGFkb3dFbGVtZW50OjpzZXRTdGREZXZpYXRpb24pOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVE
cm9wU2hhZG93RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUdhdXNz
aWFuQmx1ckVsZW1lbnQ6OnNldFN0ZERldmlhdGlvbik6CisgICAgICAgIChXZWJDb3JlOjpTVkdG
RUdhdXNzaWFuQmx1ckVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2
Zy9TVkdGRUltYWdlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUltYWdlRWxl
bWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRkVJbWFn
ZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdGRUxpZ2h0
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRUxpZ2h0RWxlbWVudDo6Y2hpbGRy
ZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c2V0UmFkaXVzKToKKyAgICAgICAgKFdl
YkNvcmU6OlNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZH
RkVPZmZzZXRFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZH
RkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVNw
ZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHRkVUaWxlRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGRVRpbGVFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHRmlsdGVyRWxlbWVu
dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKToKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlckVsZW1lbnQ6OmNoaWxkcmVuQ2hh
bmdlZCk6CisgICAgICAgICogc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXM6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVy
UHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAo
V2ViQ29yZTo6U1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlkYXRl
RmlsdGVyUHJpbWl0aXZlUGFyZW50KToKKyAgICAgICAgKFdlYkNvcmU6OmludmFsaWRhdGVGaWx0
ZXJQcmltaXRpdmVQYXJlbnQpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9TVkdGaWx0ZXJQcmlt
aXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXMuaDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlclBy
aW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZSk6IERlbGV0ZWQuCisgICAgICAg
ICogc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0dlb21ldHJ5
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR0dyYWRpZW50
RWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhZGllbnRFbGVtZW50Ojpj
aGlsZHJlbkNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdHcmFwaGljc0VsZW1lbnQuY3BwOgor
ICAgICAgICAoV2ViQ29yZTo6U1ZHR3JhcGhpY3NFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KToKKyAgICAgICAgKiBzdmcvU1ZHSW1hZ2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ltYWdlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NW
R0xpbmVFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVFbGVtZW50OjpzdmdB
dHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHTGluZWFyR3JhZGllbnRFbGVtZW50
LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR0xpbmVhckdyYWRpZW50RWxlbWVudDo6c3ZnQXR0
cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6U1ZHTWFya2VyRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQpOgorICAg
ICAgICAqIHN2Zy9TVkdNYXNrRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChXZWJDb3JlOjpTVkdNYXNr
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQpOgorICAgICAgICAqIHN2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdQYXR0ZXJuRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKToKKyAgICAgICAgKiBz
dmcvU1ZHUG9seUVsZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUG9seUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHU1ZHRWxlbWVudC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpTVkdTVkdFbGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OlNWR1NWR0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgor
ICAgICAgICAqIHN2Zy9TVkdTdG9wRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdT
dG9wRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6CisgICAgICAgICogc3ZnL1NWR1RSZWZF
bGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1RSZWZFbGVtZW50OjpzdmdBdHRyaWJ1
dGVDaGFuZ2VkKToKKyAgICAgICAgKiBzdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR1RleHRDb250ZW50RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdl
ZCk6CisgICAgICAgICogc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpTVkdUZXh0UGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAq
IHN2Zy9TVkdVc2VFbGVtZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNWR1VzZUVsZW1lbnQ6
OnN2Z0F0dHJpYnV0ZUNoYW5nZWQpOgorICAgICAgICAqIHN2Zy9TVkdWaWV3RWxlbWVudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZCk6
CisKIDIwMjItMDMtMjMgIEplciBOb2JsZSAgPGplci5ub2JsZUBhcHBsZS5jb20+CiAKICAgICAg
ICAgW0NvY29hXSBNU0UtYmFja2VkIHZpZGVvcyBmYWlsIHRvIHBsYXkgaW4gQ2FwdGl2ZSBQb3J0
YWwgbW9kZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvZG9tL0VsZW1lbnREYXRhLmggYi9T
b3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAppbmRleCA1MTE2ZTMyMDg5N2Y4ZGI1Mjhi
YjExNGI3OTY4MmU5ZGU2Y2RjZjhlLi5kNjRiMzA4ZGZiYmJhY2I2YWVmZGNhMjhhNjIxNDViNGU3
MDg5OWY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9kb20vRWxlbWVudERhdGEuaApAQCAtMTI1LDEzICsxMjUsMTUgQEAg
cHJpdmF0ZToKICAgICBtdXRhYmxlIHVpbnQzMl90IG1fYXJyYXlTaXplQW5kRmxhZ3M7CiAKICAg
ICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19hcnJheVNpemUgPSAyNzsKLSAgICBzdGF0aWMgY29u
c3QgdWludDMyX3Qgc19mbGFnQ291bnQgPSA1OworICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBz
X2ZsYWdDb3VudCA9IDY7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHNfZmxhZ0lzVW5pcXVl
ID0gMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnSGFzTmFtZUF0dHJpYnV0ZSA9
IDEgPDwgMTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnUHJlc2VudGF0aW9uYWxI
aW50U3R5bGVJc0RpcnR5ID0gMSA8PCAyOwogICAgIHN0YXRpYyBjb25zdCB1aW50MzJfdCBzX2Zs
YWdTdHlsZUF0dHJpYnV0ZUlzRGlydHkgPSAxIDw8IDM7CiAgICAgc3RhdGljIGNvbnN0IHVpbnQz
Ml90IHNfZmxhZ0FuaW1hdGVkU1ZHQXR0cmlidXRlc0FyZURpcnR5ID0gMSA8PCA0OworICAgIHN0
YXRpYyBjb25zdCB1aW50MzJfdCBzX2ZsYWdTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSA9IDEgPDwgNTsKICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgc19mbGFnc01hc2sgPSAo
MSA8PCBzX2ZsYWdDb3VudCkgLSAxOworICAgIC8vIEZJWE1FOiBjb3VsZCB0aGUgU1ZHIHNwZWNp
ZmljIGZsYWdzIGdvIHRvIHNvbWUgU1ZHIGNsYXNzPwogCiAgICAgaW5saW5lIHZvaWQgdXBkYXRl
RmxhZyh1aW50MzJfdCBmbGFnLCBib29sIHNldCkgY29uc3QKICAgICB7CkBAIC0xNjAsNiArMTYy
LDkgQEAgcHJvdGVjdGVkOgogICAgIGJvb2wgYW5pbWF0ZWRTVkdBdHRyaWJ1dGVzQXJlRGlydHko
KSBjb25zdCB7IHJldHVybiBtX2FycmF5U2l6ZUFuZEZsYWdzICYgc19mbGFnQW5pbWF0ZWRTVkdB
dHRyaWJ1dGVzQXJlRGlydHk7IH0KICAgICB2b2lkIHNldEFuaW1hdGVkU1ZHQXR0cmlidXRlc0Fy
ZURpcnR5KGJvb2wgZGlydHkpIGNvbnN0IHsgdXBkYXRlRmxhZyhzX2ZsYWdBbmltYXRlZFNWR0F0
dHJpYnV0ZXNBcmVEaXJ0eSwgZGlydHkpOyB9CiAKKyAgICBib29sIHN2Z1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCkgY29uc3QgeyByZXR1cm4gbV9hcnJheVNpemVBbmRGbGFncyAm
IHNfZmxhZ1NWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5OyB9CisgICAgdm9pZCBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eShib29sIGRpcnR5KSBjb25zdCB7
IHVwZGF0ZUZsYWcoc19mbGFnU1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHksIGRp
cnR5KTsgfQorCiAgICAgbXV0YWJsZSBSZWZQdHI8U3R5bGVQcm9wZXJ0aWVzPiBtX2lubGluZVN0
eWxlOwogICAgIG11dGFibGUgU3BhY2VTcGxpdFN0cmluZyBtX2NsYXNzTmFtZXM7CiAgICAgbXV0
YWJsZSBBdG9tU3RyaW5nIG1faWRGb3JTdHlsZVJlc29sdXRpb247CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwIGIvU291
cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3VwZGF0aW5nL1JlbmRlclRyZWVVcGRhdGVyLmNwcAppbmRl
eCA3MTUxZTA2MmU4ZGYzODU0YjEyMzExZDkzNjhlN2QxNGE2Nzc4Zjk0Li41ZDRmNjQ4ZDk2MDdk
YzBhYjNlMDdmNGFmYzNjNjVhNWJlODFmZWVmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9y
ZW5kZXJpbmcvdXBkYXRpbmcvUmVuZGVyVHJlZVVwZGF0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy91cGRhdGluZy9SZW5kZXJUcmVlVXBkYXRlci5jcHAKQEAgLTQ1LDYgKzQ1
LDcgQEAKICNpbmNsdWRlICJSZW5kZXJUcmVlVXBkYXRlckdlbmVyYXRlZENvbnRlbnQuaCIKICNp
bmNsdWRlICJSZW5kZXJWaWV3LmgiCiAjaW5jbHVkZSAiUnVudGltZUVuYWJsZWRGZWF0dXJlcy5o
IgorI2luY2x1ZGUgIlNWR0VsZW1lbnQuaCIKICNpbmNsdWRlICJTdHlsZVJlc29sdmVyLmgiCiAj
aW5jbHVkZSAiU3R5bGVUcmVlUmVzb2x2ZXIuaCIKICNpbmNsdWRlICJUZXh0TWFuaXB1bGF0aW9u
Q29udHJvbGxlci5oIgpAQCAtMTkyLDYgKzE5Myw5IEBAIHZvaWQgUmVuZGVyVHJlZVVwZGF0ZXI6
OnVwZGF0ZVJlbmRlclRyZWUoQ29udGFpbmVyTm9kZSYgcm9vdCkKICAgICAgICAgaWYgKGVsZW1l
bnRVcGRhdGUpCiAgICAgICAgICAgICB1cGRhdGVFbGVtZW50UmVuZGVyZXIoZWxlbWVudCwgKmVs
ZW1lbnRVcGRhdGUpOwogCisgICAgICAgIGlmIChpczxTVkdFbGVtZW50PihlbGVtZW50KSkKKyAg
ICAgICAgICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KGVsZW1lbnQpLmludmFsaWRhdGVTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpOworCiAgICAgICAgIHN0b3JlUHJldmlvdXNS
ZW5kZXJlcihlbGVtZW50KTsKIAogICAgICAgICBib29sIG1heUhhdmVSZW5kZXJlZERlc2NlbmRh
bnRzID0gZWxlbWVudC5yZW5kZXJlcigpIHx8IChlbGVtZW50Lmhhc0Rpc3BsYXlDb250ZW50cygp
ICYmIHNob3VsZENyZWF0ZVJlbmRlcmVyKGVsZW1lbnQsIHJlbmRlclRyZWVQb3NpdGlvbigpLnBh
cmVudCgpKSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlv
bkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0FuaW1hdGVNb3Rpb25FbGVtZW50
LmNwcAppbmRleCBmOTUyNzJhNGQ1ZDhhODliNTYwYzZkZWE4MGY2ODljMDFmMWE2NjZlLi40YjZj
NTMwYmU5ZGNkMGVmNGU1MjBhOGYxMGYyYmM0NmExMzVmZGFiIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdBbmltYXRlTW90aW9uRWxlbWVudC5jcHAKQEAgLTI1MCwxMCArMjUwLDEzIEBA
IHZvaWQgU1ZHQW5pbWF0ZU1vdGlvbkVsZW1lbnQ6OmFwcGx5UmVzdWx0c1RvVGFyZ2V0KCkKICAg
ICBpZiAoIXRhcmdldEVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJF
bGVtZW50KiByZW5kZXJlciA9IHRhcmdldEVsZW1lbnQtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAg
cmVuZGVyZXItPnNldE5lZWRzVHJhbnNmb3JtVXBkYXRlKCk7Ci0gICAgICAgIFJlbmRlclNWR1Jl
c291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRl
cmVyKTsKLSAgICB9CisgICAgYXV0byB1cGRhdGVUYXJnZXRFbGVtZW50ID0gW10oU1ZHRWxlbWVu
dCYgZWxlbWVudCkgeworICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IGVsZW1lbnQucmVuZGVy
ZXIoKSkKKyAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5zZm9ybVVwZGF0ZSgpOwor
ICAgICAgICBlbGVtZW50LnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CisgICAgfTsKKworICAgIHVwZGF0ZVRhcmdldEVsZW1lbnQoKnRhcmdldEVsZW1lbnQpOwogCiAg
ICAgQWZmaW5lVHJhbnNmb3JtKiB0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0gPSB0YXJnZXRF
bGVtZW50LT5zdXBwbGVtZW50YWxUcmFuc2Zvcm0oKTsKICAgICBpZiAoIXRhcmdldFN1cHBsZW1l
bnRhbFRyYW5zZm9ybSkKQEAgLTI2NSwxMCArMjY4LDcgQEAgdm9pZCBTVkdBbmltYXRlTW90aW9u
RWxlbWVudDo6YXBwbHlSZXN1bHRzVG9UYXJnZXQoKQogICAgICAgICBpZiAoIXRyYW5zZm9ybSB8
fCAqdHJhbnNmb3JtID09ICp0YXJnZXRTdXBwbGVtZW50YWxUcmFuc2Zvcm0pCiAgICAgICAgICAg
ICBjb250aW51ZTsKICAgICAgICAgKnRyYW5zZm9ybSA9ICp0YXJnZXRTdXBwbGVtZW50YWxUcmFu
c2Zvcm07Ci0gICAgICAgIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IGluc3RhbmNlLT5y
ZW5kZXJlcigpKSB7Ci0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1VcGRh
dGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAgICB1
cGRhdGVUYXJnZXRFbGVtZW50KGluc3RhbmNlKTsKICAgICB9CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdDbGlwUGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKaW5kZXggYjRlNzk5NThjNWIxMzAzNTVmNzk5OTRi
MTE4M2M1M2Y5MmNlZDY5Yi4uYWZkNjBlYmUwODhlNDNkNzdhNjg2OGE1YzU0NjdmNGQxODUwMDU2
NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NsaXBQYXRoRWxlbWVudC5jcHAKQEAgLTY3LDgg
KzY3LDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogCi0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9
IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAg
ICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJl
dHVybjsKICAgICB9CiAKQEAgLTgyLDggKzgxLDcgQEAgdm9pZCBTVkdDbGlwUGF0aEVsZW1lbnQ6
OmNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFu
Z2Uuc291cmNlID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJu
OwogCi0gICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JD
aGFpbkFyZURpcnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdDbGlwUGF0
aEVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRSZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25z
dCBSZW5kZXJUcmVlUG9zaXRpb24mKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0NvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uRWxlbWVudC5jcHAKaW5kZXggMGNkNGZkNDFl
NTNhZDE1ODI4MzI4ZTNiMTNmODJlZTYwNjVlMmQ5ZC4uYmI2ZTUyNTYzMmQ3NTgzZWYxZjhiZWVl
Y2IzNGI2ZjFlYzcyZjUzMCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0NvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb25FbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQuY3BwCkBAIC05Miw3ICs5Miw3IEBA
IHZvaWQgU1ZHQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbkVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFy
ZW50KHRoaXMpOworICAgICAgICBTVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6
OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQodGhpcyk7CiAgICAgICAgIHJldHVybjsK
ICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcCBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmNwcAppbmRleCA0MjRmYjA4MzI5MTNjOGQ5
ZTY4MmU3ZGMzZmVhZGYxOTJjYzBjNDIwLi40MTQ4MTUwODVkYmNhYTM5NGRjMTFmOTA1MGVkMzhj
NzBiODE0YjUzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnQuY3BwCkBAIC04ODMsNiArODgzLDIy
IEBAIHZvaWQgU1ZHRWxlbWVudDo6Y29sbGVjdFByZXNlbnRhdGlvbmFsSGludHNGb3JBdHRyaWJ1
dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtCiAgICAgICAgIGFkZFByb3BlcnR5VG9QcmVzZW50
YXRpb25hbEhpbnRTdHlsZShzdHlsZSwgcHJvcGVydHlJRCwgdmFsdWUpOwogfQogCit2b2lkIFNW
R0VsZW1lbnQ6OnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCkKK3sKKyAg
ICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KHRydWUpOworICAgIGludmFsaWRhdGVTdHlsZSgpOworfQorCit2b2lkIFNWR0Vs
ZW1lbnQ6OmludmFsaWRhdGVTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpCit7
CisgICAgaWYgKCFlbGVtZW50RGF0YSgpIHx8ICFlbGVtZW50RGF0YSgpLT5zdmdSZXNvdXJjZXNJ
bkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpKQorICAgICAgICByZXR1cm47CisKKyAgICBpZiAoYXV0
byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCisgICAgICAgIFJlbmRlclNWR1Jlc291cmNl
OjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsK
KyAgICBlbGVtZW50RGF0YSgpLT5zZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eShmYWxzZSk7Cit9CisKIHZvaWQgU1ZHRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25z
dCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsKICAgICBDU1NQcm9wZXJ0eUlEIHByb3BJZCA9
IGNzc1Byb3BlcnR5SWRGb3JTVkdBdHRyaWJ1dGVOYW1lKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RWxlbWVudC5oCmluZGV4IGZjNjYxNGJkNDY5MzI5YTljNDY0ZGY5ZTkzNDZmODc5ZDk3N2JmZDUu
LmY3OGQyMTEzNDg5OGYwYzI3NTFiYjM0YWFiZWYzYzJjMDM1ZmI4MjcgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0VsZW1lbnQuaApAQCAtODQsNiArODQsOCBAQCBwdWJsaWM6CiAKICAgICBpbmxpbmUgdm9pZCBz
ZXRBbmltYXRlZFNWR0F0dHJpYnV0ZXNBcmVEaXJ0eSgpOwogICAgIGlubGluZSB2b2lkIHNldFBy
ZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSgpOworICAgIHZvaWQgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKKyAgICB2b2lkIGludmFsaWRhdGVTVkdSZXNvdXJj
ZXNJbkFuY2VzdG9yQ2hhaW5JZk5lZWRlZCgpOwogCiAgICAgLy8gVGhlIGluc3RhbmNlcyBvZiBh
biBlbGVtZW50IGFyZSBjbG9uZXMgbWFkZSBpbiBzaGFkb3cgdHJlZXMgdG8gaW1wbGVtZW50IDx1
c2U+LgogICAgIGNvbnN0IFdlYWtIYXNoU2V0PFNWR0VsZW1lbnQ+JiBpbnN0YW5jZXMoKSBjb25z
dDsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdFbGVtZW50SW5saW5lcy5oIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKaW5kZXggYjRjMTc3Zjg5ZjFi
ZGYxZTE3MzYxZmQxZDZlZDkyNjNiMGVmYTJhOC4uMzBkODM2MjNmNDdlNGFjN2E1NTNkMGY1N2Nj
NDUxMjVhZWI0MzQxNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJ
bmxpbmVzLmgKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0VsZW1lbnRJbmxpbmVzLmgKQEAg
LTM4LDcgKzM4LDYgQEAgaW5saW5lIHZvaWQgU1ZHRWxlbWVudDo6c2V0QW5pbWF0ZWRTVkdBdHRy
aWJ1dGVzQXJlRGlydHkoKQogaW5saW5lIHZvaWQgU1ZHRWxlbWVudDo6c2V0UHJlc2VudGF0aW9u
YWxIaW50U3R5bGVJc0RpcnR5KCkKIHsKICAgICBlbnN1cmVVbmlxdWVFbGVtZW50RGF0YSgpLnNl
dFByZXNlbnRhdGlvbmFsSGludFN0eWxlSXNEaXJ0eSh0cnVlKTsKLSAgICAvLyBUcmlnZ2VyIHN0
eWxlIHJlY2FsY3VsYXRpb24gZm9yICJlbGVtZW50cyBhcyByZXNvdXJjZSIgKGUuZy4gcmVmZXJl
bmNlZCBieSBmZUltYWdlKS4KICAgICBpbnZhbGlkYXRlU3R5bGUoKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUJsZW5kRWxlbWVudC5jcHAKaW5kZXggMDFjNjQwMGUyMzQ0YzkzNWVmMjg3
NjY0NjQ0MzM3N2U4OGFjZDQ2Mi4uMGExYjQzYTdhZDM1MmY5MmE4ZTkxN2UxYWVhODJhZDUxMjkx
Yjk1OSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQmxlbmRFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVCbGVuZEVsZW1lbnQuY3BwCkBAIC04OSw3
ICs4OSw3IEBAIHZvaWQgU1ZHRkVCbGVuZEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29u
c3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1
dGVDaGFuZ2VkKGF0dHJOYW1lKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQo
YXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmluQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4y
QXR0cik7Ci0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgICAgICBzZXRTVkdSZXNv
dXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICB9CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJp
eEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29sb3JNYXRyaXhFbGVtZW50
LmNwcAppbmRleCBhMmI4YzYwNzQ1NzQ0OGM4NTUyMWMzYmMxMmQ2ZjkzOWNhMDVjNmMyLi45MmM3
MDAzNjRmODllYmM0ZDJmODRlNDAzNTcxMTJiYjJhY2M2ZDY1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHRkVDb2xvck1hdHJpeEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3N2Zy9TVkdGRUNvbG9yTWF0cml4RWxlbWVudC5jcHAKQEAgLTg3LDcgKzg3LDcgQEAgdm9p
ZCBTVkdGRUNvbG9yTWF0cml4RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFs
aWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0
dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBn
dWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQot
ICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnR5cGVBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVz
Ojp2YWx1ZXNBdHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0
ck5hbWUpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29tcG9zaXRlRWxl
bWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApp
bmRleCAxNDk1Y2NmYjkzZTg3M2I2MjIzMjc0ZmM1MmZhYjcwYTI1NGJmODFlLi42NDYwNDJmZDRh
NDQ1MmIxMmU2YWY0NmZkY2EyMmQ2NmI1MzhiYjU0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRkVDb21wb3NpdGVFbGVtZW50LmNwcApAQCAtMTE4LDcgKzExOCw3IEBAIHZvaWQgU1ZHRkVD
b21wb3NpdGVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
IGF0dHJOYW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0
dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlz
KTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjppbkF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OmluMkF0dHIpCi0gICAgICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAg
ICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICBl
bHNlIHsKICAgICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6azFBdHRyIHx8
IGF0dHJOYW1lID09IFNWR05hbWVzOjprMkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omsz
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6azRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05h
bWVzOjpvcGVyYXRvckF0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2
ZU1hdHJpeEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFQ29udm9sdmVNYXRy
aXhFbGVtZW50LmNwcAppbmRleCBiZGIxY2VmZGNjOWJmMGVlMTE4ODk0Nzg2MWE4N2I4MjcwOTQz
ZGVmLi40YTgzYTE1YTAzY2M1OTAwOTIzZDNhMjcxOTc1Yzk4YWFlMDExN2QxIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudC5jcHAKQEAgLTE2
MCwxNCArMTYwLDE0IEBAIHZvaWQgU1ZHRkVDb252b2x2ZU1hdHJpeEVsZW1lbnQ6OnNldE9yZGVy
KGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9vcmRlclgtPnNldEJhc2VWYWxJbnRlcm5hbCh4
KTsKICAgICBtX29yZGVyWS0+c2V0QmFzZVZhbEludGVybmFsKHkpOwotICAgIGludmFsaWRhdGUo
KTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2
b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzZXRLZXJuZWxVbml0TGVuZ3RoKGZsb2F0
IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9rZXJuZWxVbml0TGVuZ3RoWC0+c2V0QmFzZVZhbEludGVy
bmFsKHgpOwogICAgIG1fa2VybmVsVW5pdExlbmd0aFktPnNldEJhc2VWYWxJbnRlcm5hbCh5KTsK
LSAgICBpbnZhbGlkYXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKIH0KIAogdm9pZCBTVkdGRUNvbnZvbHZlTWF0cml4RWxlbWVudDo6c3ZnQXR0cmli
dXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKQEAgLTE3NSw3ICsxNzUs
NyBAQCB2b2lkIFNWR0ZFQ29udm9sdmVNYXRyaXhFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojpp
c0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlv
bkd1YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjpp
bkF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9yZGVyQXR0ciB8fCBhdHRyTmFtZSA9PSBT
VkdOYW1lczo6a2VybmVsTWF0cml4QXR0cikKLSAgICAgICAgICAgIGludmFsaWRhdGUoKTsKKyAg
ICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAg
ICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjplZGdl
TW9kZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmRpdmlzb3JBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpiaWFzQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WEF0
dHIKICAgICAgICAgICAgICAgICB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6dGFyZ2V0WUF0dHIg
fHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhBdHRyIHx8IGF0dHJOYW1l
ID09IFNWR05hbWVzOjpwcmVzZXJ2ZUFscGhhQXR0cik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaWZmdXNlTGlnaHRpbmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdGRURpZmZ1c2VMaWdodGluZ0VsZW1lbnQuY3BwCmluZGV4IDMwZTkxMjhmMjcyMzRi
MDYyM2YyNjY2NDAyNThjNmRhN2I0NTMxM2UuLjEzZDNjYzZmYmVmOGMxMjg4ZGMxMzY4ZGJjODFm
ZWVlYzk0NGU3YmMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQuY3BwCkBAIC0xMjgsNyArMTI4LDcgQEAgdm9pZCBTVkdGRURpZmZ1c2VM
aWdodGluZ0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYg
YXR0ck4KICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFt
ZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAg
ICAgICAgIGlmIChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgaW52
YWxpZGF0ZSgpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0g
U1ZHTmFtZXM6OmRpZmZ1c2VDb25zdGFudEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnN1
cmZhY2VTY2FsZUF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omtlcm5lbFVuaXRMZW5ndGhB
dHRyKTsKICAgICAgICAgICAgIHByaW1pdGl2ZUF0dHJpYnV0ZUNoYW5nZWQoYXR0ck5hbWUpOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRGlzcGxhY2VtZW50TWFwRWxlbWVu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNw
cAppbmRleCBmOWRiODVhZWE5MGU0NjExNWFmMzhhYzBlODkzMGZiZmJjMjYyZjQ5Li5hMjkzM2Jj
M2UyMjliZjQ1MWJiNDJhNzhjNDAxNzA0OWQ5N2FjNjllIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50LmNwcApAQCAtMTAyLDcgKzEwMiw3
IEBAIHZvaWQgU1ZHRkVEaXNwbGFjZW1lbnRNYXBFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2Vk
KGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpZiAoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Omlu
QXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW4yQXR0cikKLSAgICAgICAgICAgIGludmFs
aWRhdGUoKTsKKyAgICAgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09IFNW
R05hbWVzOjp4Q2hhbm5lbFNlbGVjdG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6eUNo
YW5uZWxTZWxlY3RvckF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNjYWxlQXR0cik7CiAg
ICAgICAgICAgICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRURyb3BTaGFkb3dFbGVtZW50LmNwcAppbmRleCA0NTk5MTBlNTRk
MmY2MDU2ZWEyNTliMTg4MzliM2UzZTliNTMxNjgyLi5lMWFjZGYwOWYzOTJlMmJjYTE3YjFhNDRl
NjcyYTc3OTgyMDRhYmJmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVEcm9w
U2hhZG93RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFRHJvcFNoYWRv
d0VsZW1lbnQuY3BwCkBAIC01NCw3ICs1NCw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dDo6c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZpYXRp
b25YLT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNl
VmFsSW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0lu
QW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dDo6cGFyc2VBdHRyaWJ1dGUoY29uc3QgUXVhbGlmaWVkTmFtZSYgbmFtZSwgY29uc3QgQXRvbVN0
cmluZyYgdmFsdWUpCkBAIC04OSw3ICs4OSw3IEBAIHZvaWQgU1ZHRkVEcm9wU2hhZG93RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKIHsK
ICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9z
dmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50LmNwcAppbmRleCBiNWYzYzdiNmNlZmZkNjVkZmQw
YWUxMWE0YTliMmIyZTBkODNiOGEzLi4wNzNiZDcyNGJiOWUzNWYwYjgwZDYyZGY5YzAyOTU1MzJl
OTY5ZDI3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJF
bGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVHYXVzc2lhbkJsdXJFbGVt
ZW50LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIFNWR0ZFR2F1c3NpYW5CbHVyRWxlbWVudDo6
c2V0U3RkRGV2aWF0aW9uKGZsb2F0IHgsIGZsb2F0IHkpCiB7CiAgICAgbV9zdGREZXZpYXRpb25Y
LT5zZXRCYXNlVmFsSW50ZXJuYWwoeCk7CiAgICAgbV9zdGREZXZpYXRpb25ZLT5zZXRCYXNlVmFs
SW50ZXJuYWwoeSk7Ci0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVHYXVzc2lhbkJsdXJFbGVtZW50
OjpwYXJzZUF0dHJpYnV0ZShjb25zdCBRdWFsaWZpZWROYW1lJiBuYW1lLCBjb25zdCBBdG9tU3Ry
aW5nJiB2YWx1ZSkKQEAgLTg3LDcgKzg3LDcgQEAgdm9pZCBTVkdGRUdhdXNzaWFuQmx1ckVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKIHsK
ICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsK
ICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAg
IGludmFsaWRhdGUoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJl
RGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RUltYWdlRWxlbWVudC5jcHAKaW5kZXggMWFkNTE2NTkwMWE1NTI1NmViNDFhMjUzMDJkYTVmZTBh
MWEzYTAzMy4uY2MzMmQyOTAyYjFkN2Y0OGVhYjk1MmYzYmNmMzEzMzY2MTI3MWJjYSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFSW1hZ2VFbGVtZW50LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRkVJbWFnZUVsZW1lbnQuY3BwCkBAIC0xMTEsNyArMTExLDcgQEAg
dm9pZCBTVkdGRUltYWdlRWxlbWVudDo6YnVpbGRQZW5kaW5nUmVzb3VyY2UoKQogICAgIH0gZWxz
ZSBpZiAoaXM8U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50KSkKICAgICAgICAgZG93bmNhc3Q8
U1ZHRWxlbWVudD4oKnRhcmdldC5lbGVtZW50KS5hZGRSZWZlcmVuY2luZ0VsZW1lbnQoKnRoaXMp
OwogCi0gICAgaW52YWxpZGF0ZSgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiB9CiAKIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnBhcnNlQXR0cmlidXRl
KGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZhbHVlKQpAQCAt
MTMwLDcgKzEzMCw3IEBAIHZvaWQgU1ZHRkVJbWFnZUVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0
cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChhdHRyTmFt
ZSA9PSBTVkdOYW1lczo6cHJlc2VydmVBc3BlY3RSYXRpb0F0dHIpOwogICAgICAgICBJbnN0YW5j
ZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZSgpOwor
ICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVM
aWdodEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFTGlnaHRFbGVtZW50LmNw
cAppbmRleCAyNDg2NjY0ZWU2MjQ5MWIwZTE3MTNmNzYzNzYwYTg2OGU5YThkZGMzLi5lNjg2NGE3
YmFlZmE3NGNjNmI3MzlhMTdhN2Q3MjVkMWQ3ZjRiZjc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHRkVMaWdodEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRUxpZ2h0RWxlbWVudC5jcHAKQEAgLTE1NywxMiArMTU3LDggQEAgdm9pZCBTVkdGRUxpZ2h0
RWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAKICAg
ICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAg
ICAgIHJldHVybjsKLSAgICBSZWZQdHIgcGFyZW50ID0gcGFyZW50Tm9kZSgpOwotICAgIGlmICgh
cGFyZW50KQotICAgICAgICByZXR1cm47Ci0gICAgUmVuZGVyRWxlbWVudCogcmVuZGVyZXIgPSBw
YXJlbnQtPnJlbmRlcmVyKCk7Ci0gICAgaWYgKHJlbmRlcmVyICYmIHJlbmRlcmVyLT5pc1NWR1Jl
c291cmNlRmlsdGVyUHJpbWl0aXZlKCkpCi0gICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJr
Rm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKworICAg
IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6aW52YWxpZGF0ZUZpbHRlclBy
aW1pdGl2ZVBhcmVudCh0aGlzKTsKIH0KIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ZFTWVyZ2VOb2RlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVN
ZXJnZU5vZGVFbGVtZW50LmNwcAppbmRleCA1ZWJkY2M5ZGQxOGI1MTdmNjY1ZTZhMGE5ZTU4ZDY4
MjdlYjI1N2JmLi45MzA4YjIwYmI2NWNmMTg1ZTZmZmRjNWE1YmFhNDQ4ZWEzYTExYTE3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNZXJnZU5vZGVFbGVtZW50LmNwcApAQCAtNjMsNyAr
NjMsNyBAQCB2b2lkIFNWR0ZFTWVyZ2VOb2RlRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChj
b25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6
aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgQVNTRVJUKGF0dHJOYW1lID09
IFNWR05hbWVzOjppbkF0dHIpOwogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1
YXJkKCp0aGlzKTsKLSAgICAgICAgaW52YWxpZGF0ZUZpbHRlclByaW1pdGl2ZVBhcmVudCh0aGlz
KTsKKyAgICAgICAgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlk
YXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KHRoaXMpOwogICAgICAgICByZXR1cm47CiAgICAgfQog
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5j
cHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVNb3JwaG9sb2d5RWxlbWVudC5jcHAKaW5kZXgg
NzkwOTIwNzRjNGYxNWZkZWFlZmZjNjk2OGE2ZDZmYjI1MzM3ZTdmOC4uYmE1NGJhNzkyMTVjN2Fm
NmNlMWE0ZGE1MGI2NmQxYTc3Y2RjZTRmZiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFTW9ycGhvbG9neUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdG
RU1vcnBob2xvZ3lFbGVtZW50LmNwcApAQCAtNTIsNyArNTIsNyBAQCB2b2lkIFNWR0ZFTW9ycGhv
bG9neUVsZW1lbnQ6OnNldFJhZGl1cyhmbG9hdCB4LCBmbG9hdCB5KQogewogICAgIG1fcmFkaXVz
WC0+c2V0QmFzZVZhbEludGVybmFsKHgpOwogICAgIG1fcmFkaXVzWS0+c2V0QmFzZVZhbEludGVy
bmFsKHkpOwotICAgIGludmFsaWRhdGUoKTsKKyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogfQogCiB2b2lkIFNWR0ZFTW9ycGhvbG9neUVsZW1lbnQ6OnBhcnNl
QXR0cmlidXRlKGNvbnN0IFF1YWxpZmllZE5hbWUmIG5hbWUsIGNvbnN0IEF0b21TdHJpbmcmIHZh
bHVlKQpAQCAtMTAxLDcgKzEwMSw3IEBAIHZvaWQgU1ZHRkVNb3JwaG9sb2d5RWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICBpZiAo
UHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRy
TmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAg
ICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAg
ICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6Om9wZXJh
dG9yQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdOYW1lczo6cmFkaXVzQXR0cik7CiAgICAgICAgICAg
ICBwcmltaXRpdmVBdHRyaWJ1dGVDaGFuZ2VkKGF0dHJOYW1lKTsKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdGRU9mZnNldEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKaW5kZXggODQzZjhkZTc3YWI4YzgxZGJhMzNhZjIxZGY2
MGM4ZDJlOGNiMjc0My4uZWI2ZDdjYmY4ZDgwYzZhYjhjMmY4ZTkwNGM1N2E4M2Y3ZjIwYmU0YSAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFT2Zmc2V0RWxlbWVudC5jcHAKQEAgLTcyLDcgKzcy
LDcgQEAgdm9pZCBTVkdGRU9mZnNldEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3Qg
UXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6Omlz
S25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9u
R3VhcmQgZ3VhcmQoKnRoaXMpOwotICAgICAgICBpbnZhbGlkYXRlKCk7CisgICAgICAgIHNldFNW
R1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRp
bmdFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGRVNwZWN1bGFyTGlnaHRpbmdF
bGVtZW50LmNwcAppbmRleCBiNjhiYTM5MDU0NGFhNjViZmI5ZGVkOTY3NGU2ZWNlMmMyOTg3OGEy
Li5lODdjNTEwZDVjNzc2MGE4MmFlNWFlMDgyOTU2OTllNTU3Y2NhYWIxIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVTcGVjdWxhckxpZ2h0aW5nRWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZFU3BlY3VsYXJMaWdodGluZ0VsZW1lbnQuY3BwCkBAIC0x
MzgsNyArMTM4LDcgQEAgdm9pZCBTVkdGRVNwZWN1bGFyTGlnaHRpbmdFbGVtZW50OjpzdmdBdHRy
aWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHIKICAgICBpZiAoUHJvcGVydHlS
ZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJ
bnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGlmIChhdHRyTmFtZSA9PSBT
VkdOYW1lczo6aW5BdHRyKQotICAgICAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICAgICAg
c2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgZWxzZSB7
CiAgICAgICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnNwZWN1bGFyQ29uc3Rh
bnRBdHRyIHx8IGF0dHJOYW1lID09IFNWR05hbWVzOjpzcGVjdWxhckV4cG9uZW50QXR0ciB8fCBh
dHRyTmFtZSA9PSBTVkdOYW1lczo6c3VyZmFjZVNjYWxlQXR0ciB8fCBhdHRyTmFtZSA9PSBTVkdO
YW1lczo6a2VybmVsVW5pdExlbmd0aEF0dHIpOwogICAgICAgICAgICAgcHJpbWl0aXZlQXR0cmli
dXRlQ2hhbmdlZChhdHRyTmFtZSk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
RkVUaWxlRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRkVUaWxlRWxlbWVudC5j
cHAKaW5kZXggZTQ2MTdkZTk1MmQ5OWViY2M3Njg4MTM3ZjFlNzNmYmU1YmQwNjljZi4uYjk5MzA3
YzRiZTZjYjExYjViMzMxOWQ2MzVhNDFhNzRiMWJjNWUzOCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR0ZFVGlsZUVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9T
VkdGRVRpbGVFbGVtZW50LmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIFNWR0ZFVGlsZUVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAg
ICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAg
ICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6aW5BdHRyKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgIGludmFsaWRhdGUo
KTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0ZpbHRlckVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlckVsZW1lbnQu
Y3BwCmluZGV4IDgwZDM2NmQxZDQ5ZTA0MThjYjNhMGNkNjM4MWY1OTU1MTY1ZTM1YzQuLjIwNGE2
MWI0NzE4NmE3OGE2MGFjZWNkNmEzMmMxNTdjZjJiMGM3ZDYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdGaWx0ZXJFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHRmlsdGVyRWxlbWVudC5jcHAKQEAgLTk5LDggKzk5LDcgQEAgdm9pZCBTVkdGaWx0ZXJFbGVt
ZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQog
ICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSB8fCBTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7Ci0g
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAtMTE0
LDggKzExMyw3IEBAIHZvaWQgU1ZHRmlsdGVyRWxlbWVudDo6Y2hpbGRyZW5DaGFuZ2VkKGNvbnN0
IENoaWxkQ2hhbmdlJiBjaGFuZ2UpCiAgICAgaWYgKGNoYW5nZS5zb3VyY2UgPT0gQ2hpbGRDaGFu
Z2U6OlNvdXJjZTo6UGFyc2VyKQogICAgICAgICByZXR1cm47CiAKLSAgICBpZiAoUmVuZGVyT2Jq
ZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0
KCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0KIAog
UmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlckVsZW1lbnQ6OmNyZWF0ZUVsZW1lbnRS
ZW5kZXJlcihSZW5kZXJTdHlsZSYmIHN0eWxlLCBjb25zdCBSZW5kZXJUcmVlUG9zaXRpb24mKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJk
QXR0cmlidXRlcy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcAppbmRleCAwMGU0ZTY5ODY2NDUzMjkyMmQ2Mzc1ZTc3YWQ0M2Iy
ODVjNzQ0OTRhLi4yNDAyNTQ2ZjRmNDIwNzA1N2E2NTRlZTRkMDgwYjBhZTQ2MzQ3NDlhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRy
aWJ1dGVzLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3Rh
bmRhcmRBdHRyaWJ1dGVzLmNwcApAQCAtNzgsNyArNzgsNyBAQCB2b2lkIFNWR0ZpbHRlclByaW1p
dGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZp
ZWROYQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJO
YW1lKSkgewogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsK
LSAgICAgICAgaW52YWxpZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9y
Q2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC05MSw3ICs5MSw3
IEBAIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjpjaGlsZHJlbkNo
YW5nZWQoY29uc3QgQ2hpbGRDaGFuZ2UmIGNoCiAKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBD
aGlsZENoYW5nZTo6U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKLSAgICBpbnZhbGlk
YXRlKCk7CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKIH0K
IAogUmVuZGVyUHRyPFJlbmRlckVsZW1lbnQ+IFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0
cmlidXRlczo6Y3JlYXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0
IFJlbmRlclRyZWVQb3NpdGlvbiYpCkBAIC0xMDcsNyArMTA3LDcgQEAgYm9vbCBTVkdGaWx0ZXJQ
cmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0ZXM6OnJlbmRlcmVySXNOZWVkZWQoY29uc3QgUmVuZGVy
U3R5bGUmIHMKICAgICByZXR1cm4gZmFsc2U7CiB9CiAKLXZvaWQgaW52YWxpZGF0ZUZpbHRlclBy
aW1pdGl2ZVBhcmVudChTVkdFbGVtZW50KiBlbGVtZW50KQordm9pZCBTVkdGaWx0ZXJQcmltaXRp
dmVTdGFuZGFyZEF0dHJpYnV0ZXM6OmludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQoU1ZH
RWxlbWVudCogZWxlbWVudCkKIHsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsK
QEAgLTEyMCw3ICsxMjAsNyBAQCB2b2lkIGludmFsaWRhdGVGaWx0ZXJQcmltaXRpdmVQYXJlbnQo
U1ZHRWxlbWVudCogZWxlbWVudCkKICAgICBpZiAoIXJlbmRlcmVyIHx8ICFyZW5kZXJlci0+aXNT
VkdSZXNvdXJjZUZpbHRlclByaW1pdGl2ZSgpKQogICAgICAgICByZXR1cm47CiAKLSAgICBSZW5k
ZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9u
KCpyZW5kZXJlciwgZmFsc2UpOworICAgIGRvd25jYXN0PFNWR0VsZW1lbnQ+KCpwYXJlbnQpLnNl
dFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9CiAKIH0KZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJpYnV0
ZXMuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGaWx0ZXJQcmltaXRpdmVTdGFuZGFyZEF0dHJp
YnV0ZXMuaAppbmRleCA3ZGY5MjA2ZmFhOTFlYWZlZmVmZGE1MjllOTJmNjljNTFmM2Q4ZWQ5Li4z
MTAzY2M2YWMyMzNlMGZkM2IyZmIxZTk3OTA0OWEyOGI3YjZmOGJiIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzLmgKKysr
IGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRl
cy5oCkBAIC01NSw2ICs1NSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIFZlY3RvcjxBdG9tU3Ry
aW5nPiBmaWx0ZXJFZmZlY3RJbnB1dHNOYW1lcygpIGNvbnN0IHsgcmV0dXJuIHsgfTsgfQogICAg
IHZpcnR1YWwgUmVmUHRyPEZpbHRlckVmZmVjdD4gZmlsdGVyRWZmZWN0KGNvbnN0IFNWR0ZpbHRl
ckJ1aWxkZXImLCBjb25zdCBGaWx0ZXJFZmZlY3RWZWN0b3ImKSBjb25zdCA9IDA7CiAKKyAgICBz
dGF0aWMgdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsK
KwogcHJvdGVjdGVkOgogICAgIFNWR0ZpbHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlcyhj
b25zdCBRdWFsaWZpZWROYW1lJiwgRG9jdW1lbnQmKTsKIApAQCAtNjIsNyArNjQsNiBAQCBwcm90
ZWN0ZWQ6CiAgICAgdm9pZCBzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUm
KSBvdmVycmlkZTsKICAgICB2b2lkIGNoaWxkcmVuQ2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYp
IG92ZXJyaWRlOwogCi0gICAgdm9pZCBpbnZhbGlkYXRlKCk7CiAgICAgdm9pZCBwcmltaXRpdmVB
dHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJpYnV0ZU5hbWUpOwogCiBw
cml2YXRlOgpAQCAtODEsMTQgKzgyLDYgQEAgcHJpdmF0ZToKICAgICBSZWY8U1ZHQW5pbWF0ZWRT
dHJpbmc+IG1fcmVzdWx0IHsgU1ZHQW5pbWF0ZWRTdHJpbmc6OmNyZWF0ZSh0aGlzKSB9OwogfTsK
IAotdm9pZCBpbnZhbGlkYXRlRmlsdGVyUHJpbWl0aXZlUGFyZW50KFNWR0VsZW1lbnQqKTsKLQot
aW5saW5lIHZvaWQgU1ZHRmlsdGVyUHJpbWl0aXZlU3RhbmRhcmRBdHRyaWJ1dGVzOjppbnZhbGlk
YXRlKCkKLXsKLSAgICBpZiAoYXV0byogcHJpbWl0aXZlUmVuZGVyZXIgPSByZW5kZXJlcigpKQot
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpwcmltaXRpdmVSZW5kZXJlcik7Ci19Ci0KIGlubGluZSB2b2lkIFNWR0Zp
bHRlclByaW1pdGl2ZVN0YW5kYXJkQXR0cmlidXRlczo6cHJpbWl0aXZlQXR0cmlidXRlQ2hhbmdl
ZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyaWJ1dGUpCiB7CiAgICAgaWYgKGF1dG8qIHByaW1p
dGl2ZVJlbmRlcmVyID0gcmVuZGVyZXIoKSkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHRm9y
ZWlnbk9iamVjdEVsZW1lbnQuY3BwCmluZGV4IGUzNDliYzcxOTZjMDRjYzFmMmViZWMyOTc1MTQx
ZGI2YzRmZmIwNTAuLmVjYjNiYmY4OTYwN2NkN2QwMzI1NzY0NGU4YjYyYWNiMDY1NThjMWIgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdGb3JlaWduT2JqZWN0RWxlbWVudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ZvcmVpZ25PYmplY3RFbGVtZW50LmNwcApAQCAt
ODEsOCArODEsNyBAQCB2b2lkIFNWR0ZvcmVpZ25PYmplY3RFbGVtZW50OjpzdmdBdHRyaWJ1dGVD
aGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIEFTU0VSVChhdHRyTmFtZSA9PSBTVkdOYW1lczo6eEF0dHIgfHwgYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnlBdHRyKTsKICAgICAgICAgICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0lu
Zm9ybWF0aW9uKCk7Ci0gICAgICAgICAgICBpZiAoYXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRl
cmVyKCkpCi0gICAgICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRB
bmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAg
ICByZXR1cm47CiAgICAgfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dlb21l
dHJ5RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNw
cAppbmRleCA1NjQ4MGU5MTZkZmZiMzVhOTk2ZDRiNDU5ZjFjZGRlNjRiNDBlMWJkLi5jMGJmMjFl
NDQyNGEzNjM4OGM3ZjIxNjcyNzE1NTMwYzFmMmQxODNiIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHR2VvbWV0cnlFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcv
U1ZHR2VvbWV0cnlFbGVtZW50LmNwcApAQCAtMTUwLDggKzE1MCw3IEBAIHZvaWQgU1ZHR2VvbWV0
cnlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1l
KSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnBhdGhMZW5ndGhBdHRy
KTsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAg
ICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAgICBS
ZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0
aW9uKCpyZW5kZXJlcik7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFy
ZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R0dyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggNzc0YzExZTNkOTg3M2I5M2NkZTk2OGIzN2ViMzQ3
Yzc2NTgyNDgzZS4uZTA5YzFkOTU5ZGU4OWQ2ZDM4MmIxYzc3NjdiYTMwZmMzMjdhNjUwMCAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYWRpZW50RWxlbWVudC5jcHAKQEAgLTc5LDggKzc5LDcg
QEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVh
bGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25v
d25BdHRyaWJ1dGUoYXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0
ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgq
dGhpcyk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmplY3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0g
ICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291
cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAK
QEAgLTk0LDggKzkzLDcgQEAgdm9pZCBTVkdHcmFkaWVudEVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdl
ZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENo
aWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJl
bmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVk
c0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiB9CiAKIEdyYWRpZW50Q29sb3JTdG9wcyBTVkdHcmFkaWVudEVsZW1lbnQ6OmJ1aWxkU3RvcHMo
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0dyYXBoaWNzRWxlbWVudC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVtZW50LmNwcAppbmRleCBkYzEwOGU1
YjIzYzQ2ZGE5NTYwMGEwMmFhYzYyMDdlZDViNjY1Njk2Li4wMzE2M2U0ZjM5ZmRjYTFkNWQ4MWVj
Nzc4NzVmZmQwYjFjODM0NGI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3Jh
cGhpY3NFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHR3JhcGhpY3NFbGVt
ZW50LmNwcApAQCAtMTM2LDEwICsxMzYsOSBAQCB2b2lkIFNWR0dyYXBoaWNzRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAg
QVNTRVJUKGF0dHJOYW1lID09IFNWR05hbWVzOjp0cmFuc2Zvcm1BdHRyKTsKICAgICAgICAgSW5z
dGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAKLSAgICAgICAgaWYgKGF1dG8g
cmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvIHJlbmRlcmVy
ID0gdGhpcy0+cmVuZGVyZXIoKSkKICAgICAgICAgICAgIHJlbmRlcmVyLT5zZXROZWVkc1RyYW5z
Zm9ybVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlv
dXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIpOwotICAgICAgICB9Cisg
ICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdJbWFn
ZUVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKaW5k
ZXggMTYyM2U3MzljYzAzYWZhNDgyZGVlYTY1NWFjNmU5ZTVmMDNhNTJiMC4uYmUwNDQ5MjdjYzgx
ZjkwZDQxMTQ4NmU5NjcwNmNhNzJiZDA3YTE0OCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR0ltYWdlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0ltYWdl
RWxlbWVudC5jcHAKQEAgLTk5LDE1ICs5OSwxNSBAQCB2b2lkIFNWR0ltYWdlRWxlbWVudDo6c3Zn
QXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAg
ICAgIHVwZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7CiAKICAgICAgICAgICAgIGlm
IChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKLSAgICAgICAgICAgICAgICBp
ZiAoZG93bmNhc3Q8UmVuZGVyU1ZHSW1hZ2U+KCpyZW5kZXJlcikudXBkYXRlSW1hZ2VWaWV3cG9y
dCgpKQotICAgICAgICAgICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91
dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7CisgICAgICAgICAgICAg
ICAgaWYgKCFkb3duY2FzdDxSZW5kZXJTVkdJbWFnZT4oKnJlbmRlcmVyKS51cGRhdGVJbWFnZVZp
ZXdwb3J0KCkpCisgICAgICAgICAgICAgICAgICAgIHJldHVybjsKKyAgICAgICAgICAgICAgICBz
ZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICAgICAgfQog
ICAgICAgICB9IGVsc2UgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0
ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpCiAgICAgICAgICAgICBzZXRQcmVzZW50YXRp
b25hbEhpbnRTdHlsZUlzRGlydHkoKTsKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBBU1NF
UlQoYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OnByZXNlcnZlQXNwZWN0UmF0aW9BdHRyKTsKLSAgICAg
ICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpCi0gICAgICAgICAg
ICAgICAgUmVuZGVyU1ZHUmVzb3VyY2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUlu
dmFsaWRhdGlvbigqcmVuZGVyZXIpOworICAgICAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgfQogICAgICAgICByZXR1cm47CiAgICAgfQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lRWxlbWVudC5jcHAKaW5kZXggZWZiOWI4YmNmZDljYzk1ZWFh
NDkzYmZlMWFhZDkxOWNhNzljYjNjNS4uMjMxOWQ1ZWNjZDdlZjIzNDQ2ZmRlODRjZWQ3MmEwODdh
Njk5N2M3MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTGluZUVsZW1lbnQuY3BwCkBAIC03NCwxMCAr
NzQsOSBAQCB2b2lkIFNWR0xpbmVFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1
YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJk
IGd1YXJkKCp0aGlzKTsKICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24o
KTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxMZWdhY3lSZW5kZXJT
VkdTaGFwZT4odGhpcy0+cmVuZGVyZXIoKSkpIHsKLSAgICAgICAgICAgIHJlbmRlcmVyLT5zZXRO
ZWVkc1NoYXBlVXBkYXRlKCk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0Zv
ckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAg
IH0KKyAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKKyAgICAg
ICAgICAgIHN0YXRpY19jYXN0PExlZ2FjeVJlbmRlclNWR1NoYXBlKj4ocmVuZGVyZXIpLT5zZXRO
ZWVkc1NoYXBlVXBkYXRlKCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFp
bkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdMaW5lYXJHcmFkaWVudEVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50RWxlbWVudC5jcHAKaW5kZXggODQ4ZjZhMjJmOGUyNTEz
NjY3YmIwNGNiYmI5OWY4MDlhMjY4ZmM3Zi4uMWNkNTAxYjAyZTY5ZDQ2Mjc4ZTU3Y2ViOWI4ZWNm
ZmEyOWYxY2I5YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRp
ZW50RWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR0xpbmVhckdyYWRpZW50
RWxlbWVudC5jcHAKQEAgLTgzLDggKzgzLDcgQEAgdm9pZCBTVkdMaW5lYXJHcmFkaWVudEVsZW1l
bnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUKICAg
ICBpZiAoUHJvcGVydHlSZWdpc3RyeTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAg
ICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIHVw
ZGF0ZVJlbGF0aXZlTGVuZ3Roc0luZm9ybWF0aW9uKCk7Ci0gICAgICAgIGlmIChSZW5kZXJPYmpl
Y3QqIG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5
b3V0KCk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7
CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdNYXJrZXJFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXJrZXJFbGVt
ZW50LmNwcAppbmRleCAwYjQzYmI4NDJlNWUzNjJhYWVmODc5ZmQ2MDYzYWE1NzZlYWUyMWFiLi45
OTQ4ZjE5ODc3MzgyNWM5MGM2ZTAxZmI4M2YzYmIwMWU4ZmY5NzcxIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHTWFya2VyRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR01hcmtlckVsZW1lbnQuY3BwCkBAIC05OCwxNCArOTgsMTIgQEAgdm9pZCBTVkdNYXJr
ZXJFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJO
YW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1YXJkIGd1YXJkKCp0aGlzKTsKICAg
ICAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzQW5pbWF0ZWRMZW5ndGhBdHRyaWJ1dGUoYXR0
ck5hbWUpKQogICAgICAgICAgICAgdXBkYXRlUmVsYXRpdmVMZW5ndGhzSW5mb3JtYXRpb24oKTsK
LSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAg
ICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KICAgICAKICAg
ICBpZiAoU1ZHRml0VG9WaWV3Qm94Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAg
ICAgICBpZiAoUmVuZGVyT2JqZWN0KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAg
b2JqZWN0LT5zZXROZWVkc0xheW91dCgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2Vz
dG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCkBAIC0xMTksOCAr
MTE3LDcgQEAgdm9pZCBTVkdNYXJrZXJFbGVtZW50OjpjaGlsZHJlbkNoYW5nZWQoY29uc3QgQ2hp
bGRDaGFuZ2UmIGNoYW5nZSkKICAgICBpZiAoY2hhbmdlLnNvdXJjZSA9PSBDaGlsZENoYW5nZTo6
U291cmNlOjpQYXJzZXIpCiAgICAgICAgIHJldHVybjsKIAotICAgIGlmIChSZW5kZXJPYmplY3Qq
IG9iamVjdCA9IHJlbmRlcmVyKCkpCi0gICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsK
KyAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogfQogCiBTdHJp
bmcgU1ZHTWFya2VyRWxlbWVudDo6b3JpZW50KCkgY29uc3QKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHTWFz
a0VsZW1lbnQuY3BwCmluZGV4IDYzYmE3MmIwNTM4MmZmNThiZWEwNTJkY2JmZWY1NDcxYmE5NDkx
MDQuLjI1Nzc4M2IzNGVjYjI1OGNlMjdmZTQxNGNhOGI2ZmU4NjkxZDM5NzIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdNYXNrRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL1NWR01hc2tFbGVtZW50LmNwcApAQCAtMTA1LDggKzEwNSw3IEBAIHZvaWQgU1ZHTWFz
a0VsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5h
bWUpCiAgICAgfQogCiAgICAgaWYgKFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpKSB7Ci0gICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVy
KCkpCi0gICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIApAQCAtMTIwLDggKzExOSw3IEBAIHZvaWQgU1ZHTWFza0VsZW1lbnQ6OmNoaWxkcmVu
Q2hhbmdlZChjb25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNl
ID09IENoaWxkQ2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAg
aWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5z
ZXROZWVkc0xheW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiB9CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdNYXNrRWxlbWVudDo6Y3Jl
YXRlRWxlbWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQ
b3NpdGlvbiYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0aEVsZW1lbnQu
Y3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdGhFbGVtZW50LmNwcAppbmRleCA2YTBjZjkz
NmQzNTdhOWVhODU3OWUzZjQ3NWVkYjg3MDIzYTU4MGVjLi5kMGI1ZGYyMWQxNmFjNGRjMTMwZjQw
MjkxYmQ0NWE5OWZkMzg0NmY3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0
aEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQYXRoRWxlbWVudC5jcHAK
QEAgLTcwLDEwICs3MCw5IEBAIHZvaWQgU1ZHUGF0aEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNoYW5n
ZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgICAgIEluc3RhbmNlSW52YWxp
ZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICBpbnZhbGlkYXRlTVBhdGhEZXBlbmRl
bmNpZXMoKTsKIAotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBkb3duY2FzdDxSZW5kZXJT
VkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAgcmVuZGVyZXItPnNldE5l
ZWRzU2hhcGVVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9y
TGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAg
fQorICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAgICAg
ICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHJlbmRlcmVyKS0+c2V0TmVlZHNTaGFw
ZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0
eSgpOwogCiAgICAgICAgIHJldHVybjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1BhdHRl
cm5FbGVtZW50LmNwcAppbmRleCA2YjU0ZTdlZmNkODMzNDRjMzg3MzVhNzFhMWRjMjBjNWQ0OGJk
ODY1Li5iNDc1ODlmZjhmY2E3Y2ExNjgzOTZiZTk2MTg0ZWQ2NGVkOTcwNWE2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUGF0dGVybkVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3N2Zy9TVkdQYXR0ZXJuRWxlbWVudC5jcHAKQEAgLTExNyw4ICsxMTcsNyBAQCB2b2lk
IFNWR1BhdHRlcm5FbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5h
bWUmIGF0dHJOYW1lKQogICAgIH0KIAogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5Ojppc0tub3du
QXR0cmlidXRlKGF0dHJOYW1lKSB8fCBTVkdGaXRUb1ZpZXdCb3g6OmlzS25vd25BdHRyaWJ1dGUo
YXR0ck5hbWUpIHx8IFNWR1VSSVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkp
IHsKLSAgICAgICAgaWYgKFJlbmRlck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAg
ICAgICAgIG9iamVjdC0+c2V0TmVlZHNMYXlvdXQoKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2Vz
SW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApAQCAt
MTMyLDggKzEzMSw3IEBAIHZvaWQgU1ZHUGF0dGVybkVsZW1lbnQ6OmNoaWxkcmVuQ2hhbmdlZChj
b25zdCBDaGlsZENoYW5nZSYgY2hhbmdlKQogICAgIGlmIChjaGFuZ2Uuc291cmNlID09IENoaWxk
Q2hhbmdlOjpTb3VyY2U6OlBhcnNlcikKICAgICAgICAgcmV0dXJuOwogCi0gICAgaWYgKFJlbmRl
ck9iamVjdCogb2JqZWN0ID0gcmVuZGVyZXIoKSkKLSAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xh
eW91dCgpOworICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiB9
CiAKIFJlbmRlclB0cjxSZW5kZXJFbGVtZW50PiBTVkdQYXR0ZXJuRWxlbWVudDo6Y3JlYXRlRWxl
bWVudFJlbmRlcmVyKFJlbmRlclN0eWxlJiYgc3R5bGUsIGNvbnN0IFJlbmRlclRyZWVQb3NpdGlv
biYpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1lbnQuY3BwIGIv
U291cmNlL1dlYkNvcmUvc3ZnL1NWR1BvbHlFbGVtZW50LmNwcAppbmRleCA2YmRlYmZhN2E0OTUy
NDY3ZDkwNTY1MDY4OWM3NWVmMThlMTEwZWMzLi44MGVkMDNmY2E0YjdjMzY2ODU0MDk1YzZkZWNi
N2M1NmFjM2ZmZTMwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHUG9seUVsZW1l
bnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdQb2x5RWxlbWVudC5jcHAKQEAgLTU3
LDExICs1NywxMCBAQCB2b2lkIFNWR1BvbHlFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNv
bnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogewogICAgIGlmIChQcm9wZXJ0eVJlZ2lzdHJ5
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewogICAgICAgICBBU1NFUlQoYXR0ck5hbWUg
PT0gU1ZHTmFtZXM6OnBvaW50c0F0dHIpOwotICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSBk
b3duY2FzdDxSZW5kZXJTVkdQYXRoPih0aGlzLT5yZW5kZXJlcigpKSkgewotICAgICAgICAgICAg
SW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICByZW5k
ZXJlci0+c2V0TmVlZHNTaGFwZVVwZGF0ZSgpOwotICAgICAgICAgICAgUmVuZGVyU1ZHUmVzb3Vy
Y2U6Om1hcmtGb3JMYXlvdXRBbmRQYXJlbnRSZXNvdXJjZUludmFsaWRhdGlvbigqcmVuZGVyZXIp
OwotICAgICAgICB9CisgICAgICAgIEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRo
aXMpOworICAgICAgICBpZiAoYXV0byogcmVuZGVyZXIgPSB0aGlzLT5yZW5kZXJlcigpKQorICAg
ICAgICAgICAgc3RhdGljX2Nhc3Q8UmVuZGVyU1ZHUGF0aCo+KHJlbmRlcmVyKS0+c2V0TmVlZHNT
aGFwZVVwZGF0ZSgpOworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVE
aXJ0eSgpOwogICAgICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1lbnQuY3BwCmluZGV4IGU1ZTIxYWZlZTllM2Y1NmIxODc4
Y2QzZTJlOTE5ODQwNGY0OTg5Y2UuLjA3NGE3Njc3OWQ3ZGNiMTA5MDdkNmU3MGRlZTMwYmJlYzMw
OTJjM2QgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVs
ZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdSYWRpYWxHcmFkaWVudEVsZW1l
bnQuY3BwCkBAIC04OSw4ICs4OSw3IEBAIHZvaWQgU1ZHUmFkaWFsR3JhZGllbnRFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lCiAgICAgaWYg
KFByb3BlcnR5UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAg
IEluc3RhbmNlSW52YWxpZGF0aW9uR3VhcmQgZ3VhcmQoKnRoaXMpOwogICAgICAgICB1cGRhdGVS
ZWxhdGl2ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwotICAgICAgICBpZiAoUmVuZGVyT2JqZWN0KiBv
YmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICAgICAgb2JqZWN0LT5zZXROZWVkc0xheW91dCgp
OworICAgICAgICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U1ZHRWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU1ZHRWxlbWVudC5jcHAKaW5k
ZXggOWM2YTdlODNiZTc5MjE2MTdlMjU5Y2E3ZDNmYzhlOWE1NWUzNThkOC4uN2M4NDkxMjkzMTc3
ZTZjYWRmNmVhYTA1YTlmNjg1MGFhZjlkZmQwNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
c3ZnL1NWR1NWR0VsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTVkdFbGVt
ZW50LmNwcApAQCAtMTM3LDggKzEzNyw3IEBAIHZvaWQgU1ZHU1ZHRWxlbWVudDo6c2V0Q3VycmVu
dFRyYW5zbGF0ZShjb25zdCBGbG9hdFBvaW50JiB0cmFuc2xhdGlvbikKIAogdm9pZCBTVkdTVkdF
bGVtZW50Ojp1cGRhdGVDdXJyZW50VHJhbnNsYXRlKCkKIHsKLSAgICBpZiAoUmVuZGVyT2JqZWN0
KiBvYmplY3QgPSByZW5kZXJlcigpKQotICAgICAgICBvYmplY3QtPnNldE5lZWRzTGF5b3V0KCk7
CisgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICBpZiAo
cGFyZW50Tm9kZSgpID09ICZkb2N1bWVudCgpICYmIGRvY3VtZW50KCkucmVuZGVyVmlldygpKQog
ICAgICAgICBkb2N1bWVudCgpLnJlbmRlclZpZXcoKS0+cmVwYWludCgpOwogfQpAQCAtMjExLDE2
ICsyMTAsMjggQEAgdm9pZCBTVkdTVkdFbGVtZW50OjpzdmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0
IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAgICBJbnN0YW5jZUludmFsaWRhdGlvbkd1
YXJkIGd1YXJkKCp0aGlzKTsKICAgICAgICAgc2V0UHJlc2VudGF0aW9uYWxIaW50U3R5bGVJc0Rp
cnR5KCk7CiAKLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgaWYgKGF0dHJOYW1lID09IFNW
R05hbWVzOjp3aWR0aEF0dHIgfHwgYXR0ck5hbWUgPT0gU1ZHTmFtZXM6OmhlaWdodEF0dHIpIHsK
KyAgICAgICAgICAgIC8vIEZJWE1FOiB0cnkgdG8gZ2V0IHJpZCBvZiB0aGlzIGN1c3RvbSBoYW5k
bGluZyBvZiBlbWJlZGRlZCBTVkcgaW52YWxpZGF0aW9uLCBtYXliZSB0aHJvdWdoIGFic3RyYWN0
aW9uLgorICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkg
eworICAgICAgICAgICAgICAgIGJvb2wgZW1iZWRkZWRUaHJvdWdoRnJhbWUgPSBmYWxzZTsKKyNp
ZiBFTkFCTEUoTEFZRVJfQkFTRURfU1ZHX0VOR0lORSkKKyAgICAgICAgICAgICAgICBpZiAoaXM8
UmVuZGVyU1ZHUm9vdD4ocmVuZGVyZXIpICYmIGRvd25jYXN0PFJlbmRlclNWR1Jvb3Q+KHJlbmRl
cmVyKS0+aXNFbWJlZGRlZFRocm91Z2hGcmFtZUNvbnRhaW5pbmdTVkdEb2N1bWVudCgpKQorICAg
ICAgICAgICAgICAgICAgICBlbWJlZGRlZFRocm91Z2hGcmFtZSA9IHRydWU7CisjZW5kaWYKKyAg
ICAgICAgICAgICAgICBpZiAoIWVtYmVkZGVkVGhyb3VnaEZyYW1lICYmIGlzPExlZ2FjeVJlbmRl
clNWR1Jvb3Q+KHJlbmRlcmVyKSAmJiBkb3duY2FzdDxMZWdhY3lSZW5kZXJTVkdSb290PihyZW5k
ZXJlciktPmlzRW1iZWRkZWRUaHJvdWdoRnJhbWVDb250YWluaW5nU1ZHRG9jdW1lbnQoKSkKKyAg
ICAgICAgICAgICAgICAgICAgZW1iZWRkZWRUaHJvdWdoRnJhbWUgPSB0cnVlOworICAgICAgICAg
ICAgICAgIGlmIChlbWJlZGRlZFRocm91Z2hGcmFtZSkKKyAgICAgICAgICAgICAgICAgICAgcmVu
ZGVyZXItPnZpZXcoKS5zZXROZWVkc0xheW91dChNYXJrT25seVRoaXMpOworICAgICAgICAgICAg
fQorICAgICAgICB9CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURp
cnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKICAgICBpZiAoU1ZHRml0VG9WaWV3Qm94
Ojppc0tub3duQXR0cmlidXRlKGF0dHJOYW1lKSkgewotICAgICAgICBpZiAoYXV0byogcmVuZGVy
ZXIgPSB0aGlzLT5yZW5kZXJlcigpKSB7CisgICAgICAgIGlmIChhdXRvKiByZW5kZXJlciA9IHRo
aXMtPnJlbmRlcmVyKCkpCiAgICAgICAgICAgICByZW5kZXJlci0+c2V0TmVlZHNUcmFuc2Zvcm1V
cGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5k
UGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKLSAgICAgICAgfQorICAgICAg
ICBzZXRTVkdSZXNvdXJjZXNJbkFuY2VzdG9yQ2hhaW5BcmVEaXJ0eSgpOwogICAgICAgICByZXR1
cm47CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHU3RvcEVsZW1l
bnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1N0b3BFbGVtZW50LmNwcAppbmRleCAyMDc5
NmE5MDIwMjgwZGI1MzZjNGJjZjU3NDA0NGM3YzM4NzUzZDEzLi5hZDgzMjM5OWU2ZGVkYzEwOTA4
MzM2MDAxMDFhMDgxZjI0YTA3OTUxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZH
U3RvcEVsZW1lbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdTdG9wRWxlbWVudC5j
cHAKQEAgLTY2LDEwICs2Niw4IEBAIHZvaWQgU1ZHU3RvcEVsZW1lbnQ6OnN2Z0F0dHJpYnV0ZUNo
YW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiB7CiAgICAgaWYgKFByb3BlcnR5
UmVnaXN0cnk6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5hbWUpKSB7CiAgICAgICAgIEFTU0VSVChh
dHRyTmFtZSA9PSBTVkdOYW1lczo6b2Zmc2V0QXR0cik7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRl
cmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewotICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRp
b25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAgICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFy
a0ZvckxheW91dEFuZFBhcmVudFJlc291cmNlSW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAg
ICAgIH0KKyAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Cisg
ICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAg
IHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUUmVm
RWxlbWVudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVFJlZkVsZW1lbnQuY3BwCmluZGV4
IDI5OTFkYjY5MzQyMDZlYTkyN2ViZDg3ZjM3MTExNzgxZTUyMTgyZGUuLmFhZGFjOTllNTA1OWFk
ZWQ1NDI5ZWJhM2ZmNGU5NTFiYjY2YzRhZjggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2
Zy9TVkdUUmVmRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RSZWZFbGVt
ZW50LmNwcApAQCAtMTg0LDggKzE4NCw3IEBAIHZvaWQgU1ZHVFJlZkVsZW1lbnQ6OnN2Z0F0dHJp
YnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbWUpCiAgICAgaWYgKFNWR1VS
SVJlZmVyZW5jZTo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKICAgICAgICAgSW5zdGFu
Y2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jl
c291cmNlKCk7Ci0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkK
LSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVz
b3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5B
bmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRDb250ZW50RWxlbWVudC5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRFbGVtZW50LmNwcAppbmRleCBjMTQ1M2JmYzYw
NDA4Yzk1MDc0NjA3N2Q3NjFlZTE0ZDcyOTY1MWZiLi5mODRjMzRiNDQwMTJkYWFjZDgzOTViMTYy
YzQ4MTc2MDU0YzdmZWNmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENv
bnRlbnRFbGVtZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dENvbnRlbnRF
bGVtZW50LmNwcApAQCAtMTgzLDEwICsxODMsOCBAQCB2b2lkIFNWR1RleHRDb250ZW50RWxlbWVu
dDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAg
ICAgICAgaWYgKGF0dHJOYW1lID09IFNWR05hbWVzOjp0ZXh0TGVuZ3RoQXR0cikKICAgICAgICAg
ICAgIG1fc3BlY2lmaWVkVGV4dExlbmd0aCA9IG1fdGV4dExlbmd0aC0+YmFzZVZhbCgpLT52YWx1
ZSgpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkgewot
ICAgICAgICAgICAgSW5zdGFuY2VJbnZhbGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7Ci0gICAg
ICAgICAgICBSZW5kZXJTVkdSZXNvdXJjZTo6bWFya0ZvckxheW91dEFuZFBhcmVudFJlc291cmNl
SW52YWxpZGF0aW9uKCpyZW5kZXJlcik7Ci0gICAgICAgIH0KKyAgICAgICAgSW5zdGFuY2VJbnZh
bGlkYXRpb25HdWFyZCBndWFyZCgqdGhpcyk7CisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5j
ZXN0b3JDaGFpbkFyZURpcnR5KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UGF0aEVsZW1lbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKaW5kZXggYTc0OTFjNGQxYjg1Yjk3ZTM0
N2ZkNWE3MTQxMTMxNGM5Nzg0NjY5My4uMDc4YzBjNzgxMWI3NGIwMTZmMTM2Nzc2ODEzY2I2Mzhh
NmQzMWE3MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQYXRoRWxlbWVudC5jcHAKQEAg
LTkzLDE1ICs5MywxMyBAQCB2b2lkIFNWR1RleHRQYXRoRWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hh
bmdlZChjb25zdCBRdWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgaWYgKGF0dHJOYW1l
ID09IFNWR05hbWVzOjpzdGFydE9mZnNldEF0dHIpCiAgICAgICAgICAgICB1cGRhdGVSZWxhdGl2
ZUxlbmd0aHNJbmZvcm1hdGlvbigpOwogCi0gICAgICAgIGlmIChhdXRvIHJlbmRlcmVyID0gdGhp
cy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5
b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0
U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwog
ICAgIH0KIAogICAgIGlmIChTVkdVUklSZWZlcmVuY2U6OmlzS25vd25BdHRyaWJ1dGUoYXR0ck5h
bWUpKSB7CiAgICAgICAgIGJ1aWxkUGVuZGluZ1Jlc291cmNlKCk7Ci0gICAgICAgIGlmIChhdXRv
IHJlbmRlcmVyID0gdGhpcy0+cmVuZGVyZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKKyAgICAgICAgc2V0U1ZHUmVzb3VyY2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAg
ICAgICAgcmV0dXJuOwogICAgIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1RleHRQb3NpdGlvbmluZ0VsZW1lbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1RleHRQ
b3NpdGlvbmluZ0VsZW1lbnQuY3BwCmluZGV4IGZlMjFlNjZhZjU2NjUyODkwYWIzMTgwODNkZDgz
MTljZWYxZTYyMDIuLmJhYTU1MWRjM2YzMTQwZGUyZTUxNWNmOTU0NDBjNGRkZGY1ZTdjNzkgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdUZXh0UG9zaXRpb25pbmdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVGV4dFBvc2l0aW9uaW5nRWxlbWVudC5jcHAK
QEAgLTEwNiw5ICsxMDYsOCBAQCB2b2lkIFNWR1RleHRQb3NpdGlvbmluZ0VsZW1lbnQ6OnN2Z0F0
dHJpYnV0ZUNoYW5nZWQoY29uc3QgUXVhbGlmaWVkTmFtZSYgYXR0ck5hbQogICAgICAgICBpZiAo
YXV0byByZW5kZXJlciA9IHRoaXMtPnJlbmRlcmVyKCkpIHsKICAgICAgICAgICAgIGlmIChhdXRv
KiB0ZXh0QW5jZXN0b3IgPSBSZW5kZXJTVkdUZXh0Ojpsb2NhdGVSZW5kZXJTVkdUZXh0QW5jZXN0
b3IoKnJlbmRlcmVyKSkKICAgICAgICAgICAgICAgICB0ZXh0QW5jZXN0b3ItPnNldE5lZWRzUG9z
aXRpb25pbmdWYWx1ZXNVcGRhdGUoKTsKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjpt
YXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKICAg
ICAgICAgfQotCisgICAgICAgIHNldFNWR1Jlc291cmNlc0luQW5jZXN0b3JDaGFpbkFyZURpcnR5
KCk7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3N2Zy9TVkdVc2VFbGVtZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9TVkdVc2VFbGVtZW50
LmNwcAppbmRleCBiOWVkZWY2MzFlNjZlNjBmZjU4Yzc1MjM0OTgxZTIxNDUzMGU0ZmZhLi5hMDFm
NmJhZGExYzFkNmMyNWY4MjBmNzI2YzhlY2VlODE4MmVjYjZhIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9zdmcvU1ZHVXNlRWxlbWVudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvc3ZnL1NW
R1VzZUVsZW1lbnQuY3BwCkBAIC0xNjUsOCArMTY1LDcgQEAgdm9pZCBTVkdVc2VFbGVtZW50Ojpz
dmdBdHRyaWJ1dGVDaGFuZ2VkKGNvbnN0IFF1YWxpZmllZE5hbWUmIGF0dHJOYW1lKQogICAgICAg
ICAgICAgaWYgKGF1dG8gdGFyZ2V0Q2xvbmUgPSB0aGlzLT50YXJnZXRDbG9uZSgpKQogICAgICAg
ICAgICAgICAgIHRyYW5zZmVyU2l6ZUF0dHJpYnV0ZXNUb1RhcmdldENsb25lKCp0YXJnZXRDbG9u
ZSk7CiAgICAgICAgIH0KLSAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gdGhpcy0+cmVuZGVy
ZXIoKSkKLSAgICAgICAgICAgIFJlbmRlclNWR1Jlc291cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFy
ZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVyKTsKKyAgICAgICAgc2V0U1ZHUmVzb3Vy
Y2VzSW5BbmNlc3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9TVkdWaWV3RWxlbWVudC5jcHAKaW5kZXggZWNmZTQzMWE0NTMzYzM2YzA4
YjUwMzIzYmMyMTQ0YmNlYmU0OTBlNS4uZWFhMjY1MTY0YzQ5NmFkZWEzODI1ZTFiMzQ4ZTNmYTQw
ZDllMGE2YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL1NWR1ZpZXdFbGVtZW50LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvU1ZHVmlld0VsZW1lbnQuY3BwCkBAIC01OSwxMiAr
NTksMTAgQEAgdm9pZCBTVkdWaWV3RWxlbWVudDo6c3ZnQXR0cmlidXRlQ2hhbmdlZChjb25zdCBR
dWFsaWZpZWROYW1lJiBhdHRyTmFtZSkKICAgICAgICAgcmV0dXJuOwogCiAgICAgaWYgKFNWR0Zp
dFRvVmlld0JveDo6aXNLbm93bkF0dHJpYnV0ZShhdHRyTmFtZSkpIHsKLSAgICAgICAgaWYgKG1f
dGFyZ2V0RWxlbWVudCkgewotICAgICAgICAgICAgbV90YXJnZXRFbGVtZW50LT5pbmhlcml0Vmll
d0F0dHJpYnV0ZXMoKnRoaXMpOwotICAgICAgICAgICAgaWYgKGF1dG8qIHJlbmRlcmVyID0gbV90
YXJnZXRFbGVtZW50LT5yZW5kZXJlcigpKQotICAgICAgICAgICAgICAgIFJlbmRlclNWR1Jlc291
cmNlOjptYXJrRm9yTGF5b3V0QW5kUGFyZW50UmVzb3VyY2VJbnZhbGlkYXRpb24oKnJlbmRlcmVy
KTsKLSAgICAgICAgfQotCisgICAgICAgIGlmICghbV90YXJnZXRFbGVtZW50KQorICAgICAgICAg
ICAgcmV0dXJuOworICAgICAgICBtX3RhcmdldEVsZW1lbnQtPmluaGVyaXRWaWV3QXR0cmlidXRl
cygqdGhpcyk7CisgICAgICAgIG1fdGFyZ2V0RWxlbWVudC0+c2V0U1ZHUmVzb3VyY2VzSW5BbmNl
c3RvckNoYWluQXJlRGlydHkoKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAo=
</data>

          </attachment>
      

    </bug>

</bugzilla>