<?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>232457</bug_id>
          
          <creation_ts>2021-10-28 15:09:07 -0700</creation_ts>
          <short_desc>[GPU Process] [Filters 3/23] Make SVGFilter and CSSFilter work in the same coordinate system</short_desc>
          <delta_ts>2021-12-10 01:32:16 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Layout and Rendering</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=233843</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=233849</see_also>
    
    <see_also>https://bugs.webkit.org/show_bug.cgi?id=234130</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>
          
          <blocked>231253</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Said Abou-Hallawa">sabouhallawa</reporter>
          <assigned_to name="Said Abou-Hallawa">sabouhallawa</assigned_to>
          <cc>bfulgham</cc>
    
    <cc>changseok</cc>
    
    <cc>darin</cc>
    
    <cc>dino</cc>
    
    <cc>esprehn+autocc</cc>
    
    <cc>ews-watchlist</cc>
    
    <cc>fmalita</cc>
    
    <cc>fred.wang</cc>
    
    <cc>glenn</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>kondapallykalyan</cc>
    
    <cc>macpherson</cc>
    
    <cc>menard</cc>
    
    <cc>pdr</cc>
    
    <cc>schenney</cc>
    
    <cc>sergio</cc>
    
    <cc>simon.fraser</cc>
    
    <cc>webkit-bug-importer</cc>
    
    <cc>zalan</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1809858</commentid>
    <comment_count>0</comment_count>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-28 15:09:07 -0700</bug_when>
    <thetext>Currently SVGFilter sets the following members of Filter

1. AffineTransform m_absoluteTransform: this is the scaling part from the transformation from the target element to the outermost coordinate system
2. FloatSize m_filterResolution: this is the clamping scale if the size of the result ImageBuffers exceeds MaxClampedArea

And the CSSFilter sets the following member of Filter:

1. float m_filterScale: this is the document().deviceScaleFactor()

The discrepancy happens also when creating the result ImageBuffers. For SVGFilter, we create them with scaleFactor=1. This means the logicalSize == backendSize. But for CSSFilter we create them with scaleFactor = m_filterScale. This means the logicalSize != backendSize in this case.

We need to unify the coordinates system for both filters. We need also to replace the three members by a single FloatSize called &quot;m_filterScale&quot;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809861</commentid>
    <comment_count>1</comment_count>
      <attachid>442749</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-28 15:17:09 -0700</bug_when>
    <thetext>Created attachment 442749
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1809862</commentid>
    <comment_count>2</comment_count>
      <attachid>442750</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-10-28 15:19:02 -0700</bug_when>
    <thetext>Created attachment 442750
Patch for review</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1811978</commentid>
    <comment_count>3</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2021-11-04 15:10:19 -0700</bug_when>
    <thetext>&lt;rdar://problem/85035379&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813457</commentid>
    <comment_count>4</comment_count>
      <attachid>443769</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-09 19:40:18 -0800</bug_when>
    <thetext>Created attachment 443769
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813461</commentid>
    <comment_count>5</comment_count>
      <attachid>443772</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-09 20:08:16 -0800</bug_when>
    <thetext>Created attachment 443772
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813472</commentid>
    <comment_count>6</comment_count>
      <attachid>443775</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-09 21:58:16 -0800</bug_when>
    <thetext>Created attachment 443775
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813501</commentid>
    <comment_count>7</comment_count>
      <attachid>443781</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-10 01:25:30 -0800</bug_when>
    <thetext>Created attachment 443781
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813587</commentid>
    <comment_count>8</comment_count>
      <attachid>443814</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-10 06:50:56 -0800</bug_when>
    <thetext>Created attachment 443814
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813698</commentid>
    <comment_count>9</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-10 10:44:44 -0800</bug_when>
    <thetext>ChangeLog entry in LayoutTests/ChangeLog contains OOPS!.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813702</commentid>
    <comment_count>10</comment_count>
      <attachid>443837</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-11-10 10:47:46 -0800</bug_when>
    <thetext>Created attachment 443837
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813718</commentid>
    <comment_count>11</comment_count>
    <who name="EWS">ews-feeder</who>
    <bug_when>2021-11-10 11:21:24 -0800</bug_when>
    <thetext>Committed r285597 (244103@main): &lt;https://commits.webkit.org/244103@main&gt;

All reviewed patches have been landed. Closing bug and clearing flags on attachment 443837.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1813774</commentid>
    <comment_count>12</comment_count>
      <attachid>443837</attachid>
    <who name="Darin Adler">darin</who>
    <bug_when>2021-11-10 13:31:53 -0800</bug_when>
    <thetext>Comment on attachment 443837
Patch

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

A few coding style tweak thoughts

&gt; Source/WebCore/platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:258
&gt;      IntSize destSize = lastEffect.absolutePaintRect().size();
&gt; -    destSize.scale(lastEffect.filter().filterScale());
&gt;      FloatRect destRect = FloatRect(FloatPoint(), destSize);
&gt;      return destRect;

Could refactor this to this one-liner, which I think would be easier to read:

    return { { }, lastEffect.absolutePaintRect().size() };

&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:279
&gt; +    paintingData.width = ceilf(effectDrawingRect.width());
&gt; +    paintingData.height = ceilf(effectDrawingRect.height());
&gt; +    paintingData.radiusX = ceilf(radiusX);
&gt; +    paintingData.radiusY = ceilf(radiusY);

Wasteful to call ceilf on integers. Should remove these ceilf calls.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:287
&gt;      IntSize scaledSize(rect.size());

Should remove &quot;scaledSize&quot; and just use rect.size().

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:301
&gt;      IntSize scaledSize(rect.size());

Should remove &quot;scaledSize&quot; and just use rect.size().

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:315
&gt;      IntRect scaledRect(rect);

Should remove &quot;scaledRect&quot; and just use rect.

&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:316
&gt;      IntSize scaledPaintSize(m_absolutePaintRect.size());

Should probably either remove this, or rename it. It’s not scaled.

&gt; Source/WebCore/platform/graphics/filters/SourceGraphic.cpp:38
&gt;      Filter&amp; filter = this-&gt;filter();
&gt;      FloatRect paintRect = filter.sourceImageRect();
&gt; -    paintRect.scale(filter.filterResolution().width(), filter.filterResolution().height());
&gt;      setAbsolutePaintRect(enclosingIntRect(paintRect));

Should change this to a one-liner:

    setAbsolutePaintRect(enclosingIntRect(filter().sourceImageRect()));

&gt; Source/WebCore/rendering/CSSFilter.h:65
&gt; +    CSSFilter(float scaleFactor);

Maybe put &quot;explicit&quot; here.

&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:121
&gt; +    // FIXME: this rebuilds the entire effects chain even if the filter style didn&apos;t change.

We capitalize sentences in FIXME comments.

&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:193
&gt; +    AffineTransform effectiveTransform = AffineTransform(filterScale.width(), 0, 0, filterScale.height(), 0, 0);

I suggest using &quot;auto&quot; instead of writing AffineTransform twice.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1822577</commentid>
    <comment_count>13</comment_count>
      <attachid>443837</attachid>
    <who name="Said Abou-Hallawa">sabouhallawa</who>
    <bug_when>2021-12-10 01:31:47 -0800</bug_when>
    <thetext>Comment on attachment 443837
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/coreimage/FilterEffectRendererCoreImage.mm:258
&gt;&gt;      return destRect;
&gt; 
&gt; Could refactor this to this one-liner, which I think would be easier to read:
&gt; 
&gt;     return { { }, lastEffect.absolutePaintRect().size() };

The whole class was removed.

&gt;&gt; Source/WebCore/platform/graphics/filters/FEMorphology.cpp:279
&gt;&gt; +    paintingData.radiusY = ceilf(radiusY);
&gt; 
&gt; Wasteful to call ceilf on integers. Should remove these ceilf calls.

This will be addressed in bug 234130.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:287
&gt;&gt;      IntSize scaledSize(rect.size());
&gt; 
&gt; Should remove &quot;scaledSize&quot; and just use rect.size().

The function FilterEffect::unmultipliedResult() was moved to FilterImage::getPixelBuffer(). This unnecessary local variable was removed.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:301
&gt;&gt;      IntSize scaledSize(rect.size());
&gt; 
&gt; Should remove &quot;scaledSize&quot; and just use rect.size().

The functions FilterEffect::premultipliedResult() and the FilterEffect::unmultipliedResult() were merged and moved to FilterImage::getPixelBuffer(). This unnecessary local variable was removed.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:315
&gt;&gt;      IntRect scaledRect(rect);
&gt; 
&gt; Should remove &quot;scaledRect&quot; and just use rect.

This function was moved to FilterImage.cpp and it now takes PixelBuffers for the source and the destination. This unnecessary local variable was removed.

&gt;&gt; Source/WebCore/platform/graphics/filters/FilterEffect.cpp:316
&gt;&gt;      IntSize scaledPaintSize(m_absolutePaintRect.size());
&gt; 
&gt; Should probably either remove this, or rename it. It’s not scaled.

This unnecessary local variable was removed.

&gt;&gt; Source/WebCore/platform/graphics/filters/SourceGraphic.cpp:38
&gt;&gt;      setAbsolutePaintRect(enclosingIntRect(paintRect));
&gt; 
&gt; Should change this to a one-liner:
&gt; 
&gt;     setAbsolutePaintRect(enclosingIntRect(filter().sourceImageRect()));

This function was completely removed and the base class method FilterEffect::calculateImageRect() is used instead. Also no scaling is required to calculate the imageRect. All imageRects are now in filter coordinates.

&gt;&gt; Source/WebCore/rendering/CSSFilter.h:65
&gt;&gt; +    CSSFilter(float scaleFactor);
&gt; 
&gt; Maybe put &quot;explicit&quot; here.

The constructor of CSSFilter was changed and it takes more than one argument. So no need to &quot;explicit&quot;.

&gt;&gt; Source/WebCore/rendering/RenderLayerFilters.cpp:121
&gt;&gt; +    // FIXME: this rebuilds the entire effects chain even if the filter style didn&apos;t change.
&gt; 
&gt; We capitalize sentences in FIXME comments.

This will be addressed in bug 234130.

&gt;&gt; Source/WebCore/rendering/svg/RenderSVGResourceFilter.cpp:193
&gt;&gt; +    AffineTransform effectiveTransform = AffineTransform(filterScale.width(), 0, 0, filterScale.height(), 0, 0);
&gt; 
&gt; I suggest using &quot;auto&quot; instead of writing AffineTransform twice.

This will be addressed in bug 234130.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442749</attachid>
            <date>2021-10-28 15:17:09 -0700</date>
            <delta_ts>2021-11-09 19:41:34 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211028151708.patch</filename>
            <type>text/plain</type>
            <size>110746</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg0Nzc0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYjIxNTA4ZWVkN2ExM2Rm
OWU0M2NiMDIwZDg0MzVkY2FmMGQ0YjY0Yi4uMTczMzk0ZGE4MTFiMGYzMDc2NTdlYzhlNTJiMzg2
ZGUwMWVjYjZhNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDIzOSBAQAorMjAyMS0xMC0yOCAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAg
IEN1cnJlbnRseSBTVkdGaWx0ZXIgc2V0cyB0aGUgZm9sbG93aW5nIG1lbWJlcnMgb2YgRmlsdGVy
CisKKyAgICAgICAgMS4gQWZmaW5lVHJhbnNmb3JtIG1fYWJzb2x1dGVUcmFuc2Zvcm06IHRoaXMg
aXMgdGhlIHNjYWxpbmcgcGFydCBmcm9tIHRoZQorICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbiBm
cm9tIHRoZSB0YXJnZXQgZWxlbWVudCB0byB0aGUgb3V0ZXJtb3N0IGNvb3JkaW5hdGUgc3lzdGVt
CisgICAgICAgIDIuIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRpb246IHRoaXMgaXMgdGhlIGNs
YW1waW5nIHNjYWxlIGlmIHRoZSBzaXplCisgICAgICAgICAgIG9mIHRoZSByZXN1bHQgSW1hZ2VC
dWZmZXJzIGV4Y2VlZHMgTWF4Q2xhbXBlZEFyZWEKKworICAgICAgICBBbmQgdGhlIENTU0ZpbHRl
ciBzZXRzIHRoZSBmb2xsb3dpbmcgbWVtYmVyIG9mIEZpbHRlcjoKKworICAgICAgICAxLiBmbG9h
dCBtX2ZpbHRlclNjYWxlOiB0aGlzIGlzIHRoZSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9y
KCkKKworICAgICAgICBUaGUgZGlzY3JlcGFuY3kgaGFwcGVucyBhbHNvIHdoZW4gY3JlYXRpbmcg
dGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMuIEZvciAKKyAgICAgICAgU1ZHRmlsdGVyLCB3ZSBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yPTEuIFRoaXMgbWVhbnMgdGhlIGxvZ2ljYWxTaXplCisg
ICAgICAgID09IGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZSBjcmVhdGUgdGhlbSB3
aXRoIHNjYWxlRmFjdG9yCisgICAgICAgID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAgICAgIFdlIG5l
ZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0ZXJzLiBXZSBu
ZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBieSBhIHNpbmds
ZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAqIGNzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFs
dWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZl
Y3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAg
ICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVudE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVLZXJuZWxTaXpl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdh
cmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNw
cDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZzZXQ6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAg
KFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
OjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldEZpbHRl
clNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1hZ2VSZWN0IGNvbnN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAg
KFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6
c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZp
bHRlcik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmZpbHRlclJlc29sdXRpb24gY29uc3Qp
OiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpzZXRGaWx0ZXJSZXNvbHV0aW9u
KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6YWJzb2x1dGVUcmFuc2Zvcm0g
Y29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc1NWR0ZpbHRlciBj
b25zdCk6IERlbGV0ZWQuCisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OmlzQ1NTRmlsdGVyIGNv
bnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11bHRp
cGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBs
aWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0
ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxC
dWZmZXJUb0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb252
ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZm
ZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVy
RWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAg
ICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgor
ICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NT
RmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpDU1NGaWx0ZXIp
OgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6Cisg
ICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNT
U0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3Jl
OjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cyk6CisgICAgICAg
IChXZWJDb3JlOjpDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpDU1NGaWx0ZXI6Om91dHB1dFJlY3QgY29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9D
U1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxheWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIpOgorICAg
ICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAg
ICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAg
ICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNl
KToKKyAgICAgICAgKiByZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAg
ICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNvdXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUlt
YWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgor
ICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0
ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmls
dGVyOjpjcmVhdGUpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpzY2FsZWRCeUZpbHRl
clJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5oOgorCisyMDIxLTEwLTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRA
YXBwbGUuY29tPgorCisgICAgICAgIFtHUFUgUHJvY2Vzc10gSW50cm9kdWNlIEZpbHRlckZ1bmN0
aW9uIGFuZCBtYWtlIGl0IHRoZSBiYXNlIGNsYXNzIG9mIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0
CisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0yMzI0MTMK
KworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUaGlzIGFs
bG93cyBDU1NGaWx0ZXIgdG8gaG9sZCBhIGxpc3Qgb2YgRmlsdGVyRnVuY3Rpb25zLiBUaGUgRmls
dGVyIGluCisgICAgICAgIHRoaXMgY2FzZSB3aWxsIGFjdCBsaWtlIGEgY29tcG9zaXRlIHBhdHRl
cm4gb2YgdGhlIEZpbHRlckVmZmVjdC4KKworICAgICAgICBUaGlzIHBhdGNoIGFsc28KKyAgICAg
ICAgMS4gUmVtb3ZlcyB0aGUgdmlydHVhbCBmdW5jdGlvbiBmaWx0ZXJOYW1lKCkgZnJvbSBhbGwg
dGhlIEZpbHRlckVmZmVjdAorICAgICAgICAgICBjbGFzc2VzLiBJdCByZXBsYWNlcyBpdCB3aXRo
IGEgc3RhdGljIGZ1bmN0aW9uIGluIEZpbHRlckZ1bmN0aW9uLgorICAgICAgICAyLiBSZW1vdmVz
IHRoZSB2aXJ0dWFsIGZ1bmN0aW9uIGZpbHRlckVmZmVjdFR5cGUoKSBhbmQgdGhlIGZ1bmN0aW9u
CisgICAgICAgICAgIEZpbHRlckVmZmVjdDo6ZmlsdGVyRWZmZWN0Q2xhc3NUeXBlKCkgc2luY2Ug
dGhleSBjYW4gYm90aCBiZSByZXBsYWNlZAorICAgICAgICAgICBieSBGaWx0ZXJGdW5jdGlvbjo6
ZmlsdGVyVHlwZSgpLgorICAgICAgICAzLiBBZGRzIHRyYWl0IG1hY3JvcyBmb3IgYWxsIEZpbHRl
ckVmZmVjdHMgYW5kIHRoZSBTVkdGaWx0ZXJzIGNsYXNzLgorCisgICAgICAgICogU291cmNlcy50
eHQ6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpzdXBwb3J0c0NvcmVJbWFnZVJlbmRlcmluZyk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJF
ZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6Y29ubmVjdENJRmlsdGVycyk6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZF
QmxlbmQ6OkZFQmxlbmQpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVC
bGVuZC5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29sb3JNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb2xvck1h
dHJpeDo6RkVDb2xvck1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbG9yTWF0cml4Lmg6CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyOjpGRUNvbXBvbmVudFRyYW5zZmVyKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNmZXIu
aDoKKyAgICAgICAgKGlzVHlwZSk6IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbXBvc2l0
ZTo6RkVDb21wb3NpdGUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVD
b21wb3NpdGUuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9s
dmVNYXRyaXguY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVDb252b2x2ZU1hdHJpeDo6RkVDb252
b2x2ZU1hdHJpeCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZv
bHZlTWF0cml4Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1
c2VMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpZmZ1c2VMaWdodGluZzo6RkVE
aWZmdXNlTGlnaHRpbmcpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVE
aWZmdXNlTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
RGlzcGxhY2VtZW50TWFwLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRGlzcGxhY2VtZW50TWFw
OjpGRURpc3BsYWNlbWVudE1hcCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5oOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVEcm9wU2hhZG93LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJvcFNoYWRvdzo6RkVE
cm9wU2hhZG93KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRmxvb2QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVGbG9vZDo6RkVGbG9v
ZCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmg6CisgICAg
ICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAg
ICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6RkVHYXVzc2lhbkJsdXIpOgorICAgICAgICAq
IHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaDoKKyAgICAgICAgKCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxpZ2h0aW5n
Lmg6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZFTWVyZ2U6OkZFTWVyZ2UpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5oOgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAg
KiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpGRU1vcnBob2xvZ3k6OkZFTW9ycGhvbG9neSk6CisgICAgICAgICogcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpG
RU9mZnNldCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5o
OgorICAgICAgICAoKTogRGVsZXRlZC4KKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVNwZWN1bGFy
TGlnaHRpbmc6OkZFU3BlY3VsYXJMaWdodGluZyk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVNwZWN1bGFyTGlnaHRpbmcuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OkZFVGls
ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6Cisg
ICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuaDoKKyAgICAgICAgKiBw
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHA6CisgICAgICAgIChXZWJD
b3JlOjpGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuaDoKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6RmlsdGVyRWZmZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQp
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFn
ZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaDoKKyAgICAgICAgKGlzVHlwZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXJFZmZlY3Q6OmZpbHRlckVmZmVjdFR5cGUgY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpmaWx0ZXJFZmZlY3RDbGFzc1R5cGUgY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3Bw
OiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpGaWx0ZXJGdW5jdGlv
bik6CisgICAgICAgIChXZWJDb3JlOjpmaWx0ZXJOYW1lcyk6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJGdW5jdGlvbjo6ZmlsdGVyTmFtZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJGdW5jdGlvbi5oOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
ckZ1bmN0aW9uOjpmaWx0ZXJUeXBlIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1
bmN0aW9uOjppc0NTU0ZpbHRlciBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5j
dGlvbjo6aXNTVkdGaWx0ZXIgY29uc3QpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRnVuY3Rp
b246OmlzRmlsdGVyIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpp
c0ZpbHRlckVmZmVjdCBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6
c291cmNlQWxwaGFOYW1lKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpzb3Vy
Y2VHcmFwaGljTmFtZSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6ZmlsdGVy
TmFtZSBjb25zdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VB
bHBoYS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTb3VyY2VBbHBoYTo6U291cmNlQWxwaGEpOgor
ICAgICAgICAoV2ViQ29yZTo6U291cmNlQWxwaGE6OmVmZmVjdE5hbWUpOiBEZWxldGVkLgorICAg
ICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuaDoKKyAgICAgICAg
KFdlYkNvcmU6OlNvdXJjZUFscGhhOjplZmZlY3ROYW1lKToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6OlNvdXJjZUdyYXBoaWM6OmVmZmVjdE5hbWUpOiBEZWxldGVkLgor
ICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oOgorICAg
ICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6ZWZmZWN0TmFtZSk6CisgICAgICAgIChXZWJD
b3JlOjpTb3VyY2VHcmFwaGljOjpTb3VyY2VHcmFwaGljKToKKyAgICAgICAgKCk6IERlbGV0ZWQu
CisgICAgICAgIChpc1R5cGUpOiBEZWxldGVkLgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpDU1NGaWx0ZXIpOgorICAgICAg
ICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6RkVJbWFnZTo6RkVJbWFnZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZH
RkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRlcik6CisgICAgICAgICogc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyQnVpbGRlci5jcHA6CisKIDIwMjEtMTAtMjUgIFpp
cmFuIFN1biAgPHpzdW5AaWdhbGlhLmNvbT4KIAogICAgICAgICBbY3NzLXdyaXRpbmctbW9kZXNd
IEZpeCBzaXppbmcgb2Ygb3J0aG9nb25hbCBlbGVtZW50cyB3aXRoIHBlcmNlbnRhZ2UgbWFyZ2lu
cwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvU291cmNlcy50eHQgYi9Tb3VyY2UvV2ViQ29y
ZS9Tb3VyY2VzLnR4dAppbmRleCA0YmVhMTRmNDRmYmY1MjExOTBmNjMzYWI2NzMwNjkxMjMzYTU1
YmY0Li45NDc1NzdmNTA1MzRiNjU2YTM5YWIyZDA4MWRmZjMxMTE5ZWQ0MTEzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2VzLnR4dAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Tb3VyY2Vz
LnR4dApAQCAtMjA2NSw2ICsyMDY1LDcgQEAgcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKIHBsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAogcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GaWx0ZXJFZmZlY3RSZW5kZXJlci5jcHAKK3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRnVuY3Rpb24uY3BwCiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlck9w
ZXJhdGlvbi5jcHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyT3BlcmF0aW9ucy5j
cHAKIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvUG9pbnRMaWdodFNvdXJjZS5jcHAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBi
L1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCA2
YjY0YjlhYjA4MTRmYmUzZjM3OTRlNDlhYTI3N2IxMDNhOTQ5MzQxLi4xNzBkYTg3MTdkZjRmZTlh
ZGYzZGEwNzVhY2Q5YTQ1YTM1OWU0ZjAzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0xMDU2Niw2ICsxMDU2Niw4IEBACiAJCTcy
NEVFNTRFMURDN0YyNUIwMEE5MUZGQiAvKiBBY3Rpdml0eVN0YXRlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IEFjdGl2aXR5U3RhdGUuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJNzI0RUU1NEYxREM3RjI1QjAwQTkxRkZCIC8qIEFjdGl2aXR5U3RhdGVDaGFuZ2VP
YnNlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7
IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBBY3Rpdml0eVN0YXRl
Q2hhbmdlT2JzZXJ2ZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI1MjM5NkIy
NTRDQURDMjAwRjVGQjE1IC8qIE5hdGl2ZUltYWdlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IE5h
dGl2ZUltYWdlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJNzI2MkQ3NTYyNzJB
MTc0MTAwQzU2QTA5IC8qIEZpbHRlckZ1bmN0aW9uLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEZpbHRlckZ1
bmN0aW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCTcyNjJENzU3MjcyQTE3NDEw
MEM1NkEwOSAvKiBGaWx0ZXJGdW5jdGlvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5j
ZTsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBGaWx0ZXJG
dW5jdGlvbi5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCTcyNjZGMDEzMjI0MUJD
RTIwMDgzMzk3NSAvKiBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGgg
PSBTVkdQcm9wZXJ0eUFuaW1hdG9yRmFjdG9yeS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9
OwogCQk3MjY2RjAxNDIyNDFCRkIyMDA4MzM5NzUgLyogU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmlt
YXRvckltcGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZHUHJpbWl0aXZlUHJvcGVydHlBbmltYXRvcklt
cGwuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJNzI2NkYwMTUyMjQxQzA5ODAwODMz
OTc1IC8qIFNWR1ByaW1pdGl2ZVByb3BlcnR5QW5pbWF0b3IuaCAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU1ZH
UHJpbWl0aXZlUHJvcGVydHlBbmltYXRvci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpA
QCAtMjUyOTksNiArMjUzMDEsOCBAQAogCQkJCTA4QzkyNTE4MEZDQzdDNEEwMDQ4MERFQyAvKiBG
aWx0ZXJFZmZlY3QuaCAqLywKIAkJCQkyQzg1NjUzODI0QzEwQjBCMDBBMzc2NzMgLyogRmlsdGVy
RWZmZWN0UmVuZGVyZXIuY3BwICovLAogCQkJCTJDODU2NTMzMjRDMEY3M0MwMEEzNzY3MyAvKiBG
aWx0ZXJFZmZlY3RSZW5kZXJlci5oICovLAorCQkJCTcyNjJENzU3MjcyQTE3NDEwMEM1NkEwOSAv
KiBGaWx0ZXJGdW5jdGlvbi5jcHAgKi8sCisJCQkJNzI2MkQ3NTYyNzJBMTc0MTAwQzU2QTA5IC8q
IEZpbHRlckZ1bmN0aW9uLmggKi8sCiAJCQkJNDlFQ0VCNjMxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbi5jcHAgKi8sCiAJCQkJNDlFQ0VCNjQxNDk5NzkwRDAwQ0REM0E0IC8qIEZp
bHRlck9wZXJhdGlvbi5oICovLAogCQkJCTQ5RUNFQjY1MTQ5OTc5MEQwMENERDNBNCAvKiBGaWx0
ZXJPcGVyYXRpb25zLmNwcCAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZh
bHVlLmNwcAppbmRleCA4Y2Y5MDlhZTllNTM3MjRiOTFkYjRhY2UxNGFlMjg1NzFkZDk1NTI2Li5k
NmI0M2ExYTFjMWE2OGU2MWY4NDU2MzA1OWZlNGQ1Zjc0MDRjNTY3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCkBAIC0xMjYsNyArMTI2LDYgQEAgUmVmUHRy
PEltYWdlPiBDU1NGaWx0ZXJJbWFnZVZhbHVlOjppbWFnZShSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uc3QgRmxvYXRTaXoKICAgICBhdXRvIGNzc0ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRl
KCk7CiAgICAgY3NzRmlsdGVyLT5zZXRTb3VyY2VJbWFnZShXVEZNb3ZlKHRleHR1cmUpKTsKICAg
ICBjc3NGaWx0ZXItPnNldFNvdXJjZUltYWdlUmVjdChpbWFnZVJlY3QpOwotICAgIGNzc0ZpbHRl
ci0+c2V0RmlsdGVyUmVnaW9uKGltYWdlUmVjdCk7CiAgICAgaWYgKCFjc3NGaWx0ZXItPmJ1aWxk
KHJlbmRlcmVyLCBtX2ZpbHRlck9wZXJhdGlvbnMsIEZpbHRlckNvbnN1bWVyOjpGaWx0ZXJGdW5j
dGlvbikpCiAgICAgICAgIHJldHVybiAmSW1hZ2U6Om51bGxJbWFnZSgpOwogICAgIGNzc0ZpbHRl
ci0+YXBwbHkoKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbSBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZS5tbQppbmRleCA5N2UxMTM3YjI5ZDcxYzJiNTQ0MTU3MzA2NzI0MDBiODI0MjhiMzYxLi45
OWIxNjlhMzgxZTEyMjE3NzYwMmEyYTczMjMxYjQwYjFiOGVlOWJmIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVy
ZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29y
ZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC03MiwxMSArNzIsMTEg
QEAgc3RhdGljIGJvb2wgaXNOdWxsT3JMaW5lYXJDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uKGNv
bnN0IEZFQ29tcG9uZW50VHJhbnNmZXImIGUKIGJvb2wgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3Jl
SW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVmZmVjdCYgZWZmZWN0KQog
ewogICAgIC8vIEZJWE1FOiBjaGFuZ2UgcmV0dXJuIHZhbHVlIHRvIHRydWUgb25jZSB0aGV5IGFy
ZSBpbXBsZW1lbnRlZAotICAgIHN3aXRjaCAoZWZmZWN0LmZpbHRlckVmZmVjdENsYXNzVHlwZSgp
KSB7CisgICAgc3dpdGNoIChlZmZlY3QuZmlsdGVyVHlwZSgpKSB7CiAgICAgY2FzZSBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWM6CiAgICAgICAgIHJldHVybiB0cnVlOwogICAgICAg
ICAgICAgCi0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbG9yTWF0cml4OiB7CisgICAg
Y2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXg6IHsKICAgICAgICAgc3dpdGNo
IChkb3duY2FzdDxGRUNvbG9yTWF0cml4PihlZmZlY3QpLnR5cGUoKSkgewogICAgICAgICBjYXNl
IEZFQ09MT1JNQVRSSVhfVFlQRV9VTktOT1dOOgogICAgICAgICBjYXNlIEZFQ09MT1JNQVRSSVhf
VFlQRV9MVU1JTkFOQ0VUT0FMUEhBOgpAQCAtODgsMjYgKzg4LDEwIEBAIGJvb2wgRmlsdGVyRWZm
ZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnN1cHBvcnRzQ29yZUltYWdlUmVuZGVyaW5nKEZpbHRlckVm
ZmVjdCYgZWZmCiAgICAgICAgIH0KICAgICB9CiAKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlw
ZTo6Q29tcG9uZW50VHJhbnNmZXI6CisgICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29t
cG9uZW50VHJhbnNmZXI6CiAgICAgICAgIHJldHVybiBpc051bGxPckxpbmVhckNvbXBvbmVudFRy
YW5zZmVyRnVuY3Rpb24oZG93bmNhc3Q8RkVDb21wb25lbnRUcmFuc2Zlcj4oZWZmZWN0KSk7CiAK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6QmxlbmQ6Ci0gICAgY2FzZSBGaWx0ZXJFZmZl
Y3Q6OlR5cGU6OkNvbXBvc2l0ZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29udm9s
dmVNYXRyaXg6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRpZmZ1c2VMaWdodGluZzoK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RGlzcGxhY2VtZW50TWFwOgotICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpEcm9wU2hhZG93OgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpU
eXBlOjpGbG9vZDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6R2F1c3NpYW5CbHVyOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpJbWFnZToKLSAgICBjYXNlIEZpbHRlckVmZmVj
dDo6VHlwZTo6TGlnaHRpbmc6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok1lcmdlOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpNb3JwaG9sb2d5OgotICAgIGNhc2UgRmlsdGVy
RWZmZWN0OjpUeXBlOjpPZmZzZXQ6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNwZWN1
bGFyTGlnaHRpbmc6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlRpbGU6Ci0gICAgY2Fz
ZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlR1cmJ1bGVuY2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OlNvdXJjZUFscGhhOgorICAgIGRlZmF1bHQ6CiAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcmV0dXJuIGZhbHNlOwpAQCAtMTM3LDMyICsxMjEsMTQgQEAgUmV0YWluUHRy
PENJSW1hZ2U+IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpjb25uZWN0Q0lGaWx0ZXJz
KEZpbHRlckVmZmVjdCYKICAgICBpZiAoZWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuaXNFbXB0
eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhlZmZlY3QuYWJzb2x1dGVQYWlu
dFJlY3QoKS5zaXplKCkpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKICAgICAKLSAgICBzd2l0
Y2ggKGVmZmVjdC5maWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSkgeworICAgIHN3aXRjaCAoZWZmZWN0
LmZpbHRlclR5cGUoKSkgewogICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFw
aGljOgogICAgICAgICByZXR1cm4gaW1hZ2VGb3JTb3VyY2VHcmFwaGljKGRvd25jYXN0PFNvdXJj
ZUdyYXBoaWM+KGVmZmVjdCkpOwotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb2xvck1h
dHJpeDoKKyAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb2xvck1hdHJpeDoKICAgICAg
ICAgcmV0dXJuIGltYWdlRm9yRkVDb2xvck1hdHJpeChkb3duY2FzdDxGRUNvbG9yTWF0cml4Pihl
ZmZlY3QpLCBpbnB1dEltYWdlcyk7Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkNvbXBv
bmVudFRyYW5zZmVyOgorICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvbmVudFRy
YW5zZmVyOgogICAgICAgICByZXR1cm4gaW1hZ2VGb3JGRUNvbXBvbmVudFRyYW5zZmVyKGRvd25j
YXN0PEZFQ29tcG9uZW50VHJhbnNmZXI+KGVmZmVjdCksIGlucHV0SW1hZ2VzKTsKIAotICAgIC8v
IEZJWE1FOiBJbXBsZW1lbnQgdGhvc2UgZmlsdGVycyB1c2luZyBDSUZpbHRlciBzbyB0aGF0IHRo
ZSBmdW5jdGlvbiByZXR1cm5zIGEgdmFsaWQgQ0lJbWFnZQotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpCbGVuZDoKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6Q29tcG9zaXRlOgot
ICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpDb252b2x2ZU1hdHJpeDoKLSAgICBjYXNlIEZp
bHRlckVmZmVjdDo6VHlwZTo6RGlmZnVzZUxpZ2h0aW5nOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0
OjpUeXBlOjpEaXNwbGFjZW1lbnRNYXA6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkRy
b3BTaGFkb3c6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZsb29kOgotICAgIGNhc2Ug
RmlsdGVyRWZmZWN0OjpUeXBlOjpHYXVzc2lhbkJsdXI6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6OkltYWdlOgotICAgIGNhc2UgRmlsdGVyRWZmZWN0OjpUeXBlOjpMaWdodGluZzoKLSAg
ICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6TWVyZ2U6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6
OlR5cGU6Ok1vcnBob2xvZ3k6Ci0gICAgY2FzZSBGaWx0ZXJFZmZlY3Q6OlR5cGU6Ok9mZnNldDoK
LSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U3BlY3VsYXJMaWdodGluZzoKLSAgICBjYXNl
IEZpbHRlckVmZmVjdDo6VHlwZTo6VGlsZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6
VHVyYnVsZW5jZToKLSAgICBjYXNlIEZpbHRlckVmZmVjdDo6VHlwZTo6U291cmNlQWxwaGE6CiAg
ICAgZGVmYXVsdDoKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAgICAgfQpAQCAtMjc2LDcgKzI0
Miw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6b3V0cHV0
KCkgY29uc3QKIHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1h
Z2VCdWZmZXIoRmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0KQogewogICAgIEZsb2F0U2l6ZSBjbGFt
cGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZShsYXN0RWZmZWN0LmFic29sdXRlUGFp
bnRSZWN0KCkuc2l6ZSgpKTsKLSAgICBtX291dHB1dEltYWdlQnVmZmVyID0gSU9TdXJmYWNlSW1h
Z2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbGFzdEVmZmVjdC5maWx0ZXIoKS5maWx0ZXJT
Y2FsZSgpLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBtX291dHB1dEltYWdlQnVmZmVyID0gSU9TdXJmYWNlSW1hZ2VCdWZmZXI6OmNyZWF0
ZShjbGFtcGVkU2l6ZSwgMSwgbGFzdEVmZmVjdC5yZXN1bHRDb2xvclNwYWNlKCksIFBpeGVsRm9y
bWF0OjpCR1JBOCk7CiAgICAgaWYgKCFtX291dHB1dEltYWdlQnVmZmVyKSB7CiAgICAgICAgIGNs
ZWFyUmVzdWx0KCk7CiAgICAgICAgIHJldHVybjsKQEAgLTI4OCw3ICsyNTQsNiBAQCB2b2lkIEZp
bHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVm
ZmVjdCYgbGFzdEVmZmVjdAogRmxvYXRSZWN0IEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpkZXN0UmVjdChjb25zdCBGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpIGNvbnN0CiB7CiAgICAg
SW50U2l6ZSBkZXN0U2l6ZSA9IGxhc3RFZmZlY3QuYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7
Ci0gICAgZGVzdFNpemUuc2NhbGUobGFzdEVmZmVjdC5maWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsK
ICAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBkZXN0U2l6
ZSk7CiAgICAgcmV0dXJuIGRlc3RSZWN0OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVCbGVuZC5jcHAKaW5kZXggY2RlYWE2NWU2NzA0Y2Q2
N2ZiMGE3YWZlOWFmMThmYmI2MmMyY2VkOS4uOTFkOGNhNmNiNTVlYzQwZjM5MDg3ODI0ZGFkMjQ5
M2QyOWIzZTY3ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRUJsZW5kLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQmxlbmQuY3BwCkBAIC0zNSw3ICszNSw3IEBACiBuYW1lc3BhY2UgV2ViQ29y
ZSB7CiAKIEZFQmxlbmQ6OkZFQmxlbmQoRmlsdGVyJiBmaWx0ZXIsIEJsZW5kTW9kZSBtb2RlKQot
ICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6QmxlbmQpCisgICAgOiBGaWx0ZXJFZmZl
Y3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQmxlbmQpCiAgICAgLCBtX21vZGUobW9k
ZSkKIHsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVCbGVuZC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUJsZW5kLmgKaW5kZXggNzBlODQwN2JmNWMyMDBkNDUyMTZiOGY5YzA4NTE3YjUwNzllNzk2
Ni4uYjg0YzhkZDI4MDU4ZmY0NWQ1NGNkZjhhNzNhMmJhNzE3MjVmZGU1YyAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKKysrIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUJsZW5kLmgKQEAgLTM2
LDggKzM2LDYgQEAgcHVibGljOgogICAgIGJvb2wgc2V0QmxlbmRNb2RlKEJsZW5kTW9kZSk7CiAK
IHByaXZhdGU6Ci0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuICJGRUJsZW5kIjsgfQotCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVy
cmlkZTsKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlHZW5lcmljKHVuc2lnbmVkIGNoYXIqIHNyY1Bp
eGVsQXJyYXlBLCB1bnNpZ25lZCBjaGFyKiBzcmNQaXhlbEFycmF5QiwgdW5zaWduZWQgY2hhciog
ZHN0UGl4ZWxBcnJheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNvbG9y
QXJyYXlMZW5ndGgpOwpAQCAtNTMsMyArNTEsNCBAQCBwcml2YXRlOgogCiB9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRUJsZW5k
KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUNvbG9yTWF0cml4LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb2xvck1hdHJpeC5jcHAKaW5kZXggMzgwNjVjYjk2YzdiNGI0YjAzZmM2YjBlZWQ4NWFj
NGI2Yzk2OGE1NC4uYmZjZDZhMzIyNWJhZjBhMDdjOGIzNjg1ODYxM2YwYTEzNGNjZTllYiAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9y
TWF0cml4LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29sb3JNYXRyaXguY3BwCkBAIC0zNiw3ICszNiw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKIEZFQ29sb3JNYXRyaXg6OkZFQ29sb3JNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIENvbG9yTWF0
cml4VHlwZSB0eXBlLCBWZWN0b3I8ZmxvYXQ+JiYgdmFsdWVzKQotICAgIDogRmlsdGVyRWZmZWN0
KGZpbHRlciwgVHlwZTo6Q29sb3JNYXRyaXgpCisgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBG
aWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29sb3JNYXRyaXgpCiAgICAgLCBtX3R5cGUodHlwZSkKICAg
ICAsIG1fdmFsdWVzKFdURk1vdmUodmFsdWVzKSkKIHsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb2xvck1hdHJpeC5oIGIvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKaW5kZXggMjll
NDFhOGFlZDFlNGYwYjUzOTcwM2FjNGRiNTUyNGVmYTRjMTIzZi4uOTkyZTc1ZjllODE1MGM2MTdh
MmVmMDdjNjU5MzYxNjAwNWU0MGY0MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbG9yTWF0cml4LmgKQEAgLTUyLDggKzUyLDYg
QEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRUNvbG9yTWF0cml4KEZpbHRlciYsIENvbG9yTWF0
cml4VHlwZSwgVmVjdG9yPGZsb2F0PiYmKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUo
KSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVDb2xvck1hdHJpeCI7IH0KLQogICAgIHZvaWQgcGxh
dGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CiAKICAgICBXVEY6OlRleHRTdHJlYW0mIGV4
dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVzZW50YXRpb25UeXBl
KSBjb25zdCBvdmVycmlkZTsKQEAgLTkzLDcgKzkxLDQgQEAgaW5saW5lIHZvaWQgRkVDb2xvck1h
dHJpeDo6Y2FsY3VsYXRlSHVlUm90YXRlQ29tcG9uZW50cyhmbG9hdCogY29tcG9uZW50cywgZmxv
YXQKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQogCi1TUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JF
R0lOKFdlYkNvcmU6OkZFQ29sb3JNYXRyaXgpCi0gICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0
IFdlYkNvcmU6OkZpbHRlckVmZmVjdCYgZWZmZWN0KSB7IHJldHVybiBlZmZlY3QuZmlsdGVyRWZm
ZWN0Q2xhc3NUeXBlKCkgPT0gV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpUeXBlOjpDb2xvck1hdHJp
eDsgfQotU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19FTkQoKQotCitTUEVDSUFMSVpFX1RZUEVfVFJB
SVRTX0ZJTFRFUl9FRkZFQ1QoRkVDb2xvck1hdHJpeCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5jcHAgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9uZW50VHJhbnNm
ZXIuY3BwCmluZGV4IDg0N2VhNThmNWY5YjAzODY2ZDllYWM1N2YxMGNjZjU3NDAyZjllNjMuLmNl
MDBjYzE5ODI5NzliNDA5NDA0ZDVjZmRjYzAzYTZlZDMzNWMzYjIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRUcmFuc2Zlci5j
cHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBv
bmVudFRyYW5zZmVyLmNwcApAQCAtMzMsOSArMzMsOCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLUZFQ29tcG9uZW50VHJhbnNmZXI6OkZFQ29tcG9uZW50VHJhbnNmZXIoRmlsdGVyJiBmaWx0
ZXIsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIHJlZEZ1bmN0aW9uLAotICAgIGNv
bnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rpb24sIGNvbnN0IENvbXBv
bmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3QgQ29tcG9uZW50VHJhbnNm
ZXJGdW5jdGlvbiYgYWxwaGFGdW5jdGlvbikKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5
cGU6OkNvbXBvbmVudFRyYW5zZmVyKQorRkVDb21wb25lbnRUcmFuc2Zlcjo6RkVDb21wb25lbnRU
cmFuc2ZlcihGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYg
cmVkRnVuY3Rpb24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuY3Rp
b24sIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGJsdWVGdW5jdGlvbiwgY29uc3Qg
Q29tcG9uZW50VHJhbnNmZXJGdW5jdGlvbiYgYWxwaGFGdW5jdGlvbikKKyAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVDb21wb25lbnRUcmFuc2ZlcikKICAg
ICAsIG1fcmVkRnVuY3Rpb24ocmVkRnVuY3Rpb24pCiAgICAgLCBtX2dyZWVuRnVuY3Rpb24oZ3Jl
ZW5GdW5jdGlvbikKICAgICAsIG1fYmx1ZUZ1bmN0aW9uKGJsdWVGdW5jdGlvbikKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb25lbnRU
cmFuc2Zlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bXBvbmVudFRyYW5zZmVyLmgKaW5kZXggMmI1ODZkZWY3ZmI0MmEzN2IyZTEyM2VkYTg3MTE5YzRl
YjM0OGE1MS4uM2I5ZDI2MDhiMDk3NGQ4MjU1ZWNhYTQyYTgzYzJhZmRmNjM4YTNkOSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvbmVu
dFRyYW5zZmVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbXBvbmVudFRyYW5zZmVyLmgKQEAgLTY1LDggKzY1LDYgQEAgcHJpdmF0ZToKICAgICBG
RUNvbXBvbmVudFRyYW5zZmVyKEZpbHRlciYsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rp
b24mIHJlZEZ1bmMsIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24mIGdyZWVuRnVuYywK
ICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IENvbXBvbmVudFRyYW5zZmVyRnVuY3Rpb24m
IGJsdWVGdW5jLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJiBhbHBoYUZ1bmMpOwog
Ci0gICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVD
b21wb25lbnRUcmFuc2ZlciI7IH0KLQogICAgIHVzaW5nIExvb2t1cFRhYmxlID0gc3RkOjphcnJh
eTx1aW50OF90LCAyNTY+OwogCiAgICAgc3RhdGljIHZvaWQgY29tcHV0ZUlkZW50aXR5VGFibGUo
TG9va3VwVGFibGUmLCBjb25zdCBDb21wb25lbnRUcmFuc2ZlckZ1bmN0aW9uJik7CkBAIC04OSw2
ICs4Nyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAotU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpGRUNvbXBvbmVudFRyYW5zZmVyKQotICAgIHN0
YXRpYyBib29sIGlzVHlwZShjb25zdCBXZWJDb3JlOjpGaWx0ZXJFZmZlY3QmIGVmZmVjdCkgeyBy
ZXR1cm4gZWZmZWN0LmZpbHRlckVmZmVjdENsYXNzVHlwZSgpID09IFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6VHlwZTo6Q29tcG9uZW50VHJhbnNmZXI7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RU5EKCkKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChGRUNvbXBvbmVudFRy
YW5zZmVyKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRUNvbXBvc2l0ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFQ29tcG9zaXRlLmNwcAppbmRleCA4YjU5ZTY2ZGU5ZmU4ZDYzOTE2Y2JlNWNlNmRk
NDAzOGZhNGNiMmE4Li41NGEyZDg5ZTliMzExMzhkODBjNmI1NTI1ZTA4MzUzMzg1MjA1MDQzIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29t
cG9zaXRlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFQ29tcG9zaXRlLmNwcApAQCAtMzMsNyArMzMsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewog
CiBGRUNvbXBvc2l0ZTo6RkVDb21wb3NpdGUoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbXBvc2l0
ZU9wZXJhdGlvblR5cGUmIHR5cGUsIGZsb2F0IGsxLCBmbG9hdCBrMiwgZmxvYXQgazMsIGZsb2F0
IGs0KQotICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlwZTo6Q29tcG9zaXRlKQorICAgIDog
RmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUNvbXBvc2l0ZSkKICAg
ICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9rMShrMSkKICAgICAsIG1fazIoazIpCmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29tcG9zaXRl
LmgKaW5kZXggN2QwOGUxZjcxMDdiNGI5NjhjNThlM2EzN2MzMmFlMmY3NmFlYTBjMy4uMzkyMzdm
ZWIxMjdhZDFmZjFkZTIxODM0YmQ3YjJiNzM3ZmFhZjMyZCAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbXBvc2l0ZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb21wb3NpdGUuaApAQCAtNjQs
OCArNjQsNiBAQCBwcm90ZWN0ZWQ6CiBwcml2YXRlOgogICAgIEZFQ29tcG9zaXRlKEZpbHRlciYs
IGNvbnN0IENvbXBvc2l0ZU9wZXJhdGlvblR5cGUmLCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkZFQ29tcG9zaXRlIjsgfQotCiAgICAgdm9pZCBjb3JyZWN0RmlsdGVyUmVzdWx0SWZOZWVkZWQo
KSBvdmVycmlkZTsKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJp
ZGU7CiAKQEAgLTkwLDMgKzg4LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29y
ZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVDb21wb3NpdGUpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUNvbnZvbHZlTWF0cml4LmNwcAppbmRleCAzYmJlNzgzNTk4ZDcwOTM1YTk1YzZmMTU2ZWMy
OTMzYzBlOTlmMDUwLi5lODZmMTI5YzU0YjFkOGZkOGVkOTI5NDZlMmNlMWI2OTgyMzAzYmVkIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29u
dm9sdmVNYXRyaXguY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKQEAgLTMyLDEwICszMiw4IEBACiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIAotRkVDb252b2x2ZU1hdHJpeDo6RkVDb252b2x2ZU1hdHJpeChGaWx0ZXIm
IGZpbHRlciwgY29uc3QgSW50U2l6ZSYga2VybmVsU2l6ZSwKLSAgICBmbG9hdCBkaXZpc29yLCBm
bG9hdCBiaWFzLCBjb25zdCBJbnRQb2ludCYgdGFyZ2V0T2Zmc2V0LCBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUsCi0gICAgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExlbmd0aCwgYm9vbCBwcmVz
ZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRyaXgpCi0gICAgOiBGaWx0
ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpDb252b2x2ZU1hdHJpeCkKK0ZFQ29udm9sdmVNYXRyaXg6
OkZFQ29udm9sdmVNYXRyaXgoRmlsdGVyJiBmaWx0ZXIsIGNvbnN0IEludFNpemUmIGtlcm5lbFNp
emUsIGZsb2F0IGRpdmlzb3IsIGZsb2F0IGJpYXMsIGNvbnN0IEludFBvaW50JiB0YXJnZXRPZmZz
ZXQsIEVkZ2VNb2RlVHlwZSBlZGdlTW9kZSwgY29uc3QgRmxvYXRQb2ludCYga2VybmVsVW5pdExl
bmd0aCwgYm9vbCBwcmVzZXJ2ZUFscGhhLCBjb25zdCBWZWN0b3I8ZmxvYXQ+JiBrZXJuZWxNYXRy
aXgpCisgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFQ29u
dm9sdmVNYXRyaXgpCiAgICAgLCBtX2tlcm5lbFNpemUoa2VybmVsU2l6ZSkKICAgICAsIG1fZGl2
aXNvcihkaXZpc29yKQogICAgICwgbV9iaWFzKGJpYXMpCkBAIC0zODgsOCArMzg2LDcgQEAgdm9p
ZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1
cm47CiAKICAgICBJbnRTaXplIHBhaW50U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgp
OwotICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLQorICAgIAog
ICAgIFBhaW50aW5nRGF0YSBwYWludGluZ0RhdGEgPSB7CiAgICAgICAgICpzb3VyY2VQaXhlbEFy
cmF5LAogICAgICAgICBkZXN0aW5hdGlvblBpeGVsQXJyYXksCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguaCBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
CmluZGV4IDY3ZDRjNjU2N2ZjZTZiMjdlZTVhYjg5NWE2ZTFlNTAwNTRlMTNkYmEuLmMxYTVjNWI4
Njc1NjJmMjZhZjgwN2Q0NWM1YjQwMDk2ZGIxY2ZmZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJpeC5o
CkBAIC04MCw4ICs4MCw2IEBAIHByaXZhdGU6CiAgICAgRkVDb252b2x2ZU1hdHJpeChGaWx0ZXIm
LCBjb25zdCBJbnRTaXplJiwgZmxvYXQsIGZsb2F0LAogICAgICAgICAgICAgY29uc3QgSW50UG9p
bnQmLCBFZGdlTW9kZVR5cGUsIGNvbnN0IEZsb2F0UG9pbnQmLCBib29sLCBjb25zdCBWZWN0b3I8
ZmxvYXQ+Jik7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIkZFQ29udm9sdmVNYXRyaXgiOyB9Ci0KICAgICB2b2lkIGRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRS
ZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CiAKICAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpIG92ZXJyaWRlOwpAQCAtMTE1LDMgKzExMyw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNw
YWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFQ29u
dm9sdmVNYXRyaXgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCmluZGV4IGVlYjE3MjhkYjM1
ZThhYzMwMmIyN2U0YzNmZjM0Y2I4ODU1YjlkMDkuLjQ0ZTJlNjIxNGEzNzZhNGRhMWVlNzczY2Rk
NDE3NjU3NzQwOWIxZTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuY3BwCkBAIC0yOCw3ICsy
OCw3IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFRGlmZnVzZUxpZ2h0aW5nOjpGRURpZmZ1
c2VMaWdodGluZyhGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3ImIGxpZ2h0aW5nQ29sb3IsIGZs
b2F0IHN1cmZhY2VTY2FsZSwgZmxvYXQgZGlmZnVzZUNvbnN0YW50LCBmbG9hdCBrZXJuZWxVbml0
TGVuZ3RoWCwgZmxvYXQga2VybmVsVW5pdExlbmd0aFksIFJlZjxMaWdodFNvdXJjZT4mJiBsaWdo
dFNvdXJjZSkKLSAgICA6IEZFTGlnaHRpbmcoZmlsdGVyLCBEaWZmdXNlTGlnaHRpbmcsIGxpZ2h0
aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgZGlmZnVzZUNvbnN0YW50LCAwLCAwLCBrZXJuZWxVbml0
TGVuZ3RoWCwga2VybmVsVW5pdExlbmd0aFksIFdURk1vdmUobGlnaHRTb3VyY2UpLCBUeXBlOjpE
aWZmdXNlTGlnaHRpbmcpCisgICAgOiBGRUxpZ2h0aW5nKGZpbHRlciwgRGlmZnVzZUxpZ2h0aW5n
LCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIGRpZmZ1c2VDb25zdGFudCwgMCwgMCwga2Vy
bmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZLCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwg
RmlsdGVyRWZmZWN0OjpUeXBlOjpGRURpZmZ1c2VMaWdodGluZykKIHsKIH0KIApAQCAtMzcsOCAr
MzcsNiBAQCBSZWY8RkVEaWZmdXNlTGlnaHRpbmc+IEZFRGlmZnVzZUxpZ2h0aW5nOjpjcmVhdGUo
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaQogICAgIHJldHVybiBhZG9wdFJlZigqbmV3
IEZFRGlmZnVzZUxpZ2h0aW5nKGZpbHRlciwgbGlnaHRpbmdDb2xvciwgc3VyZmFjZVNjYWxlLCBk
aWZmdXNlQ29uc3RhbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RG
TW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAotRkVEaWZmdXNlTGlnaHRpbmc6On5GRURpZmZ1c2VM
aWdodGluZygpID0gZGVmYXVsdDsKLQogYm9vbCBGRURpZmZ1c2VMaWdodGluZzo6c2V0RGlmZnVz
ZUNvbnN0YW50KGZsb2F0IGRpZmZ1c2VDb25zdGFudCkKIHsKICAgICBpZiAobV9kaWZmdXNlQ29u
c3RhbnQgPT0gZGlmZnVzZUNvbnN0YW50KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpZmZ1c2VMaWdodGluZy5oCmluZGV4IGRm
NjExNGQwZmI4ZTJmM2UxMTI4Yjg0MjYxNWU0NzUxM2EwZGRkYzMuLjI3MzdmNjBmNGMzZjRiMzYy
NGRmODBlYmI5OTgzN2JhNjU5ZmEwYmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaWZmdXNlTGlnaHRpbmcuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlmZnVzZUxpZ2h0aW5nLmgKQEAgLTMw
LDcgKzMwLDYgQEAgY2xhc3MgTGlnaHRTb3VyY2U7CiBjbGFzcyBGRURpZmZ1c2VMaWdodGluZyA6
IHB1YmxpYyBGRUxpZ2h0aW5nIHsKIHB1YmxpYzoKICAgICBzdGF0aWMgUmVmPEZFRGlmZnVzZUxp
Z2h0aW5nPiBjcmVhdGUoRmlsdGVyJiwgY29uc3QgQ29sb3ImLCBmbG9hdCwgZmxvYXQsIGZsb2F0
LCBmbG9hdCwgUmVmPExpZ2h0U291cmNlPiYmKTsKLSAgICB2aXJ0dWFsIH5GRURpZmZ1c2VMaWdo
dGluZygpOwogCiAgICAgZmxvYXQgZGlmZnVzZUNvbnN0YW50KCkgY29uc3QgeyByZXR1cm4gbV9k
aWZmdXNlQ29uc3RhbnQ7IH0KICAgICBib29sIHNldERpZmZ1c2VDb25zdGFudChmbG9hdCk7CkBA
IC00MywzICs0Miw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFRGlmZnVzZUxpZ2h0aW5nKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3Bs
YWNlbWVudE1hcC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFRGlzcGxhY2VtZW50TWFwLmNwcAppbmRleCAwNDc0OTMzOTJiYjI4MTQ2ZDhiMTY5YmEwYTdj
MzJiMTZjNTYzZmExLi4yNGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlz
cGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBGRURpc3BsYWNlbWVudE1hcDo6RkVEaXNwbGFjZW1lbnRNYXAoRmlsdGVy
JiBmaWx0ZXIsIENoYW5uZWxTZWxlY3RvclR5cGUgeENoYW5uZWxTZWxlY3RvciwgQ2hhbm5lbFNl
bGVjdG9yVHlwZSB5Q2hhbm5lbFNlbGVjdG9yLCBmbG9hdCBzY2FsZSkKLSAgICA6IEZpbHRlckVm
ZmVjdChmaWx0ZXIsIFR5cGU6OkRpc3BsYWNlbWVudE1hcCkKKyAgICA6IEZpbHRlckVmZmVjdChm
aWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVEaXNwbGFjZW1lbnRNYXApCiAgICAgLCBtX3hD
aGFubmVsU2VsZWN0b3IoeENoYW5uZWxTZWxlY3RvcikKICAgICAsIG1feUNoYW5uZWxTZWxlY3Rv
cih5Q2hhbm5lbFNlbGVjdG9yKQogICAgICwgbV9zY2FsZShzY2FsZSkKQEAgLTExOSw5ICsxMTks
OCBAQCB2b2lkIEZFRGlzcGxhY2VtZW50TWFwOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogCiAg
ICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBJbnRTaXplIHBhaW50U2l6
ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShmaWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAKLSAgICBGbG9hdFNpemUgc2NhbGUgPSBmaWx0ZXIuc2NhbGVk
QnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKKyAgICBGbG9hdFNpemUg
c2NhbGUgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fc2NhbGUsIG1fc2NhbGUgfSk7
CiAgICAgZmxvYXQgc2NhbGVGb3JDb2xvclggPSBzY2FsZS53aWR0aCgpIC8gMjU1LjA7CiAgICAg
ZmxvYXQgc2NhbGVGb3JDb2xvclkgPSBzY2FsZS5oZWlnaHQoKSAvIDI1NS4wOwogICAgIGZsb2F0
IHNjYWxlZE9mZnNldFggPSAwLjUgLSBzY2FsZS53aWR0aCgpICogMC41OwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1h
cC5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNl
bWVudE1hcC5oCmluZGV4IGRkNzMyYTg4MTA3M2UyNjZiYzg0NmFmZTY4MTllNjc1MTYyM2EzYTIu
LmFhNWI2ZDQ2YmM0NjRmYzZkMDYwZDg2YWY2YmFlMGVmMDdlYzllOGQgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmgKQEAgLTU0LDggKzU0LDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRURp
c3BsYWNlbWVudE1hcChGaWx0ZXImLCBDaGFubmVsU2VsZWN0b3JUeXBlIHhDaGFubmVsU2VsZWN0
b3IsIENoYW5uZWxTZWxlY3RvclR5cGUgeUNoYW5uZWxTZWxlY3RvciwgZmxvYXQpOwogCi0gICAg
Y29uc3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRURpc3BsYWNl
bWVudE1hcCI7IH0KLQogICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7
CiAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CkBA
IC03MiwzICs3MCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BF
Q0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFRGlzcGxhY2VtZW50TWFwKQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BT
aGFkb3cuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURy
b3BTaGFkb3cuY3BwCmluZGV4IDVjZTdiZTNhNDcxYjQ3YjhkZDU0MjZkOTY1YmJmZTc4OWY2YmJk
ZDguLmQzYzQzN2M3ZDJmYzE1ZjMxMDdkMjM1ZGIyYWUwODgwNjZkYTYxYmIgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAKQEAgLTMyLDcgKzMyLDcgQEAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICAKIEZF
RHJvcFNoYWRvdzo6RkVEcm9wU2hhZG93KEZpbHRlciYgZmlsdGVyLCBmbG9hdCBzdGRYLCBmbG9h
dCBzdGRZLCBmbG9hdCBkeCwgZmxvYXQgZHksIGNvbnN0IENvbG9yJiBzaGFkb3dDb2xvciwgZmxv
YXQgc2hhZG93T3BhY2l0eSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkRyb3BT
aGFkb3cpCisgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZF
RHJvcFNoYWRvdykKICAgICAsIG1fc3RkWChzdGRYKQogICAgICwgbV9zdGRZKHN0ZFkpCiAgICAg
LCBtX2R4KGR4KQpAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6ZGV0ZXJtaW5l
QWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFic29sdXRlUGFpbnRSZWN0ID0g
aW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmxvYXRSZWN0IGFic29s
dXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsKLSAgICBhYnNvbHV0ZU9mZnNl
dFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX2R4LCBt
X2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRC
eUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJzb2x1dGVQYWludFJlY3QudW5p
dGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50U2l6ZSBrZXJuZWxTaXplID0g
RkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVyLCB7IG1fc3RkWCwgbV9z
dGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNoYWRvdzo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAg
Ci0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVz
b2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJSYWRpdXMuc2NhbGUoZmlsdGVy
LmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBGbG9hdFNpemUgYmx1clJhZGl1
cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fc3RkWCwgbV9zdGRZIH0pOwor
ICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1fZHgs
IG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25P
ZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZsb2F0UmVjdCBkcmF3
aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5oCmluZGV4IGI0
ZTBhMjAxMmZlZGI3Yjc3YmYzZTA1NzM0ZWU4OGEyOWVmZjM4NGMuLjJiNmU2NjEzYjVhZTE3ODRh
NzEwMmQ1NDZkZGJiY2JkNjEzODU4ZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURyb3BTaGFkb3cuaApAQCAtNTAsOCArNTAsNiBA
QCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFRHJvcFNoYWRvdyhGaWx0ZXImLCBmbG9hdCwgZmxv
YXQsIGZsb2F0LCBmbG9hdCwgY29uc3QgQ29sb3ImLCBmbG9hdCk7CiAKLSAgICBjb25zdCBjaGFy
KiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFRHJvcFNoYWRvdyI7IH0KLQog
ICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7CkBAIC03MCwzICs2OCw0IEBAIHBy
aXZhdGU6CiAgICAgCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9U
UkFJVFNfRklMVEVSX0VGRkVDVChGRURyb3BTaGFkb3cpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUZsb29kLmNwcAppbmRleCBiNDIzNTUzNGMz
OGIxZWJhMjExZWU4NDg2MTc5OTIzODBmM2I2YjAxLi5hNzg0MjE5Njc0ZTFhZTk3OTkzNDQzOGRh
NTRhMWE3MWM5ODA0ODQyIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRmxvb2QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5jcHAKQEAgLTMxLDcgKzMxLDcgQEAKIG5hbWVzcGFjZSBX
ZWJDb3JlIHsKIAogRkVGbG9vZDo6RkVGbG9vZChGaWx0ZXImIGZpbHRlciwgY29uc3QgQ29sb3Im
IGZsb29kQ29sb3IsIGZsb2F0IGZsb29kT3BhY2l0eSkKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0
ZXIsIFR5cGU6OkZsb29kKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgRmlsdGVyRWZmZWN0
OjpUeXBlOjpGRUZsb29kKQogICAgICwgbV9mbG9vZENvbG9yKGZsb29kQ29sb3IpCiAgICAgLCBt
X2Zsb29kT3BhY2l0eShmbG9vZE9wYWNpdHkpCiB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRmxvb2QuaCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVGbG9vZC5oCmluZGV4IGI3MDRkYzk2OWM2ZDc1ODhi
Y2ViMGFkOGIyNDY4MmZhMDYxNzM0OGUuLjA4YTRlOTU5MzU4NWQyZmEwNzI2ODRkNDVkNWY4OTMw
ZjNhZWVmMGEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvRkVGbG9vZC5oCkBAIC00Nyw4ICs0Nyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAg
RkVGbG9vZChGaWx0ZXImLCBjb25zdCBDb2xvciYsIGZsb2F0KTsKIAotICAgIGNvbnN0IGNoYXIq
IGZpbHRlck5hbWUoKSBjb25zdCBmaW5hbCB7IHJldHVybiAiRkVGbG9vZCI7IH0KLQogICAgIHZv
aWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CiAKICAgICB2b2lkIGRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGUgeyBzZXRBYnNvbHV0ZVBhaW50UmVjdChlbmNs
b3NpbmdJbnRSZWN0KG1heEVmZmVjdFJlY3QoKSkpOyB9CkBAIC02MSwzICs1OSw0IEBAIHByaXZh
dGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19G
SUxURVJfRUZGRUNUKEZFRmxvb2QpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4IDA4ZTg1YTA4
YWEwMWIwODEyMjNmMzZlYmI2YmJiOGFiMzYzOTQzNjUuLmI2MjNkY2JkNjIzNDRjZmM4Nzc4ODMz
OWJhZWFiNmRkZWMwOTgwNDEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCkBAIC04MCw3ICs4MCw3
IEBAIGlubGluZSB2b2lkIGtlcm5lbFBvc2l0aW9uKGludCBibHVySXRlcmF0aW9uLCB1bnNpZ25l
ZCYgcmFkaXVzLCBpbnQmIGRlbHRhTGVmdCwKIH0KIAogRkVHYXVzc2lhbkJsdXI6OkZFR2F1c3Np
YW5CbHVyKEZpbHRlciYgZmlsdGVyLCBmbG9hdCB4LCBmbG9hdCB5LCBFZGdlTW9kZVR5cGUgZWRn
ZU1vZGUpCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpHYXVzc2lhbkJsdXIpCisg
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFR2F1c3NpYW5C
bHVyKQogICAgICwgbV9zdGRYKHgpCiAgICAgLCBtX3N0ZFkoeSkKICAgICAsIG1fZWRnZU1vZGUo
ZWRnZU1vZGUpCkBAIC00ODUsNyArNDg1LDcgQEAgSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2Fs
Y3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCiAKIEludFNp
emUgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoY29uc3QgRmlsdGVyJiBmaWx0
ZXIsIEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCiB7Ci0gICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2Nh
bGVkS2VybmVsU2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHN0ZERldmlhdGlv
bikpOworICAgIHJldHVybiBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoc3RkRGV2aWF0aW9uKSk7CiB9CiAKIEludFNpemUgRkVHYXVzc2lhbkJs
dXI6OmNhbGN1bGF0ZU91dHNldFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikKQEAgLTUzNywx
MCArNTM3LDggQEAgdm9pZCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkK
ICAgICAgICAgcmV0dXJuOwogCiAgICAgSW50U2l6ZSBrZXJuZWxTaXplID0gY2FsY3VsYXRlS2Vy
bmVsU2l6ZShmaWx0ZXIoKSwgeyBtX3N0ZFgsIG1fc3RkWSB9KTsKLSAgICBrZXJuZWxTaXplLnNj
YWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBh
YnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCku
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byB0bXBJbWFnZURhdGEgPSBVaW50OENsYW1wZWRBcnJh
eTo6dHJ5Q3JlYXRlVW5pbml0aWFsaXplZChwYWludFNpemUuYXJlYSgpICogNCk7CiAgICAgaWYg
KCF0bXBJbWFnZURhdGEpCiAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuaAppbmRleCA1
ZmI5N2ZmYjA3MGMyZGFlYjZlYjI4M2JlYWFhMTc2NDdjYmIyZDNlLi42MzFkODk1MTYwN2ZmNjg1
NzdmMDlmOWI3YjI1OTRjNzZhYWM4Yjg0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmgKKysrIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFuQmx1ci5oCkBAIC00Nyw4ICs0
Nyw2IEBAIHB1YmxpYzoKIHByaXZhdGU6CiAgICAgRkVHYXVzc2lhbkJsdXIoRmlsdGVyJiwgZmxv
YXQsIGZsb2F0LCBFZGdlTW9kZVR5cGUpOwogCi0gICAgY29uc3QgY2hhciogZmlsdGVyTmFtZSgp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRUdhdXNzaWFuQmx1ciI7IH0KLQogICAgIHN0YXRpYyBj
b25zdCBpbnQgc19taW5pbWFsUmVjdERpbWVuc2lvbiA9IDEwMCAqIDEwMDsgLy8gRW1waXJpY2Fs
IGRhdGEgbGltaXQgZm9yIHBhcmFsbGVsIGpvYnMKIAogICAgIHRlbXBsYXRlPHR5cGVuYW1lIFR5
cGU+CkBAIC04MywzICs4MSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
IAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFR2F1c3NpYW5CbHVyKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUxp
Z2h0aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGln
aHRpbmcuaAppbmRleCAwZmZmY2QwNjQzOTZkOGY0YjY0MDgyMjY5Y2MyMDc0ZjdjOWRiZGJjLi41
MzQwMjdjNDE0ZDI1MjQzYTIwMTEwYTliNzFlMDg1ZWU2OTBiZDY4IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTGlnaHRpbmcuaApAQCAt
MTMzLDggKzEzMyw2IEBAIHByb3RlY3RlZDoKIAogICAgIEZFTGlnaHRpbmcoRmlsdGVyJiwgTGln
aHRpbmdUeXBlLCBjb25zdCBDb2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9h
dCwgZmxvYXQsIFJlZjxMaWdodFNvdXJjZT4mJiwgVHlwZSk7CiAKLSAgICBjb25zdCBjaGFyKiBm
aWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIkZFTGlnaHRpbmciOyB9Ci0KICAgICBi
b29sIGRyYXdMaWdodGluZyhVaW50OENsYW1wZWRBcnJheSYsIGludCwgaW50KTsKIAogICAgIHZv
aWQgc2V0UGl4ZWwoaW50IG9mZnNldCwgY29uc3QgTGlnaHRpbmdEYXRhJiwgY29uc3QgTGlnaHRT
b3VyY2U6OlBhaW50aW5nRGF0YSYsIGludCB4LCBpbnQgeSwgZmxvYXQgZmFjdG9yWCwgZmxvYXQg
ZmFjdG9yWSwgSW50U2l6ZSBub3JtYWxWZWN0b3IpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmNwcCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNZXJnZS5jcHAKaW5kZXggMGEyMDAwMWIxNzNi
ZDhmZGY2YmJhNjM2Y2QyM2NlNDcwMjZlN2IzZi4uNjk3ZDJlMTVjY2JmMWFlZmVkMGU4OWZkYTM0
ZTcwMzI5MzA3ZjczYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRU1lcmdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFTWVyZ2UuY3BwCkBAIC0yOSw3ICsyOSw3IEBACiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIEZFTWVyZ2U6OkZFTWVyZ2UoRmlsdGVyJiBmaWx0ZXIpCi0gICAgOiBGaWx0ZXJF
ZmZlY3QoZmlsdGVyLCBUeXBlOjpNZXJnZSkKKyAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVNZXJnZSkKIHsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1lcmdlLmggYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTWVyZ2UuaAppbmRleCA1Y2ZjNWNiNzk4MTlj
ZWNlZDUwNzNlNTdiMDE5NGViY2YxOGYyNjA3Li4yNzUwYzRkNTI0ZDNhMGY1YWU5NzQxZjY0ODA0
NDk0NTM0NWQxYWIxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTWVyZ2UuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTWVyZ2UuaApAQCAtMzMsOCArMzMsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgog
ICAgIEZFTWVyZ2UoRmlsdGVyJik7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29u
c3QgZmluYWwgeyByZXR1cm4gIkZFTWVyZ2UiOyB9Ci0KICAgICB2b2lkIHBsYXRmb3JtQXBwbHlT
b2Z0d2FyZSgpIG92ZXJyaWRlOwogCiAgICAgV1RGOjpUZXh0U3RyZWFtJiBleHRlcm5hbFJlcHJl
c2VudGF0aW9uKFdURjo6VGV4dFN0cmVhbSYsIFJlcHJlc2VudGF0aW9uVHlwZSkgY29uc3Qgb3Zl
cnJpZGU7CkBAIC00MiwzICs0MCw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFTWVyZ2UpCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhv
bG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9y
cGhvbG9neS5jcHAKaW5kZXggOGE3ZTViNjY3YWI3NzNiOTBiODkwZTM4Mzg2MzkzNTYyYjlkOGRm
NS4uNjBjNjg1MTQwMzliMDk2YTg3N2Y3YmU0N2NmNDkyMDY3M2Q5YTdiYiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9s
b2d5LmNwcApAQCAtMzYsNyArMzYsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGRU1vcnBo
b2xvZ3k6OkZFTW9ycGhvbG9neShGaWx0ZXImIGZpbHRlciwgTW9ycGhvbG9neU9wZXJhdG9yVHlw
ZSB0eXBlLCBmbG9hdCByYWRpdXNYLCBmbG9hdCByYWRpdXNZKQotICAgIDogRmlsdGVyRWZmZWN0
KGZpbHRlciwgVHlwZTo6TW9ycGhvbG9neSkKKyAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZp
bHRlckVmZmVjdDo6VHlwZTo6RkVNb3JwaG9sb2d5KQogICAgICwgbV90eXBlKHR5cGUpCiAgICAg
LCBtX3JhZGl1c1gocmFkaXVzWCkKICAgICAsIG1fcmFkaXVzWShyYWRpdXNZKQpAQCAtNzYsNyAr
NzYsNyBAQCB2b2lkIEZFTW9ycGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQog
ewogICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBpbnB1dEVmZmVjdCgwKS0+YWJzb2x1dGVQYWlu
dFJlY3QoKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwotICAgIHBhaW50
UmVjdC5pbmZsYXRlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3JhZGl1c1gs
IG1fcmFkaXVzWSB9KSk7CisgICAgcGFpbnRSZWN0LmluZmxhdGUoZmlsdGVyLnNjYWxlZEJ5Rmls
dGVyU2NhbGUoeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CiAgICAgaWYgKGNsaXBzVG9Cb3Vu
ZHMoKSkKICAgICAgICAgcGFpbnRSZWN0LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAg
IGVsc2UKQEAgLTI2Myw3ICsyNjMsNyBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBs
eVNvZnR3YXJlKCkKICAgICBpZiAoIXNvdXJjZVBpeGVsQXJyYXkpCiAgICAgICAgIHJldHVybjsK
IAotICAgIHJhZGl1cyA9IGZsb29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29s
dXRpb24oeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9KSk7CisgICAgcmFkaXVzID0gZmxvb3JlZElu
dFNpemUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX3JhZGl1c1gsIG1fcmFkaXVzWSB9
KSk7CiAgICAgaW50IHJhZGl1c1ggPSBzdGQ6Om1pbihlZmZlY3REcmF3aW5nUmVjdC53aWR0aCgp
IC0gMSwgcmFkaXVzLndpZHRoKCkpOwogICAgIGludCByYWRpdXNZID0gc3RkOjptaW4oZWZmZWN0
RHJhd2luZ1JlY3QuaGVpZ2h0KCkgLSAxLCByYWRpdXMuaGVpZ2h0KCkpOwogCkBAIC0yNzMsMTAg
KzI3MywxMCBAQCB2b2lkIEZFTW9ycGhvbG9neTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhOwogICAgIHBhaW50aW5nRGF0YS5zcmNQaXhlbEFy
cmF5ID0gc291cmNlUGl4ZWxBcnJheS5nZXQoKTsKICAgICBwYWludGluZ0RhdGEuZHN0UGl4ZWxB
cnJheSA9ICZkZXN0aW5hdGlvblBpeGVsQXJyYXk7Ci0gICAgcGFpbnRpbmdEYXRhLndpZHRoID0g
Y2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
LSAgICBwYWludGluZ0RhdGEuaGVpZ2h0ID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0
KCkgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLnJhZGl1c1ggPSBj
ZWlsZihyYWRpdXNYICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5y
YWRpdXNZID0gY2VpbGYocmFkaXVzWSAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKKyAgICBwYWlu
dGluZ0RhdGEud2lkdGggPSBjZWlsZihlZmZlY3REcmF3aW5nUmVjdC53aWR0aCgpKTsKKyAgICBw
YWludGluZ0RhdGEuaGVpZ2h0ID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3QuaGVpZ2h0KCkpOwor
ICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gY2VpbGYocmFkaXVzWCk7CisgICAgcGFpbnRpbmdE
YXRhLnJhZGl1c1kgPSBjZWlsZihyYWRpdXNZKTsKIAogICAgIHBsYXRmb3JtQXBwbHkocGFpbnRp
bmdEYXRhKTsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5oCmluZGV4IDQ4ZmMzNTQxMTdmYzI3Y2NmYzhlOTNmMTRl
ZGYwNzVkZTM5YzVhMTEuLjFiNjljNjMyNmNiMGI5MjM2YTkwZDNkMTQyNTNhZTBiM2VlMTQ5ODgg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVN
b3JwaG9sb2d5LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRU1vcnBob2xvZ3kuaApAQCAtNDgsOCArNDgsNiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAg
IEZFTW9ycGhvbG9neShGaWx0ZXImLCBNb3JwaG9sb2d5T3BlcmF0b3JUeXBlLCBmbG9hdCByYWRp
dXNYLCBmbG9hdCByYWRpdXNZKTsKIAotICAgIGNvbnN0IGNoYXIqIGZpbHRlck5hbWUoKSBjb25z
dCBmaW5hbCB7IHJldHVybiAiRkVNb3JwaG9sb2d5IjsgfQotCiAgICAgdm9pZCBwbGF0Zm9ybUFw
cGx5U29mdHdhcmUoKSBvdmVycmlkZTsKIAogICAgIHZvaWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWlu
dFJlY3QoKSBvdmVycmlkZTsKQEAgLTg2LDMgKzg0LDQgQEAgcHJpdmF0ZToKIAogfSAvLyBuYW1l
c3BhY2UgV2ViQ29yZQogCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9FRkZFQ1QoRkVN
b3JwaG9sb2d5KQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRU9mZnNldC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcAppbmRleCAwMjcwZGI5MjQ4MWEzMzkyZDNkNWExZTkxN2MyZDY1
YWE0MTQwZjY5Li4wMjhjYmM2MGE0NDdmMzY5YmNjZWRhMDA1YzkxNzViMzFiMThkOGY2IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcApAQCAtMzEsNyArMzEsNyBAQAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBGRU9mZnNl
dDo6RkVPZmZzZXQoRmlsdGVyJiBmaWx0ZXIsIGZsb2F0IGR4LCBmbG9hdCBkeSkKLSAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6Ok9mZnNldCkKKyAgICA6IEZpbHRlckVmZmVjdChmaWx0
ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVPZmZzZXQpCiAgICAgLCBtX2R4KGR4KQogICAgICwg
bV9keShkeSkKIHsKQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBGRU9mZnNldDo6ZGV0ZXJtaW5lQWJz
b2x1dGVQYWludFJlY3QoKQogewogICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBpbnB1dEVmZmVj
dCgwKS0+YWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwotICAgIHBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRp
b24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAg
ICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKICAgICBlbHNlCkBA
IC03Nyw3ICs3Nyw3IEBAIHZvaWQgRkVPZmZzZXQ6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAK
ICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lvbiA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2Uo
aW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+Zmls
dGVyKCk7Ci0gICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29s
dXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBkcmF3aW5nUmVnaW9uLm1vdmUoZmlsdGVyLnNj
YWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICByZXN1bHRJbWFnZS0+Y29u
dGV4dCgpLmRyYXdJbWFnZUJ1ZmZlcigqaW5CdWZmZXIsIGRyYXdpbmdSZWdpb24pOwogfQogCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0
LmgKaW5kZXggNjVhYmRhOTBhNDdiMWJmZTc2YWU1Yzc0YWFiNWFhMTY3ZmIxZTY5ZS4uZGI3MzIy
NTVlZTc4ZDMzNjgwOWRiNDIxNzg1YTkyZjg0NWI5NTI2MiAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU9mZnNldC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuaApAQCAtMzksOCArMzks
NiBAQCBwdWJsaWM6CiBwcml2YXRlOgogICAgIEZFT2Zmc2V0KEZpbHRlciYsIGZsb2F0IGR4LCBm
bG9hdCBkeSk7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyBy
ZXR1cm4gIkZFT2Zmc2V0IjsgfQotCiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBv
dmVycmlkZTsKICAgICAKICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3Zl
cnJpZGU7CkBAIC01MywzICs1MSw0IEBAIHByaXZhdGU6CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKIAorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJfRUZGRUNUKEZFT2Zmc2V0KQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNwZWN1
bGFyTGlnaHRpbmcuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRVNwZWN1bGFyTGlnaHRpbmcuY3BwCmluZGV4IDU5OTcyMzA2ODg2YTYzZmE0MTJiNWI3MTQx
Zjc0ZjljNDg3YTE0NGMuLjUyZjQ1MDg0MDkwYWRjYjA0ZDdlNDUxMjA1OGVhN2EyYWNkYThmM2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVT
cGVjdWxhckxpZ2h0aW5nLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFU3BlY3VsYXJMaWdodGluZy5jcHAKQEAgLTI4LDcgKzI4LDcgQEAKIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogRkVTcGVjdWxhckxpZ2h0aW5nOjpGRVNwZWN1bGFyTGlnaHRpbmco
RmlsdGVyJiBmaWx0ZXIsIGNvbnN0IENvbG9yJiBsaWdodGluZ0NvbG9yLCBmbG9hdCBzdXJmYWNl
U2NhbGUsIGZsb2F0IHNwZWN1bGFyQ29uc3RhbnQsIGZsb2F0IHNwZWN1bGFyRXhwb25lbnQsIGZs
b2F0IGtlcm5lbFVuaXRMZW5ndGhYLCBmbG9hdCBrZXJuZWxVbml0TGVuZ3RoWSwgUmVmPExpZ2h0
U291cmNlPiYmIGxpZ2h0U291cmNlKQotICAgIDogRkVMaWdodGluZyhmaWx0ZXIsIFNwZWN1bGFy
TGlnaHRpbmcsIGxpZ2h0aW5nQ29sb3IsIHN1cmZhY2VTY2FsZSwgMCwgc3BlY3VsYXJDb25zdGFu
dCwgc3BlY3VsYXJFeHBvbmVudCwga2VybmVsVW5pdExlbmd0aFgsIGtlcm5lbFVuaXRMZW5ndGhZ
LCBXVEZNb3ZlKGxpZ2h0U291cmNlKSwgVHlwZTo6U3BlY3VsYXJMaWdodGluZykKKyAgICA6IEZF
TGlnaHRpbmcoZmlsdGVyLCBTcGVjdWxhckxpZ2h0aW5nLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNl
U2NhbGUsIDAsIHNwZWN1bGFyQ29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRM
ZW5ndGhYLCBrZXJuZWxVbml0TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSksIEZpbHRlckVm
ZmVjdDo6VHlwZTo6RkVTcGVjdWxhckxpZ2h0aW5nKQogewogfQogCkBAIC0zNyw4ICszNyw2IEBA
IFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IEZFU3BlY3VsYXJMaWdodGluZzo6Y3JlYXRlKEZpbHRl
ciYgZmlsdGVyLCBjb25zdCBDb2xvciYKICAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBGRVNwZWN1
bGFyTGlnaHRpbmcoZmlsdGVyLCBsaWdodGluZ0NvbG9yLCBzdXJmYWNlU2NhbGUsIHNwZWN1bGFy
Q29uc3RhbnQsIHNwZWN1bGFyRXhwb25lbnQsIGtlcm5lbFVuaXRMZW5ndGhYLCBrZXJuZWxVbml0
TGVuZ3RoWSwgV1RGTW92ZShsaWdodFNvdXJjZSkpKTsKIH0KIAotRkVTcGVjdWxhckxpZ2h0aW5n
Ojp+RkVTcGVjdWxhckxpZ2h0aW5nKCkgPSBkZWZhdWx0OwotCiBib29sIEZFU3BlY3VsYXJMaWdo
dGluZzo6c2V0U3BlY3VsYXJDb25zdGFudChmbG9hdCBzcGVjdWxhckNvbnN0YW50KQogewogICAg
IGlmIChtX3NwZWN1bGFyQ29uc3RhbnQgPT0gc3BlY3VsYXJDb25zdGFudCkKZGlmZiAtLWdpdCBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFU3BlY3Vs
YXJMaWdodGluZy5oCmluZGV4IGU5OThhNzYwNWQxZTQ3MzVkOWY0OTc5OGQzOTgxOGJmM2IyNDk1
OGEuLjliYmJhOGE4ZjFmYzZmMDEwNDU3NjBkYTgwZDM1ZjhjZDI3N2NlMTcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVTcGVjdWxhckxpZ2h0
aW5nLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVNw
ZWN1bGFyTGlnaHRpbmcuaApAQCAtMjgsNyArMjgsNiBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiBj
bGFzcyBGRVNwZWN1bGFyTGlnaHRpbmcgOiBwdWJsaWMgRkVMaWdodGluZyB7CiBwdWJsaWM6CiAg
ICAgc3RhdGljIFJlZjxGRVNwZWN1bGFyTGlnaHRpbmc+IGNyZWF0ZShGaWx0ZXImLCBjb25zdCBD
b2xvciYsIGZsb2F0LCBmbG9hdCwgZmxvYXQsIGZsb2F0LCBmbG9hdCwgUmVmPExpZ2h0U291cmNl
PiYmKTsKLSAgICB2aXJ0dWFsIH5GRVNwZWN1bGFyTGlnaHRpbmcoKTsKIAogICAgIGZsb2F0IHNw
ZWN1bGFyQ29uc3RhbnQoKSBjb25zdCB7IHJldHVybiBtX3NwZWN1bGFyQ29uc3RhbnQ7IH0KICAg
ICBib29sIHNldFNwZWN1bGFyQ29uc3RhbnQoZmxvYXQpOwpAQCAtNDQsMyArNDMsNCBAQCBwcml2
YXRlOgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNf
RklMVEVSX0VGRkVDVChGRVNwZWN1bGFyTGlnaHRpbmcpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKaW5kZXggMzVjNTFjYmIyMjlk
ZWU5NjQyZGMxZTdkY2EwYzVkYjJmY2FjMjBhZC4uM2U1MGZiNmMwMGVjZjM4Mzk4NWM2Mjk3OTg0
ZjZlOTc4NWNlNDI0ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtMzIsNyArMzIsNyBAQAogbmFtZXNwYWNlIFdlYkNv
cmUgewogCiBGRVRpbGU6OkZFVGlsZShGaWx0ZXImIGZpbHRlcikKLSAgICA6IEZpbHRlckVmZmVj
dChmaWx0ZXIsIFR5cGU6OlRpbGUpCisgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OkZFVGlsZSkKIHsKIH0KIApAQCAtNTgsMTAgKzU4LDEwIEBAIHZvaWQgRkVU
aWxlOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgIEZsb2F0UmVjdCB0aWxlUmVjdCA9IGlu
LT5tYXhFZmZlY3RSZWN0KCk7CiAgICAgRmxvYXRQb2ludCBpbk1heEVmZmVjdExvY2F0aW9uID0g
dGlsZVJlY3QubG9jYXRpb24oKTsKICAgICBGbG9hdFBvaW50IG1heEVmZmVjdExvY2F0aW9uID0g
bWF4RWZmZWN0UmVjdCgpLmxvY2F0aW9uKCk7Ci0gICAgaWYgKGluLT5maWx0ZXJFZmZlY3RUeXBl
KCkgPT0gRmlsdGVyRWZmZWN0VHlwZVNvdXJjZUlucHV0KSB7CisgICAgaWYgKGluLT5maWx0ZXJU
eXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGluLT5maWx0ZXJU
eXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAgICAgICBGaWx0
ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9IGZpbHRlci5m
aWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29s
dXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKKyAg
ICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIH0KIAogICAg
IGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1hZ2VCdWZmZXIo
dGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgZmlsdGVy
KCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFVGlsZS5oCmluZGV4IDQ5YmQ5OWYwOTQ0N2RhZTFjZjA5YWYxMjM1OGM2
ZGU4NDA2ODc3MTQuLjVjNDhlZjQ1MTUwZWMyY2Y4NzlmZGRiN2U0OGU5ZTllOGQ1MDI0MWUgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxl
LmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRpbGUu
aApAQCAtMzMsMTAgKzMzLDYgQEAgcHVibGljOgogcHJpdmF0ZToKICAgICBGRVRpbGUoRmlsdGVy
Jik7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkZFVGlsZSI7IH0KLQotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNv
bnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVUaWxlOyB9Ci0KICAgICB2b2lk
IHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwogCiAgICAgdm9pZCBkZXRlcm1pbmVB
YnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlIHsgc2V0QWJzb2x1dGVQYWludFJlY3QoZW5jbG9z
aW5nSW50UmVjdChtYXhFZmZlY3RSZWN0KCkpKTsgfQpAQCAtNDYsMyArNDIsNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklM
VEVSX0VGRkVDVChGRVRpbGUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKaW5kZXggYWMyMzQ2ZThhNGJhNThh
YWE5MjRhNmQ2N2JkNWU0Yjc3ZGQyMjY4Zi4uNWM2YWJkNTQzY2EzMzY4YTM5MDE4ODEzY2VkMTcz
NTVhODhhNjU1YSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcApAQCAtNDksNyArNDksNyBAQCBzdGF0aWMg
Y29uc3QgaW50IHNfcmFuZFEgPSAxMjc3NzM7IC8vIG0gLyBhCiBzdGF0aWMgY29uc3QgaW50IHNf
cmFuZFIgPSAyODM2OyAvLyBtICUgYQogCiBGRVR1cmJ1bGVuY2U6OkZFVHVyYnVsZW5jZShGaWx0
ZXImIGZpbHRlciwgVHVyYnVsZW5jZVR5cGUgdHlwZSwgZmxvYXQgYmFzZUZyZXF1ZW5jeVgsIGZs
b2F0IGJhc2VGcmVxdWVuY3lZLCBpbnQgbnVtT2N0YXZlcywgZmxvYXQgc2VlZCwgYm9vbCBzdGl0
Y2hUaWxlcykKLSAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OlR1cmJ1bGVuY2UpCisg
ICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVHVyYnVsZW5j
ZSkKICAgICAsIG1fdHlwZSh0eXBlKQogICAgICwgbV9iYXNlRnJlcXVlbmN5WChiYXNlRnJlcXVl
bmN5WCkKICAgICAsIG1fYmFzZUZyZXF1ZW5jeVkoYmFzZUZyZXF1ZW5jeVkpCkBAIC0zNzEsMTcg
KzM3MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJh
eSYgcGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3Rh
cnRZKTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsK
LSAgICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxv
YXRQb2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5k
ZXhPZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsK
LSAgICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRl
VHJhbnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBG
bG9hdFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0
aCgpLCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChp
bnQgeSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50
LnkoKSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAg
ICBmb3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAg
ICAgICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50
IGxvY2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAg
ICAgIEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lk
dGgoKSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0g
Y2FsY3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRh
LCBsb2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNv
bXBvbmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGlu
ZGV4T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVs
ZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVs
QXJyYXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2Nh
bGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5
KCkpIHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5j
ZS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVu
Y2UuaAppbmRleCA0ZDUzNmIzN2E4MGFhZGY5MTFlYmZjZTg5Nzc0Y2QzY2NlY2I1Y2ZiLi41ODFm
YmVmMGE3ZDZjMWI0M2I3YTE4ZTA3OGZmMjk3M2NlMTBjYWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmgKQEAg
LTEwOCw4ICsxMDgsNiBAQCBwcml2YXRlOgogCiAgICAgRkVUdXJidWxlbmNlKEZpbHRlciYsIFR1
cmJ1bGVuY2VUeXBlLCBmbG9hdCwgZmxvYXQsIGludCwgZmxvYXQsIGJvb2wpOwogCi0gICAgY29u
c3QgY2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJGRVR1cmJ1bGVuY2Ui
OyB9Ci0KICAgICB2b2lkIHBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpIG92ZXJyaWRlOwogICAgIHZv
aWQgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKSBvdmVycmlkZSB7IHNldEFic29sdXRlUGFp
bnRSZWN0KGVuY2xvc2luZ0ludFJlY3QobWF4RWZmZWN0UmVjdCgpKSk7IH0KICAgICBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKQEAgLTEzMiwzICsxMzAsNCBAQCBwcml2YXRl
OgogCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCiAKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklM
VEVSX0VGRkVDVChGRVR1cmJ1bGVuY2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCBhMmQ5OTc5M2IwZGIyMjU4YmM0NzZkZGNj
MjljMGNlMjYxMTBiYzFmLi41NDIxMTBhODhmZWMxZjU2M2ZmYjA3MTBjZjUzZDU2NmRjOWFhYmYw
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0Zp
bHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyLmgKQEAgLTEsNiArMSw3IEBACiAvKgogICogQ29weXJpZ2h0IChDKSAyMDA5IERpcmsgU2No
dWx6ZSA8a3JpdEB3ZWJraXQub3JnPgogICogQ29weXJpZ2h0IChDKSAyMDEzIEdvb2dsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAg
QWxsIHJpZ2h0cyByZXNlcnZlZC4KICAqCiAgKiBUaGlzIGxpYnJhcnkgaXMgZnJlZSBzb2Z0d2Fy
ZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCiAgKiBtb2RpZnkgaXQgdW5kZXIgdGhl
IHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwpAQCAtMjEsNTggKzIyLDU2
IEBACiAjcHJhZ21hIG9uY2UKIAogI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgorI2luY2x1
ZGUgIkZpbHRlckZ1bmN0aW9uLmgiCiAjaW5jbHVkZSAiRmxvYXRSZWN0LmgiCiAjaW5jbHVkZSAi
R3JhcGhpY3NUeXBlcy5oIgogI2luY2x1ZGUgIkltYWdlQnVmZmVyLmgiCi0jaW5jbHVkZSA8d3Rm
L1JlZkNvdW50ZWQuaD4KIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBGaWx0ZXJFZmZl
Y3Q7CiAKLWNsYXNzIEZpbHRlciA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlcj4geworY2xhc3Mg
RmlsdGVyIDogcHVibGljIEZpbHRlckZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAgICBGaWx0ZXIoY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgZmxvYXQgZmlsdGVyU2NhbGUg
PSAxKQotICAgICAgICA6IG1fYWJzb2x1dGVUcmFuc2Zvcm0oYWJzb2x1dGVUcmFuc2Zvcm0pCi0g
ICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKLSAgICB7IH0KLSAgICB2aXJ0dWFs
IH5GaWx0ZXIoKSA9IGRlZmF1bHQ7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKCkgY29uc3Qg
eyByZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQorICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoY29uc3Qg
RmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gZmlsdGVyU2NhbGU7IH0K
KworICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCB7IHJldHVybiBtX3NvdXJj
ZUltYWdlUmVjdDsgfQorICAgIHZvaWQgc2V0RmlsdGVyUmVnaW9uKGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uKSB7IG1fZmlsdGVyUmVnaW9uID0gZmlsdGVyUmVnaW9uOyB9CisgICAgCisg
ICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9u
OyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QpIHsgbV9zb3VyY2VJbWFnZVJlY3QgPSBzb3VyY2VJbWFnZVJlY3Q7IH0KIAorICAg
IHZpcnR1YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyU2NhbGUoRmxvYXRTaXplIHNpemUpIGNv
bnN0IHsgcmV0dXJuIHNpemUgKiBtX2ZpbHRlclNjYWxlOyB9CisgICAgCiAgICAgdm9pZCBzZXRT
b3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNlSW1hZ2UpIHsgbV9zb3VyY2VJ
bWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAgICAgSW1hZ2VCdWZmZXIqIHNvdXJjZUlt
YWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KLQotICAgIGZs
b2F0IGZpbHRlclNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQotICAgIHZv
aWQgc2V0RmlsdGVyU2NhbGUoZmxvYXQgc2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNjYWxlOyB9
Ci0KLSAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtKCkgY29uc3Qg
eyByZXR1cm4gbV9hYnNvbHV0ZVRyYW5zZm9ybTsgfQotCiAgICAgUmVuZGVyaW5nTW9kZSByZW5k
ZXJpbmdNb2RlKCkgY29uc3QgeyByZXR1cm4gbV9yZW5kZXJpbmdNb2RlOyB9CiAgICAgdm9pZCBz
ZXRSZW5kZXJpbmdNb2RlKFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkgeyBtX3JlbmRlcmlu
Z01vZGUgPSByZW5kZXJpbmdNb2RlOyB9CiAKLSAgICB2aXJ0dWFsIGJvb2wgaXNTVkdGaWx0ZXIo
KSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotICAgIHZpcnR1YWwgYm9vbCBpc0NTU0ZpbHRlcigp
IGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0KLSAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRC
eUZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplIHNpemUpIGNvbnN0IHsgcmV0dXJuIHNpemUgKiBt
X2ZpbHRlclJlc29sdXRpb247IH0KLSAgICAKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBzb3VyY2VJ
bWFnZVJlY3QoKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3QgZmlsdGVyUmVnaW9u
KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbkluVXNlclNw
YWNlKCkgY29uc3QgPSAwOwotCiBwcm90ZWN0ZWQ6Ci0gICAgZXhwbGljaXQgRmlsdGVyKGNvbnN0
IEZsb2F0U2l6ZSYgZmlsdGVyUmVzb2x1dGlvbikKLSAgICAgICAgOiBtX2ZpbHRlclJlc29sdXRp
b24oZmlsdGVyUmVzb2x1dGlvbikKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUs
IGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCisgICAgICAgIDogRmlsdGVyRnVuY3Rpb24o
ZmlsdGVyVHlwZSkKKyAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQorICAgIHsK
KyAgICB9CisKKyAgICBGaWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0
U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25z
dCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikKKyAgICAgICAgOiBGaWx0ZXJGdW5jdGlvbihmaWx0
ZXJUeXBlKQorICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpCisgICAgICAgICwg
bV9zb3VyY2VJbWFnZVJlY3Qoc291cmNlSW1hZ2VSZWN0KQorICAgICAgICAsIG1fZmlsdGVyUmVn
aW9uKGZpbHRlclJlZ2lvbikKICAgICB7CiAgICAgfQogCiBwcml2YXRlOgorICAgIEZsb2F0U2l6
ZSBtX2ZpbHRlclNjYWxlOworICAgIEZsb2F0UmVjdCBtX3NvdXJjZUltYWdlUmVjdDsKKyAgICBG
bG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CisKICAgICBSZWZQdHI8SW1hZ2VCdWZmZXI+IG1fc291
cmNlSW1hZ2U7Ci0gICAgRmxvYXRTaXplIG1fZmlsdGVyUmVzb2x1dGlvbjsKLSAgICBBZmZpbmVU
cmFuc2Zvcm0gbV9hYnNvbHV0ZVRyYW5zZm9ybTsKICAgICBSZW5kZXJpbmdNb2RlIG1fcmVuZGVy
aW5nTW9kZSB7IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQgfTsKLSAgICBmbG9hdCBtX2Zp
bHRlclNjYWxlIHsgMSB9OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
Y3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCmluZGV4IGZiNjc3NTRlNGZjNWJiY2E1MWMzNDhlYzdmNjNlNGNjOTI3ZGIxMDguLjQw
ZDIzMDBlMTFlMWMxMjZmNzZiODU4MmRhMjk5NGNkNTllMzZiNTIgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRWZmZWN0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5j
cHAKQEAgLTQ1LDE0ICs0NSwxMiBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLUZpbHRlckVm
ZmVjdDo6RmlsdGVyRWZmZWN0KEZpbHRlciYgZmlsdGVyLCBUeXBlIHR5cGUpCi0gICAgOiBtX2Zp
bHRlcihmaWx0ZXIpCi0gICAgLCBtX2ZpbHRlckVmZmVjdENsYXNzVHlwZSh0eXBlKQorRmlsdGVy
RWZmZWN0OjpGaWx0ZXJFZmZlY3QoRmlsdGVyJiBmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZSB0
eXBlKQorICAgIDogRmlsdGVyRnVuY3Rpb24odHlwZSkKKyAgICAsIG1fZmlsdGVyKGZpbHRlcikK
IHsKIH0KIAotRmlsdGVyRWZmZWN0Ojp+RmlsdGVyRWZmZWN0KCkgPSBkZWZhdWx0OwotCiB2b2lk
IEZpbHRlckVmZmVjdDo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIG1fYWJz
b2x1dGVQYWludFJlY3QgPSBJbnRSZWN0KCk7CkBAIC0xMDcsMTEgKzEwNSwxMSBAQCBGbG9hdFJl
Y3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
ICAgICAgICAgc3VicmVnaW9uLnVuaXRlKGlucHV0UHJpbWl0aXZlU3VicmVnaW9uKTsKICAgICAg
ICAgfQogICAgIH0gZWxzZQotICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJSZWdp
b25JblVzZXJTcGFjZSgpOworICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJSZWdp
b24oKTsKIAogICAgIC8vIEFmdGVyIGNhbGxpbmcgZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3Vi
cmVnaW9uIG9uIHRoZSB0YXJnZXQgZWZmZWN0LCByZXNldCB0aGUgc3VicmVnaW9uIGFnYWluIGZv
ciA8ZmVUaWxlPi4KLSAgICBpZiAoZmlsdGVyRWZmZWN0VHlwZSgpID09IEZpbHRlckVmZmVjdFR5
cGVUaWxlKQotICAgICAgICBzdWJyZWdpb24gPSBtX2ZpbHRlci5maWx0ZXJSZWdpb25JblVzZXJT
cGFjZSgpOworICAgIGlmIChmaWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpGRVRp
bGUpCisgICAgICAgIHN1YnJlZ2lvbiA9IG1fZmlsdGVyLmZpbHRlclJlZ2lvbigpOwogCiAgICAg
YXV0byBib3VuZGFyaWVzID0gZWZmZWN0Qm91bmRhcmllcygpOwogICAgIGlmIChoYXNYKCkpCkBA
IC0xMjUsMTUgKzEyMywxNCBAQCBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogCiAgICAgc2V0RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9u
KHN1YnJlZ2lvbik7CiAKLSAgICBhdXRvIGFic29sdXRlU3VicmVnaW9uID0gbV9maWx0ZXIuYWJz
b2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHN1YnJlZ2lvbik7Ci0gICAgYXV0byBmaWx0ZXJSZXNv
bHV0aW9uID0gbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpOwotICAgIGFic29sdXRlU3VicmVn
aW9uLnNjYWxlKGZpbHRlclJlc29sdXRpb24pOworICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24g
PSBzdWJyZWdpb247CisgICAgYWJzb2x1dGVTdWJyZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVy
U2NhbGUoKSk7CiAgICAgLy8gU2F2ZSB0aGlzIGJlZm9yZSBjbGlwcGluZyBzbyB3ZSBjYW4gdXNl
IGl0IHRvIG1hcCBsaWdodGluZyBwb2ludHMgZnJvbSB1c2VyIHNwYWNlIHRvIGJ1ZmZlciBjb29y
ZGluYXRlcy4KICAgICBzZXRVbmNsaXBwZWRBYnNvbHV0ZVN1YnJlZ2lvbihhYnNvbHV0ZVN1YnJl
Z2lvbik7CiAKICAgICAvLyBDbGlwIGV2ZXJ5IGZpbHRlciBlZmZlY3QgdG8gdGhlIGZpbHRlciBy
ZWdpb24uCiAgICAgYXV0byBhYnNvbHV0ZVNjYWxlZEZpbHRlclJlZ2lvbiA9IG1fZmlsdGVyLmZp
bHRlclJlZ2lvbigpOwotICAgIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uLnNjYWxlKGZpbHRl
clJlc29sdXRpb24pOworICAgIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uLnNjYWxlKG1fZmls
dGVyLmZpbHRlclNjYWxlKCkpOwogICAgIGFic29sdXRlU3VicmVnaW9uLmludGVyc2VjdChhYnNv
bHV0ZVNjYWxlZEZpbHRlclJlZ2lvbik7CiAKICAgICBzZXRNYXhFZmZlY3RSZWN0KGFic29sdXRl
U3VicmVnaW9uKTsKQEAgLTE4MSw3ICsxNzgsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6YXBwbHko
KQogICAgIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgc2V0UmVzdWx0Q29sb3JT
cGFjZShtX29wZXJhdGluZ0NvbG9yU3BhY2UpOwogCi0gICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRl
cnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIgPDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0
aGlzIDw8ICIgYXBwbHkoKTpcbiAgZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uICIgPDwgbV9maWx0
ZXJQcmltaXRpdmVTdWJyZWdpb24gPDwgIlxuICBlZmZlY3RCb3VuZGFyaWVzICIgPDwgbV9lZmZl
Y3RCb3VuZGFyaWVzIDw8ICJcbiAgYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gIiA8PCBtX2Fi
c29sdXRlVW5jbGlwcGVkU3VicmVnaW9uIDw8ICJcbiAgYWJzb2x1dGVQYWludFJlY3QgIiA8PCBt
X2Fic29sdXRlUGFpbnRSZWN0IDw8ICJcbiAgbWF4RWZmZWN0UmVjdCAiIDw8IG1fbWF4RWZmZWN0
UmVjdCA8PCAiXG4gIGZpbHRlciBzY2FsZSAiIDw8IG1fZmlsdGVyLmZpbHRlclNjYWxlKCkgPDwg
IlxuICBmaWx0ZXIgcmVzb2x1dGlvbiAiIDw8IG1fZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKSk7
CisgICAgTE9HX1dJVEhfU1RSRUFNKEZpbHRlcnMsIHN0cmVhbSA8PCAiRmlsdGVyRWZmZWN0ICIg
PDwgZmlsdGVyTmFtZSgpIDw8ICIgIiA8PCB0aGlzIDw8ICIgYXBwbHkoKTpcbiAgZmlsdGVyUHJp
bWl0aXZlU3VicmVnaW9uICIgPDwgbV9maWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gPDwgIlxuICBl
ZmZlY3RCb3VuZGFyaWVzICIgPDwgbV9lZmZlY3RCb3VuZGFyaWVzIDw8ICJcbiAgYWJzb2x1dGVV
bmNsaXBwZWRTdWJyZWdpb24gIiA8PCBtX2Fic29sdXRlVW5jbGlwcGVkU3VicmVnaW9uIDw8ICJc
biAgYWJzb2x1dGVQYWludFJlY3QgIiA8PCBtX2Fic29sdXRlUGFpbnRSZWN0IDw8ICJcbiAgbWF4
RWZmZWN0UmVjdCAiIDw8IG1fbWF4RWZmZWN0UmVjdCA8PCAiXG4gIGZpbHRlciBzY2FsZSAiIDw8
IG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgaWYgKG1fYWJzb2x1dGVQYWludFJlY3Qu
aXNFbXB0eSgpIHx8IEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhtX2Fic29sdXRlUGFp
bnRSZWN0LnNpemUoKSkpCiAgICAgICAgIHJldHVybjsKQEAgLTI3Myw3ICsyNzAsNyBAQCBJbWFn
ZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjppbWFnZUJ1ZmZlclJlc3VsdCgpCiAgICAgaWYgKG1faW1h
Z2VCdWZmZXJSZXN1bHQpCiAgICAgICAgIHJldHVybiBtX2ltYWdlQnVmZmVyUmVzdWx0LmdldCgp
OwogCi0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNv
bHV0ZVBhaW50UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwor
ICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKG1fYWJzb2x1dGVQ
YWludFJlY3Quc2l6ZSgpLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG1fcmVzdWx0Q29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1faW1hZ2VCdWZmZXJSZXN1
bHQpCiAgICAgICAgIHJldHVybiBudWxscHRyOwogCkBAIC0yODksNyArMjg2LDYgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnVubXVsdGlwbGllZFJlc3VsdChjb25z
dCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNpemUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7
CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkp
OwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0
byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAg
ICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxw
dHI7CkBAIC0zMDQsNyArMzAwLDYgQEAgUmVmUHRyPFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJF
ZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50UmVjdCYgcmVjdCwKIHsKICAgICBJ
bnRTaXplIHNjYWxlZFNpemUocmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKHNjYWxlZFNpemUpKTsKLSAgICBzY2FsZWRTaXplLnNjYWxlKG1f
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIGF1dG8gY2hlY2tlZEFyZWEgPSBzY2FsZWRTaXpl
LmFyZWE8UmVjb3JkT3ZlcmZsb3c+KCkgKiA0OwogICAgIGlmIChjaGVja2VkQXJlYS5oYXNPdmVy
Zmxvd2VkKCkpCiAgICAgICAgIHJldHVybiBudWxscHRyOwpAQCAtMzE4LDkgKzMxMyw3IEBAIFJl
ZlB0cjxVaW50OENsYW1wZWRBcnJheT4gRmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0
KGNvbnN0IEludFJlY3QmIHJlY3QsCiB2b2lkIEZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMo
Y29uc3QgVWludDhDbGFtcGVkQXJyYXkmIHNvdXJjZSwgVWludDhDbGFtcGVkQXJyYXkmIGRlc3Rp
bmF0aW9uLCBjb25zdCBJbnRSZWN0JiByZWN0KSBjb25zdAogewogICAgIEludFJlY3Qgc2NhbGVk
UmVjdChyZWN0KTsKLSAgICBzY2FsZWRSZWN0LnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIEludFNpemUgc2NhbGVkUGFpbnRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKLSAgICBzY2FsZWRQYWludFNpemUuc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAK
ICAgICAvLyBJbml0aWFsaXplIHRoZSBkZXN0aW5hdGlvbiB0byB0cmFuc3BhcmVudCBibGFjaywg
aWYgbm90IGVudGlyZWx5IGNvdmVyZWQgYnkgdGhlIHNvdXJjZS4KICAgICBpZiAoc2NhbGVkUmVj
dC54KCkgPCAwIHx8IHNjYWxlZFJlY3QueSgpIDwgMCB8fCBzY2FsZWRSZWN0Lm1heFgoKSA+IHNj
YWxlZFBhaW50U2l6ZS53aWR0aCgpIHx8IHNjYWxlZFJlY3QubWF4WSgpID4gc2NhbGVkUGFpbnRT
aXplLmhlaWdodCgpKQpAQCAtNDQ0LDEwICs0MzcsOSBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVm
ZmVyPiBGaWx0ZXJFZmZlY3Q6OmNvbnZlcnRQaXhlbEJ1ZmZlclRvQ29sb3JTcGFjZShjb25zdCBE
ZQogICAgIC8vIEZJWE1FOiBVc2luZyBhbiBJbWFnZUJ1ZmZlciB0byBwZXJmb3JtIHRoZSBjb2xv
ciBzcGFjZSBjb252ZXJzaW9uIGlzIHVubmVjZXNzYXJ5LiBXZSBjYW4gZG8gaXQgZGlyZWN0bHku
CiAKICAgICBJbnRSZWN0IGRlc3RpbmF0aW9uUmVjdChJbnRQb2ludCgpLCBwaXhlbEJ1ZmZlci5z
aXplKCkpOwotICAgIGRlc3RpbmF0aW9uUmVjdC5zY2FsZSgxIC8gbV9maWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7CiAgICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRT
aXplKGRlc3RpbmF0aW9uUmVjdC5zaXplKCkpOwogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZl
ciB0byBzdG9yZSBpbmNvbWluZyBQaXhlbEJ1ZmZlcgotICAgIGF1dG8gYnVmZmVyID0gSW1hZ2VC
dWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2Zp
bHRlci5maWx0ZXJTY2FsZSgpLCBvcGVyYXRpbmdDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpC
R1JBOCk7CisgICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXpl
LCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6
bnVsbG9wdDsKICAgICBidWZmZXItPnB1dFBpeGVsQnVmZmVyKHBpeGVsQnVmZmVyLCBkZXN0aW5h
dGlvblJlY3QpOwpAQCAtNDYxLDcgKzQ1Myw3IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgRmxvYXRTaXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKHJlY3Qu
c2l6ZSgpKTsKIAogICAgIC8vIENyZWF0ZSBhbiBJbWFnZUJ1ZmZlciB3aXRoIHRoZSBjb3JyZWN0
IGNvbG9yIHNwYWNlIGFuZCB1dGlsaXplIENHIHRvIGhhbmRsZSBjb2xvciBzcGFjZSBjb252ZXJz
aW9uCi0gICAgYXV0byBjb252ZXJ0ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1w
ZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRlclNjYWxlKCks
IHRhcmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgYXV0byBjb252ZXJ0
ZWRCdWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5k
ZXJpbmdNb2RlKCksIDEsIHRhcmdldENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CiAg
ICAgaWYgKCFjb252ZXJ0ZWRCdWZmZXIpCiAgICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CiAK
QEAgLTUxMyw3ICs1MDUsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlwbGllZFJl
c3VsdChVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNvbnN0CiAgICAgICAgIH0gZWxz
ZSB7CiAgICAgICAgICAgICBJbnRTaXplIGlucHV0U2l6ZShtX2Fic29sdXRlUGFpbnRSZWN0LnNp
emUoKSk7CiAgICAgICAgICAgICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGlu
ZyhpbnB1dFNpemUpKTsKLSAgICAgICAgICAgIGlucHV0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIAogICAgICAgICAgICAgQVNTRVJUKG1fcHJlbXVsdGlw
bGllZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFj
ZSk7CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRp
cGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRD
b2xvclNwYWNlIH07CkBAIC01NTIsNyArNTQzLDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3Q6OmNvcHlQ
cmVtdWx0aXBsaWVkUmVzdWx0KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QK
ICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1
dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNp
emVOZWVkc0NsYW1waW5nKGlucHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxl
KG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogCiAgICAgICAgICAgICBBU1NFUlQobV91bm11bHRp
cGxpZWRJbWFnZVJlc3VsdC0+Zm9ybWF0KCkuY29sb3JTcGFjZSA9PSBtX3Jlc3VsdENvbG9yU3Bh
Y2UpOwogICAgICAgICAgICAgUGl4ZWxCdWZmZXJGb3JtYXQgZm9ybWF0IHsgQWxwaGFQcmVtdWx0
aXBsaWNhdGlvbjo6UHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENv
bG9yU3BhY2UgfTsKQEAgLTU3Miw3ICs1NjIsNyBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVBy
ZW11bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAog
CiBJbWFnZUJ1ZmZlciogRmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCgpCiB7
Ci0gICAgTE9HKEZpbHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlSW1hZ2VCdWZmZXJS
ZXN1bHQgJWR4JWQiLCBmaWx0ZXJOYW1lKCksIHRoaXMsIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpLndpZHRoKCksIG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpLmhlaWdodCgpKTsKKyAgICBM
T0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBjcmVhdGVJbWFnZUJ1ZmZlclJlc3VsdCAl
ZHglZCIsIGZpbHRlck5hbWUoKS5jaGFyYWN0ZXJzOCgpLCB0aGlzLCBtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKS53aWR0aCgpLCBtX2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKS5oZWlnaHQoKSk7
CiAKICAgICAvLyBPbmx5IG9uZSByZXN1bHQgdHlwZSBpcyBhbGxvd2VkLgogICAgIEFTU0VSVCgh
aGFzUmVzdWx0KCkpOwpAQCAtNTgwLDEzICs1NzAsMTMgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVm
ZmVjdDo6Y3JlYXRlSW1hZ2VCdWZmZXJSZXN1bHQoKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
IAogICAgIEZsb2F0U2l6ZSBjbGFtcGVkU2l6ZSA9IEltYWdlQnVmZmVyOjpjbGFtcGVkU2l6ZSht
X2Fic29sdXRlUGFpbnRSZWN0LnNpemUoKSk7Ci0gICAgbV9pbWFnZUJ1ZmZlclJlc3VsdCA9IElt
YWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwg
bV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOworICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNs
YW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIDEsIG1fcmVzdWx0Q29sb3JTcGFj
ZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICByZXR1cm4gbV9pbWFnZUJ1ZmZlclJlc3VsdC5n
ZXQoKTsKIH0KIAogc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIEZpbHRlckVmZmVjdDo6Y3Jl
YXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogewotICAgIExPRyhGaWx0ZXJzLCAiRmlsdGVy
RWZmZWN0ICVzICVwIGNyZWF0ZVVubXVsdGlwbGllZEltYWdlUmVzdWx0IiwgZmlsdGVyTmFtZSgp
LCB0aGlzKTsKKyAgICBMT0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAlcyAlcCBjcmVhdGVVbm11
bHRpcGxpZWRJbWFnZVJlc3VsdCIsIGZpbHRlck5hbWUoKS5jaGFyYWN0ZXJzOCgpLCB0aGlzKTsK
IAogICAgIC8vIE9ubHkgb25lIHJlc3VsdCB0eXBlIGlzIGFsbG93ZWQuCiAgICAgQVNTRVJUKCFo
YXNSZXN1bHQoKSk7CkBAIC01OTcsNyArNTg3LDYgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZl
cj4mIEZpbHRlckVmZmVjdDo6Y3JlYXRlVW5tdWx0aXBsaWVkSW1hZ2VSZXN1bHQoKQogCiAgICAg
SW50U2l6ZSByZXN1bHRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAgICBBU1NF
UlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhyZXN1bHRTaXplKSk7Ci0gICAgcmVz
dWx0U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBQaXhlbEJ1ZmZlckZv
cm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9uOjpVbnByZW11bHRpcGxpZWQsIFBp
eGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAgbV91bm11bHRpcGxp
ZWRJbWFnZVJlc3VsdCA9IFBpeGVsQnVmZmVyOjp0cnlDcmVhdGUoZm9ybWF0LCByZXN1bHRTaXpl
KTsKICAgICByZXR1cm4gbV91bm11bHRpcGxpZWRJbWFnZVJlc3VsdDsKQEAgLTYwNSw3ICs1OTQs
NyBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0OjpjcmVhdGVVbm11
bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0
ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiB7Ci0gICAgTE9HKEZp
bHRlcnMsICJGaWx0ZXJFZmZlY3QgJXMgJXAgY3JlYXRlUHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
IiwgZmlsdGVyTmFtZSgpLCB0aGlzKTsKKyAgICBMT0coRmlsdGVycywgIkZpbHRlckVmZmVjdCAl
cyAlcCBjcmVhdGVQcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQiLCBmaWx0ZXJOYW1lKCkuY2hhcmFj
dGVyczgoKSwgdGhpcyk7CiAKICAgICAvLyBPbmx5IG9uZSByZXN1bHQgdHlwZSBpcyBhbGxvd2Vk
LgogICAgIEFTU0VSVCghaGFzUmVzdWx0KCkpOwpAQCAtNjE2LDcgKzYwNSw2IEBAIHN0ZDo6b3B0
aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFn
ZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3Vs
dFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwog
ICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlBy
ZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAg
ICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZv
cm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0
OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
aWx0ZXJFZmZlY3QuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmgKaW5kZXggMTJkZWQyNjVhNjU1YzM3ZTc3ZTJjZjA1YjUyNzczZjJiOTZi
NDcxYy4uNTUyN2Y2YmY0YmY2MjhlNzE1MGY4MWQ1ZWZiMzlkZjMxYTI5MWI3MiAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZlY3Qu
aAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVm
ZmVjdC5oCkBAIC0yNCwxMyArMjQsMTMgQEAKIAogI2luY2x1ZGUgIkFscGhhUHJlbXVsdGlwbGlj
YXRpb24uaCIKICNpbmNsdWRlICJEZXN0aW5hdGlvbkNvbG9yU3BhY2UuaCIKKyNpbmNsdWRlICJG
aWx0ZXJGdW5jdGlvbi5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkludFJl
Y3QuaCIKICNpbmNsdWRlICJJbnRSZWN0RXh0ZW50LmgiCiAjaW5jbHVkZSAiUGl4ZWxCdWZmZXIu
aCIKICNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9Gb3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL01h
dGhFeHRyYXMuaD4KLSNpbmNsdWRlIDx3dGYvUmVmQ291bnRlZC5oPgogI2luY2x1ZGUgPHd0Zi9S
ZWZQdHIuaD4KICNpbmNsdWRlIDx3dGYvVmVjdG9yLmg+CiAKQEAgLTQ2LDM5ICs0Niw4IEBAIGNs
YXNzIEltYWdlQnVmZmVyOwogCiB0eXBlZGVmIFZlY3RvcjxSZWZQdHI8RmlsdGVyRWZmZWN0Pj4g
RmlsdGVyRWZmZWN0VmVjdG9yOwogCi1lbnVtIEZpbHRlckVmZmVjdFR5cGUgewotICAgIEZpbHRl
ckVmZmVjdFR5cGVVbmtub3duLAotICAgIEZpbHRlckVmZmVjdFR5cGVJbWFnZSwKLSAgICBGaWx0
ZXJFZmZlY3RUeXBlVGlsZSwKLSAgICBGaWx0ZXJFZmZlY3RUeXBlU291cmNlSW5wdXQKLX07Ci0K
LWNsYXNzIEZpbHRlckVmZmVjdCA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckVmZmVjdD4gewor
Y2xhc3MgRmlsdGVyRWZmZWN0IDogcHVibGljIEZpbHRlckZ1bmN0aW9uIHsKIHB1YmxpYzoKLSAg
ICBlbnVtIGNsYXNzIFR5cGUgOiB1aW50OF90IHsKLSAgICAgICAgQmxlbmQsCi0gICAgICAgIENv
bG9yTWF0cml4LAotICAgICAgICBDb21wb25lbnRUcmFuc2ZlciwKLSAgICAgICAgQ29tcG9zaXRl
LAotICAgICAgICBDb252b2x2ZU1hdHJpeCwKLSAgICAgICAgRGlmZnVzZUxpZ2h0aW5nLAotICAg
ICAgICBEaXNwbGFjZW1lbnRNYXAsCi0gICAgICAgIERyb3BTaGFkb3csCi0gICAgICAgIEZsb29k
LAotICAgICAgICBHYXVzc2lhbkJsdXIsCi0gICAgICAgIEltYWdlLAotICAgICAgICBMaWdodGlu
ZywKLSAgICAgICAgTWVyZ2UsCi0gICAgICAgIE1vcnBob2xvZ3ksCi0gICAgICAgIE9mZnNldCwK
LSAgICAgICAgU3BlY3VsYXJMaWdodGluZywKLSAgICAgICAgVGlsZSwKLSAgICAgICAgVHVyYnVs
ZW5jZSwKLSAgICAgICAgU291cmNlQWxwaGEsCi0gICAgICAgIFNvdXJjZUdyYXBoaWMKLSAgICB9
OwotICAgIHZpcnR1YWwgfkZpbHRlckVmZmVjdCgpOwotCiAgICAgdm9pZCBjbGVhclJlc3VsdCgp
OwogICAgIHZvaWQgY2xlYXJSZXN1bHRzUmVjdXJzaXZlKCk7CiAKQEAgLTEyNSw4ICs5NCw2IEBA
IHB1YmxpYzoKIAogICAgIHZpcnR1YWwgdm9pZCBkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
OwogCi0gICAgdmlydHVhbCBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBjb25z
dCB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlVW5rbm93bjsgfQotCiAgICAgdmlydHVhbCBJbnRP
dXRzZXRzIG91dHNldHMoKSBjb25zdCB7IHJldHVybiBJbnRPdXRzZXRzKCk7IH0KIAogICAgIGVu
dW0gY2xhc3MgUmVwcmVzZW50YXRpb25UeXBlIHsgVGVzdE91dHB1dCwgRGVidWdnaW5nIH07CkBA
IC0xNTYsOCArMTIzLDYgQEAgcHVibGljOgogICAgIAogICAgIEZsb2F0UG9pbnQgbWFwUG9pbnRG
cm9tVXNlclNwYWNlVG9CdWZmZXIoRmxvYXRQb2ludCkgY29uc3Q7CiAgICAgCi0gICAgVHlwZSBm
aWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlckVmZmVjdENsYXNz
VHlwZTsgfQotCiAgICAgRmlsdGVyJiBmaWx0ZXIoKSB7IHJldHVybiBtX2ZpbHRlcjsgfQogICAg
IGNvbnN0IEZpbHRlciYgZmlsdGVyKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXI7IH0KIApAQCAt
MTgzLDggKzE0OCw2IEBAIHB1YmxpYzoKIHByb3RlY3RlZDoKICAgICBGaWx0ZXJFZmZlY3QoRmls
dGVyJiwgVHlwZSk7CiAgICAgCi0gICAgdmlydHVhbCBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkg
Y29uc3QgPSAwOwotCiAgICAgSW1hZ2VCdWZmZXIqIGNyZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCk7
CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVVubXVsdGlwbGllZEltYWdl
UmVzdWx0KCk7CiAgICAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4mIGNyZWF0ZVByZW11bHRp
cGxpZWRJbWFnZVJlc3VsdCgpOwpAQCAtMjQ4LDExICsyMTEsMTcgQEAgcHJpdmF0ZToKICAgICBE
ZXN0aW5hdGlvbkNvbG9yU3BhY2UgbV9vcGVyYXRpbmdDb2xvclNwYWNlIHsgRGVzdGluYXRpb25D
b2xvclNwYWNlOjpTUkdCKCkgfTsKICNlbmRpZgogICAgIERlc3RpbmF0aW9uQ29sb3JTcGFjZSBt
X3Jlc3VsdENvbG9yU3BhY2UgeyBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSB9OwotICAg
IAotICAgIGNvbnN0IFR5cGUgbV9maWx0ZXJFZmZlY3RDbGFzc1R5cGU7CiB9OwogCiBXRUJDT1JF
X0VYUE9SVCBXVEY6OlRleHRTdHJlYW0mIG9wZXJhdG9yPDwoV1RGOjpUZXh0U3RyZWFtJiwgY29u
c3QgRmlsdGVyRWZmZWN0Jik7CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKIAorU1BFQ0lBTEla
RV9UWVBFX1RSQUlUU19CRUdJTihXZWJDb3JlOjpGaWx0ZXJFZmZlY3QpCisgICAgc3RhdGljIGJv
b2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uJiBmdW5jdGlvbikgeyByZXR1
cm4gZnVuY3Rpb24uaXNGaWx0ZXJFZmZlY3QoKTsgfQorU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19F
TkQoKQorCisjZGVmaW5lIFNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChDbGFz
c05hbWUpIFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6Q2xhc3NOYW1l
KSBcCisgICAgc3RhdGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZpbHRlckVmZmVjdCYg
ZWZmZWN0KSB7IHJldHVybiBlZmZlY3QuZmlsdGVyVHlwZSgpID09IFdlYkNvcmU6OkZpbHRlckVm
ZmVjdDo6VHlwZTo6Q2xhc3NOYW1lOyB9IFwKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRnVuY3Rpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXJGdW5jdGlvbi5jcHAKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMDAw
MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMC4uMmY1YmIxNTYzODFkZWMxZTBiYWMyMmQ5
MTE5YzJlMGVkODBlNGFmMQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uY3BwCkBAIC0wLDAgKzEsODQgQEAK
Ky8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMjEgQXBwbGUgSW5jLiAgQWxsIHJpZ2h0cyByZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1ZGUg
ImNvbmZpZy5oIgorI2luY2x1ZGUgIkZpbHRlckZ1bmN0aW9uLmgiCisKKyNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgorI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3llZC5oPgorI2luY2x1ZGUgPHd0
Zi90ZXh0L0F0b21TdHJpbmdIYXNoLmg+CisKK25hbWVzcGFjZSBXZWJDb3JlIHsKKworRmlsdGVy
RnVuY3Rpb246OkZpbHRlckZ1bmN0aW9uKFR5cGUgZmlsdGVyVHlwZSkKKyAgICA6IG1fZmlsdGVy
VHlwZShmaWx0ZXJUeXBlKQoreworfQorCitzdGF0aWMgaW5saW5lIGNvbnN0IGF1dG8mIGZpbHRl
ck5hbWVzKCkKK3sKKyAgICB1c2luZyBGaWx0ZXJOYW1lTWFwID0gSGFzaE1hcDxGaWx0ZXJGdW5j
dGlvbjo6VHlwZSwgQXRvbVN0cmluZywgV1RGOjpJbnRIYXNoPEZpbHRlckZ1bmN0aW9uOjpUeXBl
PiwgV1RGOjpTdHJvbmdFbnVtSGFzaFRyYWl0czxGaWx0ZXJGdW5jdGlvbjo6VHlwZT4+OworCisg
ICAgc3RhdGljIGF1dG8gZmlsdGVyTmFtZXMgPSBtYWtlTmV2ZXJEZXN0cm95ZWQoW10geworICAg
ICAgICBGaWx0ZXJOYW1lTWFwIGZpbHRlck5hbWVzID0geworICAgICAgICAgICAgeyBGaWx0ZXJG
dW5jdGlvbjo6VHlwZTo6Q1NTRmlsdGVyLCAgICAgICAgICAgIkNTU0ZpbHRlciJfcyAgICAgICAg
ICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OlNWR0ZpbHRlciwgICAg
ICAgICAgICJTVkdGaWx0ZXIiX3MgICAgICAgICAgIH0sCisgICAgICAgICAgICAKKyAgICAgICAg
ICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQmxlbmQsICAgICAgICAgICAgICJGRUJsZW5k
Il9zICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpG
RUNvbG9yTWF0cml4LCAgICAgICAiRkVDb2xvck1hdHJpeCJfcyAgICAgICB9LAorICAgICAgICAg
ICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVDb21wb25lbnRUcmFuc2ZlciwgIkZFQ29tcG9u
ZW50VHJhbnNmZXIiX3MgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZF
Q29tcG9zaXRlLCAgICAgICAgICJGRUNvbXBvc2l0ZSJfcyAgICAgICAgIH0sCisgICAgICAgICAg
ICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbnZvbHZlTWF0cml4LCAgICAiRkVDb252b2x2
ZU1hdHJpeCJfcyAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVE
aWZmdXNlTGlnaHRpbmcsICAgIkZFRGlmZnVzZUxpZ2h0aW5nIl9zICAgfSwKKyAgICAgICAgICAg
IHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRGlzcGxhY2VtZW50TWFwLCAgICJGRURpc3BsYWNl
bWVudE1hcCJfcyAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURy
b3BTaGFkb3csICAgICAgICAiRkVEcm9wU2hhZG93Il9zICAgICAgICB9LAorICAgICAgICAgICAg
eyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVGbG9vZCwgICAgICAgICAgICAgIkZFRmxvb2QiX3Mg
ICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFR2F1
c3NpYW5CbHVyLCAgICAgICJGRUdhdXNzaWFuQmx1ciJfcyAgICAgIH0sCisgICAgICAgICAgICB7
IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUltYWdlLCAgICAgICAgICAgICAiRkVJbWFnZSJfcyAg
ICAgICAgICAgICB9LAorICAgICAgICAgICAgeyBGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVNZXJn
ZSwgICAgICAgICAgICAgIkZFTWVyZ2UiX3MgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIHsg
RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFTW9ycGhvbG9neSwgICAgICAgICJGRU1vcnBob2xvZ3ki
X3MgICAgICAgIH0sCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU9mZnNl
dCwgICAgICAgICAgICAiRkVPZmZzZXQiX3MgICAgICAgICAgICB9LAorICAgICAgICAgICAgeyBG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVTcGVjdWxhckxpZ2h0aW5nLCAgIkZFU3BlY3VsYXJMaWdo
dGluZyJfcyAgfSwKKyAgICAgICAgICAgIHsgRmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFVGlsZSwg
ICAgICAgICAgICAgICJGRVRpbGUiX3MgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB7IEZp
bHRlckZ1bmN0aW9uOjpUeXBlOjpGRVR1cmJ1bGVuY2UsICAgICAgICAiRkVUdXJidWxlbmNlIl9z
ICAgICAgICB9LAorCisgICAgICAgICAgICB7IEZpbHRlckZ1bmN0aW9uOjpUeXBlOjpTb3VyY2VB
bHBoYSwgICAgICAgICAiU291cmNlQWxwaGEiX3MgICAgICAgICB9LAorICAgICAgICAgICAgeyBG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6U291cmNlR3JhcGhpYywgICAgICAgIlNvdXJjZUdyYXBoaWMi
X3MgICAgICAgfQorCisgICAgICAgIH07CisgICAgICAgIHJldHVybiBmaWx0ZXJOYW1lczsKKyAg
ICB9KCkpOworICAgIAorICAgIHJldHVybiBmaWx0ZXJOYW1lcy5nZXQoKTsKK30KKworY29uc3Qg
QXRvbVN0cmluZyYgRmlsdGVyRnVuY3Rpb246OmZpbHRlck5hbWUoVHlwZSBmaWx0ZXJUeXBlKQor
eworICAgIGF1dG8gaXQgPSBmaWx0ZXJOYW1lcygpLmZpbmQoZmlsdGVyVHlwZSk7CisgICAgQVNT
RVJUKGl0ICE9IGZpbHRlck5hbWVzKCkuZW5kKCkpOworICAgIHJldHVybiBpdC0+dmFsdWU7Cit9
CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3Bs
YXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaCBiL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyRnVuY3Rpb24uaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwLi4w
MDU2ZDlhYTFlODQwNDdmMTc3MzgxNTNmOWVjYTU5NzkyNjg0YTcxCi0tLSAvZGV2L251bGwKKysr
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJGdW5jdGlv
bi5oCkBAIC0wLDAgKzEsMTIwIEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDIxIEFwcGxlIElu
Yy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNwcmFnbWEgb25jZQorCisjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4K
KyNpbmNsdWRlIDx3dGYvdGV4dC9BdG9tU3RyaW5nLmg+CisKK25hbWVzcGFjZSBXVEYgeworY2xh
c3MgVGV4dFN0cmVhbTsKK30KKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitjbGFzcyBGaWx0ZXJG
dW5jdGlvbiA6IHB1YmxpYyBSZWZDb3VudGVkPEZpbHRlckZ1bmN0aW9uPiB7CitwdWJsaWM6Cisg
ICAgZW51bSBjbGFzcyBUeXBlIDogdWludDhfdCB7CisgICAgICAgIENTU0ZpbHRlciwKKyAgICAg
ICAgU1ZHRmlsdGVyLAorCisgICAgICAgIEZFTWluaW11bSwKKworICAgICAgICBGRUJsZW5kID0g
RkVNaW5pbXVtLAorICAgICAgICBGRUNvbG9yTWF0cml4LAorICAgICAgICBGRUNvbXBvbmVudFRy
YW5zZmVyLAorICAgICAgICBGRUNvbXBvc2l0ZSwKKyAgICAgICAgRkVDb252b2x2ZU1hdHJpeCwK
KyAgICAgICAgRkVEaWZmdXNlTGlnaHRpbmcsCisgICAgICAgIEZFRGlzcGxhY2VtZW50TWFwLAor
ICAgICAgICBGRURyb3BTaGFkb3csCisgICAgICAgIEZFRmxvb2QsCisgICAgICAgIEZFR2F1c3Np
YW5CbHVyLAorICAgICAgICBGRUltYWdlLAorICAgICAgICBGRU1lcmdlLAorICAgICAgICBGRU1v
cnBob2xvZ3ksCisgICAgICAgIEZFT2Zmc2V0LAorICAgICAgICBGRVNwZWN1bGFyTGlnaHRpbmcs
CisgICAgICAgIEZFVGlsZSwKKyAgICAgICAgRkVUdXJidWxlbmNlLAorICAgICAgICBTb3VyY2VB
bHBoYSwKKyAgICAgICAgU291cmNlR3JhcGhpYywKKworICAgICAgICBGRU1heGltdW0gPSBTb3Vy
Y2VHcmFwaGljCisgICAgfTsKKworICAgIEZpbHRlckZ1bmN0aW9uKFR5cGUpOworICAgIHZpcnR1
YWwgfkZpbHRlckZ1bmN0aW9uKCkgPSBkZWZhdWx0OworCisgICAgVHlwZSBmaWx0ZXJUeXBlKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJUeXBlOyB9CisKKyAgICBib29sIGlzQ1NTRmlsdGVyKCkg
Y29uc3QgeyByZXR1cm4gbV9maWx0ZXJUeXBlID09IFR5cGU6OkNTU0ZpbHRlcjsgfQorICAgIGJv
b2wgaXNTVkdGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclR5cGUgPT0gVHlwZTo6U1ZH
RmlsdGVyOyB9CisgICAgYm9vbCBpc0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyVHlw
ZSA9PSBUeXBlOjpDU1NGaWx0ZXIgfHwgbV9maWx0ZXJUeXBlID09IFR5cGU6OlNWR0ZpbHRlcjsg
fQorICAgIGJvb2wgaXNGaWx0ZXJFZmZlY3QoKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclR5cGUg
Pj0gVHlwZTo6RkVNaW5pbXVtICYmIG1fZmlsdGVyVHlwZSA8PSBUeXBlOjpGRU1heGltdW07IH0K
KworICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBmaWx0ZXJOYW1lKFR5cGUpOworICAgIHN0
YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBzb3VyY2VBbHBoYU5hbWUoKSB7IHJldHVybiBmaWx0ZXJO
YW1lKFR5cGU6OlNvdXJjZUFscGhhKTsgfQorICAgIHN0YXRpYyBjb25zdCBBdG9tU3RyaW5nJiBz
b3VyY2VHcmFwaGljTmFtZSgpIHsgcmV0dXJuIGZpbHRlck5hbWUoVHlwZTo6U291cmNlR3JhcGhp
Yyk7IH0KKyAgICBjb25zdCBBdG9tU3RyaW5nJiBmaWx0ZXJOYW1lKCkgY29uc3QgeyByZXR1cm4g
ZmlsdGVyTmFtZShtX2ZpbHRlclR5cGUpOyB9CisKK3ByaXZhdGU6CisgICAgVHlwZSBtX2ZpbHRl
clR5cGU7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKK25hbWVzcGFjZSBXVEYgewor
Cit0ZW1wbGF0ZTw+IHN0cnVjdCBFbnVtVHJhaXRzPFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpU
eXBlPiB7CisgICAgdXNpbmcgdmFsdWVzID0gRW51bVZhbHVlczwKKyAgICAgICAgV2ViQ29yZTo6
RmlsdGVyRnVuY3Rpb246OlR5cGUsCisKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246
OlR5cGU6OkNTU0ZpbHRlciwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6
OlNWR0ZpbHRlciwKKworICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVC
bGVuZCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFQ29sb3JNYXRy
aXgsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbXBvbmVudFRy
YW5zZmVyLAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVDb21wb3Np
dGUsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUNvbnZvbHZlTWF0
cml4LAorICAgICAgICBXZWJDb3JlOjpGaWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVEaWZmdXNlTGln
aHRpbmcsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRURpc3BsYWNl
bWVudE1hcCwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRHJvcFNo
YWRvdywKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFRmxvb2QsCisg
ICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRUdhdXNzaWFuQmx1ciwKKyAg
ICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OkZFSW1hZ2UsCisgICAgICAgIFdl
YkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBlOjpGRU1lcmdlLAorICAgICAgICBXZWJDb3JlOjpG
aWx0ZXJGdW5jdGlvbjo6VHlwZTo6RkVNb3JwaG9sb2d5LAorICAgICAgICBXZWJDb3JlOjpGaWx0
ZXJGdW5jdGlvbjo6VHlwZTo6RkVPZmZzZXQsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0
aW9uOjpUeXBlOjpGRVNwZWN1bGFyTGlnaHRpbmcsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1
bmN0aW9uOjpUeXBlOjpGRVRpbGUsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpU
eXBlOjpGRVR1cmJ1bGVuY2UsCisgICAgICAgIFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uOjpUeXBl
OjpTb3VyY2VBbHBoYSwKKyAgICAgICAgV2ViQ29yZTo6RmlsdGVyRnVuY3Rpb246OlR5cGU6OlNv
dXJjZUdyYXBoaWMKKyAgICA+OworfTsKKworfSAvLyBuYW1lc3BhY2UgV1RGCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmNw
cCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEu
Y3BwCmluZGV4IDc2NDlmMDU4YWM4NjliNTU0YWYwZGM1MDdmZmY5MDkwYWQ2Y2YzYTMuLjk5Njk0
MzcyNTc5M2U5OTY0NmZjM2U1YjIyYWQxNTFmYmRmZGU5Y2EgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxwaGEuY3BwCkBA
IC0yMywxMCArMjMsNyBAQAogI2luY2x1ZGUgIkNvbG9yLmgiCiAjaW5jbHVkZSAiRmlsdGVyLmgi
CiAjaW5jbHVkZSAiR3JhcGhpY3NDb250ZXh0LmgiCi0jaW5jbHVkZSA8d3RmL05ldmVyRGVzdHJv
eWVkLmg+Ci0jaW5jbHVkZSA8d3RmL1N0ZExpYkV4dHJhcy5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0
L1RleHRTdHJlYW0uaD4KLSNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KIAogbmFtZXNw
YWNlIFdlYkNvcmUgewogCkBAIC0zNSwxMCArMzIsMTEgQEAgUmVmPFNvdXJjZUFscGhhPiBTb3Vy
Y2VBbHBoYTo6Y3JlYXRlKEZpbHRlckVmZmVjdCYgc291cmNlRWZmZWN0KQogICAgIHJldHVybiBh
ZG9wdFJlZigqbmV3IFNvdXJjZUFscGhhKHNvdXJjZUVmZmVjdCkpOwogfQogCi1jb25zdCBBdG9t
U3RyaW5nJiBTb3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpCitTb3VyY2VBbHBoYTo6U291cmNlQWxw
aGEoRmlsdGVyRWZmZWN0JiBzb3VyY2VFZmZlY3QpCisgICAgOiBGaWx0ZXJFZmZlY3Qoc291cmNl
RWZmZWN0LmZpbHRlcigpLCBGaWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKQogewotICAg
IHN0YXRpYyBNYWluVGhyZWFkTmV2ZXJEZXN0cm95ZWQ8Y29uc3QgQXRvbVN0cmluZz4gc19lZmZl
Y3ROYW1lKCJTb3VyY2VBbHBoYSIsIEF0b21TdHJpbmc6OkNvbnN0cnVjdEZyb21MaXRlcmFsKTsK
LSAgICByZXR1cm4gc19lZmZlY3ROYW1lOworICAgIHNldE9wZXJhdGluZ0NvbG9yU3BhY2Uoc291
cmNlRWZmZWN0Lm9wZXJhdGluZ0NvbG9yU3BhY2UoKSk7CisgICAgaW5wdXRFZmZlY3RzKCkuYXBw
ZW5kKCZzb3VyY2VFZmZlY3QpOwogfQogCiB2b2lkIFNvdXJjZUFscGhhOjpkZXRlcm1pbmVBYnNv
bHV0ZVBhaW50UmVjdCgpCkBAIC02OSwxMSArNjcsNCBAQCBUZXh0U3RyZWFtJiBTb3VyY2VBbHBo
YTo6ZXh0ZXJuYWxSZXByZXNlbnRhdGlvbihUZXh0U3RyZWFtJiB0cywgUmVwcmVzZW50YXRpb25U
eQogICAgIHJldHVybiB0czsKIH0KIAotU291cmNlQWxwaGE6OlNvdXJjZUFscGhhKEZpbHRlckVm
ZmVjdCYgc291cmNlRWZmZWN0KQotICAgIDogRmlsdGVyRWZmZWN0KHNvdXJjZUVmZmVjdC5maWx0
ZXIoKSwgVHlwZTo6U291cmNlQWxwaGEpCi17Ci0gICAgc2V0T3BlcmF0aW5nQ29sb3JTcGFjZShz
b3VyY2VFZmZlY3Qub3BlcmF0aW5nQ29sb3JTcGFjZSgpKTsKLSAgICBpbnB1dEVmZmVjdHMoKS5h
cHBlbmQoJnNvdXJjZUVmZmVjdCk7Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlQWxw
aGEuaAppbmRleCA2NjI5YTM2N2ZkNDMyNDJkMWM0YWFkZTY0YzU2MWU4NjRhMzk0OTBmLi43YmJi
ZjgxZDY4NTI1ODRhYzZjZjcxYWQ1ZWJlNTUwN2RmNmRjMWVkIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1NvdXJjZUFscGhhLmgKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VBbHBoYS5oCkBAIC0x
Nyw4ICsxNyw3IEBACiAgKiBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZu
ZGVmIFNvdXJjZUFscGhhX2gKLSNkZWZpbmUgU291cmNlQWxwaGFfaAorI3ByYWdtYSBvbmNlCiAK
ICNpbmNsdWRlICJGaWx0ZXJFZmZlY3QuaCIKIApAQCAtMjgsMTMgKzI3LDEwIEBAIGNsYXNzIFNv
dXJjZUFscGhhIDogcHVibGljIEZpbHRlckVmZmVjdCB7CiBwdWJsaWM6ICAgICAgICAKICAgICBz
dGF0aWMgUmVmPFNvdXJjZUFscGhhPiBjcmVhdGUoRmlsdGVyRWZmZWN0Jik7CiAKLSAgICBzdGF0
aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFtZSgpOworICAgIHN0YXRpYyBjb25zdCBBdG9t
U3RyaW5nJiBlZmZlY3ROYW1lKCkgeyByZXR1cm4gRmlsdGVyRWZmZWN0Ojpzb3VyY2VBbHBoYU5h
bWUoKTsgfQogCiBwcml2YXRlOgogICAgIGV4cGxpY2l0IFNvdXJjZUFscGhhKEZpbHRlckVmZmVj
dCYpOwotICAgIEZpbHRlckVmZmVjdFR5cGUgZmlsdGVyRWZmZWN0VHlwZSgpIGNvbnN0IG92ZXJy
aWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVTb3VyY2VJbnB1dDsgfQotCi0gICAgY29uc3Qg
Y2hhciogZmlsdGVyTmFtZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuICJTb3VyY2VBbHBoYSI7IH0K
IAogICAgIHZvaWQgcGxhdGZvcm1BcHBseVNvZnR3YXJlKCkgb3ZlcnJpZGU7CiAgICAgdm9pZCBk
ZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpIG92ZXJyaWRlOwpAQCAtNDMsNCArMzksNCBAQCBw
cml2YXRlOgogCiB9IC8vbmFtZXNwYWNlIFdlYkNvcmUKIAotI2VuZGlmIC8vIFNvdXJjZUFscGhh
X2gKK1NQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRklMVEVSX0VGRkVDVChTb3VyY2VBbHBoYSkKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNl
R3JhcGhpYy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL1Nv
dXJjZUdyYXBoaWMuY3BwCmluZGV4IDg4YTM2YTQxMDI2YmQzYTU4NTQ0NzgyMDI3NGMxMTA3ZDc4
MzkyZTkuLmUxMjNkY2Q4ZmYyMWRkYzc3MzNlNTdlNTE1ZWYzMTFlN2M5MDE1ODAgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhp
Yy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcApAQCAtMjIsMTAgKzIyLDcgQEAKIAogI2luY2x1ZGUgIkZpbHRlci5oIgog
I2luY2x1ZGUgIkdyYXBoaWNzQ29udGV4dC5oIgotI2luY2x1ZGUgPHd0Zi9OZXZlckRlc3Ryb3ll
ZC5oPgotI2luY2x1ZGUgPHd0Zi9TdGRMaWJFeHRyYXMuaD4KICNpbmNsdWRlIDx3dGYvdGV4dC9U
ZXh0U3RyZWFtLmg+Ci0jaW5jbHVkZSA8d3RmL3RleHQvV1RGU3RyaW5nLmg+CiAKIG5hbWVzcGFj
ZSBXZWJDb3JlIHsKIApAQCAtMzQsMTcgKzMxLDEwIEBAIFJlZjxTb3VyY2VHcmFwaGljPiBTb3Vy
Y2VHcmFwaGljOjpjcmVhdGUoRmlsdGVyJiBmaWx0ZXIpCiAgICAgcmV0dXJuIGFkb3B0UmVmKCpu
ZXcgU291cmNlR3JhcGhpYyhmaWx0ZXIpKTsKIH0KIAotY29uc3QgQXRvbVN0cmluZyYgU291cmNl
R3JhcGhpYzo6ZWZmZWN0TmFtZSgpCi17Ci0gICAgc3RhdGljIE1haW5UaHJlYWROZXZlckRlc3Ry
b3llZDxjb25zdCBBdG9tU3RyaW5nPiBzX2VmZmVjdE5hbWUoIlNvdXJjZUdyYXBoaWMiLCBBdG9t
U3RyaW5nOjpDb25zdHJ1Y3RGcm9tTGl0ZXJhbCk7Ci0gICAgcmV0dXJuIHNfZWZmZWN0TmFtZTsK
LX0KLQogdm9pZCBTb3VyY2VHcmFwaGljOjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgpCiB7
CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKICAgICBGbG9hdFJlY3QgcGFp
bnRSZWN0ID0gZmlsdGVyLnNvdXJjZUltYWdlUmVjdCgpOwotICAgIHBhaW50UmVjdC5zY2FsZShm
aWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndpZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9u
KCkuaGVpZ2h0KCkpOwogICAgIHNldEFic29sdXRlUGFpbnRSZWN0KGVuY2xvc2luZ0ludFJlY3Qo
cGFpbnRSZWN0KSk7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvU291cmNlR3JhcGhpYy5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKaW5kZXggMzBjZDU0ZjI0NTNiYmE4YTM3
NzYzMjEzMjhlZjIxMDZiN2ZjYTViZi4uNTJkY2I3ZTg2OGU1YzViNTJhMTFjYmI2OTY4M2IyZThi
NDIzNGIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9Tb3VyY2VHcmFwaGljLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmgKQEAgLTE4LDExICsxOCw5IEBACiAgKiBCb3N0b24s
IE1BIDAyMTEwLTEzMDEsIFVTQS4KICAqLwogCi0jaWZuZGVmIFNvdXJjZUdyYXBoaWNfaAotI2Rl
ZmluZSBTb3VyY2VHcmFwaGljX2gKKyNwcmFnbWEgb25jZQogCiAjaW5jbHVkZSAiRmlsdGVyRWZm
ZWN0LmgiCi0jaW5jbHVkZSAiRmlsdGVyLmgiCiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIApAQCAt
MzAsMjkgKzI4LDIwIEBAIGNsYXNzIFNvdXJjZUdyYXBoaWMgOiBwdWJsaWMgRmlsdGVyRWZmZWN0
IHsKIHB1YmxpYzogICAgICAgIAogICAgIHN0YXRpYyBSZWY8U291cmNlR3JhcGhpYz4gY3JlYXRl
KEZpbHRlciYpOwogCi0gICAgc3RhdGljIGNvbnN0IEF0b21TdHJpbmcmIGVmZmVjdE5hbWUoKTsK
KyAgICBzdGF0aWMgY29uc3QgQXRvbVN0cmluZyYgZWZmZWN0TmFtZSgpIHsgcmV0dXJuIEZpbHRl
ckVmZmVjdDo6c291cmNlR3JhcGhpY05hbWUoKTsgfQogCiBwcml2YXRlOgogICAgIFNvdXJjZUdy
YXBoaWMoRmlsdGVyJiBmaWx0ZXIpCi0gICAgICAgIDogRmlsdGVyRWZmZWN0KGZpbHRlciwgVHlw
ZTo6U291cmNlR3JhcGhpYykKKyAgICAgICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBGaWx0ZXJF
ZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMpCiAgICAgewogICAgICAgICBzZXRPcGVyYXRpbmdD
b2xvclNwYWNlKERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpKTsKICAgICB9CiAKLSAgICBj
b25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4gIlNvdXJjZUdyYXBo
aWMiOyB9Ci0KICAgICB2b2lkIGRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkgb3ZlcnJpZGU7
CiAgICAgdm9pZCBwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKSBvdmVycmlkZTsKICAgICBXVEY6OlRl
eHRTdHJlYW0mIGV4dGVybmFsUmVwcmVzZW50YXRpb24oV1RGOjpUZXh0U3RyZWFtJiwgUmVwcmVz
ZW50YXRpb25UeXBlKSBjb25zdCBvdmVycmlkZTsKLQotICAgIEZpbHRlckVmZmVjdFR5cGUgZmls
dGVyRWZmZWN0VHlwZSgpIGNvbnN0IG92ZXJyaWRlIHsgcmV0dXJuIEZpbHRlckVmZmVjdFR5cGVT
b3VyY2VJbnB1dDsgfQogfTsKIAogfSAvL25hbWVzcGFjZSBXZWJDb3JlCiAKLVNQRUNJQUxJWkVf
VFlQRV9UUkFJVFNfQkVHSU4oV2ViQ29yZTo6U291cmNlR3JhcGhpYykKLSAgICBzdGF0aWMgYm9v
bCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6RmlsdGVyRWZmZWN0JiBlZmZlY3QpIHsgcmV0dXJuIGVm
ZmVjdC5maWx0ZXJFZmZlY3RDbGFzc1R5cGUoKSA9PSBXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OlR5
cGU6OlNvdXJjZUdyYXBoaWM7IH0KLVNQRUNJQUxJWkVfVFlQRV9UUkFJVFNfRU5EKCkKLQotCi0j
ZW5kaWYgLy8gU291cmNlR3JhcGhpY19oCitTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0ZJTFRFUl9F
RkZFQ1QoU291cmNlR3JhcGhpYykKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmlu
Zy9DU1NGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAK
aW5kZXggZjQ0YWUxMjlkMDczOGQzMGM3NmU3MTA4NWIyYWVjMDVhN2I2ZjFkYS4uMjgzZTk3Zjg1
MDQ1YWM2YTdhNmVhMjM1MjE3YmM1OWZkNGRjNWUxNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L0NTU0ZpbHRlci5jcHAKQEAgLTU0LDE5ICs1NCwxNyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7
CiAKLVJlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKCkKK1JlZjxDU1NGaWx0ZXI+IENT
U0ZpbHRlcjo6Y3JlYXRlKGZsb2F0IHNjYWxlRmFjdG9yKQogewotICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IENTU0ZpbHRlcik7CisgICAgcmV0dXJuIGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHNj
YWxlRmFjdG9yKSk7CiB9CiAKLUNTU0ZpbHRlcjo6Q1NTRmlsdGVyKCkKLSAgICA6IEZpbHRlcihG
bG9hdFNpemUgeyAxLCAxIH0pCitDU1NGaWx0ZXI6OkNTU0ZpbHRlcihmbG9hdCBzY2FsZUZhY3Rv
cikKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OkNTU0ZpbHRlciwgRmxvYXRTaXplIHsgc2Nh
bGVGYWN0b3IsIHNjYWxlRmFjdG9yIH0pCiAgICAgLCBtX3NvdXJjZUdyYXBoaWMoU291cmNlR3Jh
cGhpYzo6Y3JlYXRlKCp0aGlzKSkKIHsKIH0KIAotQ1NTRmlsdGVyOjp+Q1NTRmlsdGVyKCkgPSBk
ZWZhdWx0OwotCiBHcmFwaGljc0NvbnRleHQqIENTU0ZpbHRlcjo6aW5wdXRDb250ZXh0KCkKIHsK
ICAgICByZXR1cm4gc291cmNlSW1hZ2UoKSA/ICZzb3VyY2VJbWFnZSgpLT5jb250ZXh0KCkgOiBu
dWxscHRyOwpAQCAtODYsNyArODQsNiBAQCBSZWZQdHI8RmlsdGVyRWZmZWN0PiBDU1NGaWx0ZXI6
OmJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBGaQogICAgIH0K
IAogICAgIGF1dG8gYnVpbGRlciA9IG1ha2VVbmlxdWU8U1ZHRmlsdGVyQnVpbGRlcj4oJnByZXZp
b3VzRWZmZWN0KTsKLSAgICBtX3NvdXJjZUFscGhhID0gYnVpbGRlci0+Z2V0RWZmZWN0QnlJZChT
b3VyY2VBbHBoYTo6ZWZmZWN0TmFtZSgpKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGVm
ZmVjdDsKICAgICBWZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IHJlZmVyZW5jZUVmZmVjdHM7CkBA
IC0zMDIsNyArMjk5LDcgQEAgYm9vbCBDU1NGaWx0ZXI6OmJ1aWxkKFJlbmRlckVsZW1lbnQmIHJl
bmRlcmVyLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiBvcGVyYXRpb24KIAogICAgIG1fZWZmZWN0
cy5zaHJpbmtUb0ZpdCgpOwogCi0gICAgc2V0TWF4RWZmZWN0UmVjdHMobV9zb3VyY2VEcmF3aW5n
UmVnaW9uKTsKKyAgICBzZXRNYXhFZmZlY3RSZWN0cyhzb3VyY2VJbWFnZVJlY3QoKSk7CiAjaWYg
VVNFKENPUkVfSU1BR0UpCiAgICAgaWYgKCFtX2ZpbHRlclJlbmRlcmVyKQogICAgICAgICBtX2Zp
bHRlclJlbmRlcmVyID0gRmlsdGVyRWZmZWN0UmVuZGVyZXI6OnRyeUNyZWF0ZShyZW5kZXJlci5z
ZXR0aW5ncygpLmNvcmVJbWFnZUFjY2VsZXJhdGVkRmlsdGVyUmVuZGVyRW5hYmxlZCgpLCBtX2Vm
ZmVjdHMubGFzdCgpLmdldCgpKTsKQEAgLTMzMSwxNCArMzI4LDE0IEBAIHZvaWQgQ1NTRmlsdGVy
OjphbGxvY2F0ZUJhY2tpbmdTdG9yZUlmTmVlZGVkKGNvbnN0IEdyYXBoaWNzQ29udGV4dCYgdGFy
Z2V0Q29udGV4CiAgICAgaWYgKG1fZ3JhcGhpY3NCdWZmZXJBdHRhY2hlZCkKICAgICAgICAgcmV0
dXJuOwogCi0gICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSB7IG1fc291cmNlRHJhd2luZ1JlZ2lvbi5z
aXplKCkgfTsKKyAgICBJbnRTaXplIGxvZ2ljYWxTaXplIHsgc291cmNlSW1hZ2VSZWN0KCkuc2l6
ZSgpIH07CiAgICAgaWYgKCFzb3VyY2VJbWFnZSgpIHx8IHNvdXJjZUltYWdlKCktPmxvZ2ljYWxT
aXplKCkgIT0gbG9naWNhbFNpemUpIHsKICNpZiBVU0UoRElSRUNUMkQpCiAgICAgICAgIHNldFNv
dXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUo
KSwgJnRhcmdldENvbnRleHQsIGZpbHRlclNjYWxlKCksIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6
U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNlCiAgICAgICAgIFVOVVNFRF9QQVJB
TSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5nTW9kZSBtb2RlID0gbV9maWx0ZXJS
ZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVkIDogcmVuZGVyaW5nTW9kZSgpOwot
ICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCBt
b2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpjcmVh
dGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0KICAgICBtX2dyYXBoaWNzQnVmZmVy
QXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAgIGxhc3RFZmZlY3QuZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGxh
c3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZl
Y3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1bGF0ZSB0aGUgZWZmZWN0IHNpemVz
IHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRTaXplIHNjYWxlOwotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUpOworICAgIEZsb2F0U2l6ZSBmaWx0
ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5n
KHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgeworICAgICAgICBzZXRGaWx0ZXJTY2Fs
ZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDggKzM1Nyw2IEBAIHZvaWQgQ1NTRmls
dGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogdm9pZCBDU1NGaWx0ZXI6
OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAgbV9zb3VyY2VHcmFwaGljLT5jbGVh
clJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQotICAgICAgICBtX3NvdXJjZUFscGhh
LT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZmZWN0IDogbV9lZmZlY3RzKQogICAg
ICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00MDAsOSArMzk1LDkgQEAgSW1hZ2VC
dWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAogdm9pZCBDU1NGaWx0ZXI6OnNldFNv
dXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkKIHsKLSAgICBt
X3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJlY3Q7CisgICAgRmlsdGVyOjpzZXRG
aWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBGaWx0ZXI6OnNldFNvdXJjZUltYWdl
UmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdl
UmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7CiAgICAgbV9ncmFw
aGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAgLTQxNyw3ICs0MTIsNyBAQCBJbnRS
ZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAgICAgYXV0byYgbGFzdEVmZmVjdCA9
IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAgaWYgKGxhc3RFZmZlY3QuaGFzUmVz
dWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0ZXJSZW5kZXJlci0+aGFzUmVzdWx0
KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4
ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0pOworICAgICAgICByZXR1cm4gbGFz
dEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IGZpbHRl
clJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07CiB9CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0YzkyZDk0MDhiNzU4ZTM3NWMyNTJmMjlk
YjBjNS4uNWQyYjQ5YWRlMGY1MTQ4OGYzZjA3MjUyMmVmYzlkZjM0Zjk5N2I5YyAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtNDcsMTMgKzQ3LDExIEBAIGNsYXNzIENTU0Zp
bHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVE
OwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRlcnM7CiBwdWJsaWM6Ci0gICAgc3Rh
dGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZVJl
Y3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxv
YXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0K
KyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZsb2F0IHNjYWxlRmFjdG9yID0gMSk7
CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7CiAKKyAgICB2b2lkIHNldFNvdXJj
ZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBib29sIGJ1aWxkKFJlbmRlckVsZW1l
bnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVyQ29uc3VtZXIpOwogICAgIHZvaWQg
Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9pZCBhcHBseSgpOwpAQCAtNjUsMTUg
KzYzLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0c2V0cygpIGNvbnN0OwogCiBwcml2
YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwgfkNTU0ZpbHRlcigpOwotCi0gICAg
Ym9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQotICAgIEZs
b2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX3NvdXJjZURy
YXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9CisgICAg
Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+
IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQmLCBGaWx0ZXJFZmZlY3QmIHByZXZp
b3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24mKTsKIApAQCAtODgsMTIgKzc4LDgg
QEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0ZVNvdXJjZUltYWdlUmVjdEZvckRp
cnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hSZWN0LCBjb25zdCBMYXlvdXRSZWN0
JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291cmNlRHJhd2luZ1JlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBWZWN0b3I8UmVmPEZpbHRlckVmZmVj
dD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhpYz4gbV9zb3VyY2VHcmFwaGljOwot
ICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxwaGE7CiAKICAgICBtdXRhYmxlIElu
dE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJhYTBhYzc0MWE5MGM4MThiNjFhMDVm
OTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0x
MTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6cmVtb3ZlUmVmZXJlbmNl
RmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcihS
ZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVGYWN0b3IsIFJlbmRlcmluZ01vZGUg
cmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVyKSB7Ci0gICAgICAgIG1fZmlsdGVy
ID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9maWx0ZXItPnNldEZpbHRlclNjYWxl
KHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVy
aW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSAhPSBzY2Fs
ZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0RmlsdGVyU2NhbGUoc2NhbGVGYWN0b3Ip
OwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgfQor
ICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRpcmUgZWZmZWN0cyBjaGFpbiBldmVu
IGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4KKyAgICBtX2ZpbHRlciA9IENTU0Zp
bHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9k
ZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQs
IHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCiAgICAg
Ly8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQg
bmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVu
dGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdl
LgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZp
bHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVydHkpKQogICAgICAgICBtX2ZpbHRl
ciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9z
dmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDE5NTA5ZDk3MThhZmYxMTBmODQx
ZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2ZTRmODU1MDg3NGY5MjFhYjIzZjAx
ZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZH
UmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEgKzE0MywyNiBAQCBib29sIFJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVy
LCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7CiAKICAgICAvLyBFbGltaW5hdGUg
c2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9uIG1hdHJpeCwgdG8gYmUgYWJsZSB0
byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3IgZmVUaWxlLgotICAgIGZpbHRlckRh
dGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZmaW5lVHJhbnNmb3JtKGFic29sdXRl
VHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSwgMCwg
MCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgp
LCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAgICAvLyBEZXRlcm1pbmUgYWJzb2x1
dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUgZHJhd2luZyByZWdpb24uCiAgICAg
ZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVyLnN0cm9rZUJvdW5kaW5nQm94KCk7
CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRlcnNlY3QoZmlsdGVyRGF0YS0+Ym91
bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJhd2luZ1JlZ2lvbiA9IGZpbHRlckRh
dGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyRGF0YS0+ZHJhd2lu
Z1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUgZmFjdG9yIGZvciBmaWx0ZXIuIFRo
ZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0
aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBhYnNvbHV0ZURyYXdpbmdSZWdpb24g
PSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFic29sdXRlRHJhd2luZ1JlZ2lvbi5z
Y2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKTsKIAogICAgIC8vIENyZWF0
ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9k
ZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygpID09IFNWR1VuaXRUeXBlczo6U1ZH
X1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBT
VkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZmlsdGVyRGF0YS0+Ym91
bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKKyAgICBmaWx0ZXJEYXRhLT5maWx0
ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9u
LCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3VuZGluZ0JveCwgcHJpbWl0aXZlQm91
bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwgcmVsZXZhbnQgZmlsdGVyIHByaW1p
dGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1aWxkUHJpbWl0aXZlcygqZmlsdGVy
RGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEtPmJ1aWxkZXIpCiAgICAgICAgIHJl
dHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2FsZSBmYWN0b3IgZm9yIGZpbHRlci4g
VGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVycyBzaG91bGRuJ3QgYmUgYmlnZ2Vy
IHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0IHRlbXBTb3VyY2VSZWN0ID0gYWJz
b2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBzY2FsZSgxLCAxKTsKLSAgICBJbWFn
ZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJjZVJlY3Quc2l6ZSgpLCBzY2FsZSk7
Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lkdGgoKSwgc2NhbGUuaGVpZ2h0KCkp
OwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBTVkdGaWx0ZXIuCi0gICAgZmlsdGVy
RGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxlKTsKLQogICAgIHN0YXRpYyBj
b25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRzID0gMTAwOwogICAgIEZpbHRlckVm
ZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxkZXItPmxhc3RFZmZlY3QoKTsKICAg
ICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90YWxOdW1iZXJPZkVmZmVjdElucHV0
cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3NywxMCArMTcyLDExIEBAIGJvb2wg
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmlt
aXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3ViUmVnaW9uID0gbGFzdEVmZmVjdC0+
bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qgb25lIEZpbHRlckVmZmVjdCBoYXMg
YSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXpl
cyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIGZpbHRlckRhdGEt
PmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7CisgICAgaWYgKEltYWdlQnVmZmVy
OjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSkpIHsKKyAg
ICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAg
ICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOwog
ICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6
OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAgICAg
fQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRyYW5zZm9ybWF0aW9uIGFwcGxpZWQg
dG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0aGUgcmVzb2x1dGlvbiBvZiB0aGUg
ZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zvcm07Ci0gICAgZWZm
ZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsKLSAg
ICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1
dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3RpdmVUcmFuc2Zvcm0gPSBB
ZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwgMCwgMCwgZmlsdGVyU2NhbGUuaGVp
Z2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdNb2RlID0gcmVuZGVyZXIuc2V0dGlu
Z3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVy
YXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7CiAjaWYgRU5BQkxFKERFU1RJTkFU
SU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5LDEzICsyODMsOSBAQCB2b2lkIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiBy
ZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVmZmVyKiByZXN1bHRJbWFnZSA9IGxh
c3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAgICAgIGlmIChyZXN1bHRJbWFnZSkg
ewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZpbHRlckRhdGEuc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKSk7Ci0K
LSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS5maWx0
ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZp
bHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAgICAgICAgY29udGV4dC0+c2NhbGUo
RmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAx
IC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkuaGVpZ2h0KCkpKTsKICAgICAgICAg
ICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0SW1hZ2UsIGxhc3RFZmZlY3QtPmFi
c29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29udGV4dC0+c2NhbGUoZmlsdGVyRGF0
YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPmNv
bmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtKTsKKyAgICAgICAg
ICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpKTsKICAg
ICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJjZUdyYXBoaWNCdWZmZXIgPSBudWxs
cHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJU
cmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIxYmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdj
Ny4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNlZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBA
IC00MzIsNyArNDMyLDggQEAgdm9pZCB3cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJl
YW0mIHRzLCBjb25zdCBSZW5kZXJTVkdSZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwg
IlxuIjsKICAgICAgICAgLy8gQ3JlYXRpbmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMg
cGFzc2VkIHRvIHRoZSBidWlsZGVyLgogICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAg
ICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3Jt
KCksIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9h
dFNpemUgZHVtbXlTY2FsZSgxLCAxKTsKKyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0Zp
bHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUsIGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3Qs
IHRydWUpOwogICAgICAgICBpZiAoYXV0byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZl
cyhkdW1teUZpbHRlci5nZXQoKSkpIHsKICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNj
b3BlIGluZGVudFNjb3BlKHRzKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhp
Y3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAppbmRleCAzODVhZjI5MDg0OGEzZDBiODNmMTJhYzk2
MTllNmJmOTZjOWYyMzk2Li40NWY3YzI5NGFkYjk2MWM5MmJmOGMyZmIxOTA3ZTlkYjc5Yjk3YzYz
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcApAQCAtMzYsMTQgKzM2LDE0IEBACiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIEZFSW1h
Z2U6OkZFSW1hZ2UoRmlsdGVyJiBmaWx0ZXIsIFJlZlB0cjxJbWFnZT4gaW1hZ2UsIGNvbnN0IFNW
R1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYgcHJlc2VydmVBc3BlY3RSYXRpbykKLSAgICA6IEZp
bHRlckVmZmVjdChmaWx0ZXIsIFR5cGU6OkltYWdlKQorICAgIDogRmlsdGVyRWZmZWN0KGZpbHRl
ciwgRmlsdGVyRWZmZWN0OjpUeXBlOjpGRUltYWdlKQogICAgICwgbV9pbWFnZShpbWFnZSkKICAg
ICAsIG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFzcGVjdFJhdGlvKQogewogfQogCiBG
RUltYWdlOjpGRUltYWdlKEZpbHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wZSwgY29u
c3QgU3RyaW5nJiBocmVmLCBjb25zdCBTVkdQcmVzZXJ2ZUFzcGVjdFJhdGlvVmFsdWUmIHByZXNl
cnZlQXNwZWN0UmF0aW8pCi0gICAgOiBGaWx0ZXJFZmZlY3QoZmlsdGVyLCBUeXBlOjpJbWFnZSkK
KyAgICA6IEZpbHRlckVmZmVjdChmaWx0ZXIsIEZpbHRlckVmZmVjdDo6VHlwZTo6RkVJbWFnZSkK
ICAgICAsIG1fdHJlZVNjb3BlKCZ0cmVlU2NvcGUpCiAgICAgLCBtX2hyZWYoaHJlZikKICAgICAs
IG1fcHJlc2VydmVBc3BlY3RSYXRpbyhwcmVzZXJ2ZUFzcGVjdFJhdGlvKQpAQCAtNjIsMTMgKzYy
LDE2IEBAIFJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVXaXRoSVJJUmVmZXJlbmNlKEZpbHRl
ciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wCiAKIHZvaWQgRkVJbWFnZTo6ZGV0ZXJtaW5l
QWJzb2x1dGVQYWludFJlY3QoKQogewotICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXIo
KS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkp
OworICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsK
KyAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRS
ZWN0IHNyY1JlY3Q7CiAgICAgaWYgKG1faW1hZ2UpIHsKICAgICAgICAgc3JjUmVjdC5zZXRTaXpl
KG1faW1hZ2UtPnNpemUoKSk7CiAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zv
cm1SZWN0KHBhaW50UmVjdCwgc3JjUmVjdCk7Ci0gICAgfSBlbHNlIGlmIChSZW5kZXJFbGVtZW50
KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpKQotICAgICAgICBzcmNSZWN0ID0gZmls
dGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdElu
TG9jYWxDb29yZGluYXRlcygpKTsKKyAgICB9IGVsc2UgaWYgKFJlbmRlckVsZW1lbnQqIHJlbmRl
cmVyID0gcmVmZXJlbmNlZFJlbmRlcmVyKCkpIHsKKyAgICAgICAgc3JjUmVjdCA9IHJlbmRlcmVy
LT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOworICAgICAgICBzcmNSZWN0LnNjYWxl
KGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgIH0KIAogICAgIGlmIChjbGlwc1RvQm91bmRz
KCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKQEAgLTEw
MCwxMiArMTAzLDE0IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAg
ICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47CiAKLSAgICBGbG9hdFJlY3QgZGVz
dFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoZmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCkpOworICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IGZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbigpOworICAgIGRlc3RSZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkp
OwogCiAgICAgRmxvYXRSZWN0IHNyY1JlY3Q7Ci0gICAgaWYgKHJlbmRlcmVyKQotICAgICAgICBz
cmNSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHJlbmRlcmVyLT5y
ZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKLSAgICBlbHNlIHsKKyAgICBpZiAocmVu
ZGVyZXIpIHsKKyAgICAgICAgc3JjUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxD
b29yZGluYXRlcygpOworICAgICAgICBzcmNSZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxl
KCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIHNyY1JlY3QgPSBGbG9hdFJlY3QoRmxvYXRQb2lu
dCgpLCBtX2ltYWdlLT5zaXplKCkpOwogICAgICAgICBtX3ByZXNlcnZlQXNwZWN0UmF0aW8udHJh
bnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAgfQpAQCAtMTE2LDggKzEyMSw3IEBA
IHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBjb250ZXh0
ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIGlmIChyZW5kZXJlcikgewotICAgICAg
ICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJhbnNmb3JtID0gZmlsdGVyKCkuYWJz
b2x1dGVUcmFuc2Zvcm0oKTsKLSAgICAgICAgY29udGV4dC5jb25jYXRDVE0oYWJzb2x1dGVUcmFu
c2Zvcm0pOworICAgICAgICBjb250ZXh0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOwog
CiAgICAgICAgIFJlZlB0ciBjb250ZXh0Tm9kZSA9IGRvd25jYXN0PFNWR0VsZW1lbnQ+KHJlbmRl
cmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4dE5vZGUtPmhhc1JlbGF0aXZlTGVu
Z3RocygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGRUltYWdlLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmgKaW5kZXggYWMxNjBlZGNlN2MwZTBhMDY3YmRlZmJkNzA3ZjJhYmU1NTkwODFiNi4u
MTY4ODk5MTY0NjJiMTc1MmEzNDFkNTUxOGFkYTA3NWMzNDllMTYwYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZFSW1hZ2UuaApAQCAtNDIsMTAgKzQy
LDYgQEAgcHJpdmF0ZToKICAgICBGRUltYWdlKEZpbHRlciYsIFJlZlB0cjxJbWFnZT4sIGNvbnN0
IFNWR1ByZXNlcnZlQXNwZWN0UmF0aW9WYWx1ZSYpOwogICAgIEZFSW1hZ2UoRmlsdGVyJiwgVHJl
ZVNjb3BlJiwgY29uc3QgU3RyaW5nJiwgY29uc3QgU1ZHUHJlc2VydmVBc3BlY3RSYXRpb1ZhbHVl
Jik7CiAKLSAgICBjb25zdCBjaGFyKiBmaWx0ZXJOYW1lKCkgY29uc3QgZmluYWwgeyByZXR1cm4g
IkZFSW1hZ2UiOyB9Ci0KLSAgICBGaWx0ZXJFZmZlY3RUeXBlIGZpbHRlckVmZmVjdFR5cGUoKSBj
b25zdCBmaW5hbCB7IHJldHVybiBGaWx0ZXJFZmZlY3RUeXBlSW1hZ2U7IH0KLQogICAgIFJlbmRl
ckVsZW1lbnQqIHJlZmVyZW5jZWRSZW5kZXJlcigpIGNvbnN0OwogCiAgICAgdm9pZCBwbGF0Zm9y
bUFwcGx5U29mdHdhcmUoKSBmaW5hbDsKQEAgLTYxLDMgKzU3LDUgQEAgcHJpdmF0ZToKIH07CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworU1BFQ0lBTElaRV9UWVBFX1RSQUlUU19GSUxURVJf
RUZGRUNUKEZFSW1hZ2UpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3Mv
ZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRl
cnMvU1ZHRmlsdGVyLmNwcAppbmRleCA5YTk0YTQ2MDM1ODc5MDhhMzg0ZDE3NDI3YjM3MTkzNTky
YjdiY2U3Li43MzJlYjE4OGE1YmJjYzg1ODRkYWNjYmVlMjA4N2YyODAyYTU3YWY2IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKQEAg
LTI0LDI3ICsyNCwyNCBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVNWR0ZpbHRlcjo6U1ZH
RmlsdGVyKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0IEZs
b2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRh
cmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBlZmZl
Y3RCQm94TW9kZSkKLSAgICA6IEZpbHRlcihhYnNvbHV0ZVRyYW5zZm9ybSkKLSAgICAsIG1fYWJz
b2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbikKK1NW
R0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZs
b2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwg
Y29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkK
KyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2NhbGUsIHNvdXJj
ZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGluZ0JveCh0YXJn
ZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lvbikKICAgICAs
IG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNvbHV0ZUZpbHRl
clJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9uKTsKIH0KIAot
RmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSBz
aXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9h
dFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkKICAgICAgICAg
c2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAgIHJldHVybiBG
aWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1dGVGaWx0ZXJS
ZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVybiBGaWx0ZXI6
OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRl
cjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zvcm0sIGNvbnN0
IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgYm9vbCBl
ZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEZs
b2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBj
b25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3Vu
ZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5l
dyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lv
biwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1vZGUpKTsKKyAg
ICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNvdXJjZUltYWdl
UmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJveE1vZGUpKTsK
IH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
c3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA4MDkzMTQ2ZDY0YWY4ODg1YmMzZGE0OTMw
MmY1YWVhMGZiMTcwMGNmLi41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5YzdmODI3YjY3ZmRh
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIu
aApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFmZmluZVRy
YW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRl
IDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUg
ewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1YmxpYzoKLSAg
ICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNv
bnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wp
OworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBmaWx0
ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVj
dCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29s
IGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFj
ZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAgRmxvYXRSZWN0
IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVGaWx0ZXJSZWdp
b247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0
IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0
IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9CiAgICAgRmxv
YXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGlu
Z0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRy
dWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJjZURyYXdpbmdS
ZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVj
dCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdGaWx0ZXIoY29u
c3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJl
Y3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBtX2Fi
c29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJnZXRCb3VuZGlu
Z0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAgICBGbG9hdFJl
Y3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwogfTsKIApAQCAt
NTcsNCArNDYsNSBAQCBwcml2YXRlOgogCiBTUEVDSUFMSVpFX1RZUEVfVFJBSVRTX0JFR0lOKFdl
YkNvcmU6OlNWR0ZpbHRlcikKICAgICBzdGF0aWMgYm9vbCBpc1R5cGUoY29uc3QgV2ViQ29yZTo6
RmlsdGVyJiBmaWx0ZXIpIHsgcmV0dXJuIGZpbHRlci5pc1NWR0ZpbHRlcigpOyB9CisgICAgc3Rh
dGljIGJvb2wgaXNUeXBlKGNvbnN0IFdlYkNvcmU6OkZpbHRlckZ1bmN0aW9uJiBmdW5jdGlvbikg
eyByZXR1cm4gZnVuY3Rpb24uaXNTVkdGaWx0ZXIoKTsgfQogU1BFQ0lBTElaRV9UWVBFX1RSQUlU
U19FTkQoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyQnVpbGRlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXJCdWlsZGVyLmNwcAppbmRleCA5NmYzYTgwNTA0Mjk1NTU4MTAzNGQ5OGE0ZmRh
YzRlYWYzMDg3Yjk0Li44MDAwZjg0YjVjZDYwZTA2ZTIzNjRlZDVjZGU4ZjhlM2ZkOTQ0MTZlIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXJC
dWlsZGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
aWx0ZXJCdWlsZGVyLmNwcApAQCAtMjEsNiArMjEsNyBAQAogI2luY2x1ZGUgIlNWR0ZpbHRlckJ1
aWxkZXIuaCIKIAogI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgorI2luY2x1ZGUgIkltYWdlQnVm
ZmVyLmgiCiAjaW5jbHVkZSAiU291cmNlQWxwaGEuaCIKICNpbmNsdWRlICJTb3VyY2VHcmFwaGlj
LmgiCiAjaW5jbHVkZSA8d3RmL3RleHQvU3RyaW5nQ29uY2F0ZW5hdGVOdW1iZXJzLmg+Cg==
</data>
<flag name="commit-queue"
          id="467334"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>442750</attachid>
            <date>2021-10-28 15:19:02 -0700</date>
            <delta_ts>2021-10-29 12:04:26 -0700</delta_ts>
            <desc>Patch for review</desc>
            <filename>filters_coordinates_system.patch</filename>
            <type>text/plain</type>
            <size>50255</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0No
YW5nZUxvZwppbmRleCBmZmU2NGJlMWVkMTIuLjE3MzM5NGRhODExYiAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAt
MSwzICsxLDExMiBAQAorMjAyMS0xMC0yOCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxl
LmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0
ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIEN1cnJlbnRseSBTVkdGaWx0ZXIgc2V0cyB0
aGUgZm9sbG93aW5nIG1lbWJlcnMgb2YgRmlsdGVyCisKKyAgICAgICAgMS4gQWZmaW5lVHJhbnNm
b3JtIG1fYWJzb2x1dGVUcmFuc2Zvcm06IHRoaXMgaXMgdGhlIHNjYWxpbmcgcGFydCBmcm9tIHRo
ZQorICAgICAgICAgICB0cmFuc2Zvcm1hdGlvbiBmcm9tIHRoZSB0YXJnZXQgZWxlbWVudCB0byB0
aGUgb3V0ZXJtb3N0IGNvb3JkaW5hdGUgc3lzdGVtCisgICAgICAgIDIuIEZsb2F0U2l6ZSBtX2Zp
bHRlclJlc29sdXRpb246IHRoaXMgaXMgdGhlIGNsYW1waW5nIHNjYWxlIGlmIHRoZSBzaXplCisg
ICAgICAgICAgIG9mIHRoZSByZXN1bHQgSW1hZ2VCdWZmZXJzIGV4Y2VlZHMgTWF4Q2xhbXBlZEFy
ZWEKKworICAgICAgICBBbmQgdGhlIENTU0ZpbHRlciBzZXRzIHRoZSBmb2xsb3dpbmcgbWVtYmVy
IG9mIEZpbHRlcjoKKworICAgICAgICAxLiBmbG9hdCBtX2ZpbHRlclNjYWxlOiB0aGlzIGlzIHRo
ZSBkb2N1bWVudCgpLmRldmljZVNjYWxlRmFjdG9yKCkKKworICAgICAgICBUaGUgZGlzY3JlcGFu
Y3kgaGFwcGVucyBhbHNvIHdoZW4gY3JlYXRpbmcgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMuIEZv
ciAKKyAgICAgICAgU1ZHRmlsdGVyLCB3ZSBjcmVhdGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yPTEu
IFRoaXMgbWVhbnMgdGhlIGxvZ2ljYWxTaXplCisgICAgICAgID09IGJhY2tlbmRTaXplLiBCdXQg
Zm9yIENTU0ZpbHRlciB3ZSBjcmVhdGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yCisgICAgICAgID0g
bV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUgbG9naWNhbFNpemUgIT0gYmFja2VuZFNpemUg
aW4gdGhpcyBjYXNlLgorCisgICAgICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVz
IHN5c3RlbSBmb3IgYm90aCBmaWx0ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFj
ZSB0aGUgdGhyZWUgbWVtYmVycyBieSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRl
clNjYWxlIi4KKworICAgICAgICAqIGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OkNTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0
Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVy
VG9JbWFnZUJ1ZmZlcik6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNv
bnZvbHZlTWF0cml4LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFQ29udm9sdmVNYXRyaXg6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRURpc3BsYWNlbWVudE1hcC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURpc3BsYWNlbWVu
dE1hcDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFk
b3c6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFRHJv
cFNoYWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpjYWxjdWxhdGVLZXJuZWxTaXplKToKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1
c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9y
cGhvbG9neTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6
RkVNb3JwaG9sb2d5OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVPZmZz
ZXQ6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zm
c2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVUaWxlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFVGlsZTo6cGxhdGZvcm1B
cHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRl
ci5oOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6
OkZpbHRlcjo6c291cmNlSW1hZ2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRl
cjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVn
aW9uIGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VSZWN0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6
CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OkZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXI6OmZpbHRlclJlc29sdXRpb24gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyOjpzZXRGaWx0ZXJSZXNvbHV0aW9uKTogRGVsZXRlZC4KKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6YWJzb2x1dGVUcmFuc2Zvcm0gY29uc3QpOiBEZWxldGVkLgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjppc1NWR0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgIChX
ZWJDb3JlOjpGaWx0ZXI6OmlzQ1NTRmlsdGVyIGNvbnN0KTogRGVsZXRlZC4KKyAgICAgICAgKFdl
YkNvcmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmFwcGx5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6aW1hZ2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojp1bm11bHRpcGxpZWRSZXN1bHQpOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyRWZmZWN0OjpwcmVtdWx0aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlckVmZmVjdDo6Y29weUltYWdlQnl0ZXMgY29uc3QpOgorICAgICAgICAoV2ViQ29y
ZTo6RmlsdGVyRWZmZWN0Ojpjb252ZXJ0UGl4ZWxCdWZmZXJUb0NvbG9yU3BhY2UpOgorICAgICAg
ICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2Up
OgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxpZWRSZXN1
bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVJbWFnZUJ1ZmZlclJl
c3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVVubXVsdGlwbGll
ZEltYWdlUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlUHJl
bXVsdGlwbGllZEltYWdlUmVzdWx0KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwOgorICAgICAgICAoV2ViQ29yZTo6U291cmNlR3JhcGhpYzo6
ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0
ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAo
V2ViQ29yZTo6Q1NTRmlsdGVyOjpDU1NGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpidWlsZFJlZmVyZW5jZUZpbHRlcik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6
OmJ1aWxkKToKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6YWxsb2NhdGVCYWNraW5nU3Rv
cmVJZk5lZWRlZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbik6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmNsZWFy
SW50ZXJtZWRpYXRlUmVzdWx0cyk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OnNldFNv
dXJjZUltYWdlUmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6Om91dHB1dFJlY3Qg
Y29uc3QpOgorICAgICAgICAqIHJlbmRlcmluZy9DU1NGaWx0ZXIuaDoKKyAgICAgICAgKiByZW5k
ZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRlckxh
eWVyRmlsdGVyczo6YnVpbGRGaWx0ZXIpOgorICAgICAgICAqIHJlbmRlcmluZy9zdmcvUmVuZGVy
U1ZHUmVzb3VyY2VGaWx0ZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVzb3Vy
Y2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UpOgorICAgICAgICAoV2ViQ29yZTo6UmVuZGVyU1ZHUmVz
b3VyY2VGaWx0ZXI6OnBvc3RBcHBseVJlc291cmNlKToKKyAgICAgICAgKiByZW5kZXJpbmcvc3Zn
L1NWR1JlbmRlclRyZWVBc1RleHQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6d3JpdGVTVkdSZXNv
dXJjZUNvbnRhaW5lcik6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUltYWdlOjpGRUltYWdlKToKKyAgICAgICAgKFdl
YkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdl
YkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogc3ZnL2dy
YXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFnZS5oOgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0
ZXJzL1NWR0ZpbHRlci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OlNWR0ZpbHRl
cik6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUgY29u
c3QpOgorICAgICAgICAoV2ViQ29yZTo6U1ZHRmlsdGVyOjpjcmVhdGUpOgorICAgICAgICAoV2Vi
Q29yZTo6U1ZHRmlsdGVyOjpzY2FsZWRCeUZpbHRlclJlc29sdXRpb24gY29uc3QpOiBEZWxldGVk
LgorICAgICAgICAqIHN2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5oOgorCiAyMDIxLTEw
LTI3ICBTYWlkIEFib3UtSGFsbGF3YSAgPHNhaWRAYXBwbGUuY29tPgogCiAgICAgICAgIFtHUFUg
UHJvY2Vzc10gSW50cm9kdWNlIEZpbHRlckZ1bmN0aW9uIGFuZCBtYWtlIGl0IHRoZSBiYXNlIGNs
YXNzIG9mIEZpbHRlciBhbmQgRmlsdGVyRWZmZWN0CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmls
dGVySW1hZ2VWYWx1ZS5jcHAKaW5kZXggOGNmOTA5YWU5ZTUzLi5kNmI0M2ExYTFjMWEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1hZ2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYs
NiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlckltYWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1l
bnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegogICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmls
dGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXItPnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4
dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0g
ICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24oaW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0Zp
bHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVyT3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6
OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAg
ICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJl
bmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4Nzg4ODVlYi4uOTliMTY5YTM4MWUxIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVy
RWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW0KKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCkBAIC0y
NDIsNyArMjQyLDcgQEAgSW1hZ2VCdWZmZXIqIEZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdl
OjpvdXRwdXQoKSBjb25zdAogdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVu
ZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QpCiB7CiAgICAgRmxvYXRT
aXplIGNsYW1wZWRTaXplID0gSW1hZ2VCdWZmZXI6OmNsYW1wZWRTaXplKGxhc3RFZmZlY3QuYWJz
b2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBJT1N1
cmZhY2VJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBsYXN0RWZmZWN0LmZpbHRlcigp
LmZpbHRlclNjYWxlKCksIGxhc3RFZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1h
dDo6QkdSQTgpOworICAgIG1fb3V0cHV0SW1hZ2VCdWZmZXIgPSBJT1N1cmZhY2VJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCAxLCBsYXN0RWZmZWN0LnJlc3VsdENvbG9yU3BhY2UoKSwg
UGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIW1fb3V0cHV0SW1hZ2VCdWZmZXIpIHsKICAg
ICAgICAgY2xlYXJSZXN1bHQoKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMjU0LDcgKzI1NCw2IEBA
IHZvaWQgRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6OnJlbmRlclRvSW1hZ2VCdWZmZXIo
RmlsdGVyRWZmZWN0JiBsYXN0RWZmZWN0CiBGbG9hdFJlY3QgRmlsdGVyRWZmZWN0UmVuZGVyZXJD
b3JlSW1hZ2U6OmRlc3RSZWN0KGNvbnN0IEZpbHRlckVmZmVjdCYgbGFzdEVmZmVjdCkgY29uc3QK
IHsKICAgICBJbnRTaXplIGRlc3RTaXplID0gbGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgp
LnNpemUoKTsKLSAgICBkZXN0U2l6ZS5zY2FsZShsYXN0RWZmZWN0LmZpbHRlcigpLmZpbHRlclNj
YWxlKCkpOwogICAgIEZsb2F0UmVjdCBkZXN0UmVjdCA9IEZsb2F0UmVjdChGbG9hdFBvaW50KCks
IGRlc3RTaXplKTsKICAgICByZXR1cm4gZGVzdFJlY3Q7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4
LmNwcAppbmRleCA4MGI0Yzg5Mjk1MjAuLmU4NmYxMjljNTRiMSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFQ29udm9sdmVN
YXRyaXguY3BwCkBAIC0zODYsOCArMzg2LDcgQEAgdm9pZCBGRUNvbnZvbHZlTWF0cml4OjpwbGF0
Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKLQorICAgIAogICAgIFBhaW50aW5nRGF0YSBwYWludGlu
Z0RhdGEgPSB7CiAgICAgICAgICpzb3VyY2VQaXhlbEFycmF5LAogICAgICAgICBkZXN0aW5hdGlv
blBpeGVsQXJyYXksCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFjZW1lbnRNYXAuY3BwCmluZGV4IDQ2Yjc3Yzg1YTFj
Zi4uMjRhNDYyNmM2YTFjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNwcApAQCAtMTE5LDkg
KzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgp
CiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgIEludFNpemUgcGFp
bnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCk7Ci0gICAgcGFpbnRTaXplLnNjYWxl
KGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5z
Y2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxlLCBtX3NjYWxlIH0pOworICAgIEZsb2F0
U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9zY2FsZSwgbV9zY2Fs
ZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsK
ICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxlLmhlaWdodCgpIC8gMjU1LjA7CiAgICAg
ZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxlLndpZHRoKCkgKiAwLjU7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNo
YWRvdy5jcHAKaW5kZXggOTU5YTY2OWQ0MWJlLi5kM2M0MzdjN2QyZmMgMTAwNjQ0Ci0tLSBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRv
dy5jcHAKQEAgLTUzLDcgKzUzLDcgQEAgdm9pZCBGRURyb3BTaGFkb3c6OmRldGVybWluZUFic29s
dXRlUGFpbnRSZWN0KCkKIAogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZVBhaW50UmVjdCA9IGlucHV0
RWZmZWN0KDApLT5hYnNvbHV0ZVBhaW50UmVjdCgpOwogICAgIEZsb2F0UmVjdCBhYnNvbHV0ZU9m
ZnNldFBhaW50UmVjdChhYnNvbHV0ZVBhaW50UmVjdCk7Ci0gICAgYWJzb2x1dGVPZmZzZXRQYWlu
dFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9
KSk7CisgICAgYWJzb2x1dGVPZmZzZXRQYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIGFic29sdXRlUGFpbnRSZWN0LnVuaXRlKGFi
c29sdXRlT2Zmc2V0UGFpbnRSZWN0KTsKIAogICAgIEludFNpemUga2VybmVsU2l6ZSA9IEZFR2F1
c3NpYW5CbHVyOjpjYWxjdWxhdGVLZXJuZWxTaXplKGZpbHRlciwgeyBtX3N0ZFgsIG1fc3RkWSB9
KTsKQEAgLTgwLDkgKzgwLDggQEAgdm9pZCBGRURyb3BTaGFkb3c6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgIAotICAg
IEZsb2F0U2l6ZSBibHVyUmFkaXVzID0gMiAqIGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRp
b24oeyBtX3N0ZFgsIG1fc3RkWSB9KTsKLSAgICBibHVyUmFkaXVzLnNjYWxlKGZpbHRlci5maWx0
ZXJTY2FsZSgpKTsKLSAgICBGbG9hdFNpemUgb2Zmc2V0ID0gZmlsdGVyLnNjYWxlZEJ5RmlsdGVy
UmVzb2x1dGlvbih7IG1fZHgsIG1fZHkgfSk7CisgICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAy
ICogZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX3N0ZFgsIG1fc3RkWSB9KTsKKyAgICBG
bG9hdFNpemUgb2Zmc2V0ID0gZmlsdGVyLnNjYWxlZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5
IH0pOwogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1
dEltYWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGbG9hdFJlY3QgZHJhd2luZ1Jl
Z2lvbldpdGhPZmZzZXQoZHJhd2luZ1JlZ2lvbik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVzc2lhbkJsdXIuY3BwCmluZGV4
IGY4MzVkYmZmZjAzZS4uYjYyM2RjYmQ2MjM0IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcAorKysgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFR2F1c3NpYW5CbHVyLmNwcApAQCAt
NDg1LDcgKzQ4NSw3IEBAIEludFNpemUgRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZVVuc2NhbGVk
S2VybmVsU2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQogCiBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVLZXJuZWxTaXplKGNvbnN0IEZpbHRlciYgZmlsdGVyLCBGbG9hdFNpemUg
c3RkRGV2aWF0aW9uKQogewotICAgIHJldHVybiBjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUo
ZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzdGREZXZpYXRpb24pKTsKKyAgICByZXR1
cm4gY2FsY3VsYXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxl
KHN0ZERldmlhdGlvbikpOwogfQogCiBJbnRTaXplIEZFR2F1c3NpYW5CbHVyOjpjYWxjdWxhdGVP
dXRzZXRTaXplKEZsb2F0U2l6ZSBzdGREZXZpYXRpb24pCkBAIC01MzcsMTAgKzUzNyw4IEBAIHZv
aWQgRkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgICAgIHJldHVy
bjsKIAogICAgIEludFNpemUga2VybmVsU2l6ZSA9IGNhbGN1bGF0ZUtlcm5lbFNpemUoZmlsdGVy
KCksIHsgbV9zdGRYLCBtX3N0ZFkgfSk7Ci0gICAga2VybmVsU2l6ZS5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKIAogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJl
Y3QoKS5zaXplKCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkp
OwogICAgIGF1dG8gdG1wSW1hZ2VEYXRhID0gVWludDhDbGFtcGVkQXJyYXk6OnRyeUNyZWF0ZVVu
aW5pdGlhbGl6ZWQocGFpbnRTaXplLmFyZWEoKSAqIDQpOwogICAgIGlmICghdG1wSW1hZ2VEYXRh
KQogICAgICAgICByZXR1cm47CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKaW5kZXggODk1NWQ5MmQ2YmY0Li42
MGM2ODUxNDAzOWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAgLTc2LDcgKzc2LDcgQEAgdm9pZCBG
RU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJl
Y3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAg
RmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QuaW5mbGF0ZShm
aWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkp
OworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAgICAgICAg
IHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgpKTsKICAgICBlbHNlCkBAIC0yNjMs
NyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAg
ICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICByZXR1cm47CiAKLSAgICByYWRpdXMg
PSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9yYWRp
dXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZsb29yZWRJbnRTaXplKGZpbHRlci5z
Y2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGludCBy
YWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSAtIDEsIHJhZGl1cy53
aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWluKGVmZmVjdERyYXdpbmdSZWN0Lmhl
aWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAtMjczLDEwICsyNzMsMTAgQEAgdm9p
ZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgUGFpbnRpbmdEYXRh
IHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3JjUGl4ZWxBcnJheSA9IHNvdXJjZVBp
eGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRzdFBpeGVsQXJyYXkgPSAmZGVzdGlu
YXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53aWR0aCA9IGNlaWxmKGVmZmVjdERy
YXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Ci0gICAgcGFpbnRpbmdE
YXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpICogZmlsdGVyLmZp
bHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRpdXNYID0gY2VpbGYocmFkaXVzWCAq
IGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGluZ0RhdGEucmFkaXVzWSA9IGNlaWxm
KHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CisgICAgcGFpbnRpbmdEYXRhLndpZHRo
ID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7CisgICAgcGFpbnRpbmdEYXRhLmhl
aWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpKTsKKyAgICBwYWludGluZ0Rh
dGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBhaW50aW5nRGF0YS5yYWRpdXNZID0g
Y2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5KHBhaW50aW5nRGF0YSk7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zm
c2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVPZmZz
ZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Ni4uMDI4Y2JjNjBhNDQ3IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcApAQCAt
NTYsNyArNTYsNyBAQCB2b2lkIEZFT2Zmc2V0OjpkZXRlcm1pbmVBYnNvbHV0ZVBhaW50UmVjdCgp
CiB7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGlucHV0RWZmZWN0KDApLT5hYnNvbHV0ZVBh
aW50UmVjdCgpOwogICAgIEZpbHRlciYgZmlsdGVyID0gdGhpcy0+ZmlsdGVyKCk7Ci0gICAgcGFp
bnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fZHgsIG1fZHkg
fSkpOworICAgIHBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9k
eCwgbV9keSB9KSk7CiAgICAgaWYgKGNsaXBzVG9Cb3VuZHMoKSkKICAgICAgICAgcGFpbnRSZWN0
LmludGVyc2VjdChtYXhFZmZlY3RSZWN0KCkpOwogICAgIGVsc2UKQEAgLTc3LDcgKzc3LDcgQEAg
dm9pZCBGRU9mZnNldDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZsb2F0UmVjdCBk
cmF3aW5nUmVnaW9uID0gZHJhd2luZ1JlZ2lvbk9mSW5wdXRJbWFnZShpbi0+YWJzb2x1dGVQYWlu
dFJlY3QoKSk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAgICBkcmF3
aW5nUmVnaW9uLm1vdmUoZmlsdGVyLnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fZHgsIG1f
ZHkgfSkpOworICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2Fs
ZSh7IG1fZHgsIG1fZHkgfSkpOwogICAgIHJlc3VsdEltYWdlLT5jb250ZXh0KCkuZHJhd0ltYWdl
QnVmZmVyKCppbkJ1ZmZlciwgZHJhd2luZ1JlZ2lvbik7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAppbmRleCAzNTg5NWZm
MmQ5MzUuLjNlNTBmYjZjMDBlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9GRVRpbGUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcApAQCAtNjEsNyArNjEsNyBAQCB2b2lkIEZFVGls
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoaW4tPmZpbHRlclR5cGUoKSA9PSBG
aWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUdyYXBoaWMgfHwgaW4tPmZpbHRlclR5cGUoKSA9PSBG
aWx0ZXJFZmZlY3Q6OlR5cGU6OlNvdXJjZUFscGhhKSB7CiAgICAgICAgIEZpbHRlciYgZmlsdGVy
ID0gdGhpcy0+ZmlsdGVyKCk7CiAgICAgICAgIHRpbGVSZWN0ID0gZmlsdGVyLmZpbHRlclJlZ2lv
bigpOwotICAgICAgICB0aWxlUmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLndp
ZHRoKCksIGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpOworICAgICAgICB0aWxl
UmVjdC5zY2FsZShmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgfQogCiAgICAgYXV0byB0aWxl
SW1hZ2UgPSBTVkdSZW5kZXJpbmdDb250ZXh0OjpjcmVhdGVJbWFnZUJ1ZmZlcih0aWxlUmVjdCwg
dGlsZVJlY3QsIERlc3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBmaWx0ZXIoKS5yZW5kZXJp
bmdNb2RlKCkpOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCmluZGV4IGQzNGJjYjBjZDgzMC4uNWM2YWJkNTQz
Y2EzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3MSwxNiBAQCB2b2lkIEZFVHVy
YnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYgcGl4ZWxBcnJheSwgY29uc3Qg
UGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZKTsKIAogICAgIEludFJlY3Qg
ZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAgICBmaWx0ZXJSZWdpb24uc2Nh
bGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQb2ludCBwb2ludCgwLCBmaWx0
ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhPZlBpeGVsQ2hhbm5lbCA9IHN0
YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0g
aW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJhbnNmb3JtKCkuaW52ZXJzZSgp
LnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9hdFNpemUgaW52ZXJzZVNjYWxl
ID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyKCkuZmls
dGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQgeSA9IHN0YXJ0WTsgeSA8IGVu
ZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50LnkoKSArIDEpOwogICAgICAgICBw
b2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8
IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAgICAgIHBvaW50LnNldFgocG9p
bnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxvY2FsUG9pbnQgPSBpbnZlcnNl
VHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAgIEZsb2F0UG9pbnQgbG9jYWxQ
b2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgoKSwgaW52ZXJzZVNjYWxlLmhl
aWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2FsY3VsYXRlVHVyYnVsZW5jZVZh
bHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBsb2NhbFBvaW50KTsKICAgICAg
ICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBvbmVudHMuZGF0YSgpLCA0LCBp
bmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4T2ZQaXhlbENoYW5uZWwgKz0g
NDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNv
ZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJyYXkgPSBkZXN0aW5hdGlvblBp
eGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUoYWJzb2x1dGVQYWlu
dFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkpIHsKICAgICAgICAgZGVzdGlu
YXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3ODI4MTBiYmUuLjU0MjExMGE4
OGZlYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L0ZpbHRlci5oCkBAIC0zMyw0OSArMzMsNDUgQEAgY2xhc3MgRmlsdGVyRWZmZWN0OwogCiBjbGFz
cyBGaWx0ZXIgOiBwdWJsaWMgRmlsdGVyRnVuY3Rpb24gewogcHVibGljOgotICAgIHZvaWQgc2V0
U291cmNlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1fc291cmNl
SW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQotICAgIEltYWdlQnVmZmVyKiBzb3VyY2VJ
bWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KLQotICAgIEZsb2F0U2l6ZSBm
aWx0ZXJSZXNvbHV0aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZXNvbHV0aW9uOyB9Ci0g
ICAgdm9pZCBzZXRGaWx0ZXJSZXNvbHV0aW9uKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyUmVzb2x1
dGlvbikgeyBtX2ZpbHRlclJlc29sdXRpb24gPSBmaWx0ZXJSZXNvbHV0aW9uOyB9CisgICAgRmxv
YXRTaXplIGZpbHRlclNjYWxlKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQorICAg
IHZvaWQgc2V0RmlsdGVyU2NhbGUoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkgeyBtX2Zp
bHRlclNjYWxlID0gZmlsdGVyU2NhbGU7IH0KIAotICAgIGZsb2F0IGZpbHRlclNjYWxlKCkgY29u
c3QgeyByZXR1cm4gbV9maWx0ZXJTY2FsZTsgfQotICAgIHZvaWQgc2V0RmlsdGVyU2NhbGUoZmxv
YXQgc2NhbGUpIHsgbV9maWx0ZXJTY2FsZSA9IHNjYWxlOyB9CisgICAgRmxvYXRSZWN0IHNvdXJj
ZUltYWdlUmVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fc291cmNlSW1hZ2VSZWN0OyB9CisgICAgdm9p
ZCBzZXRGaWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0
ZXJSZWdpb24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICAKKyAgICBGbG9hdFJlY3QgZmlsdGVyUmVn
aW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAgICB2b2lkIHNldFNvdXJj
ZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBtX3NvdXJjZUlt
YWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiBhYnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07
IH0KKyAgICB2aXJ0dWFsIEZsb2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBz
aXplKSBjb25zdCB7IHJldHVybiBzaXplICogbV9maWx0ZXJTY2FsZTsgfQorICAgIAorICAgIHZv
aWQgc2V0U291cmNlSW1hZ2UoUmVmUHRyPEltYWdlQnVmZmVyPiYmIHNvdXJjZUltYWdlKSB7IG1f
c291cmNlSW1hZ2UgPSBXVEZNb3ZlKHNvdXJjZUltYWdlKTsgfQorICAgIEltYWdlQnVmZmVyKiBz
b3VyY2VJbWFnZSgpIHsgcmV0dXJuIG1fc291cmNlSW1hZ2UuZ2V0KCk7IH0KIAogICAgIFJlbmRl
cmluZ01vZGUgcmVuZGVyaW5nTW9kZSgpIGNvbnN0IHsgcmV0dXJuIG1fcmVuZGVyaW5nTW9kZTsg
fQogICAgIHZvaWQgc2V0UmVuZGVyaW5nTW9kZShSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUp
IHsgbV9yZW5kZXJpbmdNb2RlID0gcmVuZGVyaW5nTW9kZTsgfQogCi0gICAgdmlydHVhbCBib29s
IGlzU1ZHRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLSAgICB2aXJ0dWFsIGJvb2wg
aXNDU1NGaWx0ZXIoKSBjb25zdCB7IHJldHVybiBmYWxzZTsgfQotCi0gICAgdmlydHVhbCBGbG9h
dFNpemUgc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJl
dHVybiBzaXplICogbV9maWx0ZXJSZXNvbHV0aW9uOyB9Ci0gICAgCi0gICAgdmlydHVhbCBGbG9h
dFJlY3Qgc291cmNlSW1hZ2VSZWN0KCkgY29uc3QgPSAwOwotICAgIHZpcnR1YWwgRmxvYXRSZWN0
IGZpbHRlclJlZ2lvbigpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZsb2F0UmVjdCBmaWx0ZXJS
ZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0ID0gMDsKLQogcHJvdGVjdGVkOgotICAgIEZpbHRlcihG
aWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRy
YW5zZm9ybSwgZmxvYXQgZmlsdGVyU2NhbGUgPSAxKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUg
ZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSkKICAgICAgICAgOiBGaWx0
ZXJGdW5jdGlvbihmaWx0ZXJUeXBlKQotICAgICAgICAsIG1fYWJzb2x1dGVUcmFuc2Zvcm0oYWJz
b2x1dGVUcmFuc2Zvcm0pCiAgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSkKICAg
ICB7CiAgICAgfQogCi0gICAgRmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0ZXJUeXBlLCBjb25zdCBG
bG9hdFNpemUmIGZpbHRlclJlc29sdXRpb24pCisgICAgRmlsdGVyKEZpbHRlcjo6VHlwZSBmaWx0
ZXJUeXBlLCBjb25zdCBGbG9hdFNpemUmIGZpbHRlclNjYWxlLCBjb25zdCBGbG9hdFJlY3QmIHNv
dXJjZUltYWdlUmVjdCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pCiAgICAgICAgIDog
RmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2ZpbHRlclJlc29sdXRpb24o
ZmlsdGVyUmVzb2x1dGlvbikKKyAgICAgICAgLCBtX2ZpbHRlclNjYWxlKGZpbHRlclNjYWxlKQor
ICAgICAgICAsIG1fc291cmNlSW1hZ2VSZWN0KHNvdXJjZUltYWdlUmVjdCkKKyAgICAgICAgLCBt
X2ZpbHRlclJlZ2lvbihmaWx0ZXJSZWdpb24pCiAgICAgewogICAgIH0KIAogcHJpdmF0ZToKKyAg
ICBGbG9hdFNpemUgbV9maWx0ZXJTY2FsZTsKKyAgICBGbG9hdFJlY3QgbV9zb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmxvYXRSZWN0IG1fZmlsdGVyUmVnaW9uOworCiAgICAgUmVmUHRyPEltYWdlQnVm
ZmVyPiBtX3NvdXJjZUltYWdlOwotICAgIEZsb2F0U2l6ZSBtX2ZpbHRlclJlc29sdXRpb247Ci0g
ICAgQWZmaW5lVHJhbnNmb3JtIG1fYWJzb2x1dGVUcmFuc2Zvcm07CiAgICAgUmVuZGVyaW5nTW9k
ZSBtX3JlbmRlcmluZ01vZGUgeyBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkIH07Ci0gICAg
ZmxvYXQgbV9maWx0ZXJTY2FsZSB7IDEgfTsKIH07CiAKIH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RmlsdGVyRWZmZWN0LmNwcAppbmRleCBiMTNlNjgyMzY2MzUuLjQwZDIzMDBlMTFlMSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRmls
dGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRlckVmZmVj
dDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAgIHN1YnJl
Z2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAgICB9IGVs
c2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2Uo
KTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICAv
LyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBvbiB0aGUg
dGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGlsZT4uCiAg
ICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkKLSAgICAg
ICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsKKyAgICAg
ICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRvIGJvdW5k
YXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEyMywxNSAr
MTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3VicmVnaW9u
KTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0ZVRyYW5z
Zm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRpb24gPSBt
X2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24uc2NhbGUo
ZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1YnJlZ2lv
bjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsK
ICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQgdG8gbWFw
IGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5hdGVzLgog
ICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9uKTsKIAog
ICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lvbi4KICAg
ICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9u
KCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVzb2x1dGlv
bik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIuZmlsdGVy
U2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRlU2NhbGVk
RmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJyZWdpb24p
OwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAgICAgZGV0
ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNlKG1fb3Bl
cmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFt
IDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBh
cHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2
ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJp
ZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNs
aXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQ
YWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJc
biAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4gIGZpbHRl
ciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAgICBMT0df
V0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJO
YW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJy
ZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5k
YXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1
YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0
ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0
ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0VtcHR5KCkg
fHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6
ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVmZmVyKiBG
aWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1ZmZlclJl
c3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAKLSAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRlUGFpbnRS
ZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9pbWFn
ZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50UmVjdC5z
aXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNwYWNlLCBQ
aXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkKICAgICAg
ICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWludDhDbGFt
cGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IEludFJlY3Qm
IHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAgICBBU1NF
UlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0gICAgc2Nh
bGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNoZWNrZWRB
cmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBpZiAoY2hl
Y2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsKQEAgLTMw
Miw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6cHJl
bXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNpemUgc2Nh
bGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRz
Q2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0ZXIuZmls
dGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJlYTxSZWNv
cmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93ZWQoKSkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRyPFVpbnQ4
Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29uc3QgSW50
UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25zdCBVaW50
OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRpb24sIGNv
bnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0KHJlY3Qp
OwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgSW50
U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIHNj
YWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAgIC8vIElu
aXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBub3QgZW50
aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0LngoKSA8IDAg
fHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVkUGFpbnRT
aXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUuaGVpZ2h0
KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+IEZpbHRl
ckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAgICAgLy8g
RklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNwYWNlIGNv
bnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAogICAgIElu
dFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUoKSk7Ci0g
ICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAg
ICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUoZGVzdGlu
YXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRvIHN0b3Jl
IGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRl
clNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAg
ICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVy
LnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6
QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0Owog
ICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9uUmVjdCk7
CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmlsdGVyRWZm
ZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBGbG9hdFNp
emUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXplKCkpOwog
CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29sb3Igc3Bh
Y2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24KLSAgICBh
dXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFyZ2V0Q29s
b3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9
IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUo
KSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBpZiAoIWNv
bnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAtNTExLDcg
KzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0KFVpbnQ4
Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsKICAgICAg
ICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgpKTsKICAg
ICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlucHV0U2l6
ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVkSW1hZ2VS
ZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsKICAgICAg
ICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2Ug
fTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11bHRpcGxp
ZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAgICAgICB9
IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xh
bXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGllZEltYWdl
UmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7CiAgICAg
ICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxpY2F0aW9u
OjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JTcGFjZSB9
OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZUlt
YWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBGbG9hdFNp
emUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZlcjo6Y3Jl
YXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVyLmZpbHRl
clNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBt
X2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6ZSwgbV9m
aWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0
OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9CiAKQEAg
LTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVyRWZmZWN0
OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNp
emUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1f
ZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFs
cGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4
LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0ID0g
UGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJldHVybiBt
X3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6b3B0aW9u
YWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJl
c3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXpl
KCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNp
emUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlByZW11
bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07CiAgICAg
bV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRlKGZvcm1h
dCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVzdWx0Owpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
U291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3Li5lMTIzZGNkOGZmMjEgMTAwNjQ0
Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvU291cmNlR3Jh
cGhpYy5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9T
b3VyY2VHcmFwaGljLmNwcApAQCAtMzUsNyArMzUsNiBAQCB2b2lkIFNvdXJjZUdyYXBoaWM6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwogICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXIuc291cmNlSW1hZ2VS
ZWN0KCk7Ci0gICAgcGFpbnRSZWN0LnNjYWxlKGZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCkud2lk
dGgoKSwgZmlsdGVyLmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSk7CiAgICAgc2V0QWJzb2x1
dGVQYWludFJlY3QoZW5jbG9zaW5nSW50UmVjdChwYWludFJlY3QpKTsKIH0KIApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAgYi9Tb3VyY2UvV2ViQ29y
ZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcAppbmRleCA5ZTFiMDU4YjM5OTUuLjI4M2U5N2Y4NTA0
NSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKKysr
IGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5jcHAKQEAgLTU0LDE5ICs1NCwx
NyBAQAogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVJlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6
Y3JlYXRlKCkKK1JlZjxDU1NGaWx0ZXI+IENTU0ZpbHRlcjo6Y3JlYXRlKGZsb2F0IHNjYWxlRmFj
dG9yKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcik7CisgICAgcmV0dXJu
IGFkb3B0UmVmKCpuZXcgQ1NTRmlsdGVyKHNjYWxlRmFjdG9yKSk7CiB9CiAKLUNTU0ZpbHRlcjo6
Q1NTRmlsdGVyKCkKLSAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OkNTU0ZpbHRlciwgRmxvYXRT
aXplIHsgMSwgMSB9KQorQ1NTRmlsdGVyOjpDU1NGaWx0ZXIoZmxvYXQgc2NhbGVGYWN0b3IpCisg
ICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZsb2F0U2l6ZSB7IHNjYWxlRmFj
dG9yLCBzY2FsZUZhY3RvciB9KQogICAgICwgbV9zb3VyY2VHcmFwaGljKFNvdXJjZUdyYXBoaWM6
OmNyZWF0ZSgqdGhpcykpCiB7CiB9CiAKLUNTU0ZpbHRlcjo6fkNTU0ZpbHRlcigpID0gZGVmYXVs
dDsKLQogR3JhcGhpY3NDb250ZXh0KiBDU1NGaWx0ZXI6OmlucHV0Q29udGV4dCgpCiB7CiAgICAg
cmV0dXJuIHNvdXJjZUltYWdlKCkgPyAmc291cmNlSW1hZ2UoKS0+Y29udGV4dCgpIDogbnVsbHB0
cjsKQEAgLTg2LDcgKzg0LDYgQEAgUmVmUHRyPEZpbHRlckVmZmVjdD4gQ1NTRmlsdGVyOjpidWls
ZFJlZmVyZW5jZUZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgRmkKICAgICB9CiAKICAg
ICBhdXRvIGJ1aWxkZXIgPSBtYWtlVW5pcXVlPFNWR0ZpbHRlckJ1aWxkZXI+KCZwcmV2aW91c0Vm
ZmVjdCk7Ci0gICAgbV9zb3VyY2VBbHBoYSA9IGJ1aWxkZXItPmdldEVmZmVjdEJ5SWQoU291cmNl
QWxwaGE6OmVmZmVjdE5hbWUoKSk7CiAKICAgICBSZWZQdHI8RmlsdGVyRWZmZWN0PiBlZmZlY3Q7
CiAgICAgVmVjdG9yPFJlZjxGaWx0ZXJFZmZlY3Q+PiByZWZlcmVuY2VFZmZlY3RzOwpAQCAtMzAy
LDcgKzI5OSw3IEBAIGJvb2wgQ1NTRmlsdGVyOjpidWlsZChSZW5kZXJFbGVtZW50JiByZW5kZXJl
ciwgY29uc3QgRmlsdGVyT3BlcmF0aW9ucyYgb3BlcmF0aW9uCiAKICAgICBtX2VmZmVjdHMuc2hy
aW5rVG9GaXQoKTsKIAotICAgIHNldE1heEVmZmVjdFJlY3RzKG1fc291cmNlRHJhd2luZ1JlZ2lv
bik7CisgICAgc2V0TWF4RWZmZWN0UmVjdHMoc291cmNlSW1hZ2VSZWN0KCkpOwogI2lmIFVTRShD
T1JFX0lNQUdFKQogICAgIGlmICghbV9maWx0ZXJSZW5kZXJlcikKICAgICAgICAgbV9maWx0ZXJS
ZW5kZXJlciA9IEZpbHRlckVmZmVjdFJlbmRlcmVyOjp0cnlDcmVhdGUocmVuZGVyZXIuc2V0dGlu
Z3MoKS5jb3JlSW1hZ2VBY2NlbGVyYXRlZEZpbHRlclJlbmRlckVuYWJsZWQoKSwgbV9lZmZlY3Rz
Lmxhc3QoKS5nZXQoKSk7CkBAIC0zMzEsMTQgKzMyOCwxNCBAQCB2b2lkIENTU0ZpbHRlcjo6YWxs
b2NhdGVCYWNraW5nU3RvcmVJZk5lZWRlZChjb25zdCBHcmFwaGljc0NvbnRleHQmIHRhcmdldENv
bnRleAogICAgIGlmIChtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQpCiAgICAgICAgIHJldHVybjsK
IAotICAgIEludFNpemUgbG9naWNhbFNpemUgeyBtX3NvdXJjZURyYXdpbmdSZWdpb24uc2l6ZSgp
IH07CisgICAgSW50U2l6ZSBsb2dpY2FsU2l6ZSB7IHNvdXJjZUltYWdlUmVjdCgpLnNpemUoKSB9
OwogICAgIGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgp
ICE9IGxvZ2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQogICAgICAgICBzZXRTb3VyY2VJ
bWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0
YXJnZXRDb250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CiAjZWxzZQogICAgICAgICBVTlVTRURfUEFSQU0odGFy
Z2V0Q29udGV4dCk7CiAgICAgICAgIFJlbmRlcmluZ01vZGUgbW9kZSA9IG1fZmlsdGVyUmVuZGVy
ZXIgPyBSZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IHJlbmRlcmluZ01vZGUoKTsKLSAgICAg
ICAgc2V0U291cmNlSW1hZ2UoSW1hZ2VCdWZmZXI6OmNyZWF0ZShsb2dpY2FsU2l6ZSwgbW9kZSwg
ZmlsdGVyU2NhbGUoKSwgRGVzdGluYXRpb25Db2xvclNwYWNlOjpTUkdCKCksIFBpeGVsRm9ybWF0
OjpCR1JBOCkpOworICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6Y3JlYXRlKGxv
Z2ljYWxTaXplLCBtb2RlLCAxLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4ZWxG
b3JtYXQ6OkJHUkE4KSk7CiAjZW5kaWYKICAgICB9CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFj
aGVkID0gdHJ1ZTsKQEAgLTM1MCw5ICszNDcsOSBAQCB2b2lkIENTU0ZpbHRlcjo6ZGV0ZXJtaW5l
RmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICBsYXN0RWZmZWN0LmRldGVybWluZUZpbHRl
clByaW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIEZsb2F0UmVjdCBzdWJSZWdpb24gPSBsYXN0RWZm
ZWN0Lm1heEVmZmVjdFJlY3QoKTsKICAgICAvLyBBdCBsZWFzdCBvbmUgRmlsdGVyRWZmZWN0IGhh
cyBhIHRvbyBiaWcgaW1hZ2Ugc2l6ZSwgcmVjYWxjdWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRo
IG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIEZsb2F0U2l6ZSBzY2FsZTsKLSAgICBpZiAoSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIHNjYWxlKSkgewotICAg
ICAgICBzZXRGaWx0ZXJSZXNvbHV0aW9uKHNjYWxlKTsKKyAgICBGbG9hdFNpemUgZmlsdGVyU2Nh
bGUgeyAxLCAxIH07CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJS
ZWdpb24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgc2V0RmlsdGVyU2NhbGUoZmls
dGVyU2NhbGUpOwogICAgICAgICBsYXN0RWZmZWN0LmRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1
YnJlZ2lvbigpOwogICAgIH0KIH0KQEAgLTM2MCw4ICszNTcsNiBAQCB2b2lkIENTU0ZpbHRlcjo6
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKIHZvaWQgQ1NTRmlsdGVyOjpjbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKQogewogICAgIG1fc291cmNlR3JhcGhpYy0+Y2xlYXJSZXN1
bHQoKTsKLSAgICBpZiAobV9zb3VyY2VBbHBoYSkKLSAgICAgICAgbV9zb3VyY2VBbHBoYS0+Y2xl
YXJSZXN1bHQoKTsKICAgICBmb3IgKGF1dG8mIGVmZmVjdCA6IG1fZWZmZWN0cykKICAgICAgICAg
ZWZmZWN0LT5jbGVhclJlc3VsdCgpOwogfQpAQCAtNDAwLDkgKzM5NSw5IEBAIEltYWdlQnVmZmVy
KiBDU1NGaWx0ZXI6Om91dHB1dCgpIGNvbnN0CiAKIHZvaWQgQ1NTRmlsdGVyOjpzZXRTb3VyY2VJ
bWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QpCiB7Ci0gICAgbV9zb3Vy
Y2VEcmF3aW5nUmVnaW9uID0gc291cmNlSW1hZ2VSZWN0OworICAgIEZpbHRlcjo6c2V0RmlsdGVy
UmVnaW9uKHNvdXJjZUltYWdlUmVjdCk7CisgICAgRmlsdGVyOjpzZXRTb3VyY2VJbWFnZVJlY3Qo
c291cmNlSW1hZ2VSZWN0KTsKICAgICBzZXRNYXhFZmZlY3RSZWN0cyhzb3VyY2VJbWFnZVJlY3Qp
OwotICAgIHNldEZpbHRlclJlZ2lvbihzb3VyY2VJbWFnZVJlY3QpOwogICAgIG1fZ3JhcGhpY3NC
dWZmZXJBdHRhY2hlZCA9IGZhbHNlOwogfQogCkBAIC00MTcsNyArNDEyLDcgQEAgSW50UmVjdCBD
U1NGaWx0ZXI6Om91dHB1dFJlY3QoKSBjb25zdAogICAgIGF1dG8mIGxhc3RFZmZlY3QgPSBtX2Vm
ZmVjdHMubGFzdCgpLmdldCgpOwogICAgIAogICAgIGlmIChsYXN0RWZmZWN0Lmhhc1Jlc3VsdCgp
IHx8IChtX2ZpbHRlclJlbmRlcmVyICYmIG1fZmlsdGVyUmVuZGVyZXItPmhhc1Jlc3VsdCgpKSkK
LSAgICAgICAgcmV0dXJuIGxhc3RFZmZlY3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVm
ZmVyKEludFJlY3QgeyBtX2ZpbHRlclJlZ2lvbiB9KTsKKyAgICAgICAgcmV0dXJuIGxhc3RFZmZl
Y3QucmVxdWVzdGVkUmVnaW9uT2ZJbnB1dFBpeGVsQnVmZmVyKEludFJlY3QgeyBmaWx0ZXJSZWdp
b24oKSB9KTsKICAgICAKICAgICByZXR1cm4geyB9OwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NT
U0ZpbHRlci5oCmluZGV4IDAwYjkxOTE3YjgwNC4uNWQyYjQ5YWRlMGY1IDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKKysrIGIvU291cmNlL1dlYkNvcmUv
cmVuZGVyaW5nL0NTU0ZpbHRlci5oCkBAIC00NywxMyArNDcsMTEgQEAgY2xhc3MgQ1NTRmlsdGVy
IGZpbmFsIDogcHVibGljIEZpbHRlciB7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiAg
ICAgZnJpZW5kIGNsYXNzIFJlbmRlckxheWVyRmlsdGVyczsKIHB1YmxpYzoKLSAgICBzdGF0aWMg
UmVmPENTU0ZpbHRlcj4gY3JlYXRlKCk7Ci0KLSAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChj
b25zdCBGbG9hdFJlY3QmKTsKLSAgICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJl
Y3QmIGZpbHRlclJlZ2lvbikgeyBtX2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQorICAg
IHN0YXRpYyBSZWY8Q1NTRmlsdGVyPiBjcmVhdGUoZmxvYXQgc2NhbGVGYWN0b3IgPSAxKTsKIAog
ICAgIEltYWdlQnVmZmVyKiBvdXRwdXQoKSBjb25zdDsKIAorICAgIHZvaWQgc2V0U291cmNlSW1h
Z2VSZWN0KGNvbnN0IEZsb2F0UmVjdCYpOwogICAgIGJvb2wgYnVpbGQoUmVuZGVyRWxlbWVudCYs
IGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmLCBGaWx0ZXJDb25zdW1lcik7CiAgICAgdm9pZCBjbGVh
ckludGVybWVkaWF0ZVJlc3VsdHMoKTsKICAgICB2b2lkIGFwcGx5KCk7CkBAIC02NSwxNSArNjMs
NyBAQCBwdWJsaWM6CiAgICAgSW50T3V0c2V0cyBvdXRzZXRzKCkgY29uc3Q7CiAKIHByaXZhdGU6
Ci0gICAgQ1NTRmlsdGVyKCk7Ci0gICAgdmlydHVhbCB+Q1NTRmlsdGVyKCk7Ci0KLSAgICBib29s
IGlzQ1NTRmlsdGVyKCkgY29uc3QgZmluYWwgeyByZXR1cm4gdHJ1ZTsgfQotCi0gICAgRmxvYXRS
ZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fc291cmNlRHJhd2lu
Z1JlZ2lvbjsgfQotCi0gICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbkluVXNl
clNwYWNlKCkgY29uc3QgZmluYWwgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAgICBDU1NG
aWx0ZXIoZmxvYXQgc2NhbGVGYWN0b3IpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gYnVp
bGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYsIEZpbHRlckVmZmVjdCYgcHJldmlvdXNF
ZmZlY3QsIFJlZmVyZW5jZUZpbHRlck9wZXJhdGlvbiYpOwogCkBAIC04OCwxMiArNzgsOCBAQCBw
cml2YXRlOgogCiAgICAgTGF5b3V0UmVjdCBjb21wdXRlU291cmNlSW1hZ2VSZWN0Rm9yRGlydHlS
ZWN0KGNvbnN0IExheW91dFJlY3QmIGZpbHRlckJveFJlY3QsIGNvbnN0IExheW91dFJlY3QmIGRp
cnR5UmVjdCk7CiAKLSAgICBGbG9hdFJlY3QgbV9zb3VyY2VEcmF3aW5nUmVnaW9uOwotICAgIEZs
b2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKLQogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4g
bV9lZmZlY3RzOwogICAgIFJlZjxTb3VyY2VHcmFwaGljPiBtX3NvdXJjZUdyYXBoaWM7Ci0gICAg
UmVmUHRyPEZpbHRlckVmZmVjdD4gbV9zb3VyY2VBbHBoYTsKIAogICAgIG11dGFibGUgSW50T3V0
c2V0cyBtX291dHNldHM7CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9S
ZW5kZXJMYXllckZpbHRlcnMuY3BwIGIvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL1JlbmRlckxh
eWVyRmlsdGVycy5jcHAKaW5kZXggMjUwYTdkNWMwYmFhLi40YjZlY2ZlZWE1MGMgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCkBAIC0xMTgs
MTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmlsdGVyczo6cmVtb3ZlUmVmZXJlbmNlRmls
dGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJGaWx0ZXJzOjpidWlsZEZpbHRlcihSZW5k
ZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVGYWN0b3IsIFJlbmRlcmluZ01vZGUgcmVu
ZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVyKSB7Ci0gICAgICAgIG1fZmlsdGVyID0g
Q1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9maWx0ZXItPnNldEZpbHRlclNjYWxlKHNj
YWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNldFJlbmRlcmluZ01vZGUocmVuZGVyaW5n
TW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZh
Y3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0RmlsdGVyU2NhbGUoc2NhbGVGYWN0b3IpOwot
ICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7Ci0gICAgfQorICAg
IC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRpcmUgZWZmZWN0cyBjaGFpbiBldmVuIGlm
IHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4KKyAgICBtX2ZpbHRlciA9IENTU0ZpbHRl
cjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2ZpbHRlci0+c2V0UmVuZGVyaW5nTW9kZShy
ZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBmaWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJl
bW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBzdGlsbCBhdHRlbXB0IHRvCiAgICAgLy8g
Z28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUuZy4gY29tcG9zaXRpbmcpLCBidXQgbmV2
ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6IHRoaXMgcmVidWlsZHMgdGhlIGVudGly
ZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRlciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgog
ICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVyLCByZW5kZXJlci5zdHlsZSgpLmZpbHRl
cigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVydHkpKQogICAgICAgICBtX2ZpbHRlciA9
IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1Jl
bmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcv
UmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4IDE5NTA5ZDk3MThhZi4uNTM3ZTY1NWVl
NWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jl
c291cmNlRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRl
clNWR1Jlc291cmNlRmlsdGVyLmNwcApAQCAtMTQzLDMxICsxNDMsMjYgQEAgYm9vbCBSZW5kZXJT
VkdSZXNvdXJjZUZpbHRlcjo6YXBwbHlSZXNvdXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwg
Y29uc3QgUmVuZGUKICAgICAgICAgcmV0dXJuIGZhbHNlOwogCiAgICAgLy8gRWxpbWluYXRlIHNo
ZWFyIG9mIHRoZSBhYnNvbHV0ZSB0cmFuc2Zvcm1hdGlvbiBtYXRyaXgsIHRvIGJlIGFibGUgdG8g
cHJvZHVjZSB1bnNoZWFyZWQgdGlsZSBpbWFnZXMgZm9yIGZlVGlsZS4KLSAgICBmaWx0ZXJEYXRh
LT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSA9IEFmZmluZVRyYW5zZm9ybShhYnNvbHV0ZVRy
YW5zZm9ybS54U2NhbGUoKSwgMCwgMCwgYWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCksIDAsIDAp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZShhYnNvbHV0ZVRyYW5zZm9ybS54U2NhbGUoKSwg
YWJzb2x1dGVUcmFuc2Zvcm0ueVNjYWxlKCkpOwogCiAgICAgLy8gRGV0ZXJtaW5lIGFic29sdXRl
IGJvdW5kYXJpZXMgb2YgdGhlIGZpbHRlciBhbmQgdGhlIGRyYXdpbmcgcmVnaW9uLgogICAgIGZp
bHRlckRhdGEtPmRyYXdpbmdSZWdpb24gPSByZW5kZXJlci5zdHJva2VCb3VuZGluZ0JveCgpOwog
ICAgIGZpbHRlckRhdGEtPmRyYXdpbmdSZWdpb24uaW50ZXJzZWN0KGZpbHRlckRhdGEtPmJvdW5k
YXJpZXMpOwotICAgIEZsb2F0UmVjdCBhYnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRh
LT5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybS5tYXBSZWN0KGZpbHRlckRhdGEtPmRyYXdpbmdS
ZWdpb24pOworCisgICAgLy8gRGV0ZXJtaW5lIHNjYWxlIGZhY3RvciBmb3IgZmlsdGVyLiBUaGUg
c2l6ZSBvZiBpbnRlcm1lZGlhdGUgSW1hZ2VCdWZmZXJzIHNob3VsZG4ndCBiZSBiaWdnZXIgdGhh
biBrTWF4RmlsdGVyU2l6ZS4KKyAgICBGbG9hdFJlY3QgYWJzb2x1dGVEcmF3aW5nUmVnaW9uID0g
ZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbjsKKyAgICBhYnNvbHV0ZURyYXdpbmdSZWdpb24uc2Nh
bGUoZmlsdGVyU2NhbGUpOworICAgIEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhhYnNv
bHV0ZURyYXdpbmdSZWdpb24uc2l6ZSgpLCBmaWx0ZXJTY2FsZSk7CiAKICAgICAvLyBDcmVhdGUg
dGhlIFNWR0ZpbHRlciBvYmplY3QuCiAgICAgYm9vbCBwcmltaXRpdmVCb3VuZGluZ0JveE1vZGUg
PSBmaWx0ZXJFbGVtZW50KCkucHJpbWl0aXZlVW5pdHMoKSA9PSBTVkdVbml0VHlwZXM6OlNWR19V
TklUX1RZUEVfT0JKRUNUQk9VTkRJTkdCT1g7Ci0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyID0gU1ZH
RmlsdGVyOjpjcmVhdGUoZmlsdGVyRGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0sIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlckRhdGEtPmJvdW5k
YXJpZXMsIHByaW1pdGl2ZUJvdW5kaW5nQm94TW9kZSk7CisgICAgZmlsdGVyRGF0YS0+ZmlsdGVy
ID0gU1ZHRmlsdGVyOjpjcmVhdGUoZmlsdGVyU2NhbGUsIGFic29sdXRlRHJhd2luZ1JlZ2lvbiwg
ZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgdGFyZ2V0Qm91bmRpbmdCb3gsIHByaW1pdGl2ZUJvdW5k
aW5nQm94TW9kZSk7CiAKICAgICAvLyBDcmVhdGUgYWxsIHJlbGV2YW50IGZpbHRlciBwcmltaXRp
dmVzLgogICAgIGZpbHRlckRhdGEtPmJ1aWxkZXIgPSBidWlsZFByaW1pdGl2ZXMoKmZpbHRlckRh
dGEtPmZpbHRlcik7CiAgICAgaWYgKCFmaWx0ZXJEYXRhLT5idWlsZGVyKQogICAgICAgICByZXR1
cm4gZmFsc2U7CiAKLSAgICAvLyBEZXRlcm1pbmUgc2NhbGUgZmFjdG9yIGZvciBmaWx0ZXIuIFRo
ZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMgc2hvdWxkbid0IGJlIGJpZ2dlciB0
aGFuIGtNYXhGaWx0ZXJTaXplLgotICAgIEZsb2F0UmVjdCB0ZW1wU291cmNlUmVjdCA9IGFic29s
dXRlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFNpemUgc2NhbGUoMSwgMSk7Ci0gICAgSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHRlbXBTb3VyY2VSZWN0LnNpemUoKSwgc2NhbGUpOwot
ICAgIHRlbXBTb3VyY2VSZWN0LnNjYWxlKHNjYWxlLndpZHRoKCksIHNjYWxlLmhlaWdodCgpKTsK
LQotICAgIC8vIFNldCB0aGUgc2NhbGUgbGV2ZWwgaW4gU1ZHRmlsdGVyLgotICAgIGZpbHRlckRh
dGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7Ci0KICAgICBzdGF0aWMgY29u
c3QgdW5zaWduZWQgbWF4VG90YWxPZkVmZmVjdElucHV0cyA9IDEwMDsKICAgICBGaWx0ZXJFZmZl
Y3QqIGxhc3RFZmZlY3QgPSBmaWx0ZXJEYXRhLT5idWlsZGVyLT5sYXN0RWZmZWN0KCk7CiAgICAg
aWYgKCFsYXN0RWZmZWN0IHx8IGxhc3RFZmZlY3QtPnRvdGFsTnVtYmVyT2ZFZmZlY3RJbnB1dHMo
KSA+IG1heFRvdGFsT2ZFZmZlY3RJbnB1dHMpCkBAIC0xNzcsMTAgKzE3MiwxMSBAQCBib29sIFJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRl
cmVyLCBjb25zdCBSZW5kZQogCiAgICAgbGFzdEVmZmVjdC0+ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0
aXZlU3VicmVnaW9uKCk7CiAgICAgRmxvYXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QtPm1h
eEVmZmVjdFJlY3QoKTsKKwogICAgIC8vIEF0IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEg
dG9vIGJpZyBpbWFnZSBzaXplLAogICAgIC8vIHJlY2FsY3VsYXRlIHRoZSBlZmZlY3Qgc2l6ZXMg
d2l0aCBuZXcgc2NhbGUgZmFjdG9ycy4KLSAgICBpZiAoSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0Ns
YW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIHNjYWxlKSkgewotICAgICAgICBmaWx0ZXJEYXRhLT5m
aWx0ZXItPnNldEZpbHRlclJlc29sdXRpb24oc2NhbGUpOworICAgIGlmIChJbWFnZUJ1ZmZlcjo6
c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgZmlsdGVyU2NhbGUpKSB7CisgICAg
ICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyU2NhbGUoZmlsdGVyU2NhbGUpOwogICAg
ICAgICBsYXN0RWZmZWN0LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAg
ICB9CiAKQEAgLTE5NCw5ICsxOTAsNyBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjph
cHBseVJlc291cmNlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgIH0K
IAogICAgIC8vIENoYW5nZSB0aGUgY29vcmRpbmF0ZSB0cmFuc2Zvcm1hdGlvbiBhcHBsaWVkIHRv
IHRoZSBmaWx0ZXJlZCBlbGVtZW50IHRvIHJlZmxlY3QgdGhlIHJlc29sdXRpb24gb2YgdGhlIGZp
bHRlci4KLSAgICBBZmZpbmVUcmFuc2Zvcm0gZWZmZWN0aXZlVHJhbnNmb3JtOwotICAgIGVmZmVj
dGl2ZVRyYW5zZm9ybS5zY2FsZShzY2FsZS53aWR0aCgpLCBzY2FsZS5oZWlnaHQoKSk7Ci0gICAg
ZWZmZWN0aXZlVHJhbnNmb3JtLm11bHRpcGx5KGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICBBZmZpbmVUcmFuc2Zvcm0gZWZmZWN0aXZlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGZpbHRlclNjYWxlLndpZHRoKCksIDAsIDAsIGZpbHRlclNjYWxlLmhlaWdo
dCgpLCAwLCAwKTsKIAogICAgIGF1dG8gcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmVyLnNldHRpbmdz
KCkuYWNjZWxlcmF0ZWRGaWx0ZXJzRW5hYmxlZCgpID8gUmVuZGVyaW5nTW9kZTo6QWNjZWxlcmF0
ZWQgOiBSZW5kZXJpbmdNb2RlOjpVbmFjY2VsZXJhdGVkOwogI2lmIEVOQUJMRShERVNUSU5BVElP
Tl9DT0xPUl9TUEFDRV9MSU5FQVJfU1JHQikKQEAgLTI4OSwxMyArMjgzLDkgQEAgdm9pZCBSZW5k
ZXJTVkdSZXNvdXJjZUZpbHRlcjo6cG9zdEFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIEdyYXBoaWMKIAogICAgICAgICBJbWFnZUJ1ZmZlciogcmVzdWx0SW1hZ2UgPSBsYXN0
RWZmZWN0LT5pbWFnZUJ1ZmZlclJlc3VsdCgpOwogICAgICAgICBpZiAocmVzdWx0SW1hZ2UpIHsK
LSAgICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29s
dXRlVHJhbnNmb3JtLmludmVyc2UoKS52YWx1ZV9vcihBZmZpbmVUcmFuc2Zvcm0oKSkpOwotCi0g
ICAgICAgICAgICBjb250ZXh0LT5zY2FsZShGbG9hdFNpemUoMSAvIGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJSZXNvbHV0aW9uKCkud2lkdGgoKSwgMSAvIGZpbHRlckRhdGEuZmlsdGVyLT5maWx0
ZXJSZXNvbHV0aW9uKCkuaGVpZ2h0KCkpKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZs
b2F0U2l6ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCkud2lkdGgoKSwgMSAv
IGZpbHRlckRhdGEuZmlsdGVyLT5maWx0ZXJTY2FsZSgpLmhlaWdodCgpKSk7CiAgICAgICAgICAg
ICBjb250ZXh0LT5kcmF3SW1hZ2VCdWZmZXIoKnJlc3VsdEltYWdlLCBsYXN0RWZmZWN0LT5hYnNv
bHV0ZVBhaW50UmVjdCgpKTsKLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEu
ZmlsdGVyLT5maWx0ZXJSZXNvbHV0aW9uKCkpOwotCi0gICAgICAgICAgICBjb250ZXh0LT5jb25j
YXRDVE0oZmlsdGVyRGF0YS5zaGVhckZyZWVBYnNvbHV0ZVRyYW5zZm9ybSk7CisgICAgICAgICAg
ICBjb250ZXh0LT5zY2FsZShmaWx0ZXJEYXRhLmZpbHRlci0+ZmlsdGVyU2NhbGUoKSk7CiAgICAg
ICAgIH0KICAgICB9CiAgICAgZmlsdGVyRGF0YS5zb3VyY2VHcmFwaGljQnVmZmVyID0gbnVsbHB0
cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJl
ZUFzVGV4dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVB
c1RleHQuY3BwCmluZGV4IGM2NTAyMWJlZTAzNS4uYTJkMzVmOWFjN2EzIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKQEAg
LTQzMiw3ICs0MzIsOCBAQCB2b2lkIHdyaXRlU1ZHUmVzb3VyY2VDb250YWluZXIoVGV4dFN0cmVh
bSYgdHMsIGNvbnN0IFJlbmRlclNWR1Jlc291cmNlQ29udGFpbmVyJgogICAgICAgICB0cyA8PCAi
XG4iOwogICAgICAgICAvLyBDcmVhdGluZyBhIHBsYWNlaG9sZGVyIGZpbHRlciB3aGljaCBpcyBw
YXNzZWQgdG8gdGhlIGJ1aWxkZXIuCiAgICAgICAgIEZsb2F0UmVjdCBkdW1teVJlY3Q7Ci0gICAg
ICAgIGF1dG8gZHVtbXlGaWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShBZmZpbmVUcmFuc2Zvcm0o
KSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwgdHJ1ZSk7CisgICAgICAgIEZsb2F0
U2l6ZSBkdW1teVNjYWxlKDEsIDEpOworICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0gU1ZHRmls
dGVyOjpjcmVhdGUoZHVtbXlTY2FsZSwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIGR1bW15UmVjdCwg
dHJ1ZSk7CiAgICAgICAgIGlmIChhdXRvIGJ1aWxkZXIgPSBmaWx0ZXIuYnVpbGRQcmltaXRpdmVz
KGR1bW15RmlsdGVyLmdldCgpKSkgewogICAgICAgICAgICAgVGV4dFN0cmVhbTo6SW5kZW50U2Nv
cGUgaW5kZW50U2NvcGUodHMpOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3Jh
cGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGlj
cy9maWx0ZXJzL1NWR0ZFSW1hZ2UuY3BwCmluZGV4IDIzNmU3MWYyZTNiYy4uNDVmN2MyOTRhZGI5
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUlt
YWdlLmNwcApAQCAtNjIsMTMgKzYyLDE2IEBAIFJlZjxGRUltYWdlPiBGRUltYWdlOjpjcmVhdGVX
aXRoSVJJUmVmZXJlbmNlKEZpbHRlciYgZmlsdGVyLCBUcmVlU2NvcGUmIHRyZWVTY29wCiAKIHZv
aWQgRkVJbWFnZTo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewotICAgIEZsb2F0UmVj
dCBwYWludFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoZmlsdGVy
UHJpbWl0aXZlU3VicmVnaW9uKCkpOworICAgIEZsb2F0UmVjdCBwYWludFJlY3QgPSBmaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24oKTsKKyAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVy
U2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IHNyY1JlY3Q7CiAgICAgaWYgKG1faW1hZ2UpIHsKICAg
ICAgICAgc3JjUmVjdC5zZXRTaXplKG1faW1hZ2UtPnNpemUoKSk7CiAgICAgICAgIG1fcHJlc2Vy
dmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0KHBhaW50UmVjdCwgc3JjUmVjdCk7Ci0gICAgfSBl
bHNlIGlmIChSZW5kZXJFbGVtZW50KiByZW5kZXJlciA9IHJlZmVyZW5jZWRSZW5kZXJlcigpKQot
ICAgICAgICBzcmNSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKS5tYXBSZWN0KHJl
bmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKKyAgICB9IGVsc2UgaWYg
KFJlbmRlckVsZW1lbnQqIHJlbmRlcmVyID0gcmVmZXJlbmNlZFJlbmRlcmVyKCkpIHsKKyAgICAg
ICAgc3JjUmVjdCA9IHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOwor
ICAgICAgICBzcmNSZWN0LnNjYWxlKGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgIH0KIAog
ICAgIGlmIChjbGlwc1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4
RWZmZWN0UmVjdCgpKTsKQEAgLTEwMCwxMiArMTAzLDE0IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKCkKICAgICBpZiAoIXJlc3VsdEltYWdlKQogICAgICAgICByZXR1cm47
CiAKLSAgICBGbG9hdFJlY3QgZGVzdFJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgp
Lm1hcFJlY3QoZmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkpOworICAgIEZsb2F0UmVjdCBkZXN0
UmVjdCA9IGZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbigpOworICAgIGRlc3RSZWN0LnNjYWxlKGZp
bHRlcigpLmZpbHRlclNjYWxlKCkpOwogCiAgICAgRmxvYXRSZWN0IHNyY1JlY3Q7Ci0gICAgaWYg
KHJlbmRlcmVyKQotICAgICAgICBzcmNSZWN0ID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0o
KS5tYXBSZWN0KHJlbmRlcmVyLT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpKTsKLSAg
ICBlbHNlIHsKKyAgICBpZiAocmVuZGVyZXIpIHsKKyAgICAgICAgc3JjUmVjdCA9IHJlbmRlcmVy
LT5yZXBhaW50UmVjdEluTG9jYWxDb29yZGluYXRlcygpOworICAgICAgICBzcmNSZWN0LnNjYWxl
KGZpbHRlcigpLmZpbHRlclNjYWxlKCkpOworICAgIH0gZWxzZSB7CiAgICAgICAgIHNyY1JlY3Qg
PSBGbG9hdFJlY3QoRmxvYXRQb2ludCgpLCBtX2ltYWdlLT5zaXplKCkpOwogICAgICAgICBtX3By
ZXNlcnZlQXNwZWN0UmF0aW8udHJhbnNmb3JtUmVjdChkZXN0UmVjdCwgc3JjUmVjdCk7CiAgICAg
fQpAQCAtMTE2LDggKzEyMSw3IEBAIHZvaWQgRkVJbWFnZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJl
KCkKICAgICBhdXRvJiBjb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKIAogICAgIGlm
IChyZW5kZXJlcikgewotICAgICAgICBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtID0gZmlsdGVyKCkuYWJzb2x1dGVUcmFuc2Zvcm0oKTsKLSAgICAgICAgY29udGV4dC5j
b25jYXRDVE0oYWJzb2x1dGVUcmFuc2Zvcm0pOworICAgICAgICBjb250ZXh0LnNjYWxlKGZpbHRl
cigpLmZpbHRlclNjYWxlKCkpOwogCiAgICAgICAgIFJlZlB0ciBjb250ZXh0Tm9kZSA9IGRvd25j
YXN0PFNWR0VsZW1lbnQ+KHJlbmRlcmVyLT5lbGVtZW50KCkpOwogICAgICAgICBpZiAoY29udGV4
dE5vZGUtPmhhc1JlbGF0aXZlTGVuZ3RocygpKSB7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvc3Zn
L2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcAppbmRleCA4MmU5NDM2NzIzZTguLjczMmVi
MTg4YTViYiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMv
U1ZHRmlsdGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuY3BwCkBAIC0yNCwyNyArMjQsMjQgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewog
Ci1TVkdGaWx0ZXI6OlNWR0ZpbHRlcihjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIGFic29sdXRlVHJh
bnNmb3JtLCBjb25zdCBGbG9hdFJlY3QmIGFic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbiwgY29u
c3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJS
ZWdpb24sIGJvb2wgZWZmZWN0QkJveE1vZGUpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpD
U1NGaWx0ZXIsIGFic29sdXRlVHJhbnNmb3JtKQotICAgICwgbV9hYnNvbHV0ZVNvdXJjZURyYXdp
bmdSZWdpb24oYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKQorU1ZHRmlsdGVyOjpTVkdGaWx0
ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJ
bWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3Qm
IHRhcmdldEJvdW5kaW5nQm94LCBib29sIGVmZmVjdEJCb3hNb2RlKQorICAgIDogRmlsdGVyKEZp
bHRlcjo6VHlwZTo6U1ZHRmlsdGVyLCBmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0
ZXJSZWdpb24pCiAgICAgLCBtX3RhcmdldEJvdW5kaW5nQm94KHRhcmdldEJvdW5kaW5nQm94KQot
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgICwgbV9lZmZlY3RCQm94TW9k
ZShlZmZlY3RCQm94TW9kZSkKIHsKLSAgICBtX2Fic29sdXRlRmlsdGVyUmVnaW9uID0gYWJzb2x1
dGVUcmFuc2Zvcm0ubWFwUmVjdChmaWx0ZXJSZWdpb24pOwogfQogCi1GbG9hdFNpemUgU1ZHRmls
dGVyOjpzY2FsZWRCeUZpbHRlclJlc29sdXRpb24oRmxvYXRTaXplIHNpemUpIGNvbnN0CitGbG9h
dFNpemUgU1ZHRmlsdGVyOjpzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25z
dAogewogICAgIGlmIChtX2VmZmVjdEJCb3hNb2RlKQogICAgICAgICBzaXplID0gc2l6ZSAqIG1f
dGFyZ2V0Qm91bmRpbmdCb3guc2l6ZSgpOwogCi0gICAgcmV0dXJuIEZpbHRlcjo6c2NhbGVkQnlG
aWx0ZXJSZXNvbHV0aW9uKHNpemUpICogbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbi5zaXplKCkgLyBt
X2ZpbHRlclJlZ2lvbi5zaXplKCk7CisgICAgcmV0dXJuIEZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShzaXplKTsKIH0KIAotUmVmPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNv
bHV0ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdC
b3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQor
UmVmPFNWR0ZpbHRlcj4gU1ZHRmlsdGVyOjpjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJT
Y2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYg
ZmlsdGVyUmVnaW9uLCBjb25zdCBGbG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBib29sIGVm
ZmVjdEJCb3hNb2RlKQogewotICAgIHJldHVybiBhZG9wdFJlZigqbmV3IFNWR0ZpbHRlcihhYnNv
bHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyUmVnaW9uLCBlZmZlY3RCQm94TW9kZSkpOworICAgIHJldHVybiBhZG9wdFJl
ZigqbmV3IFNWR0ZpbHRlcihmaWx0ZXJTY2FsZSwgc291cmNlSW1hZ2VSZWN0LCBmaWx0ZXJSZWdp
b24sIHRhcmdldEJvdW5kaW5nQm94LCBlZmZlY3RCQm94TW9kZSkpOwogfQogCiB9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmls
dGVycy9TVkdGaWx0ZXIuaCBiL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NW
R0ZpbHRlci5oCmluZGV4IDUyNTg4NmFmMzA4NC4uNTA4MTFlNmZiNDlhIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaApAQCAtMjAsOSArMjAs
NyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUgIkFmZmluZVRyYW5zZm9ybS5oIgogI2lu
Y2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRlckVmZmVjdC5oIgogI2luY2x1ZGUgIkZs
b2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4KICNpbmNsdWRlIDx3dGYvVHlwZUNhc3Rz
Lmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBjbGFzcyBTVkdG
aWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNW
R0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYs
IGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGJvb2wpOworICAgIHN0YXRpYyBS
ZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3Qg
RmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRp
bmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2Rl
KTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFs
IHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAgRmxvYXRSZWN0IGZpbHRlclJlZ2lvbigp
IGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVGaWx0ZXJSZWdpb247IH0KKyAgICBGbG9h
dFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwogCi0gICAg
RmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUpIGNvbnN0IGZpbmFs
OwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJu
IG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9CiAgICAgRmxvYXRSZWN0IHRhcmdldEJv
dW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJnZXRCb3VuZGluZ0JveDsgfQogCi0gICAg
Ym9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIHRydWU7IH0KLQogcHJpdmF0
ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9y
bSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZs
b2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9u
LCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdGaWx0ZXIoY29uc3QgRmxvYXRTaXplJiBm
aWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0
UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBi
b29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBtX2Fic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJnZXRCb3VuZGluZ0JveDsKLSAgICBGbG9h
dFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdp
b247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwogfTsKIAo=
</data>
<flag name="review"
          id="467317"
          type_id="1"
          status="+"
          setter="simon.fraser"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443769</attachid>
            <date>2021-11-09 19:40:18 -0800</date>
            <delta_ts>2021-11-09 20:08:41 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211109194017.patch</filename>
            <type>text/plain</type>
            <size>53765</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjc2
ZWM5Y2ZlZTM2YTk4NTBkNzkyZWMyOTk1NzUzZWJiM2I0ZDJlNzkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0xMS0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwIHRoZSBo
aWRwaSByZWZlcmVuY2UgZmlsdGVyIHRlc3RzIHRpbGwgd2UgY29ubmVjdCB0aGUgRmlsdGVyRWZm
ZWN0cworICAgICAgICB0byB0aGUgY29ycmVjdCBwYXJlbnQgRmlsdGVyLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIyMDEpOiBTYWZhcmkgc2hvd2Vk
IHJlZCBkaXN0b3J0aW9uIG9uIHdlYnZpZXcgYWZ0ZXIgdXNpbmcgV2ViIEluc3BlY3RvciwgcmV0
dXJuaW5nIGZyb20gYW5vdGhlciBhcHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA0YzcwNWVkMGYy
OWJkMmE5YzgwM2E3OGYxZDUwNTZiMjVmZmMwYWIuLjU2ZTAyYTEzZWVlOWFhYjFkMmFjMTE0MjBi
ZTdkNDgwNTQxZTQ3NzggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTIwOSwzICs1MjA5LDExIEBA
IGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxp
bmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBT
a2lwIF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tp
cCBdCisKKyMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9u
Y2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZlZAord2Via2l0Lm9yZy9iLzIzMjcwNSBj
c3MzL2ZpbHRlcnMvaGlkcGktZmVDb252b2x2ZU1hdHJpeC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9oaWRwaS1maWx0ZXItaXMtb24t
c3VicGl4ZWwtcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtY29tcG9uZW50LXRyYW5zZmVyLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLW1v
cnBob2xvZ3kuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBm
YXN0L2hpZHBpL2ZpbHRlcnMtc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLXR1cmJ1bGVuY2UuaHRtbCBbIEltYWdl
T25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443772</attachid>
            <date>2021-11-09 20:08:16 -0800</date>
            <delta_ts>2021-11-09 21:58:33 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211109200815.patch</filename>
            <type>text/plain</type>
            <size>54137</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjc2
ZWM5Y2ZlZTM2YTk4NTBkNzkyZWMyOTk1NzUzZWJiM2I0ZDJlNzkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0xMS0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwIHRoZSBo
aWRwaSByZWZlcmVuY2UgZmlsdGVyIHRlc3RzIHRpbGwgd2UgY29ubmVjdCB0aGUgRmlsdGVyRWZm
ZWN0cworICAgICAgICB0byB0aGUgY29ycmVjdCBwYXJlbnQgRmlsdGVyLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIyMDEpOiBTYWZhcmkgc2hvd2Vk
IHJlZCBkaXN0b3J0aW9uIG9uIHdlYnZpZXcgYWZ0ZXIgdXNpbmcgV2ViIEluc3BlY3RvciwgcmV0
dXJuaW5nIGZyb20gYW5vdGhlciBhcHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA0YzcwNWVkMGYy
OWJkMmE5YzgwM2E3OGYxZDUwNTZiMjVmZmMwYWIuLjBhZWYwNzA3ZDM3Y2ZmZmMwMzI1YjUzY2Qx
NDVhMDU1YTEzMTQ5MDkgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTIwOSwzICs1MjA5LDE2IEBA
IGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxp
bmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBT
a2lwIF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tp
cCBdCisKKyMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9u
Y2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZlZAord2Via2l0Lm9yZy9iLzIzMjcwNSBj
c3MzL2ZpbHRlcnMvaGlkcGktZmVDb252b2x2ZU1hdHJpeC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVy
ZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9oaWRwaS1maWx0ZXItaXMtb24t
c3VicGl4ZWwtcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtYmx1ci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBd
Cit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1jb21wb25lbnQtdHJhbnNm
ZXIuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hp
ZHBpL2ZpbHRlcnMtaHVlLXJvdGF0ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1pbnZlcnQuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtbW9ycGhvbG9n
eS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlk
cGkvZmlsdGVycy1tdWx0aXBsZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3Jn
L2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1yZWZlcmVuY2UuaHRtbCBbIEltYWdlT25seUZh
aWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtc2hhZG93Lmh0
bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9m
aWx0ZXJzLXR1cmJ1bGVuY2UuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443775</attachid>
            <date>2021-11-09 21:58:16 -0800</date>
            <delta_ts>2021-11-10 01:25:59 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211109215815.patch</filename>
            <type>text/plain</type>
            <size>56639</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjc2
ZWM5Y2ZlZTM2YTk4NTBkNzkyZWMyOTk1NzUzZWJiM2I0ZDJlNzkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0xMS0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwIHRoZSBo
aWRwaSByZWZlcmVuY2UgZmlsdGVyIHRlc3RzIHRpbGwgd2UgY29ubmVjdCB0aGUgRmlsdGVyRWZm
ZWN0cworICAgICAgICB0byB0aGUgY29ycmVjdCBwYXJlbnQgRmlsdGVyLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIyMDEpOiBTYWZhcmkgc2hvd2Vk
IHJlZCBkaXN0b3J0aW9uIG9uIHdlYnZpZXcgYWZ0ZXIgdXNpbmcgV2ViIEluc3BlY3RvciwgcmV0
dXJuaW5nIGZyb20gYW5vdGhlciBhcHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA0YzcwNWVkMGYy
OWJkMmE5YzgwM2E3OGYxZDUwNTZiMjVmZmMwYWIuLjdjNzU2YjA1ZWFlZjQ1YzVjNjY2ZGI1M2Fi
M2ViMjNmMmJiZWI2NjggMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTIwOSwzICs1MjA5LDQ1IEBA
IGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxp
bmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBT
a2lwIF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tp
cCBdCisKKyMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9u
Y2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZlZAord2Via2l0Lm9yZy9iLzIzMjcwNSBj
b21wb3NpdGluZy9maWx0ZXJzL2Ryb3Atc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgY29tcG9zaXRpbmcvZmlsdGVycy9zaW1wbGUtaW1hZ2Utd2l0
aC1zdmctZmlsdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRp
dXMtYW5kLXJlZmxlY3Rpb24tcmVtb3ZlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtp
dC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy5o
dG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVy
cy9jc3Mtb3BhY2l0eS13aXRoLWRyb3Atc2hhZG93Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2Ryb3Atc2hhZG93Lmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1i
cmlnaHRuZXNzLXNxdWFyZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3QtY29udHJhc3Qtc3F1YXJlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1ncmF5
c2NhbGUtc3F1YXJlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1odWUtcm90YXRlLXNxdWFyZS5odG1sIFsgSW1hZ2VPbmx5
RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3QtaW52ZXJ0
LXNxdWFyZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNz
czMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWxvY2FsLXVybC13aXRoLWJhc2UuaHRtbCBbIElt
YWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvZWZmZWN0
LXNhdHVyYXRlLXNxdWFyZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3Qtc2VwaWEtc3F1YXJlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRlci1pcy1vbi1z
dWJwaXhlbC1wb3NpdGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGNzczMvZmlsdGVycy9maWx0ZXItb24tb3ZlcmZsb3ctaGlkZGVuLmh0bWwgWyBJbWFn
ZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRlcnMt
b24tc3ZnLXJvb3QuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcw
NSBjc3MzL2ZpbHRlcnMvaGlkcGktZmVDb252b2x2ZU1hdHJpeC5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9oaWRwaS1maWx0ZXItaXMt
b24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9y
Zy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvaW52YWxpZGF0ZS1zb3VyY2VBbHBoYS5odG1sIFsgSW1h
Z2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9udWxsLWVm
ZmVjdC1jaGVjay5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IGNzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLXNldC1maWx0ZXItcmVnaW9ucy5odG1sIFsg
SW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvbWFza2luZy9jbGlw
LXBhdGgtZmlsdGVyLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgZmFzdC9maWx0ZXItaW1hZ2UvZmlsdGVyLWltYWdlLmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJl
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxw
aGEuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2dy
YWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50
Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRw
aS9maWx0ZXJzLWFuZC1pbWFnZS1idWZmZXItcmVzb2x1dGlvbi5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1ibHVyLmh0bWwg
WyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0
ZXJzLWNvbXBvbmVudC10cmFuc2Zlci5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQu
b3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1odWUtcm90YXRlLmh0bWwgWyBJbWFnZU9u
bHlGYWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWludmVy
dC5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlk
cGkvZmlsdGVycy1tb3JwaG9sb2d5Lmh0bWwgWyBJbWFnZU9ubHlGYWlsdXJlIF0KK3dlYmtpdC5v
cmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLW11bHRpcGxlLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLXJlZmVyZW5j
ZS5odG1sIFsgSW1hZ2VPbmx5RmFpbHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlk
cGkvZmlsdGVycy1zaGFkb3cuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9i
LzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtdHVyYnVsZW5jZS5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvbXVsdGljb2wvZmlsdGVyLWluLWNvbHVt
bnMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBodHRwL3Rl
c3RzL2Nzcy9maWx0ZXJzLW9uLWlmcmFtZXMuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQord2Vi
a2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9ibGluay9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVy
ZW5jZS1hZGQtaHcuaHRtbCBbIEltYWdlT25seUZhaWx1cmUgXQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443781</attachid>
            <date>2021-11-10 01:25:30 -0800</date>
            <delta_ts>2021-11-10 07:21:31 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211110012529.patch</filename>
            <type>text/plain</type>
            <size>57042</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjc2
ZWM5Y2ZlZTM2YTk4NTBkNzkyZWMyOTk1NzUzZWJiM2I0ZDJlNzkgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwx
NiBAQAorMjAyMS0xMS0wOSAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBTa2lwIHRoZSBo
aWRwaSByZWZlcmVuY2UgZmlsdGVyIHRlc3RzIHRpbGwgd2UgY29ubmVjdCB0aGUgRmlsdGVyRWZm
ZWN0cworICAgICAgICB0byB0aGUgY29ycmVjdCBwYXJlbnQgRmlsdGVyLgorCisgICAgICAgICog
VGVzdEV4cGVjdGF0aW9uczoKKwogMjAyMS0xMS0wOSAgQW50b2luZSBRdWludCAgPGdyYW91dHNA
d2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9OKHIyNzIyMDEpOiBTYWZhcmkgc2hvd2Vk
IHJlZCBkaXN0b3J0aW9uIG9uIHdlYnZpZXcgYWZ0ZXIgdXNpbmcgV2ViIEluc3BlY3RvciwgcmV0
dXJuaW5nIGZyb20gYW5vdGhlciBhcHAKZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRpb25zCmluZGV4IDA0YzcwNWVkMGYy
OWJkMmE5YzgwM2E3OGYxZDUwNTZiMjVmZmMwYWIuLjIyNDc4ZDcwOTA2ZjZkYmI0MDE1MWYzNjhl
YTI3ZTczYzI0NDNiMTEgMTAwNjQ0Ci0tLSBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtNTIwOSwzICs1MjA5LDU1IEBA
IGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lucyBbIFNraXAgXQogaW1wb3J0ZWQvYmxp
bmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxlY3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBT
a2lwIF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBsdWdpbi1kb2N1bWVudC5odG1sIFsgU2tp
cCBdCisKKyMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFpbHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9u
Y2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZlZAord2Via2l0Lm9yZy9iLzIzMjcwNSBj
b21wb3NpdGluZy9maWx0ZXJzL2Ryb3Atc2hhZG93Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgY29tcG9zaXRpbmcvZmlsdGVycy9zaW1wbGUtaW1hZ2Utd2l0aC1zdmctZmlsdGVy
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2JhY2tkcm9w
L2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRpdXMtYW5kLXJlZmxlY3Rpb24tcmVtb3Zl
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2NvbG9yLWlu
dGVycG9sYXRpb24tZmlsdGVycy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNz
czMvZmlsdGVycy9jc3Mtb3BhY2l0eS13aXRoLWRyb3Atc2hhZG93Lmh0bWwgWyBTa2lwIF0KK3dl
YmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2Ryb3Atc2hhZG93Lmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1icmlnaHRuZXNzLXNxdWFy
ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3Qt
Y29udHJhc3Qtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9m
aWx0ZXJzL2VmZmVjdC1ncmF5c2NhbGUtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1odWUtcm90YXRlLXNxdWFyZS5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3QtaW52ZXJ0LXNxdWFy
ZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3Qt
cmVmZXJlbmNlLWxvY2FsLXVybC13aXRoLWJhc2UuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9i
LzIzMjcwNSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXNhdHVyYXRlLXNxdWFyZS5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3Qtc2VwaWEtc3F1YXJlLmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRlci1pcy1v
bi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNz
czMvZmlsdGVycy9maWx0ZXItb24tb3ZlcmZsb3ctaGlkZGVuLmh0bWwgWyBTa2lwIF0KK3dlYmtp
dC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRlcnMtb24tc3ZnLXJvb3QuaHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvaGlkcGktZmVDb252b2x2ZU1h
dHJpeC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9oaWRw
aS1maWx0ZXItaXMtb24tc3VicGl4ZWwtcG9zaXRpb24uaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvaW52YWxpZGF0ZS1zb3VyY2VBbHBoYS5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9udWxsLWVmZmVjdC1jaGVjay5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9yZWZlcmVuY2Ut
ZmlsdGVyLXNldC1maWx0ZXItcmVnaW9ucy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMy
NzA1IGNzczMvbWFza2luZy9jbGlwLXBhdGgtZmlsdGVyLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5v
cmcvYi8yMzI3MDUgZmFzdC9maWx0ZXItaW1hZ2UvZmlsdGVyLWltYWdlLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2dyYWRpZW50cy9jb25pYy1n
cmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWFuZC1pbWFnZS1idWZmZXItcmVzb2x1dGlvbi5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1ibHVy
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWNv
bXBvbmVudC10cmFuc2Zlci5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3Qv
aGlkcGkvZmlsdGVycy1odWUtcm90YXRlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWludmVydC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1tb3JwaG9sb2d5Lmh0bWwgWyBTa2lwIF0KK3dlYmtp
dC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLW11bHRpcGxlLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLXJlZmVyZW5jZS5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1zaGFkb3cuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtdHVyYnVs
ZW5jZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvbXVsdGljb2wvZmls
dGVyLWluLWNvbHVtbnMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBodHRwL3Rl
c3RzL2Nzcy9maWx0ZXJzLW9uLWlmcmFtZXMuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIz
MjcwNSBpbXBvcnRlZC9ibGluay9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1hZGQtaHcu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9ibGluay9jc3MzL2Zp
bHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vbi10cmFuc3BhcmVudC1lbGVtZW50Lmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvYmxpbmsvY3NzMy9maWx0ZXJzL2VmZmVj
dC1yZWZlcmVuY2Utc291cmNlLWFscGhhLWh3Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MzI3MDUgaW1wb3J0ZWQvYmxpbmsvc3ZnL2ZpbHRlcnMvZmlsdGVyLWh1Z2UtY2xhbXBpbmcuc3Zn
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL21vemlsbGEvc3ZnL3N2Zy1l
ZmZlY3RzLWFyZWEtdW56b29tZWQueGh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUg
aW1wb3J0ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVjdHMtYXJlYS16b29tZWQtaW4ueGh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVj
dHMtYXJlYS16b29tZWQtb3V0LnhodG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGlt
cG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3NzL2Nzcy1vdmVyZmxvdy9vdmVyZmxvdy1z
Y3JvbGwtcmVzaXplLXZpc2liaWxpdHktaGlkZGVuLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgc3ZnL2N1c3RvbS9mZUNvbG9yTWF0cml4LXZhbHVlcy1sZWFkaW5nLXNwYWNlcy5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IHN2Zy9jdXN0b20vcmVzb3VyY2VzLWNz
cy1zY2FsZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBzdmcvZmlsdGVycy9i
aWctc2l6ZWQtb2ZmLXZpZXdwb3J0LWZpbHRlci5zdmcgWyBTa2lwIF0K
</data>
<flag name="commit-queue"
          id="468615"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443814</attachid>
            <date>2021-11-10 06:50:56 -0800</date>
            <delta_ts>2021-11-10 10:48:19 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211110065055.patch</filename>
            <type>text/plain</type>
            <size>59816</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjJj
MDZmZWU1YjdiMmIwMmYzM2E5MzE5MDdmYmFhZTJhMTUyZmNiZGMgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMS0xMS0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICAqIFRlc3RFeHBl
Y3RhdGlvbnM6CisgICAgICAgIFNraXAgdGhlIGhpZHBpIHJlZmVyZW5jZSBmaWx0ZXIgdGVzdHMg
dGlsbCB3ZSBjb25uZWN0IHRoZSBGaWx0ZXJFZmZlY3RzCisgICAgICAgIHRvIHRoZSBjb3JyZWN0
IHBhcmVudCBGaWx0ZXIuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9u
czoKKyAgICAgICAgKiBwbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9uczoKKyAgICAgICAgUmVt
b3ZlIHVubmVjZXNzYXJ5IHVuLXNraXBwaW5nIGZvciBjb25pYy1ncmFkaWVudHMgdGVzdHMgc2lu
Y2UgdGhleSB3ZXJlCisgICAgICAgIG5vdCBza2lwcGVkIGdsb2JhbGx5LgorCiAyMDIxLTExLTA5
ICBBbnRvaW5lIFF1aW50ICA8Z3Jhb3V0c0B3ZWJraXQub3JnPgogCiAgICAgICAgIFJFR1JFU1NJ
T04ocjI3MjIwMSk6IFNhZmFyaSBzaG93ZWQgcmVkIGRpc3RvcnRpb24gb24gd2VidmlldyBhZnRl
ciB1c2luZyBXZWIgSW5zcGVjdG9yLCByZXR1cm5pbmcgZnJvbSBhbm90aGVyIGFwcApkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucyBiL0xheW91dFRlc3RzL1Rlc3RFeHBl
Y3RhdGlvbnMKaW5kZXggMDRjNzA1ZWQwZjI5YmQyYTljODAzYTc4ZjFkNTA1NmIyNWZmYzBhYi4u
MjI0NzhkNzA5MDZmNmRiYjQwMTUxZjM2OGVhMjdlNzNjMjQ0M2IxMSAxMDA2NDQKLS0tIGEvTGF5
b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0YXRp
b25zCkBAIC01MjA5LDMgKzUyMDksNTUgQEAgaW1wb3J0ZWQvYmxpbmsvaHR0cC90ZXN0cy9wbHVn
aW5zIFsgU2tpcCBdCiBpbXBvcnRlZC9ibGluay9wbHVnaW5zIFsgU2tpcCBdCiBqcy9kb20vcmVm
bGVjdC1zZXQtb250by1kb20uaHRtbCBbIFNraXAgXQogdXNlcnNjcmlwdHMvdXNlci1zY3JpcHQt
cGx1Z2luLWRvY3VtZW50Lmh0bWwgWyBTa2lwIF0KKworIyBUaGVzZSBmaWx0ZXIgcmVsYXRlZCBm
YWlsdXJlcyBzaG91bGQgYmUgZml4ZWQgb25jZSB3ZWJraXQub3JnL2IvMjMyNzA1IGlzIHJlc29s
dmVkCit3ZWJraXQub3JnL2IvMjMyNzA1IGNvbXBvc2l0aW5nL2ZpbHRlcnMvZHJvcC1zaGFkb3cu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjb21wb3NpdGluZy9maWx0ZXJzL3Np
bXBsZS1pbWFnZS13aXRoLXN2Zy1maWx0ZXIuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIz
MjcwNSBjc3MzL2ZpbHRlcnMvYmFja2Ryb3AvYmFja2Ryb3AtZmlsdGVyLXdpdGgtYm9yZGVyLXJh
ZGl1cy1hbmQtcmVmbGVjdGlvbi1yZW1vdmUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIz
MjcwNSBjc3MzL2ZpbHRlcnMvY29sb3ItaW50ZXJwb2xhdGlvbi1maWx0ZXJzLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2Nzcy1vcGFjaXR5LXdpdGgtZHJv
cC1zaGFkb3cuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMv
ZHJvcC1zaGFkb3cuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRl
cnMvZWZmZWN0LWJyaWdodG5lc3Mtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1jb250cmFzdC1zcXVhcmUuaHRtbCBbIFNraXAgXQor
d2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvZWZmZWN0LWdyYXlzY2FsZS1zcXVhcmUu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvZWZmZWN0LWh1
ZS1yb3RhdGUtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9m
aWx0ZXJzL2VmZmVjdC1pbnZlcnQtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8y
MzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2UtbG9jYWwtdXJsLXdpdGgtYmFzZS5o
dG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9lZmZlY3Qtc2F0
dXJhdGUtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0
ZXJzL2VmZmVjdC1zZXBpYS1zcXVhcmUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcw
NSBjc3MzL2ZpbHRlcnMvZmlsdGVyLWlzLW9uLXN1YnBpeGVsLXBvc2l0aW9uLmh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRlci1vbi1vdmVyZmxvdy1o
aWRkZW4uaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvZmls
dGVycy1vbi1zdmctcm9vdC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMv
ZmlsdGVycy9oaWRwaS1mZUNvbnZvbHZlTWF0cml4Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgY3NzMy9maWx0ZXJzL2hpZHBpLWZpbHRlci1pcy1vbi1zdWJwaXhlbC1wb3NpdGlv
bi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9pbnZhbGlk
YXRlLXNvdXJjZUFscGhhLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9m
aWx0ZXJzL251bGwtZWZmZWN0LWNoZWNrLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgY3NzMy9maWx0ZXJzL3JlZmVyZW5jZS1maWx0ZXItc2V0LWZpbHRlci1yZWdpb25zLmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9tYXNraW5nL2NsaXAtcGF0aC1maWx0
ZXIuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2ZpbHRlci1pbWFnZS9m
aWx0ZXItaW1hZ2UuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2dyYWRp
ZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMy
NzA1IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWV4dGVuZGVkLXN0b3BzLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQu
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtYW5k
LWltYWdlLWJ1ZmZlci1yZXNvbHV0aW9uLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWJsdXIuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIz
MjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtY29tcG9uZW50LXRyYW5zZmVyLmh0bWwgWyBTa2lwIF0K
K3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWh1ZS1yb3RhdGUuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRlcnMtaW52ZXJ0Lmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLW1vcnBo
b2xvZ3kuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBpL2ZpbHRl
cnMtbXVsdGlwbGUuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBmYXN0L2hpZHBp
L2ZpbHRlcnMtcmVmZXJlbmNlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFz
dC9oaWRwaS9maWx0ZXJzLXNoYWRvdy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IGZhc3QvaGlkcGkvZmlsdGVycy10dXJidWxlbmNlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcv
Yi8yMzI3MDUgZmFzdC9tdWx0aWNvbC9maWx0ZXItaW4tY29sdW1ucy5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMjMyNzA1IGh0dHAvdGVzdHMvY3NzL2ZpbHRlcnMtb24taWZyYW1lcy5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL2JsaW5rL2NzczMvZmlsdGVy
cy9lZmZlY3QtcmVmZXJlbmNlLWFkZC1ody5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMy
NzA1IGltcG9ydGVkL2JsaW5rL2NzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLW9uLXRyYW5z
cGFyZW50LWVsZW1lbnQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRl
ZC9ibGluay9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1zb3VyY2UtYWxwaGEtaHcuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9ibGluay9zdmcvZmlsdGVy
cy9maWx0ZXItaHVnZS1jbGFtcGluZy5zdmcgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUg
aW1wb3J0ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVjdHMtYXJlYS11bnpvb21lZC54aHRtbCBbIFNr
aXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9tb3ppbGxhL3N2Zy9zdmctZWZmZWN0
cy1hcmVhLXpvb21lZC1pbi54aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBv
cnRlZC9tb3ppbGxhL3N2Zy9zdmctZWZmZWN0cy1hcmVhLXpvb21lZC1vdXQueGh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9j
c3MvY3NzLW92ZXJmbG93L292ZXJmbG93LXNjcm9sbC1yZXNpemUtdmlzaWJpbGl0eS1oaWRkZW4u
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBzdmcvY3VzdG9tL2ZlQ29sb3JNYXRy
aXgtdmFsdWVzLWxlYWRpbmctc3BhY2VzLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgc3ZnL2N1c3RvbS9yZXNvdXJjZXMtY3NzLXNjYWxlZC5odG1sIFsgU2tpcCBdCit3ZWJraXQu
b3JnL2IvMjMyNzA1IHN2Zy9maWx0ZXJzL2JpZy1zaXplZC1vZmYtdmlld3BvcnQtZmlsdGVyLnN2
ZyBbIFNraXAgXQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBl
Y3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucwppbmRl
eCAwNjk0NWUxMzc3OGE4MzkyYTIzYzdmNDMwMDNjNDEyNjBiM2NiNzRjLi45Y2E5Mzk4YmU3ODk3
ZWEwMTE2OTI1MmYyZTg3ODAzMTRjNzgxNWZhIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0
Zm9ybS9pb3MvVGVzdEV4cGVjdGF0aW9ucworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9pb3Mv
VGVzdEV4cGVjdGF0aW9ucwpAQCAtMjk3MCwyMCArMjk3MCw2IEBAIGh0dHAvdGVzdHMvY29va2ll
cy9vbmx5LWFjY2VwdC1maXJzdC1wYXJ0eS1jb29raWVzLmh0bWwgWyBTa2lwIF0KIAogZWRpdGlu
Zy9zZWxlY3Rpb24vY2hhcmFjdGVyLWdyYW51bGFyaXR5LXJlY3QuaHRtbCBbIFBhc3MgXQogCi0j
IDwgaU9TMTIgZG9lc24ndCBzdXBwb3J0IHRoZSBDRyBuZWVkZWQgZm9yIENvbmljIEdyYWRpZW50
cwotaHR0cC93cHQvY3NzL2Nzcy1pbWFnZXMtNC9jb25pYy1ncmFkaWVudC1wYXJzaW5nLmh0bWwg
WyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy5odG1sIFsgUGFzcyBdCi1m
YXN0L2dyYWRpZW50cy9jb25pYy5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1v
ZmYtY2VudGVyLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLWNlbnRlci1vdXRz
aWRlLWJveC5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1leHRlbmRlZC1zdG9w
cy5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1mcm9tLWFuZ2xlLmh0bWwgWyBQ
YXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy1sYXN0LXN0b3AuaHRtbCBbIFBh
c3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFBhc3MgXQot
ZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMuaHRtbCBbIFBhc3Mg
XQotZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFk
aWVudHMvY29uaWMtdHdvLWhpbnRzLmh0bWwgWyBQYXNzIF0KLQogIyA8cmRhcjovL3Byb2JsZW0v
MzY0NTUzMzk+IExheW91dFRlc3QgY29tcG9zaXRpbmcvaW9zL292ZXJmbG93LXNjcm9sbC10b3Vj
aC10aWxlcy5odG1sIGlzIGEgZmxha3kgZmFpbHVyZQogY29tcG9zaXRpbmcvaW9zL292ZXJmbG93
LXNjcm9sbC10b3VjaC10aWxlcy5odG1sIFsgUGFzcyBGYWlsdXJlIF0KIApkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9w
bGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwppbmRleCBmZmE3NWZlMTYyMmVkODM4ZjJmZDQ1
MzI1ZjY3NTQwZTE2Y2Q0YmY2Li4zMDc3MWJkZjEwMDk2YjE5NjRjMzkzYWEzYjViMTAyMjU0ZTFk
MDI2IDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9u
cworKysgYi9MYXlvdXRUZXN0cy9wbGF0Zm9ybS9tYWMvVGVzdEV4cGVjdGF0aW9ucwpAQCAtMTQx
MywxOCArMTQxMyw2IEBAIGZhc3QvZG9tL0hUTUxNZXRlckVsZW1lbnQvbWV0ZXItc3R5bGVzLmh0
bWwgWyBGYWlsdXJlIF0KIGltcG9ydGVkL2JsaW5rL2Zhc3QvdGV4dC9pbnRlcm5hdGlvbmFsL3Zl
cnRpY2FsLXBvc2l0aW9uaW5nLXdpdGgtY29tYmluaW5nLW1hcmtzLmh0bWwgWyBJbWFnZU9ubHlG
YWlsdXJlIF0KIAogIyA8IE1vamF2ZSBkb2Vzbid0IHN1cHBvcnQgdGhlIENHIG5lZWRlZCBmb3Ig
Q29uaWMgR3JhZGllbnRzCi1odHRwL3dwdC9jc3MvY3NzLWltYWdlcy00L2NvbmljLWdyYWRpZW50
LXBhcnNpbmcuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLmh0
bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3Jh
ZGllbnRzL2NvbmljLW9mZi1jZW50ZXIuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29u
aWMtY2VudGVyLW91dHNpZGUtYm94Lmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2Nvbmlj
LWV4dGVuZGVkLXN0b3BzLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLWZyb20t
YW5nbGUuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtcmVwZWF0aW5nLWxhc3Qt
c3RvcC5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1hbHBoYS5o
dG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9w
cy5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC5odG1sIFsgUGFz
cyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy10d28taGludHMuaHRtbCBbIFBhc3MgXQogWyBNb2ph
dmUgXSBpbXBvcnRlZC93M2Mvd2ViLXBsYXRmb3JtLXRlc3RzL2Nzcy9jc3MtaW1hZ2VzL211bHRp
cGxlLXBvc2l0aW9uLWNvbG9yLXN0b3AtY29uaWMuaHRtbCBbIFBhc3MgXQogCiAjIERhcmsgTW9k
ZSBpcyBNb2phdmUgYW5kIGxhdGVyLgo=
</data>
<flag name="commit-queue"
          id="468649"
          type_id="3"
          status="-"
          setter="ews-feeder"
    />
          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>443837</attachid>
            <date>2021-11-10 10:47:46 -0800</date>
            <delta_ts>2021-11-10 11:21:27 -0800</delta_ts>
            <desc>Patch</desc>
            <filename>bug-232457-20211110104745.patch</filename>
            <type>text/plain</type>
            <size>59814</size>
            <attacher name="Said Abou-Hallawa">sabouhallawa</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMjg1NTQ4CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggNWMwZDM2Y2Q2MWU5N2E5
ZWYzM2YwY2VlNmFiZGVjMDllMTdmYmRmNC4uMThjM2Q3MDQ1M2Q5OTIzMzIwMmM4MjgyODFmNzM1
NTFhYjg3YjBlZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDExOSBAQAorMjAyMS0xMS0wOSAgU2Fp
ZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKworICAgICAgICBbR1BVIFByb2Nlc3Nd
IE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBpbiB0aGUgc2FtZSBjb29yZGluYXRl
cyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lk
PTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKworICAgICAgICBSZXZpZXdlZCBieSBT
aW1vbiBGcmFzZXIuCisKKyAgICAgICAgQ3VycmVudGx5IFNWR0ZpbHRlciBzZXRzIHRoZSBmb2xs
b3dpbmcgbWVtYmVycyBvZiBGaWx0ZXIKKworICAgICAgICAxLiBBZmZpbmVUcmFuc2Zvcm0gbV9h
YnNvbHV0ZVRyYW5zZm9ybTogdGhpcyBpcyB0aGUgc2NhbGluZyBwYXJ0IGZyb20gdGhlCisgICAg
ICAgICAgIHRyYW5zZm9ybWF0aW9uIGZyb20gdGhlIHRhcmdldCBlbGVtZW50IHRvIHRoZSBvdXRl
cm1vc3QgY29vcmRpbmF0ZSBzeXN0ZW0KKyAgICAgICAgMi4gRmxvYXRTaXplIG1fZmlsdGVyUmVz
b2x1dGlvbjogdGhpcyBpcyB0aGUgY2xhbXBpbmcgc2NhbGUgaWYgdGhlIHNpemUKKyAgICAgICAg
ICAgb2YgdGhlIHJlc3VsdCBJbWFnZUJ1ZmZlcnMgZXhjZWVkcyBNYXhDbGFtcGVkQXJlYQorCisg
ICAgICAgIEFuZCB0aGUgQ1NTRmlsdGVyIHNldHMgdGhlIGZvbGxvd2luZyBtZW1iZXIgb2YgRmls
dGVyOgorCisgICAgICAgIDEuIGZsb2F0IG1fZmlsdGVyU2NhbGU6IHRoaXMgaXMgdGhlIGRvY3Vt
ZW50KCkuZGV2aWNlU2NhbGVGYWN0b3IoKQorCisgICAgICAgIFRoZSBkaXNjcmVwYW5jeSBoYXBw
ZW5zIGFsc28gd2hlbiBjcmVhdGluZyB0aGUgcmVzdWx0IEltYWdlQnVmZmVycy4gRm9yIAorICAg
ICAgICBTVkdGaWx0ZXIsIHdlIGNyZWF0ZSB0aGVtIHdpdGggc2NhbGVGYWN0b3IgPSAxLiBUaGlz
IG1lYW5zIHRoZSBsb2dpY2FsU2l6ZQorICAgICAgICBvZiB0aGUgSW1hZ2VCdWZmZXIgaXMgZXF1
YWwgdG8gaXRzIGJhY2tlbmRTaXplLiBCdXQgZm9yIENTU0ZpbHRlciB3ZQorICAgICAgICBjcmVh
dGUgdGhlbSB3aXRoIHNjYWxlRmFjdG9yID0gbV9maWx0ZXJTY2FsZS4gVGhpcyBtZWFucyB0aGUg
bG9naWNhbFNpemUKKyAgICAgICAgIT0gYmFja2VuZFNpemUgaW4gdGhpcyBjYXNlLgorCisgICAg
ICAgIFdlIG5lZWQgdG8gdW5pZnkgdGhlIGNvb3JkaW5hdGVzIHN5c3RlbSBmb3IgYm90aCBmaWx0
ZXJzLiBXZSBuZWVkIGFsc28gdG8KKyAgICAgICAgcmVwbGFjZSB0aGUgdGhyZWUgbWVtYmVycyBi
eSBhIHNpbmdsZSBGbG9hdFNpemUgY2FsbGVkICJtX2ZpbHRlclNjYWxlIi4KKworICAgICAgICAq
IGNzcy9DU1NGaWx0ZXJJbWFnZVZhbHVlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRl
ckltYWdlVmFsdWU6OmltYWdlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1h
Z2UvRmlsdGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2UubW06CisgICAgICAgIChXZWJDb3JlOjpG
aWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcik6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QgY29u
c3QpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVDb252b2x2ZU1hdHJp
eC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUNvbnZvbHZlTWF0cml4OjpwbGF0Zm9ybUFwcGx5
U29mdHdhcmUpOgorICAgICAgICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVEaXNwbGFj
ZW1lbnRNYXAuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEaXNwbGFjZW1lbnRNYXA6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RURyb3BTaGFkb3cuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVEcm9wU2hhZG93OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRURyb3BTaGFkb3c6OnBs
YXRmb3JtQXBwbHlTb2Z0d2FyZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9GRUdhdXNzaWFuQmx1ci5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
Y2FsY3VsYXRlS2VybmVsU2l6ZSk6CisgICAgICAgIChXZWJDb3JlOjpGRUdhdXNzaWFuQmx1cjo6
cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZFTW9ycGhvbG9neS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OmRl
dGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFTW9ycGhvbG9n
eTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZFT2Zmc2V0LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFT2Zmc2V0OjpkZXRlcm1p
bmVBYnNvbHV0ZVBhaW50UmVjdCk6CisgICAgICAgIChXZWJDb3JlOjpGRU9mZnNldDo6cGxhdGZv
cm1BcHBseVNvZnR3YXJlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZF
VGlsZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVUdXJidWxlbmNlOjpmaWxsUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZFVHVyYnVsZW5jZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKToKKyAg
ICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oOgorICAgICAgICAoV2Vi
Q29yZTo6RmlsdGVyOjpmaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0
ZXI6OnNldEZpbHRlclNjYWxlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c291cmNlSW1h
Z2VSZWN0IGNvbnN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291cmNlSW1hZ2VS
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6ZmlsdGVyUmVnaW9uIGNvbnN0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVnaW9uKToKKyAgICAgICAgKFdlYkNv
cmU6OkZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpGaWx0ZXI6OnNvdXJjZUltYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0U291
cmNlSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjpGaWx0ZXIpOgorICAgICAgICAo
V2ViQ29yZTo6RmlsdGVyOjpmaWx0ZXJSZXNvbHV0aW9uIGNvbnN0KTogRGVsZXRlZC4KKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlcjo6c2V0RmlsdGVyUmVzb2x1dGlvbik6IERlbGV0ZWQuCisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXI6OmFic29sdXRlVHJhbnNmb3JtIGNvbnN0KTogRGVsZXRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlcjo6aXNTVkdGaWx0ZXIgY29uc3QpOiBEZWxldGVkLgor
ICAgICAgICAoV2ViQ29yZTo6RmlsdGVyOjppc0NTU0ZpbHRlciBjb25zdCk6IERlbGV0ZWQuCisg
ICAgICAgIChXZWJDb3JlOjpGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6
IERlbGV0ZWQuCisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXJFZmZl
Y3QuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpkZXRlcm1pbmVGaWx0ZXJQ
cmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjphcHBs
eSk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KToK
KyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6cHJlbXVsdGlwbGllZFJlc3VsdCk6CisgICAg
ICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlJbWFnZUJ5dGVzIGNvbnN0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNl
KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29udmVydEltYWdlQnVmZmVyVG9D
b2xvclNwYWNlKToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y29weVVubXVsdGlw
bGllZFJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6OmNvcHlQcmVtdWx0
aXBsaWVkUmVzdWx0KToKKyAgICAgICAgKFdlYkNvcmU6OkZpbHRlckVmZmVjdDo6Y3JlYXRlSW1h
Z2VCdWZmZXJSZXN1bHQpOgorICAgICAgICAoV2ViQ29yZTo6RmlsdGVyRWZmZWN0OjpjcmVhdGVV
bm11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgIChXZWJDb3JlOjpGaWx0ZXJFZmZlY3Q6
OmNyZWF0ZVByZW11bHRpcGxpZWRJbWFnZVJlc3VsdCk6CisgICAgICAgICogcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9Tb3VyY2VHcmFwaGljLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlNvdXJj
ZUdyYXBoaWM6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KToKKyAgICAgICAgKiByZW5kZXJp
bmcvQ1NTRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Y3JlYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkNTU0ZpbHRlcjo6Q1NTRmlsdGVyKToKKyAgICAgICAgKFdlYkNv
cmU6OkNTU0ZpbHRlcjo6YnVpbGRSZWZlcmVuY2VGaWx0ZXIpOgorICAgICAgICAoV2ViQ29yZTo6
Q1NTRmlsdGVyOjpidWlsZCk6CisgICAgICAgIChXZWJDb3JlOjpDU1NGaWx0ZXI6OmFsbG9jYXRl
QmFja2luZ1N0b3JlSWZOZWVkZWQpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpkZXRl
cm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24pOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpjbGVhckludGVybWVkaWF0ZVJlc3VsdHMpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmls
dGVyOjpzZXRTb3VyY2VJbWFnZVJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6Q1NTRmlsdGVyOjpv
dXRwdXRSZWN0IGNvbnN0KToKKyAgICAgICAgKiByZW5kZXJpbmcvQ1NTRmlsdGVyLmg6CisgICAg
ICAgICogcmVuZGVyaW5nL1JlbmRlckxheWVyRmlsdGVycy5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpSZW5kZXJMYXllckZpbHRlcnM6OmJ1aWxkRmlsdGVyKToKKyAgICAgICAgKiByZW5kZXJpbmcv
c3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlJlbmRl
clNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKToKKyAgICAgICAgKFdlYkNvcmU6OlJl
bmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNvdXJjZSk6CisgICAgICAgICogcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oOgorICAgICAgICAqIHJlbmRlcmlu
Zy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHA6CisgICAgICAgIChXZWJDb3JlOjp3cml0ZVNW
R1Jlc291cmNlQ29udGFpbmVyKToKKyAgICAgICAgKiBzdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdG
RUltYWdlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OmRldGVybWluZUFic29sdXRl
UGFpbnRSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6OkZFSW1hZ2U6OnBsYXRmb3JtQXBwbHlTb2Z0
d2FyZSk6CisgICAgICAgICogc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcDoKKyAg
ICAgICAgKFdlYkNvcmU6OlNWR0ZpbHRlcjo6U1ZHRmlsdGVyKToKKyAgICAgICAgKFdlYkNvcmU6
OlNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJTY2FsZSBjb25zdCk6CisgICAgICAgIChXZWJDb3Jl
OjpTVkdGaWx0ZXI6OmNyZWF0ZSk6CisgICAgICAgIChXZWJDb3JlOjpTVkdGaWx0ZXI6OnNjYWxl
ZEJ5RmlsdGVyUmVzb2x1dGlvbiBjb25zdCk6IERlbGV0ZWQuCisgICAgICAgICogc3ZnL2dyYXBo
aWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmg6CisKIDIwMjEtMTEtMDkgIERlYW4gSmFja3NvbiAgPGRp
bm9AYXBwbGUuY29tPgogCiAgICAgICAgIFtXZWJYUl0gdGhyZWUuanMgZGVtb3MgZG9uJ3Qgd29y
awpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3Bw
IGIvU291cmNlL1dlYkNvcmUvY3NzL0NTU0ZpbHRlckltYWdlVmFsdWUuY3BwCmluZGV4IGM2N2Ez
NWIwNzE1YjcyMWVkODk5MmRlY2Q0OWZhOGQwYjgwNjQ3NzAuLjNkZWQwMmI4ZDIwYWFlM2E5NGRi
NDRiNzRlNzBmYjZkMjkxMzY4MTIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2Nzcy9DU1NG
aWx0ZXJJbWFnZVZhbHVlLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9jc3MvQ1NTRmlsdGVySW1h
Z2VWYWx1ZS5jcHAKQEAgLTEyNiw3ICsxMjYsNiBAQCBSZWZQdHI8SW1hZ2U+IENTU0ZpbHRlcklt
YWdlVmFsdWU6OmltYWdlKFJlbmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBGbG9hdFNpegog
ICAgIGF1dG8gY3NzRmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKICAgICBjc3NGaWx0ZXIt
PnNldFNvdXJjZUltYWdlKFdURk1vdmUodGV4dHVyZSkpOwogICAgIGNzc0ZpbHRlci0+c2V0U291
cmNlSW1hZ2VSZWN0KGltYWdlUmVjdCk7Ci0gICAgY3NzRmlsdGVyLT5zZXRGaWx0ZXJSZWdpb24o
aW1hZ2VSZWN0KTsKICAgICBpZiAoIWNzc0ZpbHRlci0+YnVpbGQocmVuZGVyZXIsIG1fZmlsdGVy
T3BlcmF0aW9ucywgRmlsdGVyQ29uc3VtZXI6OkZpbHRlckZ1bmN0aW9uKSkKICAgICAgICAgcmV0
dXJuICZJbWFnZTo6bnVsbEltYWdlKCk7CiAgICAgY3NzRmlsdGVyLT5hcHBseSgpOwpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvY29yZWltYWdlL0ZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvY29yZWltYWdlL0ZpbHRlckVmZmVjdFJlbmRlcmVyQ29yZUltYWdlLm1tCmluZGV4IGZjNmY4
Nzg4ODVlYmQwNDkxNzI0OTZiMzdjNDE0Nzk3MzYyOTQ0OWYuLjk5YjE2OWEzODFlMTIyMTc3NjAy
YTJhNzMyMzFiNDBiMWI4ZWU5YmYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2NvcmVpbWFnZS9GaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZS5tbQorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9jb3JlaW1hZ2UvRmlsdGVyRWZmZWN0
UmVuZGVyZXJDb3JlSW1hZ2UubW0KQEAgLTI0Miw3ICsyNDIsNyBAQCBJbWFnZUJ1ZmZlciogRmls
dGVyRWZmZWN0UmVuZGVyZXJDb3JlSW1hZ2U6Om91dHB1dCgpIGNvbnN0CiB2b2lkIEZpbHRlckVm
ZmVjdFJlbmRlcmVyQ29yZUltYWdlOjpyZW5kZXJUb0ltYWdlQnVmZmVyKEZpbHRlckVmZmVjdCYg
bGFzdEVmZmVjdCkKIHsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6
Y2xhbXBlZFNpemUobGFzdEVmZmVjdC5hYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUoKSk7Ci0gICAg
bV9vdXRwdXRJbWFnZUJ1ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBl
ZFNpemUsIGxhc3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSwgbGFzdEVmZmVjdC5yZXN1
bHRDb2xvclNwYWNlKCksIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAgbV9vdXRwdXRJbWFnZUJ1
ZmZlciA9IElPU3VyZmFjZUltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIDEsIGxhc3RF
ZmZlY3QucmVzdWx0Q29sb3JTcGFjZSgpLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICgh
bV9vdXRwdXRJbWFnZUJ1ZmZlcikgewogICAgICAgICBjbGVhclJlc3VsdCgpOwogICAgICAgICBy
ZXR1cm47CkBAIC0yNTQsNyArMjU0LDYgQEAgdm9pZCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJ
bWFnZTo6cmVuZGVyVG9JbWFnZUJ1ZmZlcihGaWx0ZXJFZmZlY3QmIGxhc3RFZmZlY3QKIEZsb2F0
UmVjdCBGaWx0ZXJFZmZlY3RSZW5kZXJlckNvcmVJbWFnZTo6ZGVzdFJlY3QoY29uc3QgRmlsdGVy
RWZmZWN0JiBsYXN0RWZmZWN0KSBjb25zdAogewogICAgIEludFNpemUgZGVzdFNpemUgPSBsYXN0
RWZmZWN0LmFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIGRlc3RTaXplLnNjYWxlKGxh
c3RFZmZlY3QuZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRSZWN0IGRlc3RSZWN0
ID0gRmxvYXRSZWN0KEZsb2F0UG9pbnQoKSwgZGVzdFNpemUpOwogICAgIHJldHVybiBkZXN0UmVj
dDsKIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9maWx0ZXJzL0ZFQ29udm9sdmVNYXRyaXguY3BwCmluZGV4IDgwYjRjODkyOTUyMGZhMDU3Yzdj
NTJkMmNkN2JiYjRlOThlYzU1NjcuLmU4NmYxMjljNTRiMWQ4ZmQ4ZWQ5Mjk0NmUyY2UxYjY5ODIz
MDNiZWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVDb252b2x2ZU1hdHJpeC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3MvZmlsdGVycy9GRUNvbnZvbHZlTWF0cml4LmNwcApAQCAtMzg2LDggKzM4Niw3IEBAIHZv
aWQgRkVDb252b2x2ZU1hdHJpeDo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICAgICAgcmV0
dXJuOwogCiAgICAgSW50U2l6ZSBwYWludFNpemUgPSBhYnNvbHV0ZVBhaW50UmVjdCgpLnNpemUo
KTsKLSAgICBwYWludFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7Ci0KKyAgICAK
ICAgICBQYWludGluZ0RhdGEgcGFpbnRpbmdEYXRhID0gewogICAgICAgICAqc291cmNlUGl4ZWxB
cnJheSwKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5LApkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRURpc3BsYWNlbWVudE1hcC5jcHAg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50
TWFwLmNwcAppbmRleCA0NmI3N2M4NWExY2Y4ZDQ4NWMwNWMzMTU3MzM5ZTBiYjRhZWJlNThjLi4y
NGE0NjI2YzZhMWM4MWZjNzc0ZGE2MjM3NmMxMjliZDg2ZDcxZTI5IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxhY2VtZW50TWFwLmNw
cAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFRGlzcGxh
Y2VtZW50TWFwLmNwcApAQCAtMTE5LDkgKzExOSw4IEBAIHZvaWQgRkVEaXNwbGFjZW1lbnRNYXA6
OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZp
bHRlcigpOwogICAgIEludFNpemUgcGFpbnRTaXplID0gYWJzb2x1dGVQYWludFJlY3QoKS5zaXpl
KCk7Ci0gICAgcGFpbnRTaXplLnNjYWxlKGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAotICAgIEZs
b2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oeyBtX3NjYWxl
LCBtX3NjYWxlIH0pOworICAgIEZsb2F0U2l6ZSBzY2FsZSA9IGZpbHRlci5zY2FsZWRCeUZpbHRl
clNjYWxlKHsgbV9zY2FsZSwgbV9zY2FsZSB9KTsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWCA9
IHNjYWxlLndpZHRoKCkgLyAyNTUuMDsKICAgICBmbG9hdCBzY2FsZUZvckNvbG9yWSA9IHNjYWxl
LmhlaWdodCgpIC8gMjU1LjA7CiAgICAgZmxvYXQgc2NhbGVkT2Zmc2V0WCA9IDAuNSAtIHNjYWxl
LndpZHRoKCkgKiAwLjU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFw
aGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFRHJvcFNoYWRvdy5jcHAKaW5kZXggNzNmYjc0MDE3NzRhM2NkNjg3
YjUzODc2M2RiYjNkNmQxYjRhZjU0NS4uNTFhZDJmODVmMmMyN2E2ZWU1MDc0ZjJjMTYxZWI5MTQ2
OGM5ZWMyNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9GRURyb3BTaGFkb3cuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL2ZpbHRlcnMvRkVEcm9wU2hhZG93LmNwcApAQCAtNTMsNyArNTMsNyBAQCB2b2lkIEZFRHJv
cFNoYWRvdzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogCiAgICAgRmxvYXRSZWN0IGFi
c29sdXRlUGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAg
ICAgRmxvYXRSZWN0IGFic29sdXRlT2Zmc2V0UGFpbnRSZWN0KGFic29sdXRlUGFpbnRSZWN0KTsK
LSAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5tb3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclJl
c29sdXRpb24oeyBtX2R4LCBtX2R5IH0pKTsKKyAgICBhYnNvbHV0ZU9mZnNldFBhaW50UmVjdC5t
b3ZlKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgYWJz
b2x1dGVQYWludFJlY3QudW5pdGUoYWJzb2x1dGVPZmZzZXRQYWludFJlY3QpOwogCiAgICAgSW50
U2l6ZSBrZXJuZWxTaXplID0gRkVHYXVzc2lhbkJsdXI6OmNhbGN1bGF0ZUtlcm5lbFNpemUoZmls
dGVyLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwpAQCAtODAsOSArODAsOCBAQCB2b2lkIEZFRHJvcFNo
YWRvdzo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKIAogICAgIEZpbHRlciYgZmlsdGVyID0gdGhp
cy0+ZmlsdGVyKCk7CiAgICAgCi0gICAgRmxvYXRTaXplIGJsdXJSYWRpdXMgPSAyICogZmlsdGVy
LnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbih7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGJsdXJS
YWRpdXMuc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIEZsb2F0U2l6ZSBvZmZzZXQg
PSBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KTsKKyAgICBG
bG9hdFNpemUgYmx1clJhZGl1cyA9IDIgKiBmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZSh7IG1f
c3RkWCwgbV9zdGRZIH0pOworICAgIEZsb2F0U2l6ZSBvZmZzZXQgPSBmaWx0ZXIuc2NhbGVkQnlG
aWx0ZXJTY2FsZSh7IG1fZHgsIG1fZHkgfSk7CiAKICAgICBGbG9hdFJlY3QgZHJhd2luZ1JlZ2lv
biA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoaW4tPmFic29sdXRlUGFpbnRSZWN0KCkpOwog
ICAgIEZsb2F0UmVjdCBkcmF3aW5nUmVnaW9uV2l0aE9mZnNldChkcmF3aW5nUmVnaW9uKTsKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVHYXVz
c2lhbkJsdXIuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKaW5kZXggMmRmYTFmMzRkYjkwMzAyNWM2NzBhOGRjNzBmYTg3OWI3
ODBkMzM4MC4uOGU0NmM1MDI2ZmU2NWM3NTU5NjM3NzVkMGJlNjk5NzAyZDQ4ZjI1NSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRUdhdXNzaWFu
Qmx1ci5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RUdhdXNzaWFuQmx1ci5jcHAKQEAgLTQ4NSw3ICs0ODUsNyBAQCBJbnRTaXplIEZFR2F1c3NpYW5C
bHVyOjpjYWxjdWxhdGVVbnNjYWxlZEtlcm5lbFNpemUoRmxvYXRTaXplIHN0ZERldmlhdGlvbikK
IAogSW50U2l6ZSBGRUdhdXNzaWFuQmx1cjo6Y2FsY3VsYXRlS2VybmVsU2l6ZShjb25zdCBGaWx0
ZXImIGZpbHRlciwgRmxvYXRTaXplIHN0ZERldmlhdGlvbikKIHsKLSAgICByZXR1cm4gY2FsY3Vs
YXRlVW5zY2FsZWRLZXJuZWxTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclJlc29sdXRpb24oc3Rk
RGV2aWF0aW9uKSk7CisgICAgcmV0dXJuIGNhbGN1bGF0ZVVuc2NhbGVkS2VybmVsU2l6ZShmaWx0
ZXIuc2NhbGVkQnlGaWx0ZXJTY2FsZShzdGREZXZpYXRpb24pKTsKIH0KIAogSW50U2l6ZSBGRUdh
dXNzaWFuQmx1cjo6Y2FsY3VsYXRlT3V0c2V0U2l6ZShGbG9hdFNpemUgc3RkRGV2aWF0aW9uKQpA
QCAtNTM3LDEwICs1MzcsOCBAQCB2b2lkIEZFR2F1c3NpYW5CbHVyOjpwbGF0Zm9ybUFwcGx5U29m
dHdhcmUoKQogICAgICAgICByZXR1cm47CiAKICAgICBJbnRTaXplIGtlcm5lbFNpemUgPSBjYWxj
dWxhdGVLZXJuZWxTaXplKGZpbHRlcigpLCB7IG1fc3RkWCwgbV9zdGRZIH0pOwotICAgIGtlcm5l
bFNpemUuc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBJbnRTaXplIHBhaW50
U2l6ZSA9IGFic29sdXRlUGFpbnRSZWN0KCkuc2l6ZSgpOwotICAgIHBhaW50U2l6ZS5zY2FsZShm
aWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIHRtcEltYWdlRGF0YSA9IFVpbnQ4Q2xh
bXBlZEFycmF5Ojp0cnlDcmVhdGVVbmluaXRpYWxpemVkKHBhaW50U2l6ZS5hcmVhKCkgKiA0KTsK
ICAgICBpZiAoIXRtcEltYWdlRGF0YSkKICAgICAgICAgcmV0dXJuOwpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3BwIGIv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRU1vcnBob2xvZ3kuY3Bw
CmluZGV4IDkxOTNiNTg3MTlhMDE4ZGQyYzY4OWU2MDY1N2Q4YjRmMDQxM2E2NzguLjFiMGRhZWIw
ZGI1NmU4MTg5MjAxOGEzMDc1MDZmMzU3NzFkNjhjMDAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVNb3JwaG9sb2d5LmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFTW9ycGhvbG9neS5jcHAKQEAg
LTc2LDcgKzc2LDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OmRldGVybWluZUFic29sdXRlUGFpbnRS
ZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRFZmZlY3QoMCktPmFic29s
dXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlzLT5maWx0ZXIoKTsKLSAg
ICBwYWludFJlY3QuaW5mbGF0ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKHsgbV9y
YWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHBhaW50UmVjdC5pbmZsYXRlKGZpbHRlci5zY2Fs
ZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOwogICAgIGlmIChjbGlw
c1RvQm91bmRzKCkpCiAgICAgICAgIHBhaW50UmVjdC5pbnRlcnNlY3QobWF4RWZmZWN0UmVjdCgp
KTsKICAgICBlbHNlCkBAIC0yNjMsNyArMjYzLDcgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRm
b3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKCFzb3VyY2VQaXhlbEFycmF5KQogICAgICAgICBy
ZXR1cm47CiAKLSAgICByYWRpdXMgPSBmbG9vcmVkSW50U2l6ZShmaWx0ZXIuc2NhbGVkQnlGaWx0
ZXJSZXNvbHV0aW9uKHsgbV9yYWRpdXNYLCBtX3JhZGl1c1kgfSkpOworICAgIHJhZGl1cyA9IGZs
b29yZWRJbnRTaXplKGZpbHRlci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9yYWRpdXNYLCBtX3Jh
ZGl1c1kgfSkpOwogICAgIGludCByYWRpdXNYID0gc3RkOjptaW4oZWZmZWN0RHJhd2luZ1JlY3Qu
d2lkdGgoKSAtIDEsIHJhZGl1cy53aWR0aCgpKTsKICAgICBpbnQgcmFkaXVzWSA9IHN0ZDo6bWlu
KGVmZmVjdERyYXdpbmdSZWN0LmhlaWdodCgpIC0gMSwgcmFkaXVzLmhlaWdodCgpKTsKIApAQCAt
MjczLDEwICsyNzMsMTAgQEAgdm9pZCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTb2Z0d2Fy
ZSgpCiAgICAgUGFpbnRpbmdEYXRhIHBhaW50aW5nRGF0YTsKICAgICBwYWludGluZ0RhdGEuc3Jj
UGl4ZWxBcnJheSA9IHNvdXJjZVBpeGVsQXJyYXkuZ2V0KCk7CiAgICAgcGFpbnRpbmdEYXRhLmRz
dFBpeGVsQXJyYXkgPSAmZGVzdGluYXRpb25QaXhlbEFycmF5OwotICAgIHBhaW50aW5nRGF0YS53
aWR0aCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LndpZHRoKCkgKiBmaWx0ZXIuZmlsdGVyU2Nh
bGUoKSk7Ci0gICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0
LmhlaWdodCgpICogZmlsdGVyLmZpbHRlclNjYWxlKCkpOwotICAgIHBhaW50aW5nRGF0YS5yYWRp
dXNYID0gY2VpbGYocmFkaXVzWCAqIGZpbHRlci5maWx0ZXJTY2FsZSgpKTsKLSAgICBwYWludGlu
Z0RhdGEucmFkaXVzWSA9IGNlaWxmKHJhZGl1c1kgKiBmaWx0ZXIuZmlsdGVyU2NhbGUoKSk7Cisg
ICAgcGFpbnRpbmdEYXRhLndpZHRoID0gY2VpbGYoZWZmZWN0RHJhd2luZ1JlY3Qud2lkdGgoKSk7
CisgICAgcGFpbnRpbmdEYXRhLmhlaWdodCA9IGNlaWxmKGVmZmVjdERyYXdpbmdSZWN0LmhlaWdo
dCgpKTsKKyAgICBwYWludGluZ0RhdGEucmFkaXVzWCA9IGNlaWxmKHJhZGl1c1gpOworICAgIHBh
aW50aW5nRGF0YS5yYWRpdXNZID0gY2VpbGYocmFkaXVzWSk7CiAKICAgICBwbGF0Zm9ybUFwcGx5
KHBhaW50aW5nRGF0YSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9maWx0ZXJzL0ZFT2Zmc2V0LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dy
YXBoaWNzL2ZpbHRlcnMvRkVPZmZzZXQuY3BwCmluZGV4IGZlM2NkYjQ4YjA3Njg0MzY3YWU3ZDY0
MGIzNDczNDk0ZmEyYzU5NTIuLjAyOGNiYzYwYTQ0N2YzNjliY2NlZGEwMDVjOTE3NWIzMWIxOGQ4
ZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMv
RkVPZmZzZXQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRkVPZmZzZXQuY3BwCkBAIC01Niw3ICs1Niw3IEBAIHZvaWQgRkVPZmZzZXQ6OmRldGVybWlu
ZUFic29sdXRlUGFpbnRSZWN0KCkKIHsKICAgICBGbG9hdFJlY3QgcGFpbnRSZWN0ID0gaW5wdXRF
ZmZlY3QoMCktPmFic29sdXRlUGFpbnRSZWN0KCk7CiAgICAgRmlsdGVyJiBmaWx0ZXIgPSB0aGlz
LT5maWx0ZXIoKTsKLSAgICBwYWludFJlY3QubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJSZXNv
bHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgcGFpbnRSZWN0Lm1vdmUoZmlsdGVyLnNjYWxl
ZEJ5RmlsdGVyU2NhbGUoeyBtX2R4LCBtX2R5IH0pKTsKICAgICBpZiAoY2xpcHNUb0JvdW5kcygp
KQogICAgICAgICBwYWludFJlY3QuaW50ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CiAgICAgZWxz
ZQpAQCAtNzcsNyArNzcsNyBAQCB2b2lkIEZFT2Zmc2V0OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUo
KQogCiAgICAgRmxvYXRSZWN0IGRyYXdpbmdSZWdpb24gPSBkcmF3aW5nUmVnaW9uT2ZJbnB1dElt
YWdlKGluLT5hYnNvbHV0ZVBhaW50UmVjdCgpKTsKICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMt
PmZpbHRlcigpOwotICAgIGRyYXdpbmdSZWdpb24ubW92ZShmaWx0ZXIuc2NhbGVkQnlGaWx0ZXJS
ZXNvbHV0aW9uKHsgbV9keCwgbV9keSB9KSk7CisgICAgZHJhd2luZ1JlZ2lvbi5tb3ZlKGZpbHRl
ci5zY2FsZWRCeUZpbHRlclNjYWxlKHsgbV9keCwgbV9keSB9KSk7CiAgICAgcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKS5kcmF3SW1hZ2VCdWZmZXIoKmluQnVmZmVyLCBkcmF3aW5nUmVnaW9uKTsKIH0K
IApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9G
RVRpbGUuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVRp
bGUuY3BwCmluZGV4IDM1ODk1ZmYyZDkzNTQ0ZGJjNDM5MGQwNjgxMzk1NDc1OTU3NzFmMGQuLjNl
NTBmYjZjMDBlY2YzODM5ODVjNjI5Nzk4NGY2ZTk3ODVjZTQyNGUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUaWxlLmNwcAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZFVGlsZS5jcHAKQEAgLTYxLDcg
KzYxLDcgQEAgdm9pZCBGRVRpbGU6OnBsYXRmb3JtQXBwbHlTb2Z0d2FyZSgpCiAgICAgaWYgKGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VHcmFwaGljIHx8IGlu
LT5maWx0ZXJUeXBlKCkgPT0gRmlsdGVyRWZmZWN0OjpUeXBlOjpTb3VyY2VBbHBoYSkgewogICAg
ICAgICBGaWx0ZXImIGZpbHRlciA9IHRoaXMtPmZpbHRlcigpOwogICAgICAgICB0aWxlUmVjdCA9
IGZpbHRlci5maWx0ZXJSZWdpb24oKTsKLSAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZp
bHRlclJlc29sdXRpb24oKS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdo
dCgpKTsKKyAgICAgICAgdGlsZVJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAg
IH0KIAogICAgIGF1dG8gdGlsZUltYWdlID0gU1ZHUmVuZGVyaW5nQ29udGV4dDo6Y3JlYXRlSW1h
Z2VCdWZmZXIodGlsZVJlY3QsIHRpbGVSZWN0LCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0Io
KSwgZmlsdGVyKCkucmVuZGVyaW5nTW9kZSgpKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcCBiL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvRkVUdXJidWxlbmNlLmNwcAppbmRleCAyZWEy
NWZlYjZmY2I0MWI0YTNjZWZiNmRkYTlkMGVjMzZkZDBkYmYxLi5hMmU3YWVjMzRkNmE5NTU0NGEw
NzA2OTdkYTU3OGUxODM1NjBkYjVjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZFVHVyYnVsZW5jZS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUv
cGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GRVR1cmJ1bGVuY2UuY3BwCkBAIC0zNzEsMTcgKzM3
MSwxNiBAQCB2b2lkIEZFVHVyYnVsZW5jZTo6ZmlsbFJlZ2lvbihVaW50OENsYW1wZWRBcnJheSYg
cGl4ZWxBcnJheSwgY29uc3QgUGFpbnRpbmdEYXRhJgogICAgIEFTU0VSVChlbmRZID4gc3RhcnRZ
KTsKIAogICAgIEludFJlY3QgZmlsdGVyUmVnaW9uID0gYWJzb2x1dGVQYWludFJlY3QoKTsKLSAg
ICBmaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAgICAgRmxvYXRQ
b2ludCBwb2ludCgwLCBmaWx0ZXJSZWdpb24ueSgpICsgc3RhcnRZKTsKICAgICBpbnQgaW5kZXhP
ZlBpeGVsQ2hhbm5lbCA9IHN0YXJ0WSAqIChmaWx0ZXJSZWdpb24ud2lkdGgoKSA8PCAyKTsKLSAg
ICBBZmZpbmVUcmFuc2Zvcm0gaW52ZXJzZVRyYW5zZnJvbSA9IGZpbHRlcigpLmFic29sdXRlVHJh
bnNmb3JtKCkuaW52ZXJzZSgpLnZhbHVlX29yKEFmZmluZVRyYW5zZm9ybSgpKTsKKyAgICBGbG9h
dFNpemUgaW52ZXJzZVNjYWxlID0geyAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS53aWR0aCgp
LCAxIC8gZmlsdGVyKCkuZmlsdGVyU2NhbGUoKS5oZWlnaHQoKSB9OwogCiAgICAgZm9yIChpbnQg
eSA9IHN0YXJ0WTsgeSA8IGVuZFk7ICsreSkgewogICAgICAgICBwb2ludC5zZXRZKHBvaW50Lnko
KSArIDEpOwogICAgICAgICBwb2ludC5zZXRYKGZpbHRlclJlZ2lvbi54KCkpOwogICAgICAgICBm
b3IgKGludCB4ID0gMDsgeCA8IGZpbHRlclJlZ2lvbi53aWR0aCgpOyArK3gpIHsKICAgICAgICAg
ICAgIHBvaW50LnNldFgocG9pbnQueCgpICsgMSk7Ci0gICAgICAgICAgICBGbG9hdFBvaW50IGxv
Y2FsUG9pbnQgPSBpbnZlcnNlVHJhbnNmcm9tLm1hcFBvaW50KHBvaW50KTsKKyAgICAgICAgICAg
IEZsb2F0UG9pbnQgbG9jYWxQb2ludCA9IHBvaW50LnNjYWxlZChpbnZlcnNlU2NhbGUud2lkdGgo
KSwgaW52ZXJzZVNjYWxlLmhlaWdodCgpKTsKICAgICAgICAgICAgIGF1dG8gdmFsdWVzID0gY2Fs
Y3VsYXRlVHVyYnVsZW5jZVZhbHVlRm9yUG9pbnQocGFpbnRpbmdEYXRhLCBzdGl0Y2hEYXRhLCBs
b2NhbFBvaW50KTsKICAgICAgICAgICAgIHBpeGVsQXJyYXkuc2V0UmFuZ2UodmFsdWVzLmNvbXBv
bmVudHMuZGF0YSgpLCA0LCBpbmRleE9mUGl4ZWxDaGFubmVsKTsKICAgICAgICAgICAgIGluZGV4
T2ZQaXhlbENoYW5uZWwgKz0gNDsKQEAgLTQwMyw3ICs0MDIsNiBAQCB2b2lkIEZFVHVyYnVsZW5j
ZTo6cGxhdGZvcm1BcHBseVNvZnR3YXJlKCkKICAgICBhdXRvJiBkZXN0aW5hdGlvblBpeGVsQXJy
YXkgPSBkZXN0aW5hdGlvblBpeGVsQnVmZmVyLT5kYXRhKCk7CiAKICAgICBJbnRTaXplIHJlc3Vs
dFNpemUoYWJzb2x1dGVQYWludFJlY3QoKS5zaXplKCkpOwotICAgIHJlc3VsdFNpemUuc2NhbGUo
ZmlsdGVyKCkuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAocmVzdWx0U2l6ZS5pc0VtcHR5KCkp
IHsKICAgICAgICAgZGVzdGluYXRpb25QaXhlbEFycmF5Lnplcm9GaWxsKCk7CmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0ZXIuaAppbmRleCA4NzI3
ODI4MTBiYmUwNjcxYTNmMDY3YTU5NTMwOWRmMTdlZWE0ZDIyLi4wMmJmNTExMDU0ZmU2MzljMmY3
MDk0N2MwNzVkOTk4NDBiNTc3NmI1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9y
bS9ncmFwaGljcy9maWx0ZXJzL0ZpbHRlci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL2ZpbHRlcnMvRmlsdGVyLmgKQEAgLTMzLDQ5ICszMyw0NSBAQCBjbGFzcyBGaWx0
ZXJFZmZlY3Q7CiAKIGNsYXNzIEZpbHRlciA6IHB1YmxpYyBGaWx0ZXJGdW5jdGlvbiB7CiBwdWJs
aWM6Ci0gICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291cmNl
SW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9Ci0gICAgSW1h
Z2VCdWZmZXIqIHNvdXJjZUltYWdlKCkgeyByZXR1cm4gbV9zb3VyY2VJbWFnZS5nZXQoKTsgfQor
ICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSgpIGNvbnN0IHsgcmV0dXJuIG1fZmlsdGVyU2NhbGU7
IH0KKyAgICB2b2lkIHNldEZpbHRlclNjYWxlKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUp
IHsgbV9maWx0ZXJTY2FsZSA9IGZpbHRlclNjYWxlOyB9CisKKyAgICBGbG9hdFJlY3Qgc291cmNl
SW1hZ2VSZWN0KCkgY29uc3QgeyByZXR1cm4gbV9zb3VyY2VJbWFnZVJlY3Q7IH0KKyAgICB2b2lk
IHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJjZUltYWdlUmVjdCkgeyBt
X3NvdXJjZUltYWdlUmVjdCA9IHNvdXJjZUltYWdlUmVjdDsgfQogCi0gICAgRmxvYXRTaXplIGZp
bHRlclJlc29sdXRpb24oKSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclJlc29sdXRpb247IH0KLSAg
ICB2b2lkIHNldEZpbHRlclJlc29sdXRpb24oY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0
aW9uKSB7IG1fZmlsdGVyUmVzb2x1dGlvbiA9IGZpbHRlclJlc29sdXRpb247IH0KKyAgICBGbG9h
dFJlY3QgZmlsdGVyUmVnaW9uKCkgY29uc3QgeyByZXR1cm4gbV9maWx0ZXJSZWdpb247IH0KKyAg
ICB2b2lkIHNldEZpbHRlclJlZ2lvbihjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbikgeyBt
X2ZpbHRlclJlZ2lvbiA9IGZpbHRlclJlZ2lvbjsgfQogCi0gICAgZmxvYXQgZmlsdGVyU2NhbGUo
KSBjb25zdCB7IHJldHVybiBtX2ZpbHRlclNjYWxlOyB9Ci0gICAgdm9pZCBzZXRGaWx0ZXJTY2Fs
ZShmbG9hdCBzY2FsZSkgeyBtX2ZpbHRlclNjYWxlID0gc2NhbGU7IH0KKyAgICB2aXJ0dWFsIEZs
b2F0U2l6ZSBzY2FsZWRCeUZpbHRlclNjYWxlKEZsb2F0U2l6ZSBzaXplKSBjb25zdCB7IHJldHVy
biBzaXplICogbV9maWx0ZXJTY2FsZTsgfQogCi0gICAgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiBh
YnNvbHV0ZVRyYW5zZm9ybSgpIGNvbnN0IHsgcmV0dXJuIG1fYWJzb2x1dGVUcmFuc2Zvcm07IH0K
KyAgICBJbWFnZUJ1ZmZlciogc291cmNlSW1hZ2UoKSB7IHJldHVybiBtX3NvdXJjZUltYWdlLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRTb3VyY2VJbWFnZShSZWZQdHI8SW1hZ2VCdWZmZXI+JiYgc291
cmNlSW1hZ2UpIHsgbV9zb3VyY2VJbWFnZSA9IFdURk1vdmUoc291cmNlSW1hZ2UpOyB9CiAKICAg
ICBSZW5kZXJpbmdNb2RlIHJlbmRlcmluZ01vZGUoKSBjb25zdCB7IHJldHVybiBtX3JlbmRlcmlu
Z01vZGU7IH0KICAgICB2b2lkIHNldFJlbmRlcmluZ01vZGUoUmVuZGVyaW5nTW9kZSByZW5kZXJp
bmdNb2RlKSB7IG1fcmVuZGVyaW5nTW9kZSA9IHJlbmRlcmluZ01vZGU7IH0KIAotICAgIHZpcnR1
YWwgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IHsgcmV0dXJuIGZhbHNlOyB9Ci0gICAgdmlydHVh
bCBib29sIGlzQ1NTRmlsdGVyKCkgY29uc3QgeyByZXR1cm4gZmFsc2U7IH0KLQotICAgIHZpcnR1
YWwgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihGbG9hdFNpemUgc2l6ZSkgY29u
c3QgeyByZXR1cm4gc2l6ZSAqIG1fZmlsdGVyUmVzb2x1dGlvbjsgfQotICAgIAotICAgIHZpcnR1
YWwgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVjdCgpIGNvbnN0ID0gMDsKLSAgICB2aXJ0dWFsIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb24oKSBjb25zdCA9IDA7Ci0gICAgdmlydHVhbCBGbG9hdFJlY3Qg
ZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKSBjb25zdCA9IDA7Ci0KIHByb3RlY3RlZDoKLSAgICBG
aWx0ZXIoRmlsdGVyOjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJz
b2x1dGVUcmFuc2Zvcm0sIGZsb2F0IGZpbHRlclNjYWxlID0gMSkKKyAgICBGaWx0ZXIoRmlsdGVy
OjpUeXBlIGZpbHRlclR5cGUsIGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUpCiAgICAgICAg
IDogRmlsdGVyRnVuY3Rpb24oZmlsdGVyVHlwZSkKLSAgICAgICAgLCBtX2Fic29sdXRlVHJhbnNm
b3JtKGFic29sdXRlVHJhbnNmb3JtKQogICAgICAgICAsIG1fZmlsdGVyU2NhbGUoZmlsdGVyU2Nh
bGUpCiAgICAgewogICAgIH0KIAotICAgIEZpbHRlcihGaWx0ZXI6OlR5cGUgZmlsdGVyVHlwZSwg
Y29uc3QgRmxvYXRTaXplJiBmaWx0ZXJSZXNvbHV0aW9uKQorICAgIEZpbHRlcihGaWx0ZXI6OlR5
cGUgZmlsdGVyVHlwZSwgY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRS
ZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uKQogICAg
ICAgICA6IEZpbHRlckZ1bmN0aW9uKGZpbHRlclR5cGUpCi0gICAgICAgICwgbV9maWx0ZXJSZXNv
bHV0aW9uKGZpbHRlclJlc29sdXRpb24pCisgICAgICAgICwgbV9maWx0ZXJTY2FsZShmaWx0ZXJT
Y2FsZSkKKyAgICAgICAgLCBtX3NvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpCisgICAg
ICAgICwgbV9maWx0ZXJSZWdpb24oZmlsdGVyUmVnaW9uKQogICAgIHsKICAgICB9CiAKIHByaXZh
dGU6CisgICAgRmxvYXRTaXplIG1fZmlsdGVyU2NhbGU7CisgICAgRmxvYXRSZWN0IG1fc291cmNl
SW1hZ2VSZWN0OworICAgIEZsb2F0UmVjdCBtX2ZpbHRlclJlZ2lvbjsKKwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gbV9zb3VyY2VJbWFnZTsKLSAgICBGbG9hdFNpemUgbV9maWx0ZXJSZXNvbHV0
aW9uOwotICAgIEFmZmluZVRyYW5zZm9ybSBtX2Fic29sdXRlVHJhbnNmb3JtOwogICAgIFJlbmRl
cmluZ01vZGUgbV9yZW5kZXJpbmdNb2RlIHsgUmVuZGVyaW5nTW9kZTo6VW5hY2NlbGVyYXRlZCB9
OwotICAgIGZsb2F0IG1fZmlsdGVyU2NhbGUgeyAxIH07CiB9OwogCiB9IC8vIG5hbWVzcGFjZSBX
ZWJDb3JlCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL0ZpbHRlckVmZmVjdC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9m
aWx0ZXJzL0ZpbHRlckVmZmVjdC5jcHAKaW5kZXggYjEzZTY4MjM2NjM1Zjg1NTA0ZmUxOTliMDlh
MjhmZTI2NzI4MTRkOC4uNDBkMjMwMGUxMWUxYzEyNmY3NmI4NTgyZGEyOTk0Y2Q1OWUzNmI1MiAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9GaWx0
ZXJFZmZlY3QuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvRmlsdGVyRWZmZWN0LmNwcApAQCAtMTA1LDExICsxMDUsMTEgQEAgRmxvYXRSZWN0IEZpbHRl
ckVmZmVjdDo6ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCkKICAgICAgICAgICAg
IHN1YnJlZ2lvbi51bml0ZShpbnB1dFByaW1pdGl2ZVN1YnJlZ2lvbik7CiAgICAgICAgIH0KICAg
ICB9IGVsc2UKLSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2Vy
U3BhY2UoKTsKKyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAK
ICAgICAvLyBBZnRlciBjYWxsaW5nIGRldGVybWluZUZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiBv
biB0aGUgdGFyZ2V0IGVmZmVjdCwgcmVzZXQgdGhlIHN1YnJlZ2lvbiBhZ2FpbiBmb3IgPGZlVGls
ZT4uCiAgICAgaWYgKGZpbHRlclR5cGUoKSA9PSBGaWx0ZXJFZmZlY3Q6OlR5cGU6OkZFVGlsZSkK
LSAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uSW5Vc2VyU3BhY2UoKTsK
KyAgICAgICAgc3VicmVnaW9uID0gbV9maWx0ZXIuZmlsdGVyUmVnaW9uKCk7CiAKICAgICBhdXRv
IGJvdW5kYXJpZXMgPSBlZmZlY3RCb3VuZGFyaWVzKCk7CiAgICAgaWYgKGhhc1goKSkKQEAgLTEy
MywxNSArMTIzLDE0IEBAIEZsb2F0UmVjdCBGaWx0ZXJFZmZlY3Q6OmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpCiAKICAgICBzZXRGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oc3Vi
cmVnaW9uKTsKIAotICAgIGF1dG8gYWJzb2x1dGVTdWJyZWdpb24gPSBtX2ZpbHRlci5hYnNvbHV0
ZVRyYW5zZm9ybSgpLm1hcFJlY3Qoc3VicmVnaW9uKTsKLSAgICBhdXRvIGZpbHRlclJlc29sdXRp
b24gPSBtX2ZpbHRlci5maWx0ZXJSZXNvbHV0aW9uKCk7Ci0gICAgYWJzb2x1dGVTdWJyZWdpb24u
c2NhbGUoZmlsdGVyUmVzb2x1dGlvbik7CisgICAgYXV0byBhYnNvbHV0ZVN1YnJlZ2lvbiA9IHN1
YnJlZ2lvbjsKKyAgICBhYnNvbHV0ZVN1YnJlZ2lvbi5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2Fs
ZSgpKTsKICAgICAvLyBTYXZlIHRoaXMgYmVmb3JlIGNsaXBwaW5nIHNvIHdlIGNhbiB1c2UgaXQg
dG8gbWFwIGxpZ2h0aW5nIHBvaW50cyBmcm9tIHVzZXIgc3BhY2UgdG8gYnVmZmVyIGNvb3JkaW5h
dGVzLgogICAgIHNldFVuY2xpcHBlZEFic29sdXRlU3VicmVnaW9uKGFic29sdXRlU3VicmVnaW9u
KTsKIAogICAgIC8vIENsaXAgZXZlcnkgZmlsdGVyIGVmZmVjdCB0byB0aGUgZmlsdGVyIHJlZ2lv
bi4KICAgICBhdXRvIGFic29sdXRlU2NhbGVkRmlsdGVyUmVnaW9uID0gbV9maWx0ZXIuZmlsdGVy
UmVnaW9uKCk7Ci0gICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUoZmlsdGVyUmVz
b2x1dGlvbik7CisgICAgYWJzb2x1dGVTY2FsZWRGaWx0ZXJSZWdpb24uc2NhbGUobV9maWx0ZXIu
ZmlsdGVyU2NhbGUoKSk7CiAgICAgYWJzb2x1dGVTdWJyZWdpb24uaW50ZXJzZWN0KGFic29sdXRl
U2NhbGVkRmlsdGVyUmVnaW9uKTsKIAogICAgIHNldE1heEVmZmVjdFJlY3QoYWJzb2x1dGVTdWJy
ZWdpb24pOwpAQCAtMTc5LDcgKzE3OCw3IEBAIHZvaWQgRmlsdGVyRWZmZWN0OjphcHBseSgpCiAg
ICAgZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKTsKICAgICBzZXRSZXN1bHRDb2xvclNwYWNl
KG1fb3BlcmF0aW5nQ29sb3JTcGFjZSk7CiAKLSAgICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywg
c3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBmaWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMg
PDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVjdEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJv
dW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xpcHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1
dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBhYnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJz
b2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZlY3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0
IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSA8PCAiXG4g
IGZpbHRlciByZXNvbHV0aW9uICIgPDwgbV9maWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpKTsKKyAg
ICBMT0dfV0lUSF9TVFJFQU0oRmlsdGVycywgc3RyZWFtIDw8ICJGaWx0ZXJFZmZlY3QgIiA8PCBm
aWx0ZXJOYW1lKCkgPDwgIiAiIDw8IHRoaXMgPDwgIiBhcHBseSgpOlxuICBmaWx0ZXJQcmltaXRp
dmVTdWJyZWdpb24gIiA8PCBtX2ZpbHRlclByaW1pdGl2ZVN1YnJlZ2lvbiA8PCAiXG4gIGVmZmVj
dEJvdW5kYXJpZXMgIiA8PCBtX2VmZmVjdEJvdW5kYXJpZXMgPDwgIlxuICBhYnNvbHV0ZVVuY2xp
cHBlZFN1YnJlZ2lvbiAiIDw8IG1fYWJzb2x1dGVVbmNsaXBwZWRTdWJyZWdpb24gPDwgIlxuICBh
YnNvbHV0ZVBhaW50UmVjdCAiIDw8IG1fYWJzb2x1dGVQYWludFJlY3QgPDwgIlxuICBtYXhFZmZl
Y3RSZWN0ICIgPDwgbV9tYXhFZmZlY3RSZWN0IDw8ICJcbiAgZmlsdGVyIHNjYWxlICIgPDwgbV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICBpZiAobV9hYnNvbHV0ZVBhaW50UmVjdC5pc0Vt
cHR5KCkgfHwgSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKG1fYWJzb2x1dGVQYWludFJl
Y3Quc2l6ZSgpKSkKICAgICAgICAgcmV0dXJuOwpAQCAtMjcxLDcgKzI3MCw3IEBAIEltYWdlQnVm
ZmVyKiBGaWx0ZXJFZmZlY3Q6OmltYWdlQnVmZmVyUmVzdWx0KCkKICAgICBpZiAobV9pbWFnZUJ1
ZmZlclJlc3VsdCkKICAgICAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiAK
LSAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShtX2Fic29sdXRl
UGFpbnRSZWN0LnNpemUoKSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCBtX2ZpbHRlci5maWx0
ZXJTY2FsZSgpLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVsRm9ybWF0OjpCR1JBOCk7CisgICAg
bV9pbWFnZUJ1ZmZlclJlc3VsdCA9IEltYWdlQnVmZmVyOjpjcmVhdGUobV9hYnNvbHV0ZVBhaW50
UmVjdC5zaXplKCksIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgbV9yZXN1bHRDb2xvclNw
YWNlLCBQaXhlbEZvcm1hdDo6QkdSQTgpOwogICAgIGlmICghbV9pbWFnZUJ1ZmZlclJlc3VsdCkK
ICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKQEAgLTI4Nyw3ICsyODYsNiBAQCBSZWZQdHI8VWlu
dDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVjdDo6dW5tdWx0aXBsaWVkUmVzdWx0KGNvbnN0IElu
dFJlY3QmIHJlY3QsCiB7CiAgICAgSW50U2l6ZSBzY2FsZWRTaXplKHJlY3Quc2l6ZSgpKTsKICAg
ICBBU1NFUlQoIUltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzY2FsZWRTaXplKSk7Ci0g
ICAgc2NhbGVkU2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKICAgICBhdXRvIGNo
ZWNrZWRBcmVhID0gc2NhbGVkU2l6ZS5hcmVhPFJlY29yZE92ZXJmbG93PigpICogNDsKICAgICBp
ZiAoY2hlY2tlZEFyZWEuaGFzT3ZlcmZsb3dlZCgpKQogICAgICAgICByZXR1cm4gbnVsbHB0cjsK
QEAgLTMwMiw3ICszMDAsNiBAQCBSZWZQdHI8VWludDhDbGFtcGVkQXJyYXk+IEZpbHRlckVmZmVj
dDo6cHJlbXVsdGlwbGllZFJlc3VsdChjb25zdCBJbnRSZWN0JiByZWN0LAogewogICAgIEludFNp
emUgc2NhbGVkU2l6ZShyZWN0LnNpemUoKSk7CiAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6
ZU5lZWRzQ2xhbXBpbmcoc2NhbGVkU2l6ZSkpOwotICAgIHNjYWxlZFNpemUuc2NhbGUobV9maWx0
ZXIuZmlsdGVyU2NhbGUoKSk7CiAgICAgYXV0byBjaGVja2VkQXJlYSA9IHNjYWxlZFNpemUuYXJl
YTxSZWNvcmRPdmVyZmxvdz4oKSAqIDQ7CiAgICAgaWYgKGNoZWNrZWRBcmVhLmhhc092ZXJmbG93
ZWQoKSkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CkBAIC0zMTYsOSArMzEzLDcgQEAgUmVmUHRy
PFVpbnQ4Q2xhbXBlZEFycmF5PiBGaWx0ZXJFZmZlY3Q6OnByZW11bHRpcGxpZWRSZXN1bHQoY29u
c3QgSW50UmVjdCYgcmVjdCwKIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5SW1hZ2VCeXRlcyhjb25z
dCBVaW50OENsYW1wZWRBcnJheSYgc291cmNlLCBVaW50OENsYW1wZWRBcnJheSYgZGVzdGluYXRp
b24sIGNvbnN0IEludFJlY3QmIHJlY3QpIGNvbnN0CiB7CiAgICAgSW50UmVjdCBzY2FsZWRSZWN0
KHJlY3QpOwotICAgIHNjYWxlZFJlY3Quc2NhbGUobV9maWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAg
ICAgSW50U2l6ZSBzY2FsZWRQYWludFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwot
ICAgIHNjYWxlZFBhaW50U2l6ZS5zY2FsZShtX2ZpbHRlci5maWx0ZXJTY2FsZSgpKTsKIAogICAg
IC8vIEluaXRpYWxpemUgdGhlIGRlc3RpbmF0aW9uIHRvIHRyYW5zcGFyZW50IGJsYWNrLCBpZiBu
b3QgZW50aXJlbHkgY292ZXJlZCBieSB0aGUgc291cmNlLgogICAgIGlmIChzY2FsZWRSZWN0Lngo
KSA8IDAgfHwgc2NhbGVkUmVjdC55KCkgPCAwIHx8IHNjYWxlZFJlY3QubWF4WCgpID4gc2NhbGVk
UGFpbnRTaXplLndpZHRoKCkgfHwgc2NhbGVkUmVjdC5tYXhZKCkgPiBzY2FsZWRQYWludFNpemUu
aGVpZ2h0KCkpCkBAIC00NDIsMTAgKzQzNyw5IEBAIHN0ZDo6b3B0aW9uYWw8UGl4ZWxCdWZmZXI+
IEZpbHRlckVmZmVjdDo6Y29udmVydFBpeGVsQnVmZmVyVG9Db2xvclNwYWNlKGNvbnN0IERlCiAg
ICAgLy8gRklYTUU6IFVzaW5nIGFuIEltYWdlQnVmZmVyIHRvIHBlcmZvcm0gdGhlIGNvbG9yIHNw
YWNlIGNvbnZlcnNpb24gaXMgdW5uZWNlc3NhcnkuIFdlIGNhbiBkbyBpdCBkaXJlY3RseS4KIAog
ICAgIEludFJlY3QgZGVzdGluYXRpb25SZWN0KEludFBvaW50KCksIHBpeGVsQnVmZmVyLnNpemUo
KSk7Ci0gICAgZGVzdGluYXRpb25SZWN0LnNjYWxlKDEgLyBtX2ZpbHRlci5maWx0ZXJTY2FsZSgp
KTsKICAgICBGbG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUo
ZGVzdGluYXRpb25SZWN0LnNpemUoKSk7CiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHRv
IHN0b3JlIGluY29taW5nIFBpeGVsQnVmZmVyCi0gICAgYXV0byBidWZmZXIgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG9wZXJhdGluZ0NvbG9yU3BhY2UoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4
KTsKKyAgICBhdXRvIGJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1f
ZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgMSwgb3BlcmF0aW5nQ29sb3JTcGFjZSgpLCBQaXhlbEZv
cm1hdDo6QkdSQTgpOwogICAgIGlmICghYnVmZmVyKQogICAgICAgICByZXR1cm4gc3RkOjpudWxs
b3B0OwogICAgIGJ1ZmZlci0+cHV0UGl4ZWxCdWZmZXIocGl4ZWxCdWZmZXIsIGRlc3RpbmF0aW9u
UmVjdCk7CkBAIC00NTksNyArNDUzLDcgQEAgc3RkOjpvcHRpb25hbDxQaXhlbEJ1ZmZlcj4gRmls
dGVyRWZmZWN0Ojpjb252ZXJ0SW1hZ2VCdWZmZXJUb0NvbG9yU3BhY2UoY29uc3QgRGUKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUocmVjdC5zaXpl
KCkpOwogCiAgICAgLy8gQ3JlYXRlIGFuIEltYWdlQnVmZmVyIHdpdGggdGhlIGNvcnJlY3QgY29s
b3Igc3BhY2UgYW5kIHV0aWxpemUgQ0cgdG8gaGFuZGxlIGNvbG9yIHNwYWNlIGNvbnZlcnNpb24K
LSAgICBhdXRvIGNvbnZlcnRlZEJ1ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNp
emUsIG1fZmlsdGVyLnJlbmRlcmluZ01vZGUoKSwgbV9maWx0ZXIuZmlsdGVyU2NhbGUoKSwgdGFy
Z2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKKyAgICBhdXRvIGNvbnZlcnRlZEJ1
ZmZlciA9IEltYWdlQnVmZmVyOjpjcmVhdGUoY2xhbXBlZFNpemUsIG1fZmlsdGVyLnJlbmRlcmlu
Z01vZGUoKSwgMSwgdGFyZ2V0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsKICAgICBp
ZiAoIWNvbnZlcnRlZEJ1ZmZlcikKICAgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKIApAQCAt
NTExLDcgKzUwNSw2IEBAIHZvaWQgRmlsdGVyRWZmZWN0Ojpjb3B5VW5tdWx0aXBsaWVkUmVzdWx0
KFVpbnQ4Q2xhbXBlZEFycmF5JiBkZXN0aW5hdGlvbiwgY29uc3QKICAgICAgICAgfSBlbHNlIHsK
ICAgICAgICAgICAgIEludFNpemUgaW5wdXRTaXplKG1fYWJzb2x1dGVQYWludFJlY3Quc2l6ZSgp
KTsKICAgICAgICAgICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKGlu
cHV0U2l6ZSkpOwotICAgICAgICAgICAgaW5wdXRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNj
YWxlKCkpOwogICAgICAgICAgICAgCiAgICAgICAgICAgICBBU1NFUlQobV9wcmVtdWx0aXBsaWVk
SW1hZ2VSZXN1bHQtPmZvcm1hdCgpLmNvbG9yU3BhY2UgPT0gbV9yZXN1bHRDb2xvclNwYWNlKTsK
ICAgICAgICAgICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGlj
YXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6OlJHQkE4LCBtX3Jlc3VsdENvbG9y
U3BhY2UgfTsKQEAgLTU1MCw3ICs1NDMsNiBAQCB2b2lkIEZpbHRlckVmZmVjdDo6Y29weVByZW11
bHRpcGxpZWRSZXN1bHQoVWludDhDbGFtcGVkQXJyYXkmIGRlc3RpbmF0aW9uLCBjb25zdAogICAg
ICAgICB9IGVsc2UgewogICAgICAgICAgICAgSW50U2l6ZSBpbnB1dFNpemUobV9hYnNvbHV0ZVBh
aW50UmVjdC5zaXplKCkpOwogICAgICAgICAgICAgQVNTRVJUKCFJbWFnZUJ1ZmZlcjo6c2l6ZU5l
ZWRzQ2xhbXBpbmcoaW5wdXRTaXplKSk7Ci0gICAgICAgICAgICBpbnB1dFNpemUuc2NhbGUobV9m
aWx0ZXIuZmlsdGVyU2NhbGUoKSk7CiAKICAgICAgICAgICAgIEFTU0VSVChtX3VubXVsdGlwbGll
ZEltYWdlUmVzdWx0LT5mb3JtYXQoKS5jb2xvclNwYWNlID09IG1fcmVzdWx0Q29sb3JTcGFjZSk7
CiAgICAgICAgICAgICBQaXhlbEJ1ZmZlckZvcm1hdCBmb3JtYXQgeyBBbHBoYVByZW11bHRpcGxp
Y2F0aW9uOjpQcmVtdWx0aXBsaWVkLCBQaXhlbEZvcm1hdDo6UkdCQTgsIG1fcmVzdWx0Q29sb3JT
cGFjZSB9OwpAQCAtNTc4LDcgKzU3MCw3IEBAIEltYWdlQnVmZmVyKiBGaWx0ZXJFZmZlY3Q6OmNy
ZWF0ZUltYWdlQnVmZmVyUmVzdWx0KCkKICAgICAgICAgcmV0dXJuIG51bGxwdHI7CiAKICAgICBG
bG9hdFNpemUgY2xhbXBlZFNpemUgPSBJbWFnZUJ1ZmZlcjo6Y2xhbXBlZFNpemUobV9hYnNvbHV0
ZVBhaW50UmVjdC5zaXplKCkpOwotICAgIG1faW1hZ2VCdWZmZXJSZXN1bHQgPSBJbWFnZUJ1ZmZl
cjo6Y3JlYXRlKGNsYW1wZWRTaXplLCBtX2ZpbHRlci5yZW5kZXJpbmdNb2RlKCksIG1fZmlsdGVy
LmZpbHRlclNjYWxlKCksIG1fcmVzdWx0Q29sb3JTcGFjZSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KTsK
KyAgICBtX2ltYWdlQnVmZmVyUmVzdWx0ID0gSW1hZ2VCdWZmZXI6OmNyZWF0ZShjbGFtcGVkU2l6
ZSwgbV9maWx0ZXIucmVuZGVyaW5nTW9kZSgpLCAxLCBtX3Jlc3VsdENvbG9yU3BhY2UsIFBpeGVs
Rm9ybWF0OjpCR1JBOCk7CiAgICAgcmV0dXJuIG1faW1hZ2VCdWZmZXJSZXN1bHQuZ2V0KCk7CiB9
CiAKQEAgLTU5NSw3ICs1ODcsNiBAQCBzdGQ6Om9wdGlvbmFsPFBpeGVsQnVmZmVyPiYgRmlsdGVy
RWZmZWN0OjpjcmVhdGVVbm11bHRpcGxpZWRJbWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJl
c3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVjdC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VC
dWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJlc3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNj
YWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkpOwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1h
dCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246OlVucHJlbXVsdGlwbGllZCwgUGl4ZWxGb3JtYXQ6
OlJHQkE4LCBtX3Jlc3VsdENvbG9yU3BhY2UgfTsKICAgICBtX3VubXVsdGlwbGllZEltYWdlUmVz
dWx0ID0gUGl4ZWxCdWZmZXI6OnRyeUNyZWF0ZShmb3JtYXQsIHJlc3VsdFNpemUpOwogICAgIHJl
dHVybiBtX3VubXVsdGlwbGllZEltYWdlUmVzdWx0OwpAQCAtNjE0LDcgKzYwNSw2IEBAIHN0ZDo6
b3B0aW9uYWw8UGl4ZWxCdWZmZXI+JiBGaWx0ZXJFZmZlY3Q6OmNyZWF0ZVByZW11bHRpcGxpZWRJ
bWFnZVJlc3VsdCgpCiAKICAgICBJbnRTaXplIHJlc3VsdFNpemUobV9hYnNvbHV0ZVBhaW50UmVj
dC5zaXplKCkpOwogICAgIEFTU0VSVCghSW1hZ2VCdWZmZXI6OnNpemVOZWVkc0NsYW1waW5nKHJl
c3VsdFNpemUpKTsKLSAgICByZXN1bHRTaXplLnNjYWxlKG1fZmlsdGVyLmZpbHRlclNjYWxlKCkp
OwogICAgIFBpeGVsQnVmZmVyRm9ybWF0IGZvcm1hdCB7IEFscGhhUHJlbXVsdGlwbGljYXRpb246
OlByZW11bHRpcGxpZWQsIFBpeGVsRm9ybWF0OjpSR0JBOCwgbV9yZXN1bHRDb2xvclNwYWNlIH07
CiAgICAgbV9wcmVtdWx0aXBsaWVkSW1hZ2VSZXN1bHQgPSBQaXhlbEJ1ZmZlcjo6dHJ5Q3JlYXRl
KGZvcm1hdCwgcmVzdWx0U2l6ZSk7CiAgICAgcmV0dXJuIG1fcHJlbXVsdGlwbGllZEltYWdlUmVz
dWx0OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVy
cy9Tb3VyY2VHcmFwaGljLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2Zp
bHRlcnMvU291cmNlR3JhcGhpYy5jcHAKaW5kZXggMjg4YzQ1ZjZmZGY3YTZiYTA5MTY0YTNmNDRi
N2QyZjk0ZTJhMWQ0Yi4uZTEyM2RjZDhmZjIxZGRjNzczM2U1N2U1MTVlZjMxMWU3YzkwMTU4MCAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9Tb3Vy
Y2VHcmFwaGljLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0
ZXJzL1NvdXJjZUdyYXBoaWMuY3BwCkBAIC0zNSw3ICszNSw2IEBAIHZvaWQgU291cmNlR3JhcGhp
Yzo6ZGV0ZXJtaW5lQWJzb2x1dGVQYWludFJlY3QoKQogewogICAgIEZpbHRlciYgZmlsdGVyID0g
dGhpcy0+ZmlsdGVyKCk7CiAgICAgRmxvYXRSZWN0IHBhaW50UmVjdCA9IGZpbHRlci5zb3VyY2VJ
bWFnZVJlY3QoKTsKLSAgICBwYWludFJlY3Quc2NhbGUoZmlsdGVyLmZpbHRlclJlc29sdXRpb24o
KS53aWR0aCgpLCBmaWx0ZXIuZmlsdGVyUmVzb2x1dGlvbigpLmhlaWdodCgpKTsKICAgICBzZXRB
YnNvbHV0ZVBhaW50UmVjdChlbmNsb3NpbmdJbnRSZWN0KHBhaW50UmVjdCkpOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCmluZGV4IDEwMmI4ODY1MzcyMGRjZDcxNjM0
OWFmYjRkZGViZDQ5OTk3NzFjZTcuLmNhNWQ4NGQwZDcxOGM4YTdjNjBiZWE0ODFkNWFmN2ExNWQx
M2ZjZmUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3Bw
CisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuY3BwCkBAIC01NCwxOSAr
NTQsMTcgQEAKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi1SZWY8Q1NTRmlsdGVyPiBDU1NGaWx0
ZXI6OmNyZWF0ZSgpCitSZWY8Q1NTRmlsdGVyPiBDU1NGaWx0ZXI6OmNyZWF0ZShmbG9hdCBzY2Fs
ZUZhY3RvcikKIHsKLSAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBDU1NGaWx0ZXIpOworICAgIHJl
dHVybiBhZG9wdFJlZigqbmV3IENTU0ZpbHRlcihzY2FsZUZhY3RvcikpOwogfQogCi1DU1NGaWx0
ZXI6OkNTU0ZpbHRlcigpCi0gICAgOiBGaWx0ZXIoRmlsdGVyOjpUeXBlOjpDU1NGaWx0ZXIsIEZs
b2F0U2l6ZSB7IDEsIDEgfSkKK0NTU0ZpbHRlcjo6Q1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9y
KQorICAgIDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBGbG9hdFNpemUgeyBzY2Fs
ZUZhY3Rvciwgc2NhbGVGYWN0b3IgfSkKICAgICAsIG1fc291cmNlR3JhcGhpYyhTb3VyY2VHcmFw
aGljOjpjcmVhdGUoKnRoaXMpKQogewogfQogCi1DU1NGaWx0ZXI6On5DU1NGaWx0ZXIoKSA9IGRl
ZmF1bHQ7Ci0KIEdyYXBoaWNzQ29udGV4dCogQ1NTRmlsdGVyOjppbnB1dENvbnRleHQoKQogewog
ICAgIHJldHVybiBzb3VyY2VJbWFnZSgpID8gJnNvdXJjZUltYWdlKCktPmNvbnRleHQoKSA6IG51
bGxwdHI7CkBAIC04Niw3ICs4NCw2IEBAIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IENTU0ZpbHRlcjo6
YnVpbGRSZWZlcmVuY2VGaWx0ZXIoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIEZpCiAgICAgfQog
CiAgICAgYXV0byBidWlsZGVyID0gbWFrZVVuaXF1ZTxTVkdGaWx0ZXJCdWlsZGVyPigmcHJldmlv
dXNFZmZlY3QpOwotICAgIG1fc291cmNlQWxwaGEgPSBidWlsZGVyLT5nZXRFZmZlY3RCeUlkKFNv
dXJjZUFscGhhOjplZmZlY3ROYW1lKCkpOwogCiAgICAgUmVmUHRyPEZpbHRlckVmZmVjdD4gZWZm
ZWN0OwogICAgIFZlY3RvcjxSZWY8RmlsdGVyRWZmZWN0Pj4gcmVmZXJlbmNlRWZmZWN0czsKQEAg
LTMwMiw3ICsyOTksNyBAQCBib29sIENTU0ZpbHRlcjo6YnVpbGQoUmVuZGVyRWxlbWVudCYgcmVu
ZGVyZXIsIGNvbnN0IEZpbHRlck9wZXJhdGlvbnMmIG9wZXJhdGlvbgogCiAgICAgbV9lZmZlY3Rz
LnNocmlua1RvRml0KCk7CiAKLSAgICBzZXRNYXhFZmZlY3RSZWN0cyhtX3NvdXJjZURyYXdpbmdS
ZWdpb24pOworICAgIHNldE1heEVmZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCgpKTsKICNpZiBV
U0UoQ09SRV9JTUFHRSkKICAgICBpZiAoIW1fZmlsdGVyUmVuZGVyZXIpCiAgICAgICAgIG1fZmls
dGVyUmVuZGVyZXIgPSBGaWx0ZXJFZmZlY3RSZW5kZXJlcjo6dHJ5Q3JlYXRlKHJlbmRlcmVyLnNl
dHRpbmdzKCkuY29yZUltYWdlQWNjZWxlcmF0ZWRGaWx0ZXJSZW5kZXJFbmFibGVkKCksIG1fZWZm
ZWN0cy5sYXN0KCkuZ2V0KCkpOwpAQCAtMzMxLDE0ICszMjgsMTQgQEAgdm9pZCBDU1NGaWx0ZXI6
OmFsbG9jYXRlQmFja2luZ1N0b3JlSWZOZWVkZWQoY29uc3QgR3JhcGhpY3NDb250ZXh0JiB0YXJn
ZXRDb250ZXgKICAgICBpZiAobV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkKQogICAgICAgICByZXR1
cm47CiAKLSAgICBhdXRvIGxvZ2ljYWxTaXplID0gbV9zb3VyY2VEcmF3aW5nUmVnaW9uLnNpemUo
KTsKKyAgICBhdXRvIGxvZ2ljYWxTaXplID0gc291cmNlSW1hZ2VSZWN0KCkuc2l6ZSgpOwogICAg
IGlmICghc291cmNlSW1hZ2UoKSB8fCBzb3VyY2VJbWFnZSgpLT5sb2dpY2FsU2l6ZSgpICE9IGxv
Z2ljYWxTaXplKSB7CiAjaWYgVVNFKERJUkVDVDJEKQotICAgICAgICBzZXRTb3VyY2VJbWFnZShJ
bWFnZUJ1ZmZlcjo6Y3JlYXRlKGxvZ2ljYWxTaXplLCByZW5kZXJpbmdNb2RlKCksICZ0YXJnZXRD
b250ZXh0LCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9yU3BhY2U6OlNSR0IoKSwgUGl4
ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUltYWdlKEltYWdlQnVmZmVyOjpj
cmVhdGUobG9naWNhbFNpemUsIHJlbmRlcmluZ01vZGUoKSwgJnRhcmdldENvbnRleHQsIDEsIERl
c3RpbmF0aW9uQ29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbHNl
CiAgICAgICAgIFVOVVNFRF9QQVJBTSh0YXJnZXRDb250ZXh0KTsKICAgICAgICAgUmVuZGVyaW5n
TW9kZSBtb2RlID0gbV9maWx0ZXJSZW5kZXJlciA/IFJlbmRlcmluZ01vZGU6OkFjY2VsZXJhdGVk
IDogcmVuZGVyaW5nTW9kZSgpOwotICAgICAgICBzZXRTb3VyY2VJbWFnZShJbWFnZUJ1ZmZlcjo6
Y3JlYXRlKGxvZ2ljYWxTaXplLCBtb2RlLCBmaWx0ZXJTY2FsZSgpLCBEZXN0aW5hdGlvbkNvbG9y
U3BhY2U6OlNSR0IoKSwgUGl4ZWxGb3JtYXQ6OkJHUkE4KSk7CisgICAgICAgIHNldFNvdXJjZUlt
YWdlKEltYWdlQnVmZmVyOjpjcmVhdGUobG9naWNhbFNpemUsIG1vZGUsIDEsIERlc3RpbmF0aW9u
Q29sb3JTcGFjZTo6U1JHQigpLCBQaXhlbEZvcm1hdDo6QkdSQTgpKTsKICNlbmRpZgogICAgIH0K
ICAgICBtX2dyYXBoaWNzQnVmZmVyQXR0YWNoZWQgPSB0cnVlOwpAQCAtMzUwLDkgKzM0Nyw5IEBA
IHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKQogICAg
IGxhc3RFZmZlY3QuZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgRmxv
YXRSZWN0IHN1YlJlZ2lvbiA9IGxhc3RFZmZlY3QubWF4RWZmZWN0UmVjdCgpOwogICAgIC8vIEF0
IGxlYXN0IG9uZSBGaWx0ZXJFZmZlY3QgaGFzIGEgdG9vIGJpZyBpbWFnZSBzaXplLCByZWNhbGN1
bGF0ZSB0aGUgZWZmZWN0IHNpemVzIHdpdGggbmV3IHNjYWxlIGZhY3RvcnMuCi0gICAgRmxvYXRT
aXplIHNjYWxlOwotICAgIGlmIChJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVn
aW9uLnNpemUoKSwgc2NhbGUpKSB7Ci0gICAgICAgIHNldEZpbHRlclJlc29sdXRpb24oc2NhbGUp
OworICAgIEZsb2F0U2l6ZSBmaWx0ZXJTY2FsZSB7IDEsIDEgfTsKKyAgICBpZiAoSW1hZ2VCdWZm
ZXI6OnNpemVOZWVkc0NsYW1waW5nKHN1YlJlZ2lvbi5zaXplKCksIGZpbHRlclNjYWxlKSkgewor
ICAgICAgICBzZXRGaWx0ZXJTY2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3Qu
ZGV0ZXJtaW5lRmlsdGVyUHJpbWl0aXZlU3VicmVnaW9uKCk7CiAgICAgfQogfQpAQCAtMzYwLDgg
KzM1Nyw2IEBAIHZvaWQgQ1NTRmlsdGVyOjpkZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdp
b24oKQogdm9pZCBDU1NGaWx0ZXI6OmNsZWFySW50ZXJtZWRpYXRlUmVzdWx0cygpCiB7CiAgICAg
bV9zb3VyY2VHcmFwaGljLT5jbGVhclJlc3VsdCgpOwotICAgIGlmIChtX3NvdXJjZUFscGhhKQot
ICAgICAgICBtX3NvdXJjZUFscGhhLT5jbGVhclJlc3VsdCgpOwogICAgIGZvciAoYXV0byYgZWZm
ZWN0IDogbV9lZmZlY3RzKQogICAgICAgICBlZmZlY3QtPmNsZWFyUmVzdWx0KCk7CiB9CkBAIC00
MDAsOSArMzk1LDkgQEAgSW1hZ2VCdWZmZXIqIENTU0ZpbHRlcjo6b3V0cHV0KCkgY29uc3QKIAog
dm9pZCBDU1NGaWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmIHNvdXJj
ZUltYWdlUmVjdCkKIHsKLSAgICBtX3NvdXJjZURyYXdpbmdSZWdpb24gPSBzb3VyY2VJbWFnZVJl
Y3Q7CisgICAgRmlsdGVyOjpzZXRGaWx0ZXJSZWdpb24oc291cmNlSW1hZ2VSZWN0KTsKKyAgICBG
aWx0ZXI6OnNldFNvdXJjZUltYWdlUmVjdChzb3VyY2VJbWFnZVJlY3QpOwogICAgIHNldE1heEVm
ZmVjdFJlY3RzKHNvdXJjZUltYWdlUmVjdCk7Ci0gICAgc2V0RmlsdGVyUmVnaW9uKHNvdXJjZUlt
YWdlUmVjdCk7CiAgICAgbV9ncmFwaGljc0J1ZmZlckF0dGFjaGVkID0gZmFsc2U7CiB9CiAKQEAg
LTQxNyw3ICs0MTIsNyBAQCBJbnRSZWN0IENTU0ZpbHRlcjo6b3V0cHV0UmVjdCgpIGNvbnN0CiAg
ICAgYXV0byYgbGFzdEVmZmVjdCA9IG1fZWZmZWN0cy5sYXN0KCkuZ2V0KCk7CiAgICAgCiAgICAg
aWYgKGxhc3RFZmZlY3QuaGFzUmVzdWx0KCkgfHwgKG1fZmlsdGVyUmVuZGVyZXIgJiYgbV9maWx0
ZXJSZW5kZXJlci0+aGFzUmVzdWx0KCkpKQotICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1
ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxCdWZmZXIoSW50UmVjdCB7IG1fZmlsdGVyUmVnaW9uIH0p
OworICAgICAgICByZXR1cm4gbGFzdEVmZmVjdC5yZXF1ZXN0ZWRSZWdpb25PZklucHV0UGl4ZWxC
dWZmZXIoSW50UmVjdCB7IGZpbHRlclJlZ2lvbigpIH0pOwogICAgIAogICAgIHJldHVybiB7IH07
CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmggYi9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvQ1NTRmlsdGVyLmgKaW5kZXggMDBiOTE5MTdiODA0Yzky
ZDk0MDhiNzU4ZTM3NWMyNTJmMjlkYjBjNS4uNTE5MzQ3MDFkMzZhZTJmYmNhNDNkOGNhNTE5NWNm
ZGM1MTYwYTJiMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5nL0NTU0ZpbHRl
ci5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9DU1NGaWx0ZXIuaApAQCAtMzgsNyAr
MzgsNiBAQCBjbGFzcyBGaWx0ZXJPcGVyYXRpb25zOwogY2xhc3MgR3JhcGhpY3NDb250ZXh0Owog
Y2xhc3MgUmVmZXJlbmNlRmlsdGVyT3BlcmF0aW9uOwogY2xhc3MgUmVuZGVyRWxlbWVudDsKLWNs
YXNzIFNvdXJjZUFscGhhOwogY2xhc3MgU291cmNlR3JhcGhpYzsKIAogZW51bSBjbGFzcyBGaWx0
ZXJDb25zdW1lciB7IEZpbHRlclByb3BlcnR5LCBGaWx0ZXJGdW5jdGlvbiB9OwpAQCAtNDcsMTMg
KzQ2LDExIEBAIGNsYXNzIENTU0ZpbHRlciBmaW5hbCA6IHB1YmxpYyBGaWx0ZXIgewogICAgIFdU
Rl9NQUtFX0ZBU1RfQUxMT0NBVEVEOwogICAgIGZyaWVuZCBjbGFzcyBSZW5kZXJMYXllckZpbHRl
cnM7CiBwdWJsaWM6Ci0gICAgc3RhdGljIFJlZjxDU1NGaWx0ZXI+IGNyZWF0ZSgpOwotCi0gICAg
dm9pZCBzZXRTb3VyY2VJbWFnZVJlY3QoY29uc3QgRmxvYXRSZWN0Jik7Ci0gICAgdm9pZCBzZXRG
aWx0ZXJSZWdpb24oY29uc3QgRmxvYXRSZWN0JiBmaWx0ZXJSZWdpb24pIHsgbV9maWx0ZXJSZWdp
b24gPSBmaWx0ZXJSZWdpb247IH0KKyAgICBzdGF0aWMgUmVmPENTU0ZpbHRlcj4gY3JlYXRlKGZs
b2F0IHNjYWxlRmFjdG9yID0gMSk7CiAKICAgICBJbWFnZUJ1ZmZlciogb3V0cHV0KCkgY29uc3Q7
CiAKKyAgICB2b2lkIHNldFNvdXJjZUltYWdlUmVjdChjb25zdCBGbG9hdFJlY3QmKTsKICAgICBi
b29sIGJ1aWxkKFJlbmRlckVsZW1lbnQmLCBjb25zdCBGaWx0ZXJPcGVyYXRpb25zJiwgRmlsdGVy
Q29uc3VtZXIpOwogICAgIHZvaWQgY2xlYXJJbnRlcm1lZGlhdGVSZXN1bHRzKCk7CiAgICAgdm9p
ZCBhcHBseSgpOwpAQCAtNjUsMTUgKzYyLDcgQEAgcHVibGljOgogICAgIEludE91dHNldHMgb3V0
c2V0cygpIGNvbnN0OwogCiBwcml2YXRlOgotICAgIENTU0ZpbHRlcigpOwotICAgIHZpcnR1YWwg
fkNTU0ZpbHRlcigpOwotCi0gICAgYm9vbCBpc0NTU0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsgcmV0
dXJuIHRydWU7IH0KLQotICAgIEZsb2F0UmVjdCBzb3VyY2VJbWFnZVJlY3QoKSBjb25zdCBmaW5h
bCB7IHJldHVybiBtX3NvdXJjZURyYXdpbmdSZWdpb247IH0KLQotICAgIEZsb2F0UmVjdCBmaWx0
ZXJSZWdpb24oKSBjb25zdCBmaW5hbCB7IHJldHVybiBtX2ZpbHRlclJlZ2lvbjsgfQotICAgIEZs
b2F0UmVjdCBmaWx0ZXJSZWdpb25JblVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1f
ZmlsdGVyUmVnaW9uOyB9CisgICAgQ1NTRmlsdGVyKGZsb2F0IHNjYWxlRmFjdG9yKTsKIAogICAg
IFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IGJ1aWxkUmVmZXJlbmNlRmlsdGVyKFJlbmRlckVsZW1lbnQm
LCBGaWx0ZXJFZmZlY3QmIHByZXZpb3VzRWZmZWN0LCBSZWZlcmVuY2VGaWx0ZXJPcGVyYXRpb24m
KTsKIApAQCAtODgsMTIgKzc3LDggQEAgcHJpdmF0ZToKIAogICAgIExheW91dFJlY3QgY29tcHV0
ZVNvdXJjZUltYWdlUmVjdEZvckRpcnR5UmVjdChjb25zdCBMYXlvdXRSZWN0JiBmaWx0ZXJCb3hS
ZWN0LCBjb25zdCBMYXlvdXRSZWN0JiBkaXJ0eVJlY3QpOwogCi0gICAgRmxvYXRSZWN0IG1fc291
cmNlRHJhd2luZ1JlZ2lvbjsKLSAgICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247Ci0KICAgICBW
ZWN0b3I8UmVmPEZpbHRlckVmZmVjdD4+IG1fZWZmZWN0czsKICAgICBSZWY8U291cmNlR3JhcGhp
Yz4gbV9zb3VyY2VHcmFwaGljOwotICAgIFJlZlB0cjxGaWx0ZXJFZmZlY3Q+IG1fc291cmNlQWxw
aGE7CiAKICAgICBtdXRhYmxlIEludE91dHNldHMgbV9vdXRzZXRzOwogCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvUmVuZGVyTGF5ZXJGaWx0ZXJzLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJMYXllckZpbHRlcnMuY3BwCmluZGV4IDI1MGE3ZDVjMGJh
YTBhYzc0MWE5MGM4MThiNjFhMDVmOTViOTY0YTQuLjRiNmVjZmVlYTUwY2U5MDkxNjM1YjFhYWM1
YWEyNGNhMDk2MGQ0NWQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5k
ZXJMYXllckZpbHRlcnMuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9SZW5kZXJM
YXllckZpbHRlcnMuY3BwCkBAIC0xMTgsMTggKzExOCwxMiBAQCB2b2lkIFJlbmRlckxheWVyRmls
dGVyczo6cmVtb3ZlUmVmZXJlbmNlRmlsdGVyQ2xpZW50cygpCiAKIHZvaWQgUmVuZGVyTGF5ZXJG
aWx0ZXJzOjpidWlsZEZpbHRlcihSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgZmxvYXQgc2NhbGVG
YWN0b3IsIFJlbmRlcmluZ01vZGUgcmVuZGVyaW5nTW9kZSkKIHsKLSAgICBpZiAoIW1fZmlsdGVy
KSB7Ci0gICAgICAgIG1fZmlsdGVyID0gQ1NTRmlsdGVyOjpjcmVhdGUoKTsKLSAgICAgICAgbV9m
aWx0ZXItPnNldEZpbHRlclNjYWxlKHNjYWxlRmFjdG9yKTsKLSAgICAgICAgbV9maWx0ZXItPnNl
dFJlbmRlcmluZ01vZGUocmVuZGVyaW5nTW9kZSk7Ci0gICAgfSBlbHNlIGlmIChtX2ZpbHRlci0+
ZmlsdGVyU2NhbGUoKSAhPSBzY2FsZUZhY3RvcikgewotICAgICAgICBtX2ZpbHRlci0+c2V0Rmls
dGVyU2NhbGUoc2NhbGVGYWN0b3IpOwotICAgICAgICBtX2ZpbHRlci0+Y2xlYXJJbnRlcm1lZGlh
dGVSZXN1bHRzKCk7Ci0gICAgfQorICAgIC8vIEZJWE1FOiB0aGlzIHJlYnVpbGRzIHRoZSBlbnRp
cmUgZWZmZWN0cyBjaGFpbiBldmVuIGlmIHRoZSBmaWx0ZXIgc3R5bGUgZGlkbid0IGNoYW5nZS4K
KyAgICBtX2ZpbHRlciA9IENTU0ZpbHRlcjo6Y3JlYXRlKHNjYWxlRmFjdG9yKTsKKyAgICBtX2Zp
bHRlci0+c2V0UmVuZGVyaW5nTW9kZShyZW5kZXJpbmdNb2RlKTsKIAogICAgIC8vIElmIHRoZSBm
aWx0ZXIgZmFpbHMgdG8gYnVpbGQsIHJlbW92ZSBpdCBmcm9tIHRoZSBsYXllci4gSXQgd2lsbCBz
dGlsbCBhdHRlbXB0IHRvCiAgICAgLy8gZ28gdGhyb3VnaCByZWd1bGFyIHByb2Nlc3NpbmcgKGUu
Zy4gY29tcG9zaXRpbmcpLCBidXQgbmV2ZXIgYXBwbHkgYW55dGhpbmcuCi0gICAgLy8gRklYTUU6
IHRoaXMgcmVidWlsZHMgdGhlIGVudGlyZSBlZmZlY3RzIGNoYWluIGV2ZW4gaWYgdGhlIGZpbHRl
ciBzdHlsZSBkaWRuJ3QgY2hhbmdlLgogICAgIGlmICghbV9maWx0ZXItPmJ1aWxkKHJlbmRlcmVy
LCByZW5kZXJlci5zdHlsZSgpLmZpbHRlcigpLCBGaWx0ZXJDb25zdW1lcjo6RmlsdGVyUHJvcGVy
dHkpKQogICAgICAgICBtX2ZpbHRlciA9IG51bGxwdHI7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9yZW5kZXJpbmcvc3ZnL1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCmluZGV4
IDE5NTA5ZDk3MThhZmYxMTBmODQxZWM0OTc2Zjk3ZmIxYTkzNGQ4YTUuLjUzN2U2NTVlZTVkNjY2
ZTRmODU1MDg3NGY5MjFhYjIzZjAxZTBlNTQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3Jl
bmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJD
b3JlL3JlbmRlcmluZy9zdmcvUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuY3BwCkBAIC0xNDMsMzEg
KzE0MywyNiBAQCBib29sIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjphcHBseVJlc291cmNlKFJl
bmRlckVsZW1lbnQmIHJlbmRlcmVyLCBjb25zdCBSZW5kZQogICAgICAgICByZXR1cm4gZmFsc2U7
CiAKICAgICAvLyBFbGltaW5hdGUgc2hlYXIgb2YgdGhlIGFic29sdXRlIHRyYW5zZm9ybWF0aW9u
IG1hdHJpeCwgdG8gYmUgYWJsZSB0byBwcm9kdWNlIHVuc2hlYXJlZCB0aWxlIGltYWdlcyBmb3Ig
ZmVUaWxlLgotICAgIGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtID0gQWZm
aW5lVHJhbnNmb3JtKGFic29sdXRlVHJhbnNmb3JtLnhTY2FsZSgpLCAwLCAwLCBhYnNvbHV0ZVRy
YW5zZm9ybS55U2NhbGUoKSwgMCwgMCk7CisgICAgRmxvYXRTaXplIGZpbHRlclNjYWxlKGFic29s
dXRlVHJhbnNmb3JtLnhTY2FsZSgpLCBhYnNvbHV0ZVRyYW5zZm9ybS55U2NhbGUoKSk7CiAKICAg
ICAvLyBEZXRlcm1pbmUgYWJzb2x1dGUgYm91bmRhcmllcyBvZiB0aGUgZmlsdGVyIGFuZCB0aGUg
ZHJhd2luZyByZWdpb24uCiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbiA9IHJlbmRlcmVy
LnN0cm9rZUJvdW5kaW5nQm94KCk7CiAgICAgZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbi5pbnRl
cnNlY3QoZmlsdGVyRGF0YS0+Ym91bmRhcmllcyk7Ci0gICAgRmxvYXRSZWN0IGFic29sdXRlRHJh
d2luZ1JlZ2lvbiA9IGZpbHRlckRhdGEtPnNoZWFyRnJlZUFic29sdXRlVHJhbnNmb3JtLm1hcFJl
Y3QoZmlsdGVyRGF0YS0+ZHJhd2luZ1JlZ2lvbik7CisKKyAgICAvLyBEZXRlcm1pbmUgc2NhbGUg
ZmFjdG9yIGZvciBmaWx0ZXIuIFRoZSBzaXplIG9mIGludGVybWVkaWF0ZSBJbWFnZUJ1ZmZlcnMg
c2hvdWxkbid0IGJlIGJpZ2dlciB0aGFuIGtNYXhGaWx0ZXJTaXplLgorICAgIEZsb2F0UmVjdCBh
YnNvbHV0ZURyYXdpbmdSZWdpb24gPSBmaWx0ZXJEYXRhLT5kcmF3aW5nUmVnaW9uOworICAgIGFi
c29sdXRlRHJhd2luZ1JlZ2lvbi5zY2FsZShmaWx0ZXJTY2FsZSk7CisgICAgSW1hZ2VCdWZmZXI6
OnNpemVOZWVkc0NsYW1waW5nKGFic29sdXRlRHJhd2luZ1JlZ2lvbi5zaXplKCksIGZpbHRlclNj
YWxlKTsKIAogICAgIC8vIENyZWF0ZSB0aGUgU1ZHRmlsdGVyIG9iamVjdC4KICAgICBib29sIHBy
aW1pdGl2ZUJvdW5kaW5nQm94TW9kZSA9IGZpbHRlckVsZW1lbnQoKS5wcmltaXRpdmVVbml0cygp
ID09IFNWR1VuaXRUeXBlczo6U1ZHX1VOSVRfVFlQRV9PQkpFQ1RCT1VORElOR0JPWDsKLSAgICBm
aWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJEYXRhLT5zaGVhckZy
ZWVBYnNvbHV0ZVRyYW5zZm9ybSwgYWJzb2x1dGVEcmF3aW5nUmVnaW9uLCB0YXJnZXRCb3VuZGlu
Z0JveCwgZmlsdGVyRGF0YS0+Ym91bmRhcmllcywgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsK
KyAgICBmaWx0ZXJEYXRhLT5maWx0ZXIgPSBTVkdGaWx0ZXI6OmNyZWF0ZShmaWx0ZXJTY2FsZSwg
YWJzb2x1dGVEcmF3aW5nUmVnaW9uLCBmaWx0ZXJEYXRhLT5ib3VuZGFyaWVzLCB0YXJnZXRCb3Vu
ZGluZ0JveCwgcHJpbWl0aXZlQm91bmRpbmdCb3hNb2RlKTsKIAogICAgIC8vIENyZWF0ZSBhbGwg
cmVsZXZhbnQgZmlsdGVyIHByaW1pdGl2ZXMuCiAgICAgZmlsdGVyRGF0YS0+YnVpbGRlciA9IGJ1
aWxkUHJpbWl0aXZlcygqZmlsdGVyRGF0YS0+ZmlsdGVyKTsKICAgICBpZiAoIWZpbHRlckRhdGEt
PmJ1aWxkZXIpCiAgICAgICAgIHJldHVybiBmYWxzZTsKIAotICAgIC8vIERldGVybWluZSBzY2Fs
ZSBmYWN0b3IgZm9yIGZpbHRlci4gVGhlIHNpemUgb2YgaW50ZXJtZWRpYXRlIEltYWdlQnVmZmVy
cyBzaG91bGRuJ3QgYmUgYmlnZ2VyIHRoYW4ga01heEZpbHRlclNpemUuCi0gICAgRmxvYXRSZWN0
IHRlbXBTb3VyY2VSZWN0ID0gYWJzb2x1dGVEcmF3aW5nUmVnaW9uOwotICAgIEZsb2F0U2l6ZSBz
Y2FsZSgxLCAxKTsKLSAgICBJbWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcodGVtcFNvdXJj
ZVJlY3Quc2l6ZSgpLCBzY2FsZSk7Ci0gICAgdGVtcFNvdXJjZVJlY3Quc2NhbGUoc2NhbGUud2lk
dGgoKSwgc2NhbGUuaGVpZ2h0KCkpOwotCi0gICAgLy8gU2V0IHRoZSBzY2FsZSBsZXZlbCBpbiBT
VkdGaWx0ZXIuCi0gICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJSZXNvbHV0aW9uKHNj
YWxlKTsKLQogICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBtYXhUb3RhbE9mRWZmZWN0SW5wdXRz
ID0gMTAwOwogICAgIEZpbHRlckVmZmVjdCogbGFzdEVmZmVjdCA9IGZpbHRlckRhdGEtPmJ1aWxk
ZXItPmxhc3RFZmZlY3QoKTsKICAgICBpZiAoIWxhc3RFZmZlY3QgfHwgbGFzdEVmZmVjdC0+dG90
YWxOdW1iZXJPZkVmZmVjdElucHV0cygpID4gbWF4VG90YWxPZkVmZmVjdElucHV0cykKQEAgLTE3
NywxMCArMTcyLDExIEBAIGJvb2wgUmVuZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3Vy
Y2UoUmVuZGVyRWxlbWVudCYgcmVuZGVyZXIsIGNvbnN0IFJlbmRlCiAKICAgICBsYXN0RWZmZWN0
LT5kZXRlcm1pbmVGaWx0ZXJQcmltaXRpdmVTdWJyZWdpb24oKTsKICAgICBGbG9hdFJlY3Qgc3Vi
UmVnaW9uID0gbGFzdEVmZmVjdC0+bWF4RWZmZWN0UmVjdCgpOworCiAgICAgLy8gQXQgbGVhc3Qg
b25lIEZpbHRlckVmZmVjdCBoYXMgYSB0b28gYmlnIGltYWdlIHNpemUsCiAgICAgLy8gcmVjYWxj
dWxhdGUgdGhlIGVmZmVjdCBzaXplcyB3aXRoIG5ldyBzY2FsZSBmYWN0b3JzLgotICAgIGlmIChJ
bWFnZUJ1ZmZlcjo6c2l6ZU5lZWRzQ2xhbXBpbmcoc3ViUmVnaW9uLnNpemUoKSwgc2NhbGUpKSB7
Ci0gICAgICAgIGZpbHRlckRhdGEtPmZpbHRlci0+c2V0RmlsdGVyUmVzb2x1dGlvbihzY2FsZSk7
CisgICAgaWYgKEltYWdlQnVmZmVyOjpzaXplTmVlZHNDbGFtcGluZyhzdWJSZWdpb24uc2l6ZSgp
LCBmaWx0ZXJTY2FsZSkpIHsKKyAgICAgICAgZmlsdGVyRGF0YS0+ZmlsdGVyLT5zZXRGaWx0ZXJT
Y2FsZShmaWx0ZXJTY2FsZSk7CiAgICAgICAgIGxhc3RFZmZlY3QtPmRldGVybWluZUZpbHRlclBy
aW1pdGl2ZVN1YnJlZ2lvbigpOwogICAgIH0KIApAQCAtMTk0LDkgKzE5MCw3IEBAIGJvb2wgUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXI6OmFwcGx5UmVzb3VyY2UoUmVuZGVyRWxlbWVudCYgcmVuZGVy
ZXIsIGNvbnN0IFJlbmRlCiAgICAgfQogCiAgICAgLy8gQ2hhbmdlIHRoZSBjb29yZGluYXRlIHRy
YW5zZm9ybWF0aW9uIGFwcGxpZWQgdG8gdGhlIGZpbHRlcmVkIGVsZW1lbnQgdG8gcmVmbGVjdCB0
aGUgcmVzb2x1dGlvbiBvZiB0aGUgZmlsdGVyLgotICAgIEFmZmluZVRyYW5zZm9ybSBlZmZlY3Rp
dmVUcmFuc2Zvcm07Ci0gICAgZWZmZWN0aXZlVHJhbnNmb3JtLnNjYWxlKHNjYWxlLndpZHRoKCks
IHNjYWxlLmhlaWdodCgpKTsKLSAgICBlZmZlY3RpdmVUcmFuc2Zvcm0ubXVsdGlwbHkoZmlsdGVy
RGF0YS0+c2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0pOworICAgIEFmZmluZVRyYW5zZm9ybSBl
ZmZlY3RpdmVUcmFuc2Zvcm0gPSBBZmZpbmVUcmFuc2Zvcm0oZmlsdGVyU2NhbGUud2lkdGgoKSwg
MCwgMCwgZmlsdGVyU2NhbGUuaGVpZ2h0KCksIDAsIDApOwogCiAgICAgYXV0byByZW5kZXJpbmdN
b2RlID0gcmVuZGVyZXIuc2V0dGluZ3MoKS5hY2NlbGVyYXRlZEZpbHRlcnNFbmFibGVkKCkgPyBS
ZW5kZXJpbmdNb2RlOjpBY2NlbGVyYXRlZCA6IFJlbmRlcmluZ01vZGU6OlVuYWNjZWxlcmF0ZWQ7
CiAjaWYgRU5BQkxFKERFU1RJTkFUSU9OX0NPTE9SX1NQQUNFX0xJTkVBUl9TUkdCKQpAQCAtMjg5
LDEzICsyODMsOSBAQCB2b2lkIFJlbmRlclNWR1Jlc291cmNlRmlsdGVyOjpwb3N0QXBwbHlSZXNv
dXJjZShSZW5kZXJFbGVtZW50JiByZW5kZXJlciwgR3JhcGhpYwogCiAgICAgICAgIEltYWdlQnVm
ZmVyKiByZXN1bHRJbWFnZSA9IGxhc3RFZmZlY3QtPmltYWdlQnVmZmVyUmVzdWx0KCk7CiAgICAg
ICAgIGlmIChyZXN1bHRJbWFnZSkgewotICAgICAgICAgICAgY29udGV4dC0+Y29uY2F0Q1RNKGZp
bHRlckRhdGEuc2hlYXJGcmVlQWJzb2x1dGVUcmFuc2Zvcm0uaW52ZXJzZSgpLnZhbHVlX29yKEFm
ZmluZVRyYW5zZm9ybSgpKSk7Ci0KLSAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKEZsb2F0U2l6
ZSgxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS53aWR0aCgpLCAxIC8g
ZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKS5oZWlnaHQoKSkpOworICAgICAg
ICAgICAgY29udGV4dC0+c2NhbGUoRmxvYXRTaXplKDEgLyBmaWx0ZXJEYXRhLmZpbHRlci0+Zmls
dGVyU2NhbGUoKS53aWR0aCgpLCAxIC8gZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclNjYWxlKCku
aGVpZ2h0KCkpKTsKICAgICAgICAgICAgIGNvbnRleHQtPmRyYXdJbWFnZUJ1ZmZlcigqcmVzdWx0
SW1hZ2UsIGxhc3RFZmZlY3QtPmFic29sdXRlUGFpbnRSZWN0KCkpOwotICAgICAgICAgICAgY29u
dGV4dC0+c2NhbGUoZmlsdGVyRGF0YS5maWx0ZXItPmZpbHRlclJlc29sdXRpb24oKSk7Ci0KLSAg
ICAgICAgICAgIGNvbnRleHQtPmNvbmNhdENUTShmaWx0ZXJEYXRhLnNoZWFyRnJlZUFic29sdXRl
VHJhbnNmb3JtKTsKKyAgICAgICAgICAgIGNvbnRleHQtPnNjYWxlKGZpbHRlckRhdGEuZmlsdGVy
LT5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgfQogICAgIH0KICAgICBmaWx0ZXJEYXRhLnNvdXJj
ZUdyYXBoaWNCdWZmZXIgPSBudWxscHRyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oIGIvU291cmNlL1dlYkNvcmUvcmVu
ZGVyaW5nL3N2Zy9SZW5kZXJTVkdSZXNvdXJjZUZpbHRlci5oCmluZGV4IDhjZTBjN2FiYzE0M2Jk
YjY1Mzg1MGM5M2UzMjkyYWM5ZGE0OWJiYzcuLjAxODUzOGFjOWZhNTJlY2I5MWE1ZTVmNjVjNTM5
ODE1YjJhNzJiZmEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3JlbmRlcmluZy9zdmcvUmVu
ZGVyU1ZHUmVzb3VyY2VGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJpbmcvc3Zn
L1JlbmRlclNWR1Jlc291cmNlRmlsdGVyLmgKQEAgLTQ3LDcgKzQ3LDYgQEAgcHVibGljOgogICAg
IHN0ZDo6dW5pcXVlX3B0cjxTVkdGaWx0ZXJCdWlsZGVyPiBidWlsZGVyOwogICAgIFJlZlB0cjxJ
bWFnZUJ1ZmZlcj4gc291cmNlR3JhcGhpY0J1ZmZlcjsKICAgICBHcmFwaGljc0NvbnRleHQqIHNh
dmVkQ29udGV4dCB7IG51bGxwdHIgfTsKLSAgICBBZmZpbmVUcmFuc2Zvcm0gc2hlYXJGcmVlQWJz
b2x1dGVUcmFuc2Zvcm07CiAgICAgRmxvYXRSZWN0IGJvdW5kYXJpZXM7CiAgICAgRmxvYXRSZWN0
IGRyYXdpbmdSZWdpb247CiAgICAgRmxvYXRTaXplIHNjYWxlOwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvcmVuZGVyaW5nL3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3JlbmRlcmluZy9zdmcvU1ZHUmVuZGVyVHJlZUFzVGV4dC5jcHAKaW5kZXggYzY1MDIx
YmVlMDM1NTY1YWFiMzFjNjdmYjkzMTlmODhlNjE4MDdjNy4uYTJkMzVmOWFjN2EzZDI0ZTEyZWNl
ZjY1NTI0ZmNkYjFiMzc3ODIxYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcmVuZGVyaW5n
L3N2Zy9TVkdSZW5kZXJUcmVlQXNUZXh0LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9yZW5kZXJp
bmcvc3ZnL1NWR1JlbmRlclRyZWVBc1RleHQuY3BwCkBAIC00MzIsNyArNDMyLDggQEAgdm9pZCB3
cml0ZVNWR1Jlc291cmNlQ29udGFpbmVyKFRleHRTdHJlYW0mIHRzLCBjb25zdCBSZW5kZXJTVkdS
ZXNvdXJjZUNvbnRhaW5lciYKICAgICAgICAgdHMgPDwgIlxuIjsKICAgICAgICAgLy8gQ3JlYXRp
bmcgYSBwbGFjZWhvbGRlciBmaWx0ZXIgd2hpY2ggaXMgcGFzc2VkIHRvIHRoZSBidWlsZGVyLgog
ICAgICAgICBGbG9hdFJlY3QgZHVtbXlSZWN0OwotICAgICAgICBhdXRvIGR1bW15RmlsdGVyID0g
U1ZHRmlsdGVyOjpjcmVhdGUoQWZmaW5lVHJhbnNmb3JtKCksIGR1bW15UmVjdCwgZHVtbXlSZWN0
LCBkdW1teVJlY3QsIHRydWUpOworICAgICAgICBGbG9hdFNpemUgZHVtbXlTY2FsZSgxLCAxKTsK
KyAgICAgICAgYXV0byBkdW1teUZpbHRlciA9IFNWR0ZpbHRlcjo6Y3JlYXRlKGR1bW15U2NhbGUs
IGR1bW15UmVjdCwgZHVtbXlSZWN0LCBkdW1teVJlY3QsIHRydWUpOwogICAgICAgICBpZiAoYXV0
byBidWlsZGVyID0gZmlsdGVyLmJ1aWxkUHJpbWl0aXZlcyhkdW1teUZpbHRlci5nZXQoKSkpIHsK
ICAgICAgICAgICAgIFRleHRTdHJlYW06OkluZGVudFNjb3BlIGluZGVudFNjb3BlKHRzKTsKIApk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRkVJbWFn
ZS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNw
cAppbmRleCBmYzlmMWQ1OTRlZjU3ODZhNDcxMDkyYTQyMGJjOTIzN2QzZjQ5YTkzLi40NTQ0NWIy
ODEzNDM2ZGJlZjYzNTY5MTU4MWRlNjFkZWZhODIzYmFkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGRUltYWdlLmNwcApAQCAtNjUsNyArNjUsNyBA
QCB2b2lkIEZFSW1hZ2U6OmRldGVybWluZUFic29sdXRlUGFpbnRSZWN0KCkKICAgICAgICAgfQog
ICAgICk7CiAKLSAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICBpbWFnZVJlY3Quc2NhbGUoZmlsdGVyKCkuZmlsdGVyU2Nh
bGUoKSk7CiAKICAgICBpZiAoY2xpcHNUb0JvdW5kcygpKQogICAgICAgICBpbWFnZVJlY3QuaW50
ZXJzZWN0KG1heEVmZmVjdFJlY3QoKSk7CkBAIC05MSwxNCArOTEsMTQgQEAgdm9pZCBGRUltYWdl
OjpwbGF0Zm9ybUFwcGx5U29mdHdhcmUoKQogICAgICAgICAgICAgYXV0byBpbWFnZVJlY3QgPSBw
cmltaXRpdmVTdWJyZWdpb247CiAgICAgICAgICAgICBhdXRvIHNyY1JlY3QgPSBtX3NvdXJjZUlt
YWdlUmVjdDsKICAgICAgICAgICAgIG1fcHJlc2VydmVBc3BlY3RSYXRpby50cmFuc2Zvcm1SZWN0
KGltYWdlUmVjdCwgc3JjUmVjdCk7Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5h
YnNvbHV0ZVRyYW5zZm9ybSgpLm1hcFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdl
UmVjdC5zY2FsZShmaWx0ZXIoKS5maWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVj
dCA9IGRyYXdpbmdSZWdpb25PZklucHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAg
ICAgICAgIGNvbnRleHQuZHJhd0ltYWdlKGltYWdlLCBpbWFnZVJlY3QsIHNyY1JlY3QpOwogICAg
ICAgICB9LAogICAgICAgICBbJl0gKGNvbnN0IFJlZjxJbWFnZUJ1ZmZlcj4mIGltYWdlQnVmZmVy
KSB7CiAgICAgICAgICAgICBhdXRvIGltYWdlUmVjdCA9IHByaW1pdGl2ZVN1YnJlZ2lvbjsKICAg
ICAgICAgICAgIGltYWdlUmVjdC5tb3ZlQnkobV9zb3VyY2VJbWFnZVJlY3QubG9jYXRpb24oKSk7
Ci0gICAgICAgICAgICBpbWFnZVJlY3QgPSBmaWx0ZXIoKS5hYnNvbHV0ZVRyYW5zZm9ybSgpLm1h
cFJlY3QoaW1hZ2VSZWN0KTsKKyAgICAgICAgICAgIGltYWdlUmVjdC5zY2FsZShmaWx0ZXIoKS5m
aWx0ZXJTY2FsZSgpKTsKICAgICAgICAgICAgIGltYWdlUmVjdCA9IGRyYXdpbmdSZWdpb25PZklu
cHV0SW1hZ2UoSW50UmVjdChpbWFnZVJlY3QpKTsKICAgICAgICAgICAgIGNvbnRleHQuZHJhd0lt
YWdlQnVmZmVyKGltYWdlQnVmZmVyLCBpbWFnZVJlY3QubG9jYXRpb24oKSk7CiAgICAgICAgIH0K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRl
ci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuY3Bw
CmluZGV4IDgyZTk0MzY3MjNlODU1ZDY1Mjc5N2ExMzcwN2Q1YWJlOWVlNjBhMjcuLjczMmViMTg4
YTViYmNjODU4NGRhY2NiZWUyMDg3ZjI4MDJhNTdhZjYgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3N2Zy9ncmFwaGljcy9maWx0ZXJzL1NWR0ZpbHRlci5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmNwcApAQCAtMjQsMjcgKzI0LDI0IEBA
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKIAotU1ZHRmlsdGVyOjpTVkdGaWx0ZXIoY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0
ZVNvdXJjZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gs
IGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKQotICAg
IDogRmlsdGVyKEZpbHRlcjo6VHlwZTo6Q1NTRmlsdGVyLCBhYnNvbHV0ZVRyYW5zZm9ybSkKLSAg
ICAsIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uKGFic29sdXRlU291cmNlRHJhd2luZ1Jl
Z2lvbikKK1NWR0ZpbHRlcjo6U1ZHRmlsdGVyKGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUs
IGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1hZ2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRl
clJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RC
Qm94TW9kZSkKKyAgICA6IEZpbHRlcihGaWx0ZXI6OlR5cGU6OlNWR0ZpbHRlciwgZmlsdGVyU2Nh
bGUsIHNvdXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uKQogICAgICwgbV90YXJnZXRCb3VuZGlu
Z0JveCh0YXJnZXRCb3VuZGluZ0JveCkKLSAgICAsIG1fZmlsdGVyUmVnaW9uKGZpbHRlclJlZ2lv
bikKICAgICAsIG1fZWZmZWN0QkJveE1vZGUoZWZmZWN0QkJveE1vZGUpCiB7Ci0gICAgbV9hYnNv
bHV0ZUZpbHRlclJlZ2lvbiA9IGFic29sdXRlVHJhbnNmb3JtLm1hcFJlY3QoZmlsdGVyUmVnaW9u
KTsKIH0KIAotRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJSZXNvbHV0aW9uKEZs
b2F0U2l6ZSBzaXplKSBjb25zdAorRmxvYXRTaXplIFNWR0ZpbHRlcjo6c2NhbGVkQnlGaWx0ZXJT
Y2FsZShGbG9hdFNpemUgc2l6ZSkgY29uc3QKIHsKICAgICBpZiAobV9lZmZlY3RCQm94TW9kZSkK
ICAgICAgICAgc2l6ZSA9IHNpemUgKiBtX3RhcmdldEJvdW5kaW5nQm94LnNpemUoKTsKIAotICAg
IHJldHVybiBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlvbihzaXplKSAqIG1fYWJzb2x1
dGVGaWx0ZXJSZWdpb24uc2l6ZSgpIC8gbV9maWx0ZXJSZWdpb24uc2l6ZSgpOworICAgIHJldHVy
biBGaWx0ZXI6OnNjYWxlZEJ5RmlsdGVyU2NhbGUoc2l6ZSk7CiB9CiAKLVJlZjxTVkdGaWx0ZXI+
IFNWR0ZpbHRlcjo6Y3JlYXRlKGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgYWJzb2x1dGVUcmFuc2Zv
cm0sIGNvbnN0IEZsb2F0UmVjdCYgYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uLCBjb25zdCBG
bG9hdFJlY3QmIHRhcmdldEJvdW5kaW5nQm94LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lv
biwgYm9vbCBlZmZlY3RCQm94TW9kZSkKK1JlZjxTVkdGaWx0ZXI+IFNWR0ZpbHRlcjo6Y3JlYXRl
KGNvbnN0IEZsb2F0U2l6ZSYgZmlsdGVyU2NhbGUsIGNvbnN0IEZsb2F0UmVjdCYgc291cmNlSW1h
Z2VSZWN0LCBjb25zdCBGbG9hdFJlY3QmIGZpbHRlclJlZ2lvbiwgY29uc3QgRmxvYXRSZWN0JiB0
YXJnZXRCb3VuZGluZ0JveCwgYm9vbCBlZmZlY3RCQm94TW9kZSkKIHsKLSAgICByZXR1cm4gYWRv
cHRSZWYoKm5ldyBTVkdGaWx0ZXIoYWJzb2x1dGVUcmFuc2Zvcm0sIGFic29sdXRlU291cmNlRHJh
d2luZ1JlZ2lvbiwgdGFyZ2V0Qm91bmRpbmdCb3gsIGZpbHRlclJlZ2lvbiwgZWZmZWN0QkJveE1v
ZGUpKTsKKyAgICByZXR1cm4gYWRvcHRSZWYoKm5ldyBTVkdGaWx0ZXIoZmlsdGVyU2NhbGUsIHNv
dXJjZUltYWdlUmVjdCwgZmlsdGVyUmVnaW9uLCB0YXJnZXRCb3VuZGluZ0JveCwgZWZmZWN0QkJv
eE1vZGUpKTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvc3ZnL2dyYXBoaWNzL2ZpbHRlcnMvU1ZHRmlsdGVyLmggYi9Tb3VyY2UvV2ViQ29y
ZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9TVkdGaWx0ZXIuaAppbmRleCA1MjU4ODZhZjMwODRjZTc4
MzVjODRkNGE5NzYzNWRmMmU2MzliNWE4Li41MDgxMWU2ZmI0OWEyMGE1YWUyNzkxYjU0MDM5Yzdm
ODI3YjY3ZmRhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVy
cy9TVkdGaWx0ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9zdmcvZ3JhcGhpY3MvZmlsdGVycy9T
VkdGaWx0ZXIuaApAQCAtMjAsOSArMjAsNyBAQAogCiAjcHJhZ21hIG9uY2UKIAotI2luY2x1ZGUg
IkFmZmluZVRyYW5zZm9ybS5oIgogI2luY2x1ZGUgIkZpbHRlci5oIgotI2luY2x1ZGUgIkZpbHRl
ckVmZmVjdC5oIgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgPHd0Zi9SZWYuaD4K
ICNpbmNsdWRlIDx3dGYvVHlwZUNhc3RzLmg+CkBAIC0zMSwyNSArMjksMTYgQEAgbmFtZXNwYWNl
IFdlYkNvcmUgewogCiBjbGFzcyBTVkdGaWx0ZXIgZmluYWwgOiBwdWJsaWMgRmlsdGVyIHsKIHB1
YmxpYzoKLSAgICBzdGF0aWMgUmVmPFNWR0ZpbHRlcj4gY3JlYXRlKGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVjdCYsIGNvbnN0IEZsb2F0UmVj
dCYsIGJvb2wpOworICAgIHN0YXRpYyBSZWY8U1ZHRmlsdGVyPiBjcmVhdGUoY29uc3QgRmxvYXRT
aXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3VyY2VJbWFnZVJlY3QsIGNvbnN0
IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZsb2F0UmVjdCYgZmlsdGVyUmVn
aW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0UmVjdCBmaWx0ZXJSZWdpb25J
blVzZXJTcGFjZSgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fZmlsdGVyUmVnaW9uOyB9Ci0gICAg
RmxvYXRSZWN0IGZpbHRlclJlZ2lvbigpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVG
aWx0ZXJSZWdpb247IH0KKyAgICBGbG9hdFNpemUgc2NhbGVkQnlGaWx0ZXJTY2FsZShGbG9hdFNp
emUpIGNvbnN0IGZpbmFsOwogCi0gICAgRmxvYXRTaXplIHNjYWxlZEJ5RmlsdGVyUmVzb2x1dGlv
bihGbG9hdFNpemUpIGNvbnN0IGZpbmFsOwotCi0gICAgRmxvYXRSZWN0IHNvdXJjZUltYWdlUmVj
dCgpIGNvbnN0IGZpbmFsIHsgcmV0dXJuIG1fYWJzb2x1dGVTb3VyY2VEcmF3aW5nUmVnaW9uOyB9
CiAgICAgRmxvYXRSZWN0IHRhcmdldEJvdW5kaW5nQm94KCkgY29uc3QgeyByZXR1cm4gbV90YXJn
ZXRCb3VuZGluZ0JveDsgfQogCi0gICAgYm9vbCBpc1NWR0ZpbHRlcigpIGNvbnN0IGZpbmFsIHsg
cmV0dXJuIHRydWU7IH0KLQogcHJpdmF0ZToKLSAgICBTVkdGaWx0ZXIoY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiBhYnNvbHV0ZVRyYW5zZm9ybSwgY29uc3QgRmxvYXRSZWN0JiBhYnNvbHV0ZVNvdXJj
ZURyYXdpbmdSZWdpb24sIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0
IEZsb2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKKyAgICBTVkdG
aWx0ZXIoY29uc3QgRmxvYXRTaXplJiBmaWx0ZXJTY2FsZSwgY29uc3QgRmxvYXRSZWN0JiBzb3Vy
Y2VJbWFnZVJlY3QsIGNvbnN0IEZsb2F0UmVjdCYgdGFyZ2V0Qm91bmRpbmdCb3gsIGNvbnN0IEZs
b2F0UmVjdCYgZmlsdGVyUmVnaW9uLCBib29sIGVmZmVjdEJCb3hNb2RlKTsKIAotICAgIEZsb2F0
UmVjdCBtX2Fic29sdXRlU291cmNlRHJhd2luZ1JlZ2lvbjsKICAgICBGbG9hdFJlY3QgbV90YXJn
ZXRCb3VuZGluZ0JveDsKLSAgICBGbG9hdFJlY3QgbV9hYnNvbHV0ZUZpbHRlclJlZ2lvbjsKLSAg
ICBGbG9hdFJlY3QgbV9maWx0ZXJSZWdpb247CiAgICAgYm9vbCBtX2VmZmVjdEJCb3hNb2RlOwog
fTsKIApkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvQ2hhbmdlTG9nIGIvTGF5b3V0VGVzdHMvQ2hh
bmdlTG9nCmluZGV4IDJkNGY2M2FhOGEwMTU5NDhiNGY1MDczZmE0MGM3NWNhYjdjNjBlYTkuLjFj
ZDJjNmQyNjVlZTI2OTMxMGViYWVhMWU3NGEzYzMzMTkwYWRlOGQgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL0NoYW5nZUxvZworKysgYi9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKQEAgLTEsMyArMSwy
MCBAQAorMjAyMS0xMS0xMCAgU2FpZCBBYm91LUhhbGxhd2EgIDxzYWlkQGFwcGxlLmNvbT4KKwor
ICAgICAgICBbR1BVIFByb2Nlc3NdIE1ha2UgU1ZHRmlsdGVyIGFuZCBDU1NGaWx0ZXIgd29yayBp
biB0aGUgc2FtZSBjb29yZGluYXRlcyBzeXN0ZW0KKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtp
dC5vcmcvc2hvd19idWcuY2dpP2lkPTIzMjQ1NworICAgICAgICByZGFyOi8vODUwMzUzNzkKKwor
ICAgICAgICBSZXZpZXdlZCBieSBTaW1vbiBGcmFzZXIuCisKKyAgICAgICAgKiBUZXN0RXhwZWN0
YXRpb25zOgorICAgICAgICBTa2lwIHRoZSBoaWRwaSByZWZlcmVuY2UgZmlsdGVyIHRlc3RzIHRp
bGwgd2UgY29ubmVjdCB0aGUgRmlsdGVyRWZmZWN0cworICAgICAgICB0byB0aGUgY29ycmVjdCBw
YXJlbnQgRmlsdGVyLgorCisgICAgICAgICogcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnM6
CisgICAgICAgICogcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnM6CisgICAgICAgIFJlbW92
ZSB1bm5lY2Vzc2FyeSB1bi1za2lwcGluZyBmb3IgY29uaWMtZ3JhZGllbnRzIHRlc3RzIHNpbmNl
IHRoZXkgd2VyZQorICAgICAgICBub3Qgc2tpcHBlZCBnbG9iYWxseS4KKwogMjAyMS0xMS0wOSAg
QW50b2luZSBRdWludCAgPGdyYW91dHNAd2Via2l0Lm9yZz4KIAogICAgICAgICBSRUdSRVNTSU9O
KHIyNzIyMDEpOiBTYWZhcmkgc2hvd2VkIHJlZCBkaXN0b3J0aW9uIG9uIHdlYnZpZXcgYWZ0ZXIg
dXNpbmcgV2ViIEluc3BlY3RvciwgcmV0dXJuaW5nIGZyb20gYW5vdGhlciBhcHAKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMgYi9MYXlvdXRUZXN0cy9UZXN0RXhwZWN0
YXRpb25zCmluZGV4IDA0YzcwNWVkMGYyOWJkMmE5YzgwM2E3OGYxZDUwNTZiMjVmZmMwYWIuLjIy
NDc4ZDcwOTA2ZjZkYmI0MDE1MWYzNjhlYTI3ZTczYzI0NDNiMTEgMTAwNjQ0Ci0tLSBhL0xheW91
dFRlc3RzL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvVGVzdEV4cGVjdGF0aW9u
cwpAQCAtNTIwOSwzICs1MjA5LDU1IEBAIGltcG9ydGVkL2JsaW5rL2h0dHAvdGVzdHMvcGx1Z2lu
cyBbIFNraXAgXQogaW1wb3J0ZWQvYmxpbmsvcGx1Z2lucyBbIFNraXAgXQoganMvZG9tL3JlZmxl
Y3Qtc2V0LW9udG8tZG9tLmh0bWwgWyBTa2lwIF0KIHVzZXJzY3JpcHRzL3VzZXItc2NyaXB0LXBs
dWdpbi1kb2N1bWVudC5odG1sIFsgU2tpcCBdCisKKyMgVGhlc2UgZmlsdGVyIHJlbGF0ZWQgZmFp
bHVyZXMgc2hvdWxkIGJlIGZpeGVkIG9uY2Ugd2Via2l0Lm9yZy9iLzIzMjcwNSBpcyByZXNvbHZl
ZAord2Via2l0Lm9yZy9iLzIzMjcwNSBjb21wb3NpdGluZy9maWx0ZXJzL2Ryb3Atc2hhZG93Lmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY29tcG9zaXRpbmcvZmlsdGVycy9zaW1w
bGUtaW1hZ2Utd2l0aC1zdmctZmlsdGVyLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgY3NzMy9maWx0ZXJzL2JhY2tkcm9wL2JhY2tkcm9wLWZpbHRlci13aXRoLWJvcmRlci1yYWRp
dXMtYW5kLXJlZmxlY3Rpb24tcmVtb3ZlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgY3NzMy9maWx0ZXJzL2NvbG9yLWludGVycG9sYXRpb24tZmlsdGVycy5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9jc3Mtb3BhY2l0eS13aXRoLWRyb3At
c2hhZG93Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2Ry
b3Atc2hhZG93Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJz
L2VmZmVjdC1icmlnaHRuZXNzLXNxdWFyZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMy
NzA1IGNzczMvZmlsdGVycy9lZmZlY3QtY29udHJhc3Qtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dl
YmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1ncmF5c2NhbGUtc3F1YXJlLmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2VmZmVjdC1odWUt
cm90YXRlLXNxdWFyZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmls
dGVycy9lZmZlY3QtaW52ZXJ0LXNxdWFyZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMy
NzA1IGNzczMvZmlsdGVycy9lZmZlY3QtcmVmZXJlbmNlLWxvY2FsLXVybC13aXRoLWJhc2UuaHRt
bCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvZWZmZWN0LXNhdHVy
YXRlLXNxdWFyZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVy
cy9lZmZlY3Qtc2VwaWEtc3F1YXJlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUg
Y3NzMy9maWx0ZXJzL2ZpbHRlci1pcy1vbi1zdWJwaXhlbC1wb3NpdGlvbi5odG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmlsdGVycy9maWx0ZXItb24tb3ZlcmZsb3ctaGlk
ZGVuLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgY3NzMy9maWx0ZXJzL2ZpbHRl
cnMtb24tc3ZnLXJvb3QuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2Zp
bHRlcnMvaGlkcGktZmVDb252b2x2ZU1hdHJpeC5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGNzczMvZmlsdGVycy9oaWRwaS1maWx0ZXItaXMtb24tc3VicGl4ZWwtcG9zaXRpb24u
aHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBjc3MzL2ZpbHRlcnMvaW52YWxpZGF0
ZS1zb3VyY2VBbHBoYS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvZmls
dGVycy9udWxsLWVmZmVjdC1jaGVjay5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IGNzczMvZmlsdGVycy9yZWZlcmVuY2UtZmlsdGVyLXNldC1maWx0ZXItcmVnaW9ucy5odG1sIFsg
U2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGNzczMvbWFza2luZy9jbGlwLXBhdGgtZmlsdGVy
Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9maWx0ZXItaW1hZ2UvZmls
dGVyLWltYWdlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9ncmFkaWVu
dHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcw
NSBmYXN0L2dyYWRpZW50cy9jb25pYy1ncmFkaWVudC1leHRlbmRlZC1zdG9wcy5odG1sIFsgU2tp
cCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50Lmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWFuZC1p
bWFnZS1idWZmZXItcmVzb2x1dGlvbi5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IGZhc3QvaGlkcGkvZmlsdGVycy1ibHVyLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3
MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWNvbXBvbmVudC10cmFuc2Zlci5odG1sIFsgU2tpcCBdCit3
ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1odWUtcm90YXRlLmh0bWwgWyBT
a2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJzLWludmVydC5odG1s
IFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3QvaGlkcGkvZmlsdGVycy1tb3JwaG9s
b2d5Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9maWx0ZXJz
LW11bHRpcGxlLmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgZmFzdC9oaWRwaS9m
aWx0ZXJzLXJlZmVyZW5jZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGZhc3Qv
aGlkcGkvZmlsdGVycy1zaGFkb3cuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBm
YXN0L2hpZHBpL2ZpbHRlcnMtdHVyYnVsZW5jZS5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2Iv
MjMyNzA1IGZhc3QvbXVsdGljb2wvZmlsdGVyLWluLWNvbHVtbnMuaHRtbCBbIFNraXAgXQord2Vi
a2l0Lm9yZy9iLzIzMjcwNSBodHRwL3Rlc3RzL2Nzcy9maWx0ZXJzLW9uLWlmcmFtZXMuaHRtbCBb
IFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcwNSBpbXBvcnRlZC9ibGluay9jc3MzL2ZpbHRlcnMv
ZWZmZWN0LXJlZmVyZW5jZS1hZGQtaHcuaHRtbCBbIFNraXAgXQord2Via2l0Lm9yZy9iLzIzMjcw
NSBpbXBvcnRlZC9ibGluay9jc3MzL2ZpbHRlcnMvZWZmZWN0LXJlZmVyZW5jZS1vbi10cmFuc3Bh
cmVudC1lbGVtZW50Lmh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQv
YmxpbmsvY3NzMy9maWx0ZXJzL2VmZmVjdC1yZWZlcmVuY2Utc291cmNlLWFscGhhLWh3Lmh0bWwg
WyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvYmxpbmsvc3ZnL2ZpbHRlcnMv
ZmlsdGVyLWh1Z2UtY2xhbXBpbmcuc3ZnIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1IGlt
cG9ydGVkL21vemlsbGEvc3ZnL3N2Zy1lZmZlY3RzLWFyZWEtdW56b29tZWQueGh0bWwgWyBTa2lw
IF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVjdHMt
YXJlYS16b29tZWQtaW4ueGh0bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgaW1wb3J0
ZWQvbW96aWxsYS9zdmcvc3ZnLWVmZmVjdHMtYXJlYS16b29tZWQtb3V0LnhodG1sIFsgU2tpcCBd
Cit3ZWJraXQub3JnL2IvMjMyNzA1IGltcG9ydGVkL3czYy93ZWItcGxhdGZvcm0tdGVzdHMvY3Nz
L2Nzcy1vdmVyZmxvdy9vdmVyZmxvdy1zY3JvbGwtcmVzaXplLXZpc2liaWxpdHktaGlkZGVuLmh0
bWwgWyBTa2lwIF0KK3dlYmtpdC5vcmcvYi8yMzI3MDUgc3ZnL2N1c3RvbS9mZUNvbG9yTWF0cml4
LXZhbHVlcy1sZWFkaW5nLXNwYWNlcy5odG1sIFsgU2tpcCBdCit3ZWJraXQub3JnL2IvMjMyNzA1
IHN2Zy9jdXN0b20vcmVzb3VyY2VzLWNzcy1zY2FsZWQuaHRtbCBbIFNraXAgXQord2Via2l0Lm9y
Zy9iLzIzMjcwNSBzdmcvZmlsdGVycy9iaWctc2l6ZWQtb2ZmLXZpZXdwb3J0LWZpbHRlci5zdmcg
WyBTa2lwIF0KZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL3BsYXRmb3JtL2lvcy9UZXN0RXhwZWN0
YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXgg
MDY5NDVlMTM3NzhhODM5MmEyM2M3ZjQzMDAzYzQxMjYwYjNjYjc0Yy4uOWNhOTM5OGJlNzg5N2Vh
MDExNjkyNTJmMmU4NzgwMzE0Yzc4MTVmYSAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZv
cm0vaW9zL1Rlc3RFeHBlY3RhdGlvbnMKKysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vaW9zL1Rl
c3RFeHBlY3RhdGlvbnMKQEAgLTI5NzAsMjAgKzI5NzAsNiBAQCBodHRwL3Rlc3RzL2Nvb2tpZXMv
b25seS1hY2NlcHQtZmlyc3QtcGFydHktY29va2llcy5odG1sIFsgU2tpcCBdCiAKIGVkaXRpbmcv
c2VsZWN0aW9uL2NoYXJhY3Rlci1ncmFudWxhcml0eS1yZWN0Lmh0bWwgWyBQYXNzIF0KIAotIyA8
IGlPUzEyIGRvZXNuJ3Qgc3VwcG9ydCB0aGUgQ0cgbmVlZGVkIGZvciBDb25pYyBHcmFkaWVudHMK
LWh0dHAvd3B0L2Nzcy9jc3MtaW1hZ2VzLTQvY29uaWMtZ3JhZGllbnQtcGFyc2luZy5odG1sIFsg
UGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1yZXBlYXRpbmcuaHRtbCBbIFBhc3MgXQotZmFz
dC9ncmFkaWVudHMvY29uaWMuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtb2Zm
LWNlbnRlci5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1jZW50ZXItb3V0c2lk
ZS1ib3guaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZXh0ZW5kZWQtc3RvcHMu
aHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZnJvbS1hbmdsZS5odG1sIFsgUGFz
cyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1yZXBlYXRpbmctbGFzdC1zdG9wLmh0bWwgWyBQYXNz
IF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWFscGhhLmh0bWwgWyBQYXNzIF0KLWZh
c3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50LWV4dGVuZGVkLXN0b3BzLmh0bWwgWyBQYXNzIF0K
LWZhc3QvZ3JhZGllbnRzL2NvbmljLWdyYWRpZW50Lmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGll
bnRzL2NvbmljLXR3by1oaW50cy5odG1sIFsgUGFzcyBdCi0KICMgPHJkYXI6Ly9wcm9ibGVtLzM2
NDU1MzM5PiBMYXlvdXRUZXN0IGNvbXBvc2l0aW5nL2lvcy9vdmVyZmxvdy1zY3JvbGwtdG91Y2gt
dGlsZXMuaHRtbCBpcyBhIGZsYWt5IGZhaWx1cmUKIGNvbXBvc2l0aW5nL2lvcy9vdmVyZmxvdy1z
Y3JvbGwtdG91Y2gtdGlsZXMuaHRtbCBbIFBhc3MgRmFpbHVyZSBdCiAKZGlmZiAtLWdpdCBhL0xh
eW91dFRlc3RzL3BsYXRmb3JtL21hYy9UZXN0RXhwZWN0YXRpb25zIGIvTGF5b3V0VGVzdHMvcGxh
dGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKaW5kZXggZmZhNzVmZTE2MjJlZDgzOGYyZmQ0NTMy
NWY2NzU0MGUxNmNkNGJmNi4uMzA3NzFiZGYxMDA5NmIxOTY0YzM5M2FhM2I1YjEwMjI1NGUxZDAy
NiAxMDA2NDQKLS0tIGEvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMK
KysrIGIvTGF5b3V0VGVzdHMvcGxhdGZvcm0vbWFjL1Rlc3RFeHBlY3RhdGlvbnMKQEAgLTE0MTMs
MTggKzE0MTMsNiBAQCBmYXN0L2RvbS9IVE1MTWV0ZXJFbGVtZW50L21ldGVyLXN0eWxlcy5odG1s
IFsgRmFpbHVyZSBdCiBpbXBvcnRlZC9ibGluay9mYXN0L3RleHQvaW50ZXJuYXRpb25hbC92ZXJ0
aWNhbC1wb3NpdGlvbmluZy13aXRoLWNvbWJpbmluZy1tYXJrcy5odG1sIFsgSW1hZ2VPbmx5RmFp
bHVyZSBdCiAKICMgPCBNb2phdmUgZG9lc24ndCBzdXBwb3J0IHRoZSBDRyBuZWVkZWQgZm9yIENv
bmljIEdyYWRpZW50cwotaHR0cC93cHQvY3NzL2Nzcy1pbWFnZXMtNC9jb25pYy1ncmFkaWVudC1w
YXJzaW5nLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy5odG1s
IFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRp
ZW50cy9jb25pYy1vZmYtY2VudGVyLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2Nvbmlj
LWNlbnRlci1vdXRzaWRlLWJveC5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1l
eHRlbmRlZC1zdG9wcy5odG1sIFsgUGFzcyBdCi1mYXN0L2dyYWRpZW50cy9jb25pYy1mcm9tLWFu
Z2xlLmh0bWwgWyBQYXNzIF0KLWZhc3QvZ3JhZGllbnRzL2NvbmljLXJlcGVhdGluZy1sYXN0LXN0
b3AuaHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtYWxwaGEuaHRt
bCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQtZXh0ZW5kZWQtc3RvcHMu
aHRtbCBbIFBhc3MgXQotZmFzdC9ncmFkaWVudHMvY29uaWMtZ3JhZGllbnQuaHRtbCBbIFBhc3Mg
XQotZmFzdC9ncmFkaWVudHMvY29uaWMtdHdvLWhpbnRzLmh0bWwgWyBQYXNzIF0KIFsgTW9qYXZl
IF0gaW1wb3J0ZWQvdzNjL3dlYi1wbGF0Zm9ybS10ZXN0cy9jc3MvY3NzLWltYWdlcy9tdWx0aXBs
ZS1wb3NpdGlvbi1jb2xvci1zdG9wLWNvbmljLmh0bWwgWyBQYXNzIF0KIAogIyBEYXJrIE1vZGUg
aXMgTW9qYXZlIGFuZCBsYXRlci4K
</data>

          </attachment>
      

    </bug>

</bugzilla>