<?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>82564</bug_id>
          
          <creation_ts>2012-03-28 19:56:19 -0700</creation_ts>
          <short_desc>[chromium] Remove SkCanvas::LayerIter use from OpaqueRegionSkia</short_desc>
          <delta_ts>2012-04-18 17:25:30 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>New Bugs</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Unspecified</rep_platform>
          <op_sys>Unspecified</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          <blocked>84275</blocked>
          <everconfirmed>1</everconfirmed>
          <reporter name="Dana Jansens">danakj</reporter>
          <assigned_to name="Dana Jansens">danakj</assigned_to>
          <cc>backer</cc>
    
    <cc>enne</cc>
    
    <cc>jamesr</cc>
    
    <cc>piman</cc>
    
    <cc>reed</cc>
    
    <cc>reveman</cc>
    
    <cc>senorblanco</cc>
    
    <cc>webkit.review.bot</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>590771</commentid>
    <comment_count>0</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-28 19:56:19 -0700</bug_when>
    <thetext>[chromium] Remove SkCanvas::LayerIter use from OpaqueRegionSkia</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590777</commentid>
    <comment_count>1</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-28 20:04:51 -0700</bug_when>
    <thetext>This is required for per-tile-painting in the renderer.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590785</commentid>
    <comment_count>2</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-28 20:17:03 -0700</bug_when>
    <thetext>I attempted to do this a few times before I found the LayerIter and felt like we got very solid with it. But I&apos;m sorry to say that it doesn&apos;t work with SkPictureRecord, and it is going to  leave the SkCanvas public API so we can&apos;t rely on it. 

But I think I&apos;m in a spot where I can do a better job of this now. :)

We have to change any code that does saveLayer() on the canvas underlying the GraphicsContext, to instead do it through the platformContext. And PlatformContextSkia implements imageClipping through the saveLayer()/restore(), so we need to track what it is doing explicitly as well.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590788</commentid>
    <comment_count>3</comment_count>
      <attachid>134485</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-28 20:19:12 -0700</bug_when>
    <thetext>Created attachment 134485
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>590791</commentid>
    <comment_count>4</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-28 20:20:34 -0700</bug_when>
    <thetext>*** Bug 81723 has been marked as a duplicate of this bug. ***</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591586</commentid>
    <comment_count>5</comment_count>
      <attachid>134485</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-29 14:42:29 -0700</bug_when>
    <thetext>Comment on attachment 134485
Patch

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

&gt; Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:284
&gt;          &amp;layerPaint,
&gt;          static_cast&lt;SkCanvas::SaveFlags&gt;(SkCanvas::kHasAlphaLayer_SaveFlag |
&gt;                                           SkCanvas::kFullColorLayer_SaveFlag));
&gt; +    platformContext()-&gt;didSaveLayer(layerPaint);

Couldn&apos;t this call platformContext()-&gt;saveLayer() (and skip the &quot;did&quot; here)?

&gt; Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:292
&gt; +    platformContext()-&gt;didRestoreLayer();
&gt;      platformContext()-&gt;canvas()-&gt;restore();

Same here:  couldn&apos;t this call platformContext()-&gt;restore()?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591588</commentid>
    <comment_count>6</comment_count>
      <attachid>134485</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 14:44:22 -0700</bug_when>
    <thetext>Comment on attachment 134485
Patch

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

&gt;&gt; Source/WebCore/platform/graphics/skia/GraphicsContextSkia.cpp:284
&gt;&gt; +    platformContext()-&gt;didSaveLayer(layerPaint);
&gt; 
&gt; Couldn&apos;t this call platformContext()-&gt;saveLayer() (and skip the &quot;did&quot; here)?

yes! i added that later.. good idea, will do.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591611</commentid>
    <comment_count>7</comment_count>
      <attachid>134676</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 15:05:53 -0700</bug_when>
    <thetext>Created attachment 134676
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>591819</commentid>
    <comment_count>8</comment_count>
      <attachid>134712</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-29 19:25:05 -0700</bug_when>
    <thetext>Created attachment 134712
Patch

While it is not in practice now null, the SkPaint* for saveLayer() could be null, so fixing this patch to work correctly in the face of that.

FYI I&apos;m working on a followup to use SKDrawLoopers more intelligently instead of just bailing. I say this cuz it&apos;s going to mess up the stack in this patch, but it&apos;s a similar idea so fair to do this first I think.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592181</commentid>
    <comment_count>9</comment_count>
      <attachid>134712</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-03-30 08:35:00 -0700</bug_when>
    <thetext>Comment on attachment 134712
Patch

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

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp:107
&gt; +    SkRect m_previousImageBufferClipRect;
&gt; +    SkRect m_totalImageBufferClipRect;
&gt; +    SkRect m_previousImageBufferOpaqueRect;
&gt; +    SkRect m_totalImageBufferOpaqueRect;

Since this seems to be specific to the opaque region tracker, perhaps it should be moved there?</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592535</commentid>
    <comment_count>10</comment_count>
      <attachid>134897</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-30 15:12:44 -0700</bug_when>
    <thetext>Created attachment 134897
Patch</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>592542</commentid>
    <comment_count>11</comment_count>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-03-30 15:22:31 -0700</bug_when>
    <thetext>- Added the bounds to the PlatformContextSkia::saveLayer() method.
- Save the SkPaints in the stack in OpaqueRegionSkia.
- Moved the data for the image clip/mask into the OpaqueRegionSkia stack.
- Fixed the logic around preservesOpaque and added a unit test to verify it.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594043</commentid>
    <comment_count>12</comment_count>
      <attachid>134897</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-04-02 17:08:03 -0700</bug_when>
    <thetext>Comment on attachment 134897
Patch

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

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp:234
&gt; +    m_opaqueRegion.pushCanvasLayer(paint);

Shouldn&apos;t this be guarded by if (m_trackOpaqueRegion)?

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp:242
&gt; +    m_opaqueRegion.pushCanvasLayer(paint);

Same as above.

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp:248
&gt; +    m_opaqueRegion.popCanvasLayer();

Same as above.

&gt; Source/WebCore/platform/graphics/skia/PlatformContextSkia.cpp:277
&gt; +    SkRect opaqueRect = bitmap-&gt;isOpaque() ? m_state-&gt;m_clip : SkRect::MakeEmpty();
&gt; +    m_opaqueRegion.setImageMask(opaqueRect);

Same as above.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594062</commentid>
    <comment_count>13</comment_count>
      <attachid>135239</attachid>
    <who name="Dana Jansens">danakj</who>
    <bug_when>2012-04-02 17:22:08 -0700</bug_when>
    <thetext>Created attachment 135239
Patch

done x4 !</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594065</commentid>
    <comment_count>14</comment_count>
      <attachid>135239</attachid>
    <who name="Stephen White">senorblanco</who>
    <bug_when>2012-04-02 17:23:33 -0700</bug_when>
    <thetext>Comment on attachment 135239
Patch

OK.  r=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594167</commentid>
    <comment_count>15</comment_count>
      <attachid>135239</attachid>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 20:31:41 -0700</bug_when>
    <thetext>Comment on attachment 135239
Patch

Clearing flags on attachment: 135239

Committed r112980: &lt;http://trac.webkit.org/changeset/112980&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>594168</commentid>
    <comment_count>16</comment_count>
    <who name="WebKit Review Bot">webkit.review.bot</who>
    <bug_when>2012-04-02 20:31:46 -0700</bug_when>
    <thetext>All reviewed patches have been landed.  Closing bug.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134485</attachid>
            <date>2012-03-28 20:19:12 -0700</date>
            <delta_ts>2012-03-29 15:05:45 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82564-20120328231910.patch</filename>
            <type>text/plain</type>
            <size>23975</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYjgwZmNkZmFmOGY5
MWFjN2MwZDgzOTgzN2Y3N2Q1MzMxN2UxZS4uNTFmMjY4M2NkNTA3Yzk5NmQ0ZWE1ODNiZWY4ZDA2
M2VkNzU5ZDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTAzLTI4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3BhcXVlUmVnaW9uU2tpYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXItdGlsZS1wYWludGlu
ZyB1c2VzIGFuIFNrUGljdHVyZVJlY29yZCBpbiBwbGFjZSBvZiBhbiBTa0NhbnZhcworICAgICAg
ICBhcyB0aGUgcGFpbnRpbmcgdGFyZ2V0IGZvciB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIGNs
YXNzIG9ubHkgZG9lcworICAgICAgICBhIHNpbXBsZSByZWNvcmRpbmcgYW5kIGRvZXMgbm90IGNy
ZWF0ZSBsYXllcnMgaW4gdGhlIGNhbnZhcyBkdXJpbmcKKyAgICAgICAgcmVjb3JkLCBvbmx5IHBs
YXliYWNrLiBUaGlzIGlzIHByZXZlbnRpbmcgdXMgZnJvbSBjb3JyZWN0bHkgdHJhY2tpbmcKKyAg
ICAgICAgb3BhcXVlIHJlZ2lvbnMgdW5kZXIgcGVyLXRpbGUtcGFpbnRpbmcuCisKKyAgICAgICAg
V2UgY3VycmVudGx5IHVzZSB0aGUgU2tDYW52YXMgTGF5ZXJJdGVyIHRvIGxvb2sgYXQgdGhlIGxh
eWVycyBpbiB0aGUKKyAgICAgICAgY2FudmFzIGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCwg
YW5kIGNoZWNrIHRoZSBTa1BhaW50cywgY2xpcHMsCisgICAgICAgIGFuZCB0cmFuc2Zvcm1zIHRv
IHNlZSBob3cgdGhleSBpbXBhY3QgdGhlIGN1cnJlbnQgZHJhdyBvbmNlIGl0IHJlYWNoZXMKKyAg
ICAgICAgdGhlIGZpbmFsIGRldmljZS4KKworICAgICAgICBUaGUgY2xpcHMgYW5kIHRyYW5zZm9y
bXMgY2FuIGJlIHJldHJlaXZlZCB3aXRob3V0IHVzaW5nIHRoZSBMYXllckl0ZXIKKyAgICAgICAg
dGhyb3VnaCB0aGUgImdldFRvdGFsKiIgbWV0aG9kcy4gQSBjdW11bGF0aXZlIFNrUGFpbnQgaXMg
bm90IGF2YWlsYWJsZQorICAgICAgICBzbyB3ZSBzdG9yZSB0aGlzIG91cnNlbHZlcy4KKworICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGJlY29tZXMgYXdhcmUgb2Ygd2hlbiBzYXZlTGF5ZXIo
KSBpcyBiZWluZyBjYWxsZWQKKyAgICAgICAgb24gdGhlIHVuZGVybHlpbmcgY2FudmFzLCBhbmQg
cGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEg
Y2xhc3MuIFNpbmNlIHdlIG5vIGxvbmdlciB3YXRjaCBsYXllcnMgaW4gdGhlIGNhbnZhcywKKyAg
ICAgICAgd2UgbXVzdCBleHBsaWNpdGx5IGhhbmRsZSBpbWFnZSBjbGlwcGluZyBmb3IgdGhlIG9w
YXF1ZSB0cmFja2VyLCBhcworICAgICAgICBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUGxhdGZv
cm1Db250ZXh0U2tpYSwgbm90IHZpYSBjb25zdHJ1Y3RzIGluCisgICAgICAgIHRoZSBTa0NhbnZh
cy9Ta1BhaW50LiBXZSBzYXZlIHRoZSBjdW11bGF0aXZlIGNsaXAgcmVjdCBhbmQgb3BhcXVlIG1h
c2sKKyAgICAgICAgYXJlYSBpbiB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSBhbmQgYWxsb3cgT3Bh
cXVlUmVnaW9uU2tpYSB0byBnZXQgYXQKKyAgICAgICAgaXQgdGhyb3VnaCB0aGUgaXNJbkxheWVy
Q2xpcHBlZFRvSW1hZ2UoKSBtZXRob2RzLiBBbmQgd2Ugc2F2ZSBhCisgICAgICAgIGN1bXVsYXRp
dmUgdmlldyBvZiB0aGUgU2tQYWludHMgaW4gYWxsIHNhdmVkIGxheWVycyBpbiB0aGUgbV9wYWlu
dFN0YWNrCisgICAgICAgIG9mIE9wYXF1ZVJlZ2lvblNraWEsIHNvIHRoYXQgdGhlIGRhdGEgd2Ug
YXJlIGludGVyZXN0ZWQgaW4gY2FuIGJlCisgICAgICAgIHJldHJlaXZlZCBieSBqdXN0IGxvb2tp
bmcgYXQgdGhlIGhlYWQgb2YgdGhlIHN0YWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVH
YXVzc2lhbkJsdXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpw
bGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cHVzaFBhaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cG9wUGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3Bh
cXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuaDoKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6UGFpbnRTdGFja1N0YXRlOjpQYWludFN0YWNrU3RhdGUp
OgorICAgICAgICAoUGFpbnRTdGFja1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0
U2tpYTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6U3Rh
dGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmVM
YXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29u
dGV4dFNraWE6OnJlc3RvcmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0U2tpYTo6aXNJbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZFJlc3RvcmVMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChQbGF0
Zm9ybUNvbnRleHRTa2lhKToKKwogMjAxMi0wMy0yOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwYXRjaCBjb25z
b2xlLW1lc3NhZ2UtYWRkZWQgYW5kIGNvbnNvbGUtbWVzc2FnZXMtY2xlYXJlZCBldmVudHMgb24g
VUlTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRl
eCA0YjM2NzUxZmFmNDc5NGY4Y2EyM2FjYThiMDc1M2M1N2JjZjdlZGQyLi5iNjk0YzliMWM1NWE4
MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcApAQCAtNTEsMTIgKzUxLDEzIEBAIGJvb2wgRkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBTa0NhbnZhcyog
Y2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIFBs
YXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRzdENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBTa0JsdXJJbWFnZUZpbHRl
cihzdGRYLCBzdGRZKSktPnVucmVmKCk7Ci0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50
KTsKKworICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZUxheWVyKDAsICZwYWludCk7CiAgICAgcGFp
bnQuc2V0Q29sb3IoMHhGRkZGRkZGRik7CiAgICAgZHN0Q29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCksIENv
bXBvc2l0ZUNvcHkpOwotICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgIHBsYXRmb3JtQ29udGV4
dC0+cmVzdG9yZUxheWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RU1vcnBob2xvZ3lTa2lhLmNwcAppbmRleCAwNjdhNjUzYTJhNWJhZTM1Y2MzZWRiNjc5ZDkyN2Iz
MTg4NDNlOGRhLi5lNzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJkYjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVN
b3JwaG9sb2d5U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCkBAIC01MCwxNSArNTAsMTUgQEAgYm9v
bCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRz
dENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQSE9M
T0dZX09QRVJBVE9SX0RJTEFURSkKICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIobmV3IFNr
RGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkpLT51bnJlZigpOwogICAgIGVsc2Ug
aWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiAgICAgICAgIHBhaW50
LnNldEltYWdlRmlsdGVyKG5ldyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkp
LT51bnJlZigpOwogCi0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQtPnNhdmVMYXllcigwLCAmcGFpbnQpOwogICAgIGRzdENvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbi5sb2Nh
dGlvbigpLCBDb21wb3NpdGVDb3B5KTsKLSAgICBjYW52YXMtPnJlc3RvcmUoKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQtPnJlc3RvcmVMYXllcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0Zjc5Y2ZiMGI1ZTY5YzVjNTRlNzNiZDBlMmNiYTlh
Mzk1YWY2NWViLi4wYjlkYTVjM2RmOTVlNzQwNDkzMDM4NDA3YTEwNzhkNzIzMWEzYjU3IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTI4MSwxMiArMjgxLDE0IEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkK
ICAgICAgICAgJmxheWVyUGFpbnQsCiAgICAgICAgIHN0YXRpY19jYXN0PFNrQ2FudmFzOjpTYXZl
RmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8CiAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFNrQ2FudmFzOjprRnVsbENvbG9yTGF5ZXJfU2F2
ZUZsYWcpKTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+ZGlkU2F2ZUxheWVyKGxheWVyUGFpbnQp
OwogfQogCiB2b2lkIEdyYXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXll
cigpCiB7CiAgICAgaWYgKHBhaW50aW5nRGlzYWJsZWQoKSkKICAgICAgICAgcmV0dXJuOworICAg
IHBsYXRmb3JtQ29udGV4dCgpLT5kaWRSZXN0b3JlTGF5ZXIoKTsKICAgICBwbGF0Zm9ybUNvbnRl
eHQoKS0+Y2FudmFzKCktPnJlc3RvcmUoKTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcCBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKaW5kZXgg
NWE0ZjE1MzRjMDlmZjgyY2M1MzZkNGZiYmJlMzY4YmY2ZjRjYmJhNS4uODhkZDYxM2Q1ZGFiMGEw
MzljZDg1YzY2NjY1OTJmZTNkYjlkNDIwMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCkBAIC00Myw2
ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9wYXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJl
Z2lvblNraWEoKQogICAgIDogbV9vcGFxdWVSZWN0KFNrUmVjdDo6TWFrZUVtcHR5KCkpCiB7Cisg
ICAgLy8gUHV0IGRlZmF1bHQgYW5zd2VycyBvbiB0aGUgYm90dG9tIG9mIHRoZSBzdGFjaworICAg
IG1fcGFpbnRTdGFjay5hcHBlbmQoUGFpbnRTdGFja1N0YXRlKCkpOwogfQogCiBPcGFxdWVSZWdp
b25Ta2lhOjp+T3BhcXVlUmVnaW9uU2tpYSgpCkBAIC0xNDcsNyArMTQ5LDI3IEBAIHN0YXRpYyBp
bmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0Jp
dG1hcCogYml0bWFwID0KICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQ
YWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRtYXApCit2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OnB1c2hQYWludChjb25zdCBTa1BhaW50JiBwYWludCkKK3sKKyAgICBQYWludFN0YWNrU3Rh
dGUgc3RhdGUgPSBtX3BhaW50U3RhY2subGFzdCgpOworCisgICAgYm9vbCBvcGFxdWVGb3JGaWxs
ID0gcGFpbnRJc09wYXF1ZShwYWludCwgMCwgdHJ1ZSk7CisgICAgYm9vbCBvcGFxdWVGb3JTdHJv
a2UgPSBwYWludElzT3BhcXVlKHBhaW50LCAwLCBmYWxzZSk7CisKKyAgICBzdGF0ZS54ZmVybW9k
ZUlzT3BhcXVlRm9yRmlsbCAmPSB4ZmVybW9kZUlzT3BhcXVlKHBhaW50LCBvcGFxdWVGb3JGaWxs
KTsKKyAgICBzdGF0ZS54ZmVybW9kZUlzT3BhcXVlRm9yU3Ryb2tlICY9IHhmZXJtb2RlSXNPcGFx
dWUocGFpbnQsIG9wYXF1ZUZvclN0cm9rZSk7CisgICAgc3RhdGUueGZlcm1vZGVQcmVzZXJ2ZXNP
cGFxdWVGb3JGaWxsICY9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50LCBvcGFxdWVGb3JG
aWxsKTsKKyAgICBzdGF0ZS54ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvclN0cm9rZSAmPSB4ZmVy
bW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgb3BhcXVlRm9yU3Ryb2tlKTsKKworICAgIG1fcGFp
bnRTdGFjay5hcHBlbmQoc3RhdGUpOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnBvcFBh
aW50KCkKK3sKKyAgICBtX3BhaW50U3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIE9wYXF1
ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRl
eHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIGZpbGxS
ZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tCaXRtYXAqIGJpdG1hcCkKIHsKICAg
ICAvLyBBbnkgc3Ryb2tpbmcgbWF5IHB1dCBhbHBoYSBpbiBwaXhlbHMgZXZlbiBpZiB0aGUgZmls
bGluZyBwYXJ0IGRvZXMgbm90LgogICAgIGlmIChwYWludC5nZXRTdHlsZSgpICE9IFNrUGFpbnQ6
OmtGaWxsX1N0eWxlKSB7CkBAIC0xNTksMTcgKzE4MSwxNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdSZWN0KFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYQogICAgICAgICBlbHNlIHsKICAgICAgICAgICAgIFNrUmVjdCBzdHJva2VSZWN0OwogICAg
ICAgICAgICAgc3Ryb2tlUmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKGZpbGxSZWN0LCAm
c3Ryb2tlUmVjdCk7Ci0gICAgICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ry
b2tlUmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOworICAgICAgICAgICAgZGlkRHJh
dyhjb250ZXh0LCB0cmFuc2Zvcm0sIHN0cm9rZVJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91
bmRzLCBGaWxsT3JTdHJva2UpOwogICAgICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBjaGVja0Zp
bGxPbmx5ID0gdHJ1ZTsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQsIGJp
dG1hcCwgY2hlY2tGaWxsT25seSk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IHBhaW50LmdldFN0
eWxlKCkgIT0gU2tQYWludDo6a1N0cm9rZV9TdHlsZTsKLSAgICBkaWREcmF3KGNvbnRleHQsIHRy
YW5zZm9ybSwgZmlsbFJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKKyAgICBkaWRE
cmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgZmlsbFJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91
bmRzLCBGaWxsT25seSk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgo
UGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFu
c2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNv
bnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBh
dGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChw
YXRoLmlzUmVjdCgmcmVjdCkpIHsKQEAgLTE4NCwxMSArMjA2LDExIEBAIHZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3Qg
QWZmaW5lVHJhCiAgICAgICAgIGRpZERyYXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1ZSk7CiAgICAg
ZWxzZSB7CiAgICAgICAgIHJlY3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhwYXRoLmdldEJv
dW5kcygpLCAmcmVjdCk7Ci0gICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0
LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAgICAgIGRpZERyYXcoY29udGV4dCwg
dHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tl
KTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyhQbGF0
Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgU2tDYW52YXM6OlBvaW50TW9kZSBtb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50
IHBvaW50c1tdLCBjb25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgU2tDYW52YXM6OlBvaW50TW9kZSBtb2RlLCBpbnQg
bnVtUG9pbnRzLCBjb25zdCBTa1BvaW50IHBvaW50c1tdLCBjb25zdCBTa1BhaW50JiBwYWludCkK
IHsKICAgICBpZiAoIW51bVBvaW50cykKICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDExICsyMzUs
MTEgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVQKICAgICAgICAgZGlkRHJhd1VuYm91bmRlZChw
YWludCwgb3BhcXVlKTsKICAgICBlbHNlIHsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVG
YXN0Qm91bmRzKHJlY3QsICZyZWN0KTsKLSAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zv
cm0sIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhj
b250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxs
T3JTdHJva2UpOwogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91
bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0m
IHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQor
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRl
eHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3Qg
U2tSZWN0JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVl
ID0gcGFpbnRJc09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpA
QCAtMjI3LDE3ICsyNDksMjggQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRl
ZChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmUKICAgICBlbHNlIHsK
ICAgICAgICAgU2tSZWN0IHJlY3Q7CiAgICAgICAgIHJlY3QgPSBwYWludC5jb21wdXRlRmFzdEJv
dW5kcyhib3VuZHMsICZyZWN0KTsKLSAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0s
IHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250
ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxsT3JT
dHJva2UpOwogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3Bh
cXVlLCBib29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYg
dHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29s
IGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzLCBEcmF3VHlwZSBkcmF3VHlwZSkKIHsKICAg
ICBTa1JlY3QgdGFyZ2V0UmVjdCA9IHJlY3Q7CiAKICAgICBib29sIHhmZXJzT3BhcXVlID0geGZl
cm1vZGVJc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpOwogICAgIGJvb2wgcHJlc2VydmVzT3Bh
cXVlID0geGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKTsKIAorICAg
IHN3aXRjaCAoZHJhd1R5cGUpIHsKKyAgICBjYXNlIEZpbGxPbmx5OgorICAgICAgICB4ZmVyc09w
YXF1ZSAmPSBtX3BhaW50U3RhY2subGFzdCgpLnhmZXJtb2RlSXNPcGFxdWVGb3JGaWxsOworICAg
ICAgICBwcmVzZXJ2ZXNPcGFxdWUgJj0gbV9wYWludFN0YWNrLmxhc3QoKS54ZmVybW9kZVByZXNl
cnZlc09wYXF1ZUZvckZpbGw7CisgICAgICAgIGJyZWFrOworICAgIGNhc2UgRmlsbE9yU3Ryb2tl
OgorICAgICAgICB4ZmVyc09wYXF1ZSAmPSBtX3BhaW50U3RhY2subGFzdCgpLnhmZXJtb2RlSXNP
cGFxdWVGb3JTdHJva2U7CisgICAgICAgIHByZXNlcnZlc09wYXF1ZSAmPSBtX3BhaW50U3RhY2su
bGFzdCgpLnhmZXJtb2RlUHJlc2VydmVzT3BhcXVlRm9yU3Ryb2tlOworICAgICAgICBicmVhazsK
KyAgICB9CisKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRvIGRldmljZSBjb29yZGluYXRl
IHNwYWNlLgogICAgIFNrTWF0cml4IGNhbnZhc1RyYW5zZm9ybSA9IGNvbnRleHQtPmNhbnZhcygp
LT5nZXRUb3RhbE1hdHJpeCgpOwogICAgIGlmICghY2FudmFzVHJhbnNmb3JtLm1hcFJlY3QoJnRh
cmdldFJlY3QpKQpAQCAtMjQ3LDI4ICsyODAsMTkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3KFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm8K
ICAgICBpZiAoY29udGV4dC0+Y2FudmFzKCktPmdldENsaXBUeXBlKCkgIT0gU2tDYW52YXM6OmtS
ZWN0X0NsaXBUeXBlKQogICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOwogICAgIGVsc2Ugewot
ICAgICAgICBTa0lSZWN0IGRldmljZUNsaXA7Ci0gICAgICAgIGNvbnRleHQtPmNhbnZhcygpLT5n
ZXRDbGlwRGV2aWNlQm91bmRzKCZkZXZpY2VDbGlwKTsKKyAgICAgICAgU2tJUmVjdCBkZXZpY2VD
bGlwID0gY29udGV4dC0+Y2FudmFzKCktPmdldFRvdGFsQ2xpcCgpLmdldEJvdW5kcygpOwogICAg
ICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJzZWN0KFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5m
TGVmdCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mVG9wKSwgU2tJbnRUb1NjYWxhcihkZXZp
Y2VDbGlwLmZSaWdodCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mQm90dG9tKSkpCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgLy8gQXBwbHkgYW55IGxheWVycyB0aGF0IHdl
IGFyZSBkcmF3aW5nIGludG8uCi0gICAgZm9yIChTa0NhbnZhczo6TGF5ZXJJdGVyIGl0KGNvbnRl
eHQtPmNhbnZhcygpLCBmYWxzZSk7ICFpdC5kb25lKCk7IGl0Lm5leHQoKSkgewotICAgICAgICAv
LyBBcHBseSB0aGUgbGF5ZXIncyBjbGlwICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCi0gICAg
ICAgIGNvbnN0IFNrUmVnaW9uJiBkZXZpY2VMYXllckNsaXAgPSBpdC5jbGlwKCk7Ci0gICAgICAg
IGlmIChkZXZpY2VMYXllckNsaXAuaXNFbXB0eSgpIHx8ICFkZXZpY2VMYXllckNsaXAuaXNSZWN0
KCkpCisgICAgLy8gQXBwbHkgdGhlIGltYWdlIGNsaXAgbWFzayBpZiBhbnkuCisgICAgU2tSZWN0
IGRldmljZUltYWdlTWFza0NsaXBSZWN0OworICAgIFNrUmVjdCBkZXZpY2VJbWFnZU1hc2tPcGFx
dWVSZWN0OworICAgIGlmIChjb250ZXh0LT5pc0luTGF5ZXJDbGlwcGVkVG9JbWFnZShkZXZpY2VJ
bWFnZU1hc2tDbGlwUmVjdCwgZGV2aWNlSW1hZ2VNYXNrT3BhcXVlUmVjdCkpIHsKKyAgICAgICAg
aWYgKCF0YXJnZXRSZWN0LmludGVyc2VjdChkZXZpY2VJbWFnZU1hc2tDbGlwUmVjdCkpCisgICAg
ICAgICAgICByZXR1cm47CisgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGV2aWNl
SW1hZ2VNYXNrT3BhcXVlUmVjdCkpCiAgICAgICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOwot
ICAgICAgICBlbHNlIHsKLSAgICAgICAgICAgIFNrSVJlY3QgY2xpcEJvdW5kcyA9IGl0LmNsaXAo
KS5nZXRCb3VuZHMoKTsKLSAgICAgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJ
bnRUb1NjYWxhcihjbGlwQm91bmRzLmZMZWZ0KSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZU
b3ApLCBTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihjbGlw
Qm91bmRzLmZCb3R0b20pKSkKLSAgICAgICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQot
ICAgICAgICAvLyBNYWtlIHN1cmUgdGhlIHBhaW50IHN0YXlzIG9wYXF1ZSB0aHJvdWdoIHRoZSBs
YXllci4KLSAgICAgICAgYm9vbCBkcmF3c09wYXF1ZSA9IHBhaW50SXNPcGFxdWUoaXQucGFpbnQo
KSk7Ci0gICAgICAgIHhmZXJzT3BhcXVlID0geGZlcnNPcGFxdWUgJiYgeGZlcm1vZGVJc09wYXF1
ZShpdC5wYWludCgpLCBkcmF3c09wYXF1ZSk7Ci0gICAgICAgIHByZXNlcnZlc09wYXF1ZSA9IHBy
ZXNlcnZlc09wYXF1ZSAmJiB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShpdC5wYWludCgpLCBkcmF3
c09wYXF1ZSk7CiAgICAgfQogCiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byB0aGUgdHJh
Y2tpbmcgc3BhY2UuCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCmluZGV4IDQzMWM2ZWMxOWU1YTY5NGMxOTI5OWFh
MGQ3YjdmYjQ3YTI5MGZkZDguLjMyZTU5NjkxOTA2OTQzZTEzODA5YmZlMTMyN2U4ZWFlNGUxN2Nj
ZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3Bh
cXVlUmVnaW9uU2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBAIC01MywyMCArNTMsNDYgQEAgcHVibGljOgogICAgIC8v
IFRoZSByZXN1bHRpbmcgb3BhcXVlIHJlZ2lvbiBhcyBhIHNpbmdsZSByZWN0LgogICAgIEludFJl
Y3QgYXNSZWN0KCkgY29uc3Q7CiAKLSAgICAvLyBGSVhNRTogbWFrZSBhbGwgdGhlIFBsYXRmb3Jt
Q29udGV4dFNraWEqIGludG8gYSBjb25zdCBwb2ludGVyIHdoZW4gU2tpYSBmaXhlcyBMYXllckl0
ZXIncyBTa0NhbnZhcyouCisgICAgdm9pZCBwdXNoUGFpbnQoY29uc3QgU2tQYWludCYpOworICAg
IHZvaWQgcG9wUGFpbnQoKTsKIAotICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0
U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFp
bnQmLCBjb25zdCBTa0JpdG1hcCopOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNr
UGFpbnQmKTsKLSAgICB2b2lkIGRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNv
bnN0IEFmZmluZVRyYW5zZm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMs
IGNvbnN0IFNrUG9pbnRbXSwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd0JvdW5k
ZWQoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNr
UmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBj
b25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAqKTsKKyAgICB2b2lkIGRpZERyYXdQYXRoKGNv
bnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBT
a1BhdGgmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9p
bnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsK
KyAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CiAKIHBy
aXZhdGU6Ci0gICAgdm9pZCBkaWREcmF3KFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09w
YXF1ZSwgYm9vbCBmaWxsc0JvdW5kcyk7CisgICAgZW51bSBEcmF3VHlwZSB7CisgICAgICAgIEZp
bGxPbmx5LAorICAgICAgICBGaWxsT3JTdHJva2UKKyAgICB9OworCisgICAgdm9pZCBkaWREcmF3
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0Jv
dW5kcywgRHJhd1R5cGUpOwogICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1BhaW50
JiwgYm9vbCBkcmF3c09wYXF1ZSk7CiAgICAgdm9pZCBtYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFNr
UmVjdCYpOwogICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKIAog
ICAgIFNrUmVjdCBtX29wYXF1ZVJlY3Q7CisKKyAgICBzdHJ1Y3QgUGFpbnRTdGFja1N0YXRlIHsK
KyAgICAgICAgUGFpbnRTdGFja1N0YXRlKCkKKyAgICAgICAgICAgIDogeGZlcm1vZGVJc09wYXF1
ZUZvckZpbGwodHJ1ZSkKKyAgICAgICAgICAgICwgeGZlcm1vZGVJc09wYXF1ZUZvclN0cm9rZSh0
cnVlKQorICAgICAgICAgICAgLCB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvckZpbGwodHJ1ZSkK
KyAgICAgICAgICAgICwgeGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWVGb3JTdHJva2UodHJ1ZSkKKyAg
ICAgICAgeworICAgICAgICB9CisKKyAgICAgICAgYm9vbCB4ZmVybW9kZUlzT3BhcXVlRm9yRmls
bDsKKyAgICAgICAgYm9vbCB4ZmVybW9kZUlzT3BhcXVlRm9yU3Ryb2tlOworICAgICAgICBib29s
IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlRm9yRmlsbDsKKyAgICAgICAgYm9vbCB4ZmVybW9kZVBy
ZXNlcnZlc09wYXF1ZUZvclN0cm9rZTsKKyAgICB9OworCisgICAgLy8gVGhlIHN0YWNrIGFjY3Vt
dWxhdGVzIHN0YXRlIGZyb20gdGhlIGJhY2ssIHNvIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBzdGFj
ayBpcyB0aGUgb25seQorICAgIC8vIHZhbHVlIHlvdSBuZWVkIHRvIGNoZWNrIHRvIGtub3cgaWYg
dGhlIHB1c2hlZCBTa1BhaW50cyBhbGwgaW4gY29tYmluYXRpb24gYXJlIG9wYXF1ZSBvcgorICAg
IC8vIHByZXNlcnZlIG9wYXF1ZSBkcmF3cy4KKyAgICBWZWN0b3I8UGFpbnRTdGFja1N0YXRlLCAz
PiBtX3BhaW50U3RhY2s7CiB9OwogCiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCA1
OTYwYTA3ZmI3NzU3NTRiYWQ0NTIwZGFjOWMyZTFjY2ZiOTUwMTE0Li4zYzMwYTU0ZTNkNzc2OWE5
NWQ4ZDg1NDFiNWVjNDczNWQyY2MyNWZkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKQEAg
LTk4LDYgKzk4LDE0IEBAIHN0cnVjdCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZSB7CiAgICAg
Ly8gSWYgbV9pbWFnZUJ1ZmZlckNsaXAgaXMgbm9uLWVtcHR5LCB0aGlzIGlzIHRoZSByZWdpb24g
dGhlIGltYWdlIGlzIGNsaXBwZWQgdG8uCiAgICAgU2tSZWN0IG1fY2xpcDsKIAorICAgIC8vIFRo
aXMgaXMgdHJ1ZSBpZiB0aGUgY3VycmVudCBzdGFjayBmcmFtZSBvciBhbnkgZnJhbWUgYmVmb3Jl
IGl0IGhhcyBhbiBpbWFnZSBidWZmZXIgY2xpcC4KKyAgICBib29sIG1faXNJbWFnZUJ1ZmZlckNs
aXBPblN0YWNrOworICAgIC8vIFRoZXNlIGlzIGFjY3VtdWxhdGVkIHRocm91Z2ggYWxsIGxheWVy
cyBhbmQgYXJlIHRoZSBpbnRlcnNlY3Rpb24gb2YgYWxsIHN1Y2ggcmVjdHMuCisgICAgU2tSZWN0
IG1fcHJldmlvdXNJbWFnZUJ1ZmZlckNsaXBSZWN0OworICAgIFNrUmVjdCBtX3RvdGFsSW1hZ2VC
dWZmZXJDbGlwUmVjdDsKKyAgICBTa1JlY3QgbV9wcmV2aW91c0ltYWdlQnVmZmVyT3BhcXVlUmVj
dDsKKyAgICBTa1JlY3QgbV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdDsKKwogICAgIEludGVy
cG9sYXRpb25RdWFsaXR5IG1faW50ZXJwb2xhdGlvblF1YWxpdHk7CiAKICAgICBQbGF0Zm9ybUNv
bnRleHRTa2lhOjpTdGF0ZSBjbG9uZUluaGVyaXRlZFByb3BlcnRpZXMoKTsKQEAgLTEyMiw2ICsx
MzAsNyBAQCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9saW5l
Sm9pbihTa1BhaW50OjprRGVmYXVsdF9Kb2luKQogICAgICwgbV9kYXNoKDApCiAgICAgLCBtX3Rl
eHREcmF3aW5nTW9kZShUZXh0TW9kZUZpbGwpCisgICAgLCBtX2lzSW1hZ2VCdWZmZXJDbGlwT25T
dGFjayhmYWxzZSkKICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkhp
Z2gpCiB7CiB9CkBAIC0xNDMsNiArMTUyLDExIEBAIFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRl
OjpTdGF0ZShjb25zdCBTdGF0ZSYgb3RoZXIpCiAgICAgLCBtX3RleHREcmF3aW5nTW9kZShvdGhl
ci5tX3RleHREcmF3aW5nTW9kZSkKICAgICAsIG1faW1hZ2VCdWZmZXJDbGlwKG90aGVyLm1faW1h
Z2VCdWZmZXJDbGlwKQogICAgICwgbV9jbGlwKG90aGVyLm1fY2xpcCkKKyAgICAsIG1faXNJbWFn
ZUJ1ZmZlckNsaXBPblN0YWNrKG90aGVyLm1faXNJbWFnZUJ1ZmZlckNsaXBPblN0YWNrKQorICAg
ICwgbV9wcmV2aW91c0ltYWdlQnVmZmVyQ2xpcFJlY3Qob3RoZXIubV90b3RhbEltYWdlQnVmZmVy
Q2xpcFJlY3QpCisgICAgLCBtX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdChvdGhlci5tX3RvdGFs
SW1hZ2VCdWZmZXJDbGlwUmVjdCkKKyAgICAsIG1fcHJldmlvdXNJbWFnZUJ1ZmZlck9wYXF1ZVJl
Y3Qob3RoZXIubV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdCkKKyAgICAsIG1fdG90YWxJbWFn
ZUJ1ZmZlck9wYXF1ZVJlY3Qob3RoZXIubV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdCkKICAg
ICAsIG1faW50ZXJwb2xhdGlvblF1YWxpdHkob3RoZXIubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSkK
IHsKICAgICAvLyBVcCB0aGUgcmVmIGNvdW50IG9mIHRoZXNlLiBTa1NhZmVSZWYgZG9lcyBub3Ro
aW5nIGlmIGl0cyBhcmd1bWVudCBpcyAwLgpAQCAtMjI2LDYgKzI0MCwxOCBAQCB2b2lkIFBsYXRm
b3JtQ29udGV4dFNraWE6OnNhdmUoKQogICAgIGNhbnZhcygpLT5zYXZlKCk7CiB9CiAKK3ZvaWQg
UGxhdGZvcm1Db250ZXh0U2tpYTo6c2F2ZUxheWVyKGNvbnN0IFNrUmVjdCogYm91bmRzLCBjb25z
dCBTa1BhaW50KiBwYWludCkKK3sKKyAgICBtX2NhbnZhcy0+c2F2ZUxheWVyKGJvdW5kcywgcGFp
bnQpOworICAgIGRpZFNhdmVMYXllcigqcGFpbnQpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4
dFNraWE6OnJlc3RvcmVMYXllcigpCit7CisgICAgbV9jYW52YXMtPnJlc3RvcmUoKTsKKyAgICBk
aWRSZXN0b3JlTGF5ZXIoKTsKK30KKwogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxh
eWVyQ2xpcHBlZFRvSW1hZ2UoY29uc3QgRmxvYXRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VCdWZmZXIqIGlt
YWdlQnVmZmVyKQogewpAQCAtMjYwLDYgKzI4NiwyNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNr
aWE6OmJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsCiAgICAg
ICAgIC8vIElmIHRoZXJlIGlzIGEgcGl4ZWwgcmVmLCB3ZSBjYW4gc2FmZWx5IHVzZSB0aGUgYXNz
aWdubWVudCBvcGVyYXRvci4KICAgICAgICAgbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAgPSAq
Yml0bWFwOwogICAgIH0KKworICAgIC8vIFNhdmUgdGhlIGFjY3VtdWxhdGVkIGNsaXAgYW5kIG9w
YXF1ZSBhcmVhLCBhZnRlciBtYXNraW5nIHRvIHRoZSBpbWFnZSBhbG9uZyB3aXRoIG90aGVycyBp
biB0aGUgc3RhY2suCisgICAgYm9vbCBzdGFja0hhZEltYWdlQnVmZmVyQ2xpcCA9IG1fc3RhdGUt
Pm1faXNJbWFnZUJ1ZmZlckNsaXBPblN0YWNrOworCisgICAgbV9zdGF0ZS0+bV9pc0ltYWdlQnVm
ZmVyQ2xpcE9uU3RhY2sgPSB0cnVlOworICAgIG1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlckNs
aXBSZWN0ID0gbV9zdGF0ZS0+bV9jbGlwOworICAgIG1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZl
ck9wYXF1ZVJlY3QgPSBtX3N0YXRlLT5tX2ltYWdlQnVmZmVyQ2xpcC5pc09wYXF1ZSgpID8gbV9z
dGF0ZS0+bV9jbGlwIDogU2tSZWN0OjpNYWtlRW1wdHkoKTsKKyAgICBpZiAoc3RhY2tIYWRJbWFn
ZUJ1ZmZlckNsaXApIHsKKyAgICAgICAgLy8gSW50ZXJzZWN0IHdpdGggdGhlIHByZXZpb3VzIHJl
Y3RzIGZyb20gdGhlIHN0YWNrLgorICAgICAgICBpZiAoIW1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1
ZmZlckNsaXBSZWN0LmludGVyc2VjdChtX3N0YXRlLT5tX3ByZXZpb3VzSW1hZ2VCdWZmZXJDbGlw
UmVjdCkpCisgICAgICAgICAgICBtX3N0YXRlLT5tX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdC5z
ZXRFbXB0eSgpOworICAgICAgICBpZiAoIW1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlck9wYXF1
ZVJlY3QuaW50ZXJzZWN0KG1fc3RhdGUtPm1fcHJldmlvdXNJbWFnZUJ1ZmZlck9wYXF1ZVJlY3Qp
KQorICAgICAgICAgICAgbV9zdGF0ZS0+bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdC5zZXRF
bXB0eSgpOworICAgIH0KK30KKworYm9vbCBQbGF0Zm9ybUNvbnRleHRTa2lhOjppc0luTGF5ZXJD
bGlwcGVkVG9JbWFnZShTa1JlY3QmIGRldmljZUNsaXBSZWN0LCBTa1JlY3QmIGRldmljZU9wYXF1
ZVJlY3QpIGNvbnN0Cit7CisgICAgZGV2aWNlQ2xpcFJlY3QgPSBtX3N0YXRlLT5tX3RvdGFsSW1h
Z2VCdWZmZXJDbGlwUmVjdDsKKyAgICBkZXZpY2VPcGFxdWVSZWN0ID0gbV9zdGF0ZS0+bV90b3Rh
bEltYWdlQnVmZmVyT3BhcXVlUmVjdDsKKyAgICByZXR1cm4gbV9zdGF0ZS0+bV9pc0ltYWdlQnVm
ZmVyQ2xpcE9uU3RhY2s7CiB9CiAKIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcFBhdGhB
bnRpQWxpYXNlZChjb25zdCBTa1BhdGgmIGNsaXBQYXRoKQpAQCAtNjI2LDQgKzY3MywxNCBAQCB2
b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFNrUmVjdCYgcmVj
dCwgY29uc3QgU2tQYWludCYgcGFpbgogICAgICAgICBtX29wYXF1ZVJlZ2lvbi5kaWREcmF3Qm91
bmRlZCh0aGlzLCBtX29wYXF1ZVJlZ2lvblRyYW5zZm9ybSwgcmVjdCwgcGFpbnQpOwogfQogCit2
b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmRpZFNhdmVMYXllcihjb25zdCBTa1BhaW50JiBwYWlu
dCkKK3sKKyAgICBtX29wYXF1ZVJlZ2lvbi5wdXNoUGFpbnQocGFpbnQpOworfQorCit2b2lkIFBs
YXRmb3JtQ29udGV4dFNraWE6OmRpZFJlc3RvcmVMYXllcigpCit7CisgICAgbV9vcGFxdWVSZWdp
b24ucG9wUGFpbnQoKTsKK30KKwogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaAppbmRleCAwMjhjNmU5ZjM3ZjU1NTYyMjg5Y2QxNDU1ZWFkMmZlNjI2MTNiYjljLi43
N2NmYTNjMjVhMjJkZDE0MjQwN2Y4M2YxNTRjY2RkOGY2M2JjMDUwIDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaApAQCAtOTMsMTEgKzkzLDE4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNhdmUoKTsKICAg
ICB2b2lkIHJlc3RvcmUoKTsKIAorICAgIHZvaWQgc2F2ZUxheWVyKGNvbnN0IFNrUmVjdCosIGNv
bnN0IFNrUGFpbnQqKTsKKyAgICB2b2lkIHJlc3RvcmVMYXllcigpOworCiAgICAgLy8gQmVnaW5z
IGEgbGF5ZXIgdGhhdCBpcyBjbGlwcGVkIHRvIHRoZSBpbWFnZSB8aW1hZ2VCdWZmZXJ8IGF0IHRo
ZSBsb2NhdGlvbgogICAgIC8vIHxyZWN0fC4gVGhpcyBsYXllciBpcyBpbXBsaWNpdGx5IHJlc3Rv
cmVkIHdoZW4gdGhlIG5leHQgcmVzdG9yZSBpcwogICAgIC8vIGludm9rZWQuCiAgICAgLy8gTk9U
RTogfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIHxyZXN0b3JlfCBpcyBp
bnZva2VkLgogICAgIHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0UmVj
dCYsIGNvbnN0IEltYWdlQnVmZmVyKik7CisgICAgLy8gUmV0dXJucyB0aGUgcmVnaW9uIG9mIG9w
YXF1ZSBjb250ZW50cyBhZnRlciBjbGlwcGluZyBhbmQgbWFza2luZyBhbGwKKyAgICAvLyBsYXll
cnMgY2xpcHBlZCB0byBpbWFnZXMuCisgICAgYm9vbCBpc0luTGF5ZXJDbGlwcGVkVG9JbWFnZShT
a1JlY3QmIGRldmljZUNsaXBSZWN0LCBTa1JlY3QmIGRldmljZU9wYXF1ZVJlY3QpIGNvbnN0Owor
CiAgICAgdm9pZCBjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYpOwogCiAgICAgLy8g
U2V0cyB1cCB0aGUgY29tbW9uIGZsYWdzIG9uIGEgcGFpbnQgZm9yIGFudGlhbGlhc2luZywgZWZm
ZWN0cywgZXRjLgpAQCAtMjAzLDYgKzIxMCw5IEBAIHB1YmxpYzoKICAgICAvLyBGb3IgZHJhd2lu
ZyBvcGVyYXRpb25zIHRoYXQgZG8gbm90IGZpbGwgdGhlIGVudGlyZSByZWN0LgogICAgIHZvaWQg
ZGlkRHJhd0JvdW5kZWQoY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOwogCisgICAgdm9p
ZCBkaWRTYXZlTGF5ZXIoY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkUmVzdG9yZUxheWVy
KCk7CisKIHByaXZhdGU6CiAgICAgLy8gVXNlZCB3aGVuIHJlc3RvcmluZyBhbmQgdGhlIHN0YXRl
IGhhcyBhbiBpbWFnZSBjbGlwLiBPbmx5IHNob3dzIHRoZSBwaXhlbHMgaW4KICAgICAvLyBtX2Nh
bnZhcyB0aGF0IGFyZSBhbHNvIGluIGltYWdlQnVmZmVyLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134676</attachid>
            <date>2012-03-29 15:05:53 -0700</date>
            <delta_ts>2012-03-29 19:25:00 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82564-20120329180551.patch</filename>
            <type>text/plain</type>
            <size>24165</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYjgwZmNkZmFmOGY5
MWFjN2MwZDgzOTgzN2Y3N2Q1MzMxN2UxZS4uNTFmMjY4M2NkNTA3Yzk5NmQ0ZWE1ODNiZWY4ZDA2
M2VkNzU5ZDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTAzLTI4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3BhcXVlUmVnaW9uU2tpYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXItdGlsZS1wYWludGlu
ZyB1c2VzIGFuIFNrUGljdHVyZVJlY29yZCBpbiBwbGFjZSBvZiBhbiBTa0NhbnZhcworICAgICAg
ICBhcyB0aGUgcGFpbnRpbmcgdGFyZ2V0IGZvciB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIGNs
YXNzIG9ubHkgZG9lcworICAgICAgICBhIHNpbXBsZSByZWNvcmRpbmcgYW5kIGRvZXMgbm90IGNy
ZWF0ZSBsYXllcnMgaW4gdGhlIGNhbnZhcyBkdXJpbmcKKyAgICAgICAgcmVjb3JkLCBvbmx5IHBs
YXliYWNrLiBUaGlzIGlzIHByZXZlbnRpbmcgdXMgZnJvbSBjb3JyZWN0bHkgdHJhY2tpbmcKKyAg
ICAgICAgb3BhcXVlIHJlZ2lvbnMgdW5kZXIgcGVyLXRpbGUtcGFpbnRpbmcuCisKKyAgICAgICAg
V2UgY3VycmVudGx5IHVzZSB0aGUgU2tDYW52YXMgTGF5ZXJJdGVyIHRvIGxvb2sgYXQgdGhlIGxh
eWVycyBpbiB0aGUKKyAgICAgICAgY2FudmFzIGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCwg
YW5kIGNoZWNrIHRoZSBTa1BhaW50cywgY2xpcHMsCisgICAgICAgIGFuZCB0cmFuc2Zvcm1zIHRv
IHNlZSBob3cgdGhleSBpbXBhY3QgdGhlIGN1cnJlbnQgZHJhdyBvbmNlIGl0IHJlYWNoZXMKKyAg
ICAgICAgdGhlIGZpbmFsIGRldmljZS4KKworICAgICAgICBUaGUgY2xpcHMgYW5kIHRyYW5zZm9y
bXMgY2FuIGJlIHJldHJlaXZlZCB3aXRob3V0IHVzaW5nIHRoZSBMYXllckl0ZXIKKyAgICAgICAg
dGhyb3VnaCB0aGUgImdldFRvdGFsKiIgbWV0aG9kcy4gQSBjdW11bGF0aXZlIFNrUGFpbnQgaXMg
bm90IGF2YWlsYWJsZQorICAgICAgICBzbyB3ZSBzdG9yZSB0aGlzIG91cnNlbHZlcy4KKworICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGJlY29tZXMgYXdhcmUgb2Ygd2hlbiBzYXZlTGF5ZXIo
KSBpcyBiZWluZyBjYWxsZWQKKyAgICAgICAgb24gdGhlIHVuZGVybHlpbmcgY2FudmFzLCBhbmQg
cGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEg
Y2xhc3MuIFNpbmNlIHdlIG5vIGxvbmdlciB3YXRjaCBsYXllcnMgaW4gdGhlIGNhbnZhcywKKyAg
ICAgICAgd2UgbXVzdCBleHBsaWNpdGx5IGhhbmRsZSBpbWFnZSBjbGlwcGluZyBmb3IgdGhlIG9w
YXF1ZSB0cmFja2VyLCBhcworICAgICAgICBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUGxhdGZv
cm1Db250ZXh0U2tpYSwgbm90IHZpYSBjb25zdHJ1Y3RzIGluCisgICAgICAgIHRoZSBTa0NhbnZh
cy9Ta1BhaW50LiBXZSBzYXZlIHRoZSBjdW11bGF0aXZlIGNsaXAgcmVjdCBhbmQgb3BhcXVlIG1h
c2sKKyAgICAgICAgYXJlYSBpbiB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSBhbmQgYWxsb3cgT3Bh
cXVlUmVnaW9uU2tpYSB0byBnZXQgYXQKKyAgICAgICAgaXQgdGhyb3VnaCB0aGUgaXNJbkxheWVy
Q2xpcHBlZFRvSW1hZ2UoKSBtZXRob2RzLiBBbmQgd2Ugc2F2ZSBhCisgICAgICAgIGN1bXVsYXRp
dmUgdmlldyBvZiB0aGUgU2tQYWludHMgaW4gYWxsIHNhdmVkIGxheWVycyBpbiB0aGUgbV9wYWlu
dFN0YWNrCisgICAgICAgIG9mIE9wYXF1ZVJlZ2lvblNraWEsIHNvIHRoYXQgdGhlIGRhdGEgd2Ug
YXJlIGludGVyZXN0ZWQgaW4gY2FuIGJlCisgICAgICAgIHJldHJlaXZlZCBieSBqdXN0IGxvb2tp
bmcgYXQgdGhlIGhlYWQgb2YgdGhlIHN0YWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVH
YXVzc2lhbkJsdXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpw
bGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cHVzaFBhaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cG9wUGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3Bh
cXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuaDoKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6UGFpbnRTdGFja1N0YXRlOjpQYWludFN0YWNrU3RhdGUp
OgorICAgICAgICAoUGFpbnRTdGFja1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0
U2tpYTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6U3Rh
dGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmVM
YXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29u
dGV4dFNraWE6OnJlc3RvcmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0U2tpYTo6aXNJbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZFJlc3RvcmVMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChQbGF0
Zm9ybUNvbnRleHRTa2lhKToKKwogMjAxMi0wMy0yOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwYXRjaCBjb25z
b2xlLW1lc3NhZ2UtYWRkZWQgYW5kIGNvbnNvbGUtbWVzc2FnZXMtY2xlYXJlZCBldmVudHMgb24g
VUlTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRl
eCA0YjM2NzUxZmFmNDc5NGY4Y2EyM2FjYThiMDc1M2M1N2JjZjdlZGQyLi5iNjk0YzliMWM1NWE4
MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcApAQCAtNTEsMTIgKzUxLDEzIEBAIGJvb2wgRkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBTa0NhbnZhcyog
Y2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIFBs
YXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRzdENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBTa0JsdXJJbWFnZUZpbHRl
cihzdGRYLCBzdGRZKSktPnVucmVmKCk7Ci0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50
KTsKKworICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZUxheWVyKDAsICZwYWludCk7CiAgICAgcGFp
bnQuc2V0Q29sb3IoMHhGRkZGRkZGRik7CiAgICAgZHN0Q29udGV4dC0+ZHJhd0ltYWdlKGltYWdl
LmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCksIENv
bXBvc2l0ZUNvcHkpOwotICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgIHBsYXRmb3JtQ29udGV4
dC0+cmVzdG9yZUxheWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9G
RU1vcnBob2xvZ3lTa2lhLmNwcAppbmRleCAwNjdhNjUzYTJhNWJhZTM1Y2MzZWRiNjc5ZDkyN2Iz
MTg4NDNlOGRhLi5lNzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJkYjA1IDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVN
b3JwaG9sb2d5U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
ZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCkBAIC01MCwxNSArNTAsMTUgQEAgYm9v
bCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7
CiAgICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQo
KTsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCkt
PmNhbnZhcygpOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRz
dENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQSE9M
T0dZX09QRVJBVE9SX0RJTEFURSkKICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIobmV3IFNr
RGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkpLT51bnJlZigpOwogICAgIGVsc2Ug
aWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiAgICAgICAgIHBhaW50
LnNldEltYWdlRmlsdGVyKG5ldyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkp
LT51bnJlZigpOwogCi0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQtPnNhdmVMYXllcigwLCAmcGFpbnQpOwogICAgIGRzdENvbnRleHQtPmRyYXdJ
bWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbi5sb2Nh
dGlvbigpLCBDb21wb3NpdGVDb3B5KTsKLSAgICBjYW52YXMtPnJlc3RvcmUoKTsKKyAgICBwbGF0
Zm9ybUNvbnRleHQtPnJlc3RvcmVMYXllcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFw
aGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0Zjc5Y2ZiMGI1ZTY5YzVjNTRlNzNiZDBlMmNiYTlh
Mzk1YWY2NWViLi4zYzI3ZDM3MDZlMWY1Yzk3ZTk2ZDk0N2Q5ZjRlMWIxMWFmOTg5ZGFjIDEwMDY0
NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29u
dGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEv
R3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTI3MSwyMyArMjcxLDIwIEBAIHZvaWQgR3JhcGhp
Y3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkK
ICAgICAvLyAodGhlIHN1cmZhY2Ugb2YgdGhlIHBhZ2UpIGJ1dCBsYXllcnMgb24gdG9wIG1heSBo
YXZlIHRyYW5zcGFyZW50IHBhcnRzLgogICAgIC8vIFdpdGhvdXQgZXhwbGljaXRseSBzZXR0aW5n
IHRoZSBhbHBoYSBmbGFnLCB0aGUgbGF5ZXIgd2lsbCBpbmhlcml0IHRoZQogICAgIC8vIG9wYXF1
ZSBzZXR0aW5nIG9mIHRoZSBiYXNlIGFuZCBzb21lIHRoaW5ncyB3b24ndCB3b3JrIHByb3Blcmx5
LgorICAgIFNrQ2FudmFzOjpTYXZlRmxhZ3Mgc2F2ZUZsYWdzID0gc3RhdGljX2Nhc3Q8U2tDYW52
YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxheWVyX1NhdmVGbGFnIHwgU2tDYW52
YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZyk7CiAKICAgICBTa1BhaW50IGxheWVyUGFpbnQ7
CiAgICAgbGF5ZXJQYWludC5zZXRBbHBoYShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvcGFj
aXR5ICogMjU1KSk7CiAgICAgbGF5ZXJQYWludC5zZXRYZmVybW9kZU1vZGUocGxhdGZvcm1Db250
ZXh0KCktPmdldFhmZXJtb2RlTW9kZSgpKTsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52
YXMoKS0+c2F2ZUxheWVyKAotICAgICAgICAwLAotICAgICAgICAmbGF5ZXJQYWludCwKLSAgICAg
ICAgc3RhdGljX2Nhc3Q8U2tDYW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxh
eWVyX1NhdmVGbGFnIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
U2tDYW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOworICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5zYXZlTGF5ZXIoMCwgJmxheWVyUGFpbnQsIHNhdmVGbGFncyk7CiB9CiAKIHZvaWQgR3Jh
cGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICAgICBpZiAo
cGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcGxhdGZvcm1Db250ZXh0
KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPnJlc3RvcmVM
YXllcigpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNUcmFuc3BhcmVuY3lM
YXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9PcGFxdWVSZWdpb25Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKaW5kZXggNWE0ZjE1MzRjMDlmZjgyY2M1MzZkNGZi
YmJlMzY4YmY2ZjRjYmJhNS4uODhkZDYxM2Q1ZGFiMGEwMzljZDg1YzY2NjY1OTJmZTNkYjlkNDIw
MiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFx
dWVSZWdpb25Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCkBAIC00Myw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJD
b3JlIHsKIE9wYXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJlZ2lvblNraWEoKQogICAgIDogbV9vcGFx
dWVSZWN0KFNrUmVjdDo6TWFrZUVtcHR5KCkpCiB7CisgICAgLy8gUHV0IGRlZmF1bHQgYW5zd2Vy
cyBvbiB0aGUgYm90dG9tIG9mIHRoZSBzdGFjaworICAgIG1fcGFpbnRTdGFjay5hcHBlbmQoUGFp
bnRTdGFja1N0YXRlKCkpOwogfQogCiBPcGFxdWVSZWdpb25Ta2lhOjp+T3BhcXVlUmVnaW9uU2tp
YSgpCkBAIC0xNDcsNyArMTQ5LDI3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludElzT3BhcXVl
KGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwID0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChQbGF0Zm9y
bUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0
bWFwKiBiaXRtYXApCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnB1c2hQYWludChjb25zdCBTa1Bh
aW50JiBwYWludCkKK3sKKyAgICBQYWludFN0YWNrU3RhdGUgc3RhdGUgPSBtX3BhaW50U3RhY2su
bGFzdCgpOworCisgICAgYm9vbCBvcGFxdWVGb3JGaWxsID0gcGFpbnRJc09wYXF1ZShwYWludCwg
MCwgdHJ1ZSk7CisgICAgYm9vbCBvcGFxdWVGb3JTdHJva2UgPSBwYWludElzT3BhcXVlKHBhaW50
LCAwLCBmYWxzZSk7CisKKyAgICBzdGF0ZS54ZmVybW9kZUlzT3BhcXVlRm9yRmlsbCAmPSB4ZmVy
bW9kZUlzT3BhcXVlKHBhaW50LCBvcGFxdWVGb3JGaWxsKTsKKyAgICBzdGF0ZS54ZmVybW9kZUlz
T3BhcXVlRm9yU3Ryb2tlICY9IHhmZXJtb2RlSXNPcGFxdWUocGFpbnQsIG9wYXF1ZUZvclN0cm9r
ZSk7CisgICAgc3RhdGUueGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWVGb3JGaWxsICY9IHhmZXJtb2Rl
UHJlc2VydmVzT3BhcXVlKHBhaW50LCBvcGFxdWVGb3JGaWxsKTsKKyAgICBzdGF0ZS54ZmVybW9k
ZVByZXNlcnZlc09wYXF1ZUZvclN0cm9rZSAmPSB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWlu
dCwgb3BhcXVlRm9yU3Ryb2tlKTsKKworICAgIG1fcGFpbnRTdGFjay5hcHBlbmQoc3RhdGUpOwor
fQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnBvcFBhaW50KCkKK3sKKyAgICBtX3BhaW50U3Rh
Y2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIGZpbGxSZWN0LCBjb25zdCBTa1BhaW50JiBwYWlu
dCwgY29uc3QgU2tCaXRtYXAqIGJpdG1hcCkKIHsKICAgICAvLyBBbnkgc3Ryb2tpbmcgbWF5IHB1
dCBhbHBoYSBpbiBwaXhlbHMgZXZlbiBpZiB0aGUgZmlsbGluZyBwYXJ0IGRvZXMgbm90LgogICAg
IGlmIChwYWludC5nZXRTdHlsZSgpICE9IFNrUGFpbnQ6OmtGaWxsX1N0eWxlKSB7CkBAIC0xNTks
MTcgKzE4MSwxNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KFBsYXRmb3Jt
Q29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYQogICAgICAgICBlbHNlIHsKICAg
ICAgICAgICAgIFNrUmVjdCBzdHJva2VSZWN0OwogICAgICAgICAgICAgc3Ryb2tlUmVjdCA9IHBh
aW50LmNvbXB1dGVGYXN0Qm91bmRzKGZpbGxSZWN0LCAmc3Ryb2tlUmVjdCk7Ci0gICAgICAgICAg
ICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tlUmVjdCwgcGFpbnQsIG9wYXF1ZSwg
ZmlsbHNCb3VuZHMpOworICAgICAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHN0
cm9rZVJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxsT3JTdHJva2UpOwogICAg
ICAgICB9CiAgICAgfQogCiAgICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0gdHJ1ZTsKICAgICBib29s
IG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQsIGJpdG1hcCwgY2hlY2tGaWxsT25seSk7CiAg
ICAgYm9vbCBmaWxsc0JvdW5kcyA9IHBhaW50LmdldFN0eWxlKCkgIT0gU2tQYWludDo6a1N0cm9r
ZV9TdHlsZTsKLSAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgZmlsbFJlY3QsIHBhaW50
LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKKyAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwg
ZmlsbFJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxsT25seSk7CiB9CiAKLXZv
aWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSogY29u
dGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUGF0aCYgcGF0
aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50
KQogewogICAgIFNrUmVjdCByZWN0OwogICAgIGlmIChwYXRoLmlzUmVjdCgmcmVjdCkpIHsKQEAg
LTE4NCwxMSArMjA2LDExIEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoUGxh
dGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhCiAgICAgICAgIGRpZERy
YXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1ZSk7CiAgICAgZWxzZSB7CiAgICAgICAgIHJlY3QgPSBw
YWludC5jb21wdXRlRmFzdEJvdW5kcyhwYXRoLmdldEJvdW5kcygpLCAmcmVjdCk7Ci0gICAgICAg
IGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0Jv
dW5kcyk7CisgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwg
b3BhcXVlLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAgICB9CiB9CiAKLXZvaWQgT3Bh
cXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgU2tDYW52YXM6OlBvaW50TW9kZSBt
b2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50IHBvaW50c1tdLCBjb25zdCBTa1BhaW50
JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgU2tDYW52YXM6OlBvaW50TW9kZSBtb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50
IHBvaW50c1tdLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBpZiAoIW51bVBvaW50cykK
ICAgICAgICAgcmV0dXJuOwpAQCAtMjEzLDExICsyMzUsMTEgQEAgdm9pZCBPcGFxdWVSZWdpb25T
a2lhOjpkaWREcmF3UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFm
ZmluZVQKICAgICAgICAgZGlkRHJhd1VuYm91bmRlZChwYWludCwgb3BhcXVlKTsKICAgICBlbHNl
IHsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKHJlY3QsICZyZWN0KTsK
LSAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxsT3JTdHJva2UpOwogICAgIH0KIH0KIAot
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lh
KiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0
JiBib3VuZHMsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBib3VuZHMsIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQogewogICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJc09wYXF1ZShwYWludCk7
CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwpAQCAtMjI3LDE3ICsyNDksMjggQEAgdm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmUKICAgICBlbHNlIHsKICAgICAgICAgU2tSZWN0IHJlY3Q7CiAg
ICAgICAgIHJlY3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhib3VuZHMsICZyZWN0KTsKLSAg
ICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZp
bGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBh
aW50LCBvcGFxdWUsIGZpbGxzQm91bmRzLCBGaWxsT3JTdHJva2UpOwogICAgIH0KIH0KIAotdm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQs
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNv
bnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQor
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
IGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3Qm
IHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBib29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxz
Qm91bmRzLCBEcmF3VHlwZSBkcmF3VHlwZSkKIHsKICAgICBTa1JlY3QgdGFyZ2V0UmVjdCA9IHJl
Y3Q7CiAKICAgICBib29sIHhmZXJzT3BhcXVlID0geGZlcm1vZGVJc09wYXF1ZShwYWludCwgZHJh
d3NPcGFxdWUpOwogICAgIGJvb2wgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQcmVzZXJ2ZXNP
cGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKTsKIAorICAgIHN3aXRjaCAoZHJhd1R5cGUpIHsKKyAg
ICBjYXNlIEZpbGxPbmx5OgorICAgICAgICB4ZmVyc09wYXF1ZSAmPSBtX3BhaW50U3RhY2subGFz
dCgpLnhmZXJtb2RlSXNPcGFxdWVGb3JGaWxsOworICAgICAgICBwcmVzZXJ2ZXNPcGFxdWUgJj0g
bV9wYWludFN0YWNrLmxhc3QoKS54ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvckZpbGw7CisgICAg
ICAgIGJyZWFrOworICAgIGNhc2UgRmlsbE9yU3Ryb2tlOgorICAgICAgICB4ZmVyc09wYXF1ZSAm
PSBtX3BhaW50U3RhY2subGFzdCgpLnhmZXJtb2RlSXNPcGFxdWVGb3JTdHJva2U7CisgICAgICAg
IHByZXNlcnZlc09wYXF1ZSAmPSBtX3BhaW50U3RhY2subGFzdCgpLnhmZXJtb2RlUHJlc2VydmVz
T3BhcXVlRm9yU3Ryb2tlOworICAgICAgICBicmVhazsKKyAgICB9CisKICAgICAvLyBBcHBseSB0
aGUgdHJhbnNmb3JtIHRvIGRldmljZSBjb29yZGluYXRlIHNwYWNlLgogICAgIFNrTWF0cml4IGNh
bnZhc1RyYW5zZm9ybSA9IGNvbnRleHQtPmNhbnZhcygpLT5nZXRUb3RhbE1hdHJpeCgpOwogICAg
IGlmICghY2FudmFzVHJhbnNmb3JtLm1hcFJlY3QoJnRhcmdldFJlY3QpKQpAQCAtMjQ3LDI4ICsy
ODAsMTkgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3KFBsYXRmb3JtQ29udGV4dFNr
aWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm8KICAgICBpZiAoY29udGV4dC0+Y2FudmFz
KCktPmdldENsaXBUeXBlKCkgIT0gU2tDYW52YXM6OmtSZWN0X0NsaXBUeXBlKQogICAgICAgICBm
aWxsc0JvdW5kcyA9IGZhbHNlOwogICAgIGVsc2UgewotICAgICAgICBTa0lSZWN0IGRldmljZUNs
aXA7Ci0gICAgICAgIGNvbnRleHQtPmNhbnZhcygpLT5nZXRDbGlwRGV2aWNlQm91bmRzKCZkZXZp
Y2VDbGlwKTsKKyAgICAgICAgU2tJUmVjdCBkZXZpY2VDbGlwID0gY29udGV4dC0+Y2FudmFzKCkt
PmdldFRvdGFsQ2xpcCgpLmdldEJvdW5kcygpOwogICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50
ZXJzZWN0KFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mTGVmdCksIFNrSW50VG9TY2FsYXIoZGV2
aWNlQ2xpcC5mVG9wKSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZSaWdodCksIFNrSW50VG9T
Y2FsYXIoZGV2aWNlQ2xpcC5mQm90dG9tKSkpCiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQog
Ci0gICAgLy8gQXBwbHkgYW55IGxheWVycyB0aGF0IHdlIGFyZSBkcmF3aW5nIGludG8uCi0gICAg
Zm9yIChTa0NhbnZhczo6TGF5ZXJJdGVyIGl0KGNvbnRleHQtPmNhbnZhcygpLCBmYWxzZSk7ICFp
dC5kb25lKCk7IGl0Lm5leHQoKSkgewotICAgICAgICAvLyBBcHBseSB0aGUgbGF5ZXIncyBjbGlw
ICh3aGljaCBpcyBpbiBkZXZpY2Ugc3BhY2UpCi0gICAgICAgIGNvbnN0IFNrUmVnaW9uJiBkZXZp
Y2VMYXllckNsaXAgPSBpdC5jbGlwKCk7Ci0gICAgICAgIGlmIChkZXZpY2VMYXllckNsaXAuaXNF
bXB0eSgpIHx8ICFkZXZpY2VMYXllckNsaXAuaXNSZWN0KCkpCisgICAgLy8gQXBwbHkgdGhlIGlt
YWdlIGNsaXAgbWFzayBpZiBhbnkuCisgICAgU2tSZWN0IGRldmljZUltYWdlTWFza0NsaXBSZWN0
OworICAgIFNrUmVjdCBkZXZpY2VJbWFnZU1hc2tPcGFxdWVSZWN0OworICAgIGlmIChjb250ZXh0
LT5pc0luTGF5ZXJDbGlwcGVkVG9JbWFnZShkZXZpY2VJbWFnZU1hc2tDbGlwUmVjdCwgZGV2aWNl
SW1hZ2VNYXNrT3BhcXVlUmVjdCkpIHsKKyAgICAgICAgaWYgKCF0YXJnZXRSZWN0LmludGVyc2Vj
dChkZXZpY2VJbWFnZU1hc2tDbGlwUmVjdCkpCisgICAgICAgICAgICByZXR1cm47CisgICAgICAg
IGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGV2aWNlSW1hZ2VNYXNrT3BhcXVlUmVjdCkpCiAg
ICAgICAgICAgICBmaWxsc0JvdW5kcyA9IGZhbHNlOwotICAgICAgICBlbHNlIHsKLSAgICAgICAg
ICAgIFNrSVJlY3QgY2xpcEJvdW5kcyA9IGl0LmNsaXAoKS5nZXRCb3VuZHMoKTsKLSAgICAgICAg
ICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZM
ZWZ0KSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZUb3ApLCBTa0ludFRvU2NhbGFyKGNsaXBC
b3VuZHMuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZCb3R0b20pKSkKLSAgICAg
ICAgICAgICAgICByZXR1cm47Ci0gICAgICAgIH0KLQotICAgICAgICAvLyBNYWtlIHN1cmUgdGhl
IHBhaW50IHN0YXlzIG9wYXF1ZSB0aHJvdWdoIHRoZSBsYXllci4KLSAgICAgICAgYm9vbCBkcmF3
c09wYXF1ZSA9IHBhaW50SXNPcGFxdWUoaXQucGFpbnQoKSk7Ci0gICAgICAgIHhmZXJzT3BhcXVl
ID0geGZlcnNPcGFxdWUgJiYgeGZlcm1vZGVJc09wYXF1ZShpdC5wYWludCgpLCBkcmF3c09wYXF1
ZSk7Ci0gICAgICAgIHByZXNlcnZlc09wYXF1ZSA9IHByZXNlcnZlc09wYXF1ZSAmJiB4ZmVybW9k
ZVByZXNlcnZlc09wYXF1ZShpdC5wYWludCgpLCBkcmF3c09wYXF1ZSk7CiAgICAgfQogCiAgICAg
Ly8gQXBwbHkgdGhlIHRyYW5zZm9ybSB0byB0aGUgdHJhY2tpbmcgc3BhY2UuCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEu
aCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tp
YS5oCmluZGV4IDQzMWM2ZWMxOWU1YTY5NGMxOTI5OWFhMGQ3YjdmYjQ3YTI5MGZkZDguLjMyZTU5
NjkxOTA2OTQzZTEzODA5YmZlMTMyN2U4ZWFlNGUxN2NjZWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9X
ZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBA
IC01MywyMCArNTMsNDYgQEAgcHVibGljOgogICAgIC8vIFRoZSByZXN1bHRpbmcgb3BhcXVlIHJl
Z2lvbiBhcyBhIHNpbmdsZSByZWN0LgogICAgIEludFJlY3QgYXNSZWN0KCkgY29uc3Q7CiAKLSAg
ICAvLyBGSVhNRTogbWFrZSBhbGwgdGhlIFBsYXRmb3JtQ29udGV4dFNraWEqIGludG8gYSBjb25z
dCBwb2ludGVyIHdoZW4gU2tpYSBmaXhlcyBMYXllckl0ZXIncyBTa0NhbnZhcyouCisgICAgdm9p
ZCBwdXNoUGFpbnQoY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgcG9wUGFpbnQoKTsKIAotICAg
IHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCopOwot
ICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRy
YW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2b2lkIGRpZERy
YXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIFNr
Q2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRbXSwgY29uc3Qg
U2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSos
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmKTsK
KyAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tC
aXRtYXAqKTsKKyAgICB2b2lkIGRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7
CisgICAgdm9pZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25z
dCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBj
b25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdCb3VuZGVk
KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWREcmF3
KFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1Jl
Y3QmLCBjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcyk7
CisgICAgZW51bSBEcmF3VHlwZSB7CisgICAgICAgIEZpbGxPbmx5LAorICAgICAgICBGaWxsT3JT
dHJva2UKKyAgICB9OworCisgICAgdm9pZCBkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNr
aWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50
JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcywgRHJhd1R5cGUpOwogICAgIHZv
aWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSk7CiAg
ICAgdm9pZCBtYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFNrUmVjdCYpOwogICAgIHZvaWQgbWFya1Jl
Y3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKIAogICAgIFNrUmVjdCBtX29wYXF1ZVJlY3Q7
CisKKyAgICBzdHJ1Y3QgUGFpbnRTdGFja1N0YXRlIHsKKyAgICAgICAgUGFpbnRTdGFja1N0YXRl
KCkKKyAgICAgICAgICAgIDogeGZlcm1vZGVJc09wYXF1ZUZvckZpbGwodHJ1ZSkKKyAgICAgICAg
ICAgICwgeGZlcm1vZGVJc09wYXF1ZUZvclN0cm9rZSh0cnVlKQorICAgICAgICAgICAgLCB4ZmVy
bW9kZVByZXNlcnZlc09wYXF1ZUZvckZpbGwodHJ1ZSkKKyAgICAgICAgICAgICwgeGZlcm1vZGVQ
cmVzZXJ2ZXNPcGFxdWVGb3JTdHJva2UodHJ1ZSkKKyAgICAgICAgeworICAgICAgICB9CisKKyAg
ICAgICAgYm9vbCB4ZmVybW9kZUlzT3BhcXVlRm9yRmlsbDsKKyAgICAgICAgYm9vbCB4ZmVybW9k
ZUlzT3BhcXVlRm9yU3Ryb2tlOworICAgICAgICBib29sIHhmZXJtb2RlUHJlc2VydmVzT3BhcXVl
Rm9yRmlsbDsKKyAgICAgICAgYm9vbCB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvclN0cm9rZTsK
KyAgICB9OworCisgICAgLy8gVGhlIHN0YWNrIGFjY3VtdWxhdGVzIHN0YXRlIGZyb20gdGhlIGJh
Y2ssIHNvIHRoZSBsYXN0IHZhbHVlIGluIHRoZSBzdGFjayBpcyB0aGUgb25seQorICAgIC8vIHZh
bHVlIHlvdSBuZWVkIHRvIGNoZWNrIHRvIGtub3cgaWYgdGhlIHB1c2hlZCBTa1BhaW50cyBhbGwg
aW4gY29tYmluYXRpb24gYXJlIG9wYXF1ZSBvcgorICAgIC8vIHByZXNlcnZlIG9wYXF1ZSBkcmF3
cy4KKyAgICBWZWN0b3I8UGFpbnRTdGFja1N0YXRlLCAzPiBtX3BhaW50U3RhY2s7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCA1OTYwYTA3ZmI3NzU3NTRiYWQ0NTIwZGFj
OWMyZTFjY2ZiOTUwMTE0Li5hNzVmNjVkNjI4Zjc5MDdjOWQ5NTE2YWJlZjRjZmVmNTBiNzhkZGE2
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKQEAgLTk4LDYgKzk4LDE0IEBAIHN0cnVjdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZSB7CiAgICAgLy8gSWYgbV9pbWFnZUJ1ZmZlckNsaXAg
aXMgbm9uLWVtcHR5LCB0aGlzIGlzIHRoZSByZWdpb24gdGhlIGltYWdlIGlzIGNsaXBwZWQgdG8u
CiAgICAgU2tSZWN0IG1fY2xpcDsKIAorICAgIC8vIFRoaXMgaXMgdHJ1ZSBpZiB0aGUgY3VycmVu
dCBzdGFjayBmcmFtZSBvciBhbnkgZnJhbWUgYmVmb3JlIGl0IGhhcyBhbiBpbWFnZSBidWZmZXIg
Y2xpcC4KKyAgICBib29sIG1faXNJbWFnZUJ1ZmZlckNsaXBPblN0YWNrOworICAgIC8vIFRoZXNl
IGlzIGFjY3VtdWxhdGVkIHRocm91Z2ggYWxsIGxheWVycyBhbmQgYXJlIHRoZSBpbnRlcnNlY3Rp
b24gb2YgYWxsIHN1Y2ggcmVjdHMuCisgICAgU2tSZWN0IG1fcHJldmlvdXNJbWFnZUJ1ZmZlckNs
aXBSZWN0OworICAgIFNrUmVjdCBtX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdDsKKyAgICBTa1Jl
Y3QgbV9wcmV2aW91c0ltYWdlQnVmZmVyT3BhcXVlUmVjdDsKKyAgICBTa1JlY3QgbV90b3RhbElt
YWdlQnVmZmVyT3BhcXVlUmVjdDsKKwogICAgIEludGVycG9sYXRpb25RdWFsaXR5IG1faW50ZXJw
b2xhdGlvblF1YWxpdHk7CiAKICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZSBjbG9uZUlu
aGVyaXRlZFByb3BlcnRpZXMoKTsKQEAgLTEyMiw2ICsxMzAsNyBAQCBQbGF0Zm9ybUNvbnRleHRT
a2lhOjpTdGF0ZTo6U3RhdGUoKQogICAgICwgbV9saW5lSm9pbihTa1BhaW50OjprRGVmYXVsdF9K
b2luKQogICAgICwgbV9kYXNoKDApCiAgICAgLCBtX3RleHREcmF3aW5nTW9kZShUZXh0TW9kZUZp
bGwpCisgICAgLCBtX2lzSW1hZ2VCdWZmZXJDbGlwT25TdGFjayhmYWxzZSkKICAgICAsIG1faW50
ZXJwb2xhdGlvblF1YWxpdHkoSW50ZXJwb2xhdGlvbkhpZ2gpCiB7CiB9CkBAIC0xNDMsNiArMTUy
LDExIEBAIFBsYXRmb3JtQ29udGV4dFNraWE6OlN0YXRlOjpTdGF0ZShjb25zdCBTdGF0ZSYgb3Ro
ZXIpCiAgICAgLCBtX3RleHREcmF3aW5nTW9kZShvdGhlci5tX3RleHREcmF3aW5nTW9kZSkKICAg
ICAsIG1faW1hZ2VCdWZmZXJDbGlwKG90aGVyLm1faW1hZ2VCdWZmZXJDbGlwKQogICAgICwgbV9j
bGlwKG90aGVyLm1fY2xpcCkKKyAgICAsIG1faXNJbWFnZUJ1ZmZlckNsaXBPblN0YWNrKG90aGVy
Lm1faXNJbWFnZUJ1ZmZlckNsaXBPblN0YWNrKQorICAgICwgbV9wcmV2aW91c0ltYWdlQnVmZmVy
Q2xpcFJlY3Qob3RoZXIubV90b3RhbEltYWdlQnVmZmVyQ2xpcFJlY3QpCisgICAgLCBtX3RvdGFs
SW1hZ2VCdWZmZXJDbGlwUmVjdChvdGhlci5tX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdCkKKyAg
ICAsIG1fcHJldmlvdXNJbWFnZUJ1ZmZlck9wYXF1ZVJlY3Qob3RoZXIubV90b3RhbEltYWdlQnVm
ZmVyT3BhcXVlUmVjdCkKKyAgICAsIG1fdG90YWxJbWFnZUJ1ZmZlck9wYXF1ZVJlY3Qob3RoZXIu
bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdCkKICAgICAsIG1faW50ZXJwb2xhdGlvblF1YWxp
dHkob3RoZXIubV9pbnRlcnBvbGF0aW9uUXVhbGl0eSkKIHsKICAgICAvLyBVcCB0aGUgcmVmIGNv
dW50IG9mIHRoZXNlLiBTa1NhZmVSZWYgZG9lcyBub3RoaW5nIGlmIGl0cyBhcmd1bWVudCBpcyAw
LgpAQCAtMjI2LDYgKzI0MCwyNCBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUoKQog
ICAgIGNhbnZhcygpLT5zYXZlKCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2F2
ZUxheWVyKGNvbnN0IFNrUmVjdCogYm91bmRzLCBjb25zdCBTa1BhaW50KiBwYWludCkKK3sKKyAg
ICBtX2NhbnZhcy0+c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQpOworICAgIG1fb3BhcXVlUmVnaW9u
LnB1c2hQYWludCgqcGFpbnQpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmVM
YXllcihjb25zdCBTa1JlY3QqIGJvdW5kcywgY29uc3QgU2tQYWludCogcGFpbnQsIFNrQ2FudmFz
OjpTYXZlRmxhZ3Mgc2F2ZUZsYWdzKQoreworICAgIG1fY2FudmFzLT5zYXZlTGF5ZXIoYm91bmRz
LCBwYWludCwgc2F2ZUZsYWdzKTsKKyAgICBtX29wYXF1ZVJlZ2lvbi5wdXNoUGFpbnQoKnBhaW50
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpyZXN0b3JlTGF5ZXIoKQoreworICAg
IG1fY2FudmFzLT5yZXN0b3JlKCk7CisgICAgbV9vcGFxdWVSZWdpb24ucG9wUGFpbnQoKTsKK30K
Kwogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UoY29u
c3QgRmxvYXRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogewpAQCAtMjYw
LDYgKzI5MiwyNyBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OmJlZ2luTGF5ZXJDbGlwcGVk
VG9JbWFnZShjb25zdCBGbG9hdFJlY3QmIHJlY3QsCiAgICAgICAgIC8vIElmIHRoZXJlIGlzIGEg
cGl4ZWwgcmVmLCB3ZSBjYW4gc2FmZWx5IHVzZSB0aGUgYXNzaWdubWVudCBvcGVyYXRvci4KICAg
ICAgICAgbV9zdGF0ZS0+bV9pbWFnZUJ1ZmZlckNsaXAgPSAqYml0bWFwOwogICAgIH0KKworICAg
IC8vIFNhdmUgdGhlIGFjY3VtdWxhdGVkIGNsaXAgYW5kIG9wYXF1ZSBhcmVhLCBhZnRlciBtYXNr
aW5nIHRvIHRoZSBpbWFnZSBhbG9uZyB3aXRoIG90aGVycyBpbiB0aGUgc3RhY2suCisgICAgYm9v
bCBzdGFja0hhZEltYWdlQnVmZmVyQ2xpcCA9IG1fc3RhdGUtPm1faXNJbWFnZUJ1ZmZlckNsaXBP
blN0YWNrOworCisgICAgbV9zdGF0ZS0+bV9pc0ltYWdlQnVmZmVyQ2xpcE9uU3RhY2sgPSB0cnVl
OworICAgIG1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlckNsaXBSZWN0ID0gbV9zdGF0ZS0+bV9j
bGlwOworICAgIG1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlck9wYXF1ZVJlY3QgPSBtX3N0YXRl
LT5tX2ltYWdlQnVmZmVyQ2xpcC5pc09wYXF1ZSgpID8gbV9zdGF0ZS0+bV9jbGlwIDogU2tSZWN0
OjpNYWtlRW1wdHkoKTsKKyAgICBpZiAoc3RhY2tIYWRJbWFnZUJ1ZmZlckNsaXApIHsKKyAgICAg
ICAgLy8gSW50ZXJzZWN0IHdpdGggdGhlIHByZXZpb3VzIHJlY3RzIGZyb20gdGhlIHN0YWNrLgor
ICAgICAgICBpZiAoIW1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlckNsaXBSZWN0LmludGVyc2Vj
dChtX3N0YXRlLT5tX3ByZXZpb3VzSW1hZ2VCdWZmZXJDbGlwUmVjdCkpCisgICAgICAgICAgICBt
X3N0YXRlLT5tX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdC5zZXRFbXB0eSgpOworICAgICAgICBp
ZiAoIW1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlck9wYXF1ZVJlY3QuaW50ZXJzZWN0KG1fc3Rh
dGUtPm1fcHJldmlvdXNJbWFnZUJ1ZmZlck9wYXF1ZVJlY3QpKQorICAgICAgICAgICAgbV9zdGF0
ZS0+bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdC5zZXRFbXB0eSgpOworICAgIH0KK30KKwor
Ym9vbCBQbGF0Zm9ybUNvbnRleHRTa2lhOjppc0luTGF5ZXJDbGlwcGVkVG9JbWFnZShTa1JlY3Qm
IGRldmljZUNsaXBSZWN0LCBTa1JlY3QmIGRldmljZU9wYXF1ZVJlY3QpIGNvbnN0Cit7CisgICAg
ZGV2aWNlQ2xpcFJlY3QgPSBtX3N0YXRlLT5tX3RvdGFsSW1hZ2VCdWZmZXJDbGlwUmVjdDsKKyAg
ICBkZXZpY2VPcGFxdWVSZWN0ID0gbV9zdGF0ZS0+bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVj
dDsKKyAgICByZXR1cm4gbV9zdGF0ZS0+bV9pc0ltYWdlQnVmZmVyQ2xpcE9uU3RhY2s7CiB9CiAK
IHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6Y2xpcFBhdGhBbnRpQWxpYXNlZChjb25zdCBTa1Bh
dGgmIGNsaXBQYXRoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAppbmRleCAwMjhjNmU5ZjM3ZjU1NTYy
Mjg5Y2QxNDU1ZWFkMmZlNjI2MTNiYjljLi4yN2VjOGNkZDAxYmM3NDk0NTIzNWFiZmYwY2U5YTA2
YTQ0Y2Y5MmUwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaApAQCAtOTMsMTEgKzkzLDE5IEBAIHB1
YmxpYzoKICAgICB2b2lkIHNhdmUoKTsKICAgICB2b2lkIHJlc3RvcmUoKTsKIAorICAgIHZvaWQg
c2F2ZUxheWVyKGNvbnN0IFNrUmVjdCosIGNvbnN0IFNrUGFpbnQqKTsKKyAgICB2b2lkIHNhdmVM
YXllcihjb25zdCBTa1JlY3QqLCBjb25zdCBTa1BhaW50KiwgU2tDYW52YXM6OlNhdmVGbGFncyk7
CisgICAgdm9pZCByZXN0b3JlTGF5ZXIoKTsKKwogICAgIC8vIEJlZ2lucyBhIGxheWVyIHRoYXQg
aXMgY2xpcHBlZCB0byB0aGUgaW1hZ2UgfGltYWdlQnVmZmVyfCBhdCB0aGUgbG9jYXRpb24KICAg
ICAvLyB8cmVjdHwuIFRoaXMgbGF5ZXIgaXMgaW1wbGljaXRseSByZXN0b3JlZCB3aGVuIHRoZSBu
ZXh0IHJlc3RvcmUgaXMKICAgICAvLyBpbnZva2VkLgogICAgIC8vIE5PVEU6IHxpbWFnZUJ1ZmZl
cnwgbWF5IGJlIGRlbGV0ZWQgYmVmb3JlIHRoZSB8cmVzdG9yZXwgaXMgaW52b2tlZC4KICAgICB2
b2lkIGJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJlY3QmLCBjb25zdCBJbWFn
ZUJ1ZmZlciopOworICAgIC8vIFJldHVybnMgdGhlIHJlZ2lvbiBvZiBvcGFxdWUgY29udGVudHMg
YWZ0ZXIgY2xpcHBpbmcgYW5kIG1hc2tpbmcgYWxsCisgICAgLy8gbGF5ZXJzIGNsaXBwZWQgdG8g
aW1hZ2VzLgorICAgIGJvb2wgaXNJbkxheWVyQ2xpcHBlZFRvSW1hZ2UoU2tSZWN0JiBkZXZpY2VD
bGlwUmVjdCwgU2tSZWN0JiBkZXZpY2VPcGFxdWVSZWN0KSBjb25zdDsKKwogICAgIHZvaWQgY2xp
cFBhdGhBbnRpQWxpYXNlZChjb25zdCBTa1BhdGgmKTsKIAogICAgIC8vIFNldHMgdXAgdGhlIGNv
bW1vbiBmbGFncyBvbiBhIHBhaW50IGZvciBhbnRpYWxpYXNpbmcsIGVmZmVjdHMsIGV0Yy4K
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134712</attachid>
            <date>2012-03-29 19:25:05 -0700</date>
            <delta_ts>2012-03-30 15:12:39 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82564-20120329222504.patch</filename>
            <type>text/plain</type>
            <size>24125</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYjgwZmNkZmFmOGY5
MWFjN2MwZDgzOTgzN2Y3N2Q1MzMxN2UxZS4uNTFmMjY4M2NkNTA3Yzk5NmQ0ZWE1ODNiZWY4ZDA2
M2VkNzU5ZDlmOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDczIEBACisyMDEyLTAzLTI4ICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3BhcXVlUmVnaW9uU2tpYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXItdGlsZS1wYWludGlu
ZyB1c2VzIGFuIFNrUGljdHVyZVJlY29yZCBpbiBwbGFjZSBvZiBhbiBTa0NhbnZhcworICAgICAg
ICBhcyB0aGUgcGFpbnRpbmcgdGFyZ2V0IGZvciB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIGNs
YXNzIG9ubHkgZG9lcworICAgICAgICBhIHNpbXBsZSByZWNvcmRpbmcgYW5kIGRvZXMgbm90IGNy
ZWF0ZSBsYXllcnMgaW4gdGhlIGNhbnZhcyBkdXJpbmcKKyAgICAgICAgcmVjb3JkLCBvbmx5IHBs
YXliYWNrLiBUaGlzIGlzIHByZXZlbnRpbmcgdXMgZnJvbSBjb3JyZWN0bHkgdHJhY2tpbmcKKyAg
ICAgICAgb3BhcXVlIHJlZ2lvbnMgdW5kZXIgcGVyLXRpbGUtcGFpbnRpbmcuCisKKyAgICAgICAg
V2UgY3VycmVudGx5IHVzZSB0aGUgU2tDYW52YXMgTGF5ZXJJdGVyIHRvIGxvb2sgYXQgdGhlIGxh
eWVycyBpbiB0aGUKKyAgICAgICAgY2FudmFzIGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCwg
YW5kIGNoZWNrIHRoZSBTa1BhaW50cywgY2xpcHMsCisgICAgICAgIGFuZCB0cmFuc2Zvcm1zIHRv
IHNlZSBob3cgdGhleSBpbXBhY3QgdGhlIGN1cnJlbnQgZHJhdyBvbmNlIGl0IHJlYWNoZXMKKyAg
ICAgICAgdGhlIGZpbmFsIGRldmljZS4KKworICAgICAgICBUaGUgY2xpcHMgYW5kIHRyYW5zZm9y
bXMgY2FuIGJlIHJldHJlaXZlZCB3aXRob3V0IHVzaW5nIHRoZSBMYXllckl0ZXIKKyAgICAgICAg
dGhyb3VnaCB0aGUgImdldFRvdGFsKiIgbWV0aG9kcy4gQSBjdW11bGF0aXZlIFNrUGFpbnQgaXMg
bm90IGF2YWlsYWJsZQorICAgICAgICBzbyB3ZSBzdG9yZSB0aGlzIG91cnNlbHZlcy4KKworICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGJlY29tZXMgYXdhcmUgb2Ygd2hlbiBzYXZlTGF5ZXIo
KSBpcyBiZWluZyBjYWxsZWQKKyAgICAgICAgb24gdGhlIHVuZGVybHlpbmcgY2FudmFzLCBhbmQg
cGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEg
Y2xhc3MuIFNpbmNlIHdlIG5vIGxvbmdlciB3YXRjaCBsYXllcnMgaW4gdGhlIGNhbnZhcywKKyAg
ICAgICAgd2UgbXVzdCBleHBsaWNpdGx5IGhhbmRsZSBpbWFnZSBjbGlwcGluZyBmb3IgdGhlIG9w
YXF1ZSB0cmFja2VyLCBhcworICAgICAgICBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUGxhdGZv
cm1Db250ZXh0U2tpYSwgbm90IHZpYSBjb25zdHJ1Y3RzIGluCisgICAgICAgIHRoZSBTa0NhbnZh
cy9Ta1BhaW50LiBXZSBzYXZlIHRoZSBjdW11bGF0aXZlIGNsaXAgcmVjdCBhbmQgb3BhcXVlIG1h
c2sKKyAgICAgICAgYXJlYSBpbiB0aGUgUGxhdGZvcm1Db250ZXh0U2tpYSBhbmQgYWxsb3cgT3Bh
cXVlUmVnaW9uU2tpYSB0byBnZXQgYXQKKyAgICAgICAgaXQgdGhyb3VnaCB0aGUgaXNJbkxheWVy
Q2xpcHBlZFRvSW1hZ2UoKSBtZXRob2RzLiBBbmQgd2Ugc2F2ZSBhCisgICAgICAgIGN1bXVsYXRp
dmUgdmlldyBvZiB0aGUgU2tQYWludHMgaW4gYWxsIHNhdmVkIGxheWVycyBpbiB0aGUgbV9wYWlu
dFN0YWNrCisgICAgICAgIG9mIE9wYXF1ZVJlZ2lvblNraWEsIHNvIHRoYXQgdGhlIGRhdGEgd2Ug
YXJlIGludGVyZXN0ZWQgaW4gY2FuIGJlCisgICAgICAgIHJldHJlaXZlZCBieSBqdXN0IGxvb2tp
bmcgYXQgdGhlIGhlYWQgb2YgdGhlIHN0YWNrLgorCisgICAgICAgIENvdmVyZWQgYnkgZXhpc3Rp
bmcgdGVzdHMuCisKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVH
YXVzc2lhbkJsdXJTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkZFR2F1c3NpYW5CbHVyOjpw
bGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9z
a2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6RkVNb3JwaG9sb2d5
OjpwbGF0Zm9ybUFwcGx5U2tpYSk6CisgICAgICAgICogcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9H
cmFwaGljc0NvbnRleHRTa2lhLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkdyYXBoaWNzQ29udGV4
dDo6YmVnaW5QbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6Okdy
YXBoaWNzQ29udGV4dDo6ZW5kUGxhdGZvcm1UcmFuc3BhcmVuY3lMYXllcik6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcDoKKyAgICAgICAgKFdl
YkNvcmU6Ok9wYXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cHVzaFBhaW50KToKKyAgICAgICAgKFdlYkNvcmUpOgor
ICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cG9wUGFpbnQpOgorICAgICAgICAo
V2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgpOgorICAgICAgICAoV2ViQ29yZTo6T3Bh
cXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVS
ZWdpb25Ta2lhOjpkaWREcmF3Qm91bmRlZCk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuaDoKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6UGFpbnRTdGFja1N0YXRlOjpQYWludFN0YWNrU3RhdGUp
OgorICAgICAgICAoUGFpbnRTdGFja1N0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGlj
cy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoUGxhdGZvcm1Db250ZXh0
U2tpYTo6U3RhdGUpOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6U3Rh
dGU6OlN0YXRlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmVM
YXllcik6CisgICAgICAgIChXZWJDb3JlKToKKyAgICAgICAgKFdlYkNvcmU6OlBsYXRmb3JtQ29u
dGV4dFNraWE6OnJlc3RvcmVMYXllcik6CisgICAgICAgIChXZWJDb3JlOjpQbGF0Zm9ybUNvbnRl
eHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2ViQ29yZTo6UGxh
dGZvcm1Db250ZXh0U2tpYTo6aXNJbkxheWVyQ2xpcHBlZFRvSW1hZ2UpOgorICAgICAgICAoV2Vi
Q29yZTo6UGxhdGZvcm1Db250ZXh0U2tpYTo6ZGlkU2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNv
cmU6OlBsYXRmb3JtQ29udGV4dFNraWE6OmRpZFJlc3RvcmVMYXllcik6CisgICAgICAgICogcGxh
dGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChQbGF0
Zm9ybUNvbnRleHRTa2lhKToKKwogMjAxMi0wMy0yOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9kaXZp
bG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwYXRjaCBjb25z
b2xlLW1lc3NhZ2UtYWRkZWQgYW5kIGNvbnNvbGUtbWVzc2FnZXMtY2xlYXJlZCBldmVudHMgb24g
VUlTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAppbmRl
eCA0YjM2NzUxZmFmNDc5NGY4Y2EyM2FjYThiMDc1M2M1N2JjZjdlZGQyLi5iYzVhNWI1NDVjMWY0
OWYxYmE2NzE0NmFjNzNiN2YxN2UzYWRhNmExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9w
bGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lh
bkJsdXJTa2lhLmNwcApAQCAtNTEsMTIgKzUxLDEzIEBAIGJvb2wgRkVHYXVzc2lhbkJsdXI6OnBs
YXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgR3JhcGhpY3NDb250
ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBTa0NhbnZhcyog
Y2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpOworICAgIFBs
YXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRzdENvbnRleHQtPnBsYXRmb3Jt
Q29udGV4dCgpOwogICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBTa0JsdXJJbWFnZUZpbHRl
cihzdGRYLCBzdGRZKSktPnVucmVmKCk7Ci0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50
KTsKKworICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZUxheWVyKCZwYWludCk7CiAgICAgcGFpbnQu
c2V0Q29sb3IoMHhGRkZGRkZGRik7CiAgICAgZHN0Q29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdl
dCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCksIENvbXBv
c2l0ZUNvcHkpOwotICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgIHBsYXRmb3JtQ29udGV4dC0+
cmVzdG9yZUxheWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lh
LmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1v
cnBob2xvZ3lTa2lhLmNwcAppbmRleCAwNjdhNjUzYTJhNWJhZTM1Y2MzZWRiNjc5ZDkyN2IzMTg4
NDNlOGRhLi4xOTkyMDcwNjZkODgzZDllYmIzYTM4MWExMjE4MDM3OTgxMzVjZWVlIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3Jw
aG9sb2d5U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmls
dGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCkBAIC01MCwxNSArNTAsMTUgQEAgYm9vbCBG
RU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7CiAg
ICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsK
LSAgICBTa0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNh
bnZhcygpOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRzdENv
bnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChtX3R5cGUgPT0gRkVNT1JQSE9MT0dZ
X09QRVJBVE9SX0RJTEFURSkKICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIobmV3IFNrRGls
YXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkpLT51bnJlZigpOwogICAgIGVsc2UgaWYg
KG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiAgICAgICAgIHBhaW50LnNl
dEltYWdlRmlsdGVyKG5ldyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkpLT51
bnJlZigpOwogCi0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKKyAgICBwbGF0Zm9y
bUNvbnRleHQtPnNhdmVMYXllcigmcGFpbnQpOwogICAgIGRzdENvbnRleHQtPmRyYXdJbWFnZShp
bWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1JlZ2lvbi5sb2NhdGlvbigp
LCBDb21wb3NpdGVDb3B5KTsKLSAgICBjYW52YXMtPnJlc3RvcmUoKTsKKyAgICBwbGF0Zm9ybUNv
bnRleHQtPnJlc3RvcmVMYXllcigpOwogICAgIHJldHVybiB0cnVlOwogfQogCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0Nv
bnRleHRTa2lhLmNwcAppbmRleCA0Zjc5Y2ZiMGI1ZTY5YzVjNTRlNzNiZDBlMmNiYTlhMzk1YWY2
NWViLi4wNjY5Y2Y3ZGM0YjFmMTQ5MGY1ODQxMzNhODc2OGMxOWVmMTAxOTQ2IDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNr
aWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhp
Y3NDb250ZXh0U2tpYS5jcHAKQEAgLTI3MSwyMyArMjcxLDIwIEBAIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQgb3BhY2l0eSkKICAgICAv
LyAodGhlIHN1cmZhY2Ugb2YgdGhlIHBhZ2UpIGJ1dCBsYXllcnMgb24gdG9wIG1heSBoYXZlIHRy
YW5zcGFyZW50IHBhcnRzLgogICAgIC8vIFdpdGhvdXQgZXhwbGljaXRseSBzZXR0aW5nIHRoZSBh
bHBoYSBmbGFnLCB0aGUgbGF5ZXIgd2lsbCBpbmhlcml0IHRoZQogICAgIC8vIG9wYXF1ZSBzZXR0
aW5nIG9mIHRoZSBiYXNlIGFuZCBzb21lIHRoaW5ncyB3b24ndCB3b3JrIHByb3Blcmx5LgorICAg
IFNrQ2FudmFzOjpTYXZlRmxhZ3Mgc2F2ZUZsYWdzID0gc3RhdGljX2Nhc3Q8U2tDYW52YXM6OlNh
dmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxheWVyX1NhdmVGbGFnIHwgU2tDYW52YXM6OmtG
dWxsQ29sb3JMYXllcl9TYXZlRmxhZyk7CiAKICAgICBTa1BhaW50IGxheWVyUGFpbnQ7CiAgICAg
bGF5ZXJQYWludC5zZXRBbHBoYShzdGF0aWNfY2FzdDx1bnNpZ25lZCBjaGFyPihvcGFjaXR5ICog
MjU1KSk7CiAgICAgbGF5ZXJQYWludC5zZXRYZmVybW9kZU1vZGUocGxhdGZvcm1Db250ZXh0KCkt
PmdldFhmZXJtb2RlTW9kZSgpKTsKIAotICAgIHBsYXRmb3JtQ29udGV4dCgpLT5jYW52YXMoKS0+
c2F2ZUxheWVyKAotICAgICAgICAwLAotICAgICAgICAmbGF5ZXJQYWludCwKLSAgICAgICAgc3Rh
dGljX2Nhc3Q8U2tDYW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxheWVyX1Nh
dmVGbGFnIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU2tDYW52
YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOworICAgIHBsYXRmb3JtQ29udGV4dCgpLT5z
YXZlTGF5ZXIoJmxheWVyUGFpbnQsIHNhdmVGbGFncyk7CiB9CiAKIHZvaWQgR3JhcGhpY3NDb250
ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKIHsKICAgICBpZiAocGFpbnRpbmdE
aXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZh
cygpLT5yZXN0b3JlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPnJlc3RvcmVMYXllcigpOwog
fQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNUcmFuc3BhcmVuY3lMYXllcnMoKQpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVS
ZWdpb25Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3Bh
cXVlUmVnaW9uU2tpYS5jcHAKaW5kZXggNWE0ZjE1MzRjMDlmZjgyY2M1MzZkNGZiYmJlMzY4YmY2
ZjRjYmJhNS4uNWU5ZjI0NTJhOWIyOWQzZjlkOWY3ZDg5YzAwNTdlNmViZTQ1ZTI1YSAxMDA2NDQK
LS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25T
a2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1
ZVJlZ2lvblNraWEuY3BwCkBAIC00Myw2ICs0Myw4IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIE9w
YXF1ZVJlZ2lvblNraWE6Ok9wYXF1ZVJlZ2lvblNraWEoKQogICAgIDogbV9vcGFxdWVSZWN0KFNr
UmVjdDo6TWFrZUVtcHR5KCkpCiB7CisgICAgLy8gUHV0IGRlZmF1bHQgYW5zd2VycyBvbiB0aGUg
Ym90dG9tIG9mIHRoZSBzdGFjaworICAgIG1fcGFpbnRTdGFjay5hcHBlbmQoUGFpbnRTdGFja1N0
YXRlKCkpOwogfQogCiBPcGFxdWVSZWdpb25Ta2lhOjp+T3BhcXVlUmVnaW9uU2tpYSgpCkBAIC0x
NDcsNyArMTQ5LDI5IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludElzT3BhcXVlKGNvbnN0IFNr
UGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwID0KICAgICByZXR1cm4gdHJ1ZTsK
IH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRT
a2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tS
ZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBiaXRt
YXApCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnB1c2hQYWludChjb25zdCBTa1BhaW50KiBwYWlu
dCkKK3sKKyAgICBQYWludFN0YWNrU3RhdGUgc3RhdGUgPSBtX3BhaW50U3RhY2subGFzdCgpOwor
CisgICAgaWYgKHBhaW50KSB7CisgICAgICAgIGJvb2wgb3BhcXVlRm9yRmlsbCA9IHBhaW50SXNP
cGFxdWUoKnBhaW50LCAwLCB0cnVlKTsKKyAgICAgICAgYm9vbCBvcGFxdWVGb3JTdHJva2UgPSBw
YWludElzT3BhcXVlKCpwYWludCwgMCwgZmFsc2UpOworCisgICAgICAgIHN0YXRlLnhmZXJtb2Rl
SXNPcGFxdWVGb3JGaWxsICY9IHhmZXJtb2RlSXNPcGFxdWUoKnBhaW50LCBvcGFxdWVGb3JGaWxs
KTsKKyAgICAgICAgc3RhdGUueGZlcm1vZGVJc09wYXF1ZUZvclN0cm9rZSAmPSB4ZmVybW9kZUlz
T3BhcXVlKCpwYWludCwgb3BhcXVlRm9yU3Ryb2tlKTsKKyAgICAgICAgc3RhdGUueGZlcm1vZGVQ
cmVzZXJ2ZXNPcGFxdWVGb3JGaWxsICY9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKCpwYWludCwg
b3BhcXVlRm9yRmlsbCk7CisgICAgICAgIHN0YXRlLnhmZXJtb2RlUHJlc2VydmVzT3BhcXVlRm9y
U3Ryb2tlICY9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKCpwYWludCwgb3BhcXVlRm9yU3Ryb2tl
KTsKKyAgICB9CisKKyAgICBtX3BhaW50U3RhY2suYXBwZW5kKHN0YXRlKTsKK30KKwordm9pZCBP
cGFxdWVSZWdpb25Ta2lhOjpwb3BQYWludCgpCit7CisgICAgbV9wYWludFN0YWNrLnJlbW92ZUxh
c3QoKTsKK30KKwordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9y
bSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNr
Qml0bWFwKiBiaXRtYXApCiB7CiAgICAgLy8gQW55IHN0cm9raW5nIG1heSBwdXQgYWxwaGEgaW4g
cGl4ZWxzIGV2ZW4gaWYgdGhlIGZpbGxpbmcgcGFydCBkb2VzIG5vdC4KICAgICBpZiAocGFpbnQu
Z2V0U3R5bGUoKSAhPSBTa1BhaW50OjprRmlsbF9TdHlsZSkgewpAQCAtMTU5LDE3ICsxODMsMTcg
QEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChQbGF0Zm9ybUNvbnRleHRTa2lh
KiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmEKICAgICAgICAgZWxzZSB7CiAgICAgICAgICAgICBT
a1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJlY3QgPSBwYWludC5jb21wdXRl
RmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAgICAgICAgICAgZGlkRHJhdyhj
b250ZXh0LCB0cmFuc2Zvcm0sIHN0cm9rZVJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRz
KTsKKyAgICAgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCBzdHJva2VSZWN0LCBw
YWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAgICAgICAgfQogICAg
IH0KIAogICAgIGJvb2wgY2hlY2tGaWxsT25seSA9IHRydWU7CiAgICAgYm9vbCBvcGFxdWUgPSBw
YWludElzT3BhcXVlKHBhaW50LCBiaXRtYXAsIGNoZWNrRmlsbE9ubHkpOwogICAgIGJvb2wgZmls
bHNCb3VuZHMgPSBwYWludC5nZXRTdHlsZSgpICE9IFNrUGFpbnQ6OmtTdHJva2VfU3R5bGU7Ci0g
ICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWludCwgb3BhcXVlLCBm
aWxsc0JvdW5kcyk7CisgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBw
YWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcywgRmlsbE9ubHkpOwogfQogCi12b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1BhdGgmIHBhdGgsIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UGF0aChjb25zdCBQ
bGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5z
Zm9ybSwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBTa1BhaW50JiBwYWludCkKIHsKICAgICBT
a1JlY3QgcmVjdDsKICAgICBpZiAocGF0aC5pc1JlY3QoJnJlY3QpKSB7CkBAIC0xODQsMTEgKzIw
OCwxMSBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4
dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYQogICAgICAgICBkaWREcmF3VW5ib3VuZGVk
KHBhaW50LCBvcGFxdWUpOwogICAgIGVsc2UgewogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0
ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOworICAg
ICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmls
bHNCb3VuZHMsIEZpbGxPclN0cm9rZSk7CiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNrQ2FudmFzOjpQb2ludE1vZGUgbW9kZSwgaW50IG51
bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwgY29uc3QgU2tQYWludCYgcGFpbnQpCit2
b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQb2ludHMoY29uc3QgUGxhdGZvcm1Db250ZXh0
U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIFNrQ2FudmFz
OjpQb2ludE1vZGUgbW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludCBwb2ludHNbXSwg
Y29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgaWYgKCFudW1Qb2ludHMpCiAgICAgICAgIHJl
dHVybjsKQEAgLTIxMywxMSArMjM3LDExIEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d1BvaW50cyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUCiAgICAg
ICAgIGRpZERyYXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1ZSk7CiAgICAgZWxzZSB7CiAgICAgICAg
IHJlY3QgPSBwYWludC5jb21wdXRlRmFzdEJvdW5kcyhyZWN0LCAmcmVjdCk7Ci0gICAgICAgIGRp
ZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5k
cyk7CisgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3Bh
cXVlLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwg
Y29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBj
b25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5k
ZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50JiBwYWlu
dCkKIHsKICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wg
ZmlsbHNCb3VuZHMgPSBmYWxzZTsKQEAgLTIyNywxNyArMjUxLDI4IEBAIHZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lCiAgICAgZWxzZSB7CiAgICAgICAgIFNrUmVjdCByZWN0OwogICAgICAgICByZWN0
ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMoYm91bmRzLCAmcmVjdCk7Ci0gICAgICAgIGRpZERy
YXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7
CisgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVl
LCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0LCBjb25zdCBTa1BhaW50
JiBwYWludCwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcykKK3ZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiByZWN0LCBjb25z
dCBTa1BhaW50JiBwYWludCwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcywgRHJh
d1R5cGUgZHJhd1R5cGUpCiB7CiAgICAgU2tSZWN0IHRhcmdldFJlY3QgPSByZWN0OwogCiAgICAg
Ym9vbCB4ZmVyc09wYXF1ZSA9IHhmZXJtb2RlSXNPcGFxdWUocGFpbnQsIGRyYXdzT3BhcXVlKTsK
ICAgICBib29sIHByZXNlcnZlc09wYXF1ZSA9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50
LCBkcmF3c09wYXF1ZSk7CiAKKyAgICBzd2l0Y2ggKGRyYXdUeXBlKSB7CisgICAgY2FzZSBGaWxs
T25seToKKyAgICAgICAgeGZlcnNPcGFxdWUgJj0gbV9wYWludFN0YWNrLmxhc3QoKS54ZmVybW9k
ZUlzT3BhcXVlRm9yRmlsbDsKKyAgICAgICAgcHJlc2VydmVzT3BhcXVlICY9IG1fcGFpbnRTdGFj
ay5sYXN0KCkueGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWVGb3JGaWxsOworICAgICAgICBicmVhazsK
KyAgICBjYXNlIEZpbGxPclN0cm9rZToKKyAgICAgICAgeGZlcnNPcGFxdWUgJj0gbV9wYWludFN0
YWNrLmxhc3QoKS54ZmVybW9kZUlzT3BhcXVlRm9yU3Ryb2tlOworICAgICAgICBwcmVzZXJ2ZXNP
cGFxdWUgJj0gbV9wYWludFN0YWNrLmxhc3QoKS54ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvclN0
cm9rZTsKKyAgICAgICAgYnJlYWs7CisgICAgfQorCiAgICAgLy8gQXBwbHkgdGhlIHRyYW5zZm9y
bSB0byBkZXZpY2UgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBTa01hdHJpeCBjYW52YXNUcmFuc2Zv
cm0gPSBjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRyaXgoKTsKICAgICBpZiAoIWNhbnZh
c1RyYW5zZm9ybS5tYXBSZWN0KCZ0YXJnZXRSZWN0KSkKQEAgLTI0NywyOCArMjgyLDE5IEBAIHZv
aWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0
LCBjb25zdCBBZmZpbmVUcmFuc2ZvCiAgICAgaWYgKGNvbnRleHQtPmNhbnZhcygpLT5nZXRDbGlw
VHlwZSgpICE9IFNrQ2FudmFzOjprUmVjdF9DbGlwVHlwZSkKICAgICAgICAgZmlsbHNCb3VuZHMg
PSBmYWxzZTsKICAgICBlbHNlIHsKLSAgICAgICAgU2tJUmVjdCBkZXZpY2VDbGlwOwotICAgICAg
ICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygmZGV2aWNlQ2xpcCk7Cisg
ICAgICAgIFNrSVJlY3QgZGV2aWNlQ2xpcCA9IGNvbnRleHQtPmNhbnZhcygpLT5nZXRUb3RhbENs
aXAoKS5nZXRCb3VuZHMoKTsKICAgICAgICAgaWYgKCF0YXJnZXRSZWN0LmludGVyc2VjdChTa0lu
dFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZlRv
cCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmlnaHQpLCBTa0ludFRvU2NhbGFyKGRldmlj
ZUNsaXAuZkJvdHRvbSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIC8vIEFw
cGx5IGFueSBsYXllcnMgdGhhdCB3ZSBhcmUgZHJhd2luZyBpbnRvLgotICAgIGZvciAoU2tDYW52
YXM6OkxheWVySXRlciBpdChjb250ZXh0LT5jYW52YXMoKSwgZmFsc2UpOyAhaXQuZG9uZSgpOyBp
dC5uZXh0KCkpIHsKLSAgICAgICAgLy8gQXBwbHkgdGhlIGxheWVyJ3MgY2xpcCAod2hpY2ggaXMg
aW4gZGV2aWNlIHNwYWNlKQotICAgICAgICBjb25zdCBTa1JlZ2lvbiYgZGV2aWNlTGF5ZXJDbGlw
ID0gaXQuY2xpcCgpOwotICAgICAgICBpZiAoZGV2aWNlTGF5ZXJDbGlwLmlzRW1wdHkoKSB8fCAh
ZGV2aWNlTGF5ZXJDbGlwLmlzUmVjdCgpKQorICAgIC8vIEFwcGx5IHRoZSBpbWFnZSBjbGlwIG1h
c2sgaWYgYW55LgorICAgIFNrUmVjdCBkZXZpY2VJbWFnZU1hc2tDbGlwUmVjdDsKKyAgICBTa1Jl
Y3QgZGV2aWNlSW1hZ2VNYXNrT3BhcXVlUmVjdDsKKyAgICBpZiAoY29udGV4dC0+aXNJbkxheWVy
Q2xpcHBlZFRvSW1hZ2UoZGV2aWNlSW1hZ2VNYXNrQ2xpcFJlY3QsIGRldmljZUltYWdlTWFza09w
YXF1ZVJlY3QpKSB7CisgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoZGV2aWNlSW1h
Z2VNYXNrQ2xpcFJlY3QpKQorICAgICAgICAgICAgcmV0dXJuOworICAgICAgICBpZiAoIXRhcmdl
dFJlY3QuaW50ZXJzZWN0KGRldmljZUltYWdlTWFza09wYXF1ZVJlY3QpKQogICAgICAgICAgICAg
ZmlsbHNCb3VuZHMgPSBmYWxzZTsKLSAgICAgICAgZWxzZSB7Ci0gICAgICAgICAgICBTa0lSZWN0
IGNsaXBCb3VuZHMgPSBpdC5jbGlwKCkuZ2V0Qm91bmRzKCk7Ci0gICAgICAgICAgICBpZiAoIXRh
cmdldFJlY3QuaW50ZXJzZWN0KFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mTGVmdCksIFNrSW50
VG9TY2FsYXIoY2xpcEJvdW5kcy5mVG9wKSwgU2tJbnRUb1NjYWxhcihjbGlwQm91bmRzLmZSaWdo
dCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mQm90dG9tKSkpCi0gICAgICAgICAgICAgICAg
cmV0dXJuOwotICAgICAgICB9Ci0KLSAgICAgICAgLy8gTWFrZSBzdXJlIHRoZSBwYWludCBzdGF5
cyBvcGFxdWUgdGhyb3VnaCB0aGUgbGF5ZXIuCi0gICAgICAgIGJvb2wgZHJhd3NPcGFxdWUgPSBw
YWludElzT3BhcXVlKGl0LnBhaW50KCkpOwotICAgICAgICB4ZmVyc09wYXF1ZSA9IHhmZXJzT3Bh
cXVlICYmIHhmZXJtb2RlSXNPcGFxdWUoaXQucGFpbnQoKSwgZHJhd3NPcGFxdWUpOwotICAgICAg
ICBwcmVzZXJ2ZXNPcGFxdWUgPSBwcmVzZXJ2ZXNPcGFxdWUgJiYgeGZlcm1vZGVQcmVzZXJ2ZXNP
cGFxdWUoaXQucGFpbnQoKSwgZHJhd3NPcGFxdWUpOwogICAgIH0KIAogICAgIC8vIEFwcGx5IHRo
ZSB0cmFuc2Zvcm0gdG8gdGhlIHRyYWNraW5nIHNwYWNlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmggYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAppbmRleCA0
MzFjNmVjMTllNWE2OTRjMTkyOTlhYTBkN2I3ZmI0N2EyOTBmZGQ4Li5lNWIyNzQ5ODM3NzYwYmY5
MzBjMTZhNTlkMTBkMGEwNDI5MmJkNDc1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0
Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaApAQCAtNTMsMjAgKzUz
LDQ2IEBAIHB1YmxpYzoKICAgICAvLyBUaGUgcmVzdWx0aW5nIG9wYXF1ZSByZWdpb24gYXMgYSBz
aW5nbGUgcmVjdC4KICAgICBJbnRSZWN0IGFzUmVjdCgpIGNvbnN0OwogCi0gICAgLy8gRklYTUU6
IG1ha2UgYWxsIHRoZSBQbGF0Zm9ybUNvbnRleHRTa2lhKiBpbnRvIGEgY29uc3QgcG9pbnRlciB3
aGVuIFNraWEgZml4ZXMgTGF5ZXJJdGVyJ3MgU2tDYW52YXMqLgorICAgIHZvaWQgcHVzaFBhaW50
KGNvbnN0IFNrUGFpbnQqKTsKKyAgICB2b2lkIHBvcFBhaW50KCk7CiAKLSAgICB2b2lkIGRpZERy
YXdSZWN0KFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25z
dCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAqKTsKLSAgICB2b2lkIGRp
ZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBkaWREcmF3UG9pbnRzKFBs
YXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9p
bnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50W10sIGNvbnN0IFNrUGFpbnQmKTsK
LSAgICB2b2lkIGRpZERyYXdCb3VuZGVkKFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9pZCBk
aWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNm
b3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7Cisg
ICAgdm9pZCBkaWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZm
aW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRoJiwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQg
ZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJh
bnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2lu
dFtdLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0Jiwg
Y29uc3QgU2tQYWludCYpOwogCiBwcml2YXRlOgotICAgIHZvaWQgZGlkRHJhdyhQbGF0Zm9ybUNv
bnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3Qg
U2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMpOworICAgIGVudW0g
RHJhd1R5cGUgeworICAgICAgICBGaWxsT25seSwKKyAgICAgICAgRmlsbE9yU3Ryb2tlCisgICAg
fTsKKworICAgIHZvaWQgZGlkRHJhdyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGJvb2wgZHJh
d3NPcGFxdWUsIGJvb2wgZmlsbHNCb3VuZHMsIERyYXdUeXBlKTsKICAgICB2b2lkIGRpZERyYXdV
bmJvdW5kZWQoY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFxdWUpOwogICAgIHZvaWQgbWFy
a1JlY3RBc09wYXF1ZShjb25zdCBTa1JlY3QmKTsKICAgICB2b2lkIG1hcmtSZWN0QXNOb25PcGFx
dWUoY29uc3QgU2tSZWN0Jik7CiAKICAgICBTa1JlY3QgbV9vcGFxdWVSZWN0OworCisgICAgc3Ry
dWN0IFBhaW50U3RhY2tTdGF0ZSB7CisgICAgICAgIFBhaW50U3RhY2tTdGF0ZSgpCisgICAgICAg
ICAgICA6IHhmZXJtb2RlSXNPcGFxdWVGb3JGaWxsKHRydWUpCisgICAgICAgICAgICAsIHhmZXJt
b2RlSXNPcGFxdWVGb3JTdHJva2UodHJ1ZSkKKyAgICAgICAgICAgICwgeGZlcm1vZGVQcmVzZXJ2
ZXNPcGFxdWVGb3JGaWxsKHRydWUpCisgICAgICAgICAgICAsIHhmZXJtb2RlUHJlc2VydmVzT3Bh
cXVlRm9yU3Ryb2tlKHRydWUpCisgICAgICAgIHsKKyAgICAgICAgfQorCisgICAgICAgIGJvb2wg
eGZlcm1vZGVJc09wYXF1ZUZvckZpbGw7CisgICAgICAgIGJvb2wgeGZlcm1vZGVJc09wYXF1ZUZv
clN0cm9rZTsKKyAgICAgICAgYm9vbCB4ZmVybW9kZVByZXNlcnZlc09wYXF1ZUZvckZpbGw7Cisg
ICAgICAgIGJvb2wgeGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWVGb3JTdHJva2U7CisgICAgfTsKKwor
ICAgIC8vIFRoZSBzdGFjayBhY2N1bXVsYXRlcyBzdGF0ZSBmcm9tIHRoZSBiYWNrLCBzbyB0aGUg
bGFzdCB2YWx1ZSBpbiB0aGUgc3RhY2sgaXMgdGhlIG9ubHkKKyAgICAvLyB2YWx1ZSB5b3UgbmVl
ZCB0byBjaGVjayB0byBrbm93IGlmIHRoZSBwdXNoZWQgU2tQYWludHMgYWxsIGluIGNvbWJpbmF0
aW9uIGFyZSBvcGFxdWUgb3IKKyAgICAvLyBwcmVzZXJ2ZSBvcGFxdWUgZHJhd3MuCisgICAgVmVj
dG9yPFBhaW50U3RhY2tTdGF0ZSwgMz4gbV9wYWludFN0YWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1D
b250ZXh0U2tpYS5jcHAKaW5kZXggNTk2MGEwN2ZiNzc1NzU0YmFkNDUyMGRhYzljMmUxY2NmYjk1
MDExNC4uOGVmNDliYWEwMTI3ZDQyYjdiMzkwNTRjY2FkYWFmZTE4MDk0OThiNCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRT
a2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwCkBAIC05OCw2ICs5OCwxNCBAQCBzdHJ1Y3QgUGxhdGZvcm1Db250
ZXh0U2tpYTo6U3RhdGUgewogICAgIC8vIElmIG1faW1hZ2VCdWZmZXJDbGlwIGlzIG5vbi1lbXB0
eSwgdGhpcyBpcyB0aGUgcmVnaW9uIHRoZSBpbWFnZSBpcyBjbGlwcGVkIHRvLgogICAgIFNrUmVj
dCBtX2NsaXA7CiAKKyAgICAvLyBUaGlzIGlzIHRydWUgaWYgdGhlIGN1cnJlbnQgc3RhY2sgZnJh
bWUgb3IgYW55IGZyYW1lIGJlZm9yZSBpdCBoYXMgYW4gaW1hZ2UgYnVmZmVyIGNsaXAuCisgICAg
Ym9vbCBtX2lzSW1hZ2VCdWZmZXJDbGlwT25TdGFjazsKKyAgICAvLyBUaGVzZSBpcyBhY2N1bXVs
YXRlZCB0aHJvdWdoIGFsbCBsYXllcnMgYW5kIGFyZSB0aGUgaW50ZXJzZWN0aW9uIG9mIGFsbCBz
dWNoIHJlY3RzLgorICAgIFNrUmVjdCBtX3ByZXZpb3VzSW1hZ2VCdWZmZXJDbGlwUmVjdDsKKyAg
ICBTa1JlY3QgbV90b3RhbEltYWdlQnVmZmVyQ2xpcFJlY3Q7CisgICAgU2tSZWN0IG1fcHJldmlv
dXNJbWFnZUJ1ZmZlck9wYXF1ZVJlY3Q7CisgICAgU2tSZWN0IG1fdG90YWxJbWFnZUJ1ZmZlck9w
YXF1ZVJlY3Q7CisKICAgICBJbnRlcnBvbGF0aW9uUXVhbGl0eSBtX2ludGVycG9sYXRpb25RdWFs
aXR5OwogCiAgICAgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGUgY2xvbmVJbmhlcml0ZWRQcm9w
ZXJ0aWVzKCk7CkBAIC0xMjIsNiArMTMwLDcgQEAgUGxhdGZvcm1Db250ZXh0U2tpYTo6U3RhdGU6
OlN0YXRlKCkKICAgICAsIG1fbGluZUpvaW4oU2tQYWludDo6a0RlZmF1bHRfSm9pbikKICAgICAs
IG1fZGFzaCgwKQogICAgICwgbV90ZXh0RHJhd2luZ01vZGUoVGV4dE1vZGVGaWxsKQorICAgICwg
bV9pc0ltYWdlQnVmZmVyQ2xpcE9uU3RhY2soZmFsc2UpCiAgICAgLCBtX2ludGVycG9sYXRpb25R
dWFsaXR5KEludGVycG9sYXRpb25IaWdoKQogewogfQpAQCAtMTQzLDYgKzE1MiwxMSBAQCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjpTdGF0ZTo6U3RhdGUoY29uc3QgU3RhdGUmIG90aGVyKQogICAgICwg
bV90ZXh0RHJhd2luZ01vZGUob3RoZXIubV90ZXh0RHJhd2luZ01vZGUpCiAgICAgLCBtX2ltYWdl
QnVmZmVyQ2xpcChvdGhlci5tX2ltYWdlQnVmZmVyQ2xpcCkKICAgICAsIG1fY2xpcChvdGhlci5t
X2NsaXApCisgICAgLCBtX2lzSW1hZ2VCdWZmZXJDbGlwT25TdGFjayhvdGhlci5tX2lzSW1hZ2VC
dWZmZXJDbGlwT25TdGFjaykKKyAgICAsIG1fcHJldmlvdXNJbWFnZUJ1ZmZlckNsaXBSZWN0KG90
aGVyLm1fdG90YWxJbWFnZUJ1ZmZlckNsaXBSZWN0KQorICAgICwgbV90b3RhbEltYWdlQnVmZmVy
Q2xpcFJlY3Qob3RoZXIubV90b3RhbEltYWdlQnVmZmVyQ2xpcFJlY3QpCisgICAgLCBtX3ByZXZp
b3VzSW1hZ2VCdWZmZXJPcGFxdWVSZWN0KG90aGVyLm1fdG90YWxJbWFnZUJ1ZmZlck9wYXF1ZVJl
Y3QpCisgICAgLCBtX3RvdGFsSW1hZ2VCdWZmZXJPcGFxdWVSZWN0KG90aGVyLm1fdG90YWxJbWFn
ZUJ1ZmZlck9wYXF1ZVJlY3QpCiAgICAgLCBtX2ludGVycG9sYXRpb25RdWFsaXR5KG90aGVyLm1f
aW50ZXJwb2xhdGlvblF1YWxpdHkpCiB7CiAgICAgLy8gVXAgdGhlIHJlZiBjb3VudCBvZiB0aGVz
ZS4gU2tTYWZlUmVmIGRvZXMgbm90aGluZyBpZiBpdHMgYXJndW1lbnQgaXMgMC4KQEAgLTIyNiw2
ICsyNDAsMjQgQEAgdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzYXZlKCkKICAgICBjYW52YXMo
KS0+c2F2ZSgpOwogfQogCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmVMYXllcihjb25z
dCBTa1BhaW50KiBwYWludCkKK3sKKyAgICBtX2NhbnZhcy0+c2F2ZUxheWVyKDAsIHBhaW50KTsK
KyAgICBtX29wYXF1ZVJlZ2lvbi5wdXNoUGFpbnQocGFpbnQpOworfQorCit2b2lkIFBsYXRmb3Jt
Q29udGV4dFNraWE6OnNhdmVMYXllcihjb25zdCBTa1BhaW50KiBwYWludCwgU2tDYW52YXM6OlNh
dmVGbGFncyBzYXZlRmxhZ3MpCit7CisgICAgbV9jYW52YXMtPnNhdmVMYXllcigwLCBwYWludCwg
c2F2ZUZsYWdzKTsKKyAgICBtX29wYXF1ZVJlZ2lvbi5wdXNoUGFpbnQocGFpbnQpOworfQorCit2
b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJlc3RvcmVMYXllcigpCit7CisgICAgbV9jYW52YXMt
PnJlc3RvcmUoKTsKKyAgICBtX29wYXF1ZVJlZ2lvbi5wb3BQYWludCgpOworfQorCiB2b2lkIFBs
YXRmb3JtQ29udGV4dFNraWE6OmJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJl
Y3QmIHJlY3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICBjb25zdCBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CkBAIC0yNjAsNiArMjkyLDI3
IEBAIHZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6YmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNv
bnN0IEZsb2F0UmVjdCYgcmVjdCwKICAgICAgICAgLy8gSWYgdGhlcmUgaXMgYSBwaXhlbCByZWYs
IHdlIGNhbiBzYWZlbHkgdXNlIHRoZSBhc3NpZ25tZW50IG9wZXJhdG9yLgogICAgICAgICBtX3N0
YXRlLT5tX2ltYWdlQnVmZmVyQ2xpcCA9ICpiaXRtYXA7CiAgICAgfQorCisgICAgLy8gU2F2ZSB0
aGUgYWNjdW11bGF0ZWQgY2xpcCBhbmQgb3BhcXVlIGFyZWEsIGFmdGVyIG1hc2tpbmcgdG8gdGhl
IGltYWdlIGFsb25nIHdpdGggb3RoZXJzIGluIHRoZSBzdGFjay4KKyAgICBib29sIHN0YWNrSGFk
SW1hZ2VCdWZmZXJDbGlwID0gbV9zdGF0ZS0+bV9pc0ltYWdlQnVmZmVyQ2xpcE9uU3RhY2s7CisK
KyAgICBtX3N0YXRlLT5tX2lzSW1hZ2VCdWZmZXJDbGlwT25TdGFjayA9IHRydWU7CisgICAgbV9z
dGF0ZS0+bV90b3RhbEltYWdlQnVmZmVyQ2xpcFJlY3QgPSBtX3N0YXRlLT5tX2NsaXA7CisgICAg
bV9zdGF0ZS0+bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdCA9IG1fc3RhdGUtPm1faW1hZ2VC
dWZmZXJDbGlwLmlzT3BhcXVlKCkgPyBtX3N0YXRlLT5tX2NsaXAgOiBTa1JlY3Q6Ok1ha2VFbXB0
eSgpOworICAgIGlmIChzdGFja0hhZEltYWdlQnVmZmVyQ2xpcCkgeworICAgICAgICAvLyBJbnRl
cnNlY3Qgd2l0aCB0aGUgcHJldmlvdXMgcmVjdHMgZnJvbSB0aGUgc3RhY2suCisgICAgICAgIGlm
ICghbV9zdGF0ZS0+bV90b3RhbEltYWdlQnVmZmVyQ2xpcFJlY3QuaW50ZXJzZWN0KG1fc3RhdGUt
Pm1fcHJldmlvdXNJbWFnZUJ1ZmZlckNsaXBSZWN0KSkKKyAgICAgICAgICAgIG1fc3RhdGUtPm1f
dG90YWxJbWFnZUJ1ZmZlckNsaXBSZWN0LnNldEVtcHR5KCk7CisgICAgICAgIGlmICghbV9zdGF0
ZS0+bV90b3RhbEltYWdlQnVmZmVyT3BhcXVlUmVjdC5pbnRlcnNlY3QobV9zdGF0ZS0+bV9wcmV2
aW91c0ltYWdlQnVmZmVyT3BhcXVlUmVjdCkpCisgICAgICAgICAgICBtX3N0YXRlLT5tX3RvdGFs
SW1hZ2VCdWZmZXJPcGFxdWVSZWN0LnNldEVtcHR5KCk7CisgICAgfQorfQorCitib29sIFBsYXRm
b3JtQ29udGV4dFNraWE6OmlzSW5MYXllckNsaXBwZWRUb0ltYWdlKFNrUmVjdCYgZGV2aWNlQ2xp
cFJlY3QsIFNrUmVjdCYgZGV2aWNlT3BhcXVlUmVjdCkgY29uc3QKK3sKKyAgICBkZXZpY2VDbGlw
UmVjdCA9IG1fc3RhdGUtPm1fdG90YWxJbWFnZUJ1ZmZlckNsaXBSZWN0OworICAgIGRldmljZU9w
YXF1ZVJlY3QgPSBtX3N0YXRlLT5tX3RvdGFsSW1hZ2VCdWZmZXJPcGFxdWVSZWN0OworICAgIHJl
dHVybiBtX3N0YXRlLT5tX2lzSW1hZ2VCdWZmZXJDbGlwT25TdGFjazsKIH0KIAogdm9pZCBQbGF0
Zm9ybUNvbnRleHRTa2lhOjpjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYgY2xpcFBh
dGgpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuaCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCmluZGV4IDAyOGM2ZTlmMzdmNTU1NjIyODljZDE0NTVl
YWQyZmU2MjYxM2JiOWMuLjNjYzUzOTVhNGY0OTBlNDZiNTZlN2RjZDY4ZGI2ZDgwNjk4YTRlNTAg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZv
cm1Db250ZXh0U2tpYS5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3Nr
aWEvUGxhdGZvcm1Db250ZXh0U2tpYS5oCkBAIC05MywxMSArOTMsMTkgQEAgcHVibGljOgogICAg
IHZvaWQgc2F2ZSgpOwogICAgIHZvaWQgcmVzdG9yZSgpOwogCisgICAgdm9pZCBzYXZlTGF5ZXIo
Y29uc3QgU2tQYWludCopOworICAgIHZvaWQgc2F2ZUxheWVyKGNvbnN0IFNrUGFpbnQqLCBTa0Nh
bnZhczo6U2F2ZUZsYWdzKTsKKyAgICB2b2lkIHJlc3RvcmVMYXllcigpOworCiAgICAgLy8gQmVn
aW5zIGEgbGF5ZXIgdGhhdCBpcyBjbGlwcGVkIHRvIHRoZSBpbWFnZSB8aW1hZ2VCdWZmZXJ8IGF0
IHRoZSBsb2NhdGlvbgogICAgIC8vIHxyZWN0fC4gVGhpcyBsYXllciBpcyBpbXBsaWNpdGx5IHJl
c3RvcmVkIHdoZW4gdGhlIG5leHQgcmVzdG9yZSBpcwogICAgIC8vIGludm9rZWQuCiAgICAgLy8g
Tk9URTogfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgdGhlIHxyZXN0b3JlfCBp
cyBpbnZva2VkLgogICAgIHZvaWQgYmVnaW5MYXllckNsaXBwZWRUb0ltYWdlKGNvbnN0IEZsb2F0
UmVjdCYsIGNvbnN0IEltYWdlQnVmZmVyKik7CisgICAgLy8gUmV0dXJucyB0aGUgcmVnaW9uIG9m
IG9wYXF1ZSBjb250ZW50cyBhZnRlciBjbGlwcGluZyBhbmQgbWFza2luZyBhbGwKKyAgICAvLyBs
YXllcnMgY2xpcHBlZCB0byBpbWFnZXMuCisgICAgYm9vbCBpc0luTGF5ZXJDbGlwcGVkVG9JbWFn
ZShTa1JlY3QmIGRldmljZUNsaXBSZWN0LCBTa1JlY3QmIGRldmljZU9wYXF1ZVJlY3QpIGNvbnN0
OworCiAgICAgdm9pZCBjbGlwUGF0aEFudGlBbGlhc2VkKGNvbnN0IFNrUGF0aCYpOwogCiAgICAg
Ly8gU2V0cyB1cCB0aGUgY29tbW9uIGZsYWdzIG9uIGEgcGFpbnQgZm9yIGFudGlhbGlhc2luZywg
ZWZmZWN0cywgZXRjLgo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>134897</attachid>
            <date>2012-03-30 15:12:44 -0700</date>
            <delta_ts>2012-04-02 17:21:57 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82564-20120330181243.patch</filename>
            <type>text/plain</type>
            <size>29024</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNDAyCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzcyYjgwZmNkZmFmOGY5
MWFjN2MwZDgzOTgzN2Y3N2Q1MzMxN2UxZS4uZWZhZjE5MTUwMDEyMDZiNjNlM2Q2YjU2YjY2MTZh
YmQ2Nzk4ZTc5ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3BhcXVlUmVnaW9uU2tpYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXItdGlsZS1wYWludGlu
ZyB1c2VzIGFuIFNrUGljdHVyZVJlY29yZCBpbiBwbGFjZSBvZiBhbiBTa0NhbnZhcworICAgICAg
ICBhcyB0aGUgcGFpbnRpbmcgdGFyZ2V0IGZvciB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIGNs
YXNzIG9ubHkgZG9lcworICAgICAgICBhIHNpbXBsZSByZWNvcmRpbmcgYW5kIGRvZXMgbm90IGNy
ZWF0ZSBsYXllcnMgaW4gdGhlIGNhbnZhcyBkdXJpbmcKKyAgICAgICAgcmVjb3JkLCBvbmx5IHBs
YXliYWNrLiBUaGlzIGlzIHByZXZlbnRpbmcgdXMgZnJvbSBjb3JyZWN0bHkgdHJhY2tpbmcKKyAg
ICAgICAgb3BhcXVlIHJlZ2lvbnMgdW5kZXIgcGVyLXRpbGUtcGFpbnRpbmcuCisKKyAgICAgICAg
V2UgY3VycmVudGx5IHVzZSB0aGUgU2tDYW52YXMgTGF5ZXJJdGVyIHRvIGxvb2sgYXQgdGhlIGxh
eWVycyBpbiB0aGUKKyAgICAgICAgY2FudmFzIGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCwg
YW5kIGNoZWNrIHRoZSBTa1BhaW50cywgY2xpcHMsCisgICAgICAgIGFuZCB0cmFuc2Zvcm1zIHRv
IHNlZSBob3cgdGhleSBpbXBhY3QgdGhlIGN1cnJlbnQgZHJhdyBvbmNlIGl0IHJlYWNoZXMKKyAg
ICAgICAgdGhlIGZpbmFsIGRldmljZS4KKworICAgICAgICBUaGUgY2xpcHMgYW5kIHRyYW5zZm9y
bXMgY2FuIGJlIHJldHJlaXZlZCB3aXRob3V0IHVzaW5nIHRoZSBMYXllckl0ZXIKKyAgICAgICAg
dGhyb3VnaCB0aGUgImdldFRvdGFsKiIgbWV0aG9kcy4gQSBjdW11bGF0aXZlIFNrUGFpbnQgaXMg
bm90IGF2YWlsYWJsZQorICAgICAgICBzbyB3ZSBzdG9yZSB0aGlzIG91cnNlbHZlcy4KKworICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGJlY29tZXMgYXdhcmUgb2Ygd2hlbiBzYXZlTGF5ZXIo
KSBpcyBiZWluZyBjYWxsZWQKKyAgICAgICAgb24gdGhlIHVuZGVybHlpbmcgY2FudmFzLCBhbmQg
cGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEg
Y2xhc3MuIFNpbmNlIHdlIG5vIGxvbmdlciB3YXRjaCBsYXllcnMgaW4gdGhlIGNhbnZhcywKKyAg
ICAgICAgd2UgbXVzdCBleHBsaWNpdGx5IGhhbmRsZSBpbWFnZSBjbGlwcGluZyBmb3IgdGhlIG9w
YXF1ZSB0cmFja2VyLCBhcworICAgICAgICBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUGxhdGZv
cm1Db250ZXh0U2tpYSwgbm90IHZpYSBjb25zdHJ1Y3RzIGluCisgICAgICAgIHRoZSBTa0NhbnZh
cy9Ta1BhaW50LiBXZSBzYXZlIHRoZSBvcGFxdWUgYXJlYSBvZiB0aGUgaW1hZ2UgbWFzayBmb3IK
KyAgICAgICAgdGhlIGNhbnZhcyBsYXllciBpbiB0aGUgc3RhY2sgYWxvbmcgd2l0aCB0aGUgU2tQ
YWludCBmb3IgdGhlIGxheWVyLgorCisgICAgICAgIFVuaXQgdGVzdDogUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QuUHJlc2VydmVPcGFxdWVPbmx5TWF0dGVyc0ZvckZpcnN0TGF5ZXIKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQ
bGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9u
U2tpYTo6cHVzaENhbnZhc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cG9wQ2FudmFzTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BhcXVlUmVnaW9uU2tpYTo6c2V0SW1hZ2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd0JvdW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3VW5ib3Vu
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEu
aDoKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6Q2FudmFzTGF5ZXJTdGF0ZTo6Q2FudmFzTGF5ZXJTdGF0ZSk6CisgICAgICAg
IChDYW52YXNMYXllclN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
U2tpYTo6c2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0U2tpYTo6cmVzdG9yZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ29udGV4dFNraWE6OmJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChQ
bGF0Zm9ybUNvbnRleHRTa2lhKToKKwogMjAxMi0wMy0yOCAgUGF2ZWwgUG9kaXZpbG92ICA8cG9k
aXZpbG92QGNocm9taXVtLm9yZz4KIAogICAgICAgICBXZWIgSW5zcGVjdG9yOiBkaXNwYXRjaCBj
b25zb2xlLW1lc3NhZ2UtYWRkZWQgYW5kIGNvbnNvbGUtbWVzc2FnZXMtY2xlYXJlZCBldmVudHMg
b24gVUlTb3VyY2VDb2RlLgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS9DaGFu
Z2VMb2cgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwppbmRleCA1ZjBhY2JjOTRh
NWI4NDA5MGJiZDgyNzdlODBjMjY2NWE4YjZlMTA4Li4xNDIzNjEyZTIzMWZiNDU4ZmQzMzE4NmEw
ZDZjNjEzMmNjNmQxYTRmIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5n
ZUxvZworKysgYi9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0NoYW5nZUxvZwpAQCAtMSwzICsxLDE0
IEBACisyMDEyLTAzLTMwICBEYW5hIEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisg
ICAgICAgIFtjaHJvbWl1bV0gUmVtb3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3Bh
cXVlUmVnaW9uU2tpYQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5j
Z2k/aWQ9ODI1NjQKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAg
ICAgICAqIHRlc3RzL1BsYXRmb3JtQ29udGV4dFNraWFUZXN0LmNwcDoKKyAgICAgICAgKFdlYkNv
cmUpOgorICAgICAgICAoV2ViQ29yZTo6VEVTVCk6CisKIDIwMTItMDMtMjcgIEphbWVzIFJvYmlu
c29uICA8amFtZXNyQGNocm9taXVtLm9yZz4KIAogICAgICAgICBbY2hyb21pdW1dIFRyYW5zZmVy
IHdoZWVsIGZsaW5nIHZpYSBXZWJDb21wb3NpdG9ySW5wdXRIYW5kbGVyQ2xpZW50CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVz
c2lhbkJsdXJTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCmluZGV4IDRiMzY3NTFmYWY0Nzk0ZjhjYTIz
YWNhOGIwNzUzYzU3YmNmN2VkZDIuLmI2OTRjOWIxYzU1YTgzOGNlNDNhY2JlNDk4NWE0ZGQ4OTM3
OTA2NTUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRm
b3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3BwCkBAIC01MSwx
MiArNTEsMTMgQEAgYm9vbCBGRUdhdXNzaWFuQmx1cjo6cGxhdGZvcm1BcHBseVNraWEoKQogCiAg
ICAgU2tQYWludCBwYWludDsKICAgICBHcmFwaGljc0NvbnRleHQqIGRzdENvbnRleHQgPSByZXN1
bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIFNrQ2FudmFzKiBjYW52YXMgPSBkc3RDb250ZXh0LT5w
bGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgUGxhdGZvcm1Db250ZXh0U2tpYSogcGxh
dGZvcm1Db250ZXh0ID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCk7CiAgICAgcGFpbnQu
c2V0SW1hZ2VGaWx0ZXIobmV3IFNrQmx1ckltYWdlRmlsdGVyKHN0ZFgsIHN0ZFkpKS0+dW5yZWYo
KTsKLSAgICBjYW52YXMtPnNhdmVMYXllcigwLCAmcGFpbnQpOworCisgICAgcGxhdGZvcm1Db250
ZXh0LT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsKICAgICBwYWludC5zZXRDb2xvcigweEZGRkZGRkZG
KTsKICAgICBkc3RDb250ZXh0LT5kcmF3SW1hZ2UoaW1hZ2UuZ2V0KCksIENvbG9yU3BhY2VEZXZp
Y2VSR0IsIGRyYXdpbmdSZWdpb24ubG9jYXRpb24oKSwgQ29tcG9zaXRlQ29weSk7Ci0gICAgY2Fu
dmFzLT5yZXN0b3JlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0LT5yZXN0b3JlTGF5ZXIoKTsKICAg
ICByZXR1cm4gdHJ1ZTsKIH0KIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwIGIvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCmlu
ZGV4IDA2N2E2NTNhMmE1YmFlMzVjYzNlZGI2NzlkOTI3YjMxODg0M2U4ZGEuLmU3MjkwYmVjN2Uy
ZGU0YTgyOTNjZmE1YWUxM2U5YjI4ZmYzMmRiMDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9s
b2d5U2tpYS5jcHAKQEAgLTUwLDE1ICs1MCwxNSBAQCBib29sIEZFTW9ycGhvbG9neTo6cGxhdGZv
cm1BcHBseVNraWEoKQogCiAgICAgU2tQYWludCBwYWludDsKICAgICBHcmFwaGljc0NvbnRleHQq
IGRzdENvbnRleHQgPSByZXN1bHRJbWFnZS0+Y29udGV4dCgpOwotICAgIFNrQ2FudmFzKiBjYW52
YXMgPSBkc3RDb250ZXh0LT5wbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCk7CisgICAgUGxhdGZv
cm1Db250ZXh0U2tpYSogcGxhdGZvcm1Db250ZXh0ID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250
ZXh0KCk7CiAgICAgaWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRElMQVRFKQog
ICAgICAgICBwYWludC5zZXRJbWFnZUZpbHRlcihuZXcgU2tEaWxhdGVJbWFnZUZpbHRlcihyYWRp
dXNYLCByYWRpdXNZKSktPnVucmVmKCk7CiAgICAgZWxzZSBpZiAobV90eXBlID09IEZFTU9SUEhP
TE9HWV9PUEVSQVRPUl9FUk9ERSkKICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0ZXIobmV3IFNr
RXJvZGVJbWFnZUZpbHRlcihyYWRpdXNYLCByYWRpdXNZKSktPnVucmVmKCk7CiAKLSAgICBjYW52
YXMtPnNhdmVMYXllcigwLCAmcGFpbnQpOworICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZUxheWVy
KDAsICZwYWludCk7CiAgICAgZHN0Q29udGV4dC0+ZHJhd0ltYWdlKGltYWdlLmdldCgpLCBDb2xv
clNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uLmxvY2F0aW9uKCksIENvbXBvc2l0ZUNvcHkp
OwotICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgIHBsYXRmb3JtQ29udGV4dC0+cmVzdG9yZUxh
eWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEuY3BwCmlu
ZGV4IDRmNzljZmIwYjVlNjljNWM1NGU3M2JkMGUyY2JhOWEzOTVhZjY1ZWIuLjNjMjdkMzcwNmUx
ZjVjOTdlOTZkOTQ3ZDlmNGUxYjExYWY5ODlkYWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNw
cApAQCAtMjcxLDIzICsyNzEsMjAgQEAgdm9pZCBHcmFwaGljc0NvbnRleHQ6OmJlZ2luUGxhdGZv
cm1UcmFuc3BhcmVuY3lMYXllcihmbG9hdCBvcGFjaXR5KQogICAgIC8vICh0aGUgc3VyZmFjZSBv
ZiB0aGUgcGFnZSkgYnV0IGxheWVycyBvbiB0b3AgbWF5IGhhdmUgdHJhbnNwYXJlbnQgcGFydHMu
CiAgICAgLy8gV2l0aG91dCBleHBsaWNpdGx5IHNldHRpbmcgdGhlIGFscGhhIGZsYWcsIHRoZSBs
YXllciB3aWxsIGluaGVyaXQgdGhlCiAgICAgLy8gb3BhcXVlIHNldHRpbmcgb2YgdGhlIGJhc2Ug
YW5kIHNvbWUgdGhpbmdzIHdvbid0IHdvcmsgcHJvcGVybHkuCisgICAgU2tDYW52YXM6OlNhdmVG
bGFncyBzYXZlRmxhZ3MgPSBzdGF0aWNfY2FzdDxTa0NhbnZhczo6U2F2ZUZsYWdzPihTa0NhbnZh
czo6a0hhc0FscGhhTGF5ZXJfU2F2ZUZsYWcgfCBTa0NhbnZhczo6a0Z1bGxDb2xvckxheWVyX1Nh
dmVGbGFnKTsKIAogICAgIFNrUGFpbnQgbGF5ZXJQYWludDsKICAgICBsYXllclBhaW50LnNldEFs
cGhhKHN0YXRpY19jYXN0PHVuc2lnbmVkIGNoYXI+KG9wYWNpdHkgKiAyNTUpKTsKICAgICBsYXll
clBhaW50LnNldFhmZXJtb2RlTW9kZShwbGF0Zm9ybUNvbnRleHQoKS0+Z2V0WGZlcm1vZGVNb2Rl
KCkpOwogCi0gICAgcGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygpLT5zYXZlTGF5ZXIoCi0gICAg
ICAgIDAsCi0gICAgICAgICZsYXllclBhaW50LAotICAgICAgICBzdGF0aWNfY2FzdDxTa0NhbnZh
czo6U2F2ZUZsYWdzPihTa0NhbnZhczo6a0hhc0FscGhhTGF5ZXJfU2F2ZUZsYWcgfAotICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTa0NhbnZhczo6a0Z1bGxDb2xvckxh
eWVyX1NhdmVGbGFnKSk7CisgICAgcGxhdGZvcm1Db250ZXh0KCktPnNhdmVMYXllcigwLCAmbGF5
ZXJQYWludCwgc2F2ZUZsYWdzKTsKIH0KIAogdm9pZCBHcmFwaGljc0NvbnRleHQ6OmVuZFBsYXRm
b3JtVHJhbnNwYXJlbmN5TGF5ZXIoKQogewogICAgIGlmIChwYWludGluZ0Rpc2FibGVkKCkpCiAg
ICAgICAgIHJldHVybjsKLSAgICBwbGF0Zm9ybUNvbnRleHQoKS0+Y2FudmFzKCktPnJlc3RvcmUo
KTsKKyAgICBwbGF0Zm9ybUNvbnRleHQoKS0+cmVzdG9yZUxheWVyKCk7CiB9CiAKIGJvb2wgR3Jh
cGhpY3NDb250ZXh0OjpzdXBwb3J0c1RyYW5zcGFyZW5jeUxheWVycygpCmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3Bw
IGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lh
LmNwcAppbmRleCA1YTRmMTUzNGMwOWZmODJjYzUzNmQ0ZmJiYmUzNjhiZjZmNGNiYmE1Li5jN2U4
NzQ0OWE5OTkyMTI0YjZmODc0NjNlZjlkMTlhYjBmZDgzMDc3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCisrKyBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5j
cHAKQEAgLTE0NywyOSArMTQ3LDQ2IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBwYWludElzT3BhcXVl
KGNvbnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwID0KICAgICByZXR1
cm4gdHJ1ZTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UmVjdChQbGF0Zm9y
bUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwg
Y29uc3QgU2tSZWN0JiBmaWxsUmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0
bWFwKiBiaXRtYXApCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnB1c2hDYW52YXNMYXllcihjb25z
dCBTa1BhaW50KiBwYWludCkKK3sKKyAgICBDYW52YXNMYXllclN0YXRlIHN0YXRlOworICAgIGlm
IChwYWludCkKKyAgICAgICAgc3RhdGUucGFpbnQgPSAqcGFpbnQ7CisgICAgbV9jYW52YXNMYXll
clN0YWNrLmFwcGVuZChzdGF0ZSk7Cit9CisKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6cG9wQ2Fu
dmFzTGF5ZXIoKQoreworICAgIG1fY2FudmFzTGF5ZXJTdGFjay5yZW1vdmVMYXN0KCk7Cit9CisK
K3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6c2V0SW1hZ2VNYXNrKGNvbnN0IFNrUmVjdCYgaW1hZ2VP
cGFxdWVSZWN0KQoreworICAgIEFTU0VSVCghbV9jYW52YXNMYXllclN0YWNrLmlzRW1wdHkoKSk7
CisgICAgbV9jYW52YXNMYXllclN0YWNrLmxhc3QoKS5oYXNJbWFnZU1hc2sgPSB0cnVlOworICAg
IG1fY2FudmFzTGF5ZXJTdGFjay5sYXN0KCkuaW1hZ2VPcGFxdWVSZWN0ID0gaW1hZ2VPcGFxdWVS
ZWN0OworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KGNvbnN0IFBsYXRm
b3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3Jt
LCBjb25zdCBTa1JlY3QmIGZpbGxSZWN0LCBjb25zdCBTa1BhaW50JiBwYWludCwgY29uc3QgU2tC
aXRtYXAqIHNvdXJjZUJpdG1hcCkKIHsKICAgICAvLyBBbnkgc3Ryb2tpbmcgbWF5IHB1dCBhbHBo
YSBpbiBwaXhlbHMgZXZlbiBpZiB0aGUgZmlsbGluZyBwYXJ0IGRvZXMgbm90LgogICAgIGlmIChw
YWludC5nZXRTdHlsZSgpICE9IFNrUGFpbnQ6OmtGaWxsX1N0eWxlKSB7Ci0gICAgICAgIGJvb2wg
b3BhcXVlID0gcGFpbnRJc09wYXF1ZShwYWludCwgYml0bWFwKTsKICAgICAgICAgYm9vbCBmaWxs
c0JvdW5kcyA9IGZhbHNlOwogCiAgICAgICAgIGlmICghcGFpbnQuY2FuQ29tcHV0ZUZhc3RCb3Vu
ZHMoKSkKLSAgICAgICAgICAgIGRpZERyYXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1ZSk7CisgICAg
ICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50KTsKICAgICAgICAgZWxzZSB7CiAgICAgICAg
ICAgICBTa1JlY3Qgc3Ryb2tlUmVjdDsKICAgICAgICAgICAgIHN0cm9rZVJlY3QgPSBwYWludC5j
b21wdXRlRmFzdEJvdW5kcyhmaWxsUmVjdCwgJnN0cm9rZVJlY3QpOwotICAgICAgICAgICAgZGlk
RHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHN0cm9rZVJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxz
Qm91bmRzKTsKKyAgICAgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCBzdHJva2VS
ZWN0LCBwYWludCwgc291cmNlQml0bWFwLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAg
ICAgICAgfQogICAgIH0KIAotICAgIGJvb2wgY2hlY2tGaWxsT25seSA9IHRydWU7Ci0gICAgYm9v
bCBvcGFxdWUgPSBwYWludElzT3BhcXVlKHBhaW50LCBiaXRtYXAsIGNoZWNrRmlsbE9ubHkpOwog
ICAgIGJvb2wgZmlsbHNCb3VuZHMgPSBwYWludC5nZXRTdHlsZSgpICE9IFNrUGFpbnQ6OmtTdHJv
a2VfU3R5bGU7Ci0gICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIGZpbGxSZWN0LCBwYWlu
dCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0s
IGZpbGxSZWN0LCBwYWludCwgc291cmNlQml0bWFwLCBmaWxsc0JvdW5kcywgRmlsbE9ubHkpOwog
fQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQYXRoKFBsYXRmb3JtQ29udGV4dFNr
aWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1Bh
dGgmIHBhdGgsIGNvbnN0IFNrUGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3UGF0aChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZp
bmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBTa1BhaW50
JiBwYWludCkKIHsKICAgICBTa1JlY3QgcmVjdDsKICAgICBpZiAocGF0aC5pc1JlY3QoJnJlY3Qp
KSB7CkBAIC0xNzcsMTggKzE5NCwxNyBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdQ
YXRoKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYQogICAgICAg
ICByZXR1cm47CiAgICAgfQogCi0gICAgYm9vbCBvcGFxdWUgPSBwYWludElzT3BhcXVlKHBhaW50
KTsKICAgICBib29sIGZpbGxzQm91bmRzID0gZmFsc2U7CiAKICAgICBpZiAoIXBhaW50LmNhbkNv
bXB1dGVGYXN0Qm91bmRzKCkpCi0gICAgICAgIGRpZERyYXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1
ZSk7CisgICAgICAgIGRpZERyYXdVbmJvdW5kZWQocGFpbnQpOwogICAgIGVsc2UgewogICAgICAg
ICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMocGF0aC5nZXRCb3VuZHMoKSwgJnJlY3Qp
OwotICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIG9wYXF1
ZSwgZmlsbHNCb3VuZHMpOworICAgICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgcmVj
dCwgcGFpbnQsIDAsIGZpbGxzQm91bmRzLCBGaWxsT3JTdHJva2UpOwogICAgIH0KIH0KIAotdm9p
ZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKFBsYXRmb3JtQ29udGV4dFNraWEqIGNv
bnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBTa0NhbnZhczo6UG9pbnRN
b2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnQgcG9pbnRzW10sIGNvbnN0IFNr
UGFpbnQmIHBhaW50KQordm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKGNvbnN0
IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJh
bnNmb3JtLCBTa0NhbnZhczo6UG9pbnRNb2RlIG1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNr
UG9pbnQgcG9pbnRzW10sIGNvbnN0IFNrUGFpbnQmIHBhaW50KQogewogICAgIGlmICghbnVtUG9p
bnRzKQogICAgICAgICByZXR1cm47CkBAIC0yMDYsMzggKzIyMiwzMyBAQCB2b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lVAogICAgICAgICByZWN0LmZCb3R0b20gPSBzdGQ6Om1heChyZWN0LmZCb3R0b20s
IHBvaW50c1tpXS5mWSArIDEpOwogICAgIH0KIAotICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJc09w
YXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9IGZhbHNlOwogCiAgICAgaWYgKCFw
YWludC5jYW5Db21wdXRlRmFzdEJvdW5kcygpKQotICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBh
aW50LCBvcGFxdWUpOworICAgICAgICBkaWREcmF3VW5ib3VuZGVkKHBhaW50KTsKICAgICBlbHNl
IHsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0Qm91bmRzKHJlY3QsICZyZWN0KTsK
LSAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUs
IGZpbGxzQm91bmRzKTsKKyAgICAgICAgZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3Qs
IHBhaW50LCAwLCBmaWxsc0JvdW5kcywgRmlsbE9yU3Ryb2tlKTsKICAgICB9CiB9CiAKLXZvaWQg
T3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250ZXh0U2tpYSogY29u
dGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91
bmRzLCBjb25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d0JvdW5kZWQoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgYm91bmRzLCBjb25zdCBTa1BhaW50
JiBwYWludCkKIHsKLSAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAg
IGJvb2wgZmlsbHNCb3VuZHMgPSBmYWxzZTsKIAogICAgIGlmICghcGFpbnQuY2FuQ29tcHV0ZUZh
c3RCb3VuZHMoKSkKLSAgICAgICAgZGlkRHJhd1VuYm91bmRlZChwYWludCwgb3BhcXVlKTsKKyAg
ICAgICAgZGlkRHJhd1VuYm91bmRlZChwYWludCk7CiAgICAgZWxzZSB7CiAgICAgICAgIFNrUmVj
dCByZWN0OwogICAgICAgICByZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMoYm91bmRzLCAm
cmVjdCk7Ci0gICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwg
b3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3Jt
LCByZWN0LCBwYWludCwgMCwgZmlsbHNCb3VuZHMsIEZpbGxPclN0cm9rZSk7CiAgICAgfQogfQog
Ci12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSogY29u
dGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgcmVj
dCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGJvb2wgZHJhd3NPcGFxdWUsIGJvb2wgZmlsbHNCb3Vu
ZHMpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0
U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNr
UmVjdCYgcmVjdCwgY29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBzb3VyY2VC
aXRtYXAsIGJvb2wgZmlsbHNCb3VuZHMsIERyYXdUeXBlIGRyYXdUeXBlKQogewogICAgIFNrUmVj
dCB0YXJnZXRSZWN0ID0gcmVjdDsKIAotICAgIGJvb2wgeGZlcnNPcGFxdWUgPSB4ZmVybW9kZUlz
T3BhcXVlKHBhaW50LCBkcmF3c09wYXF1ZSk7Ci0gICAgYm9vbCBwcmVzZXJ2ZXNPcGFxdWUgPSB4
ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUpOwotCiAgICAgLy8gQXBw
bHkgdGhlIHRyYW5zZm9ybSB0byBkZXZpY2UgY29vcmRpbmF0ZSBzcGFjZS4KICAgICBTa01hdHJp
eCBjYW52YXNUcmFuc2Zvcm0gPSBjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxNYXRyaXgoKTsK
ICAgICBpZiAoIWNhbnZhc1RyYW5zZm9ybS5tYXBSZWN0KCZ0YXJnZXRSZWN0KSkKQEAgLTI0Nywz
MCArMjU4LDM5IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhdyhQbGF0Zm9ybUNvbnRl
eHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2ZvCiAgICAgaWYgKGNvbnRleHQtPmNh
bnZhcygpLT5nZXRDbGlwVHlwZSgpICE9IFNrQ2FudmFzOjprUmVjdF9DbGlwVHlwZSkKICAgICAg
ICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKICAgICBlbHNlIHsKLSAgICAgICAgU2tJUmVjdCBkZXZp
Y2VDbGlwOwotICAgICAgICBjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcERldmljZUJvdW5kcygm
ZGV2aWNlQ2xpcCk7CisgICAgICAgIFNrSVJlY3QgZGV2aWNlQ2xpcCA9IGNvbnRleHQtPmNhbnZh
cygpLT5nZXRUb3RhbENsaXAoKS5nZXRCb3VuZHMoKTsKICAgICAgICAgaWYgKCF0YXJnZXRSZWN0
LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGRldmljZUNsaXAuZkxlZnQpLCBTa0ludFRvU2NhbGFy
KGRldmljZUNsaXAuZlRvcCksIFNrSW50VG9TY2FsYXIoZGV2aWNlQ2xpcC5mUmlnaHQpLCBTa0lu
dFRvU2NhbGFyKGRldmljZUNsaXAuZkJvdHRvbSkpKQogICAgICAgICAgICAgcmV0dXJuOwogICAg
IH0KIAotICAgIC8vIEFwcGx5IGFueSBsYXllcnMgdGhhdCB3ZSBhcmUgZHJhd2luZyBpbnRvLgot
ICAgIGZvciAoU2tDYW52YXM6OkxheWVySXRlciBpdChjb250ZXh0LT5jYW52YXMoKSwgZmFsc2Up
OyAhaXQuZG9uZSgpOyBpdC5uZXh0KCkpIHsKLSAgICAgICAgLy8gQXBwbHkgdGhlIGxheWVyJ3Mg
Y2xpcCAod2hpY2ggaXMgaW4gZGV2aWNlIHNwYWNlKQotICAgICAgICBjb25zdCBTa1JlZ2lvbiYg
ZGV2aWNlTGF5ZXJDbGlwID0gaXQuY2xpcCgpOwotICAgICAgICBpZiAoZGV2aWNlTGF5ZXJDbGlw
LmlzRW1wdHkoKSB8fCAhZGV2aWNlTGF5ZXJDbGlwLmlzUmVjdCgpKQorICAgIGJvb2wgY2hlY2tG
aWxsT25seSA9IGRyYXdUeXBlID09IEZpbGxPbmx5OworICAgIGJvb2wgbGFzdExheWVyRHJhd3NP
cGFxdWUgPSBwYWludElzT3BhcXVlKHBhaW50LCBzb3VyY2VCaXRtYXAsIGNoZWNrRmlsbE9ubHkp
OworCisgICAgYm9vbCB4ZmVyc09wYXF1ZSA9IHhmZXJtb2RlSXNPcGFxdWUocGFpbnQsIGxhc3RM
YXllckRyYXdzT3BhcXVlKTsKKworICAgIC8vIEFwcGx5IHRoZSBTa0NhbnZhcyBsYXllcnMgd2Ug
d2lsbCBiZSBkcmF3aW5nIHRocm91Z2guCisgICAgZm9yIChzaXplX3QgaSA9IG1fY2FudmFzTGF5
ZXJTdGFjay5zaXplKCk7IGkgPiAwOyAtLWkpIHsKKyAgICAgICAgY29uc3QgQ2FudmFzTGF5ZXJT
dGF0ZSYgY2FudmFzTGF5ZXIgPSBtX2NhbnZhc0xheWVyU3RhY2tbaS0xXTsKKworICAgICAgICAv
LyBGSVhNRTogV2UgY291bGQgc3RpbGwgdHJhY2sgdGhlIG9wYXF1ZSBwYXJ0IGJ1dCBpdCdzIGFs
d2F5cyBlbXB0eSByaWdodCBub3cgYW55d2F5cy4KKyAgICAgICAgaWYgKGNhbnZhc0xheWVyLmhh
c0ltYWdlTWFzayAmJiAhY2FudmFzTGF5ZXIuaW1hZ2VPcGFxdWVSZWN0LmNvbnRhaW5zKHRhcmdl
dFJlY3QpKQogICAgICAgICAgICAgZmlsbHNCb3VuZHMgPSBmYWxzZTsKLSAgICAgICAgZWxzZSB7
Ci0gICAgICAgICAgICBTa0lSZWN0IGNsaXBCb3VuZHMgPSBpdC5jbGlwKCkuZ2V0Qm91bmRzKCk7
Ci0gICAgICAgICAgICBpZiAoIXRhcmdldFJlY3QuaW50ZXJzZWN0KFNrSW50VG9TY2FsYXIoY2xp
cEJvdW5kcy5mTGVmdCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mVG9wKSwgU2tJbnRUb1Nj
YWxhcihjbGlwQm91bmRzLmZSaWdodCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mQm90dG9t
KSkpCi0gICAgICAgICAgICAgICAgcmV0dXJuOwotICAgICAgICB9CiAKLSAgICAgICAgLy8gTWFr
ZSBzdXJlIHRoZSBwYWludCBzdGF5cyBvcGFxdWUgdGhyb3VnaCB0aGUgbGF5ZXIuCi0gICAgICAg
IGJvb2wgZHJhd3NPcGFxdWUgPSBwYWludElzT3BhcXVlKGl0LnBhaW50KCkpOwotICAgICAgICB4
ZmVyc09wYXF1ZSA9IHhmZXJzT3BhcXVlICYmIHhmZXJtb2RlSXNPcGFxdWUoaXQucGFpbnQoKSwg
ZHJhd3NPcGFxdWUpOwotICAgICAgICBwcmVzZXJ2ZXNPcGFxdWUgPSBwcmVzZXJ2ZXNPcGFxdWUg
JiYgeGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUoaXQucGFpbnQoKSwgZHJhd3NPcGFxdWUpOworICAg
ICAgICBib29sIGNoZWNrRmlsbE9ubHkgPSBkcmF3VHlwZSA9PSBGaWxsT25seTsKKyAgICAgICAg
bGFzdExheWVyRHJhd3NPcGFxdWUgPSBwYWludElzT3BhcXVlKGNhbnZhc0xheWVyLnBhaW50LCAw
LCBjaGVja0ZpbGxPbmx5KTsKKyAgICAgICAgLy8gSWYgYW55IGxheWVyIGRvZXNuJ3QgcGFpbnQg
b3BhcXVlLCB0aGVuIHRoZSByZXN1bHQgd2lsbCBub3QgYmUgb3BhcXVlLgorICAgICAgICB4ZmVy
c09wYXF1ZSAmPSB4ZmVybW9kZUlzT3BhcXVlKGNhbnZhc0xheWVyLnBhaW50LCBsYXN0TGF5ZXJE
cmF3c09wYXF1ZSk7CiAgICAgfQogCisgICAgLy8gUHJlc2VydmluZyBvcGFxdWUgb25seSBtYXR0
ZXJzIGZvciB0aGUgYm90dG9tLW1vc3QgbGF5ZXIuIEl0cyBjb250ZW50cyBhcmUgZWl0aGVyIG9w
YXF1ZSBvciBub3QsIGFuZCBpZiBub3QKKyAgICAvLyB0aGVuIHdlIGNhcmUgaWYgaXQgcHJlc2Vy
dmVzIHRoZSBvcGFxdWVuZXNzIG9mIHRoZSB0YXJnZXQgZGV2aWNlIHdoZW4gaXQgaXMgZHJhd24g
aW50byB0aGUgZGV2aWNlLgorICAgIGJvb2wgcHJlc2VydmVzT3BhcXVlOworICAgIGlmIChtX2Nh
bnZhc0xheWVyU3RhY2suaXNFbXB0eSgpKQorICAgICAgICBwcmVzZXJ2ZXNPcGFxdWUgPSB4ZmVy
bW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgbGFzdExheWVyRHJhd3NPcGFxdWUpOworICAgIGVs
c2UKKyAgICAgICAgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUobV9j
YW52YXNMYXllclN0YWNrWzBdLnBhaW50LCBsYXN0TGF5ZXJEcmF3c09wYXF1ZSk7CisKKwogICAg
IC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gdGhlIHRyYWNraW5nIHNwYWNlLgogICAgIFNrTWF0
cml4IGNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtID0gdHJhbnNmb3JtOwogICAgIGlmICghY2FudmFz
VG9UYXJnZXRUcmFuc2Zvcm0ubWFwUmVjdCgmdGFyZ2V0UmVjdCkpCkBAIC0yODIsOSArMzAyLDIy
IEBAIHZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2ZvCiAgICAgICAgIG1hcmtSZWN0QXNOb25PcGFxdWUo
dGFyZ2V0UmVjdCk7CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1VuYm91bmRl
ZChjb25zdCBTa1BhaW50JiBwYWludCwgYm9vbCBkcmF3c09wYXF1ZSkKK3ZvaWQgT3BhcXVlUmVn
aW9uU2tpYTo6ZGlkRHJhd1VuYm91bmRlZChjb25zdCBTa1BhaW50JiBwYWludCkKIHsKLSAgICBp
ZiAoIXhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50LCBkcmF3c09wYXF1ZSkpIHsKKyAgICAv
LyBQcmVzZXJ2aW5nIG9wYXF1ZSBvbmx5IG1hdHRlcnMgZm9yIHRoZSBib3R0b20tbW9zdCBsYXll
ci4gSXRzIGNvbnRlbnRzIGFyZSBlaXRoZXIgb3BhcXVlIG9yIG5vdCwgYW5kIGlmIG5vdAorICAg
IC8vIHRoZW4gd2UgY2FyZSBpZiBpdCBwcmVzZXJ2ZXMgdGhlIG9wYXF1ZW5lc3Mgb2YgdGhlIHRh
cmdldCBkZXZpY2Ugd2hlbiBpdCBpcyBkcmF3biBpbnRvIHRoZSBkZXZpY2UuCisgICAgYm9vbCBw
cmVzZXJ2ZXNPcGFxdWU7CisKKyAgICBib29sIGNoZWNrRmlsbE9ubHkgPSBmYWxzZTsKKyAgICBp
ZiAobV9jYW52YXNMYXllclN0YWNrLmlzRW1wdHkoKSkgeworICAgICAgICBib29sIGxhc3RMYXll
ckRyYXdzT3BhcXVlID0gcGFpbnRJc09wYXF1ZShwYWludCwgMCwgY2hlY2tGaWxsT25seSk7Cisg
ICAgICAgIHByZXNlcnZlc09wYXF1ZSA9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKHBhaW50LCBs
YXN0TGF5ZXJEcmF3c09wYXF1ZSk7CisgICAgfSBlbHNlIHsKKyAgICAgICAgYm9vbCBsYXN0TGF5
ZXJEcmF3c09wYXF1ZSA9IHBhaW50SXNPcGFxdWUobV9jYW52YXNMYXllclN0YWNrWzBdLnBhaW50
LCAwLCBjaGVja0ZpbGxPbmx5KTsKKyAgICAgICAgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQ
cmVzZXJ2ZXNPcGFxdWUobV9jYW52YXNMYXllclN0YWNrWzBdLnBhaW50LCBsYXN0TGF5ZXJEcmF3
c09wYXF1ZSk7CisgICAgfQorCisgICAgaWYgKCFwcmVzZXJ2ZXNPcGFxdWUpIHsKICAgICAgICAg
Ly8gV2UgZG9uJ3Qga25vdyB3aGF0IHdhcyBkcmF3biBvbiBzbyBqdXN0IGRlc3Ryb3kgdGhlIGtu
b3duIG9wYXF1ZSBhcmVhLgogICAgICAgICBtX29wYXF1ZVJlY3QgPSBTa1JlY3Q6Ok1ha2VFbXB0
eSgpOwogICAgIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhp
Y3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmgKaW5kZXggNDMxYzZlYzE5ZTVhNjk0YzE5Mjk5YWEw
ZDdiN2ZiNDdhMjkwZmRkOC4uZTg5ZDU1MDA4MzQ2MDFhZjYzNGMzZWY0ZGQ2NWFjYWFiOTZiY2E3
ZSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9PcGFx
dWVSZWdpb25Ta2lhLmgKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9PcGFxdWVSZWdpb25Ta2lhLmgKQEAgLTUzLDIwICs1Myw0MSBAQCBwdWJsaWM6CiAgICAgLy8g
VGhlIHJlc3VsdGluZyBvcGFxdWUgcmVnaW9uIGFzIGEgc2luZ2xlIHJlY3QuCiAgICAgSW50UmVj
dCBhc1JlY3QoKSBjb25zdDsKIAotICAgIC8vIEZJWE1FOiBtYWtlIGFsbCB0aGUgUGxhdGZvcm1D
b250ZXh0U2tpYSogaW50byBhIGNvbnN0IHBvaW50ZXIgd2hlbiBTa2lhIGZpeGVzIExheWVySXRl
cidzIFNrQ2FudmFzKi4KKyAgICB2b2lkIHB1c2hDYW52YXNMYXllcihjb25zdCBTa1BhaW50Kik7
CisgICAgdm9pZCBwb3BDYW52YXNMYXllcigpOwogCi0gICAgdm9pZCBkaWREcmF3UmVjdChQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0Jiwg
Y29uc3QgU2tQYWludCYsIGNvbnN0IFNrQml0bWFwKik7Ci0gICAgdm9pZCBkaWREcmF3UGF0aChQ
bGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQYXRo
JiwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd1BvaW50cyhQbGF0Zm9ybUNvbnRl
eHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50TW9kZSwgaW50
IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Ci0gICAgdm9pZCBk
aWREcmF3Qm91bmRlZChQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3Jt
JiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgc2V0SW1hZ2VNYXNr
KGNvbnN0IFNrUmVjdCYgaW1hZ2VPcGFxdWVSZWN0KTsKKworICAgIHZvaWQgZGlkRHJhd1JlY3Qo
Y29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0
IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0JpdG1hcCogc291cmNlQml0bWFwKTsK
KyAgICB2b2lkIGRpZERyYXdQYXRoKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBB
ZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1BhdGgmLCBjb25zdCBTa1BhaW50Jik7CisgICAgdm9p
ZCBkaWREcmF3UG9pbnRzKGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mLCBTa0NhbnZhczo6UG9pbnRNb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1Bv
aW50W10sIGNvbnN0IFNrUGFpbnQmKTsKKyAgICB2b2lkIGRpZERyYXdCb3VuZGVkKGNvbnN0IFBs
YXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3Qm
LCBjb25zdCBTa1BhaW50Jik7CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBkaWREcmF3KFBsYXRmb3Jt
Q29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25z
dCBTa1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSwgYm9vbCBmaWxsc0JvdW5kcyk7Ci0gICAgdm9p
ZCBkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFNrUGFpbnQmLCBib29sIGRyYXdzT3BhcXVlKTsKKyAg
ICBlbnVtIERyYXdUeXBlIHsKKyAgICAgICAgRmlsbE9ubHksCisgICAgICAgIEZpbGxPclN0cm9r
ZQorICAgIH07CisKKyAgICB2b2lkIGRpZERyYXcoY29uc3QgUGxhdGZvcm1Db250ZXh0U2tpYSos
IGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBj
b25zdCBTa0JpdG1hcCogc291cmNlQml0bWFwLCBib29sIGZpbGxzQm91bmRzLCBEcmF3VHlwZSk7
CisgICAgdm9pZCBkaWREcmF3VW5ib3VuZGVkKGNvbnN0IFNrUGFpbnQmKTsKICAgICB2b2lkIG1h
cmtSZWN0QXNPcGFxdWUoY29uc3QgU2tSZWN0Jik7CiAgICAgdm9pZCBtYXJrUmVjdEFzTm9uT3Bh
cXVlKGNvbnN0IFNrUmVjdCYpOwogCiAgICAgU2tSZWN0IG1fb3BhcXVlUmVjdDsKKworICAgIHN0
cnVjdCBDYW52YXNMYXllclN0YXRlIHsKKyAgICAgICAgQ2FudmFzTGF5ZXJTdGF0ZSgpIDogaGFz
SW1hZ2VNYXNrKGZhbHNlKSB7IH0KKworICAgICAgICBTa1BhaW50IHBhaW50OworCisgICAgICAg
IC8vIEFuIGltYWdlIG1hc2sgaXMgYmVpbmcgYXBwbGllZCB0byB0aGUgbGF5ZXIuCisgICAgICAg
IGJvb2wgaGFzSW1hZ2VNYXNrOworICAgICAgICAvLyBUaGUgb3BhcXVlIGFyZWEgaW4gdGhlIGlt
YWdlIG1hc2suCisgICAgICAgIFNrUmVjdCBpbWFnZU9wYXF1ZVJlY3Q7CisgICAgfTsKKworICAg
IFZlY3RvcjxDYW52YXNMYXllclN0YXRlLCAzPiBtX2NhbnZhc0xheWVyU3RhY2s7CiB9OwogCiB9
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tp
YS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAppbmRleCA1OTYwYTA3ZmI3NzU3NTRiYWQ0NTIwZGFj
OWMyZTFjY2ZiOTUwMTE0Li4wNzQxNjllMTAzOTgzNWI1MTJhZTIxMTljMzQ0OGFhMDFhZTNlZWY0
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNz
L3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAKQEAgLTIyNiwyOCArMjI2LDU3IEBAIHZvaWQg
UGxhdGZvcm1Db250ZXh0U2tpYTo6c2F2ZSgpCiAgICAgY2FudmFzKCktPnNhdmUoKTsKIH0KIAor
dm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzYXZlTGF5ZXIoY29uc3QgU2tSZWN0KiBib3VuZHMs
IGNvbnN0IFNrUGFpbnQqIHBhaW50KQoreworICAgIG1fY2FudmFzLT5zYXZlTGF5ZXIoYm91bmRz
LCBwYWludCk7CisgICAgaWYgKGJvdW5kcykKKyAgICAgICAgbV9jYW52YXMtPmNsaXBSZWN0KCpi
b3VuZHMpOworICAgIG1fb3BhcXVlUmVnaW9uLnB1c2hDYW52YXNMYXllcihwYWludCk7Cit9CisK
K3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6c2F2ZUxheWVyKGNvbnN0IFNrUmVjdCogYm91bmRz
LCBjb25zdCBTa1BhaW50KiBwYWludCwgU2tDYW52YXM6OlNhdmVGbGFncyBzYXZlRmxhZ3MpCit7
CisgICAgbV9jYW52YXMtPnNhdmVMYXllcihib3VuZHMsIHBhaW50LCBzYXZlRmxhZ3MpOworICAg
IGlmIChib3VuZHMpCisgICAgICAgIG1fY2FudmFzLT5jbGlwUmVjdCgqYm91bmRzKTsKKyAgICBt
X29wYXF1ZVJlZ2lvbi5wdXNoQ2FudmFzTGF5ZXIocGFpbnQpOworfQorCit2b2lkIFBsYXRmb3Jt
Q29udGV4dFNraWE6OnJlc3RvcmVMYXllcigpCit7CisgICAgbV9jYW52YXMtPnJlc3RvcmUoKTsK
KyAgICBtX29wYXF1ZVJlZ2lvbi5wb3BDYW52YXNMYXllcigpOworfQorCiB2b2lkIFBsYXRmb3Jt
Q29udGV4dFNraWE6OmJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZShjb25zdCBGbG9hdFJlY3QmIHJl
Y3QsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj
b25zdCBJbWFnZUJ1ZmZlciogaW1hZ2VCdWZmZXIpCiB7CisgICAgU2tSZWN0IGJvdW5kcyA9IHsg
U2tGbG9hdFRvU2NhbGFyKHJlY3QueCgpKSwgU2tGbG9hdFRvU2NhbGFyKHJlY3QueSgpKSwKKyAg
ICAgICAgICAgICAgICAgICAgICBTa0Zsb2F0VG9TY2FsYXIocmVjdC5tYXhYKCkpLCBTa0Zsb2F0
VG9TY2FsYXIocmVjdC5tYXhZKCkpIH07CisKKyAgICBpZiAoaW1hZ2VCdWZmZXItPmludGVybmFs
U2l6ZSgpLmlzRW1wdHkoKSkgeworICAgICAgICBtX2NhbnZhcy0+Y2xpcFJlY3QoYm91bmRzKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKwogICAgIC8vIFNraWEgZG9lc24ndCBzdXBwb3J0IGNs
aXBwaW5nIHRvIGFuIGltYWdlLCBzbyB3ZSBjcmVhdGUgYSBsYXllci4gVGhlIG5leHQKICAgICAv
LyB0aW1lIHJlc3RvcmUgaXMgaW52b2tlZCB0aGUgbGF5ZXIgYW5kIHxpbWFnZUJ1ZmZlcnwgYXJl
IGNvbWJpbmVkIHRvCiAgICAgLy8gY3JlYXRlIHRoZSByZXN1bHRpbmcgaW1hZ2UuCi0gICAgU2tS
ZWN0IGJvdW5kcyA9IHsgU2tGbG9hdFRvU2NhbGFyKHJlY3QueCgpKSwgU2tGbG9hdFRvU2NhbGFy
KHJlY3QueSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICBTa0Zsb2F0VG9TY2FsYXIocmVjdC5t
YXhYKCkpLCBTa0Zsb2F0VG9TY2FsYXIocmVjdC5tYXhZKCkpIH07CisKICAgICBtX3N0YXRlLT5t
X2NsaXAgPSBib3VuZHM7CiAgICAgLy8gR2V0IHRoZSBhYnNvbHV0ZSBjb29yZGluYXRlcyBvZiB0
aGUgc3RvcmVkIGNsaXBwaW5nIHJlY3RhbmdsZSB0byBtYWtlIGl0CiAgICAgLy8gaW5kZXBlbmRl
bnQgb2YgYW55IHRyYW5zZm9ybSBjaGFuZ2VzLgogICAgIGNhbnZhcygpLT5nZXRUb3RhbE1hdHJp
eCgpLm1hcFJlY3QoJm1fc3RhdGUtPm1fY2xpcCk7CiAKLSAgICBjYW52YXMoKS0+Y2xpcFJlY3Qo
Ym91bmRzKTsKKyAgICBTa0NhbnZhczo6U2F2ZUZsYWdzIHNhdmVGbGFncyA9IHN0YXRpY19jYXN0
PFNrQ2FudmFzOjpTYXZlRmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8
IFNrQ2FudmFzOjprRnVsbENvbG9yTGF5ZXJfU2F2ZUZsYWcpOworICAgIHNhdmVMYXllcigmYm91
bmRzLCAwLCBzYXZlRmxhZ3MpOwogCi0gICAgaWYgKGltYWdlQnVmZmVyLT5pbnRlcm5hbFNpemUo
KS5pc0VtcHR5KCkpCi0gICAgICAgIHJldHVybjsKKyAgICBjb25zdCBTa0JpdG1hcCogYml0bWFw
ID0gaW1hZ2VCdWZmZXItPmNvbnRleHQoKS0+cGxhdGZvcm1Db250ZXh0KCktPmJpdG1hcCgpOwor
CisgICAgU2tSZWN0IG9wYXF1ZVJlY3QgPSBiaXRtYXAtPmlzT3BhcXVlKCkgPyBtX3N0YXRlLT5t
X2NsaXAgOiBTa1JlY3Q6Ok1ha2VFbXB0eSgpOworICAgIG1fb3BhcXVlUmVnaW9uLnNldEltYWdl
TWFzayhvcGFxdWVSZWN0KTsKIAotICAgIGNhbnZhcygpLT5zYXZlTGF5ZXJBbHBoYSgmYm91bmRz
LCAyNTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PFNrQ2FudmFz
OjpTYXZlRmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8IFNrQ2FudmFz
OjprRnVsbENvbG9yTGF5ZXJfU2F2ZUZsYWcpKTsKICAgICAvLyBDb3B5IG9mZiB0aGUgaW1hZ2Ug
YXMgfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgcmVzdG9yZSBpcyBpbnZva2Vk
LgotICAgIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29udGV4dCgpLT5w
bGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7CiAgICAgaWYgKCFiaXRtYXAtPnBpeGVsUmVmKCkp
IHsKICAgICAgICAgLy8gVGhlIGJpdG1hcCBvd25zIGl0J3MgcGl4ZWxzLiBUaGlzIGhhcHBlbnMg
d2hlbiB3ZSd2ZSBhbGxvY2F0ZWQgdGhlCiAgICAgICAgIC8vIHBpeGVscyBpbiBzb21lIHdheSBh
bmQgYXNzaWduZWQgdGhlbSBkaXJlY3RseSB0byB0aGUgYml0bWFwIChhcwpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lh
LmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaAppbmRleCAwMjhjNmU5ZjM3ZjU1NTYyMjg5Y2QxNDU1ZWFkMmZlNjI2MTNiYjljLi5h
ZjdkNjlkYzUwY2NmY2YyNDE1NWY4ODJhNjFhM2RlOTU2NmZhN2Q0IDEwMDY0NAotLS0gYS9Tb3Vy
Y2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEuaAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaApAQCAtOTMsNiArOTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2F2ZSgpOwogICAg
IHZvaWQgcmVzdG9yZSgpOwogCisgICAgdm9pZCBzYXZlTGF5ZXIoY29uc3QgU2tSZWN0KiBib3Vu
ZHMsIGNvbnN0IFNrUGFpbnQqKTsKKyAgICB2b2lkIHNhdmVMYXllcihjb25zdCBTa1JlY3QqIGJv
dW5kcywgY29uc3QgU2tQYWludCosIFNrQ2FudmFzOjpTYXZlRmxhZ3MpOworICAgIHZvaWQgcmVz
dG9yZUxheWVyKCk7CisKICAgICAvLyBCZWdpbnMgYSBsYXllciB0aGF0IGlzIGNsaXBwZWQgdG8g
dGhlIGltYWdlIHxpbWFnZUJ1ZmZlcnwgYXQgdGhlIGxvY2F0aW9uCiAgICAgLy8gfHJlY3R8LiBU
aGlzIGxheWVyIGlzIGltcGxpY2l0bHkgcmVzdG9yZWQgd2hlbiB0aGUgbmV4dCByZXN0b3JlIGlz
CiAgICAgLy8gaW52b2tlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vdGVz
dHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90
ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKaW5kZXggYjBkODZkZGY2ZjcxMzhiNjEy
MDg5NjQ3MDZmNDQ0NjQ1ZjA5ZWY3ZC4uMTc4YzY1NjkwMzAzOTYzZTFlODM3NDcwZGFiY2VlMTg5
NTE4YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9QbGF0Zm9y
bUNvbnRleHRTa2lhVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0cy9Q
bGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKQEAgLTUzLDYgKzUzLDE3IEBAIG5hbWVzcGFjZSB7
CiAgICAgICAgIH0gXAogfQogCisjZGVmaW5lIEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhBQ1QoYml0
bWFwLCBvcGFxdWVSZWN0KSBcCit7IFwKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxvY2tlcihiaXRt
YXApOyBcCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBiaXRtYXAuaGVpZ2h0KCk7ICsreSkgXAor
ICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGJpdG1hcC53aWR0aCgpOyArK3gpIHsgICAgIFwK
KyAgICAgICAgICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkpID4+IDI0OyBc
CisgICAgICAgICAgICBib29sIG9wYXF1ZSA9IG9wYXF1ZVJlY3QuY29udGFpbnMoeCwgeSk7IFwK
KyAgICAgICAgICAgIEVYUEVDVF9FUShvcGFxdWUsIGFscGhhID09IDI1NSk7IFwKKyAgICAgICAg
fSBcCit9CisKIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3BhcXVlVGVzdCkK
IHsKICAgICBTa0JpdG1hcCBiaXRtYXA7CkBAIC02ODEsNCArNjkyLDg2IEBAIFRFU1QoUGxhdGZv
cm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3QpCiAgICAgRVhQ
RUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNS
ZWN0KCkpOwogfQogCitURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBQcmVzZXJ2ZU9wYXF1
ZU9ubHlNYXR0ZXJzRm9yRmlyc3RMYXllcikKK3sKKyAgICBTa0JpdG1hcCBiaXRtYXA7CisgICAg
Yml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDQwMCwgNDAwKTsK
KyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VDb2xvcigwKTsKKyAg
ICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBsYXRmb3JtQ29udGV4dFNraWEgcGxh
dGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRUcmFja09wYXF1
ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgmcGxhdGZvcm1Db250
ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBmKTsKKyAgICBD
b2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIFBhdGggcGF0aDsKKyAg
ICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgY29udGV4dC5zZXRNaXRl
ckxpbWl0KDEpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDUpOworICAgIGNvbnRl
eHQuc2V0TGluZUNhcChTcXVhcmVDYXApOworICAgIGNvbnRleHQuc2V0U3Ryb2tlU3R5bGUoU29s
aWRTdHJva2UpOworCisgICAgLy8gTWFrZSBza2lhIHVuYWJsZSB0byBjb21wdXRlIGZhc3QgYm91
bmRzIGZvciBvdXIgcGF0aHMuCisgICAgVmVjdG9yPGZsb2F0PiBkYXNoQXJyYXk7CisgICAgZGFz
aEFycmF5LmFwcGVuZCgxKTsKKyAgICBkYXNoQXJyYXkuYXBwZW5kKDApOworICAgIGNvbnRleHQu
c2V0TGluZURhc2goZGFzaEFycmF5LCAwKTsKKworICAgIC8vIE1ha2UgdGhlIGRldmljZSBvcGFx
dWUgaW4gMTAsMTAgNDB4NDAuCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEw
LCA0MCwgNDApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92
ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA0MCwgNDApLCBwbGF0Zm9y
bUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFU
Q0hfRVhBQ1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkp
OworCisgICAgLy8gQmVnaW4gYSBsYXllciB0aGF0IHByZXNlcnZlcyBvcGFxdWUuCisgICAgY29u
dGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7CisgICAgY29u
dGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBCZWdpbiBhIGxheWVy
IHRoYXQgZG9lcyBub3QgcHJlc2VydmUgb3BhcXVlLgorICAgIGNvbnRleHQuc2V0Q29tcG9zaXRl
T3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU91dCk7CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFy
ZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBub3QgZGVzdHJveSB0aGUgZGV2
aWNlIG9wYXF1ZW5lc3MuCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3QoMTAsIDEwLCA0
MCwgNDApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNvdXJjZU92ZXIp
OworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IGRlc3Ryb3kgdGhlIGRldmljZSBvcGFxdWVuZXNz
IGVpdGhlci4KKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihvcGFxdWUsIENvbG9yU3BhY2VEZXZp
Y2VSR0IpOworICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQoMTAsIDEwKSk7CisgICAgcGF0aC5h
ZGRMaW5lVG8oRmxvYXRQb2ludCg0MCwgNDApKTsKKyAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0
aCk7CisKKyAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAgY29udGV4dC5l
bmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEw
LCA0MCwgNDApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAg
IEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhBQ1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVl
UmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgLy8gTm93IGJlZ2luIGEgbGF5ZXIgdGhhdCBkb2Vz
IG5vdCBwcmVzZXJ2ZSBvcGFxdWUgYW5kIGRyYXcgdGhyb3VnaCBpdCB0byB0aGUgZGV2aWNlLgor
ICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU91dCk7Cisg
ICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBUaGlzIHNo
b3VsZCBkZXN0cm95IHRoZSBkZXZpY2Ugb3BhcXVlbmVzcy4KKyAgICBjb250ZXh0LmZpbGxSZWN0
KEZsb2F0UmVjdCgxMCwgMTAsIDQwLCA0MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURldmljZVJHQiwg
Q29tcG9zaXRlU291cmNlT3Zlcik7CisKKyAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVy
KCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVl
UmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhBQ1QoYml0bWFw
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgLy8gTm93
IHdlIGRyYXcgd2l0aCBhIHBhdGggZm9yIHdoaWNoIGl0IGNhbm5vdCBjb21wdXRlIGZhc3QgYm91
bmRzLiBUaGlzIHNob3VsZCBkZXN0cm95IHRoZSBlbnRpcmUgb3BhcXVlIHJlZ2lvbi4KKworICAg
IGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU91dCk7CisgICAg
Y29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBUaGlzIHNob3Vs
ZCBudWtlIHRoZSBkZXZpY2Ugb3BhcXVlbmVzcy4KKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihv
cGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQo
MTAsIDEwKSk7CisgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCg0MCwgNDApKTsKKyAgICBj
b250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CisKKyAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxh
eWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3Bh
cXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhBQ1QoYml0
bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworfQorCiB9IC8v
IG5hbWVzcGFjZQo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>135239</attachid>
            <date>2012-04-02 17:22:08 -0700</date>
            <delta_ts>2012-04-02 20:31:41 -0700</delta_ts>
            <desc>Patch</desc>
            <filename>bug-82564-20120402202207.patch</filename>
            <type>text/plain</type>
            <size>29090</size>
            <attacher name="Dana Jansens">danakj</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTEyNzM3CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9D
aGFuZ2VMb2cgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKaW5kZXggYzRkOWNlNGI0YTM1Yzc0
MWJhNzgxZmZhOTE4NzQwMmM2YjExMTEzNi4uNTE1MTFiOWYzNDYwMGVjM2Q3MGE0MGMzODRiOTE3
NTM2ZDg0YzBlMSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDY1IEBACisyMDEyLTAzLTMwICBEYW5h
IEphbnNlbnMgIDxkYW5ha2pAY2hyb21pdW0ub3JnPgorCisgICAgICAgIFtjaHJvbWl1bV0gUmVt
b3ZlIFNrQ2FudmFzOjpMYXllckl0ZXIgdXNlIGZyb20gT3BhcXVlUmVnaW9uU2tpYQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9ODI1NjQKKworICAgICAg
ICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQZXItdGlsZS1wYWludGlu
ZyB1c2VzIGFuIFNrUGljdHVyZVJlY29yZCBpbiBwbGFjZSBvZiBhbiBTa0NhbnZhcworICAgICAg
ICBhcyB0aGUgcGFpbnRpbmcgdGFyZ2V0IGZvciB0aGUgR3JhcGhpY3NDb250ZXh0LiBUaGlzIGNs
YXNzIG9ubHkgZG9lcworICAgICAgICBhIHNpbXBsZSByZWNvcmRpbmcgYW5kIGRvZXMgbm90IGNy
ZWF0ZSBsYXllcnMgaW4gdGhlIGNhbnZhcyBkdXJpbmcKKyAgICAgICAgcmVjb3JkLCBvbmx5IHBs
YXliYWNrLiBUaGlzIGlzIHByZXZlbnRpbmcgdXMgZnJvbSBjb3JyZWN0bHkgdHJhY2tpbmcKKyAg
ICAgICAgb3BhcXVlIHJlZ2lvbnMgdW5kZXIgcGVyLXRpbGUtcGFpbnRpbmcuCisKKyAgICAgICAg
V2UgY3VycmVudGx5IHVzZSB0aGUgU2tDYW52YXMgTGF5ZXJJdGVyIHRvIGxvb2sgYXQgdGhlIGxh
eWVycyBpbiB0aGUKKyAgICAgICAgY2FudmFzIGJhY2tpbmcgdGhlIEdyYXBoaWNzQ29udGV4dCwg
YW5kIGNoZWNrIHRoZSBTa1BhaW50cywgY2xpcHMsCisgICAgICAgIGFuZCB0cmFuc2Zvcm1zIHRv
IHNlZSBob3cgdGhleSBpbXBhY3QgdGhlIGN1cnJlbnQgZHJhdyBvbmNlIGl0IHJlYWNoZXMKKyAg
ICAgICAgdGhlIGZpbmFsIGRldmljZS4KKworICAgICAgICBUaGUgY2xpcHMgYW5kIHRyYW5zZm9y
bXMgY2FuIGJlIHJldHJlaXZlZCB3aXRob3V0IHVzaW5nIHRoZSBMYXllckl0ZXIKKyAgICAgICAg
dGhyb3VnaCB0aGUgImdldFRvdGFsKiIgbWV0aG9kcy4gQSBjdW11bGF0aXZlIFNrUGFpbnQgaXMg
bm90IGF2YWlsYWJsZQorICAgICAgICBzbyB3ZSBzdG9yZSB0aGlzIG91cnNlbHZlcy4KKworICAg
ICAgICBQbGF0Zm9ybUNvbnRleHRTa2lhIGJlY29tZXMgYXdhcmUgb2Ygd2hlbiBzYXZlTGF5ZXIo
KSBpcyBiZWluZyBjYWxsZWQKKyAgICAgICAgb24gdGhlIHVuZGVybHlpbmcgY2FudmFzLCBhbmQg
cGFzc2VzIHRoaXMgaW5mb3JtYXRpb24gdG8gdGhlCisgICAgICAgIE9wYXF1ZVJlZ2lvblNraWEg
Y2xhc3MuIFNpbmNlIHdlIG5vIGxvbmdlciB3YXRjaCBsYXllcnMgaW4gdGhlIGNhbnZhcywKKyAg
ICAgICAgd2UgbXVzdCBleHBsaWNpdGx5IGhhbmRsZSBpbWFnZSBjbGlwcGluZyBmb3IgdGhlIG9w
YXF1ZSB0cmFja2VyLCBhcworICAgICAgICBpdCBpcyBpbXBsZW1lbnRlZCBpbiB0aGUgUGxhdGZv
cm1Db250ZXh0U2tpYSwgbm90IHZpYSBjb25zdHJ1Y3RzIGluCisgICAgICAgIHRoZSBTa0NhbnZh
cy9Ta1BhaW50LiBXZSBzYXZlIHRoZSBvcGFxdWUgYXJlYSBvZiB0aGUgaW1hZ2UgbWFzayBmb3IK
KyAgICAgICAgdGhlIGNhbnZhcyBsYXllciBpbiB0aGUgc3RhY2sgYWxvbmcgd2l0aCB0aGUgU2tQ
YWludCBmb3IgdGhlIGxheWVyLgorCisgICAgICAgIFVuaXQgdGVzdDogUGxhdGZvcm1Db250ZXh0
U2tpYVRlc3QuUHJlc2VydmVPcGFxdWVPbmx5TWF0dGVyc0ZvckZpcnN0TGF5ZXIKKworICAgICAg
ICAqIHBsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRUdhdXNzaWFuQmx1clNraWEuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6RkVHYXVzc2lhbkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKToK
KyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVNb3JwaG9sb2d5U2tp
YS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lh
KToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dyYXBoaWNzQ29udGV4dFNraWEu
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJh
bnNwYXJlbmN5TGF5ZXIpOgorICAgICAgICAoV2ViQ29yZTo6R3JhcGhpY3NDb250ZXh0OjplbmRQ
bGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9z
a2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9u
U2tpYTo6cHVzaENhbnZhc0xheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2Vi
Q29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6cG9wQ2FudmFzTGF5ZXIpOgorICAgICAgICAoV2ViQ29y
ZTo6T3BhcXVlUmVnaW9uU2tpYTo6c2V0SW1hZ2VNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Ok9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdSZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXdQYXRoKToKKyAgICAgICAgKFdlYkNvcmU6Ok9wYXF1ZVJlZ2lvblNr
aWE6OmRpZERyYXdQb2ludHMpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6
ZGlkRHJhd0JvdW5kZWQpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVlUmVnaW9uU2tpYTo6ZGlk
RHJhdyk6CisgICAgICAgIChXZWJDb3JlOjpPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3VW5ib3Vu
ZGVkKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEu
aDoKKyAgICAgICAgKE9wYXF1ZVJlZ2lvblNraWEpOgorICAgICAgICAoV2ViQ29yZTo6T3BhcXVl
UmVnaW9uU2tpYTo6Q2FudmFzTGF5ZXJTdGF0ZTo6Q2FudmFzTGF5ZXJTdGF0ZSk6CisgICAgICAg
IChDYW52YXNMYXllclN0YXRlKToKKyAgICAgICAgKiBwbGF0Zm9ybS9ncmFwaGljcy9za2lhL1Bs
YXRmb3JtQ29udGV4dFNraWEuY3BwOgorICAgICAgICAoV2ViQ29yZTo6UGxhdGZvcm1Db250ZXh0
U2tpYTo6c2F2ZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmUpOgorICAgICAgICAoV2ViQ29yZTo6
UGxhdGZvcm1Db250ZXh0U2tpYTo6cmVzdG9yZUxheWVyKToKKyAgICAgICAgKFdlYkNvcmU6OlBs
YXRmb3JtQ29udGV4dFNraWE6OmJlZ2luTGF5ZXJDbGlwcGVkVG9JbWFnZSk6CisgICAgICAgICog
cGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmg6CisgICAgICAgIChQ
bGF0Zm9ybUNvbnRleHRTa2lhKToKKwogMjAxMi0wMy0zMCAgUnlvc3VrZSBOaXdhICA8cm5pd2FA
d2Via2l0Lm9yZz4KIAogICAgICAgICBBZGQgYSBjb21waWxlIGFzc2VydCBmb3IgdGhlIHNpemUg
b2YgRm9udERlc2NyaXB0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViS2l0L2Nocm9taXVtL0No
YW5nZUxvZyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCmluZGV4IGI0NWFmMThm
Y2FiY2I4MDExNmIzOTAxYTMxNTBiNDlmMGE4ZDU3YTQuLjQ3ZDQ1NDkyODZiZjNiYzQzY2UwZDll
Zjc1MDI0OTA4NTkyODRhMjUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hh
bmdlTG9nCisrKyBiL1NvdXJjZS9XZWJLaXQvY2hyb21pdW0vQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
MTQgQEAKKzIwMTItMDMtMzAgIERhbmEgSmFuc2VucyAgPGRhbmFrakBjaHJvbWl1bS5vcmc+CisK
KyAgICAgICAgW2Nocm9taXVtXSBSZW1vdmUgU2tDYW52YXM6OkxheWVySXRlciB1c2UgZnJvbSBP
cGFxdWVSZWdpb25Ta2lhCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVn
LmNnaT9pZD04MjU2NAorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisg
ICAgICAgICogdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwOgorICAgICAgICAoV2Vi
Q29yZSk6CisgICAgICAgIChXZWJDb3JlOjpURVNUKToKKwogMjAxMi0wMy0zMCAgRGlyayBQcmFu
a2UgIDxkcHJhbmtlQGNocm9taXVtLm9yZz4KIAogICAgICAgICBSb2xsIGNocm9taXVtIERFUFMg
ZnJvbSAxMjk1OTMgdG8gMTI5NTc0LgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZv
cm0vZ3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFR2F1c3NpYW5CbHVyU2tpYS5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lh
LmNwcAppbmRleCA0YjM2NzUxZmFmNDc5NGY4Y2EyM2FjYThiMDc1M2M1N2JjZjdlZGQyLi5iNjk0
YzliMWM1NWE4MzhjZTQzYWNiZTQ5ODVhNGRkODkzNzkwNjU1IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEvRkVHYXVzc2lhbkJsdXJTa2lh
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJzL3NraWEv
RkVHYXVzc2lhbkJsdXJTa2lhLmNwcApAQCAtNTEsMTIgKzUxLDEzIEBAIGJvb2wgRkVHYXVzc2lh
bkJsdXI6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFpbnQgcGFpbnQ7CiAgICAgR3Jh
cGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2UtPmNvbnRleHQoKTsKLSAgICBT
a0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1Db250ZXh0KCktPmNhbnZhcygp
OworICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29udGV4dCA9IGRzdENvbnRleHQt
PnBsYXRmb3JtQ29udGV4dCgpOwogICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBTa0JsdXJJ
bWFnZUZpbHRlcihzdGRYLCBzdGRZKSktPnVucmVmKCk7Ci0gICAgY2FudmFzLT5zYXZlTGF5ZXIo
MCwgJnBhaW50KTsKKworICAgIHBsYXRmb3JtQ29udGV4dC0+c2F2ZUxheWVyKDAsICZwYWludCk7
CiAgICAgcGFpbnQuc2V0Q29sb3IoMHhGRkZGRkZGRik7CiAgICAgZHN0Q29udGV4dC0+ZHJhd0lt
YWdlKGltYWdlLmdldCgpLCBDb2xvclNwYWNlRGV2aWNlUkdCLCBkcmF3aW5nUmVnaW9uLmxvY2F0
aW9uKCksIENvbXBvc2l0ZUNvcHkpOwotICAgIGNhbnZhcy0+cmVzdG9yZSgpOworICAgIHBsYXRm
b3JtQ29udGV4dC0+cmVzdG9yZUxheWVyKCk7CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRlcnMvc2tpYS9GRU1v
cnBob2xvZ3lTa2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL2ZpbHRl
cnMvc2tpYS9GRU1vcnBob2xvZ3lTa2lhLmNwcAppbmRleCAwNjdhNjUzYTJhNWJhZTM1Y2MzZWRi
Njc5ZDkyN2IzMTg4NDNlOGRhLi5lNzI5MGJlYzdlMmRlNGE4MjkzY2ZhNWFlMTNlOWIyOGZmMzJk
YjA1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9maWx0ZXJz
L3NraWEvRkVNb3JwaG9sb2d5U2tpYS5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0v
Z3JhcGhpY3MvZmlsdGVycy9za2lhL0ZFTW9ycGhvbG9neVNraWEuY3BwCkBAIC01MCwxNSArNTAs
MTUgQEAgYm9vbCBGRU1vcnBob2xvZ3k6OnBsYXRmb3JtQXBwbHlTa2lhKCkKIAogICAgIFNrUGFp
bnQgcGFpbnQ7CiAgICAgR3JhcGhpY3NDb250ZXh0KiBkc3RDb250ZXh0ID0gcmVzdWx0SW1hZ2Ut
PmNvbnRleHQoKTsKLSAgICBTa0NhbnZhcyogY2FudmFzID0gZHN0Q29udGV4dC0+cGxhdGZvcm1D
b250ZXh0KCktPmNhbnZhcygpOworICAgIFBsYXRmb3JtQ29udGV4dFNraWEqIHBsYXRmb3JtQ29u
dGV4dCA9IGRzdENvbnRleHQtPnBsYXRmb3JtQ29udGV4dCgpOwogICAgIGlmIChtX3R5cGUgPT0g
RkVNT1JQSE9MT0dZX09QRVJBVE9SX0RJTEFURSkKICAgICAgICAgcGFpbnQuc2V0SW1hZ2VGaWx0
ZXIobmV3IFNrRGlsYXRlSW1hZ2VGaWx0ZXIocmFkaXVzWCwgcmFkaXVzWSkpLT51bnJlZigpOwog
ICAgIGVsc2UgaWYgKG1fdHlwZSA9PSBGRU1PUlBIT0xPR1lfT1BFUkFUT1JfRVJPREUpCiAgICAg
ICAgIHBhaW50LnNldEltYWdlRmlsdGVyKG5ldyBTa0Vyb2RlSW1hZ2VGaWx0ZXIocmFkaXVzWCwg
cmFkaXVzWSkpLT51bnJlZigpOwogCi0gICAgY2FudmFzLT5zYXZlTGF5ZXIoMCwgJnBhaW50KTsK
KyAgICBwbGF0Zm9ybUNvbnRleHQtPnNhdmVMYXllcigwLCAmcGFpbnQpOwogICAgIGRzdENvbnRl
eHQtPmRyYXdJbWFnZShpbWFnZS5nZXQoKSwgQ29sb3JTcGFjZURldmljZVJHQiwgZHJhd2luZ1Jl
Z2lvbi5sb2NhdGlvbigpLCBDb21wb3NpdGVDb3B5KTsKLSAgICBjYW52YXMtPnJlc3RvcmUoKTsK
KyAgICBwbGF0Zm9ybUNvbnRleHQtPnJlc3RvcmVMYXllcigpOwogICAgIHJldHVybiB0cnVlOwog
fQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dFNraWEuY3BwIGIvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9HcmFwaGljc0NvbnRleHRTa2lhLmNwcAppbmRleCA0Mzg5YjA0N2IwMGIyYzBhZDBhMjNh
NzMzYTNhMGY5OTU4MWRlZmUzLi5kNTRjOTg2NDc0NWUyZWEyNDAzMDAwOTQ1MzVlMjIyYzU5N2Nl
Yzc2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL0dy
YXBoaWNzQ29udGV4dFNraWEuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBo
aWNzL3NraWEvR3JhcGhpY3NDb250ZXh0U2tpYS5jcHAKQEAgLTE2NiwyMyArMTY2LDIwIEBAIHZv
aWQgR3JhcGhpY3NDb250ZXh0OjpiZWdpblBsYXRmb3JtVHJhbnNwYXJlbmN5TGF5ZXIoZmxvYXQg
b3BhY2l0eSkKICAgICAvLyAodGhlIHN1cmZhY2Ugb2YgdGhlIHBhZ2UpIGJ1dCBsYXllcnMgb24g
dG9wIG1heSBoYXZlIHRyYW5zcGFyZW50IHBhcnRzLgogICAgIC8vIFdpdGhvdXQgZXhwbGljaXRs
eSBzZXR0aW5nIHRoZSBhbHBoYSBmbGFnLCB0aGUgbGF5ZXIgd2lsbCBpbmhlcml0IHRoZQogICAg
IC8vIG9wYXF1ZSBzZXR0aW5nIG9mIHRoZSBiYXNlIGFuZCBzb21lIHRoaW5ncyB3b24ndCB3b3Jr
IHByb3Blcmx5LgorICAgIFNrQ2FudmFzOjpTYXZlRmxhZ3Mgc2F2ZUZsYWdzID0gc3RhdGljX2Nh
c3Q8U2tDYW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtIYXNBbHBoYUxheWVyX1NhdmVGbGFn
IHwgU2tDYW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZyk7CiAKICAgICBTa1BhaW50IGxh
eWVyUGFpbnQ7CiAgICAgbGF5ZXJQYWludC5zZXRBbHBoYShzdGF0aWNfY2FzdDx1bnNpZ25lZCBj
aGFyPihvcGFjaXR5ICogMjU1KSk7CiAgICAgbGF5ZXJQYWludC5zZXRYZmVybW9kZU1vZGUocGxh
dGZvcm1Db250ZXh0KCktPmdldFhmZXJtb2RlTW9kZSgpKTsKIAotICAgIHBsYXRmb3JtQ29udGV4
dCgpLT5jYW52YXMoKS0+c2F2ZUxheWVyKAotICAgICAgICAwLAotICAgICAgICAmbGF5ZXJQYWlu
dCwKLSAgICAgICAgc3RhdGljX2Nhc3Q8U2tDYW52YXM6OlNhdmVGbGFncz4oU2tDYW52YXM6OmtI
YXNBbHBoYUxheWVyX1NhdmVGbGFnIHwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgU2tDYW52YXM6OmtGdWxsQ29sb3JMYXllcl9TYXZlRmxhZykpOworICAgIHBsYXRm
b3JtQ29udGV4dCgpLT5zYXZlTGF5ZXIoMCwgJmxheWVyUGFpbnQsIHNhdmVGbGFncyk7CiB9CiAK
IHZvaWQgR3JhcGhpY3NDb250ZXh0OjplbmRQbGF0Zm9ybVRyYW5zcGFyZW5jeUxheWVyKCkKIHsK
ICAgICBpZiAocGFpbnRpbmdEaXNhYmxlZCgpKQogICAgICAgICByZXR1cm47Ci0gICAgcGxhdGZv
cm1Db250ZXh0KCktPmNhbnZhcygpLT5yZXN0b3JlKCk7CisgICAgcGxhdGZvcm1Db250ZXh0KCkt
PnJlc3RvcmVMYXllcigpOwogfQogCiBib29sIEdyYXBoaWNzQ29udGV4dDo6c3VwcG9ydHNUcmFu
c3BhcmVuY3lMYXllcnMoKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3Jh
cGhpY3Mvc2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcCBiL1NvdXJjZS9XZWJDb3JlL3BsYXRmb3Jt
L2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5jcHAKaW5kZXggNWE0ZjE1MzRjMDlmZjgy
Y2M1MzZkNGZiYmJlMzY4YmY2ZjRjYmJhNS4uYzdlODc0NDlhOTk5MjEyNGI2Zjg3NDYzZWY5ZDE5
YWIwZmQ4MzA3NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mv
c2tpYS9PcGFxdWVSZWdpb25Ta2lhLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9n
cmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuY3BwCkBAIC0xNDcsMjkgKzE0Nyw0NiBAQCBz
dGF0aWMgaW5saW5lIGJvb2wgcGFpbnRJc09wYXF1ZShjb25zdCBTa1BhaW50JiBwYWludCwgY29u
c3QgU2tCaXRtYXAqIGJpdG1hcCA9CiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29u
c3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNvbnN0IFNrUmVjdCYgZmlsbFJlY3QsIGNv
bnN0IFNrUGFpbnQmIHBhaW50LCBjb25zdCBTa0JpdG1hcCogYml0bWFwKQordm9pZCBPcGFxdWVS
ZWdpb25Ta2lhOjpwdXNoQ2FudmFzTGF5ZXIoY29uc3QgU2tQYWludCogcGFpbnQpCit7CisgICAg
Q2FudmFzTGF5ZXJTdGF0ZSBzdGF0ZTsKKyAgICBpZiAocGFpbnQpCisgICAgICAgIHN0YXRlLnBh
aW50ID0gKnBhaW50OworICAgIG1fY2FudmFzTGF5ZXJTdGFjay5hcHBlbmQoc3RhdGUpOworfQor
Cit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnBvcENhbnZhc0xheWVyKCkKK3sKKyAgICBtX2NhbnZh
c0xheWVyU3RhY2sucmVtb3ZlTGFzdCgpOworfQorCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OnNl
dEltYWdlTWFzayhjb25zdCBTa1JlY3QmIGltYWdlT3BhcXVlUmVjdCkKK3sKKyAgICBBU1NFUlQo
IW1fY2FudmFzTGF5ZXJTdGFjay5pc0VtcHR5KCkpOworICAgIG1fY2FudmFzTGF5ZXJTdGFjay5s
YXN0KCkuaGFzSW1hZ2VNYXNrID0gdHJ1ZTsKKyAgICBtX2NhbnZhc0xheWVyU3RhY2subGFzdCgp
LmltYWdlT3BhcXVlUmVjdCA9IGltYWdlT3BhcXVlUmVjdDsKK30KKwordm9pZCBPcGFxdWVSZWdp
b25Ta2lhOjpkaWREcmF3UmVjdChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBj
b25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tSZWN0JiBmaWxsUmVjdCwg
Y29uc3QgU2tQYWludCYgcGFpbnQsIGNvbnN0IFNrQml0bWFwKiBzb3VyY2VCaXRtYXApCiB7CiAg
ICAgLy8gQW55IHN0cm9raW5nIG1heSBwdXQgYWxwaGEgaW4gcGl4ZWxzIGV2ZW4gaWYgdGhlIGZp
bGxpbmcgcGFydCBkb2VzIG5vdC4KICAgICBpZiAocGFpbnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50
OjprRmlsbF9TdHlsZSkgewotICAgICAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFp
bnQsIGJpdG1hcCk7CiAgICAgICAgIGJvb2wgZmlsbHNCb3VuZHMgPSBmYWxzZTsKIAogICAgICAg
ICBpZiAoIXBhaW50LmNhbkNvbXB1dGVGYXN0Qm91bmRzKCkpCi0gICAgICAgICAgICBkaWREcmF3
VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOworICAgICAgICAgICAgZGlkRHJhd1VuYm91bmRlZChw
YWludCk7CiAgICAgICAgIGVsc2UgewogICAgICAgICAgICAgU2tSZWN0IHN0cm9rZVJlY3Q7CiAg
ICAgICAgICAgICBzdHJva2VSZWN0ID0gcGFpbnQuY29tcHV0ZUZhc3RCb3VuZHMoZmlsbFJlY3Qs
ICZzdHJva2VSZWN0KTsKLSAgICAgICAgICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCBz
dHJva2VSZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAgICAgICAgICBkaWRE
cmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgc3Ryb2tlUmVjdCwgcGFpbnQsIHNvdXJjZUJpdG1hcCwg
ZmlsbHNCb3VuZHMsIEZpbGxPclN0cm9rZSk7CiAgICAgICAgIH0KICAgICB9CiAKLSAgICBib29s
IGNoZWNrRmlsbE9ubHkgPSB0cnVlOwotICAgIGJvb2wgb3BhcXVlID0gcGFpbnRJc09wYXF1ZShw
YWludCwgYml0bWFwLCBjaGVja0ZpbGxPbmx5KTsKICAgICBib29sIGZpbGxzQm91bmRzID0gcGFp
bnQuZ2V0U3R5bGUoKSAhPSBTa1BhaW50OjprU3Ryb2tlX1N0eWxlOwotICAgIGRpZERyYXcoY29u
dGV4dCwgdHJhbnNmb3JtLCBmaWxsUmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOwor
ICAgIGRpZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCBmaWxsUmVjdCwgcGFpbnQsIHNvdXJjZUJp
dG1hcCwgZmlsbHNCb3VuZHMsIEZpbGxPbmx5KTsKIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lh
OjpkaWREcmF3UGF0aChQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVU
cmFuc2Zvcm0mIHRyYW5zZm9ybSwgY29uc3QgU2tQYXRoJiBwYXRoLCBjb25zdCBTa1BhaW50JiBw
YWludCkKK3ZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJhd1BhdGgoY29uc3QgUGxhdGZvcm1D
b250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiB0cmFuc2Zvcm0sIGNv
bnN0IFNrUGF0aCYgcGF0aCwgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7CiAgICAgU2tSZWN0IHJl
Y3Q7CiAgICAgaWYgKHBhdGguaXNSZWN0KCZyZWN0KSkgewpAQCAtMTc3LDE4ICsxOTQsMTcgQEAg
dm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UGF0aChQbGF0Zm9ybUNvbnRleHRTa2lhKiBj
b250ZXh0LCBjb25zdCBBZmZpbmVUcmEKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAotICAgIGJv
b2wgb3BhcXVlID0gcGFpbnRJc09wYXF1ZShwYWludCk7CiAgICAgYm9vbCBmaWxsc0JvdW5kcyA9
IGZhbHNlOwogCiAgICAgaWYgKCFwYWludC5jYW5Db21wdXRlRmFzdEJvdW5kcygpKQotICAgICAg
ICBkaWREcmF3VW5ib3VuZGVkKHBhaW50LCBvcGFxdWUpOworICAgICAgICBkaWREcmF3VW5ib3Vu
ZGVkKHBhaW50KTsKICAgICBlbHNlIHsKICAgICAgICAgcmVjdCA9IHBhaW50LmNvbXB1dGVGYXN0
Qm91bmRzKHBhdGguZ2V0Qm91bmRzKCksICZyZWN0KTsKLSAgICAgICAgZGlkRHJhdyhjb250ZXh0
LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCBvcGFxdWUsIGZpbGxzQm91bmRzKTsKKyAgICAgICAg
ZGlkRHJhdyhjb250ZXh0LCB0cmFuc2Zvcm0sIHJlY3QsIHBhaW50LCAwLCBmaWxsc0JvdW5kcywg
RmlsbE9yU3Ryb2tlKTsKICAgICB9CiB9CiAKLXZvaWQgT3BhcXVlUmVnaW9uU2tpYTo6ZGlkRHJh
d1BvaW50cyhQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zv
cm0mIHRyYW5zZm9ybSwgU2tDYW52YXM6OlBvaW50TW9kZSBtb2RlLCBpbnQgbnVtUG9pbnRzLCBj
b25zdCBTa1BvaW50IHBvaW50c1tdLCBjb25zdCBTa1BhaW50JiBwYWludCkKK3ZvaWQgT3BhcXVl
UmVnaW9uU2tpYTo6ZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiBjb250
ZXh0LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mIHRyYW5zZm9ybSwgU2tDYW52YXM6OlBvaW50TW9k
ZSBtb2RlLCBpbnQgbnVtUG9pbnRzLCBjb25zdCBTa1BvaW50IHBvaW50c1tdLCBjb25zdCBTa1Bh
aW50JiBwYWludCkKIHsKICAgICBpZiAoIW51bVBvaW50cykKICAgICAgICAgcmV0dXJuOwpAQCAt
MjA2LDM4ICsyMjIsMzMgQEAgdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpkaWREcmF3UG9pbnRzKFBs
YXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVQKICAgICAgICAgcmVjdC5m
Qm90dG9tID0gc3RkOjptYXgocmVjdC5mQm90dG9tLCBwb2ludHNbaV0uZlkgKyAxKTsKICAgICB9
CiAKLSAgICBib29sIG9wYXF1ZSA9IHBhaW50SXNPcGFxdWUocGFpbnQpOwogICAgIGJvb2wgZmls
bHNCb3VuZHMgPSBmYWxzZTsKIAogICAgIGlmICghcGFpbnQuY2FuQ29tcHV0ZUZhc3RCb3VuZHMo
KSkKLSAgICAgICAgZGlkRHJhd1VuYm91bmRlZChwYWludCwgb3BhcXVlKTsKKyAgICAgICAgZGlk
RHJhd1VuYm91bmRlZChwYWludCk7CiAgICAgZWxzZSB7CiAgICAgICAgIHJlY3QgPSBwYWludC5j
b21wdXRlRmFzdEJvdW5kcyhyZWN0LCAmcmVjdCk7Ci0gICAgICAgIGRpZERyYXcoY29udGV4dCwg
dHJhbnNmb3JtLCByZWN0LCBwYWludCwgb3BhcXVlLCBmaWxsc0JvdW5kcyk7CisgICAgICAgIGRp
ZERyYXcoY29udGV4dCwgdHJhbnNmb3JtLCByZWN0LCBwYWludCwgMCwgZmlsbHNCb3VuZHMsIEZp
bGxPclN0cm9rZSk7CiAgICAgfQogfQogCi12b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdC
b3VuZGVkKFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIGJvdW5kcywgY29uc3QgU2tQYWludCYgcGFpbnQp
Cit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdCb3VuZGVkKGNvbnN0IFBsYXRmb3JtQ29u
dGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25z
dCBTa1JlY3QmIGJvdW5kcywgY29uc3QgU2tQYWludCYgcGFpbnQpCiB7Ci0gICAgYm9vbCBvcGFx
dWUgPSBwYWludElzT3BhcXVlKHBhaW50KTsKICAgICBib29sIGZpbGxzQm91bmRzID0gZmFsc2U7
CiAKICAgICBpZiAoIXBhaW50LmNhbkNvbXB1dGVGYXN0Qm91bmRzKCkpCi0gICAgICAgIGRpZERy
YXdVbmJvdW5kZWQocGFpbnQsIG9wYXF1ZSk7CisgICAgICAgIGRpZERyYXdVbmJvdW5kZWQocGFp
bnQpOwogICAgIGVsc2UgewogICAgICAgICBTa1JlY3QgcmVjdDsKICAgICAgICAgcmVjdCA9IHBh
aW50LmNvbXB1dGVGYXN0Qm91bmRzKGJvdW5kcywgJnJlY3QpOwotICAgICAgICBkaWREcmF3KGNv
bnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIG9wYXF1ZSwgZmlsbHNCb3VuZHMpOworICAg
ICAgICBkaWREcmF3KGNvbnRleHQsIHRyYW5zZm9ybSwgcmVjdCwgcGFpbnQsIDAsIGZpbGxzQm91
bmRzLCBGaWxsT3JTdHJva2UpOwogICAgIH0KIH0KIAotdm9pZCBPcGFxdWVSZWdpb25Ta2lhOjpk
aWREcmF3KFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmluZVRyYW5zZm9y
bSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQmIHBhaW50LCBi
b29sIGRyYXdzT3BhcXVlLCBib29sIGZpbGxzQm91bmRzKQordm9pZCBPcGFxdWVSZWdpb25Ta2lh
OjpkaWREcmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqIGNvbnRleHQsIGNvbnN0IEFmZmlu
ZVRyYW5zZm9ybSYgdHJhbnNmb3JtLCBjb25zdCBTa1JlY3QmIHJlY3QsIGNvbnN0IFNrUGFpbnQm
IHBhaW50LCBjb25zdCBTa0JpdG1hcCogc291cmNlQml0bWFwLCBib29sIGZpbGxzQm91bmRzLCBE
cmF3VHlwZSBkcmF3VHlwZSkKIHsKICAgICBTa1JlY3QgdGFyZ2V0UmVjdCA9IHJlY3Q7CiAKLSAg
ICBib29sIHhmZXJzT3BhcXVlID0geGZlcm1vZGVJc09wYXF1ZShwYWludCwgZHJhd3NPcGFxdWUp
OwotICAgIGJvb2wgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUocGFp
bnQsIGRyYXdzT3BhcXVlKTsKLQogICAgIC8vIEFwcGx5IHRoZSB0cmFuc2Zvcm0gdG8gZGV2aWNl
IGNvb3JkaW5hdGUgc3BhY2UuCiAgICAgU2tNYXRyaXggY2FudmFzVHJhbnNmb3JtID0gY29udGV4
dC0+Y2FudmFzKCktPmdldFRvdGFsTWF0cml4KCk7CiAgICAgaWYgKCFjYW52YXNUcmFuc2Zvcm0u
bWFwUmVjdCgmdGFyZ2V0UmVjdCkpCkBAIC0yNDcsMzAgKzI1OCwzOSBAQCB2b2lkIE9wYXF1ZVJl
Z2lvblNraWE6OmRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZm
aW5lVHJhbnNmbwogICAgIGlmIChjb250ZXh0LT5jYW52YXMoKS0+Z2V0Q2xpcFR5cGUoKSAhPSBT
a0NhbnZhczo6a1JlY3RfQ2xpcFR5cGUpCiAgICAgICAgIGZpbGxzQm91bmRzID0gZmFsc2U7CiAg
ICAgZWxzZSB7Ci0gICAgICAgIFNrSVJlY3QgZGV2aWNlQ2xpcDsKLSAgICAgICAgY29udGV4dC0+
Y2FudmFzKCktPmdldENsaXBEZXZpY2VCb3VuZHMoJmRldmljZUNsaXApOworICAgICAgICBTa0lS
ZWN0IGRldmljZUNsaXAgPSBjb250ZXh0LT5jYW52YXMoKS0+Z2V0VG90YWxDbGlwKCkuZ2V0Qm91
bmRzKCk7CiAgICAgICAgIGlmICghdGFyZ2V0UmVjdC5pbnRlcnNlY3QoU2tJbnRUb1NjYWxhcihk
ZXZpY2VDbGlwLmZMZWZ0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZUb3ApLCBTa0ludFRv
U2NhbGFyKGRldmljZUNsaXAuZlJpZ2h0KSwgU2tJbnRUb1NjYWxhcihkZXZpY2VDbGlwLmZCb3R0
b20pKSkKICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICAvLyBBcHBseSBhbnkgbGF5
ZXJzIHRoYXQgd2UgYXJlIGRyYXdpbmcgaW50by4KLSAgICBmb3IgKFNrQ2FudmFzOjpMYXllckl0
ZXIgaXQoY29udGV4dC0+Y2FudmFzKCksIGZhbHNlKTsgIWl0LmRvbmUoKTsgaXQubmV4dCgpKSB7
Ci0gICAgICAgIC8vIEFwcGx5IHRoZSBsYXllcidzIGNsaXAgKHdoaWNoIGlzIGluIGRldmljZSBz
cGFjZSkKLSAgICAgICAgY29uc3QgU2tSZWdpb24mIGRldmljZUxheWVyQ2xpcCA9IGl0LmNsaXAo
KTsKLSAgICAgICAgaWYgKGRldmljZUxheWVyQ2xpcC5pc0VtcHR5KCkgfHwgIWRldmljZUxheWVy
Q2xpcC5pc1JlY3QoKSkKKyAgICBib29sIGNoZWNrRmlsbE9ubHkgPSBkcmF3VHlwZSA9PSBGaWxs
T25seTsKKyAgICBib29sIGxhc3RMYXllckRyYXdzT3BhcXVlID0gcGFpbnRJc09wYXF1ZShwYWlu
dCwgc291cmNlQml0bWFwLCBjaGVja0ZpbGxPbmx5KTsKKworICAgIGJvb2wgeGZlcnNPcGFxdWUg
PSB4ZmVybW9kZUlzT3BhcXVlKHBhaW50LCBsYXN0TGF5ZXJEcmF3c09wYXF1ZSk7CisKKyAgICAv
LyBBcHBseSB0aGUgU2tDYW52YXMgbGF5ZXJzIHdlIHdpbGwgYmUgZHJhd2luZyB0aHJvdWdoLgor
ICAgIGZvciAoc2l6ZV90IGkgPSBtX2NhbnZhc0xheWVyU3RhY2suc2l6ZSgpOyBpID4gMDsgLS1p
KSB7CisgICAgICAgIGNvbnN0IENhbnZhc0xheWVyU3RhdGUmIGNhbnZhc0xheWVyID0gbV9jYW52
YXNMYXllclN0YWNrW2ktMV07CisKKyAgICAgICAgLy8gRklYTUU6IFdlIGNvdWxkIHN0aWxsIHRy
YWNrIHRoZSBvcGFxdWUgcGFydCBidXQgaXQncyBhbHdheXMgZW1wdHkgcmlnaHQgbm93IGFueXdh
eXMuCisgICAgICAgIGlmIChjYW52YXNMYXllci5oYXNJbWFnZU1hc2sgJiYgIWNhbnZhc0xheWVy
LmltYWdlT3BhcXVlUmVjdC5jb250YWlucyh0YXJnZXRSZWN0KSkKICAgICAgICAgICAgIGZpbGxz
Qm91bmRzID0gZmFsc2U7Ci0gICAgICAgIGVsc2UgewotICAgICAgICAgICAgU2tJUmVjdCBjbGlw
Qm91bmRzID0gaXQuY2xpcCgpLmdldEJvdW5kcygpOwotICAgICAgICAgICAgaWYgKCF0YXJnZXRS
ZWN0LmludGVyc2VjdChTa0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZkxlZnQpLCBTa0ludFRvU2Nh
bGFyKGNsaXBCb3VuZHMuZlRvcCksIFNrSW50VG9TY2FsYXIoY2xpcEJvdW5kcy5mUmlnaHQpLCBT
a0ludFRvU2NhbGFyKGNsaXBCb3VuZHMuZkJvdHRvbSkpKQotICAgICAgICAgICAgICAgIHJldHVy
bjsKLSAgICAgICAgfQogCi0gICAgICAgIC8vIE1ha2Ugc3VyZSB0aGUgcGFpbnQgc3RheXMgb3Bh
cXVlIHRocm91Z2ggdGhlIGxheWVyLgotICAgICAgICBib29sIGRyYXdzT3BhcXVlID0gcGFpbnRJ
c09wYXF1ZShpdC5wYWludCgpKTsKLSAgICAgICAgeGZlcnNPcGFxdWUgPSB4ZmVyc09wYXF1ZSAm
JiB4ZmVybW9kZUlzT3BhcXVlKGl0LnBhaW50KCksIGRyYXdzT3BhcXVlKTsKLSAgICAgICAgcHJl
c2VydmVzT3BhcXVlID0gcHJlc2VydmVzT3BhcXVlICYmIHhmZXJtb2RlUHJlc2VydmVzT3BhcXVl
KGl0LnBhaW50KCksIGRyYXdzT3BhcXVlKTsKKyAgICAgICAgYm9vbCBjaGVja0ZpbGxPbmx5ID0g
ZHJhd1R5cGUgPT0gRmlsbE9ubHk7CisgICAgICAgIGxhc3RMYXllckRyYXdzT3BhcXVlID0gcGFp
bnRJc09wYXF1ZShjYW52YXNMYXllci5wYWludCwgMCwgY2hlY2tGaWxsT25seSk7CisgICAgICAg
IC8vIElmIGFueSBsYXllciBkb2Vzbid0IHBhaW50IG9wYXF1ZSwgdGhlbiB0aGUgcmVzdWx0IHdp
bGwgbm90IGJlIG9wYXF1ZS4KKyAgICAgICAgeGZlcnNPcGFxdWUgJj0geGZlcm1vZGVJc09wYXF1
ZShjYW52YXNMYXllci5wYWludCwgbGFzdExheWVyRHJhd3NPcGFxdWUpOwogICAgIH0KIAorICAg
IC8vIFByZXNlcnZpbmcgb3BhcXVlIG9ubHkgbWF0dGVycyBmb3IgdGhlIGJvdHRvbS1tb3N0IGxh
eWVyLiBJdHMgY29udGVudHMgYXJlIGVpdGhlciBvcGFxdWUgb3Igbm90LCBhbmQgaWYgbm90Cisg
ICAgLy8gdGhlbiB3ZSBjYXJlIGlmIGl0IHByZXNlcnZlcyB0aGUgb3BhcXVlbmVzcyBvZiB0aGUg
dGFyZ2V0IGRldmljZSB3aGVuIGl0IGlzIGRyYXduIGludG8gdGhlIGRldmljZS4KKyAgICBib29s
IHByZXNlcnZlc09wYXF1ZTsKKyAgICBpZiAobV9jYW52YXNMYXllclN0YWNrLmlzRW1wdHkoKSkK
KyAgICAgICAgcHJlc2VydmVzT3BhcXVlID0geGZlcm1vZGVQcmVzZXJ2ZXNPcGFxdWUocGFpbnQs
IGxhc3RMYXllckRyYXdzT3BhcXVlKTsKKyAgICBlbHNlCisgICAgICAgIHByZXNlcnZlc09wYXF1
ZSA9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKG1fY2FudmFzTGF5ZXJTdGFja1swXS5wYWludCwg
bGFzdExheWVyRHJhd3NPcGFxdWUpOworCisKICAgICAvLyBBcHBseSB0aGUgdHJhbnNmb3JtIHRv
IHRoZSB0cmFja2luZyBzcGFjZS4KICAgICBTa01hdHJpeCBjYW52YXNUb1RhcmdldFRyYW5zZm9y
bSA9IHRyYW5zZm9ybTsKICAgICBpZiAoIWNhbnZhc1RvVGFyZ2V0VHJhbnNmb3JtLm1hcFJlY3Qo
JnRhcmdldFJlY3QpKQpAQCAtMjgyLDkgKzMwMiwyMiBAQCB2b2lkIE9wYXF1ZVJlZ2lvblNraWE6
OmRpZERyYXcoUGxhdGZvcm1Db250ZXh0U2tpYSogY29udGV4dCwgY29uc3QgQWZmaW5lVHJhbnNm
bwogICAgICAgICBtYXJrUmVjdEFzTm9uT3BhcXVlKHRhcmdldFJlY3QpOwogfQogCi12b2lkIE9w
YXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQoY29uc3QgU2tQYWludCYgcGFpbnQsIGJv
b2wgZHJhd3NPcGFxdWUpCit2b2lkIE9wYXF1ZVJlZ2lvblNraWE6OmRpZERyYXdVbmJvdW5kZWQo
Y29uc3QgU2tQYWludCYgcGFpbnQpCiB7Ci0gICAgaWYgKCF4ZmVybW9kZVByZXNlcnZlc09wYXF1
ZShwYWludCwgZHJhd3NPcGFxdWUpKSB7CisgICAgLy8gUHJlc2VydmluZyBvcGFxdWUgb25seSBt
YXR0ZXJzIGZvciB0aGUgYm90dG9tLW1vc3QgbGF5ZXIuIEl0cyBjb250ZW50cyBhcmUgZWl0aGVy
IG9wYXF1ZSBvciBub3QsIGFuZCBpZiBub3QKKyAgICAvLyB0aGVuIHdlIGNhcmUgaWYgaXQgcHJl
c2VydmVzIHRoZSBvcGFxdWVuZXNzIG9mIHRoZSB0YXJnZXQgZGV2aWNlIHdoZW4gaXQgaXMgZHJh
d24gaW50byB0aGUgZGV2aWNlLgorICAgIGJvb2wgcHJlc2VydmVzT3BhcXVlOworCisgICAgYm9v
bCBjaGVja0ZpbGxPbmx5ID0gZmFsc2U7CisgICAgaWYgKG1fY2FudmFzTGF5ZXJTdGFjay5pc0Vt
cHR5KCkpIHsKKyAgICAgICAgYm9vbCBsYXN0TGF5ZXJEcmF3c09wYXF1ZSA9IHBhaW50SXNPcGFx
dWUocGFpbnQsIDAsIGNoZWNrRmlsbE9ubHkpOworICAgICAgICBwcmVzZXJ2ZXNPcGFxdWUgPSB4
ZmVybW9kZVByZXNlcnZlc09wYXF1ZShwYWludCwgbGFzdExheWVyRHJhd3NPcGFxdWUpOworICAg
IH0gZWxzZSB7CisgICAgICAgIGJvb2wgbGFzdExheWVyRHJhd3NPcGFxdWUgPSBwYWludElzT3Bh
cXVlKG1fY2FudmFzTGF5ZXJTdGFja1swXS5wYWludCwgMCwgY2hlY2tGaWxsT25seSk7CisgICAg
ICAgIHByZXNlcnZlc09wYXF1ZSA9IHhmZXJtb2RlUHJlc2VydmVzT3BhcXVlKG1fY2FudmFzTGF5
ZXJTdGFja1swXS5wYWludCwgbGFzdExheWVyRHJhd3NPcGFxdWUpOworICAgIH0KKworICAgIGlm
ICghcHJlc2VydmVzT3BhcXVlKSB7CiAgICAgICAgIC8vIFdlIGRvbid0IGtub3cgd2hhdCB3YXMg
ZHJhd24gb24gc28ganVzdCBkZXN0cm95IHRoZSBrbm93biBvcGFxdWUgYXJlYS4KICAgICAgICAg
bV9vcGFxdWVSZWN0ID0gU2tSZWN0OjpNYWtlRW1wdHkoKTsKICAgICB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL09wYXF1ZVJlZ2lvblNraWEuaCBi
L1NvdXJjZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5o
CmluZGV4IDQzMWM2ZWMxOWU1YTY5NGMxOTI5OWFhMGQ3YjdmYjQ3YTI5MGZkZDguLmU4OWQ1NTAw
ODM0NjAxYWY2MzRjM2VmNGRkNjVhY2FhYjk2YmNhN2UgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvT3BhcXVlUmVnaW9uU2tpYS5oCkBAIC01
MywyMCArNTMsNDEgQEAgcHVibGljOgogICAgIC8vIFRoZSByZXN1bHRpbmcgb3BhcXVlIHJlZ2lv
biBhcyBhIHNpbmdsZSByZWN0LgogICAgIEludFJlY3QgYXNSZWN0KCkgY29uc3Q7CiAKLSAgICAv
LyBGSVhNRTogbWFrZSBhbGwgdGhlIFBsYXRmb3JtQ29udGV4dFNraWEqIGludG8gYSBjb25zdCBw
b2ludGVyIHdoZW4gU2tpYSBmaXhlcyBMYXllckl0ZXIncyBTa0NhbnZhcyouCisgICAgdm9pZCBw
dXNoQ2FudmFzTGF5ZXIoY29uc3QgU2tQYWludCopOworICAgIHZvaWQgcG9wQ2FudmFzTGF5ZXIo
KTsKIAotICAgIHZvaWQgZGlkRHJhd1JlY3QoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFm
ZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNrUGFpbnQmLCBjb25zdCBTa0Jp
dG1hcCopOwotICAgIHZvaWQgZGlkRHJhd1BhdGgoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0
IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUGF0aCYsIGNvbnN0IFNrUGFpbnQmKTsKLSAgICB2
b2lkIGRpZERyYXdQb2ludHMoUGxhdGZvcm1Db250ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5z
Zm9ybSYsIFNrQ2FudmFzOjpQb2ludE1vZGUsIGludCBudW1Qb2ludHMsIGNvbnN0IFNrUG9pbnRb
XSwgY29uc3QgU2tQYWludCYpOwotICAgIHZvaWQgZGlkRHJhd0JvdW5kZWQoUGxhdGZvcm1Db250
ZXh0U2tpYSosIGNvbnN0IEFmZmluZVRyYW5zZm9ybSYsIGNvbnN0IFNrUmVjdCYsIGNvbnN0IFNr
UGFpbnQmKTsKKyAgICB2b2lkIHNldEltYWdlTWFzayhjb25zdCBTa1JlY3QmIGltYWdlT3BhcXVl
UmVjdCk7CisKKyAgICB2b2lkIGRpZERyYXdSZWN0KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEq
LCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBjb25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50Jiwg
Y29uc3QgU2tCaXRtYXAqIHNvdXJjZUJpdG1hcCk7CisgICAgdm9pZCBkaWREcmF3UGF0aChjb25z
dCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tQ
YXRoJiwgY29uc3QgU2tQYWludCYpOworICAgIHZvaWQgZGlkRHJhd1BvaW50cyhjb25zdCBQbGF0
Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5lVHJhbnNmb3JtJiwgU2tDYW52YXM6OlBvaW50
TW9kZSwgaW50IG51bVBvaW50cywgY29uc3QgU2tQb2ludFtdLCBjb25zdCBTa1BhaW50Jik7Cisg
ICAgdm9pZCBkaWREcmF3Qm91bmRlZChjb25zdCBQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3Qg
QWZmaW5lVHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYpOwogCiBwcml2
YXRlOgotICAgIHZvaWQgZGlkRHJhdyhQbGF0Zm9ybUNvbnRleHRTa2lhKiwgY29uc3QgQWZmaW5l
VHJhbnNmb3JtJiwgY29uc3QgU2tSZWN0JiwgY29uc3QgU2tQYWludCYsIGJvb2wgZHJhd3NPcGFx
dWUsIGJvb2wgZmlsbHNCb3VuZHMpOwotICAgIHZvaWQgZGlkRHJhd1VuYm91bmRlZChjb25zdCBT
a1BhaW50JiwgYm9vbCBkcmF3c09wYXF1ZSk7CisgICAgZW51bSBEcmF3VHlwZSB7CisgICAgICAg
IEZpbGxPbmx5LAorICAgICAgICBGaWxsT3JTdHJva2UKKyAgICB9OworCisgICAgdm9pZCBkaWRE
cmF3KGNvbnN0IFBsYXRmb3JtQ29udGV4dFNraWEqLCBjb25zdCBBZmZpbmVUcmFuc2Zvcm0mLCBj
b25zdCBTa1JlY3QmLCBjb25zdCBTa1BhaW50JiwgY29uc3QgU2tCaXRtYXAqIHNvdXJjZUJpdG1h
cCwgYm9vbCBmaWxsc0JvdW5kcywgRHJhd1R5cGUpOworICAgIHZvaWQgZGlkRHJhd1VuYm91bmRl
ZChjb25zdCBTa1BhaW50Jik7CiAgICAgdm9pZCBtYXJrUmVjdEFzT3BhcXVlKGNvbnN0IFNrUmVj
dCYpOwogICAgIHZvaWQgbWFya1JlY3RBc05vbk9wYXF1ZShjb25zdCBTa1JlY3QmKTsKIAogICAg
IFNrUmVjdCBtX29wYXF1ZVJlY3Q7CisKKyAgICBzdHJ1Y3QgQ2FudmFzTGF5ZXJTdGF0ZSB7Cisg
ICAgICAgIENhbnZhc0xheWVyU3RhdGUoKSA6IGhhc0ltYWdlTWFzayhmYWxzZSkgeyB9CisKKyAg
ICAgICAgU2tQYWludCBwYWludDsKKworICAgICAgICAvLyBBbiBpbWFnZSBtYXNrIGlzIGJlaW5n
IGFwcGxpZWQgdG8gdGhlIGxheWVyLgorICAgICAgICBib29sIGhhc0ltYWdlTWFzazsKKyAgICAg
ICAgLy8gVGhlIG9wYXF1ZSBhcmVhIGluIHRoZSBpbWFnZSBtYXNrLgorICAgICAgICBTa1JlY3Qg
aW1hZ2VPcGFxdWVSZWN0OworICAgIH07CisKKyAgICBWZWN0b3I8Q2FudmFzTGF5ZXJTdGF0ZSwg
Mz4gbV9jYW52YXNMYXllclN0YWNrOwogfTsKIAogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcCBiL1NvdXJj
ZS9XZWJDb3JlL3BsYXRmb3JtL2dyYXBoaWNzL3NraWEvUGxhdGZvcm1Db250ZXh0U2tpYS5jcHAK
aW5kZXggNTk2MGEwN2ZiNzc1NzU0YmFkNDUyMGRhYzljMmUxY2NmYjk1MDExNC4uMGNhNzA5Y2Q0
ZDgxMTAyMDg1OTVkMzdiMjE0NzIwZDExN2U0MjExMyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNvbnRleHRTa2lhLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4dFNraWEu
Y3BwCkBAIC0yMjYsMjggKzIyNiw2MiBAQCB2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnNhdmUo
KQogICAgIGNhbnZhcygpLT5zYXZlKCk7CiB9CiAKK3ZvaWQgUGxhdGZvcm1Db250ZXh0U2tpYTo6
c2F2ZUxheWVyKGNvbnN0IFNrUmVjdCogYm91bmRzLCBjb25zdCBTa1BhaW50KiBwYWludCkKK3sK
KyAgICBtX2NhbnZhcy0+c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQpOworICAgIGlmIChib3VuZHMp
CisgICAgICAgIG1fY2FudmFzLT5jbGlwUmVjdCgqYm91bmRzKTsKKyAgICBpZiAobV90cmFja09w
YXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVSZWdpb24ucHVzaENhbnZhc0xheWVyKHBhaW50
KTsKK30KKwordm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpzYXZlTGF5ZXIoY29uc3QgU2tSZWN0
KiBib3VuZHMsIGNvbnN0IFNrUGFpbnQqIHBhaW50LCBTa0NhbnZhczo6U2F2ZUZsYWdzIHNhdmVG
bGFncykKK3sKKyAgICBtX2NhbnZhcy0+c2F2ZUxheWVyKGJvdW5kcywgcGFpbnQsIHNhdmVGbGFn
cyk7CisgICAgaWYgKGJvdW5kcykKKyAgICAgICAgbV9jYW52YXMtPmNsaXBSZWN0KCpib3VuZHMp
OworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKQorICAgICAgICBtX29wYXF1ZVJlZ2lvbi5w
dXNoQ2FudmFzTGF5ZXIocGFpbnQpOworfQorCit2b2lkIFBsYXRmb3JtQ29udGV4dFNraWE6OnJl
c3RvcmVMYXllcigpCit7CisgICAgbV9jYW52YXMtPnJlc3RvcmUoKTsKKyAgICBpZiAobV90cmFj
a09wYXF1ZVJlZ2lvbikKKyAgICAgICAgbV9vcGFxdWVSZWdpb24ucG9wQ2FudmFzTGF5ZXIoKTsK
K30KKwogdm9pZCBQbGF0Zm9ybUNvbnRleHRTa2lhOjpiZWdpbkxheWVyQ2xpcHBlZFRvSW1hZ2Uo
Y29uc3QgRmxvYXRSZWN0JiByZWN0LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgY29uc3QgSW1hZ2VCdWZmZXIqIGltYWdlQnVmZmVyKQogeworICAg
IFNrUmVjdCBib3VuZHMgPSB7IFNrRmxvYXRUb1NjYWxhcihyZWN0LngoKSksIFNrRmxvYXRUb1Nj
YWxhcihyZWN0LnkoKSksCisgICAgICAgICAgICAgICAgICAgICAgU2tGbG9hdFRvU2NhbGFyKHJl
Y3QubWF4WCgpKSwgU2tGbG9hdFRvU2NhbGFyKHJlY3QubWF4WSgpKSB9OworCisgICAgaWYgKGlt
YWdlQnVmZmVyLT5pbnRlcm5hbFNpemUoKS5pc0VtcHR5KCkpIHsKKyAgICAgICAgbV9jYW52YXMt
PmNsaXBSZWN0KGJvdW5kcyk7CisgICAgICAgIHJldHVybjsKKyAgICB9CisKICAgICAvLyBTa2lh
IGRvZXNuJ3Qgc3VwcG9ydCBjbGlwcGluZyB0byBhbiBpbWFnZSwgc28gd2UgY3JlYXRlIGEgbGF5
ZXIuIFRoZSBuZXh0CiAgICAgLy8gdGltZSByZXN0b3JlIGlzIGludm9rZWQgdGhlIGxheWVyIGFu
ZCB8aW1hZ2VCdWZmZXJ8IGFyZSBjb21iaW5lZCB0bwogICAgIC8vIGNyZWF0ZSB0aGUgcmVzdWx0
aW5nIGltYWdlLgotICAgIFNrUmVjdCBib3VuZHMgPSB7IFNrRmxvYXRUb1NjYWxhcihyZWN0Lngo
KSksIFNrRmxvYXRUb1NjYWxhcihyZWN0LnkoKSksCi0gICAgICAgICAgICAgICAgICAgICAgU2tG
bG9hdFRvU2NhbGFyKHJlY3QubWF4WCgpKSwgU2tGbG9hdFRvU2NhbGFyKHJlY3QubWF4WSgpKSB9
OworCiAgICAgbV9zdGF0ZS0+bV9jbGlwID0gYm91bmRzOwogICAgIC8vIEdldCB0aGUgYWJzb2x1
dGUgY29vcmRpbmF0ZXMgb2YgdGhlIHN0b3JlZCBjbGlwcGluZyByZWN0YW5nbGUgdG8gbWFrZSBp
dAogICAgIC8vIGluZGVwZW5kZW50IG9mIGFueSB0cmFuc2Zvcm0gY2hhbmdlcy4KICAgICBjYW52
YXMoKS0+Z2V0VG90YWxNYXRyaXgoKS5tYXBSZWN0KCZtX3N0YXRlLT5tX2NsaXApOwogCi0gICAg
Y2FudmFzKCktPmNsaXBSZWN0KGJvdW5kcyk7CisgICAgU2tDYW52YXM6OlNhdmVGbGFncyBzYXZl
RmxhZ3MgPSBzdGF0aWNfY2FzdDxTa0NhbnZhczo6U2F2ZUZsYWdzPihTa0NhbnZhczo6a0hhc0Fs
cGhhTGF5ZXJfU2F2ZUZsYWcgfCBTa0NhbnZhczo6a0Z1bGxDb2xvckxheWVyX1NhdmVGbGFnKTsK
KyAgICBzYXZlTGF5ZXIoJmJvdW5kcywgMCwgc2F2ZUZsYWdzKTsKIAotICAgIGlmIChpbWFnZUJ1
ZmZlci0+aW50ZXJuYWxTaXplKCkuaXNFbXB0eSgpKQotICAgICAgICByZXR1cm47CisgICAgY29u
c3QgU2tCaXRtYXAqIGJpdG1hcCA9IGltYWdlQnVmZmVyLT5jb250ZXh0KCktPnBsYXRmb3JtQ29u
dGV4dCgpLT5iaXRtYXAoKTsKKworICAgIGlmIChtX3RyYWNrT3BhcXVlUmVnaW9uKSB7CisgICAg
ICAgIFNrUmVjdCBvcGFxdWVSZWN0ID0gYml0bWFwLT5pc09wYXF1ZSgpID8gbV9zdGF0ZS0+bV9j
bGlwIDogU2tSZWN0OjpNYWtlRW1wdHkoKTsKKyAgICAgICAgbV9vcGFxdWVSZWdpb24uc2V0SW1h
Z2VNYXNrKG9wYXF1ZVJlY3QpOworICAgIH0KIAotICAgIGNhbnZhcygpLT5zYXZlTGF5ZXJBbHBo
YSgmYm91bmRzLCAyNTUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0
PFNrQ2FudmFzOjpTYXZlRmxhZ3M+KFNrQ2FudmFzOjprSGFzQWxwaGFMYXllcl9TYXZlRmxhZyB8
IFNrQ2FudmFzOjprRnVsbENvbG9yTGF5ZXJfU2F2ZUZsYWcpKTsKICAgICAvLyBDb3B5IG9mZiB0
aGUgaW1hZ2UgYXMgfGltYWdlQnVmZmVyfCBtYXkgYmUgZGVsZXRlZCBiZWZvcmUgcmVzdG9yZSBp
cyBpbnZva2VkLgotICAgIGNvbnN0IFNrQml0bWFwKiBiaXRtYXAgPSBpbWFnZUJ1ZmZlci0+Y29u
dGV4dCgpLT5wbGF0Zm9ybUNvbnRleHQoKS0+Yml0bWFwKCk7CiAgICAgaWYgKCFiaXRtYXAtPnBp
eGVsUmVmKCkpIHsKICAgICAgICAgLy8gVGhlIGJpdG1hcCBvd25zIGl0J3MgcGl4ZWxzLiBUaGlz
IGhhcHBlbnMgd2hlbiB3ZSd2ZSBhbGxvY2F0ZWQgdGhlCiAgICAgICAgIC8vIHBpeGVscyBpbiBz
b21lIHdheSBhbmQgYXNzaWduZWQgdGhlbSBkaXJlY3RseSB0byB0aGUgYml0bWFwIChhcwpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvcGxhdGZvcm0vZ3JhcGhpY3Mvc2tpYS9QbGF0Zm9ybUNv
bnRleHRTa2lhLmggYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuaAppbmRleCAwMjhjNmU5ZjM3ZjU1NTYyMjg5Y2QxNDU1ZWFkMmZlNjI2
MTNiYjljLi5hZjdkNjlkYzUwY2NmY2YyNDE1NWY4ODJhNjFhM2RlOTU2NmZhN2Q0IDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRmb3JtQ29udGV4
dFNraWEuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9wbGF0Zm9ybS9ncmFwaGljcy9za2lhL1BsYXRm
b3JtQ29udGV4dFNraWEuaApAQCAtOTMsNiArOTMsMTAgQEAgcHVibGljOgogICAgIHZvaWQgc2F2
ZSgpOwogICAgIHZvaWQgcmVzdG9yZSgpOwogCisgICAgdm9pZCBzYXZlTGF5ZXIoY29uc3QgU2tS
ZWN0KiBib3VuZHMsIGNvbnN0IFNrUGFpbnQqKTsKKyAgICB2b2lkIHNhdmVMYXllcihjb25zdCBT
a1JlY3QqIGJvdW5kcywgY29uc3QgU2tQYWludCosIFNrQ2FudmFzOjpTYXZlRmxhZ3MpOworICAg
IHZvaWQgcmVzdG9yZUxheWVyKCk7CisKICAgICAvLyBCZWdpbnMgYSBsYXllciB0aGF0IGlzIGNs
aXBwZWQgdG8gdGhlIGltYWdlIHxpbWFnZUJ1ZmZlcnwgYXQgdGhlIGxvY2F0aW9uCiAgICAgLy8g
fHJlY3R8LiBUaGlzIGxheWVyIGlzIGltcGxpY2l0bHkgcmVzdG9yZWQgd2hlbiB0aGUgbmV4dCBy
ZXN0b3JlIGlzCiAgICAgLy8gaW52b2tlZC4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJLaXQvY2hy
b21pdW0vdGVzdHMvUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QuY3BwIGIvU291cmNlL1dlYktpdC9j
aHJvbWl1bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKaW5kZXggYjBkODZkZGY2
ZjcxMzhiNjEyMDg5NjQ3MDZmNDQ0NjQ1ZjA5ZWY3ZC4uMTc4YzY1NjkwMzAzOTYzZTFlODM3NDcw
ZGFiY2VlMTg5NTE4YzgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYktpdC9jaHJvbWl1bS90ZXN0
cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKKysrIGIvU291cmNlL1dlYktpdC9jaHJvbWl1
bS90ZXN0cy9QbGF0Zm9ybUNvbnRleHRTa2lhVGVzdC5jcHAKQEAgLTUzLDYgKzUzLDE3IEBAIG5h
bWVzcGFjZSB7CiAgICAgICAgIH0gXAogfQogCisjZGVmaW5lIEVYUEVDVF9QSVhFTFNfTUFUQ0hf
RVhBQ1QoYml0bWFwLCBvcGFxdWVSZWN0KSBcCit7IFwKKyAgICBTa0F1dG9Mb2NrUGl4ZWxzIGxv
Y2tlcihiaXRtYXApOyBcCisgICAgZm9yIChpbnQgeSA9IDA7IHkgPCBiaXRtYXAuaGVpZ2h0KCk7
ICsreSkgXAorICAgICAgICBmb3IgKGludCB4ID0gMDsgeCA8IGJpdG1hcC53aWR0aCgpOyArK3gp
IHsgICAgIFwKKyAgICAgICAgICAgIGludCBhbHBoYSA9ICpiaXRtYXAuZ2V0QWRkcjMyKHgsIHkp
ID4+IDI0OyBcCisgICAgICAgICAgICBib29sIG9wYXF1ZSA9IG9wYXF1ZVJlY3QuY29udGFpbnMo
eCwgeSk7IFwKKyAgICAgICAgICAgIEVYUEVDVF9FUShvcGFxdWUsIGFscGhhID09IDI1NSk7IFwK
KyAgICAgICAgfSBcCit9CisKIFRFU1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIHRyYWNrT3Bh
cXVlVGVzdCkKIHsKICAgICBTa0JpdG1hcCBiaXRtYXA7CkBAIC02ODEsNCArNjkyLDg2IEBAIFRF
U1QoUGxhdGZvcm1Db250ZXh0U2tpYVRlc3QsIGNvbnRleHRUcmFuc3BhcmVuY3lMYXllclRlc3Qp
CiAgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVn
aW9uKCkuYXNSZWN0KCkpOwogfQogCitURVNUKFBsYXRmb3JtQ29udGV4dFNraWFUZXN0LCBQcmVz
ZXJ2ZU9wYXF1ZU9ubHlNYXR0ZXJzRm9yRmlyc3RMYXllcikKK3sKKyAgICBTa0JpdG1hcCBiaXRt
YXA7CisgICAgYml0bWFwLnNldENvbmZpZyhTa0JpdG1hcDo6a0FSR0JfODg4OF9Db25maWcsIDQw
MCwgNDAwKTsKKyAgICBiaXRtYXAuYWxsb2NQaXhlbHMoKTsKKyAgICBiaXRtYXAuZXJhc2VDb2xv
cigwKTsKKyAgICBTa0NhbnZhcyBjYW52YXMoYml0bWFwKTsKKworICAgIFBsYXRmb3JtQ29udGV4
dFNraWEgcGxhdGZvcm1Db250ZXh0KCZjYW52YXMpOworICAgIHBsYXRmb3JtQ29udGV4dC5zZXRU
cmFja09wYXF1ZVJlZ2lvbih0cnVlKTsKKyAgICBHcmFwaGljc0NvbnRleHQgY29udGV4dCgmcGxh
dGZvcm1Db250ZXh0KTsKKworICAgIENvbG9yIG9wYXF1ZSgxLjBmLCAwLjBmLCAwLjBmLCAxLjBm
KTsKKyAgICBDb2xvciBhbHBoYSgwLjBmLCAwLjBmLCAwLjBmLCAwLjBmKTsKKworICAgIFBhdGgg
cGF0aDsKKyAgICBjb250ZXh0LnNldFNob3VsZEFudGlhbGlhcyhmYWxzZSk7CisgICAgY29udGV4
dC5zZXRNaXRlckxpbWl0KDEpOworICAgIGNvbnRleHQuc2V0U3Ryb2tlVGhpY2tuZXNzKDUpOwor
ICAgIGNvbnRleHQuc2V0TGluZUNhcChTcXVhcmVDYXApOworICAgIGNvbnRleHQuc2V0U3Ryb2tl
U3R5bGUoU29saWRTdHJva2UpOworCisgICAgLy8gTWFrZSBza2lhIHVuYWJsZSB0byBjb21wdXRl
IGZhc3QgYm91bmRzIGZvciBvdXIgcGF0aHMuCisgICAgVmVjdG9yPGZsb2F0PiBkYXNoQXJyYXk7
CisgICAgZGFzaEFycmF5LmFwcGVuZCgxKTsKKyAgICBkYXNoQXJyYXkuYXBwZW5kKDApOworICAg
IGNvbnRleHQuc2V0TGluZURhc2goZGFzaEFycmF5LCAwKTsKKworICAgIC8vIE1ha2UgdGhlIGRl
dmljZSBvcGFxdWUgaW4gMTAsMTAgNDB4NDAuCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJl
Y3QoMTAsIDEwLCA0MCwgNDApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0
ZVNvdXJjZU92ZXIpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJlY3QoMTAsIDEwLCA0MCwgNDAp
LCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9Q
SVhFTFNfTUFUQ0hfRVhBQ1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCku
YXNSZWN0KCkpOworCisgICAgLy8gQmVnaW4gYSBsYXllciB0aGF0IHByZXNlcnZlcyBvcGFxdWUu
CisgICAgY29udGV4dC5zZXRDb21wb3NpdGVPcGVyYXRpb24oQ29tcG9zaXRlU291cmNlT3Zlcik7
CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBCZWdp
biBhIGxheWVyIHRoYXQgZG9lcyBub3QgcHJlc2VydmUgb3BhcXVlLgorICAgIGNvbnRleHQuc2V0
Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU91dCk7CisgICAgY29udGV4dC5iZWdp
blRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBUaGlzIHNob3VsZCBub3QgZGVzdHJv
eSB0aGUgZGV2aWNlIG9wYXF1ZW5lc3MuCisgICAgY29udGV4dC5maWxsUmVjdChGbG9hdFJlY3Qo
MTAsIDEwLCA0MCwgNDApLCBvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IsIENvbXBvc2l0ZVNv
dXJjZU92ZXIpOworCisgICAgLy8gVGhpcyBzaG91bGQgbm90IGRlc3Ryb3kgdGhlIGRldmljZSBv
cGFxdWVuZXNzIGVpdGhlci4KKyAgICBjb250ZXh0LnNldEZpbGxDb2xvcihvcGFxdWUsIENvbG9y
U3BhY2VEZXZpY2VSR0IpOworICAgIHBhdGgubW92ZVRvKEZsb2F0UG9pbnQoMTAsIDEwKSk7Cisg
ICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCg0MCwgNDApKTsKKyAgICBjb250ZXh0LnN0cm9r
ZVBhdGgocGF0aCk7CisKKyAgICBjb250ZXh0LmVuZFRyYW5zcGFyZW5jeUxheWVyKCk7CisgICAg
Y29udGV4dC5lbmRUcmFuc3BhcmVuY3lMYXllcigpOworICAgIEVYUEVDVF9FUV9SRUNUKEludFJl
Y3QoMTAsIDEwLCA0MCwgNDApLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0
KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhBQ1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisgICAgLy8gTm93IGJlZ2luIGEgbGF5ZXIg
dGhhdCBkb2VzIG5vdCBwcmVzZXJ2ZSBvcGFxdWUgYW5kIGRyYXcgdGhyb3VnaCBpdCB0byB0aGUg
ZGV2aWNlLgorICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJj
ZU91dCk7CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAv
LyBUaGlzIHNob3VsZCBkZXN0cm95IHRoZSBkZXZpY2Ugb3BhcXVlbmVzcy4KKyAgICBjb250ZXh0
LmZpbGxSZWN0KEZsb2F0UmVjdCgxMCwgMTAsIDQwLCA0MCksIG9wYXF1ZSwgQ29sb3JTcGFjZURl
dmljZVJHQiwgQ29tcG9zaXRlU291cmNlT3Zlcik7CisKKyAgICBjb250ZXh0LmVuZFRyYW5zcGFy
ZW5jeUxheWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNvbnRl
eHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0hfRVhB
Q1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworCisg
ICAgLy8gTm93IHdlIGRyYXcgd2l0aCBhIHBhdGggZm9yIHdoaWNoIGl0IGNhbm5vdCBjb21wdXRl
IGZhc3QgYm91bmRzLiBUaGlzIHNob3VsZCBkZXN0cm95IHRoZSBlbnRpcmUgb3BhcXVlIHJlZ2lv
bi4KKworICAgIGNvbnRleHQuc2V0Q29tcG9zaXRlT3BlcmF0aW9uKENvbXBvc2l0ZVNvdXJjZU91
dCk7CisgICAgY29udGV4dC5iZWdpblRyYW5zcGFyZW5jeUxheWVyKDAuNSk7CisKKyAgICAvLyBU
aGlzIHNob3VsZCBudWtlIHRoZSBkZXZpY2Ugb3BhcXVlbmVzcy4KKyAgICBjb250ZXh0LnNldEZp
bGxDb2xvcihvcGFxdWUsIENvbG9yU3BhY2VEZXZpY2VSR0IpOworICAgIHBhdGgubW92ZVRvKEZs
b2F0UG9pbnQoMTAsIDEwKSk7CisgICAgcGF0aC5hZGRMaW5lVG8oRmxvYXRQb2ludCg0MCwgNDAp
KTsKKyAgICBjb250ZXh0LnN0cm9rZVBhdGgocGF0aCk7CisKKyAgICBjb250ZXh0LmVuZFRyYW5z
cGFyZW5jeUxheWVyKCk7CisgICAgRVhQRUNUX0VRX1JFQ1QoSW50UmVjdCgpLCBwbGF0Zm9ybUNv
bnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOworICAgIEVYUEVDVF9QSVhFTFNfTUFUQ0hf
RVhBQ1QoYml0bWFwLCBwbGF0Zm9ybUNvbnRleHQub3BhcXVlUmVnaW9uKCkuYXNSZWN0KCkpOwor
fQorCiB9IC8vIG5hbWVzcGFjZQo=
</data>

          </attachment>
      

    </bug>

</bugzilla>